add support for grpcio Python library


Bug: 395678202
Change-Id: Iba9a5ab98fadaa9bc6dbe7477959a48125275470
Test: m py-grpcio
diff --git a/src/python/grpcio/Android.bp b/src/python/grpcio/Android.bp
new file mode 100644
index 0000000..0a44405
--- /dev/null
+++ b/src/python/grpcio/Android.bp
@@ -0,0 +1,39 @@
+package {
+    default_applicable_licenses: ["external_grpc-grpc_license"],
+}
+
+python_library_host {
+    name: "py-grpcio",
+    srcs: [
+        "grpc/**/*.py",
+    ],
+    libs: [
+        "py-grpcio-cygrpc",
+    ],
+}
+
+python_library_host {
+    name: "py-grpcio-cygrpc",
+    shared_libs: [
+        "cygrpc",
+    ],
+    pkg_path: "grpc/_cython",
+    visibility: ["//visibility:private"],
+}
+
+cc_library_host_shared {
+    name: "cygrpc",
+    srcs: [
+        "grpc/_cython/cygrpc.cpp",
+    ],
+    compile_multilib: "64",
+    shared_libs: [
+        "libgrpc++",
+    ],
+    allow_undefined_symbols: true,
+    header_libs: [
+        "libgrpc++_internal_headers",
+        "py3-headers",
+    ],
+    visibility: ["//visibility:private"],
+}
diff --git a/src/python/grpcio/grpc/_cython/cygrpc.cpp b/src/python/grpcio/grpc/_cython/cygrpc.cpp
new file mode 100644
index 0000000..d088b14
--- /dev/null
+++ b/src/python/grpcio/grpc/_cython/cygrpc.cpp
@@ -0,0 +1,183730 @@
+/* Generated by Cython 3.0.11 */
+
+#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___cython__cygrpc
+#define __PYX_HAVE_API___cython__cygrpc
+/* Early includes */
+#include <string.h>
+#include <stdio.h>
+#include <stddef.h>
+#include "pythread.h"
+#include <string>
+#include "ios"
+#include "new"
+#include "stdexcept"
+#include "typeinfo"
+#include <time.h>
+#include <queue>
+#include <mutex>
+#include <condition_variable>
+#include "src/core/lib/channel/call_tracer.h"
+#include "src/core/lib/channel/context.h"
+#include "src/core/lib/surface/call.h"
+#include "grpc/support/alloc.h"
+#include "grpc/byte_buffer_reader.h"
+#include "grpc/impl/codegen/grpc_types.h"
+#include "grpc/grpc.h"
+#include "grpc/grpc_security.h"
+#include "grpc/compression.h"
+#include "grpc/impl/codegen/compression_types.h"
+#include "grpc/grpc_security_constants.h"
+#include "src/core/lib/config/config_vars.h"
+#include "grpc/impl/propagation_bits.h"
+#include "src/core/lib/iomgr/timer_manager.h"
+#include "src/core/lib/iomgr/iomgr_internal.h"
+#include "src/core/lib/iomgr/executor.h"
+#include <sys/types.h>
+#include <unistd.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/python/grpcio/grpc/_cython/cygrpc.pyx",
+  "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi",
+  "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi",
+  "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi",
+  "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi",
+  "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi",
+  "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi",
+  "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi",
+  "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi",
+  "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi",
+  "<stringsource>",
+  "contextvars.pxd",
+  "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi",
+  "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi",
+  "src/python/grpcio/grpc/_cython/_cygrpc/csds.pyx.pxi",
+  "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi",
+  "src/python/grpcio/grpc/_cython/_cygrpc/event.pyx.pxi",
+  "src/python/grpcio/grpc/_cython/_cygrpc/event.pxd.pxi",
+  "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi",
+  "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi",
+  "src/python/grpcio/grpc/_cython/_cygrpc/operation.pxd.pxi",
+  "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi",
+  "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi",
+  "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi",
+  "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi",
+  "src/python/grpcio/grpc/_cython/_cygrpc/time.pyx.pxi",
+  "src/python/grpcio/grpc/_cython/_cygrpc/_hooks.pyx.pxi",
+  "src/python/grpcio/grpc/_cython/_cygrpc/observability.pyx.pxi",
+  "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi",
+  "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi",
+  "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pyx.pxi",
+  "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pxd.pxi",
+  "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi",
+  "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi",
+  "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi",
+  "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pxd.pxi",
+  "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pxd.pxi",
+  "type.pxd",
+  "bool.pxd",
+  "complex.pxd",
+  "src/python/grpcio/grpc/_cython/_cygrpc/propagation_bits.pyx.pxi",
+};
+/* #### 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 ### */
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc.pxi":19
+ * cimport libc.time
+ * 
+ * ctypedef          ssize_t   intptr_t             # <<<<<<<<<<<<<<
+ * ctypedef          size_t    uintptr_t
+ * ctypedef   signed char      int8_t
+ */
+typedef Py_ssize_t __pyx_t_7_cython_6cygrpc_intptr_t;
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc.pxi":20
+ * 
+ * ctypedef          ssize_t   intptr_t
+ * ctypedef          size_t    uintptr_t             # <<<<<<<<<<<<<<
+ * ctypedef   signed char      int8_t
+ * ctypedef   signed short     int16_t
+ */
+typedef size_t __pyx_t_7_cython_6cygrpc_uintptr_t;
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc.pxi":21
+ * ctypedef          ssize_t   intptr_t
+ * ctypedef          size_t    uintptr_t
+ * ctypedef   signed char      int8_t             # <<<<<<<<<<<<<<
+ * ctypedef   signed short     int16_t
+ * ctypedef   signed int       int32_t
+ */
+typedef signed char __pyx_t_7_cython_6cygrpc_int8_t;
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc.pxi":22
+ * ctypedef          size_t    uintptr_t
+ * ctypedef   signed char      int8_t
+ * ctypedef   signed short     int16_t             # <<<<<<<<<<<<<<
+ * ctypedef   signed int       int32_t
+ * ctypedef   signed long long int64_t
+ */
+typedef short __pyx_t_7_cython_6cygrpc_int16_t;
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc.pxi":23
+ * ctypedef   signed char      int8_t
+ * ctypedef   signed short     int16_t
+ * ctypedef   signed int       int32_t             # <<<<<<<<<<<<<<
+ * ctypedef   signed long long int64_t
+ * ctypedef unsigned char      uint8_t
+ */
+typedef int __pyx_t_7_cython_6cygrpc_int32_t;
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc.pxi":24
+ * ctypedef   signed short     int16_t
+ * ctypedef   signed int       int32_t
+ * ctypedef   signed long long int64_t             # <<<<<<<<<<<<<<
+ * ctypedef unsigned char      uint8_t
+ * ctypedef unsigned short     uint16_t
+ */
+typedef PY_LONG_LONG __pyx_t_7_cython_6cygrpc_int64_t;
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc.pxi":25
+ * ctypedef   signed int       int32_t
+ * ctypedef   signed long long int64_t
+ * ctypedef unsigned char      uint8_t             # <<<<<<<<<<<<<<
+ * ctypedef unsigned short     uint16_t
+ * ctypedef unsigned int       uint32_t
+ */
+typedef unsigned char __pyx_t_7_cython_6cygrpc_uint8_t;
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc.pxi":26
+ * ctypedef   signed long long int64_t
+ * ctypedef unsigned char      uint8_t
+ * ctypedef unsigned short     uint16_t             # <<<<<<<<<<<<<<
+ * ctypedef unsigned int       uint32_t
+ * ctypedef unsigned long long uint64_t
+ */
+typedef unsigned short __pyx_t_7_cython_6cygrpc_uint16_t;
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc.pxi":27
+ * ctypedef unsigned char      uint8_t
+ * ctypedef unsigned short     uint16_t
+ * ctypedef unsigned int       uint32_t             # <<<<<<<<<<<<<<
+ * ctypedef unsigned long long uint64_t
+ * 
+ */
+typedef unsigned int __pyx_t_7_cython_6cygrpc_uint32_t;
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc.pxi":28
+ * ctypedef unsigned short     uint16_t
+ * ctypedef unsigned int       uint32_t
+ * ctypedef unsigned long long uint64_t             # <<<<<<<<<<<<<<
+ * 
+ * # C++ Utilities
+ */
+typedef unsigned PY_LONG_LONG __pyx_t_7_cython_6cygrpc_uint64_t;
+/* #### Code section: complex_type_declarations ### */
+/* #### Code section: type_declarations ### */
+
+/*--- Type declarations ---*/
+struct __pyx_obj_7_cython_6cygrpc__ChannelArg;
+struct __pyx_obj_7_cython_6cygrpc__ChannelArgs;
+struct __pyx_obj_7_cython_6cygrpc_Call;
+struct __pyx_obj_7_cython_6cygrpc__CallState;
+struct __pyx_obj_7_cython_6cygrpc__ChannelState;
+struct __pyx_obj_7_cython_6cygrpc_IntegratedCall;
+struct __pyx_obj_7_cython_6cygrpc_SegregatedCall;
+struct __pyx_obj_7_cython_6cygrpc_Channel;
+struct __pyx_obj_7_cython_6cygrpc_CallHandle;
+struct __pyx_obj_7_cython_6cygrpc_CallCredentials;
+struct __pyx_obj_7_cython_6cygrpc_MetadataPluginCallCredentials;
+struct __pyx_obj_7_cython_6cygrpc_CompositeCallCredentials;
+struct __pyx_obj_7_cython_6cygrpc_ChannelCredentials;
+struct __pyx_obj_7_cython_6cygrpc_SSLSessionCacheLRU;
+struct __pyx_obj_7_cython_6cygrpc_SSLChannelCredentials;
+struct __pyx_obj_7_cython_6cygrpc_CompositeChannelCredentials;
+struct __pyx_obj_7_cython_6cygrpc_XDSChannelCredentials;
+struct __pyx_obj_7_cython_6cygrpc_ServerCertificateConfig;
+struct __pyx_obj_7_cython_6cygrpc_ServerCredentials;
+struct __pyx_obj_7_cython_6cygrpc_LocalChannelCredentials;
+struct __pyx_obj_7_cython_6cygrpc_ALTSChannelCredentials;
+struct __pyx_obj_7_cython_6cygrpc__LatentEventArg;
+struct __pyx_obj_7_cython_6cygrpc_CompletionQueue;
+struct __pyx_obj_7_cython_6cygrpc_BaseEvent;
+struct __pyx_obj_7_cython_6cygrpc_ConnectivityEvent;
+struct __pyx_obj_7_cython_6cygrpc_RequestCallEvent;
+struct __pyx_obj_7_cython_6cygrpc_BatchOperationEvent;
+struct __pyx_obj_7_cython_6cygrpc_ServerShutdownEvent;
+struct __pyx_obj_7_cython_6cygrpc_Operation;
+struct __pyx_obj_7_cython_6cygrpc_SendInitialMetadataOperation;
+struct __pyx_obj_7_cython_6cygrpc_SendMessageOperation;
+struct __pyx_obj_7_cython_6cygrpc_SendCloseFromClientOperation;
+struct __pyx_obj_7_cython_6cygrpc_SendStatusFromServerOperation;
+struct __pyx_obj_7_cython_6cygrpc_ReceiveInitialMetadataOperation;
+struct __pyx_obj_7_cython_6cygrpc_ReceiveMessageOperation;
+struct __pyx_obj_7_cython_6cygrpc_ReceiveStatusOnClientOperation;
+struct __pyx_obj_7_cython_6cygrpc_ReceiveCloseOnServerOperation;
+struct __pyx_obj_7_cython_6cygrpc_CallDetails;
+struct __pyx_obj_7_cython_6cygrpc_SslPemKeyCertPair;
+struct __pyx_obj_7_cython_6cygrpc_CompressionOptions;
+struct __pyx_obj_7_cython_6cygrpc_Server;
+struct __pyx_obj_7_cython_6cygrpc__Tag;
+struct __pyx_obj_7_cython_6cygrpc__ConnectivityTag;
+struct __pyx_obj_7_cython_6cygrpc__RequestCallTag;
+struct __pyx_obj_7_cython_6cygrpc__BatchOperationTag;
+struct __pyx_obj_7_cython_6cygrpc__ServerShutdownTag;
+struct __pyx_obj_7_cython_6cygrpc_BaseCompletionQueue;
+struct __pyx_obj_7_cython_6cygrpc__BoundEventLoop;
+struct __pyx_obj_7_cython_6cygrpc_PollerCompletionQueue;
+struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus;
+struct __pyx_obj_7_cython_6cygrpc__AioState;
+struct __pyx_obj_7_cython_6cygrpc_CallbackFailureHandler;
+struct __pyx_obj_7_cython_6cygrpc_CallbackWrapper;
+struct __pyx_obj_7_cython_6cygrpc_GrpcCallWrapper;
+struct __pyx_obj_7_cython_6cygrpc__AioCall;
+struct __pyx_obj_7_cython_6cygrpc_AioChannel;
+struct __pyx_obj_7_cython_6cygrpc__HandlerCallDetails;
+struct __pyx_obj_7_cython_6cygrpc_RPCState;
+struct __pyx_obj_7_cython_6cygrpc__ServicerContext;
+struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext;
+struct __pyx_obj_7_cython_6cygrpc__MessageReceiver;
+struct __pyx_obj_7_cython_6cygrpc__ConcurrentRpcLimiter;
+struct __pyx_obj_7_cython_6cygrpc_AioServer;
+struct __pyx_obj_7_cython_6cygrpc__GrpcArgWrapper;
+struct __pyx_obj_7_cython_6cygrpc_InsecureChannelCredentials;
+struct __pyx_obj_7_cython_6cygrpc_ComputeEngineChannelCredentials;
+struct __pyx_obj_7_cython_6cygrpc_CensusContext;
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call;
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_1_next_event;
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call;
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event;
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata;
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_7_cython_6cygrpc__metadata;
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_6_genexpr;
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context;
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context;
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_9___init__;
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator;
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator;
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch;
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_13__receive_message;
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_14__send_message;
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata;
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata;
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server;
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_18_status;
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata;
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary;
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received;
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message;
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message;
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close;
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream;
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary;
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream;
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state;
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_29_read;
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_30_write;
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata;
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_32_abort;
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status;
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor;
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler;
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response;
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses;
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc;
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc;
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver;
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_41___anext__;
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc;
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc;
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions;
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler;
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core;
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro;
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc;
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_49__request_call;
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop;
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_51_start;
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down;
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_53_shutdown;
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination;
+struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg;
+struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_;
+struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args;
+struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_;
+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_t_7_cython_6cygrpc_CallbackContext;
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pxd.pxi":15
+ * # limitations under the License.
+ * 
+ * cdef enum AioChannelStatus:             # <<<<<<<<<<<<<<
+ *     AIO_CHANNEL_STATUS_UNKNOWN
+ *     AIO_CHANNEL_STATUS_READY
+ */
+enum __pyx_t_7_cython_6cygrpc_AioChannelStatus {
+  __pyx_e_7_cython_6cygrpc_AIO_CHANNEL_STATUS_UNKNOWN,
+  __pyx_e_7_cython_6cygrpc_AIO_CHANNEL_STATUS_READY,
+  __pyx_e_7_cython_6cygrpc_AIO_CHANNEL_STATUS_CLOSING,
+  __pyx_e_7_cython_6cygrpc_AIO_CHANNEL_STATUS_DESTROYED
+};
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pxd.pxi":64
+ * 
+ * 
+ * cdef enum AioServerStatus:             # <<<<<<<<<<<<<<
+ *     AIO_SERVER_STATUS_UNKNOWN
+ *     AIO_SERVER_STATUS_READY
+ */
+enum __pyx_t_7_cython_6cygrpc_AioServerStatus {
+  __pyx_e_7_cython_6cygrpc_AIO_SERVER_STATUS_UNKNOWN,
+  __pyx_e_7_cython_6cygrpc_AIO_SERVER_STATUS_READY,
+  __pyx_e_7_cython_6cygrpc_AIO_SERVER_STATUS_RUNNING,
+  __pyx_e_7_cython_6cygrpc_AIO_SERVER_STATUS_STOPPED,
+  __pyx_e_7_cython_6cygrpc_AIO_SERVER_STATUS_STOPPING
+};
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pxd.pxi":16
+ * 
+ * 
+ * ctypedef queue[grpc_event] cpp_event_queue             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+typedef std::queue<grpc_event>  __pyx_t_7_cython_6cygrpc_cpp_event_queue;
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pxd.pxi":24
+ * 
+ * 
+ * cdef struct CallbackContext:             # <<<<<<<<<<<<<<
+ *     # C struct to store callback context in the form of pointers.
+ *     #
+ */
+struct __pyx_t_7_cython_6cygrpc_CallbackContext {
+  grpc_completion_queue_functor functor;
+  PyObject *waiter;
+  PyObject *loop;
+  PyObject *failure_handler;
+  PyObject *callback_wrapper;
+};
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pxd.pxi":22
+ * 
+ * 
+ * cdef class _ChannelArg:             # <<<<<<<<<<<<<<
+ * 
+ *   cdef grpc_arg c_argument
+ */
+struct __pyx_obj_7_cython_6cygrpc__ChannelArg {
+  PyObject_HEAD
+  struct __pyx_vtabstruct_7_cython_6cygrpc__ChannelArg *__pyx_vtab;
+  grpc_arg c_argument;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pxd.pxi":29
+ * 
+ * 
+ * cdef class _ChannelArgs:             # <<<<<<<<<<<<<<
+ * 
+ *   cdef readonly tuple _arguments
+ */
+struct __pyx_obj_7_cython_6cygrpc__ChannelArgs {
+  PyObject_HEAD
+  struct __pyx_vtabstruct_7_cython_6cygrpc__ChannelArgs *__pyx_vtab;
+  PyObject *_arguments;
+  PyObject *_channel_args;
+  PyObject *_references;
+  grpc_channel_args _c_arguments;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/call.pxd.pxi":16
+ * 
+ * 
+ * cdef class Call:             # <<<<<<<<<<<<<<
+ * 
+ *   cdef grpc_call *c_call
+ */
+struct __pyx_obj_7_cython_6cygrpc_Call {
+  PyObject_HEAD
+  grpc_call *c_call;
+  PyObject *references;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pxd.pxi":25
+ * 
+ * 
+ * cdef class _CallState:             # <<<<<<<<<<<<<<
+ * 
+ *   cdef grpc_call *c_call
+ */
+struct __pyx_obj_7_cython_6cygrpc__CallState {
+  PyObject_HEAD
+  struct __pyx_vtabstruct_7_cython_6cygrpc__CallState *__pyx_vtab;
+  grpc_call *c_call;
+  PyObject *due;
+  PyObject *call_tracer_capsule;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pxd.pxi":35
+ * 
+ * 
+ * cdef class _ChannelState:             # <<<<<<<<<<<<<<
+ * 
+ *   cdef bytes target
+ */
+struct __pyx_obj_7_cython_6cygrpc__ChannelState {
+  PyObject_HEAD
+  PyObject *target;
+  PyObject *condition;
+  grpc_channel *c_channel;
+  PyObject *open;
+  PyObject *closed_reason;
+  PyObject *integrated_call_states;
+  grpc_completion_queue *c_call_completion_queue;
+  PyObject *segregated_call_states;
+  PyObject *connectivity_due;
+  grpc_completion_queue *c_connectivity_completion_queue;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pxd.pxi":61
+ * 
+ * 
+ * cdef class IntegratedCall:             # <<<<<<<<<<<<<<
+ * 
+ *   cdef _ChannelState _channel_state
+ */
+struct __pyx_obj_7_cython_6cygrpc_IntegratedCall {
+  PyObject_HEAD
+  struct __pyx_obj_7_cython_6cygrpc__ChannelState *_channel_state;
+  struct __pyx_obj_7_cython_6cygrpc__CallState *_call_state;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pxd.pxi":67
+ * 
+ * 
+ * cdef class SegregatedCall:             # <<<<<<<<<<<<<<
+ * 
+ *   cdef _ChannelState _channel_state
+ */
+struct __pyx_obj_7_cython_6cygrpc_SegregatedCall {
+  PyObject_HEAD
+  struct __pyx_obj_7_cython_6cygrpc__ChannelState *_channel_state;
+  struct __pyx_obj_7_cython_6cygrpc__CallState *_call_state;
+  grpc_completion_queue *_c_completion_queue;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pxd.pxi":74
+ * 
+ * 
+ * cdef class Channel:             # <<<<<<<<<<<<<<
+ * 
+ *   cdef _ChannelState _state
+ */
+struct __pyx_obj_7_cython_6cygrpc_Channel {
+  PyObject_HEAD
+  struct __pyx_obj_7_cython_6cygrpc__ChannelState *_state;
+  PyObject *_registered_call_handles;
+  PyObject *_arguments;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pxd.pxi":83
+ * 
+ * 
+ * cdef class CallHandle:             # <<<<<<<<<<<<<<
+ * 
+ *   cdef void *c_call_handle
+ */
+struct __pyx_obj_7_cython_6cygrpc_CallHandle {
+  PyObject_HEAD
+  void *c_call_handle;
+  PyObject *method;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pxd.pxi":16
+ * 
+ * 
+ * cdef class CallCredentials:             # <<<<<<<<<<<<<<
+ * 
+ *   cdef grpc_call_credentials *c(self) except *
+ */
+struct __pyx_obj_7_cython_6cygrpc_CallCredentials {
+  PyObject_HEAD
+  struct __pyx_vtabstruct_7_cython_6cygrpc_CallCredentials *__pyx_vtab;
+  grpc_call_credentials *c_credentials;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pxd.pxi":34
+ * 
+ * 
+ * cdef class MetadataPluginCallCredentials(CallCredentials):             # <<<<<<<<<<<<<<
+ * 
+ *   cdef readonly object _metadata_plugin
+ */
+struct __pyx_obj_7_cython_6cygrpc_MetadataPluginCallCredentials {
+  struct __pyx_obj_7_cython_6cygrpc_CallCredentials __pyx_base;
+  PyObject *_metadata_plugin;
+  PyObject *_name;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pxd.pxi":45
+ * 
+ * 
+ * cdef class CompositeCallCredentials(CallCredentials):             # <<<<<<<<<<<<<<
+ * 
+ *   cdef readonly tuple _call_credentialses
+ */
+struct __pyx_obj_7_cython_6cygrpc_CompositeCallCredentials {
+  struct __pyx_obj_7_cython_6cygrpc_CallCredentials __pyx_base;
+  PyObject *_call_credentialses;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pxd.pxi":52
+ * 
+ * 
+ * cdef class ChannelCredentials:             # <<<<<<<<<<<<<<
+ * 
+ *   cdef grpc_channel_credentials *c(self) except *
+ */
+struct __pyx_obj_7_cython_6cygrpc_ChannelCredentials {
+  PyObject_HEAD
+  struct __pyx_vtabstruct_7_cython_6cygrpc_ChannelCredentials *__pyx_vtab;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pxd.pxi":57
+ * 
+ * 
+ * cdef class SSLSessionCacheLRU:             # <<<<<<<<<<<<<<
+ * 
+ *   cdef grpc_ssl_session_cache *_cache
+ */
+struct __pyx_obj_7_cython_6cygrpc_SSLSessionCacheLRU {
+  PyObject_HEAD
+  grpc_ssl_session_cache *_cache;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pxd.pxi":62
+ * 
+ * 
+ * cdef class SSLChannelCredentials(ChannelCredentials):             # <<<<<<<<<<<<<<
+ * 
+ *   cdef readonly object _pem_root_certificates
+ */
+struct __pyx_obj_7_cython_6cygrpc_SSLChannelCredentials {
+  struct __pyx_obj_7_cython_6cygrpc_ChannelCredentials __pyx_base;
+  PyObject *_pem_root_certificates;
+  PyObject *_private_key;
+  PyObject *_certificate_chain;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pxd.pxi":71
+ * 
+ * 
+ * cdef class CompositeChannelCredentials(ChannelCredentials):             # <<<<<<<<<<<<<<
+ * 
+ *   cdef readonly tuple _call_credentialses
+ */
+struct __pyx_obj_7_cython_6cygrpc_CompositeChannelCredentials {
+  struct __pyx_obj_7_cython_6cygrpc_ChannelCredentials __pyx_base;
+  PyObject *_call_credentialses;
+  struct __pyx_obj_7_cython_6cygrpc_ChannelCredentials *_channel_credentials;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pxd.pxi":79
+ * 
+ * 
+ * cdef class XDSChannelCredentials(ChannelCredentials):             # <<<<<<<<<<<<<<
+ * 
+ *   cdef readonly ChannelCredentials _fallback_credentials
+ */
+struct __pyx_obj_7_cython_6cygrpc_XDSChannelCredentials {
+  struct __pyx_obj_7_cython_6cygrpc_ChannelCredentials __pyx_base;
+  struct __pyx_obj_7_cython_6cygrpc_ChannelCredentials *_fallback_credentials;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pxd.pxi":86
+ * 
+ * 
+ * cdef class ServerCertificateConfig:             # <<<<<<<<<<<<<<
+ * 
+ *   cdef grpc_ssl_server_certificate_config *c_cert_config
+ */
+struct __pyx_obj_7_cython_6cygrpc_ServerCertificateConfig {
+  PyObject_HEAD
+  grpc_ssl_server_certificate_config *c_cert_config;
+  char const *c_pem_root_certs;
+  grpc_ssl_pem_key_cert_pair *c_ssl_pem_key_cert_pairs;
+  size_t c_ssl_pem_key_cert_pairs_count;
+  PyObject *references;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pxd.pxi":95
+ * 
+ * 
+ * cdef class ServerCredentials:             # <<<<<<<<<<<<<<
+ * 
+ *   cdef grpc_server_credentials *c_credentials
+ */
+struct __pyx_obj_7_cython_6cygrpc_ServerCredentials {
+  PyObject_HEAD
+  grpc_server_credentials *c_credentials;
+  grpc_ssl_pem_key_cert_pair *c_ssl_pem_key_cert_pairs;
+  size_t c_ssl_pem_key_cert_pairs_count;
+  PyObject *references;
+  PyObject *initial_cert_config;
+  PyObject *cert_config_fetcher;
+  int initial_cert_config_fetched;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pxd.pxi":109
+ * 
+ * 
+ * cdef class LocalChannelCredentials(ChannelCredentials):             # <<<<<<<<<<<<<<
+ * 
+ *   cdef grpc_local_connect_type _local_connect_type
+ */
+struct __pyx_obj_7_cython_6cygrpc_LocalChannelCredentials {
+  struct __pyx_obj_7_cython_6cygrpc_ChannelCredentials __pyx_base;
+  grpc_local_connect_type _local_connect_type;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pxd.pxi":114
+ * 
+ * 
+ * cdef class ALTSChannelCredentials(ChannelCredentials):             # <<<<<<<<<<<<<<
+ *   cdef grpc_alts_credentials_options *c_options
+ * 
+ */
+struct __pyx_obj_7_cython_6cygrpc_ALTSChannelCredentials {
+  struct __pyx_obj_7_cython_6cygrpc_ChannelCredentials __pyx_base;
+  grpc_alts_credentials_options *c_options;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pxd.pxi":22
+ * cdef _interpret_event(grpc_event c_event)
+ * 
+ * cdef class _LatentEventArg:             # <<<<<<<<<<<<<<
+ *   cdef grpc_completion_queue *c_completion_queue
+ *   cdef object deadline
+ */
+struct __pyx_obj_7_cython_6cygrpc__LatentEventArg {
+  PyObject_HEAD
+  grpc_completion_queue *c_completion_queue;
+  PyObject *deadline;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pxd.pxi":26
+ *   cdef object deadline
+ * 
+ * cdef class CompletionQueue:             # <<<<<<<<<<<<<<
+ * 
+ *   cdef grpc_completion_queue *c_completion_queue
+ */
+struct __pyx_obj_7_cython_6cygrpc_CompletionQueue {
+  PyObject_HEAD
+  struct __pyx_vtabstruct_7_cython_6cygrpc_CompletionQueue *__pyx_vtab;
+  grpc_completion_queue *c_completion_queue;
+  int is_shutting_down;
+  int is_shutdown;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/event.pxd.pxi":15
+ * # limitations under the License.
+ * 
+ * cdef class BaseEvent:             # <<<<<<<<<<<<<<
+ *   pass
+ * 
+ */
+struct __pyx_obj_7_cython_6cygrpc_BaseEvent {
+  PyObject_HEAD
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/event.pxd.pxi":18
+ *   pass
+ * 
+ * cdef class ConnectivityEvent(BaseEvent):             # <<<<<<<<<<<<<<
+ * 
+ *   cdef readonly grpc_completion_type completion_type
+ */
+struct __pyx_obj_7_cython_6cygrpc_ConnectivityEvent {
+  struct __pyx_obj_7_cython_6cygrpc_BaseEvent __pyx_base;
+  grpc_completion_type completion_type;
+  int success;
+  PyObject *tag;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/event.pxd.pxi":25
+ * 
+ * 
+ * cdef class RequestCallEvent(BaseEvent):             # <<<<<<<<<<<<<<
+ * 
+ *   cdef readonly grpc_completion_type completion_type
+ */
+struct __pyx_obj_7_cython_6cygrpc_RequestCallEvent {
+  struct __pyx_obj_7_cython_6cygrpc_BaseEvent __pyx_base;
+  grpc_completion_type completion_type;
+  int success;
+  PyObject *tag;
+  struct __pyx_obj_7_cython_6cygrpc_Call *call;
+  struct __pyx_obj_7_cython_6cygrpc_CallDetails *call_details;
+  PyObject *invocation_metadata;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/event.pxd.pxi":35
+ * 
+ * 
+ * cdef class BatchOperationEvent(BaseEvent):             # <<<<<<<<<<<<<<
+ * 
+ *   cdef readonly grpc_completion_type completion_type
+ */
+struct __pyx_obj_7_cython_6cygrpc_BatchOperationEvent {
+  struct __pyx_obj_7_cython_6cygrpc_BaseEvent __pyx_base;
+  grpc_completion_type completion_type;
+  int success;
+  PyObject *tag;
+  PyObject *batch_operations;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/event.pxd.pxi":43
+ * 
+ * 
+ * cdef class ServerShutdownEvent(BaseEvent):             # <<<<<<<<<<<<<<
+ * 
+ *   cdef readonly grpc_completion_type completion_type
+ */
+struct __pyx_obj_7_cython_6cygrpc_ServerShutdownEvent {
+  struct __pyx_obj_7_cython_6cygrpc_BaseEvent __pyx_base;
+  grpc_completion_type completion_type;
+  int success;
+  PyObject *tag;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pxd.pxi":16
+ * 
+ * 
+ * cdef class Operation:             # <<<<<<<<<<<<<<
+ * 
+ *   cdef void c(self) except *
+ */
+struct __pyx_obj_7_cython_6cygrpc_Operation {
+  PyObject_HEAD
+  struct __pyx_vtabstruct_7_cython_6cygrpc_Operation *__pyx_vtab;
+  grpc_op c_op;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pxd.pxi":25
+ * 
+ * 
+ * cdef class SendInitialMetadataOperation(Operation):             # <<<<<<<<<<<<<<
+ * 
+ *   cdef readonly object _initial_metadata;
+ */
+struct __pyx_obj_7_cython_6cygrpc_SendInitialMetadataOperation {
+  struct __pyx_obj_7_cython_6cygrpc_Operation __pyx_base;
+  PyObject *_initial_metadata;
+  int _flags;
+  grpc_metadata *_c_initial_metadata;
+  size_t _c_initial_metadata_count;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pxd.pxi":36
+ * 
+ * 
+ * cdef class SendMessageOperation(Operation):             # <<<<<<<<<<<<<<
+ * 
+ *   cdef readonly bytes _message
+ */
+struct __pyx_obj_7_cython_6cygrpc_SendMessageOperation {
+  struct __pyx_obj_7_cython_6cygrpc_Operation __pyx_base;
+  PyObject *_message;
+  int _flags;
+  grpc_byte_buffer *_c_message_byte_buffer;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pxd.pxi":46
+ * 
+ * 
+ * cdef class SendCloseFromClientOperation(Operation):             # <<<<<<<<<<<<<<
+ * 
+ *   cdef readonly int _flags
+ */
+struct __pyx_obj_7_cython_6cygrpc_SendCloseFromClientOperation {
+  struct __pyx_obj_7_cython_6cygrpc_Operation __pyx_base;
+  int _flags;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pxd.pxi":54
+ * 
+ * 
+ * cdef class SendStatusFromServerOperation(Operation):             # <<<<<<<<<<<<<<
+ * 
+ *   cdef readonly object _trailing_metadata
+ */
+struct __pyx_obj_7_cython_6cygrpc_SendStatusFromServerOperation {
+  struct __pyx_obj_7_cython_6cygrpc_Operation __pyx_base;
+  PyObject *_trailing_metadata;
+  PyObject *_code;
+  PyObject *_details;
+  int _flags;
+  grpc_metadata *_c_trailing_metadata;
+  size_t _c_trailing_metadata_count;
+  grpc_slice _c_details;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pxd.pxi":68
+ * 
+ * 
+ * cdef class ReceiveInitialMetadataOperation(Operation):             # <<<<<<<<<<<<<<
+ * 
+ *   cdef readonly int _flags
+ */
+struct __pyx_obj_7_cython_6cygrpc_ReceiveInitialMetadataOperation {
+  struct __pyx_obj_7_cython_6cygrpc_Operation __pyx_base;
+  int _flags;
+  PyObject *_initial_metadata;
+  grpc_metadata_array _c_initial_metadata;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pxd.pxi":78
+ * 
+ * 
+ * cdef class ReceiveMessageOperation(Operation):             # <<<<<<<<<<<<<<
+ * 
+ *   cdef readonly int _flags
+ */
+struct __pyx_obj_7_cython_6cygrpc_ReceiveMessageOperation {
+  struct __pyx_obj_7_cython_6cygrpc_Operation __pyx_base;
+  int _flags;
+  grpc_byte_buffer *_c_message_byte_buffer;
+  PyObject *_message;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pxd.pxi":88
+ * 
+ * 
+ * cdef class ReceiveStatusOnClientOperation(Operation):             # <<<<<<<<<<<<<<
+ * 
+ *   cdef readonly int _flags
+ */
+struct __pyx_obj_7_cython_6cygrpc_ReceiveStatusOnClientOperation {
+  struct __pyx_obj_7_cython_6cygrpc_Operation __pyx_base;
+  int _flags;
+  grpc_metadata_array _c_trailing_metadata;
+  grpc_status_code _c_code;
+  grpc_slice _c_details;
+  char const *_c_error_string;
+  PyObject *_trailing_metadata;
+  PyObject *_code;
+  PyObject *_details;
+  PyObject *_error_string;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pxd.pxi":104
+ * 
+ * 
+ * cdef class ReceiveCloseOnServerOperation(Operation):             # <<<<<<<<<<<<<<
+ * 
+ *   cdef readonly int _flags
+ */
+struct __pyx_obj_7_cython_6cygrpc_ReceiveCloseOnServerOperation {
+  struct __pyx_obj_7_cython_6cygrpc_Operation __pyx_base;
+  int _flags;
+  PyObject *_cancelled;
+  int _c_cancelled;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/records.pxd.pxi":21
+ * 
+ * 
+ * cdef class CallDetails:             # <<<<<<<<<<<<<<
+ * 
+ *   cdef grpc_call_details c_details
+ */
+struct __pyx_obj_7_cython_6cygrpc_CallDetails {
+  PyObject_HEAD
+  grpc_call_details c_details;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/records.pxd.pxi":26
+ * 
+ * 
+ * cdef class SslPemKeyCertPair:             # <<<<<<<<<<<<<<
+ * 
+ *   cdef grpc_ssl_pem_key_cert_pair c_pair
+ */
+struct __pyx_obj_7_cython_6cygrpc_SslPemKeyCertPair {
+  PyObject_HEAD
+  grpc_ssl_pem_key_cert_pair c_pair;
+  PyObject *private_key;
+  PyObject *certificate_chain;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/records.pxd.pxi":32
+ * 
+ * 
+ * cdef class CompressionOptions:             # <<<<<<<<<<<<<<
+ * 
+ *   cdef grpc_compression_options c_options
+ */
+struct __pyx_obj_7_cython_6cygrpc_CompressionOptions {
+  PyObject_HEAD
+  grpc_compression_options c_options;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/server.pxd.pxi":15
+ * # limitations under the License.
+ * 
+ * cdef class Server:             # <<<<<<<<<<<<<<
+ * 
+ *   cdef grpc_server *c_server
+ */
+struct __pyx_obj_7_cython_6cygrpc_Server {
+  PyObject_HEAD
+  struct __pyx_vtabstruct_7_cython_6cygrpc_Server *__pyx_vtab;
+  grpc_server *c_server;
+  int is_started;
+  int is_shutting_down;
+  int is_shutdown;
+  struct __pyx_obj_7_cython_6cygrpc_CompletionQueue *backup_shutdown_queue;
+  PyObject *references;
+  PyObject *registered_completion_queues;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pxd.pxi":16
+ * 
+ * 
+ * cdef class _Tag:             # <<<<<<<<<<<<<<
+ * 
+ *   cdef BaseEvent event(self, grpc_event c_event)
+ */
+struct __pyx_obj_7_cython_6cygrpc__Tag {
+  PyObject_HEAD
+  struct __pyx_vtabstruct_7_cython_6cygrpc__Tag *__pyx_vtab;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pxd.pxi":21
+ * 
+ * 
+ * cdef class _ConnectivityTag(_Tag):             # <<<<<<<<<<<<<<
+ * 
+ *   cdef readonly object _user_tag
+ */
+struct __pyx_obj_7_cython_6cygrpc__ConnectivityTag {
+  struct __pyx_obj_7_cython_6cygrpc__Tag __pyx_base;
+  PyObject *_user_tag;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pxd.pxi":28
+ * 
+ * 
+ * cdef class _RequestCallTag(_Tag):             # <<<<<<<<<<<<<<
+ * 
+ *   cdef readonly object _user_tag
+ */
+struct __pyx_obj_7_cython_6cygrpc__RequestCallTag {
+  struct __pyx_obj_7_cython_6cygrpc__Tag __pyx_base;
+  PyObject *_user_tag;
+  struct __pyx_obj_7_cython_6cygrpc_Call *call;
+  struct __pyx_obj_7_cython_6cygrpc_CallDetails *call_details;
+  grpc_metadata_array c_invocation_metadata;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pxd.pxi":39
+ * 
+ * 
+ * cdef class _BatchOperationTag(_Tag):             # <<<<<<<<<<<<<<
+ * 
+ *   cdef object _user_tag
+ */
+struct __pyx_obj_7_cython_6cygrpc__BatchOperationTag {
+  struct __pyx_obj_7_cython_6cygrpc__Tag __pyx_base;
+  PyObject *_user_tag;
+  PyObject *_operations;
+  PyObject *_retained_call;
+  grpc_op *c_ops;
+  size_t c_nops;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pxd.pxi":51
+ * 
+ * 
+ * cdef class _ServerShutdownTag(_Tag):             # <<<<<<<<<<<<<<
+ * 
+ *   cdef readonly object _user_tag
+ */
+struct __pyx_obj_7_cython_6cygrpc__ServerShutdownTag {
+  struct __pyx_obj_7_cython_6cygrpc__Tag __pyx_base;
+  PyObject *_user_tag;
+  struct __pyx_obj_7_cython_6cygrpc_Server *_shutting_down_server;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pxd.pxi":29
+ * 
+ * 
+ * cdef class BaseCompletionQueue:             # <<<<<<<<<<<<<<
+ *     cdef grpc_completion_queue *_cq
+ * 
+ */
+struct __pyx_obj_7_cython_6cygrpc_BaseCompletionQueue {
+  PyObject_HEAD
+  struct __pyx_vtabstruct_7_cython_6cygrpc_BaseCompletionQueue *__pyx_vtab;
+  grpc_completion_queue *_cq;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pxd.pxi":35
+ * 
+ * 
+ * cdef class _BoundEventLoop:             # <<<<<<<<<<<<<<
+ *     cdef readonly object loop
+ *     cdef readonly object read_socket  # socket.socket
+ */
+struct __pyx_obj_7_cython_6cygrpc__BoundEventLoop {
+  PyObject_HEAD
+  PyObject *loop;
+  PyObject *read_socket;
+  int _has_reader;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pxd.pxi":41
+ * 
+ * 
+ * cdef class PollerCompletionQueue(BaseCompletionQueue):             # <<<<<<<<<<<<<<
+ *     cdef bint _shutdown
+ *     cdef cpp_event_queue _queue
+ */
+struct __pyx_obj_7_cython_6cygrpc_PollerCompletionQueue {
+  struct __pyx_obj_7_cython_6cygrpc_BaseCompletionQueue __pyx_base;
+  int _shutdown;
+  __pyx_t_7_cython_6cygrpc_cpp_event_queue _queue;
+  std::mutex _queue_mutex;
+  PyObject *_poller_thread;
+  int _write_fd;
+  PyObject *_read_socket;
+  PyObject *_write_socket;
+  PyObject *_loops;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pxd.pxi":17
+ * 
+ * 
+ * cdef class AioRpcStatus(Exception):             # <<<<<<<<<<<<<<
+ *     cdef readonly:
+ *         grpc_status_code _code
+ */
+struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus {
+  PyBaseExceptionObject __pyx_base;
+  struct __pyx_vtabstruct_7_cython_6cygrpc_AioRpcStatus *__pyx_vtab;
+  grpc_status_code _code;
+  PyObject *_details;
+  PyObject *_trailing_metadata;
+  PyObject *_debug_error_string;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pxd.pxi":16
+ * # distutils: language=c++
+ * 
+ * cdef class _AioState:             # <<<<<<<<<<<<<<
+ *     cdef object lock  # threading.RLock
+ *     cdef int refcount
+ */
+struct __pyx_obj_7_cython_6cygrpc__AioState {
+  PyObject_HEAD
+  PyObject *lock;
+  int refcount;
+  PyObject *engine;
+  struct __pyx_obj_7_cython_6cygrpc_BaseCompletionQueue *cq;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pxd.pxi":16
+ * 
+ * 
+ * cdef class CallbackFailureHandler:             # <<<<<<<<<<<<<<
+ *     cdef str _core_function_name
+ *     cdef object _error_details
+ */
+struct __pyx_obj_7_cython_6cygrpc_CallbackFailureHandler {
+  PyObject_HEAD
+  struct __pyx_vtabstruct_7_cython_6cygrpc_CallbackFailureHandler *__pyx_vtab;
+  PyObject *_core_function_name;
+  PyObject *_error_details;
+  PyObject *_exception_type;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pxd.pxi":43
+ * 
+ * 
+ * cdef class CallbackWrapper:             # <<<<<<<<<<<<<<
+ *     cdef CallbackContext context
+ *     cdef object _reference_of_future
+ */
+struct __pyx_obj_7_cython_6cygrpc_CallbackWrapper {
+  PyObject_HEAD
+  struct __pyx_vtabstruct_7_cython_6cygrpc_CallbackWrapper *__pyx_vtab;
+  struct __pyx_t_7_cython_6cygrpc_CallbackContext context;
+  PyObject *_reference_of_future;
+  PyObject *_reference_of_failure_handler;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pxd.pxi":56
+ * 
+ * 
+ * cdef class GrpcCallWrapper:             # <<<<<<<<<<<<<<
+ *     cdef grpc_call* call
+ */
+struct __pyx_obj_7_cython_6cygrpc_GrpcCallWrapper {
+  PyObject_HEAD
+  grpc_call *call;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pxd.pxi":16
+ * 
+ * 
+ * cdef class _AioCall(GrpcCallWrapper):             # <<<<<<<<<<<<<<
+ *     cdef:
+ *         readonly AioChannel _channel
+ */
+struct __pyx_obj_7_cython_6cygrpc__AioCall {
+  struct __pyx_obj_7_cython_6cygrpc_GrpcCallWrapper __pyx_base;
+  struct __pyx_vtabstruct_7_cython_6cygrpc__AioCall *__pyx_vtab;
+  struct __pyx_obj_7_cython_6cygrpc_AioChannel *_channel;
+  PyObject *_references;
+  PyObject *_deadline;
+  PyObject *_done_callbacks;
+  PyObject *_loop;
+  int _is_locally_cancelled;
+  struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *_status;
+  PyObject *_initial_metadata;
+  PyObject *_waiters_status;
+  PyObject *_waiters_initial_metadata;
+  int _send_initial_metadata_flags;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pxd.pxi":21
+ *     AIO_CHANNEL_STATUS_DESTROYED
+ * 
+ * cdef class AioChannel:             # <<<<<<<<<<<<<<
+ *     cdef:
+ *         grpc_channel * channel
+ */
+struct __pyx_obj_7_cython_6cygrpc_AioChannel {
+  PyObject_HEAD
+  grpc_channel *channel;
+  PyObject *loop;
+  PyObject *_target;
+  enum __pyx_t_7_cython_6cygrpc_AioChannelStatus _status;
+  int _is_secure;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pxd.pxi":15
+ * # limitations under the License.
+ * 
+ * cdef class _HandlerCallDetails:             # <<<<<<<<<<<<<<
+ *     cdef readonly str method
+ *     cdef readonly tuple invocation_metadata
+ */
+struct __pyx_obj_7_cython_6cygrpc__HandlerCallDetails {
+  PyObject_HEAD
+  PyObject *method;
+  PyObject *invocation_metadata;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pxd.pxi":20
+ * 
+ * 
+ * cdef class RPCState(GrpcCallWrapper):             # <<<<<<<<<<<<<<
+ *     cdef grpc_call_details details
+ *     cdef grpc_metadata_array request_metadata
+ */
+struct __pyx_obj_7_cython_6cygrpc_RPCState {
+  struct __pyx_obj_7_cython_6cygrpc_GrpcCallWrapper __pyx_base;
+  struct __pyx_vtabstruct_7_cython_6cygrpc_RPCState *__pyx_vtab;
+  grpc_call_details details;
+  grpc_metadata_array request_metadata;
+  struct __pyx_obj_7_cython_6cygrpc_AioServer *server;
+  int client_closed;
+  PyObject *abort_exception;
+  int metadata_sent;
+  int status_sent;
+  grpc_status_code status_code;
+  PyObject *py_status_code;
+  PyObject *status_details;
+  PyObject *trailing_metadata;
+  PyObject *compression_algorithm;
+  int disable_next_compression;
+  PyObject *callbacks;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pxd.pxi":46
+ * 
+ * 
+ * cdef class _ServicerContext:             # <<<<<<<<<<<<<<
+ *     cdef RPCState _rpc_state
+ *     cdef object _loop  # asyncio.AbstractEventLoop
+ */
+struct __pyx_obj_7_cython_6cygrpc__ServicerContext {
+  PyObject_HEAD
+  struct __pyx_obj_7_cython_6cygrpc_RPCState *_rpc_state;
+  PyObject *_loop;
+  PyObject *_request_deserializer;
+  PyObject *_response_serializer;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pxd.pxi":53
+ * 
+ * 
+ * cdef class _SyncServicerContext:             # <<<<<<<<<<<<<<
+ *     cdef _ServicerContext _context
+ *     cdef list _callbacks
+ */
+struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext {
+  PyObject_HEAD
+  struct __pyx_obj_7_cython_6cygrpc__ServicerContext *_context;
+  PyObject *_callbacks;
+  PyObject *_loop;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pxd.pxi":59
+ * 
+ * 
+ * cdef class _MessageReceiver:             # <<<<<<<<<<<<<<
+ *     cdef _ServicerContext _servicer_context
+ *     cdef object _agen
+ */
+struct __pyx_obj_7_cython_6cygrpc__MessageReceiver {
+  PyObject_HEAD
+  struct __pyx_obj_7_cython_6cygrpc__ServicerContext *_servicer_context;
+  PyObject *_agen;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pxd.pxi":72
+ * 
+ * 
+ * cdef class _ConcurrentRpcLimiter:             # <<<<<<<<<<<<<<
+ *     cdef int _maximum_concurrent_rpcs
+ *     cdef int _active_rpcs
+ */
+struct __pyx_obj_7_cython_6cygrpc__ConcurrentRpcLimiter {
+  PyObject_HEAD
+  int _maximum_concurrent_rpcs;
+  int _active_rpcs;
+  int limiter_concurrency_exceeded;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pxd.pxi":78
+ * 
+ * 
+ * cdef class AioServer:             # <<<<<<<<<<<<<<
+ *     cdef Server _server
+ *     cdef list _generic_handlers
+ */
+struct __pyx_obj_7_cython_6cygrpc_AioServer {
+  PyObject_HEAD
+  struct __pyx_vtabstruct_7_cython_6cygrpc_AioServer *__pyx_vtab;
+  struct __pyx_obj_7_cython_6cygrpc_Server *_server;
+  PyObject *_generic_handlers;
+  enum __pyx_t_7_cython_6cygrpc_AioServerStatus _status;
+  PyObject *_loop;
+  PyObject *_serving_task;
+  PyObject *_shutdown_lock;
+  PyObject *_shutdown_completed;
+  struct __pyx_obj_7_cython_6cygrpc_CallbackWrapper *_shutdown_callback_wrapper;
+  PyObject *_crash_exception;
+  PyObject *_interceptors;
+  PyObject *_thread_pool;
+  struct __pyx_obj_7_cython_6cygrpc__ConcurrentRpcLimiter *_limiter;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":16
+ * 
+ * 
+ * cdef class _GrpcArgWrapper:             # <<<<<<<<<<<<<<
+ * 
+ *   cdef grpc_arg arg
+ */
+struct __pyx_obj_7_cython_6cygrpc__GrpcArgWrapper {
+  PyObject_HEAD
+  grpc_arg arg;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":373
+ *   return LocalChannelCredentials(local_connect_type)
+ * 
+ * cdef class InsecureChannelCredentials(ChannelCredentials):             # <<<<<<<<<<<<<<
+ * 
+ *   cdef grpc_channel_credentials *c(self) except *:
+ */
+struct __pyx_obj_7_cython_6cygrpc_InsecureChannelCredentials {
+  struct __pyx_obj_7_cython_6cygrpc_ChannelCredentials __pyx_base;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":429
+ * 
+ * 
+ * cdef class ComputeEngineChannelCredentials(ChannelCredentials):             # <<<<<<<<<<<<<<
+ *   cdef grpc_channel_credentials* _c_creds
+ *   cdef grpc_call_credentials* _call_creds
+ */
+struct __pyx_obj_7_cython_6cygrpc_ComputeEngineChannelCredentials {
+  struct __pyx_obj_7_cython_6cygrpc_ChannelCredentials __pyx_base;
+  grpc_channel_credentials *_c_creds;
+  grpc_call_credentials *_call_creds;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/_hooks.pyx.pxi":31
+ *   pass
+ * 
+ * cdef class CensusContext:             # <<<<<<<<<<<<<<
+ *   pass
+ * 
+ */
+struct __pyx_obj_7_cython_6cygrpc_CensusContext {
+  PyObject_HEAD
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":336
+ * 
+ * 
+ * cdef IntegratedCall _integrated_call(             # <<<<<<<<<<<<<<
+ *     _ChannelState state, int flags, method, host, object deadline,
+ *     object metadata, CallCredentials credentials, operationses_and_user_tags,
+ */
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call {
+  PyObject_HEAD
+  struct __pyx_obj_7_cython_6cygrpc__CallState *__pyx_v_call_state;
+  struct __pyx_obj_7_cython_6cygrpc__ChannelState *__pyx_v_state;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":384
+ *     _cancel(self._channel_state, self._call_state, code, details)
+ * 
+ *   def next_event(self):             # <<<<<<<<<<<<<<
+ *     def on_success(tag):
+ *       _process_segregated_call_tag(
+ */
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_1_next_event {
+  PyObject_HEAD
+  struct __pyx_obj_7_cython_6cygrpc_SegregatedCall *__pyx_v_self;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":399
+ * 
+ * 
+ * cdef SegregatedCall _segregated_call(             # <<<<<<<<<<<<<<
+ *     _ChannelState state, int flags, method, host, object deadline,
+ *     object metadata, CallCredentials credentials, operationses_and_user_tags,
+ */
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call {
+  PyObject_HEAD
+  struct __pyx_obj_7_cython_6cygrpc__CallState *__pyx_v_call_state;
+  struct __pyx_obj_7_cython_6cygrpc__ChannelState *__pyx_v_state;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":536
+ *         operationses_and_tags, context, registered_call_handle)
+ * 
+ *   def next_call_event(self):             # <<<<<<<<<<<<<<
+ *     def on_success(tag):
+ *       if tag is not None:
+ */
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event {
+  PyObject_HEAD
+  struct __pyx_obj_7_cython_6cygrpc_Channel *__pyx_v_self;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":37
+ * 
+ * 
+ * cdef int _get_metadata(void *state,             # <<<<<<<<<<<<<<
+ *                        grpc_auth_metadata_context context,
+ *                        grpc_credentials_plugin_metadata_cb cb,
+ */
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata {
+  PyObject_HEAD
+  grpc_metadata *__pyx_v_c_metadata;
+  grpc_credentials_plugin_metadata_cb __pyx_v_cb;
+  size_t __pyx_v_metadata_count;
+  void *__pyx_v_user_data;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":68
+ * 
+ * 
+ * cdef tuple _metadata(grpc_metadata_array *c_metadata_array):             # <<<<<<<<<<<<<<
+ *   return tuple(
+ *       _metadatum(
+ */
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_7_cython_6cygrpc__metadata {
+  PyObject_HEAD
+  grpc_metadata_array *__pyx_v_c_metadata_array;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":70
+ * cdef tuple _metadata(grpc_metadata_array *c_metadata_array):
+ *   return tuple(
+ *       _metadatum(             # <<<<<<<<<<<<<<
+ *           c_metadata_array.metadata[index].key,
+ *           c_metadata_array.metadata[index].value)
+ */
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_6_genexpr {
+  PyObject_HEAD
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_7_cython_6cygrpc__metadata *__pyx_outer_scope;
+  size_t __pyx_genexpr_arg_0;
+  size_t __pyx_v_index;
+  size_t __pyx_t_0;
+  size_t __pyx_t_1;
+  size_t __pyx_t_2;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":50
+ * if _contextvars_supported():
+ *     import contextvars
+ *     def _run_with_context(target):             # <<<<<<<<<<<<<<
+ *         ctx = contextvars.copy_context()
+ *         def _run(*args):
+ */
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context {
+  PyObject_HEAD
+  PyObject *__pyx_v_ctx;
+  PyObject *__pyx_v_target;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":56
+ *         return _run
+ * else:
+ *     def _run_with_context(target):             # <<<<<<<<<<<<<<
+ *         def _run(*args):
+ *             target(*args)
+ */
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context {
+  PyObject_HEAD
+  PyObject *__pyx_v_target;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":103
+ * 
+ * class ForkManagedThread(object):
+ *     def __init__(self, target, args=()):             # <<<<<<<<<<<<<<
+ *         if _GRPC_ENABLE_FORK_SUPPORT:
+ *             def managed_target(*args):
+ */
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_9___init__ {
+  PyObject_HEAD
+  PyObject *__pyx_v_target;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":123
+ * 
+ * 
+ * def async_generator_to_generator(object agen, object loop):             # <<<<<<<<<<<<<<
+ *     """Converts an async generator into generator."""
+ *     try:
+ */
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator {
+  PyObject_HEAD
+  PyObject *__pyx_v_agen;
+  PyObject *__pyx_v_future;
+  PyObject *__pyx_v_loop;
+  PyObject *__pyx_v_response;
+  PyObject *__pyx_t_0;
+  PyObject *__pyx_t_1;
+  PyObject *__pyx_t_2;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":141
+ * 
+ * 
+ * async def generator_to_async_generator(object gen, object loop, object thread_pool):             # <<<<<<<<<<<<<<
+ *     """Converts a generator into async generator.
+ * 
+ */
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator {
+  PyObject_HEAD
+  PyObject *__pyx_v_future;
+  PyObject *__pyx_v_gen;
+  PyObject *__pyx_v_loop;
+  PyObject *__pyx_v_queue;
+  PyObject *__pyx_v_response;
+  PyObject *__pyx_v_thread_pool;
+  PyObject *__pyx_v_yield_to_queue;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":77
+ * 
+ * 
+ * async def execute_batch(GrpcCallWrapper grpc_call_wrapper,             # <<<<<<<<<<<<<<
+ *                                tuple operations,
+ *                                object loop):
+ */
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch {
+  PyObject_HEAD
+  struct __pyx_obj_7_cython_6cygrpc__BatchOperationTag *__pyx_v_batch_operation_tag;
+  grpc_event __pyx_v_c_event;
+  grpc_call_error __pyx_v_error;
+  PyObject *__pyx_v_future;
+  PyObject *__pyx_v_grpc_call_error_string;
+  struct __pyx_obj_7_cython_6cygrpc_GrpcCallWrapper *__pyx_v_grpc_call_wrapper;
+  PyObject *__pyx_v_loop;
+  PyObject *__pyx_v_operations;
+  struct __pyx_obj_7_cython_6cygrpc_CallbackWrapper *__pyx_v_wrapper;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":115
+ * 
+ * 
+ * async def _receive_message(GrpcCallWrapper grpc_call_wrapper,             # <<<<<<<<<<<<<<
+ *                            object loop):
+ *     """Retrives parsed messages from Core.
+ */
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_13__receive_message {
+  PyObject_HEAD
+  PyObject *__pyx_v_e;
+  struct __pyx_obj_7_cython_6cygrpc_GrpcCallWrapper *__pyx_v_grpc_call_wrapper;
+  PyObject *__pyx_v_loop;
+  PyObject *__pyx_v_ops;
+  struct __pyx_obj_7_cython_6cygrpc_ReceiveMessageOperation *__pyx_v_receive_op;
+  PyObject *__pyx_t_0;
+  PyObject *__pyx_t_1;
+  PyObject *__pyx_t_2;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":139
+ * 
+ * 
+ * async def _send_message(GrpcCallWrapper grpc_call_wrapper,             # <<<<<<<<<<<<<<
+ *                         bytes message,
+ *                         Operation send_initial_metadata_op,
+ */
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_14__send_message {
+  PyObject_HEAD
+  struct __pyx_obj_7_cython_6cygrpc_GrpcCallWrapper *__pyx_v_grpc_call_wrapper;
+  PyObject *__pyx_v_loop;
+  PyObject *__pyx_v_message;
+  struct __pyx_obj_7_cython_6cygrpc_SendMessageOperation *__pyx_v_op;
+  PyObject *__pyx_v_ops;
+  struct __pyx_obj_7_cython_6cygrpc_Operation *__pyx_v_send_initial_metadata_op;
+  int __pyx_v_write_flag;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":151
+ * 
+ * 
+ * async def _send_initial_metadata(GrpcCallWrapper grpc_call_wrapper,             # <<<<<<<<<<<<<<
+ *                                  tuple metadata,
+ *                                  int flags,
+ */
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata {
+  PyObject_HEAD
+  int __pyx_v_flags;
+  struct __pyx_obj_7_cython_6cygrpc_GrpcCallWrapper *__pyx_v_grpc_call_wrapper;
+  PyObject *__pyx_v_loop;
+  PyObject *__pyx_v_metadata;
+  struct __pyx_obj_7_cython_6cygrpc_SendInitialMetadataOperation *__pyx_v_op;
+  PyObject *__pyx_v_ops;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":162
+ * 
+ * 
+ * async def _receive_initial_metadata(GrpcCallWrapper grpc_call_wrapper,             # <<<<<<<<<<<<<<
+ *                                     object loop):
+ *     cdef ReceiveInitialMetadataOperation op = ReceiveInitialMetadataOperation(_EMPTY_FLAGS)
+ */
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata {
+  PyObject_HEAD
+  struct __pyx_obj_7_cython_6cygrpc_GrpcCallWrapper *__pyx_v_grpc_call_wrapper;
+  PyObject *__pyx_v_loop;
+  struct __pyx_obj_7_cython_6cygrpc_ReceiveInitialMetadataOperation *__pyx_v_op;
+  PyObject *__pyx_v_ops;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":169
+ *     return op.initial_metadata()
+ * 
+ * async def _send_error_status_from_server(GrpcCallWrapper grpc_call_wrapper,             # <<<<<<<<<<<<<<
+ *                                          grpc_status_code code,
+ *                                          str details,
+ */
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server {
+  PyObject_HEAD
+  grpc_status_code __pyx_v_code;
+  PyObject *__pyx_v_details;
+  struct __pyx_obj_7_cython_6cygrpc_GrpcCallWrapper *__pyx_v_grpc_call_wrapper;
+  PyObject *__pyx_v_loop;
+  struct __pyx_obj_7_cython_6cygrpc_SendStatusFromServerOperation *__pyx_v_op;
+  PyObject *__pyx_v_ops;
+  struct __pyx_obj_7_cython_6cygrpc_Operation *__pyx_v_send_initial_metadata_op;
+  PyObject *__pyx_v_trailing_metadata;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":235
+ *         return self._status.code() == StatusCode.cancelled
+ * 
+ *     async def status(self):             # <<<<<<<<<<<<<<
+ *         """Returns the status of the RPC call.
+ * 
+ */
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_18_status {
+  PyObject_HEAD
+  PyObject *__pyx_v_future;
+  struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":258
+ *         return self.done() and self._status.code() == StatusCode.ok
+ * 
+ *     async def initial_metadata(self):             # <<<<<<<<<<<<<<
+ *         """Returns the initial metadata of the RPC call.
+ * 
+ */
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata {
+  PyObject_HEAD
+  PyObject *__pyx_v_future;
+  struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":296
+ *         ))
+ * 
+ *     async def unary_unary(self,             # <<<<<<<<<<<<<<
+ *                           bytes request,
+ *                           tuple outbound_initial_metadata,
+ */
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary {
+  PyObject_HEAD
+  grpc_status_code __pyx_v_code;
+  PyObject *__pyx_v_context;
+  struct __pyx_obj_7_cython_6cygrpc_SendInitialMetadataOperation *__pyx_v_initial_metadata_op;
+  PyObject *__pyx_v_ops;
+  PyObject *__pyx_v_outbound_initial_metadata;
+  struct __pyx_obj_7_cython_6cygrpc_ReceiveInitialMetadataOperation *__pyx_v_receive_initial_metadata_op;
+  struct __pyx_obj_7_cython_6cygrpc_ReceiveMessageOperation *__pyx_v_receive_message_op;
+  struct __pyx_obj_7_cython_6cygrpc_ReceiveStatusOnClientOperation *__pyx_v_receive_status_on_client_op;
+  PyObject *__pyx_v_request;
+  struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self;
+  struct __pyx_obj_7_cython_6cygrpc_SendCloseFromClientOperation *__pyx_v_send_close_op;
+  struct __pyx_obj_7_cython_6cygrpc_SendMessageOperation *__pyx_v_send_message_op;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":347
+ *             return None
+ * 
+ *     async def _handle_status_once_received(self):             # <<<<<<<<<<<<<<
+ *         """Handles the status sent by peer once received."""
+ *         cdef ReceiveStatusOnClientOperation op = ReceiveStatusOnClientOperation(_EMPTY_FLAGS)
+ */
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received {
+  PyObject_HEAD
+  struct __pyx_obj_7_cython_6cygrpc_ReceiveStatusOnClientOperation *__pyx_v_op;
+  PyObject *__pyx_v_ops;
+  struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":364
+ *         ))
+ * 
+ *     async def receive_serialized_message(self):             # <<<<<<<<<<<<<<
+ *         """Receives one single raw message in bytes."""
+ *         cdef bytes received_message
+ */
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message {
+  PyObject_HEAD
+  PyObject *__pyx_v_received_message;
+  struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":381
+ *             return EOF
+ * 
+ *     async def send_serialized_message(self, bytes message):             # <<<<<<<<<<<<<<
+ *         """Sends one single raw message in bytes."""
+ *         await _send_message(self,
+ */
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message {
+  PyObject_HEAD
+  PyObject *__pyx_v_message;
+  struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":389
+ *                             self._loop)
+ * 
+ *     async def send_receive_close(self):             # <<<<<<<<<<<<<<
+ *         """Half close the RPC on the client-side."""
+ *         cdef SendCloseFromClientOperation op = SendCloseFromClientOperation(_EMPTY_FLAGS)
+ */
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close {
+  PyObject_HEAD
+  struct __pyx_obj_7_cython_6cygrpc_SendCloseFromClientOperation *__pyx_v_op;
+  PyObject *__pyx_v_ops;
+  struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":395
+ *         await execute_batch(self, ops, self._loop)
+ * 
+ *     async def initiate_unary_stream(self,             # <<<<<<<<<<<<<<
+ *                            bytes request,
+ *                            tuple outbound_initial_metadata,
+ */
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream {
+  PyObject_HEAD
+  PyObject *__pyx_v_batch_error;
+  PyObject *__pyx_v_context;
+  struct __pyx_obj_7_cython_6cygrpc_Operation *__pyx_v_initial_metadata_op;
+  PyObject *__pyx_v_outbound_initial_metadata;
+  PyObject *__pyx_v_outbound_ops;
+  PyObject *__pyx_v_request;
+  struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self;
+  struct __pyx_obj_7_cython_6cygrpc_Operation *__pyx_v_send_close_op;
+  struct __pyx_obj_7_cython_6cygrpc_Operation *__pyx_v_send_message_op;
+  PyObject *__pyx_v_status_task;
+  PyObject *__pyx_t_0;
+  PyObject *__pyx_t_1;
+  PyObject *__pyx_t_2;
+  PyObject *__pyx_t_3;
+  PyObject *__pyx_t_4;
+  PyObject *__pyx_t_5;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":437
+ *             await status_task
+ * 
+ *     async def stream_unary(self,             # <<<<<<<<<<<<<<
+ *                            tuple outbound_initial_metadata,
+ *                            object metadata_sent_observer,
+ */
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary {
+  PyObject_HEAD
+  grpc_status_code __pyx_v_code;
+  PyObject *__pyx_v_context;
+  PyObject *__pyx_v_inbound_ops;
+  PyObject *__pyx_v_metadata_sent_observer;
+  PyObject *__pyx_v_outbound_initial_metadata;
+  struct __pyx_obj_7_cython_6cygrpc_ReceiveMessageOperation *__pyx_v_receive_message_op;
+  struct __pyx_obj_7_cython_6cygrpc_ReceiveStatusOnClientOperation *__pyx_v_receive_status_on_client_op;
+  struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self;
+  PyObject *__pyx_t_0;
+  PyObject *__pyx_t_1;
+  PyObject *__pyx_t_2;
+  PyObject *__pyx_t_3;
+  PyObject *__pyx_t_4;
+  PyObject *__pyx_t_5;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":496
+ *             return None
+ * 
+ *     async def initiate_stream_stream(self,             # <<<<<<<<<<<<<<
+ *                            tuple outbound_initial_metadata,
+ *                            object metadata_sent_observer,
+ */
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream {
+  PyObject_HEAD
+  PyObject *__pyx_v_batch_error;
+  PyObject *__pyx_v_context;
+  PyObject *__pyx_v_metadata_sent_observer;
+  PyObject *__pyx_v_outbound_initial_metadata;
+  struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self;
+  PyObject *__pyx_v_status_task;
+  PyObject *__pyx_t_0;
+  PyObject *__pyx_t_1;
+  PyObject *__pyx_t_2;
+  PyObject *__pyx_t_3;
+  PyObject *__pyx_t_4;
+  PyObject *__pyx_t_5;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":71
+ *             )
+ * 
+ *     async def watch_connectivity_state(self,             # <<<<<<<<<<<<<<
+ *                                        grpc_connectivity_state last_observed_state,
+ *                                        object deadline):
+ */
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state {
+  PyObject_HEAD
+  gpr_timespec __pyx_v_c_deadline;
+  PyObject *__pyx_v_deadline;
+  PyObject *__pyx_v_future;
+  grpc_connectivity_state __pyx_v_last_observed_state;
+  struct __pyx_obj_7_cython_6cygrpc_AioChannel *__pyx_v_self;
+  struct __pyx_obj_7_cython_6cygrpc_CallbackWrapper *__pyx_v_wrapper;
+  PyObject *__pyx_t_0;
+  PyObject *__pyx_t_1;
+  PyObject *__pyx_t_2;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":127
+ *         self._loop = loop
+ * 
+ *     async def read(self):             # <<<<<<<<<<<<<<
+ *         cdef bytes raw_message
+ *         self._rpc_state.raise_for_termination()
+ */
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_29_read {
+  PyObject_HEAD
+  PyObject *__pyx_v_raw_message;
+  struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_self;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":140
+ *                             raw_message)
+ * 
+ *     async def write(self, object message):             # <<<<<<<<<<<<<<
+ *         self._rpc_state.raise_for_termination()
+ * 
+ */
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_30_write {
+  PyObject_HEAD
+  PyObject *__pyx_v_message;
+  struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_self;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":150
+ *         self._rpc_state.metadata_sent = True
+ * 
+ *     async def send_initial_metadata(self, object metadata):             # <<<<<<<<<<<<<<
+ *         self._rpc_state.raise_for_termination()
+ * 
+ */
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata {
+  PyObject_HEAD
+  PyObject *__pyx_v_metadata;
+  struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_self;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":164
+ *             self._rpc_state.metadata_sent = True
+ * 
+ *     async def abort(self,             # <<<<<<<<<<<<<<
+ *               object code,
+ *               str details='',
+ */
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_32_abort {
+  PyObject_HEAD
+  grpc_status_code __pyx_v_actual_code;
+  PyObject *__pyx_v_code;
+  PyObject *__pyx_v_details;
+  struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_self;
+  PyObject *__pyx_v_trailing_metadata;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":203
+ *             raise self._rpc_state.abort_exception
+ * 
+ *     async def abort_with_status(self, object status):             # <<<<<<<<<<<<<<
+ *         await self.abort(status.code, status.details, status.trailing_metadata)
+ * 
+ */
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status {
+  PyObject_HEAD
+  struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_self;
+  PyObject *__pyx_v_status;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":354
+ * 
+ * 
+ * async def _run_interceptor(object interceptors, object query_handler,             # <<<<<<<<<<<<<<
+ *                            object handler_call_details):
+ *     interceptor = next(interceptors, None)
+ */
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor {
+  PyObject_HEAD
+  PyObject *__pyx_v_continuation;
+  PyObject *__pyx_v_handler_call_details;
+  PyObject *__pyx_v_interceptor;
+  PyObject *__pyx_v_interceptors;
+  PyObject *__pyx_v_query_handler;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":370
+ * 
+ * 
+ * async def _find_method_handler(str method, tuple metadata, list generic_handlers,             # <<<<<<<<<<<<<<
+ *                           tuple interceptors):
+ *     def query_handlers(handler_call_details):
+ */
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler {
+  PyObject_HEAD
+  PyObject *__pyx_v_generic_handlers;
+  struct __pyx_obj_7_cython_6cygrpc__HandlerCallDetails *__pyx_v_handler_call_details;
+  PyObject *__pyx_v_interceptors;
+  PyObject *__pyx_v_metadata;
+  PyObject *__pyx_v_method;
+  PyObject *__pyx_v_query_handlers;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":389
+ * 
+ * 
+ * async def _finish_handler_with_unary_response(RPCState rpc_state,             # <<<<<<<<<<<<<<
+ *                                               object unary_handler,
+ *                                               object request,
+ */
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response {
+  PyObject_HEAD
+  PyObject *__pyx_v_callback;
+  PyObject *__pyx_v_finish_ops;
+  PyObject *__pyx_v_loop;
+  PyObject *__pyx_v_request;
+  PyObject *__pyx_v_response_message;
+  PyObject *__pyx_v_response_raw;
+  PyObject *__pyx_v_response_serializer;
+  struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state;
+  struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_servicer_context;
+  struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *__pyx_v_sync_servicer_context;
+  PyObject *__pyx_v_unary_handler;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":460
+ * 
+ * 
+ * async def _finish_handler_with_stream_responses(RPCState rpc_state,             # <<<<<<<<<<<<<<
+ *                                                 object stream_handler,
+ *                                                 object request,
+ */
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses {
+  PyObject_HEAD
+  PyObject *__pyx_v_async_response_generator;
+  PyObject *__pyx_v_finish_ops;
+  PyObject *__pyx_v_gen;
+  PyObject *__pyx_v_loop;
+  struct __pyx_obj_7_cython_6cygrpc_SendStatusFromServerOperation *__pyx_v_op;
+  PyObject *__pyx_v_request;
+  PyObject *__pyx_v_response_message;
+  struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state;
+  struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_servicer_context;
+  PyObject *__pyx_v_stream_handler;
+  struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *__pyx_v_sync_servicer_context;
+  PyObject *__pyx_t_0;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":530
+ * 
+ * 
+ * async def _handle_unary_unary_rpc(object method_handler,             # <<<<<<<<<<<<<<
+ *                                   RPCState rpc_state,
+ *                                   object loop):
+ */
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc {
+  PyObject_HEAD
+  PyObject *__pyx_v_loop;
+  PyObject *__pyx_v_method_handler;
+  PyObject *__pyx_v_request_message;
+  PyObject *__pyx_v_request_raw;
+  struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state;
+  struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_servicer_context;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":564
+ * 
+ * 
+ * async def _handle_unary_stream_rpc(object method_handler,             # <<<<<<<<<<<<<<
+ *                                    RPCState rpc_state,
+ *                                    object loop):
+ */
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc {
+  PyObject_HEAD
+  PyObject *__pyx_v_loop;
+  PyObject *__pyx_v_method_handler;
+  PyObject *__pyx_v_request_message;
+  PyObject *__pyx_v_request_raw;
+  struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state;
+  struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_servicer_context;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":603
+ *         self._agen = None
+ * 
+ *     async def _async_message_receiver(self):             # <<<<<<<<<<<<<<
+ *         """An async generator that receives messages."""
+ *         cdef object message
+ */
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver {
+  PyObject_HEAD
+  PyObject *__pyx_v_message;
+  struct __pyx_obj_7_cython_6cygrpc__MessageReceiver *__pyx_v_self;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":619
+ *         return self._agen
+ * 
+ *     async def __anext__(self):             # <<<<<<<<<<<<<<
+ *         return await self.__aiter__().__anext__()
+ * 
+ */
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_41___anext__ {
+  PyObject_HEAD
+  struct __pyx_obj_7_cython_6cygrpc__MessageReceiver *__pyx_v_self;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":623
+ * 
+ * 
+ * async def _handle_stream_unary_rpc(object method_handler,             # <<<<<<<<<<<<<<
+ *                                    RPCState rpc_state,
+ *                                    object loop):
+ */
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc {
+  PyObject_HEAD
+  PyObject *__pyx_v_loop;
+  PyObject *__pyx_v_method_handler;
+  PyObject *__pyx_v_request_iterator;
+  struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state;
+  struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_servicer_context;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":655
+ * 
+ * 
+ * async def _handle_stream_stream_rpc(object method_handler,             # <<<<<<<<<<<<<<
+ *                                     RPCState rpc_state,
+ *                                     object loop):
+ */
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc {
+  PyObject_HEAD
+  PyObject *__pyx_v_loop;
+  PyObject *__pyx_v_method_handler;
+  PyObject *__pyx_v_request_iterator;
+  struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state;
+  struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_servicer_context;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":686
+ * 
+ * 
+ * async def _handle_exceptions(RPCState rpc_state, object rpc_coro, object loop):             # <<<<<<<<<<<<<<
+ *     try:
+ *         try:
+ */
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions {
+  PyObject_HEAD
+  PyObject *__pyx_v_e;
+  PyObject *__pyx_v_loop;
+  PyObject *__pyx_v_rpc_coro;
+  struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state;
+  PyObject *__pyx_v_status_code;
+  PyObject *__pyx_t_0;
+  PyObject *__pyx_t_1;
+  PyObject *__pyx_t_2;
+  PyObject *__pyx_t_3;
+  PyObject *__pyx_t_4;
+  PyObject *__pyx_t_5;
+  PyObject *__pyx_t_6;
+  PyObject *__pyx_t_7;
+  PyObject *__pyx_t_8;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":742
+ * 
+ * 
+ * cdef _add_callback_handler(object rpc_task, RPCState rpc_state):             # <<<<<<<<<<<<<<
+ * 
+ *     def handle_callbacks(object unused_task):
+ */
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler {
+  PyObject_HEAD
+  struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":755
+ * 
+ * 
+ * async def _handle_cancellation_from_core(object rpc_task,             # <<<<<<<<<<<<<<
+ *                                          RPCState rpc_state,
+ *                                          object loop):
+ */
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core {
+  PyObject_HEAD
+  PyObject *__pyx_v_loop;
+  struct __pyx_obj_7_cython_6cygrpc_ReceiveCloseOnServerOperation *__pyx_v_op;
+  PyObject *__pyx_v_ops;
+  struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state;
+  PyObject *__pyx_v_rpc_task;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":772
+ * 
+ * 
+ * async def _schedule_rpc_coro(object rpc_coro,             # <<<<<<<<<<<<<<
+ *                              RPCState rpc_state,
+ *                              object loop):
+ */
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro {
+  PyObject_HEAD
+  PyObject *__pyx_v_loop;
+  PyObject *__pyx_v_rpc_coro;
+  struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state;
+  PyObject *__pyx_v_rpc_task;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":785
+ * 
+ * 
+ * async def _handle_rpc(list generic_handlers, tuple interceptors,             # <<<<<<<<<<<<<<
+ *                       RPCState rpc_state, object loop, bint concurrency_exceeded):
+ *     cdef object method_handler
+ */
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc {
+  PyObject_HEAD
+  int __pyx_v_concurrency_exceeded;
+  PyObject *__pyx_v_generic_handlers;
+  PyObject *__pyx_v_interceptors;
+  PyObject *__pyx_v_loop;
+  PyObject *__pyx_v_method_handler;
+  struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":932
+ *                                            server_credentials._credentials)
+ * 
+ *     async def _request_call(self):             # <<<<<<<<<<<<<<
+ *         cdef grpc_call_error error
+ *         cdef RPCState rpc_state = RPCState(self)
+ */
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_49__request_call {
+  PyObject_HEAD
+  grpc_call_error __pyx_v_error;
+  PyObject *__pyx_v_future;
+  struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state;
+  struct __pyx_obj_7_cython_6cygrpc_AioServer *__pyx_v_self;
+  struct __pyx_obj_7_cython_6cygrpc_CallbackWrapper *__pyx_v_wrapper;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":952
+ *         return rpc_state
+ * 
+ *     async def _server_main_loop(self,             # <<<<<<<<<<<<<<
+ *                                 object server_started):
+ *         self._server.start(backup_queue=False)
+ */
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop {
+  PyObject_HEAD
+  int __pyx_v_concurrency_exceeded;
+  PyObject *__pyx_v_rpc_coro;
+  struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state;
+  PyObject *__pyx_v_rpc_task;
+  struct __pyx_obj_7_cython_6cygrpc_AioServer *__pyx_v_self;
+  PyObject *__pyx_v_server_started;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1005
+ *             self._loop.create_task(self.shutdown(None))
+ * 
+ *     async def start(self):             # <<<<<<<<<<<<<<
+ *         if self._status == AIO_SERVER_STATUS_RUNNING:
+ *             return
+ */
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_51_start {
+  PyObject_HEAD
+  struct __pyx_obj_7_cython_6cygrpc_AioServer *__pyx_v_self;
+  PyObject *__pyx_v_server_started;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1019
+ *         await server_started
+ * 
+ *     async def _start_shutting_down(self):             # <<<<<<<<<<<<<<
+ *         """Prepares the server to shutting down.
+ * 
+ */
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down {
+  PyObject_HEAD
+  struct __pyx_obj_7_cython_6cygrpc_AioServer *__pyx_v_self;
+  PyObject *__pyx_t_0;
+  PyObject *__pyx_t_1;
+  PyObject *__pyx_t_2;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1036
+ *             pass
+ * 
+ *     async def shutdown(self, grace):             # <<<<<<<<<<<<<<
+ *         """Gracefully shutdown the Core server.
+ * 
+ */
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_53_shutdown {
+  PyObject_HEAD
+  PyObject *__pyx_v_grace;
+  struct __pyx_obj_7_cython_6cygrpc_AioServer *__pyx_v_self;
+  PyObject *__pyx_t_0;
+  PyObject *__pyx_t_1;
+  PyObject *__pyx_t_2;
+  PyObject *__pyx_t_3;
+  PyObject *__pyx_t_4;
+  PyObject *__pyx_t_5;
+  PyObject *__pyx_t_6;
+  PyObject *__pyx_t_7;
+};
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1076
+ *                 self._status = AIO_SERVER_STATUS_STOPPED
+ * 
+ *     async def wait_for_termination(self, object timeout):             # <<<<<<<<<<<<<<
+ *         if timeout is None:
+ *             await self._shutdown_completed
+ */
+struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination {
+  PyObject_HEAD
+  struct __pyx_obj_7_cython_6cygrpc_AioServer *__pyx_v_self;
+  PyObject *__pyx_v_timeout;
+  PyObject *__pyx_t_0;
+  PyObject *__pyx_t_1;
+  PyObject *__pyx_t_2;
+};
+
+
+/* "cfunc.to_py":66
+ * 
+ * @cname("__Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg")
+ * cdef object __Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg(object (*f)(_LatentEventArg) ):             # <<<<<<<<<<<<<<
+ *     def wrap(_LatentEventArg latent_event_arg):
+ *         """wrap(latent_event_arg: '_LatentEventArg')"""
+ */
+struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg {
+  PyObject_HEAD
+  PyObject *(*__pyx_v_f)(struct __pyx_obj_7_cython_6cygrpc__LatentEventArg *);
+};
+
+struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_ {
+  PyObject_HEAD
+  PyObject *(*__pyx_v_f)(void);
+};
+
+struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args {
+  PyObject_HEAD
+  PyObject *(*__pyx_v_f)(PyObject *, PyObject *);
+};
+
+struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_ {
+  PyObject_HEAD
+  void (*__pyx_v_f)(void);
+};
+
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":32
+ * 
+ * 
+ * cdef class _ChannelArg:             # <<<<<<<<<<<<<<
+ * 
+ *   cdef void c(self, argument, references) except *:
+ */
+
+struct __pyx_vtabstruct_7_cython_6cygrpc__ChannelArg {
+  void (*c)(struct __pyx_obj_7_cython_6cygrpc__ChannelArg *, PyObject *, PyObject *);
+};
+static struct __pyx_vtabstruct_7_cython_6cygrpc__ChannelArg *__pyx_vtabptr_7_cython_6cygrpc__ChannelArg;
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":64
+ * 
+ * 
+ * cdef class _ChannelArgs:             # <<<<<<<<<<<<<<
+ * 
+ *   def __cinit__(self, arguments):
+ */
+
+struct __pyx_vtabstruct_7_cython_6cygrpc__ChannelArgs {
+  grpc_channel_args *(*c_args)(struct __pyx_obj_7_cython_6cygrpc__ChannelArgs *);
+};
+static struct __pyx_vtabstruct_7_cython_6cygrpc__ChannelArgs *__pyx_vtabptr_7_cython_6cygrpc__ChannelArgs;
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":70
+ * 
+ * 
+ * cdef class _CallState:             # <<<<<<<<<<<<<<
+ * 
+ *   def __cinit__(self):
+ */
+
+struct __pyx_vtabstruct_7_cython_6cygrpc__CallState {
+  void (*maybe_set_client_call_tracer_on_call)(struct __pyx_obj_7_cython_6cygrpc__CallState *, PyObject *, PyObject *);
+  void (*maybe_delete_call_tracer)(struct __pyx_obj_7_cython_6cygrpc__CallState *);
+};
+static struct __pyx_vtabstruct_7_cython_6cygrpc__CallState *__pyx_vtabptr_7_cython_6cygrpc__CallState;
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":31
+ * 
+ * 
+ * cdef class CallCredentials:             # <<<<<<<<<<<<<<
+ * 
+ *   cdef grpc_call_credentials *c(self) except *:
+ */
+
+struct __pyx_vtabstruct_7_cython_6cygrpc_CallCredentials {
+  grpc_call_credentials *(*c)(struct __pyx_obj_7_cython_6cygrpc_CallCredentials *);
+};
+static struct __pyx_vtabstruct_7_cython_6cygrpc_CallCredentials *__pyx_vtabptr_7_cython_6cygrpc_CallCredentials;
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":73
+ * 
+ * 
+ * cdef class MetadataPluginCallCredentials(CallCredentials):             # <<<<<<<<<<<<<<
+ * 
+ *   def __cinit__(self, metadata_plugin, name):
+ */
+
+struct __pyx_vtabstruct_7_cython_6cygrpc_MetadataPluginCallCredentials {
+  struct __pyx_vtabstruct_7_cython_6cygrpc_CallCredentials __pyx_base;
+};
+static struct __pyx_vtabstruct_7_cython_6cygrpc_MetadataPluginCallCredentials *__pyx_vtabptr_7_cython_6cygrpc_MetadataPluginCallCredentials;
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":109
+ * 
+ * 
+ * cdef class CompositeCallCredentials(CallCredentials):             # <<<<<<<<<<<<<<
+ * 
+ *   def __cinit__(self, call_credentialses):
+ */
+
+struct __pyx_vtabstruct_7_cython_6cygrpc_CompositeCallCredentials {
+  struct __pyx_vtabstruct_7_cython_6cygrpc_CallCredentials __pyx_base;
+};
+static struct __pyx_vtabstruct_7_cython_6cygrpc_CompositeCallCredentials *__pyx_vtabptr_7_cython_6cygrpc_CompositeCallCredentials;
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":118
+ * 
+ * 
+ * cdef class ChannelCredentials:             # <<<<<<<<<<<<<<
+ * 
+ *   cdef grpc_channel_credentials *c(self) except *:
+ */
+
+struct __pyx_vtabstruct_7_cython_6cygrpc_ChannelCredentials {
+  grpc_channel_credentials *(*c)(struct __pyx_obj_7_cython_6cygrpc_ChannelCredentials *);
+};
+static struct __pyx_vtabstruct_7_cython_6cygrpc_ChannelCredentials *__pyx_vtabptr_7_cython_6cygrpc_ChannelCredentials;
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":139
+ * 
+ * 
+ * cdef class SSLChannelCredentials(ChannelCredentials):             # <<<<<<<<<<<<<<
+ * 
+ *   def __cinit__(self, pem_root_certificates, private_key, certificate_chain):
+ */
+
+struct __pyx_vtabstruct_7_cython_6cygrpc_SSLChannelCredentials {
+  struct __pyx_vtabstruct_7_cython_6cygrpc_ChannelCredentials __pyx_base;
+};
+static struct __pyx_vtabstruct_7_cython_6cygrpc_SSLChannelCredentials *__pyx_vtabptr_7_cython_6cygrpc_SSLChannelCredentials;
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":173
+ * 
+ * 
+ * cdef class CompositeChannelCredentials(ChannelCredentials):             # <<<<<<<<<<<<<<
+ * 
+ *   def __cinit__(self, call_credentialses, channel_credentials):
+ */
+
+struct __pyx_vtabstruct_7_cython_6cygrpc_CompositeChannelCredentials {
+  struct __pyx_vtabstruct_7_cython_6cygrpc_ChannelCredentials __pyx_base;
+};
+static struct __pyx_vtabstruct_7_cython_6cygrpc_CompositeChannelCredentials *__pyx_vtabptr_7_cython_6cygrpc_CompositeChannelCredentials;
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":192
+ * 
+ * 
+ * cdef class XDSChannelCredentials(ChannelCredentials):             # <<<<<<<<<<<<<<
+ * 
+ *     def __cinit__(self, fallback_credentials):
+ */
+
+struct __pyx_vtabstruct_7_cython_6cygrpc_XDSChannelCredentials {
+  struct __pyx_vtabstruct_7_cython_6cygrpc_ChannelCredentials __pyx_base;
+};
+static struct __pyx_vtabstruct_7_cython_6cygrpc_XDSChannelCredentials *__pyx_vtabptr_7_cython_6cygrpc_XDSChannelCredentials;
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":360
+ *   local_tcp = LOCAL_TCP
+ * 
+ * cdef class LocalChannelCredentials(ChannelCredentials):             # <<<<<<<<<<<<<<
+ * 
+ *   def __cinit__(self, grpc_local_connect_type local_connect_type):
+ */
+
+struct __pyx_vtabstruct_7_cython_6cygrpc_LocalChannelCredentials {
+  struct __pyx_vtabstruct_7_cython_6cygrpc_ChannelCredentials __pyx_base;
+};
+static struct __pyx_vtabstruct_7_cython_6cygrpc_LocalChannelCredentials *__pyx_vtabptr_7_cython_6cygrpc_LocalChannelCredentials;
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":399
+ *   return credentials
+ * 
+ * cdef class ALTSChannelCredentials(ChannelCredentials):             # <<<<<<<<<<<<<<
+ * 
+ *   def __cinit__(self, list service_accounts):
+ */
+
+struct __pyx_vtabstruct_7_cython_6cygrpc_ALTSChannelCredentials {
+  struct __pyx_vtabstruct_7_cython_6cygrpc_ChannelCredentials __pyx_base;
+};
+static struct __pyx_vtabstruct_7_cython_6cygrpc_ALTSChannelCredentials *__pyx_vtabptr_7_cython_6cygrpc_ALTSChannelCredentials;
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":80
+ *       return _internal_latent_event(latent_event_arg)
+ * 
+ * cdef class CompletionQueue:             # <<<<<<<<<<<<<<
+ * 
+ *   def __cinit__(self, shutdown_cq=False):
+ */
+
+struct __pyx_vtabstruct_7_cython_6cygrpc_CompletionQueue {
+  PyObject *(*_interpret_event)(struct __pyx_obj_7_cython_6cygrpc_CompletionQueue *, grpc_event);
+};
+static struct __pyx_vtabstruct_7_cython_6cygrpc_CompletionQueue *__pyx_vtabptr_7_cython_6cygrpc_CompletionQueue;
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":16
+ * 
+ * 
+ * cdef class Operation:             # <<<<<<<<<<<<<<
+ * 
+ *   cdef void c(self) except *:
+ */
+
+struct __pyx_vtabstruct_7_cython_6cygrpc_Operation {
+  void (*c)(struct __pyx_obj_7_cython_6cygrpc_Operation *);
+  void (*un_c)(struct __pyx_obj_7_cython_6cygrpc_Operation *);
+};
+static struct __pyx_vtabstruct_7_cython_6cygrpc_Operation *__pyx_vtabptr_7_cython_6cygrpc_Operation;
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":25
+ * 
+ * 
+ * cdef class SendInitialMetadataOperation(Operation):             # <<<<<<<<<<<<<<
+ * 
+ *   def __cinit__(self, initial_metadata, flags):
+ */
+
+struct __pyx_vtabstruct_7_cython_6cygrpc_SendInitialMetadataOperation {
+  struct __pyx_vtabstruct_7_cython_6cygrpc_Operation __pyx_base;
+};
+static struct __pyx_vtabstruct_7_cython_6cygrpc_SendInitialMetadataOperation *__pyx_vtabptr_7_cython_6cygrpc_SendInitialMetadataOperation;
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":49
+ * 
+ * 
+ * cdef class SendMessageOperation(Operation):             # <<<<<<<<<<<<<<
+ * 
+ *   def __cinit__(self, bytes message, int flags):
+ */
+
+struct __pyx_vtabstruct_7_cython_6cygrpc_SendMessageOperation {
+  struct __pyx_vtabstruct_7_cython_6cygrpc_Operation __pyx_base;
+};
+static struct __pyx_vtabstruct_7_cython_6cygrpc_SendMessageOperation *__pyx_vtabptr_7_cython_6cygrpc_SendMessageOperation;
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":75
+ * 
+ * 
+ * cdef class SendCloseFromClientOperation(Operation):             # <<<<<<<<<<<<<<
+ * 
+ *   def __cinit__(self, int flags):
+ */
+
+struct __pyx_vtabstruct_7_cython_6cygrpc_SendCloseFromClientOperation {
+  struct __pyx_vtabstruct_7_cython_6cygrpc_Operation __pyx_base;
+};
+static struct __pyx_vtabstruct_7_cython_6cygrpc_SendCloseFromClientOperation *__pyx_vtabptr_7_cython_6cygrpc_SendCloseFromClientOperation;
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":91
+ * 
+ * 
+ * cdef class SendStatusFromServerOperation(Operation):             # <<<<<<<<<<<<<<
+ * 
+ *   def __cinit__(self, trailing_metadata, code, object details, int flags):
+ */
+
+struct __pyx_vtabstruct_7_cython_6cygrpc_SendStatusFromServerOperation {
+  struct __pyx_vtabstruct_7_cython_6cygrpc_Operation __pyx_base;
+};
+static struct __pyx_vtabstruct_7_cython_6cygrpc_SendStatusFromServerOperation *__pyx_vtabptr_7_cython_6cygrpc_SendStatusFromServerOperation;
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":122
+ * 
+ * 
+ * cdef class ReceiveInitialMetadataOperation(Operation):             # <<<<<<<<<<<<<<
+ * 
+ *   def __cinit__(self, flags):
+ */
+
+struct __pyx_vtabstruct_7_cython_6cygrpc_ReceiveInitialMetadataOperation {
+  struct __pyx_vtabstruct_7_cython_6cygrpc_Operation __pyx_base;
+};
+static struct __pyx_vtabstruct_7_cython_6cygrpc_ReceiveInitialMetadataOperation *__pyx_vtabptr_7_cython_6cygrpc_ReceiveInitialMetadataOperation;
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":145
+ * 
+ * 
+ * cdef class ReceiveMessageOperation(Operation):             # <<<<<<<<<<<<<<
+ * 
+ *   def __cinit__(self, flags):
+ */
+
+struct __pyx_vtabstruct_7_cython_6cygrpc_ReceiveMessageOperation {
+  struct __pyx_vtabstruct_7_cython_6cygrpc_Operation __pyx_base;
+};
+static struct __pyx_vtabstruct_7_cython_6cygrpc_ReceiveMessageOperation *__pyx_vtabptr_7_cython_6cygrpc_ReceiveMessageOperation;
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":187
+ * 
+ * 
+ * cdef class ReceiveStatusOnClientOperation(Operation):             # <<<<<<<<<<<<<<
+ * 
+ *   def __cinit__(self, flags):
+ */
+
+struct __pyx_vtabstruct_7_cython_6cygrpc_ReceiveStatusOnClientOperation {
+  struct __pyx_vtabstruct_7_cython_6cygrpc_Operation __pyx_base;
+};
+static struct __pyx_vtabstruct_7_cython_6cygrpc_ReceiveStatusOnClientOperation *__pyx_vtabptr_7_cython_6cygrpc_ReceiveStatusOnClientOperation;
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":233
+ * 
+ * 
+ * cdef class ReceiveCloseOnServerOperation(Operation):             # <<<<<<<<<<<<<<
+ * 
+ *   def __cinit__(self, flags):
+ */
+
+struct __pyx_vtabstruct_7_cython_6cygrpc_ReceiveCloseOnServerOperation {
+  struct __pyx_vtabstruct_7_cython_6cygrpc_Operation __pyx_base;
+};
+static struct __pyx_vtabstruct_7_cython_6cygrpc_ReceiveCloseOnServerOperation *__pyx_vtabptr_7_cython_6cygrpc_ReceiveCloseOnServerOperation;
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":16
+ * 
+ * 
+ * cdef class Server:             # <<<<<<<<<<<<<<
+ * 
+ *   def __cinit__(self, object arguments, bint xds):
+ */
+
+struct __pyx_vtabstruct_7_cython_6cygrpc_Server {
+  PyObject *(*_c_shutdown)(struct __pyx_obj_7_cython_6cygrpc_Server *, struct __pyx_obj_7_cython_6cygrpc_CompletionQueue *, PyObject *);
+  PyObject *(*notify_shutdown_complete)(struct __pyx_obj_7_cython_6cygrpc_Server *);
+};
+static struct __pyx_vtabstruct_7_cython_6cygrpc_Server *__pyx_vtabptr_7_cython_6cygrpc_Server;
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":16
+ * 
+ * 
+ * cdef class _Tag:             # <<<<<<<<<<<<<<
+ * 
+ *   cdef BaseEvent event(self, grpc_event c_event):
+ */
+
+struct __pyx_vtabstruct_7_cython_6cygrpc__Tag {
+  struct __pyx_obj_7_cython_6cygrpc_BaseEvent *(*event)(struct __pyx_obj_7_cython_6cygrpc__Tag *, grpc_event);
+};
+static struct __pyx_vtabstruct_7_cython_6cygrpc__Tag *__pyx_vtabptr_7_cython_6cygrpc__Tag;
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":22
+ * 
+ * 
+ * cdef class _ConnectivityTag(_Tag):             # <<<<<<<<<<<<<<
+ * 
+ *   def __cinit__(self, user_tag):
+ */
+
+struct __pyx_vtabstruct_7_cython_6cygrpc__ConnectivityTag {
+  struct __pyx_vtabstruct_7_cython_6cygrpc__Tag __pyx_base;
+  struct __pyx_obj_7_cython_6cygrpc_ConnectivityEvent *(*event)(struct __pyx_obj_7_cython_6cygrpc__ConnectivityTag *, grpc_event);
+};
+static struct __pyx_vtabstruct_7_cython_6cygrpc__ConnectivityTag *__pyx_vtabptr_7_cython_6cygrpc__ConnectivityTag;
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":31
+ * 
+ * 
+ * cdef class _RequestCallTag(_Tag):             # <<<<<<<<<<<<<<
+ * 
+ *   def __cinit__(self, user_tag):
+ */
+
+struct __pyx_vtabstruct_7_cython_6cygrpc__RequestCallTag {
+  struct __pyx_vtabstruct_7_cython_6cygrpc__Tag __pyx_base;
+  void (*prepare)(struct __pyx_obj_7_cython_6cygrpc__RequestCallTag *);
+  struct __pyx_obj_7_cython_6cygrpc_RequestCallEvent *(*event)(struct __pyx_obj_7_cython_6cygrpc__RequestCallTag *, grpc_event);
+};
+static struct __pyx_vtabstruct_7_cython_6cygrpc__RequestCallTag *__pyx_vtabptr_7_cython_6cygrpc__RequestCallTag;
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":51
+ * 
+ * 
+ * cdef class _BatchOperationTag:             # <<<<<<<<<<<<<<
+ * 
+ *   def __cinit__(self, user_tag, operations, call):
+ */
+
+struct __pyx_vtabstruct_7_cython_6cygrpc__BatchOperationTag {
+  struct __pyx_vtabstruct_7_cython_6cygrpc__Tag __pyx_base;
+  void (*prepare)(struct __pyx_obj_7_cython_6cygrpc__BatchOperationTag *);
+  struct __pyx_obj_7_cython_6cygrpc_BatchOperationEvent *(*event)(struct __pyx_obj_7_cython_6cygrpc__BatchOperationTag *, grpc_event);
+};
+static struct __pyx_vtabstruct_7_cython_6cygrpc__BatchOperationTag *__pyx_vtabptr_7_cython_6cygrpc__BatchOperationTag;
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":80
+ * 
+ * 
+ * cdef class _ServerShutdownTag(_Tag):             # <<<<<<<<<<<<<<
+ * 
+ *   def __cinit__(self, user_tag, shutting_down_server):
+ */
+
+struct __pyx_vtabstruct_7_cython_6cygrpc__ServerShutdownTag {
+  struct __pyx_vtabstruct_7_cython_6cygrpc__Tag __pyx_base;
+  struct __pyx_obj_7_cython_6cygrpc_ServerShutdownEvent *(*event)(struct __pyx_obj_7_cython_6cygrpc__ServerShutdownTag *, grpc_event);
+};
+static struct __pyx_vtabstruct_7_cython_6cygrpc__ServerShutdownTag *__pyx_vtabptr_7_cython_6cygrpc__ServerShutdownTag;
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":38
+ * 
+ * 
+ * cdef class BaseCompletionQueue:             # <<<<<<<<<<<<<<
+ * 
+ *     cdef grpc_completion_queue* c_ptr(self):
+ */
+
+struct __pyx_vtabstruct_7_cython_6cygrpc_BaseCompletionQueue {
+  grpc_completion_queue *(*c_ptr)(struct __pyx_obj_7_cython_6cygrpc_BaseCompletionQueue *);
+};
+static struct __pyx_vtabstruct_7_cython_6cygrpc_BaseCompletionQueue *__pyx_vtabptr_7_cython_6cygrpc_BaseCompletionQueue;
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":72
+ * 
+ * 
+ * cdef class PollerCompletionQueue(BaseCompletionQueue):             # <<<<<<<<<<<<<<
+ * 
+ *     def __cinit__(self):
+ */
+
+struct __pyx_vtabstruct_7_cython_6cygrpc_PollerCompletionQueue {
+  struct __pyx_vtabstruct_7_cython_6cygrpc_BaseCompletionQueue __pyx_base;
+  void (*_poll)(struct __pyx_obj_7_cython_6cygrpc_PollerCompletionQueue *);
+  PyObject *(*shutdown)(struct __pyx_obj_7_cython_6cygrpc_PollerCompletionQueue *);
+};
+static struct __pyx_vtabstruct_7_cython_6cygrpc_PollerCompletionQueue *__pyx_vtabptr_7_cython_6cygrpc_PollerCompletionQueue;
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pyx.pxi":17
+ * 
+ * 
+ * cdef class AioRpcStatus(Exception):             # <<<<<<<<<<<<<<
+ * 
+ *     # The final status of gRPC is represented by three trailing metadata:
+ */
+
+struct __pyx_vtabstruct_7_cython_6cygrpc_AioRpcStatus {
+  grpc_status_code (*code)(struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *, int __pyx_skip_dispatch);
+  PyObject *(*details)(struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *, int __pyx_skip_dispatch);
+  PyObject *(*trailing_metadata)(struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *, int __pyx_skip_dispatch);
+  PyObject *(*debug_error_string)(struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *, int __pyx_skip_dispatch);
+  grpc_status_code (*c_code)(struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *);
+};
+static struct __pyx_vtabstruct_7_cython_6cygrpc_AioRpcStatus *__pyx_vtabptr_7_cython_6cygrpc_AioRpcStatus;
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":16
+ * 
+ * 
+ * cdef class CallbackFailureHandler:             # <<<<<<<<<<<<<<
+ * 
+ *     def __cinit__(self,
+ */
+
+struct __pyx_vtabstruct_7_cython_6cygrpc_CallbackFailureHandler {
+  PyObject *(*handle)(struct __pyx_obj_7_cython_6cygrpc_CallbackFailureHandler *, PyObject *);
+};
+static struct __pyx_vtabstruct_7_cython_6cygrpc_CallbackFailureHandler *__pyx_vtabptr_7_cython_6cygrpc_CallbackFailureHandler;
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":33
+ * 
+ * 
+ * cdef class CallbackWrapper:             # <<<<<<<<<<<<<<
+ * 
+ *     def __cinit__(self, object future, object loop, CallbackFailureHandler failure_handler):
+ */
+
+struct __pyx_vtabstruct_7_cython_6cygrpc_CallbackWrapper {
+  void (*functor_run)(grpc_completion_queue_functor *, int);
+  grpc_completion_queue_functor *(*c_functor)(struct __pyx_obj_7_cython_6cygrpc_CallbackWrapper *);
+};
+static struct __pyx_vtabstruct_7_cython_6cygrpc_CallbackWrapper *__pyx_vtabptr_7_cython_6cygrpc_CallbackWrapper;
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":45
+ * 
+ * 
+ * cdef class _AioCall(GrpcCallWrapper):             # <<<<<<<<<<<<<<
+ * 
+ *     def __cinit__(self, AioChannel channel, object deadline,
+ */
+
+struct __pyx_vtabstruct_7_cython_6cygrpc__AioCall {
+  void (*_create_grpc_call)(struct __pyx_obj_7_cython_6cygrpc__AioCall *, PyObject *, PyObject *, struct __pyx_obj_7_cython_6cygrpc_CallCredentials *);
+  void (*_set_status)(struct __pyx_obj_7_cython_6cygrpc__AioCall *, struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *);
+  void (*_set_initial_metadata)(struct __pyx_obj_7_cython_6cygrpc__AioCall *, PyObject *);
+};
+static struct __pyx_vtabstruct_7_cython_6cygrpc__AioCall *__pyx_vtabptr_7_cython_6cygrpc__AioCall;
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":45
+ * 
+ * 
+ * cdef class RPCState:             # <<<<<<<<<<<<<<
+ * 
+ *     def __cinit__(self, AioServer server):
+ */
+
+struct __pyx_vtabstruct_7_cython_6cygrpc_RPCState {
+  PyObject *(*method)(struct __pyx_obj_7_cython_6cygrpc_RPCState *);
+  PyObject *(*invocation_metadata)(struct __pyx_obj_7_cython_6cygrpc_RPCState *);
+  void (*raise_for_termination)(struct __pyx_obj_7_cython_6cygrpc_RPCState *);
+  int (*get_write_flag)(struct __pyx_obj_7_cython_6cygrpc_RPCState *);
+  struct __pyx_obj_7_cython_6cygrpc_Operation *(*create_send_initial_metadata_op_if_not_sent)(struct __pyx_obj_7_cython_6cygrpc_RPCState *);
+};
+static struct __pyx_vtabstruct_7_cython_6cygrpc_RPCState *__pyx_vtabptr_7_cython_6cygrpc_RPCState;
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":884
+ * 
+ * 
+ * cdef class AioServer:             # <<<<<<<<<<<<<<
+ * 
+ *     def __init__(self, loop, thread_pool, generic_handlers, interceptors,
+ */
+
+struct __pyx_vtabstruct_7_cython_6cygrpc_AioServer {
+  PyObject *(*thread_pool)(struct __pyx_obj_7_cython_6cygrpc_AioServer *);
+};
+static struct __pyx_vtabstruct_7_cython_6cygrpc_AioServer *__pyx_vtabptr_7_cython_6cygrpc_AioServer;
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":373
+ *   return LocalChannelCredentials(local_connect_type)
+ * 
+ * cdef class InsecureChannelCredentials(ChannelCredentials):             # <<<<<<<<<<<<<<
+ * 
+ *   cdef grpc_channel_credentials *c(self) except *:
+ */
+
+struct __pyx_vtabstruct_7_cython_6cygrpc_InsecureChannelCredentials {
+  struct __pyx_vtabstruct_7_cython_6cygrpc_ChannelCredentials __pyx_base;
+};
+static struct __pyx_vtabstruct_7_cython_6cygrpc_InsecureChannelCredentials *__pyx_vtabptr_7_cython_6cygrpc_InsecureChannelCredentials;
+
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":429
+ * 
+ * 
+ * cdef class ComputeEngineChannelCredentials(ChannelCredentials):             # <<<<<<<<<<<<<<
+ *   cdef grpc_channel_credentials* _c_creds
+ *   cdef grpc_call_credentials* _call_creds
+ */
+
+struct __pyx_vtabstruct_7_cython_6cygrpc_ComputeEngineChannelCredentials {
+  struct __pyx_vtabstruct_7_cython_6cygrpc_ChannelCredentials __pyx_base;
+};
+static struct __pyx_vtabstruct_7_cython_6cygrpc_ComputeEngineChannelCredentials *__pyx_vtabptr_7_cython_6cygrpc_ComputeEngineChannelCredentials;
+/* #### 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);
+
+/* 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
+
+/* 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);
+
+/* 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);
+
+/* 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);
+
+/* 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
+
+/* 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);
+
+/* RaiseUnexpectedTypeError.proto */
+static int __Pyx_RaiseUnexpectedTypeError(const char *expected, PyObject *obj);
+
+/* 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);
+
+/* 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_bytes.proto */
+static CYTHON_INLINE PyObject* __Pyx_decode_c_bytes(
+         const char* cstring, Py_ssize_t length, 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));
+
+/* decode_bytes.proto */
+static CYTHON_INLINE PyObject* __Pyx_decode_bytes(
+         PyObject* string, 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)) {
+    char* as_c_string;
+    Py_ssize_t size;
+#if CYTHON_ASSUME_SAFE_MACROS
+    as_c_string = PyBytes_AS_STRING(string);
+    size = PyBytes_GET_SIZE(string);
+#else
+    if (PyBytes_AsStringAndSize(string, &as_c_string, &size) < 0) {
+        return NULL;
+    }
+#endif
+    return __Pyx_decode_c_bytes(
+        as_c_string, size,
+        start, stop, encoding, errors, decode_func);
+}
+
+/* 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
+
+/* 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
+
+/* KeywordStringCheck.proto */
+static int __Pyx_CheckKeywordStrings(PyObject *kw, const char* function_name, int kw_allowed);
+
+/* PyObjectCallNoArg.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func);
+
+/* 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);
+
+/* ExtTypeTest.proto */
+static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type);
+
+/* 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);
+
+/* 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
+
+/* PyObjectCall2Args.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2);
+
+/* PyObjectGetMethod.proto */
+static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method);
+
+/* PyObjectCallMethod1.proto */
+static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg);
+
+/* append.proto */
+static CYTHON_INLINE int __Pyx_PyObject_Append(PyObject* L, PyObject* x);
+
+/* GetAttr.proto */
+static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *, PyObject *);
+
+/* HasAttr.proto */
+static CYTHON_INLINE int __Pyx_HasAttr(PyObject *, PyObject *);
+
+/* 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
+
+/* 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));
+}
+
+/* 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
+
+/* RaiseNoneIterError.proto */
+static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void);
+
+/* py_dict_pop.proto */
+static CYTHON_INLINE PyObject *__Pyx_PyDict_Pop(PyObject *d, PyObject *key, PyObject *default_value);
+
+/* UnpackUnboundCMethod.proto */
+typedef struct {
+    PyObject *type;
+    PyObject **method_name;
+    PyCFunction func;
+    PyObject *method;
+    int flag;
+} __Pyx_CachedCFunction;
+
+/* CallUnboundCMethod2.proto */
+static PyObject* __Pyx__CallUnboundCMethod2(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg1, PyObject* arg2);
+#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030600B1
+static CYTHON_INLINE PyObject *__Pyx_CallUnboundCMethod2(__Pyx_CachedCFunction *cfunc, PyObject *self, PyObject *arg1, PyObject *arg2);
+#else
+#define __Pyx_CallUnboundCMethod2(cfunc, self, arg1, arg2)  __Pyx__CallUnboundCMethod2(cfunc, self, arg1, arg2)
+#endif
+
+/* CallUnboundCMethod1.proto */
+static PyObject* __Pyx__CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg);
+#if CYTHON_COMPILING_IN_CPYTHON
+static CYTHON_INLINE PyObject* __Pyx_CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg);
+#else
+#define __Pyx_CallUnboundCMethod1(cfunc, self, arg)  __Pyx__CallUnboundCMethod1(cfunc, self, arg)
+#endif
+
+/* pyfrozenset_new.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyFrozenSet_New(PyObject* it);
+
+/* py_set_remove.proto */
+static CYTHON_INLINE int __Pyx_PySet_Remove(PyObject *set, PyObject *key);
+
+/* RaiseClosureNameError.proto */
+static CYTHON_INLINE void __Pyx_RaiseClosureNameError(const char *varname);
+
+/* set_iter.proto */
+static CYTHON_INLINE PyObject* __Pyx_set_iterator(PyObject* iterable, int is_set,
+                                                  Py_ssize_t* p_orig_length, int* p_source_is_set);
+static CYTHON_INLINE int __Pyx_set_iter_next(
+        PyObject* iter_obj, Py_ssize_t orig_length,
+        Py_ssize_t* ppos, PyObject **value,
+        int source_is_set);
+
+/* py_dict_values.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyDict_Values(PyObject* d);
+
+/* CallUnboundCMethod0.proto */
+static PyObject* __Pyx__CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self);
+#if CYTHON_COMPILING_IN_CPYTHON
+#define __Pyx_CallUnboundCMethod0(cfunc, self)\
+    (likely((cfunc)->func) ?\
+        (likely((cfunc)->flag == METH_NOARGS) ?  (*((cfunc)->func))(self, NULL) :\
+         (PY_VERSION_HEX >= 0x030600B1 && likely((cfunc)->flag == METH_FASTCALL) ?\
+            (PY_VERSION_HEX >= 0x030700A0 ?\
+                (*(__Pyx_PyCFunctionFast)(void*)(PyCFunction)(cfunc)->func)(self, &__pyx_empty_tuple, 0) :\
+                (*(__Pyx_PyCFunctionFastWithKeywords)(void*)(PyCFunction)(cfunc)->func)(self, &__pyx_empty_tuple, 0, NULL)) :\
+          (PY_VERSION_HEX >= 0x030700A0 && (cfunc)->flag == (METH_FASTCALL | METH_KEYWORDS) ?\
+            (*(__Pyx_PyCFunctionFastWithKeywords)(void*)(PyCFunction)(cfunc)->func)(self, &__pyx_empty_tuple, 0, NULL) :\
+            (likely((cfunc)->flag == (METH_VARARGS | METH_KEYWORDS)) ?  ((*(PyCFunctionWithKeywords)(void*)(PyCFunction)(cfunc)->func)(self, __pyx_empty_tuple, NULL)) :\
+               ((cfunc)->flag == METH_VARARGS ?  (*((cfunc)->func))(self, __pyx_empty_tuple) :\
+               __Pyx__CallUnboundCMethod0(cfunc, self)))))) :\
+        __Pyx__CallUnboundCMethod0(cfunc, self))
+#else
+#define __Pyx_CallUnboundCMethod0(cfunc, self)  __Pyx__CallUnboundCMethod0(cfunc, self)
+#endif
+
+/* PyFloatBinop.proto */
+#if !CYTHON_COMPILING_IN_PYPY
+static PyObject* __Pyx_PyFloat_AddObjC(PyObject *op1, PyObject *op2, double floatval, int inplace, int zerodivision_check);
+#else
+#define __Pyx_PyFloat_AddObjC(op1, op2, floatval, inplace, zerodivision_check)\
+    (inplace ? PyNumber_InPlaceAdd(op1, op2) : PyNumber_Add(op1, op2))
+#endif
+
+/* py_dict_keys.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyDict_Keys(PyObject* d);
+
+/* 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
+
+/* IterNext.proto */
+#define __Pyx_PyIter_Next(obj) __Pyx_PyIter_Next2(obj, NULL)
+static CYTHON_INLINE PyObject *__Pyx_PyIter_Next2(PyObject *, PyObject *);
+
+/* GetAttr3.proto */
+static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *, PyObject *, PyObject *);
+
+/* CallableCheck.proto */
+#if CYTHON_USE_TYPE_SLOTS && PY_MAJOR_VERSION >= 3
+#define __Pyx_PyCallable_Check(obj)   (Py_TYPE(obj)->tp_call != NULL)
+#else
+#define __Pyx_PyCallable_Check(obj)   PyCallable_Check(obj)
+#endif
+
+/* WriteUnraisableException.proto */
+static void __Pyx_WriteUnraisable(const char *name, int clineno,
+                                  int lineno, const char *filename,
+                                  int full_traceback, int nogil);
+
+/* PyIntCompare.proto */
+static CYTHON_INLINE int __Pyx_PyInt_BoolEqObjC(PyObject *op1, PyObject *op2, long intval, long inplace);
+
+/* pep479.proto */
+static void __Pyx_Generator_Replace_StopIteration(int in_async_gen);
+
+/* SliceObject.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(
+        PyObject* obj, Py_ssize_t cstart, Py_ssize_t cstop,
+        PyObject** py_start, PyObject** py_stop, PyObject** py_slice,
+        int has_cstart, int has_cstop, int wraparound);
+
+/* 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));
+}
+
+/* Import.proto */
+static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level);
+
+/* 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
+
+/* PyObjectSetAttrStr.proto */
+#if CYTHON_USE_TYPE_SLOTS
+#define __Pyx_PyObject_DelAttrStr(o,n) __Pyx_PyObject_SetAttrStr(o, n, NULL)
+static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value);
+#else
+#define __Pyx_PyObject_DelAttrStr(o,n)   PyObject_DelAttr(o,n)
+#define __Pyx_PyObject_SetAttrStr(o,n,v) PyObject_SetAttr(o,n,v)
+#endif
+
+/* SwapException.proto */
+#if CYTHON_FAST_THREAD_STATE
+#define __Pyx_ExceptionSwap(type, value, tb)  __Pyx__ExceptionSwap(__pyx_tstate, type, value, tb)
+static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
+#else
+static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb);
+#endif
+
+/* PyIntBinop.proto */
+#if !CYTHON_COMPILING_IN_PYPY
+static PyObject* __Pyx_PyInt_SubtractObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check);
+#else
+#define __Pyx_PyInt_SubtractObjC(op1, op2, intval, inplace, zerodivision_check)\
+    (inplace ? PyNumber_InPlaceSubtract(op1, op2) : PyNumber_Subtract(op1, op2))
+#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)
+
+/* PyObject_Str.proto */
+#define __Pyx_PyObject_Str(obj)\
+    (likely(PyString_CheckExact(obj)) ? __Pyx_NewRef(obj) : PyObject_Str(obj))
+
+/* StopAsyncIteration.proto */
+#define __Pyx_StopAsyncIteration_USED
+static PyObject *__Pyx_PyExc_StopAsyncIteration;
+static int __pyx_StopAsyncIteration_init(PyObject *module);
+
+/* CoroutineBase.proto */
+struct __pyx_CoroutineObject;
+typedef PyObject *(*__pyx_coroutine_body_t)(struct __pyx_CoroutineObject *, PyThreadState *, PyObject *);
+#if CYTHON_USE_EXC_INFO_STACK
+#define __Pyx_ExcInfoStruct  _PyErr_StackItem
+#else
+typedef struct {
+    PyObject *exc_type;
+    PyObject *exc_value;
+    PyObject *exc_traceback;
+} __Pyx_ExcInfoStruct;
+#endif
+typedef struct __pyx_CoroutineObject {
+    PyObject_HEAD
+    __pyx_coroutine_body_t body;
+    PyObject *closure;
+    __Pyx_ExcInfoStruct gi_exc_state;
+    PyObject *gi_weakreflist;
+    PyObject *classobj;
+    PyObject *yieldfrom;
+    PyObject *gi_name;
+    PyObject *gi_qualname;
+    PyObject *gi_modulename;
+    PyObject *gi_code;
+    PyObject *gi_frame;
+    int resume_label;
+    char is_running;
+} __pyx_CoroutineObject;
+static __pyx_CoroutineObject *__Pyx__Coroutine_New(
+    PyTypeObject *type, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure,
+    PyObject *name, PyObject *qualname, PyObject *module_name);
+static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit(
+            __pyx_CoroutineObject *gen, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure,
+            PyObject *name, PyObject *qualname, PyObject *module_name);
+static CYTHON_INLINE void __Pyx_Coroutine_ExceptionClear(__Pyx_ExcInfoStruct *self);
+static int __Pyx_Coroutine_clear(PyObject *self);
+static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value);
+static PyObject *__Pyx_Coroutine_Close(PyObject *self);
+static PyObject *__Pyx_Coroutine_Throw(PyObject *gen, PyObject *args);
+#if CYTHON_USE_EXC_INFO_STACK
+#define __Pyx_Coroutine_SwapException(self)
+#define __Pyx_Coroutine_ResetAndClearException(self)  __Pyx_Coroutine_ExceptionClear(&(self)->gi_exc_state)
+#else
+#define __Pyx_Coroutine_SwapException(self) {\
+    __Pyx_ExceptionSwap(&(self)->gi_exc_state.exc_type, &(self)->gi_exc_state.exc_value, &(self)->gi_exc_state.exc_traceback);\
+    __Pyx_Coroutine_ResetFrameBackpointer(&(self)->gi_exc_state);\
+    }
+#define __Pyx_Coroutine_ResetAndClearException(self) {\
+    __Pyx_ExceptionReset((self)->gi_exc_state.exc_type, (self)->gi_exc_state.exc_value, (self)->gi_exc_state.exc_traceback);\
+    (self)->gi_exc_state.exc_type = (self)->gi_exc_state.exc_value = (self)->gi_exc_state.exc_traceback = NULL;\
+    }
+#endif
+#if CYTHON_FAST_THREAD_STATE
+#define __Pyx_PyGen_FetchStopIterationValue(pvalue)\
+    __Pyx_PyGen__FetchStopIterationValue(__pyx_tstate, pvalue)
+#else
+#define __Pyx_PyGen_FetchStopIterationValue(pvalue)\
+    __Pyx_PyGen__FetchStopIterationValue(__Pyx_PyThreadState_Current, pvalue)
+#endif
+static int __Pyx_PyGen__FetchStopIterationValue(PyThreadState *tstate, PyObject **pvalue);
+static CYTHON_INLINE void __Pyx_Coroutine_ResetFrameBackpointer(__Pyx_ExcInfoStruct *exc_state);
+
+/* 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
+
+/* PatchModuleWithCoroutine.proto */
+static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code);
+
+/* PatchGeneratorABC.proto */
+static int __Pyx_patch_abc(void);
+
+/* Coroutine.proto */
+#define __Pyx_Coroutine_USED
+#define __Pyx_Coroutine_CheckExact(obj) __Pyx_IS_TYPE(obj, __pyx_CoroutineType)
+#define __Pyx_Coroutine_Check(obj) __Pyx_Coroutine_CheckExact(obj)
+#define __Pyx_CoroutineAwait_CheckExact(obj) __Pyx_IS_TYPE(obj, __pyx_CoroutineAwaitType)
+#define __Pyx_Coroutine_New(body, code, closure, name, qualname, module_name)\
+    __Pyx__Coroutine_New(__pyx_CoroutineType, body, code, closure, name, qualname, module_name)
+static int __pyx_Coroutine_init(PyObject *module);
+static PyObject *__Pyx__Coroutine_await(PyObject *coroutine);
+typedef struct {
+    PyObject_HEAD
+    PyObject *coroutine;
+} __pyx_CoroutineAwaitObject;
+static PyObject *__Pyx_CoroutineAwait_Close(__pyx_CoroutineAwaitObject *self, PyObject *arg);
+static PyObject *__Pyx_CoroutineAwait_Throw(__pyx_CoroutineAwaitObject *self, PyObject *args);
+
+/* GetAwaitIter.proto */
+static CYTHON_INLINE PyObject *__Pyx_Coroutine_GetAwaitableIter(PyObject *o);
+static PyObject *__Pyx__Coroutine_GetAwaitableIter(PyObject *o);
+
+/* CoroutineYieldFrom.proto */
+static CYTHON_INLINE PyObject* __Pyx_Coroutine_Yield_From(__pyx_CoroutineObject *gen, PyObject *source);
+
+/* 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);
+
+/* ErrOccurredWithGIL.proto */
+static CYTHON_INLINE int __Pyx_ErrOccurredWithGIL(void);
+
+/* PyObjectCallMethod0.proto */
+static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name);
+
+/* UnpackTupleError.proto */
+static void __Pyx_UnpackTupleError(PyObject *, Py_ssize_t index);
+
+/* UnpackTuple2.proto */
+#define __Pyx_unpack_tuple2(tuple, value1, value2, is_tuple, has_known_size, decref_tuple)\
+    (likely(is_tuple || PyTuple_Check(tuple)) ?\
+        (likely(has_known_size || PyTuple_GET_SIZE(tuple) == 2) ?\
+            __Pyx_unpack_tuple2_exact(tuple, value1, value2, decref_tuple) :\
+            (__Pyx_UnpackTupleError(tuple, 2), -1)) :\
+        __Pyx_unpack_tuple2_generic(tuple, value1, value2, has_known_size, decref_tuple))
+static CYTHON_INLINE int __Pyx_unpack_tuple2_exact(
+    PyObject* tuple, PyObject** value1, PyObject** value2, int decref_tuple);
+static int __Pyx_unpack_tuple2_generic(
+    PyObject* tuple, PyObject** value1, PyObject** value2, int has_known_size, int decref_tuple);
+
+/* dict_iter.proto */
+static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* dict, int is_dict, PyObject* method_name,
+                                                   Py_ssize_t* p_orig_length, int* p_is_dict);
+static CYTHON_INLINE int __Pyx_dict_iter_next(PyObject* dict_or_iter, Py_ssize_t orig_length, Py_ssize_t* ppos,
+                                              PyObject** pkey, PyObject** pvalue, PyObject** pitem, int is_dict);
+
+/* dict_getitem_default.proto */
+static PyObject* __Pyx_PyDict_GetItemDefault(PyObject* d, PyObject* key, PyObject* default_value);
+
+/* 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));
+
+/* ReturnWithStopIteration.proto */
+#define __Pyx_ReturnWithStopIteration(value)\
+    if (value == Py_None) PyErr_SetNone(PyExc_StopIteration); else __Pyx__ReturnWithStopIteration(value)
+static void __Pyx__ReturnWithStopIteration(PyObject* value);
+
+/* AssertionsEnabled.proto */
+#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag)
+  #define __Pyx_init_assertions_enabled()  (0)
+  #define __pyx_assertions_enabled()  (1)
+#elif CYTHON_COMPILING_IN_LIMITED_API  ||  (CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030C0000)
+  static int __pyx_assertions_enabled_flag;
+  #define __pyx_assertions_enabled() (__pyx_assertions_enabled_flag)
+  static int __Pyx_init_assertions_enabled(void) {
+    PyObject *builtins, *debug, *debug_str;
+    int flag;
+    builtins = PyEval_GetBuiltins();
+    if (!builtins) goto bad;
+    debug_str = PyUnicode_FromStringAndSize("__debug__", 9);
+    if (!debug_str) goto bad;
+    debug = PyObject_GetItem(builtins, debug_str);
+    Py_DECREF(debug_str);
+    if (!debug) goto bad;
+    flag = PyObject_IsTrue(debug);
+    Py_DECREF(debug);
+    if (flag == -1) goto bad;
+    __pyx_assertions_enabled_flag = flag;
+    return 0;
+  bad:
+    __pyx_assertions_enabled_flag = 1;
+    return -1;
+  }
+#else
+  #define __Pyx_init_assertions_enabled()  (0)
+  #define __pyx_assertions_enabled()  (!Py_OptimizeFlag)
+#endif
+
+/* ImportFrom.proto */
+static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name);
+
+/* 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
+
+/* StrEquals.proto */
+#if PY_MAJOR_VERSION >= 3
+#define __Pyx_PyString_Equals __Pyx_PyUnicode_Equals
+#else
+#define __Pyx_PyString_Equals __Pyx_PyBytes_Equals
+#endif
+
+/* AsyncIter.proto */
+static CYTHON_INLINE PyObject *__Pyx_Coroutine_GetAsyncIter(PyObject *o);
+static CYTHON_INLINE PyObject *__Pyx_Coroutine_AsyncIterNext(PyObject *o);
+
+/* ListExtend.proto */
+static CYTHON_INLINE int __Pyx_PyList_Extend(PyObject* L, PyObject* v) {
+#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030d0000
+    PyObject* none = _PyList_Extend((PyListObject*)L, v);
+    if (unlikely(!none))
+        return -1;
+    Py_DECREF(none);
+    return 0;
+#else
+    return PyList_SetSlice(L, PY_SSIZE_T_MAX, PY_SSIZE_T_MAX, v);
+#endif
+}
+
+/* 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);
+
+/* 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_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
+
+/* 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
+
+/* ValidateExternBase.proto */
+static int __Pyx_validate_extern_base(PyTypeObject *base);
+
+/* 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
+
+/* PatchInspect.proto */
+static PyObject* __Pyx_patch_inspect(PyObject* module);
+
+/* PatchAsyncIO.proto */
+static PyObject* __Pyx_patch_asyncio(PyObject* module);
+
+/* UnicodeConcatInPlace.proto */
+# if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
+    #if CYTHON_REFNANNY
+        #define __Pyx_PyUnicode_ConcatInPlace(left, right) __Pyx_PyUnicode_ConcatInPlaceImpl(&left, right, __pyx_refnanny)
+    #else
+        #define __Pyx_PyUnicode_ConcatInPlace(left, right) __Pyx_PyUnicode_ConcatInPlaceImpl(&left, right)
+    #endif
+    static CYTHON_INLINE PyObject *__Pyx_PyUnicode_ConcatInPlaceImpl(PyObject **p_left, PyObject *right
+        #if CYTHON_REFNANNY
+        , void* __pyx_refnanny
+        #endif
+    );
+#else
+#define __Pyx_PyUnicode_ConcatInPlace __Pyx_PyUnicode_Concat
+#endif
+#define __Pyx_PyUnicode_ConcatInPlaceSafe(left, right) ((unlikely((left) == Py_None) || unlikely((right) == Py_None)) ?\
+    PyNumber_InPlaceAdd(left, right) : __Pyx_PyUnicode_ConcatInPlace(left, right))
+
+/* StrConcatInPlace.proto */
+#if PY_MAJOR_VERSION >= 3
+    #define __Pyx_PyStr_Concat __Pyx_PyUnicode_Concat
+    #define __Pyx_PyStr_ConcatInPlace __Pyx_PyUnicode_ConcatInPlace
+#else
+    #define __Pyx_PyStr_Concat PyNumber_Add
+    #define __Pyx_PyStr_ConcatInPlace PyNumber_InPlaceAdd
+#endif
+#define __Pyx_PyStr_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\
+    PyNumber_Add(a, b) : __Pyx_PyStr_Concat(a, b))
+#define __Pyx_PyStr_ConcatInPlaceSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\
+    PyNumber_InPlaceAdd(a, b) : __Pyx_PyStr_ConcatInPlace(a, b))
+
+/* SetNameInClass.proto */
+#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && PY_VERSION_HEX < 0x030d0000
+#define __Pyx_SetNameInClass(ns, name, value)\
+    (likely(PyDict_CheckExact(ns)) ? _PyDict_SetItem_KnownHash(ns, name, value, ((PyASCIIObject *) name)->hash) : PyObject_SetItem(ns, name, value))
+#elif CYTHON_COMPILING_IN_CPYTHON
+#define __Pyx_SetNameInClass(ns, name, value)\
+    (likely(PyDict_CheckExact(ns)) ? PyDict_SetItem(ns, name, value) : PyObject_SetItem(ns, name, value))
+#else
+#define __Pyx_SetNameInClass(ns, name, value)  PyObject_SetItem(ns, name, value)
+#endif
+
+/* CalculateMetaclass.proto */
+static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases);
+
+/* Py3ClassCreate.proto */
+static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, PyObject *qualname,
+                                           PyObject *mkw, PyObject *modname, PyObject *doc);
+static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases, PyObject *dict,
+                                      PyObject *mkw, int calculate_metaclass, int allow_py2_metaclass);
+
+/* Py3UpdateBases.proto */
+static PyObject* __Pyx_PEP560_update_bases(PyObject *bases);
+
+/* 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);
+
+/* None.proto */
+#include <new>
+
+/* GCCDiagnostics.proto */
+#if !defined(__INTEL_COMPILER) && defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
+#define __Pyx_HAS_GCC_DIAGNOSTIC
+#endif
+
+/* CIntToPy.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum____pyx_t_7_cython_6cygrpc_AioServerStatus(enum __pyx_t_7_cython_6cygrpc_AioServerStatus value);
+
+/* CIntFromPy.proto */
+static CYTHON_INLINE enum __pyx_t_7_cython_6cygrpc_AioServerStatus __Pyx_PyInt_As_enum____pyx_t_7_cython_6cygrpc_AioServerStatus(PyObject *);
+
+/* CIntFromPy.proto */
+static CYTHON_INLINE grpc_status_code __Pyx_PyInt_As_grpc_status_code(PyObject *);
+
+/* CIntToPy.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_grpc_status_code(grpc_status_code value);
+
+/* CIntFromPy.proto */
+static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *);
+
+/* CIntFromPy.proto */
+static CYTHON_INLINE grpc_connectivity_state __Pyx_PyInt_As_grpc_connectivity_state(PyObject *);
+
+/* CIntToPy.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_grpc_local_connect_type(grpc_local_connect_type value);
+
+/* CIntFromPy.proto */
+static CYTHON_INLINE grpc_local_connect_type __Pyx_PyInt_As_grpc_local_connect_type(PyObject *);
+
+/* CIntFromPy.proto */
+static CYTHON_INLINE grpc_completion_type __Pyx_PyInt_As_grpc_completion_type(PyObject *);
+
+/* CIntToPy.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value);
+
+/* CIntToPy.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_grpc_connectivity_state(grpc_connectivity_state value);
+
+/* CIntToPy.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_grpc_call_error(grpc_call_error value);
+
+/* CIntToPy.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_grpc_completion_type(grpc_completion_type value);
+
+/* CIntToPy.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_grpc_op_type(grpc_op_type value);
+
+/* CIntToPy.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_grpc_compression_algorithm(grpc_compression_algorithm value);
+
+/* CIntToPy.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_grpc_compression_level(grpc_compression_level value);
+
+/* CIntFromPy.proto */
+static CYTHON_INLINE grpc_compression_algorithm __Pyx_PyInt_As_grpc_compression_algorithm(PyObject *);
+
+/* CIntFromPy.proto */
+static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *);
+
+/* CIntToPy.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value);
+
+/* CIntFromPy.proto */
+static CYTHON_INLINE grpc_call_error __Pyx_PyInt_As_grpc_call_error(PyObject *);
+
+/* CIntFromPy.proto */
+static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *);
+
+/* CIntToPy.proto */
+static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_int(unsigned int value);
+
+/* CIntFromPy.proto */
+static CYTHON_INLINE unsigned int __Pyx_PyInt_As_unsigned_int(PyObject *);
+
+/* Generator.proto */
+#define __Pyx_Generator_USED
+#define __Pyx_Generator_CheckExact(obj) __Pyx_IS_TYPE(obj, __pyx_GeneratorType)
+#define __Pyx_Generator_New(body, code, closure, name, qualname, module_name)\
+    __Pyx__Coroutine_New(__pyx_GeneratorType, body, code, closure, name, qualname, module_name)
+static PyObject *__Pyx_Generator_Next(PyObject *self);
+static int __pyx_Generator_init(PyObject *module);
+
+/* AsyncGenerator.proto */
+#define __Pyx_AsyncGen_USED
+typedef struct {
+    __pyx_CoroutineObject coro;
+    PyObject *ag_finalizer;
+    int ag_hooks_inited;
+    int ag_closed;
+    int ag_running_async;
+} __pyx_PyAsyncGenObject;
+static PyTypeObject *__pyx__PyAsyncGenWrappedValueType = 0;
+static PyTypeObject *__pyx__PyAsyncGenASendType = 0;
+static PyTypeObject *__pyx__PyAsyncGenAThrowType = 0;
+static PyTypeObject *__pyx_AsyncGenType = 0;
+#define __Pyx_AsyncGen_CheckExact(obj) __Pyx_IS_TYPE(obj, __pyx_AsyncGenType)
+#define __pyx_PyAsyncGenASend_CheckExact(o)\
+                    __Pyx_IS_TYPE(o, __pyx__PyAsyncGenASendType)
+#define __pyx_PyAsyncGenAThrow_CheckExact(o)\
+                    __Pyx_IS_TYPE(o, __pyx__PyAsyncGenAThrowType)
+static PyObject *__Pyx_async_gen_anext(PyObject *o);
+static CYTHON_INLINE PyObject *__Pyx_async_gen_asend_iternext(PyObject *o);
+static PyObject *__Pyx_async_gen_asend_send(PyObject *o, PyObject *arg);
+static PyObject *__Pyx_async_gen_asend_close(PyObject *o, PyObject *args);
+static PyObject *__Pyx_async_gen_athrow_close(PyObject *o, PyObject *args);
+static PyObject *__Pyx__PyAsyncGenValueWrapperNew(PyObject *val);
+static __pyx_CoroutineObject *__Pyx_AsyncGen_New(
+            __pyx_coroutine_body_t body, PyObject *code, PyObject *closure,
+            PyObject *name, PyObject *qualname, PyObject *module_name) {
+    __pyx_PyAsyncGenObject *gen = PyObject_GC_New(__pyx_PyAsyncGenObject, __pyx_AsyncGenType);
+    if (unlikely(!gen))
+        return NULL;
+    gen->ag_finalizer = NULL;
+    gen->ag_closed = 0;
+    gen->ag_hooks_inited = 0;
+    gen->ag_running_async = 0;
+    return __Pyx__Coroutine_NewInit((__pyx_CoroutineObject*)gen, body, code, closure, name, qualname, module_name);
+}
+static int __pyx_AsyncGen_init(PyObject *module);
+static void __Pyx_PyAsyncGen_Fini(void);
+
+/* 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);
+
+/* VoidPtrExport.proto */
+static int __Pyx_ExportVoidPtr(PyObject *name, void *p, const char *sig);
+
+/* FunctionExport.proto */
+static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig);
+
+/* 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 void __pyx_f_7_cython_6cygrpc_11_ChannelArg_c(struct __pyx_obj_7_cython_6cygrpc__ChannelArg *__pyx_v_self, PyObject *__pyx_v_argument, PyObject *__pyx_v_references); /* proto*/
+static grpc_channel_args *__pyx_f_7_cython_6cygrpc_12_ChannelArgs_c_args(struct __pyx_obj_7_cython_6cygrpc__ChannelArgs *__pyx_v_self); /* proto*/
+static void __pyx_f_7_cython_6cygrpc_10_CallState_maybe_delete_call_tracer(struct __pyx_obj_7_cython_6cygrpc__CallState *__pyx_v_self); /* proto*/
+static void __pyx_f_7_cython_6cygrpc_10_CallState_maybe_set_client_call_tracer_on_call(struct __pyx_obj_7_cython_6cygrpc__CallState *__pyx_v_self, PyObject *__pyx_v_method_name, PyObject *__pyx_v_target); /* proto*/
+static grpc_call_credentials *__pyx_f_7_cython_6cygrpc_15CallCredentials_c(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_CallCredentials *__pyx_v_self); /* proto*/
+static grpc_call_credentials *__pyx_f_7_cython_6cygrpc_29MetadataPluginCallCredentials_c(struct __pyx_obj_7_cython_6cygrpc_MetadataPluginCallCredentials *__pyx_v_self); /* proto*/
+static grpc_call_credentials *__pyx_f_7_cython_6cygrpc_24CompositeCallCredentials_c(struct __pyx_obj_7_cython_6cygrpc_CompositeCallCredentials *__pyx_v_self); /* proto*/
+static grpc_channel_credentials *__pyx_f_7_cython_6cygrpc_18ChannelCredentials_c(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_ChannelCredentials *__pyx_v_self); /* proto*/
+static grpc_channel_credentials *__pyx_f_7_cython_6cygrpc_21SSLChannelCredentials_c(struct __pyx_obj_7_cython_6cygrpc_SSLChannelCredentials *__pyx_v_self); /* proto*/
+static grpc_channel_credentials *__pyx_f_7_cython_6cygrpc_27CompositeChannelCredentials_c(struct __pyx_obj_7_cython_6cygrpc_CompositeChannelCredentials *__pyx_v_self); /* proto*/
+static grpc_channel_credentials *__pyx_f_7_cython_6cygrpc_21XDSChannelCredentials_c(struct __pyx_obj_7_cython_6cygrpc_XDSChannelCredentials *__pyx_v_self); /* proto*/
+static grpc_channel_credentials *__pyx_f_7_cython_6cygrpc_23LocalChannelCredentials_c(struct __pyx_obj_7_cython_6cygrpc_LocalChannelCredentials *__pyx_v_self); /* proto*/
+static grpc_channel_credentials *__pyx_f_7_cython_6cygrpc_26InsecureChannelCredentials_c(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_InsecureChannelCredentials *__pyx_v_self); /* proto*/
+static grpc_channel_credentials *__pyx_f_7_cython_6cygrpc_22ALTSChannelCredentials_c(struct __pyx_obj_7_cython_6cygrpc_ALTSChannelCredentials *__pyx_v_self); /* proto*/
+static grpc_channel_credentials *__pyx_f_7_cython_6cygrpc_31ComputeEngineChannelCredentials_c(struct __pyx_obj_7_cython_6cygrpc_ComputeEngineChannelCredentials *__pyx_v_self); /* proto*/
+static PyObject *__pyx_f_7_cython_6cygrpc_15CompletionQueue__interpret_event(struct __pyx_obj_7_cython_6cygrpc_CompletionQueue *__pyx_v_self, grpc_event __pyx_v_c_event); /* proto*/
+static void __pyx_f_7_cython_6cygrpc_9Operation_c(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_Operation *__pyx_v_self); /* proto*/
+static void __pyx_f_7_cython_6cygrpc_9Operation_un_c(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_Operation *__pyx_v_self); /* proto*/
+static void __pyx_f_7_cython_6cygrpc_28SendInitialMetadataOperation_c(struct __pyx_obj_7_cython_6cygrpc_SendInitialMetadataOperation *__pyx_v_self); /* proto*/
+static void __pyx_f_7_cython_6cygrpc_28SendInitialMetadataOperation_un_c(struct __pyx_obj_7_cython_6cygrpc_SendInitialMetadataOperation *__pyx_v_self); /* proto*/
+static void __pyx_f_7_cython_6cygrpc_20SendMessageOperation_c(struct __pyx_obj_7_cython_6cygrpc_SendMessageOperation *__pyx_v_self); /* proto*/
+static void __pyx_f_7_cython_6cygrpc_20SendMessageOperation_un_c(struct __pyx_obj_7_cython_6cygrpc_SendMessageOperation *__pyx_v_self); /* proto*/
+static void __pyx_f_7_cython_6cygrpc_28SendCloseFromClientOperation_c(struct __pyx_obj_7_cython_6cygrpc_SendCloseFromClientOperation *__pyx_v_self); /* proto*/
+static void __pyx_f_7_cython_6cygrpc_28SendCloseFromClientOperation_un_c(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_SendCloseFromClientOperation *__pyx_v_self); /* proto*/
+static void __pyx_f_7_cython_6cygrpc_29SendStatusFromServerOperation_c(struct __pyx_obj_7_cython_6cygrpc_SendStatusFromServerOperation *__pyx_v_self); /* proto*/
+static void __pyx_f_7_cython_6cygrpc_29SendStatusFromServerOperation_un_c(struct __pyx_obj_7_cython_6cygrpc_SendStatusFromServerOperation *__pyx_v_self); /* proto*/
+static void __pyx_f_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_c(struct __pyx_obj_7_cython_6cygrpc_ReceiveInitialMetadataOperation *__pyx_v_self); /* proto*/
+static void __pyx_f_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_un_c(struct __pyx_obj_7_cython_6cygrpc_ReceiveInitialMetadataOperation *__pyx_v_self); /* proto*/
+static void __pyx_f_7_cython_6cygrpc_23ReceiveMessageOperation_c(struct __pyx_obj_7_cython_6cygrpc_ReceiveMessageOperation *__pyx_v_self); /* proto*/
+static void __pyx_f_7_cython_6cygrpc_23ReceiveMessageOperation_un_c(struct __pyx_obj_7_cython_6cygrpc_ReceiveMessageOperation *__pyx_v_self); /* proto*/
+static void __pyx_f_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_c(struct __pyx_obj_7_cython_6cygrpc_ReceiveStatusOnClientOperation *__pyx_v_self); /* proto*/
+static void __pyx_f_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_un_c(struct __pyx_obj_7_cython_6cygrpc_ReceiveStatusOnClientOperation *__pyx_v_self); /* proto*/
+static void __pyx_f_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_c(struct __pyx_obj_7_cython_6cygrpc_ReceiveCloseOnServerOperation *__pyx_v_self); /* proto*/
+static void __pyx_f_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_un_c(struct __pyx_obj_7_cython_6cygrpc_ReceiveCloseOnServerOperation *__pyx_v_self); /* proto*/
+static PyObject *__pyx_f_7_cython_6cygrpc_6Server__c_shutdown(struct __pyx_obj_7_cython_6cygrpc_Server *__pyx_v_self, struct __pyx_obj_7_cython_6cygrpc_CompletionQueue *__pyx_v_queue, PyObject *__pyx_v_tag); /* proto*/
+static PyObject *__pyx_f_7_cython_6cygrpc_6Server_notify_shutdown_complete(struct __pyx_obj_7_cython_6cygrpc_Server *__pyx_v_self); /* proto*/
+static struct __pyx_obj_7_cython_6cygrpc_BaseEvent *__pyx_f_7_cython_6cygrpc_4_Tag_event(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__Tag *__pyx_v_self, CYTHON_UNUSED grpc_event __pyx_v_c_event); /* proto*/
+struct __pyx_obj_7_cython_6cygrpc_ConnectivityEvent *__pyx_f_7_cython_6cygrpc_16_ConnectivityTag_event(struct __pyx_obj_7_cython_6cygrpc__ConnectivityTag *__pyx_v_self, grpc_event __pyx_v_c_event); /* proto*/
+struct __pyx_obj_7_cython_6cygrpc_ConnectivityEvent *__pyx_f_7_cython_6cygrpc_16_ConnectivityTag_event__pyx_wrap_1(struct __pyx_obj_7_cython_6cygrpc__ConnectivityTag *__pyx_v_self, grpc_event __pyx_v_c_event); /* proto*/
+static void __pyx_f_7_cython_6cygrpc_15_RequestCallTag_prepare(struct __pyx_obj_7_cython_6cygrpc__RequestCallTag *__pyx_v_self); /* proto*/
+struct __pyx_obj_7_cython_6cygrpc_RequestCallEvent *__pyx_f_7_cython_6cygrpc_15_RequestCallTag_event(struct __pyx_obj_7_cython_6cygrpc__RequestCallTag *__pyx_v_self, grpc_event __pyx_v_c_event); /* proto*/
+struct __pyx_obj_7_cython_6cygrpc_RequestCallEvent *__pyx_f_7_cython_6cygrpc_15_RequestCallTag_event__pyx_wrap_1(struct __pyx_obj_7_cython_6cygrpc__RequestCallTag *__pyx_v_self, grpc_event __pyx_v_c_event); /* proto*/
+static void __pyx_f_7_cython_6cygrpc_18_BatchOperationTag_prepare(struct __pyx_obj_7_cython_6cygrpc__BatchOperationTag *__pyx_v_self); /* proto*/
+struct __pyx_obj_7_cython_6cygrpc_BatchOperationEvent *__pyx_f_7_cython_6cygrpc_18_BatchOperationTag_event(struct __pyx_obj_7_cython_6cygrpc__BatchOperationTag *__pyx_v_self, grpc_event __pyx_v_c_event); /* proto*/
+struct __pyx_obj_7_cython_6cygrpc_BatchOperationEvent *__pyx_f_7_cython_6cygrpc_18_BatchOperationTag_event__pyx_wrap_1(struct __pyx_obj_7_cython_6cygrpc__BatchOperationTag *__pyx_v_self, grpc_event __pyx_v_c_event); /* proto*/
+struct __pyx_obj_7_cython_6cygrpc_ServerShutdownEvent *__pyx_f_7_cython_6cygrpc_18_ServerShutdownTag_event(struct __pyx_obj_7_cython_6cygrpc__ServerShutdownTag *__pyx_v_self, grpc_event __pyx_v_c_event); /* proto*/
+struct __pyx_obj_7_cython_6cygrpc_ServerShutdownEvent *__pyx_f_7_cython_6cygrpc_18_ServerShutdownTag_event__pyx_wrap_1(struct __pyx_obj_7_cython_6cygrpc__ServerShutdownTag *__pyx_v_self, grpc_event __pyx_v_c_event); /* proto*/
+static grpc_status_code __pyx_f_7_cython_6cygrpc_12AioRpcStatus_code(struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/
+static PyObject *__pyx_f_7_cython_6cygrpc_12AioRpcStatus_details(struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/
+static PyObject *__pyx_f_7_cython_6cygrpc_12AioRpcStatus_trailing_metadata(struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/
+static PyObject *__pyx_f_7_cython_6cygrpc_12AioRpcStatus_debug_error_string(struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/
+static grpc_status_code __pyx_f_7_cython_6cygrpc_12AioRpcStatus_c_code(struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *__pyx_v_self); /* proto*/
+static grpc_completion_queue *__pyx_f_7_cython_6cygrpc_19BaseCompletionQueue_c_ptr(struct __pyx_obj_7_cython_6cygrpc_BaseCompletionQueue *__pyx_v_self); /* proto*/
+static void __pyx_f_7_cython_6cygrpc_21PollerCompletionQueue__poll(struct __pyx_obj_7_cython_6cygrpc_PollerCompletionQueue *__pyx_v_self); /* proto*/
+static PyObject *__pyx_f_7_cython_6cygrpc_21PollerCompletionQueue_shutdown(struct __pyx_obj_7_cython_6cygrpc_PollerCompletionQueue *__pyx_v_self); /* proto*/
+static PyObject *__pyx_f_7_cython_6cygrpc_22CallbackFailureHandler_handle(struct __pyx_obj_7_cython_6cygrpc_CallbackFailureHandler *__pyx_v_self, PyObject *__pyx_v_future); /* proto*/
+static void __pyx_f_7_cython_6cygrpc_15CallbackWrapper_functor_run(grpc_completion_queue_functor *__pyx_v_functor, int __pyx_v_success); /* proto*/
+static grpc_completion_queue_functor *__pyx_f_7_cython_6cygrpc_15CallbackWrapper_c_functor(struct __pyx_obj_7_cython_6cygrpc_CallbackWrapper *__pyx_v_self); /* proto*/
+static void __pyx_f_7_cython_6cygrpc_8_AioCall__create_grpc_call(struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self, PyObject *__pyx_v_deadline, PyObject *__pyx_v_method, struct __pyx_obj_7_cython_6cygrpc_CallCredentials *__pyx_v_credentials); /* proto*/
+static void __pyx_f_7_cython_6cygrpc_8_AioCall__set_status(struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self, struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *__pyx_v_status); /* proto*/
+static void __pyx_f_7_cython_6cygrpc_8_AioCall__set_initial_metadata(struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self, PyObject *__pyx_v_initial_metadata); /* proto*/
+static PyObject *__pyx_f_7_cython_6cygrpc_8RPCState_method(struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_self); /* proto*/
+static PyObject *__pyx_f_7_cython_6cygrpc_8RPCState_invocation_metadata(struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_self); /* proto*/
+static void __pyx_f_7_cython_6cygrpc_8RPCState_raise_for_termination(struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_self); /* proto*/
+static int __pyx_f_7_cython_6cygrpc_8RPCState_get_write_flag(struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_self); /* proto*/
+static struct __pyx_obj_7_cython_6cygrpc_Operation *__pyx_f_7_cython_6cygrpc_8RPCState_create_send_initial_metadata_op_if_not_sent(struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_self); /* proto*/
+static PyObject *__pyx_f_7_cython_6cygrpc_9AioServer_thread_pool(struct __pyx_obj_7_cython_6cygrpc_AioServer *__pyx_v_self); /* proto*/
+
+/* Module declarations from "cpython.version" */
+
+/* Module declarations from "__builtin__" */
+
+/* Module declarations from "cpython.type" */
+
+/* Module declarations from "libc.string" */
+
+/* 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 "libcpp.string" */
+
+/* Module declarations from "libc.time" */
+
+/* Module declarations from "libc" */
+
+/* Module declarations from "libcpp.cast" */
+
+/* Module declarations from "posix" */
+
+/* Module declarations from "posix.types" */
+
+/* Module declarations from "posix.unistd" */
+
+/* Module declarations from "_cython.cygrpc" */
+static int __pyx_v_7_cython_6cygrpc_g_interrupt_check_period_ms;
+static grpc_arg_pointer_vtable __pyx_v_7_cython_6cygrpc_default_vtable;
+static char const *__pyx_v_7_cython_6cygrpc_CLIENT_CALL_TRACER;
+static char const *__pyx_v_7_cython_6cygrpc_SERVER_CALL_TRACER_FACTORY;
+static std::queue<void *>  __pyx_v_7_cython_6cygrpc_g_greenlets_to_run;
+static std::condition_variable __pyx_v_7_cython_6cygrpc_g_greenlets_cv;
+static std::mutex __pyx_v_7_cython_6cygrpc_g_greenlets_mu;
+static int __pyx_v_7_cython_6cygrpc_g_shutdown_greenlets_to_run_queue;
+static int __pyx_v_7_cython_6cygrpc_g_channel_count;
+static gpr_timespec __pyx_v_7_cython_6cygrpc__GPR_INF_FUTURE;
+static float __pyx_v_7_cython_6cygrpc__POLL_AWAKE_INTERVAL_S;
+static int __pyx_v_7_cython_6cygrpc__has_fd_monitoring;
+static struct __pyx_obj_7_cython_6cygrpc_CallbackFailureHandler *__pyx_v_7_cython_6cygrpc_CQ_SHUTDOWN_FAILURE_HANDLER = 0;
+static PyObject *__pyx_v_7_cython_6cygrpc__GRPC_ASYNCIO_ENGINE = 0;
+static struct __pyx_obj_7_cython_6cygrpc__AioState *__pyx_v_7_cython_6cygrpc__global_aio_state = 0;
+static struct __pyx_obj_7_cython_6cygrpc_CallbackFailureHandler *__pyx_v_7_cython_6cygrpc__WATCH_CONNECTIVITY_FAILURE_HANDLER = 0;
+static int __pyx_v_7_cython_6cygrpc__EMPTY_FLAG;
+static PyObject *__pyx_v_7_cython_6cygrpc__RPC_FINISHED_DETAILS = 0;
+static PyObject *__pyx_v_7_cython_6cygrpc__SERVER_STOPPED_DETAILS = 0;
+static struct __pyx_obj_7_cython_6cygrpc_CallbackFailureHandler *__pyx_v_7_cython_6cygrpc_REQUEST_CALL_FAILURE_HANDLER = 0;
+static struct __pyx_obj_7_cython_6cygrpc_CallbackFailureHandler *__pyx_v_7_cython_6cygrpc_SERVER_SHUTDOWN_FAILURE_HANDLER = 0;
+static PyObject *__pyx_f_7_cython_6cygrpc__check_call_error_no_metadata(PyObject *); /*proto*/
+static PyObject *__pyx_f_7_cython_6cygrpc__check_and_raise_call_error_no_metadata(PyObject *); /*proto*/
+static int __pyx_f_7_cython_6cygrpc__get_metadata(void *, grpc_auth_metadata_context, grpc_credentials_plugin_metadata_cb, void *, grpc_metadata *, size_t *, grpc_status_code *, char const **); /*proto*/
+static void __pyx_f_7_cython_6cygrpc__destroy(void *); /*proto*/
+static grpc_call_credentials *__pyx_f_7_cython_6cygrpc__composition(PyObject *); /*proto*/
+static grpc_event __pyx_f_7_cython_6cygrpc__next(grpc_completion_queue *, PyObject *); /*proto*/
+static PyObject *__pyx_f_7_cython_6cygrpc__interpret_event(grpc_event); /*proto*/
+static void __pyx_f_7_cython_6cygrpc__store_c_metadata(PyObject *, grpc_metadata **, size_t *); /*proto*/
+static void __pyx_f_7_cython_6cygrpc__release_c_metadata(grpc_metadata *, int); /*proto*/
+static PyObject *__pyx_f_7_cython_6cygrpc__metadatum(grpc_slice, grpc_slice); /*proto*/
+static PyObject *__pyx_f_7_cython_6cygrpc__metadata(grpc_metadata_array *); /*proto*/
+static PyObject *__pyx_f_7_cython_6cygrpc__slice_bytes(grpc_slice); /*proto*/
+static grpc_slice __pyx_f_7_cython_6cygrpc__slice_from_bytes(PyObject *); /*proto*/
+static grpc_ssl_roots_override_result __pyx_f_7_cython_6cygrpc_ssl_roots_override_callback(char **); /*proto*/
+static gpr_timespec __pyx_f_7_cython_6cygrpc__timespec_from_time(PyObject *); /*proto*/
+static double __pyx_f_7_cython_6cygrpc__time_from_timespec(gpr_timespec); /*proto*/
+static void *__pyx_f_7_cython_6cygrpc__copy_pointer(void *); /*proto*/
+static void __pyx_f_7_cython_6cygrpc__destroy_pointer(void *); /*proto*/
+static int __pyx_f_7_cython_6cygrpc__compare_pointer(void *, void *); /*proto*/
+static PyObject *__pyx_f_7_cython_6cygrpc__custom_op_on_c_call(int, grpc_call *); /*proto*/
+static void __pyx_f_7_cython_6cygrpc_gevent_increment_channel_count(int __pyx_skip_dispatch); /*proto*/
+static void __pyx_f_7_cython_6cygrpc_gevent_decrement_channel_count(int __pyx_skip_dispatch); /*proto*/
+static void __pyx_f_7_cython_6cygrpc___prefork(void); /*proto*/
+static void __pyx_f_7_cython_6cygrpc___postfork_parent(void); /*proto*/
+static void __pyx_f_7_cython_6cygrpc___postfork_child(void); /*proto*/
+static void __pyx_f_7_cython_6cygrpc__unified_socket_write(int); /*proto*/
+static grpc_completion_queue *__pyx_f_7_cython_6cygrpc_global_completion_queue(void); /*proto*/
+static PyObject *__pyx_f_7_cython_6cygrpc_init_grpc_aio(int __pyx_skip_dispatch); /*proto*/
+static PyObject *__pyx_f_7_cython_6cygrpc_shutdown_grpc_aio(int __pyx_skip_dispatch); /*proto*/
+static PyObject *__pyx_f_7_cython_6cygrpc_str_to_bytes(PyObject *); /*proto*/
+static PyObject *__pyx_f_7_cython_6cygrpc__encode(PyObject *); /*proto*/
+static PyObject *__pyx_f_7_cython_6cygrpc__decode(PyObject *); /*proto*/
+static PyObject *__pyx_f_7_cython_6cygrpc__call_error_metadata(PyObject *); /*proto*/
+static PyObject *__pyx_f_7_cython_6cygrpc__call_error_no_metadata(PyObject *); /*proto*/
+static PyObject *__pyx_f_7_cython_6cygrpc__call_error(PyObject *, PyObject *); /*proto*/
+static void __pyx_f_7_cython_6cygrpc__raise_call_error_no_metadata(PyObject *); /*proto*/
+static void __pyx_f_7_cython_6cygrpc__raise_call_error(PyObject *, PyObject *); /*proto*/
+static PyObject *__pyx_f_7_cython_6cygrpc__destroy_c_completion_queue(grpc_completion_queue *); /*proto*/
+static PyObject *__pyx_f_7_cython_6cygrpc__operate(grpc_call *, PyObject *, PyObject *); /*proto*/
+static PyObject *__pyx_f_7_cython_6cygrpc__operate_from_integrated_call(struct __pyx_obj_7_cython_6cygrpc__ChannelState *, struct __pyx_obj_7_cython_6cygrpc__CallState *, PyObject *, PyObject *); /*proto*/
+static PyObject *__pyx_f_7_cython_6cygrpc__operate_from_segregated_call(struct __pyx_obj_7_cython_6cygrpc__ChannelState *, struct __pyx_obj_7_cython_6cygrpc__CallState *, PyObject *, PyObject *); /*proto*/
+static PyObject *__pyx_f_7_cython_6cygrpc__cancel(struct __pyx_obj_7_cython_6cygrpc__ChannelState *, struct __pyx_obj_7_cython_6cygrpc__CallState *, grpc_status_code, PyObject *); /*proto*/
+static PyObject *__pyx_f_7_cython_6cygrpc__next_call_event(struct __pyx_obj_7_cython_6cygrpc__ChannelState *, grpc_completion_queue *, PyObject *, PyObject *, PyObject *); /*proto*/
+static void __pyx_f_7_cython_6cygrpc__call(struct __pyx_obj_7_cython_6cygrpc__ChannelState *, struct __pyx_obj_7_cython_6cygrpc__CallState *, grpc_completion_queue *, PyObject *, int, PyObject *, PyObject *, PyObject *, struct __pyx_obj_7_cython_6cygrpc_CallCredentials *, PyObject *, PyObject *, PyObject *, PyObject *); /*proto*/
+static void __pyx_f_7_cython_6cygrpc__process_integrated_call_tag(struct __pyx_obj_7_cython_6cygrpc__ChannelState *, struct __pyx_obj_7_cython_6cygrpc__BatchOperationTag *); /*proto*/
+static struct __pyx_obj_7_cython_6cygrpc_IntegratedCall *__pyx_f_7_cython_6cygrpc__integrated_call(struct __pyx_obj_7_cython_6cygrpc__ChannelState *, int, PyObject *, PyObject *, PyObject *, PyObject *, struct __pyx_obj_7_cython_6cygrpc_CallCredentials *, PyObject *, PyObject *, PyObject *); /*proto*/
+static PyObject *__pyx_f_7_cython_6cygrpc__process_segregated_call_tag(struct __pyx_obj_7_cython_6cygrpc__ChannelState *, struct __pyx_obj_7_cython_6cygrpc__CallState *, grpc_completion_queue *, struct __pyx_obj_7_cython_6cygrpc__BatchOperationTag *); /*proto*/
+static struct __pyx_obj_7_cython_6cygrpc_SegregatedCall *__pyx_f_7_cython_6cygrpc__segregated_call(struct __pyx_obj_7_cython_6cygrpc__ChannelState *, int, PyObject *, PyObject *, PyObject *, PyObject *, struct __pyx_obj_7_cython_6cygrpc_CallCredentials *, PyObject *, PyObject *, PyObject *); /*proto*/
+static PyObject *__pyx_f_7_cython_6cygrpc__watch_connectivity_state(struct __pyx_obj_7_cython_6cygrpc__ChannelState *, grpc_connectivity_state, PyObject *); /*proto*/
+static PyObject *__pyx_f_7_cython_6cygrpc__close(struct __pyx_obj_7_cython_6cygrpc_Channel *, grpc_status_code, PyObject *, PyObject *); /*proto*/
+static PyObject *__pyx_f_7_cython_6cygrpc__calls_drained(struct __pyx_obj_7_cython_6cygrpc__ChannelState *); /*proto*/
+static char const *__pyx_f_7_cython_6cygrpc__get_c_pem_root_certs(PyObject *); /*proto*/
+static grpc_ssl_pem_key_cert_pair *__pyx_f_7_cython_6cygrpc__create_c_ssl_pem_key_cert_pairs(PyObject *); /*proto*/
+static grpc_ssl_certificate_config_reload_status __pyx_f_7_cython_6cygrpc__server_cert_config_fetcher_wrapper(void *, grpc_ssl_server_certificate_config **); /*proto*/
+static PyObject *__pyx_f_7_cython_6cygrpc__internal_latent_event(struct __pyx_obj_7_cython_6cygrpc__LatentEventArg *); /*proto*/
+static PyObject *__pyx_f_7_cython_6cygrpc__latent_event(grpc_completion_queue *, PyObject *); /*proto*/
+static void __pyx_f_7_cython_6cygrpc__set_call_tracer(grpc_call *, void *); /*proto*/
+static void *__pyx_f_7_cython_6cygrpc__get_call_tracer(grpc_call *); /*proto*/
+static void __pyx_f_7_cython_6cygrpc__register_server_call_tracer_factory(void *); /*proto*/
+static PyObject *__pyx_f_7_cython_6cygrpc__submit_to_greenlet_queue(PyObject *, PyObject *); /*proto*/
+static PyObject *__pyx_f_7_cython_6cygrpc_await_next_greenlet(void); /*proto*/
+static grpc_status_code __pyx_f_7_cython_6cygrpc_get_status_code(PyObject *); /*proto*/
+static PyObject *__pyx_f_7_cython_6cygrpc_deserialize(PyObject *, PyObject *); /*proto*/
+static PyObject *__pyx_f_7_cython_6cygrpc_serialize(PyObject *, PyObject *); /*proto*/
+static PyObject *__pyx_f_7_cython_6cygrpc_prepend_send_initial_metadata_op(PyObject *, PyObject *); /*proto*/
+static PyObject *__pyx_f_7_cython_6cygrpc__default_asyncio_engine(void); /*proto*/
+static PyObject *__pyx_f_7_cython_6cygrpc__initialize_poller(void); /*proto*/
+static PyObject *__pyx_f_7_cython_6cygrpc__actual_aio_initialization(void); /*proto*/
+static PyObject *__pyx_f_7_cython_6cygrpc__actual_aio_shutdown(void); /*proto*/
+static PyObject *__pyx_f_7_cython_6cygrpc__initialize_per_loop(void); /*proto*/
+static int __pyx_f_7_cython_6cygrpc__get_send_initial_metadata_flags(PyObject *); /*proto*/
+static PyObject *__pyx_f_7_cython_6cygrpc__augment_metadata(PyObject *, PyObject *); /*proto*/
+static PyObject *__pyx_f_7_cython_6cygrpc__add_callback_handler(PyObject *, struct __pyx_obj_7_cython_6cygrpc_RPCState *); /*proto*/
+static PyObject *__pyx_f_7_cython_6cygrpc__initialize(void); /*proto*/
+static PyObject *__pyx_f_7_cython_6cygrpc___pyx_unpickle_ChannelCredentials__set_state(struct __pyx_obj_7_cython_6cygrpc_ChannelCredentials *, PyObject *); /*proto*/
+static PyObject *__pyx_f_7_cython_6cygrpc___pyx_unpickle_InsecureChannelCredentials__set_state(struct __pyx_obj_7_cython_6cygrpc_InsecureChannelCredentials *, PyObject *); /*proto*/
+static PyObject *__pyx_f_7_cython_6cygrpc___pyx_unpickle__Tag__set_state(struct __pyx_obj_7_cython_6cygrpc__Tag *, PyObject *); /*proto*/
+static PyObject *__pyx_f_7_cython_6cygrpc___pyx_unpickle_CensusContext__set_state(struct __pyx_obj_7_cython_6cygrpc_CensusContext *, PyObject *); /*proto*/
+static PyObject *__pyx_f_7_cython_6cygrpc___pyx_unpickle_AioServer__set_state(struct __pyx_obj_7_cython_6cygrpc_AioServer *, PyObject *); /*proto*/
+static PyObject *__Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg(PyObject *(*)(struct __pyx_obj_7_cython_6cygrpc__LatentEventArg *)); /*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_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_(PyObject *(*)(void)); /*proto*/
+static PyObject *__Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args(PyObject *(*)(PyObject *, PyObject *)); /*proto*/
+static PyObject *__Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_(void (*)(void)); /*proto*/
+/* #### Code section: typeinfo ### */
+/* #### Code section: before_global_var ### */
+#define __Pyx_MODULE_NAME "_cython.cygrpc"
+extern int __pyx_module_is_main__cython__cygrpc;
+int __pyx_module_is_main__cython__cygrpc = 0;
+
+/* Implementation of "_cython.cygrpc" */
+/* #### Code section: global_var ### */
+static PyObject *__pyx_builtin_ImportError;
+static PyObject *__pyx_builtin_object;
+static PyObject *__pyx_builtin_TypeError;
+static PyObject *__pyx_builtin_UnicodeDecodeError;
+static PyObject *__pyx_builtin_enumerate;
+static PyObject *__pyx_builtin_ValueError;
+static PyObject *__pyx_builtin_NotImplementedError;
+static PyObject *__pyx_builtin_range;
+static PyObject *__pyx_builtin_KeyError;
+static PyObject *__pyx_builtin_AttributeError;
+static PyObject *__pyx_builtin_RuntimeError;
+static PyObject *__pyx_builtin_DeprecationWarning;
+static PyObject *__pyx_builtin_AssertionError;
+static PyObject *__pyx_builtin_id;
+static PyObject *__pyx_builtin_KeyboardInterrupt;
+static PyObject *__pyx_builtin_SystemExit;
+/* #### Code section: string_decls ### */
+static const char __pyx_k_0[] = "0";
+static const char __pyx_k_1[] = "1";
+static const char __pyx_k_e[] = "e";
+static const char __pyx_k_t[] = "t";
+static const char __pyx_k__7[] = "";
+static const char __pyx_k_cb[] = "cb";
+static const char __pyx_k_fn[] = "fn";
+static const char __pyx_k_gc[] = "gc";
+static const char __pyx_k_id[] = "id";
+static const char __pyx_k_lk[] = "lk";
+static const char __pyx_k_ok[] = "ok";
+static const char __pyx_k_op[] = "op";
+static const char __pyx_k_os[] = "os";
+static const char __pyx_k_EOF[] = "EOF";
+static const char __pyx_k_Tag[] = "_Tag";
+static const char __pyx_k_YES[] = "YES";
+static const char __pyx_k_Yes[] = "Yes";
+static const char __pyx_k__38[] = "*";
+static const char __pyx_k__49[] = ": ";
+static const char __pyx_k__57[] = "_";
+static const char __pyx_k__58[] = ".";
+static const char __pyx_k__69[] = "<";
+static const char __pyx_k__70[] = " ";
+static const char __pyx_k__71[] = ">";
+static const char __pyx_k_add[] = "add";
+static const char __pyx_k_bin[] = "-bin";
+static const char __pyx_k_ctx[] = "ctx";
+static const char __pyx_k_doc[] = "__doc__";
+static const char __pyx_k_gen[] = "gen";
+static const char __pyx_k_get[] = "get";
+static const char __pyx_k_hub[] = "hub";
+static const char __pyx_k_int[] = "__int__";
+static const char __pyx_k_key[] = "key";
+static const char __pyx_k_len[] = "__len__";
+static const char __pyx_k_low[] = "low";
+static const char __pyx_k_new[] = "__new__";
+static const char __pyx_k_ops[] = "ops";
+static const char __pyx_k_pop[] = "pop";
+static const char __pyx_k_put[] = "put";
+static const char __pyx_k_run[] = "run";
+static const char __pyx_k_str[] = "str";
+static const char __pyx_k_sys[] = "sys";
+static const char __pyx_k_tag[] = "tag";
+static const char __pyx_k_uds[] = "uds";
+static const char __pyx_k_xds[] = "xds";
+static const char __pyx_k_yes[] = "yes";
+static const char __pyx_k_Call[] = "Call";
+static const char __pyx_k_Enum[] = "Enum";
+static const char __pyx_k_Lock[] = "Lock";
+static const char __pyx_k_None[] = "None";
+static const char __pyx_k_TRUE[] = "TRUE";
+static const char __pyx_k_True[] = "True";
+static const char __pyx_k__107[] = "?";
+static const char __pyx_k_agen[] = "agen";
+static const char __pyx_k_args[] = "args";
+static const char __pyx_k_bool[] = "__bool__";
+static const char __pyx_k_call[] = "call";
+static const char __pyx_k_code[] = "code";
+static const char __pyx_k_copy[] = "copy";
+static const char __pyx_k_coro[] = "coro";
+static const char __pyx_k_data[] = "data";
+static const char __pyx_k_dict[] = "__dict__";
+static const char __pyx_k_done[] = "done";
+static const char __pyx_k_enum[] = "enum";
+static const char __pyx_k_exit[] = "__exit__";
+static const char __pyx_k_grpc[] = "grpc";
+static const char __pyx_k_gzip[] = "gzip";
+static const char __pyx_k_high[] = "high";
+static const char __pyx_k_host[] = "host";
+static const char __pyx_k_idle[] = "idle";
+static const char __pyx_k_init[] = "__init__";
+static const char __pyx_k_item[] = "item";
+static const char __pyx_k_iter[] = "__iter__";
+static const char __pyx_k_join[] = "join";
+static const char __pyx_k_keys[] = "keys";
+static const char __pyx_k_loop[] = "loop";
+static const char __pyx_k_main[] = "__main__";
+static const char __pyx_k_name[] = "name";
+static const char __pyx_k_none[] = "none";
+static const char __pyx_k_peer[] = "peer";
+static const char __pyx_k_poll[] = "poll";
+static const char __pyx_k_pool[] = "pool";
+static const char __pyx_k_read[] = "read";
+static const char __pyx_k_recv[] = "recv";
+static const char __pyx_k_repr[] = "_repr";
+static const char __pyx_k_self[] = "self";
+static const char __pyx_k_send[] = "send";
+static const char __pyx_k_spec[] = "__spec__";
+static const char __pyx_k_task[] = "task";
+static const char __pyx_k_test[] = "__test__";
+static const char __pyx_k_time[] = "time";
+static const char __pyx_k_true[] = "true";
+static const char __pyx_k_type[] = "type";
+static const char __pyx_k_utf8[] = "utf8";
+static const char __pyx_k_wait[] = "wait";
+static const char __pyx_k_wrap[] = "wrap";
+static const char __pyx_k_EOF_2[] = "_EOF";
+static const char __pyx_k_Group[] = "Group";
+static const char __pyx_k_Queue[] = "Queue";
+static const char __pyx_k_RLock[] = "RLock";
+static const char __pyx_k_abort[] = "abort";
+static const char __pyx_k_aexit[] = "__aexit__";
+static const char __pyx_k_aiter[] = "__aiter__";
+static const char __pyx_k_anext[] = "__anext__";
+static const char __pyx_k_apply[] = "apply";
+static const char __pyx_k_ascii[] = "ascii";
+static const char __pyx_k_await[] = "__await__";
+static const char __pyx_k_c_key[] = "c_key";
+static const char __pyx_k_class[] = "__class__";
+static const char __pyx_k_clear[] = "clear";
+static const char __pyx_k_close[] = "close";
+static const char __pyx_k_creds[] = "creds";
+static const char __pyx_k_debug[] = "debug";
+static const char __pyx_k_enter[] = "__enter__";
+static const char __pyx_k_errno[] = "errno";
+static const char __pyx_k_error[] = "error";
+static const char __pyx_k_event[] = "event";
+static const char __pyx_k_flags[] = "flags";
+static const char __pyx_k_grace[] = "grace";
+static const char __pyx_k_is_ok[] = "is_ok";
+static const char __pyx_k_lower[] = "lower";
+static const char __pyx_k_queue[] = "queue";
+static const char __pyx_k_range[] = "range";
+static const char __pyx_k_ready[] = "ready";
+static const char __pyx_k_run_2[] = "_run";
+static const char __pyx_k_sleep[] = "sleep";
+static const char __pyx_k_spawn[] = "spawn";
+static const char __pyx_k_start[] = "start";
+static const char __pyx_k_state[] = "state";
+static const char __pyx_k_str_2[] = "__str__";
+static const char __pyx_k_super[] = "super";
+static const char __pyx_k_throw[] = "throw";
+static const char __pyx_k_upper[] = "upper";
+static const char __pyx_k_utf_8[] = "utf-8";
+static const char __pyx_k_value[] = "value";
+static const char __pyx_k_write[] = "write";
+static const char __pyx_k_LOGGER[] = "_LOGGER";
+static const char __pyx_k_POLLER[] = "POLLER";
+static const char __pyx_k_Server[] = "Server";
+static const char __pyx_k_Thread[] = "Thread";
+static const char __pyx_k_aenter[] = "__aenter__";
+static const char __pyx_k_append[] = "append";
+static const char __pyx_k_atexit[] = "atexit";
+static const char __pyx_k_before[] = "before";
+static const char __pyx_k_c_peer[] = "c_peer";
+static const char __pyx_k_cancel[] = "cancel";
+static const char __pyx_k_closed[] = "closed";
+static const char __pyx_k_codecs[] = "codecs";
+static const char __pyx_k_common[] = "_common";
+static const char __pyx_k_cygrpc[] = ".cygrpc";
+static const char __pyx_k_daemon[] = "daemon";
+static const char __pyx_k_decode[] = "decode";
+static const char __pyx_k_dict_2[] = "_dict";
+static const char __pyx_k_enable[] = "enable";
+static const char __pyx_k_encode[] = "encode";
+static const char __pyx_k_exit_2[] = "_exit";
+static const char __pyx_k_fileno[] = "fileno";
+static const char __pyx_k_format[] = "format";
+static const char __pyx_k_future[] = "future";
+static const char __pyx_k_gevent[] = "gevent";
+static const char __pyx_k_import[] = "__import__";
+static const char __pyx_k_medium[] = "medium";
+static const char __pyx_k_method[] = "method";
+static const char __pyx_k_module[] = "__module__";
+static const char __pyx_k_name_2[] = "__name__";
+static const char __pyx_k_object[] = "object";
+static const char __pyx_k_pickle[] = "pickle";
+static const char __pyx_k_plugin[] = "plugin";
+static const char __pyx_k_poller[] = "poller";
+static const char __pyx_k_reduce[] = "__reduce__";
+static const char __pyx_k_repr_2[] = "__repr__";
+static const char __pyx_k_result[] = "result";
+static const char __pyx_k_return[] = "return";
+static const char __pyx_k_server[] = "server";
+static const char __pyx_k_shield[] = "shield";
+static const char __pyx_k_socket[] = "socket";
+static const char __pyx_k_status[] = "status";
+static const char __pyx_k_target[] = "target";
+static const char __pyx_k_thread[] = "_thread";
+static const char __pyx_k_typing[] = "typing";
+static const char __pyx_k_update[] = "update";
+static const char __pyx_k_values[] = "values";
+static const char __pyx_k_AioCall[] = "_AioCall";
+static const char __pyx_k_Channel[] = "Channel";
+static const char __pyx_k_Unknown[] = "Unknown";
+static const char __pyx_k_aborted[] = "aborted";
+static const char __pyx_k_address[] = "address";
+static const char __pyx_k_asyncio[] = "asyncio";
+static const char __pyx_k_c_event[] = "c_event";
+static const char __pyx_k_capsule[] = "capsule";
+static const char __pyx_k_cb_func[] = "cb_func";
+static const char __pyx_k_channel[] = "channel";
+static const char __pyx_k_closing[] = "closing";
+static const char __pyx_k_context[] = "context";
+static const char __pyx_k_deflate[] = "deflate";
+static const char __pyx_k_destroy[] = "destroy";
+static const char __pyx_k_details[] = "details";
+static const char __pyx_k_disable[] = "disable";
+static const char __pyx_k_discard[] = "discard";
+static const char __pyx_k_environ[] = "environ";
+static const char __pyx_k_genexpr[] = "genexpr";
+static const char __pyx_k_get_hub[] = "get_hub";
+static const char __pyx_k_handler[] = "handler";
+static const char __pyx_k_inspect[] = "inspect";
+static const char __pyx_k_logging[] = "logging";
+static const char __pyx_k_maxsize[] = "maxsize";
+static const char __pyx_k_members[] = "__members__";
+static const char __pyx_k_message[] = "message";
+static const char __pyx_k_operate[] = "operate";
+static const char __pyx_k_options[] = "options";
+static const char __pyx_k_partial[] = "partial";
+static const char __pyx_k_pkgutil[] = "pkgutil";
+static const char __pyx_k_prepare[] = "__prepare__";
+static const char __pyx_k_request[] = "request";
+static const char __pyx_k_service[] = "service";
+static const char __pyx_k_span_id[] = "span_id";
+static const char __pyx_k_success[] = "success";
+static const char __pyx_k_timeout[] = "timeout";
+static const char __pyx_k_to_call[] = "to_call";
+static const char __pyx_k_unknown[] = "unknown";
+static const char __pyx_k_warning[] = "warning";
+static const char __pyx_k_wrapper[] = "wrapper";
+static const char __pyx_k_AioState[] = "_AioState";
+static const char __pyx_k_EX_USAGE[] = "EX_USAGE";
+static const char __pyx_k_KeyError[] = "KeyError";
+static const char __pyx_k_Optional[] = "Optional";
+static const char __pyx_k_RPCState[] = "RPCState";
+static const char __pyx_k_c_target[] = "c_target";
+static const char __pyx_k_callback[] = "callback";
+static const char __pyx_k_capacity[] = "capacity";
+static const char __pyx_k_channels[] = "channels";
+static const char __pyx_k_daemonic[] = "daemonic";
+static const char __pyx_k_deadline[] = "deadline";
+static const char __pyx_k_end_time[] = "end_time";
+static const char __pyx_k_endswith[] = "endswith";
+static const char __pyx_k_exc_info[] = "exc_info";
+static const char __pyx_k_get_data[] = "get_data";
+static const char __pyx_k_getstate[] = "__getstate__";
+static const char __pyx_k_identity[] = "identity";
+static const char __pyx_k_internal[] = "internal";
+static const char __pyx_k_is_valid[] = "is_valid";
+static const char __pyx_k_metadata[] = "metadata";
+static const char __pyx_k_object_2[] = "<{} object>";
+static const char __pyx_k_property[] = "property";
+static const char __pyx_k_pyx_capi[] = "__pyx_capi__";
+static const char __pyx_k_pyx_type[] = "__pyx_type";
+static const char __pyx_k_qualname[] = "__qualname__";
+static const char __pyx_k_register[] = "register";
+static const char __pyx_k_response[] = "response";
+static const char __pyx_k_rpc_coro[] = "rpc_coro";
+static const char __pyx_k_rpc_task[] = "rpc_task";
+static const char __pyx_k_set_code[] = "set_code";
+static const char __pyx_k_set_name[] = "__set_name__";
+static const char __pyx_k_setstate[] = "__setstate__";
+static const char __pyx_k_shutdown[] = "shutdown";
+static const char __pyx_k_trace_id[] = "trace_id";
+static const char __pyx_k_user_tag[] = "user_tag";
+static const char __pyx_k_wait_for[] = "wait_for";
+static const char __pyx_k_warnings[] = "warnings";
+static const char __pyx_k_AioServer[] = "AioServer";
+static const char __pyx_k_BaseError[] = "BaseError";
+static const char __pyx_k_BaseEvent[] = "BaseEvent";
+static const char __pyx_k_CallError[] = "CallError";
+static const char __pyx_k_CallState[] = "_CallState";
+static const char __pyx_k_Call_peer[] = "Call.peer";
+static const char __pyx_k_Condition[] = "Condition";
+static const char __pyx_k_EOF___len[] = "_EOF.__len__";
+static const char __pyx_k_EOF___str[] = "_EOF.__str__";
+static const char __pyx_k_EOF__repr[] = "_EOF._repr";
+static const char __pyx_k_ForkState[] = "_ForkState";
+static const char __pyx_k_Metadatum[] = "_Metadatum";
+static const char __pyx_k_Operation[] = "Operation";
+static const char __pyx_k_Timed_out[] = "Timed out";
+static const char __pyx_k_TypeError[] = "TypeError";
+static const char __pyx_k_WriteFlag[] = "WriteFlag";
+static const char __pyx_k_algorithm[] = "algorithm";
+static const char __pyx_k_arguments[] = "arguments";
+static const char __pyx_k_bind_loop[] = "bind_loop";
+static const char __pyx_k_bytes_ctx[] = "bytes_ctx";
+static const char __pyx_k_c_details[] = "c_details";
+static const char __pyx_k_c_options[] = "c_options";
+static const char __pyx_k_cancelled[] = "cancelled";
+static const char __pyx_k_condition[] = "_condition";
+static const char __pyx_k_data_loss[] = "data_loss";
+static const char __pyx_k_decrement[] = "decrement";
+static const char __pyx_k_enumerate[] = "enumerate";
+static const char __pyx_k_error_str[] = "error_str";
+static const char __pyx_k_exception[] = "exception";
+static const char __pyx_k_functools[] = "functools";
+static const char __pyx_k_getLogger[] = "getLogger";
+static const char __pyx_k_hex_codec[] = "hex_codec";
+static const char __pyx_k_increment[] = "increment";
+static const char __pyx_k_isenabled[] = "isenabled";
+static const char __pyx_k_local_tcp[] = "local_tcp";
+static const char __pyx_k_metaclass[] = "__metaclass__";
+static const char __pyx_k_not_found[] = "not_found";
+static const char __pyx_k_print_exc[] = "print_exc";
+static const char __pyx_k_pyx_state[] = "__pyx_state";
+static const char __pyx_k_reduce_ex[] = "__reduce_ex__";
+static const char __pyx_k_rpc_state[] = "rpc_state";
+static const char __pyx_k_server_id[] = "server_id";
+static const char __pyx_k_setDaemon[] = "setDaemon";
+static const char __pyx_k_socket_id[] = "socket_id";
+static const char __pyx_k_threading[] = "threading";
+static const char __pyx_k_traceback[] = "traceback";
+static const char __pyx_k_used_mask[] = "used_mask";
+static const char __pyx_k_wait_time[] = "wait_time";
+static const char __pyx_k_AbortError[] = "AbortError";
+static const char __pyx_k_AioChannel[] = "AioChannel";
+static const char __pyx_k_CallHandle[] = "CallHandle";
+static const char __pyx_k_ChannelArg[] = "_ChannelArg";
+static const char __pyx_k_EMPTY_MASK[] = "_EMPTY_MASK";
+static const char __pyx_k_EOF___bool[] = "_EOF.__bool__";
+static const char __pyx_k_EOF___repr[] = "_EOF.__repr__";
+static const char __pyx_k_Failed_s_s[] = "Failed \"%s\": %s";
+static const char __pyx_k_StatusCode[] = "StatusCode";
+static const char __pyx_k_SystemExit[] = "SystemExit";
+static const char __pyx_k_UsageError[] = "UsageError";
+static const char __pyx_k_ValueError[] = "ValueError";
+static const char __pyx_k_add_reader[] = "add_reader";
+static const char __pyx_k_c_deadline[] = "c_deadline";
+static const char __pyx_k_call_creds[] = "call_creds";
+static const char __pyx_k_call_error[] = "call_error";
+static const char __pyx_k_call_queue[] = "call_queue";
+static const char __pyx_k_call_state[] = "call_state";
+static const char __pyx_k_census_ctx[] = "census_ctx";
+static const char __pyx_k_channel_id[] = "channel_id";
+static const char __pyx_k_connecting[] = "connecting";
+static const char __pyx_k_error_code[] = "error_code";
+static const char __pyx_k_finish_ops[] = "finish_ops";
+static const char __pyx_k_fork_epoch[] = "fork_epoch";
+static const char __pyx_k_fork_state[] = "_fork_state";
+static const char __pyx_k_get_plugin[] = "get_plugin";
+static const char __pyx_k_gevent_hub[] = "gevent_hub";
+static const char __pyx_k_handle_rpc[] = "_handle_rpc";
+static const char __pyx_k_identities[] = "identities";
+static const char __pyx_k_is_running[] = "is_running";
+static const char __pyx_k_is_sampled[] = "is_sampled";
+static const char __pyx_k_namedtuple[] = "namedtuple";
+static const char __pyx_k_next_event[] = "next_event";
+static const char __pyx_k_notify_all[] = "notify_all";
+static const char __pyx_k_on_failure[] = "on_failure";
+static const char __pyx_k_on_success[] = "on_success";
+static const char __pyx_k_operations[] = "operations";
+static const char __pyx_k_properties[] = "properties";
+static const char __pyx_k_pyx_result[] = "__pyx_result";
+static const char __pyx_k_pyx_vtable[] = "__pyx_vtable__";
+static const char __pyx_k_query_call[] = "query_call";
+static const char __pyx_k_receive_op[] = "receive_op";
+static const char __pyx_k_set_result[] = "set_result";
+static const char __pyx_k_socketpair[] = "socketpair";
+static const char __pyx_k_stored_ctx[] = "_stored_ctx";
+static const char __pyx_k_threadpool[] = "threadpool";
+static const char __pyx_k_write_flag[] = "write_flag";
+static const char __pyx_k_CallDetails[] = "CallDetails";
+static const char __pyx_k_Call_cancel[] = "Call.cancel";
+static const char __pyx_k_ChannelArgs[] = "_ChannelArgs";
+static const char __pyx_k_EMPTY_FLAGS[] = "_EMPTY_FLAGS";
+static const char __pyx_k_ImportError[] = "ImportError";
+static const char __pyx_k_PickleError[] = "PickleError";
+static const char __pyx_k_TRUE_VALUES[] = "_TRUE_VALUES";
+static const char __pyx_k_actual_code[] = "actual_code";
+static const char __pyx_k_batch_error[] = "batch_error";
+static const char __pyx_k_buffer_hint[] = "buffer_hint";
+static const char __pyx_k_call_handle[] = "call_handle";
+static const char __pyx_k_capsule_ptr[] = "capsule_ptr";
+static const char __pyx_k_cert_config[] = "cert_config";
+static const char __pyx_k_cfunc_to_py[] = "cfunc.to_py";
+static const char __pyx_k_collections[] = "collections";
+static const char __pyx_k_compression[] = "compression";
+static const char __pyx_k_contextvars[] = "contextvars";
+static const char __pyx_k_create_task[] = "create_task";
+static const char __pyx_k_credentials[] = "credentials";
+static const char __pyx_k_gevent_pool[] = "gevent.pool";
+static const char __pyx_k_inbound_ops[] = "inbound_ops";
+static const char __pyx_k_interceptor[] = "interceptor";
+static const char __pyx_k_isawaitable[] = "isawaitable";
+static const char __pyx_k_max_results[] = "max_results";
+static const char __pyx_k_mro_entries[] = "__mro_entries__";
+static const char __pyx_k_no_compress[] = "no_compress";
+static const char __pyx_k_not_invoked[] = "not_invoked";
+static const char __pyx_k_private_key[] = "private_key";
+static const char __pyx_k_raw_message[] = "raw_message";
+static const char __pyx_k_read_socket[] = "read_socket";
+static const char __pyx_k_request_raw[] = "request_raw";
+static const char __pyx_k_retain_self[] = "retain_self";
+static const char __pyx_k_set_details[] = "set_details";
+static const char __pyx_k_setblocking[] = "setblocking";
+static const char __pyx_k_shutdown_cq[] = "shutdown_cq";
+static const char __pyx_k_start_batch[] = "_start_batch";
+static const char __pyx_k_started_tag[] = "started_tag";
+static const char __pyx_k_status_code[] = "status_code";
+static const char __pyx_k_status_task[] = "status_task";
+static const char __pyx_k_thread_pool[] = "thread_pool";
+static const char __pyx_k_unary_unary[] = "unary_unary";
+static const char __pyx_k_unavailable[] = "unavailable";
+static const char __pyx_k_unused_task[] = "unused_task";
+static const char __pyx_k_AioCall_done[] = "_AioCall.done";
+static const char __pyx_k_AioRpcStatus[] = "AioRpcStatus";
+static const char __pyx_k_ChannelState[] = "_ChannelState";
+static const char __pyx_k_RuntimeError[] = "RuntimeError";
+static const char __pyx_k_Server_start[] = "Server.start";
+static const char __pyx_k_TimeoutError[] = "TimeoutError";
+static const char __pyx_k_add_callback[] = "add_callback";
+static const char __pyx_k_auth_context[] = "auth_context";
+static const char __pyx_k_backup_queue[] = "backup_queue";
+static const char __pyx_k_call_details[] = "call_details";
+static const char __pyx_k_context_loop[] = "context_loop";
+static const char __pyx_k_continuation[] = "continuation";
+static const char __pyx_k_copy_context[] = "copy_context";
+static const char __pyx_k_error_string[] = "error_string";
+static const char __pyx_k_grpc_aio_EOF[] = "<grpc.aio.EOF>";
+static const char __pyx_k_identity_key[] = "identity_key";
+static const char __pyx_k_initializing[] = "_initializing";
+static const char __pyx_k_interceptors[] = "interceptors";
+static const char __pyx_k_is_coroutine[] = "_is_coroutine";
+static const char __pyx_k_out_of_range[] = "out_of_range";
+static const char __pyx_k_outbound_ops[] = "outbound_ops";
+static const char __pyx_k_poll_wrapper[] = "_poll_wrapper";
+static const char __pyx_k_pyx_checksum[] = "__pyx_checksum";
+static const char __pyx_k_request_call[] = "_request_call";
+static const char __pyx_k_response_raw[] = "response_raw";
+static const char __pyx_k_send_message[] = "_send_message";
+static const char __pyx_k_server_queue[] = "server_queue";
+static const char __pyx_k_simplefilter[] = "simplefilter";
+static const char __pyx_k_started_tags[] = "started_tags";
+static const char __pyx_k_stream_unary[] = "stream_unary";
+static const char __pyx_k_stringsource[] = "<stringsource>";
+static const char __pyx_k_timeout_secs[] = "timeout_secs";
+static const char __pyx_k_unary_stream[] = "unary_stream";
+static const char __pyx_k_use_setstate[] = "use_setstate";
+static const char __pyx_k_AioCall__repr[] = "_AioCall._repr";
+static const char __pyx_k_AioCall_is_ok[] = "_AioCall.is_ok";
+static const char __pyx_k_AsyncIOEngine[] = "AsyncIOEngine";
+static const char __pyx_k_CensusContext[] = "CensusContext";
+static const char __pyx_k_ChannelArgKey[] = "ChannelArgKey";
+static const char __pyx_k_Channel_close[] = "Channel.close";
+static const char __pyx_k_InternalError[] = "InternalError";
+static const char __pyx_k_OperationType[] = "OperationType";
+static const char __pyx_k_asyncio_tasks[] = "asyncio.tasks";
+static const char __pyx_k_c_cert_config[] = "c_cert_config";
+static const char __pyx_k_callback_func[] = "callback_func";
+static const char __pyx_k_channel_state[] = "channel_state";
+static const char __pyx_k_class_getitem[] = "__class_getitem__";
+static const char __pyx_k_close_on_fork[] = "_close_on_fork";
+static const char __pyx_k_create_future[] = "create_future";
+static const char __pyx_k_credentials_2[] = "_credentials";
+static const char __pyx_k_cython_cygrpc[] = "_cython.cygrpc";
+static const char __pyx_k_details_bytes[] = "details_bytes";
+static const char __pyx_k_enable_census[] = "enable_census";
+static const char __pyx_k_error_details[] = "error_details";
+static const char __pyx_k_execute_batch[] = "execute_batch";
+static const char __pyx_k_g_gevent_pool[] = "g_gevent_pool";
+static const char __pyx_k_handle_events[] = "_handle_events";
+static const char __pyx_k_init_grpc_aio[] = "init_grpc_aio";
+static const char __pyx_k_init_subclass[] = "__init_subclass__";
+static const char __pyx_k_internal_poll[] = "_internal_poll";
+static const char __pyx_k_invalid_flags[] = "invalid_flags";
+static const char __pyx_k_not_on_client[] = "not_on_client";
+static const char __pyx_k_not_on_server[] = "not_on_server";
+static const char __pyx_k_observability[] = "_observability";
+static const char __pyx_k_query_handler[] = "query_handler";
+static const char __pyx_k_queue_timeout[] = "queue_timeout";
+static const char __pyx_k_reduce_cython[] = "__reduce_cython__";
+static const char __pyx_k_remove_reader[] = "remove_reader";
+static const char __pyx_k_runtime_error[] = "runtime_error";
+static const char __pyx_k_send_close_op[] = "send_close_op";
+static const char __pyx_k_set_exception[] = "set_exception";
+static const char __pyx_k_stream_stream[] = "stream_stream";
+static const char __pyx_k_subchannel_id[] = "subchannel_id";
+static const char __pyx_k_unary_handler[] = "unary_handler";
+static const char __pyx_k_unimplemented[] = "unimplemented";
+static const char __pyx_k_unused_future[] = "unused_future";
+static const char __pyx_k_AioCall_cancel[] = "_AioCall.cancel";
+static const char __pyx_k_AioCall_status[] = "_AioCall.status";
+static const char __pyx_k_AssertionError[] = "AssertionError";
+static const char __pyx_k_AttributeError[] = "AttributeError";
+static const char __pyx_k_BoundEventLoop[] = "_BoundEventLoop";
+static const char __pyx_k_CancelledError[] = "CancelledError";
+static const char __pyx_k_Channel_target[] = "Channel.target";
+static const char __pyx_k_CompletionType[] = "CompletionType";
+static const char __pyx_k_GrpcArgWrapper[] = "_GrpcArgWrapper";
+static const char __pyx_k_IntegratedCall[] = "IntegratedCall";
+static const char __pyx_k_LatentEventArg[] = "_LatentEventArg";
+static const char __pyx_k_RequestCallTag[] = "_RequestCallTag";
+static const char __pyx_k_SegregatedCall[] = "SegregatedCall";
+static const char __pyx_k_Server_destroy[] = "Server.destroy";
+static const char __pyx_k_Unexpected_s_s[] = "Unexpected %s: %s";
+static const char __pyx_k_add_http2_port[] = "add_http2_port";
+static const char __pyx_k_after_in_child[] = "after_in_child";
+static const char __pyx_k_already_exists[] = "already_exists";
+static const char __pyx_k_c_returned_str[] = "c_returned_str";
+static const char __pyx_k_catch_warnings[] = "catch_warnings";
+static const char __pyx_k_default_vtable[] = "default_vtable";
+static const char __pyx_k_exception_type[] = "exception_type";
+static const char __pyx_k_get_event_loop[] = "get_event_loop";
+static const char __pyx_k_get_fork_epoch[] = "get_fork_epoch";
+static const char __pyx_k_managed_target[] = "managed_target";
+static const char __pyx_k_method_handler[] = "method_handler";
+static const char __pyx_k_new_event_loop[] = "new_event_loop";
+static const char __pyx_k_pem_root_certs[] = "pem_root_certs";
+static const char __pyx_k_query_handlers[] = "query_handlers";
+static const char __pyx_k_queue_deadline[] = "queue_deadline";
+static const char __pyx_k_queue_shutdown[] = "queue_shutdown";
+static const char __pyx_k_request_call_2[] = "request_call";
+static const char __pyx_k_send_message_2[] = "send_message";
+static const char __pyx_k_server_started[] = "server_started";
+static const char __pyx_k_stream_handler[] = "stream_handler";
+static const char __pyx_k_time_remaining[] = "time_remaining";
+static const char __pyx_k_to_channel_arg[] = "to_channel_arg";
+static const char __pyx_k_try_to_connect[] = "try_to_connect";
+static const char __pyx_k_wait_for_ready[] = "wait_for_ready";
+static const char __pyx_k_yield_to_queue[] = "yield_to_queue";
+static const char __pyx_k_AioChannel_call[] = "AioChannel.call";
+static const char __pyx_k_AioServer_start[] = "AioServer.start";
+static const char __pyx_k_CallCredentials[] = "CallCredentials";
+static const char __pyx_k_CallbackWrapper[] = "CallbackWrapper";
+static const char __pyx_k_CompletionQueue[] = "CompletionQueue";
+static const char __pyx_k_ConnectivityTag[] = "_ConnectivityTag";
+static const char __pyx_k_GrpcCallWrapper[] = "GrpcCallWrapper";
+static const char __pyx_k_Locally_aborted[] = "Locally aborted.";
+static const char __pyx_k_MessageReceiver[] = "_MessageReceiver";
+static const char __pyx_k_Server_shutdown[] = "Server.shutdown";
+static const char __pyx_k_ServicerContext[] = "_ServicerContext";
+static const char __pyx_k_add_secure_port[] = "add_secure_port";
+static const char __pyx_k_after_in_parent[] = "after_in_parent";
+static const char __pyx_k_already_invoked[] = "already_invoked";
+static const char __pyx_k_c_error_details[] = "c_error_details";
+static const char __pyx_k_close_on_fork_2[] = "close_on_fork";
+static const char __pyx_k_completion_type[] = "completion_type";
+static const char __pyx_k_failure_handler[] = "failure_handler";
+static const char __pyx_k_generic_handler[] = "generic_handler";
+static const char __pyx_k_integrated_call[] = "integrated_call";
+static const char __pyx_k_metadata_plugin[] = "metadata_plugin";
+static const char __pyx_k_next_call_event[] = "next_call_event";
+static const char __pyx_k_peer_identities[] = "peer_identities";
+static const char __pyx_k_py_auth_context[] = "py_auth_context";
+static const char __pyx_k_pyx_PickleError[] = "__pyx_PickleError";
+static const char __pyx_k_receive_message[] = "_receive_message";
+static const char __pyx_k_request_message[] = "request_message";
+static const char __pyx_k_run_in_executor[] = "run_in_executor";
+static const char __pyx_k_run_interceptor[] = "_run_interceptor";
+static const char __pyx_k_segregated_call[] = "segregated_call";
+static const char __pyx_k_send_message_op[] = "send_message_op";
+static const char __pyx_k_set_compression[] = "set_compression";
+static const char __pyx_k_set_credentials[] = "set_credentials";
+static const char __pyx_k_setstate_cython[] = "__setstate_cython__";
+static const char __pyx_k_spawn_greenlets[] = "spawn_greenlets";
+static const char __pyx_k_start_server_id[] = "start_server_id";
+static const char __pyx_k_start_socket_id[] = "start_socket_id";
+static const char __pyx_k_tracing_enabled[] = "tracing_enabled";
+static const char __pyx_k_unauthenticated[] = "unauthenticated";
+static const char __pyx_k_AioChannel_close[] = "AioChannel.close";
+static const char __pyx_k_CompressionLevel[] = "CompressionLevel";
+static const char __pyx_k_Expected_str_not[] = "Expected str, not {}";
+static const char __pyx_k_ForkState___init[] = "_ForkState.__init__";
+static const char __pyx_k_Method_not_found[] = "Method not found!";
+static const char __pyx_k_RequestCallError[] = "_RequestCallError";
+static const char __pyx_k_RequestCallEvent[] = "RequestCallEvent";
+static const char __pyx_k_address_c_string[] = "address_c_string";
+static const char __pyx_k_already_accepted[] = "already_accepted";
+static const char __pyx_k_already_finished[] = "already_finished";
+static const char __pyx_k_batch_operations[] = "batch_operations";
+static const char __pyx_k_c_pem_root_certs[] = "c_pem_root_certs";
+static const char __pyx_k_call_credentials[] = "call_credentials";
+static const char __pyx_k_callback_wrapper[] = "callback_wrapper";
+static const char __pyx_k_cancel_all_calls[] = "cancel_all_calls";
+static const char __pyx_k_dump_xds_configs[] = "dump_xds_configs";
+static const char __pyx_k_enable_algorithm[] = "enable_algorithm";
+static const char __pyx_k_fork_in_progress[] = "fork_in_progress";
+static const char __pyx_k_format_exception[] = "format_exception";
+static const char __pyx_k_generic_handlers[] = "generic_handlers";
+static const char __pyx_k_get_running_loop[] = "get_running_loop";
+static const char __pyx_k_get_working_loop[] = "get_working_loop";
+static const char __pyx_k_handle_callbacks[] = "handle_callbacks";
+static const char __pyx_k_init_grpc_gevent[] = "init_grpc_gevent";
+static const char __pyx_k_initial_metadata[] = "initial_metadata";
+static const char __pyx_k_invalid_argument[] = "invalid_argument";
+static const char __pyx_k_invalid_metadata[] = "invalid_metadata";
+static const char __pyx_k_is_async_handler[] = "_is_async_handler";
+static const char __pyx_k_latent_event_arg[] = "latent_event_arg";
+static const char __pyx_k_received_message[] = "received_message";
+static const char __pyx_k_register_at_fork[] = "register_at_fork";
+static const char __pyx_k_request_call_tag[] = "request_call_tag";
+static const char __pyx_k_request_iterator[] = "request_iterator";
+static const char __pyx_k_response_message[] = "response_message";
+static const char __pyx_k_run_with_context[] = "_run_with_context";
+static const char __pyx_k_server_main_loop[] = "_server_main_loop";
+static const char __pyx_k_service_accounts[] = "service_accounts";
+static const char __pyx_k_servicer_context[] = "servicer_context";
+static const char __pyx_k_start_channel_id[] = "start_channel_id";
+static const char __pyx_k_ActiveThreadCount[] = "_ActiveThreadCount";
+static const char __pyx_k_AioCall_cancelled[] = "_AioCall.cancelled";
+static const char __pyx_k_AioChannel_closed[] = "AioChannel.closed";
+static const char __pyx_k_AioRpcStatus_code[] = "AioRpcStatus.code";
+static const char __pyx_k_BatchOperationTag[] = "_BatchOperationTag";
+static const char __pyx_k_CUSTOM_IO_MANAGER[] = "CUSTOM_IO_MANAGER";
+static const char __pyx_k_Call__start_batch[] = "Call._start_batch";
+static const char __pyx_k_Channel_is_closed[] = "Channel is closed.";
+static const char __pyx_k_ConnectivityEvent[] = "ConnectivityEvent";
+static const char __pyx_k_ConnectivityState[] = "ConnectivityState";
+static const char __pyx_k_ExecuteBatchError[] = "ExecuteBatchError";
+static const char __pyx_k_ForkManagedThread[] = "ForkManagedThread";
+static const char __pyx_k_KeyboardInterrupt[] = "KeyboardInterrupt";
+static const char __pyx_k_ServerCredentials[] = "ServerCredentials";
+static const char __pyx_k_ServerShutdownTag[] = "_ServerShutdownTag";
+static const char __pyx_k_SslPemKeyCertPair[] = "SslPemKeyCertPair";
+static const char __pyx_k_abort_with_status[] = "abort_with_status";
+static const char __pyx_k_add_done_callback[] = "add_done_callback";
+static const char __pyx_k_add_insecure_port[] = "add_insecure_port";
+static const char __pyx_k_certificate_chain[] = "certificate_chain";
+static const char __pyx_k_custom_io_manager[] = "custom_io_manager";
+static const char __pyx_k_deadline_exceeded[] = "deadline_exceeded";
+static const char __pyx_k_default_authority[] = "default_authority";
+static const char __pyx_k_disable_algorithm[] = "disable_algorithm";
+static const char __pyx_k_force_client_auth[] = "force_client_auth";
+static const char __pyx_k_grpc_call_wrapper[] = "grpc_call_wrapper";
+static const char __pyx_k_handle_exceptions[] = "_handle_exceptions";
+static const char __pyx_k_intercept_service[] = "intercept_service";
+static const char __pyx_k_peer_identity_key[] = "peer_identity_key";
+static const char __pyx_k_permission_denied[] = "permission_denied";
+static const char __pyx_k_pyx_unpickle__Tag[] = "__pyx_unpickle__Tag";
+static const char __pyx_k_receive_message_2[] = "receive_message";
+static const char __pyx_k_request_streaming[] = "request_streaming";
+static const char __pyx_k_schedule_rpc_coro[] = "_schedule_rpc_coro";
+static const char __pyx_k_shutdown_grpc_aio[] = "shutdown_grpc_aio";
+static const char __pyx_k_ssl_session_cache[] = "ssl_session_cache";
+static const char __pyx_k_trailing_metadata[] = "trailing_metadata";
+static const char __pyx_k_transient_failure[] = "transient_failure";
+static const char __pyx_k_uninstall_context[] = "uninstall_context";
+static const char __pyx_k_AioChannel_closing[] = "AioChannel.closing";
+static const char __pyx_k_AioServer_shutdown[] = "AioServer.shutdown";
+static const char __pyx_k_ChannelCredentials[] = "ChannelCredentials";
+static const char __pyx_k_CompressionOptions[] = "CompressionOptions";
+static const char __pyx_k_DeprecationWarning[] = "DeprecationWarning";
+static const char __pyx_k_HandlerCallDetails[] = "_HandlerCallDetails";
+static const char __pyx_k_SSLSessionCacheLRU[] = "SSLSessionCacheLRU";
+static const char __pyx_k_ServerStoppedError[] = "_ServerStoppedError";
+static const char __pyx_k_UnicodeDecodeError[] = "UnicodeDecodeError";
+static const char __pyx_k_asyncio_coroutines[] = "asyncio.coroutines";
+static const char __pyx_k_await_zero_threads[] = "await_zero_threads";
+static const char __pyx_k_c_call_credentials[] = "c_call_credentials";
+static const char __pyx_k_call_credentialses[] = "call_credentialses";
+static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback";
+static const char __pyx_k_core_function_name[] = "core_function_name";
+static const char __pyx_k_debug_error_string[] = "debug_error_string";
+static const char __pyx_k_delete_call_tracer[] = "delete_call_tracer";
+static const char __pyx_k_g_gevent_activated[] = "g_gevent_activated";
+static const char __pyx_k_isasyncgenfunction[] = "isasyncgenfunction";
+static const char __pyx_k_local_connect_type[] = "local_connect_type";
+static const char __pyx_k_num_active_threads[] = "_num_active_threads";
+static const char __pyx_k_operation_complete[] = "operation_complete";
+static const char __pyx_k_pem_key_cert_pairs[] = "pem_key_cert_pairs";
+static const char __pyx_k_queue_must_be_live[] = "queue must be live";
+static const char __pyx_k_receive_message_op[] = "receive_message_op";
+static const char __pyx_k_resource_exhausted[] = "resource_exhausted";
+static const char __pyx_k_response_streaming[] = "response_streaming";
+static const char __pyx_k_save_trace_context[] = "save_trace_context";
+static const char __pyx_k_send_receive_close[] = "send_receive_close";
+static const char __pyx_k_server_call_tracer[] = "server_call_tracer";
+static const char __pyx_k_server_credentials[] = "server_credentials";
+static const char __pyx_k_set_internal_error[] = "set_internal_error";
+static const char __pyx_k_start_client_batch[] = "start_client_batch";
+static const char __pyx_k_start_server_batch[] = "start_server_batch";
+static const char __pyx_k_AioCall_unary_unary[] = "_AioCall.unary_unary";
+static const char __pyx_k_BaseCompletionQueue[] = "BaseCompletionQueue";
+static const char __pyx_k_BatchOperationEvent[] = "BatchOperationEvent";
+static const char __pyx_k_Cannot_invoke_RPC_s[] = "Cannot invoke RPC: %s";
+static const char __pyx_k_GRPC_ASYNCIO_ENGINE[] = "GRPC_ASYNCIO_ENGINE";
+static const char __pyx_k_LocalConnectionType[] = "LocalConnectionType";
+static const char __pyx_k_NotImplementedError[] = "NotImplementedError";
+static const char __pyx_k_SERVICES_TO_EXCLUDE[] = "_SERVICES_TO_EXCLUDE";
+static const char __pyx_k_ServerShutdownEvent[] = "ServerShutdownEvent";
+static const char __pyx_k_Server_request_call[] = "Server.request_call";
+static const char __pyx_k_SyncServicerContext[] = "_SyncServicerContext";
+static const char __pyx_k_Tag___reduce_cython[] = "_Tag.__reduce_cython__";
+static const char __pyx_k_active_thread_count[] = "active_thread_count";
+static const char __pyx_k_async_callback_func[] = "async_callback_func";
+static const char __pyx_k_batch_operation_tag[] = "batch_operation_tag";
+static const char __pyx_k_cert_config_fetcher[] = "cert_config_fetcher";
+static const char __pyx_k_channel_credentials[] = "channel_credentials";
+static const char __pyx_k_channelz_get_server[] = "channelz_get_server";
+static const char __pyx_k_channelz_get_socket[] = "channelz_get_socket";
+static const char __pyx_k_custom_op_on_c_call[] = "_custom_op_on_c_call";
+static const char __pyx_k_failed_precondition[] = "failed_precondition";
+static const char __pyx_k_find_method_handler[] = "_find_method_handler";
+static const char __pyx_k_fork_handler_failed[] = "_fork_handler_failed";
+static const char __pyx_k_g_gevent_threadpool[] = "g_gevent_threadpool";
+static const char __pyx_k_initial_cert_config[] = "initial_cert_config";
+static const char __pyx_k_initial_metadata_op[] = "initial_metadata_op";
+static const char __pyx_k_invocation_metadata[] = "invocation_metadata";
+static const char __pyx_k_iscoroutinefunction[] = "iscoroutinefunction";
+static const char __pyx_k_last_observed_state[] = "last_observed_state";
+static const char __pyx_k_response_serializer[] = "response_serializer";
+static const char __pyx_k_run_spawn_greenlets[] = "run_spawn_greenlets";
+static const char __pyx_k_start_shutting_down[] = "_start_shutting_down";
+static const char __pyx_k_too_many_operations[] = "too_many_operations";
+static const char __pyx_k_Abort_already_called[] = "Abort already called!";
+static const char __pyx_k_AioCall_stream_unary[] = "_AioCall.stream_unary";
+static const char __pyx_k_AioRpcStatus_details[] = "AioRpcStatus.details";
+static const char __pyx_k_AioServer_is_running[] = "AioServer.is_running";
+static const char __pyx_k_BoundEventLoop_close[] = "_BoundEventLoop.close";
+static const char __pyx_k_Call___reduce_cython[] = "Call.__reduce_cython__";
+static const char __pyx_k_Call_set_credentials[] = "Call.set_credentials";
+static const char __pyx_k_CompletionQueue_poll[] = "CompletionQueue.poll";
+static const char __pyx_k_CompressionAlgorithm[] = "CompressionAlgorithm";
+static const char __pyx_k_ConcurrentRpcLimiter[] = "_ConcurrentRpcLimiter";
+static const char __pyx_k_InitialMetadataFlags[] = "InitialMetadataFlags";
+static const char __pyx_k_PropagationConstants[] = "PropagationConstants";
+static const char __pyx_k_RPC_already_finished[] = "RPC already finished.";
+static const char __pyx_k_SendMessageOperation[] = "SendMessageOperation";
+static const char __pyx_k_ServicerContext_code[] = "_ServicerContext.code";
+static const char __pyx_k_ServicerContext_done[] = "_ServicerContext.done";
+static const char __pyx_k_ServicerContext_peer[] = "_ServicerContext.peer";
+static const char __pyx_k_ServicerContext_read[] = "_ServicerContext.read";
+static const char __pyx_k_TYPE_METADATA_STRING[] = "TYPE_METADATA_STRING";
+static const char __pyx_k_build_census_context[] = "build_census_context";
+static const char __pyx_k_call_soon_threadsafe[] = "call_soon_threadsafe";
+static const char __pyx_k_channelz_get_channel[] = "channelz_get_channel";
+static const char __pyx_k_channelz_get_servers[] = "channelz_get_servers";
+static const char __pyx_k_concurrency_exceeded[] = "concurrency_exceeded";
+static const char __pyx_k_fallback_credentials[] = "fallback_credentials";
+static const char __pyx_k_generic_rpc_handlers[] = "generic_rpc_handlers";
+static const char __pyx_k_handler_call_details[] = "handler_call_details";
+static const char __pyx_k_is_algorithm_enabled[] = "is_algorithm_enabled";
+static const char __pyx_k_is_locally_cancelled[] = "is_locally_cancelled";
+static const char __pyx_k_observability_plugin[] = "observability_plugin";
+static const char __pyx_k_request_deserializer[] = "request_deserializer";
+static const char __pyx_k_reset_postfork_child[] = "reset_postfork_child";
+static const char __pyx_k_shutting_down_server[] = "shutting_down_server";
+static const char __pyx_k_spawn_callback_async[] = "_spawn_callback_async";
+static const char __pyx_k_wait_for_termination[] = "wait_for_termination";
+static const char __pyx_k_Channel_close_on_fork[] = "Channel.close_on_fork";
+static const char __pyx_k_CompletionQueue_clear[] = "CompletionQueue.clear";
+static const char __pyx_k_IntegratedCall_cancel[] = "IntegratedCall.cancel";
+static const char __pyx_k_Invalid_encoding_on_s[] = "Invalid encoding on %s";
+static const char __pyx_k_PollerCompletionQueue[] = "PollerCompletionQueue";
+static const char __pyx_k_SSLChannelCredentials[] = "SSLChannelCredentials";
+static const char __pyx_k_SegregatedCall_cancel[] = "SegregatedCall.cancel";
+static const char __pyx_k_Server_add_http2_port[] = "Server.add_http2_port";
+static const char __pyx_k_ServicerContext_abort[] = "_ServicerContext.abort";
+static const char __pyx_k_ServicerContext_write[] = "_ServicerContext.write";
+static const char __pyx_k_Tag___setstate_cython[] = "_Tag.__setstate_cython__";
+static const char __pyx_k_Using_s_as_I_O_engine[] = "Using %s as I/O engine";
+static const char __pyx_k_XDSChannelCredentials[] = "XDSChannelCredentials";
+static const char __pyx_k_contextvars_supported[] = "_contextvars_supported";
+static const char __pyx_k_credentials_roots_pem[] = "_credentials/roots.pem";
+static const char __pyx_k_fork_register_channel[] = "fork_register_channel";
+static const char __pyx_k_get_event_loop_policy[] = "get_event_loop_policy";
+static const char __pyx_k_grpc_shutdown_wrapper[] = "_grpc_shutdown_wrapper";
+static const char __pyx_k_initiate_unary_stream[] = "initiate_unary_stream";
+static const char __pyx_k_observability_enabled[] = "observability_enabled";
+static const char __pyx_k_operationses_and_tags[] = "operationses_and_tags";
+static const char __pyx_k_pem_root_certificates[] = "pem_root_certificates";
+static const char __pyx_k_send_initial_metadata[] = "_send_initial_metadata";
+static const char __pyx_k_set_trailing_metadata[] = "set_trailing_metadata";
+static const char __pyx_k_sync_servicer_context[] = "sync_servicer_context";
+static const char __pyx_k_ALTSChannelCredentials[] = "ALTSChannelCredentials";
+static const char __pyx_k_AioCall_time_remaining[] = "_AioCall.time_remaining";
+static const char __pyx_k_Call___setstate_cython[] = "Call.__setstate_cython__";
+static const char __pyx_k_CallbackFailureHandler[] = "CallbackFailureHandler";
+static const char __pyx_k_ForkManagedThread_join[] = "ForkManagedThread.join";
+static const char __pyx_k_IntegratedCall_operate[] = "IntegratedCall.operate";
+static const char __pyx_k_OK_CALL_REPRESENTATION[] = "_OK_CALL_REPRESENTATION";
+static const char __pyx_k_SegregatedCall_operate[] = "SegregatedCall.operate";
+static const char __pyx_k_Server___reduce_cython[] = "Server.__reduce_cython__";
+static const char __pyx_k_Server_already_stopped[] = "Server already stopped.";
+static const char __pyx_k_async_message_receiver[] = "_async_message_receiver";
+static const char __pyx_k_client_config_in_slice[] = "client_config_in_slice";
+static const char __pyx_k_decrease_once_finished[] = "decrease_once_finished";
+static const char __pyx_k_grpc_call_error_string[] = "grpc_call_error_string";
+static const char __pyx_k_handle_unary_unary_rpc[] = "_handle_unary_unary_rpc";
+static const char __pyx_k_initiate_stream_stream[] = "initiate_stream_stream";
+static const char __pyx_k_max_concurrent_streams[] = "max_concurrent_streams";
+static const char __pyx_k_metadata_sent_observer[] = "metadata_sent_observer";
+static const char __pyx_k_metadata_was_invalid_s[] = "metadata was invalid: %s";
+static const char __pyx_k_pyx_unpickle_AioServer[] = "__pyx_unpickle_AioServer";
+static const char __pyx_k_registered_call_handle[] = "registered_call_handle";
+static const char __pyx_k_reset_grpc_config_vars[] = "reset_grpc_config_vars";
+static const char __pyx_k_send_close_from_client[] = "send_close_from_client";
+static const char __pyx_k_server_credentials_ssl[] = "server_credentials_ssl";
+static const char __pyx_k_xds_server_credentials[] = "xds_server_credentials";
+static const char __pyx_k_AioCall___reduce_cython[] = "_AioCall.__reduce_cython__";
+static const char __pyx_k_AioServer__request_call[] = "AioServer._request_call";
+static const char __pyx_k_Call_start_client_batch[] = "Call.start_client_batch";
+static const char __pyx_k_Call_start_server_batch[] = "Call.start_server_batch";
+static const char __pyx_k_Channel___reduce_cython[] = "Channel.__reduce_cython__";
+static const char __pyx_k_Channel_integrated_call[] = "Channel.integrated_call";
+static const char __pyx_k_Channel_next_call_event[] = "Channel.next_call_event";
+static const char __pyx_k_Channel_segregated_call[] = "Channel.segregated_call";
+static const char __pyx_k_ForkManagedThread_start[] = "ForkManagedThread.start";
+static const char __pyx_k_GRPC_PROPAGATE_DEADLINE[] = "GRPC_PROPAGATE_DEADLINE";
+static const char __pyx_k_GRPC_PROPAGATE_DEFAULTS[] = "GRPC_PROPAGATE_DEFAULTS";
+static const char __pyx_k_LocalChannelCredentials[] = "LocalChannelCredentials";
+static const char __pyx_k_MessageReceiver___anext[] = "_MessageReceiver.__anext__";
+static const char __pyx_k_ReceiveMessageOperation[] = "ReceiveMessageOperation";
+static const char __pyx_k_ServerCertificateConfig[] = "ServerCertificateConfig";
+static const char __pyx_k_Server_cancel_all_calls[] = "Server.cancel_all_calls";
+static const char __pyx_k_ServicerContext_details[] = "_ServicerContext.details";
+static const char __pyx_k_WatchConnectivityFailed[] = "_WatchConnectivityFailed";
+static const char __pyx_k_channelz_get_subchannel[] = "channelz_get_subchannel";
+static const char __pyx_k_cython_call_credentials[] = "cython_call_credentials";
+static const char __pyx_k_fork_handler_registered[] = "fork_handler_registered";
+static const char __pyx_k_fork_unregister_channel[] = "fork_unregister_channel";
+static const char __pyx_k_handle_callback_wrapper[] = "_handle_callback_wrapper";
+static const char __pyx_k_handle_stream_unary_rpc[] = "_handle_stream_unary_rpc";
+static const char __pyx_k_handle_unary_stream_rpc[] = "_handle_unary_stream_rpc";
+static const char __pyx_k_is_fork_support_enabled[] = "is_fork_support_enabled";
+static const char __pyx_k_max_send_message_length[] = "max_send_message_length";
+static const char __pyx_k_maximum_concurrent_rpcs[] = "maximum_concurrent_rpcs";
+static const char __pyx_k_metadata_locals_genexpr[] = "_metadata.<locals>.genexpr";
+static const char __pyx_k_postfork_state_to_reset[] = "postfork_state_to_reset";
+static const char __pyx_k_python_call_credentials[] = "python_call_credentials";
+static const char __pyx_k_receive_close_on_server[] = "receive_close_on_server";
+static const char __pyx_k_send_initial_metadata_2[] = "send_initial_metadata";
+static const char __pyx_k_send_serialized_message[] = "send_serialized_message";
+static const char __pyx_k_send_status_from_server[] = "send_status_from_server";
+static const char __pyx_k_server_credentials_alts[] = "server_credentials_alts";
+static const char __pyx_k_set_async_callback_func[] = "set_async_callback_func";
+static const char __pyx_k_ActiveThreadCount___init[] = "_ActiveThreadCount.__init__";
+static const char __pyx_k_AioCall_initial_metadata[] = "_AioCall.initial_metadata";
+static const char __pyx_k_AioState___reduce_cython[] = "_AioState.__reduce_cython__";
+static const char __pyx_k_CompletionQueue_shutdown[] = "CompletionQueue.shutdown";
+static const char __pyx_k_CompositeCallCredentials[] = "CompositeCallCredentials";
+static const char __pyx_k_ForkManagedThread___init[] = "ForkManagedThread.__init__";
+static const char __pyx_k_GRPC_ENABLE_FORK_SUPPORT[] = "_GRPC_ENABLE_FORK_SUPPORT";
+static const char __pyx_k_IMMUTABLE_EMPTY_METADATA[] = "_IMMUTABLE_EMPTY_METADATA";
+static const char __pyx_k_Internal_error_from_Core[] = "Internal error from Core";
+static const char __pyx_k_RPCState___reduce_cython[] = "RPCState.__reduce_cython__";
+static const char __pyx_k_Server___setstate_cython[] = "Server.__setstate_cython__";
+static const char __pyx_k_ServicerContext_set_code[] = "_ServicerContext.set_code";
+static const char __pyx_k_SyncServicerContext_peer[] = "_SyncServicerContext.peer";
+static const char __pyx_k_add_generic_rpc_handlers[] = "add_generic_rpc_handlers";
+static const char __pyx_k_async_response_generator[] = "async_response_generator";
+static const char __pyx_k_channel_credentials_alts[] = "channel_credentials_alts";
+static const char __pyx_k_check_connectivity_state[] = "check_connectivity_state";
+static const char __pyx_k_grpc_server_request_call[] = "grpc_server_request_call";
+static const char __pyx_k_handle_stream_stream_rpc[] = "_handle_stream_stream_rpc";
+static const char __pyx_k_postfork_states_to_reset[] = "postfork_states_to_reset";
+static const char __pyx_k_receive_initial_metadata[] = "_receive_initial_metadata";
+static const char __pyx_k_receive_status_on_client[] = "receive_status_on_client";
+static const char __pyx_k_run_coroutine_threadsafe[] = "run_coroutine_threadsafe";
+static const char __pyx_k_schedule_coro_threadsafe[] = "schedule_coro_threadsafe";
+static const char __pyx_k_send_initial_metadata_op[] = "send_initial_metadata_op";
+static const char __pyx_k_server_credentials_local[] = "server_credentials_local";
+static const char __pyx_k_spawn_callback_in_thread[] = "_spawn_callback_in_thread";
+static const char __pyx_k_ssl_target_name_override[] = "ssl_target_name_override";
+static const char __pyx_k_watch_connectivity_state[] = "watch_connectivity_state";
+static const char __pyx_k_AioCall___setstate_cython[] = "_AioCall.__setstate_cython__";
+static const char __pyx_k_AioCall_add_done_callback[] = "_AioCall.add_done_callback";
+static const char __pyx_k_AioServer___reduce_cython[] = "AioServer.__reduce_cython__";
+static const char __pyx_k_AioServer_add_secure_port[] = "AioServer.add_secure_port";
+static const char __pyx_k_CallState___reduce_cython[] = "_CallState.__reduce_cython__";
+static const char __pyx_k_Call__custom_op_on_c_call[] = "Call._custom_op_on_c_call";
+static const char __pyx_k_Channel___setstate_cython[] = "Channel.__setstate_cython__";
+static const char __pyx_k_Non_thread_safe_operation[] = "Non-thread-safe operation";
+static const char __pyx_k_Operation___reduce_cython[] = "Operation.__reduce_cython__";
+static const char __pyx_k_SegregatedCall_next_event[] = "SegregatedCall.next_event";
+static const char __pyx_k_SendMessageOperation_type[] = "SendMessageOperation.type";
+static const char __pyx_k_Server_not_in_ready_state[] = "Server not in ready state";
+static const char __pyx_k_ServicerContext_cancelled[] = "_ServicerContext.cancelled";
+static const char __pyx_k_SyncServicerContext_abort[] = "_SyncServicerContext.abort";
+static const char __pyx_k_Unsupported_engine_type_s[] = "Unsupported engine type [%s]";
+static const char __pyx_k_block_if_fork_in_progress[] = "block_if_fork_in_progress";
+static const char __pyx_k_certificate_configuration[] = "_certificate_configuration";
+static const char __pyx_k_channel_credentials_local[] = "channel_credentials_local";
+static const char __pyx_k_channelz_get_top_channels[] = "channelz_get_top_channels";
+static const char __pyx_k_check_before_request_call[] = "check_before_request_call";
+static const char __pyx_k_create_client_call_tracer[] = "create_client_call_tracer";
+static const char __pyx_k_get_deadline_from_context[] = "get_deadline_from_context";
+static const char __pyx_k_outbound_initial_metadata[] = "outbound_initial_metadata";
+static const char __pyx_k_primary_user_agent_string[] = "primary_user_agent_string";
+static const char __pyx_k_register_completion_queue[] = "register_completion_queue";
+static const char __pyx_k_AioCall_send_receive_close[] = "_AioCall.send_receive_close";
+static const char __pyx_k_AioCall_set_internal_error[] = "_AioCall.set_internal_error";
+static const char __pyx_k_AioChannel___reduce_cython[] = "AioChannel.__reduce_cython__";
+static const char __pyx_k_AioState___setstate_cython[] = "_AioState.__setstate_cython__";
+static const char __pyx_k_CallHandle___reduce_cython[] = "CallHandle.__reduce_cython__";
+static const char __pyx_k_ChannelArg___reduce_cython[] = "_ChannelArg.__reduce_cython__";
+static const char __pyx_k_GRPC_ENABLE_FORK_SUPPORT_2[] = "GRPC_ENABLE_FORK_SUPPORT";
+static const char __pyx_k_InsecureChannelCredentials[] = "InsecureChannelCredentials";
+static const char __pyx_k_Internal_gRPC_call_error_d[] = "Internal gRPC call error %d. ";
+static const char __pyx_k_NON_OK_CALL_REPRESENTATION[] = "_NON_OK_CALL_REPRESENTATION";
+static const char __pyx_k_RPCState___setstate_cython[] = "RPCState.__setstate_cython__";
+static const char __pyx_k_compression_algorithm_name[] = "compression_algorithm_name";
+static const char __pyx_k_decrease_active_rpcs_count[] = "_decrease_active_rpcs_count";
+static const char __pyx_k_fork_in_progress_condition[] = "fork_in_progress_condition";
+static const char __pyx_k_get_registered_call_handle[] = "get_registered_call_handle";
+static const char __pyx_k_max_receive_message_length[] = "max_receive_message_length";
+static const char __pyx_k_pyx_unpickle_CensusContext[] = "__pyx_unpickle_CensusContext";
+static const char __pyx_k_receive_initial_metadata_2[] = "receive_initial_metadata";
+static const char __pyx_k_receive_serialized_message[] = "receive_serialized_message";
+static const char __pyx_k_serving_task_crash_handler[] = "_serving_task_crash_handler";
+static const char __pyx_k_set_census_context_on_call[] = "set_census_context_on_call";
+static const char __pyx_k_ActiveThreadCount_decrement[] = "_ActiveThreadCount.decrement";
+static const char __pyx_k_ActiveThreadCount_increment[] = "_ActiveThreadCount.increment";
+static const char __pyx_k_AioServer___setstate_cython[] = "AioServer.__setstate_cython__";
+static const char __pyx_k_AioServer__server_main_loop[] = "AioServer._server_main_loop";
+static const char __pyx_k_AioServer_add_insecure_port[] = "AioServer.add_insecure_port";
+static const char __pyx_k_CallDetails___reduce_cython[] = "CallDetails.__reduce_cython__";
+static const char __pyx_k_CallState___setstate_cython[] = "_CallState.__setstate_cython__";
+static const char __pyx_k_ChannelArgs___reduce_cython[] = "_ChannelArgs.__reduce_cython__";
+static const char __pyx_k_CompositeChannelCredentials[] = "CompositeChannelCredentials";
+static const char __pyx_k_ForkManagedThread_setDaemon[] = "ForkManagedThread.setDaemon";
+static const char __pyx_k_GRPC_PROPAGATE_CANCELLATION[] = "GRPC_PROPAGATE_CANCELLATION";
+static const char __pyx_k_Operation___setstate_cython[] = "Operation.__setstate_cython__";
+static const char __pyx_k_ServicerContext_set_details[] = "_ServicerContext.set_details";
+static const char __pyx_k_channelz_get_server_sockets[] = "channelz_get_server_sockets";
+static const char __pyx_k_fork_handlers_and_grpc_init[] = "fork_handlers_and_grpc_init";
+static const char __pyx_k_g_interrupt_check_period_ms[] = "g_interrupt_check_period_ms";
+static const char __pyx_k_handle_status_once_received[] = "_handle_status_once_received";
+static const char __pyx_k_insecure_server_credentials[] = "insecure_server_credentials";
+static const char __pyx_k_receive_initial_metadata_op[] = "receive_initial_metadata_op";
+static const char __pyx_k_receive_status_on_client_op[] = "receive_status_on_client_op";
+static const char __pyx_k_secondary_user_agent_string[] = "secondary_user_agent_string";
+static const char __pyx_k_AioCall_is_locally_cancelled[] = "_AioCall.is_locally_cancelled";
+static const char __pyx_k_AioChannel___setstate_cython[] = "AioChannel.__setstate_cython__";
+static const char __pyx_k_AioRpcStatus___reduce_cython[] = "AioRpcStatus.__reduce_cython__";
+static const char __pyx_k_CallHandle___setstate_cython[] = "CallHandle.__setstate_cython__";
+static const char __pyx_k_ChannelArg___setstate_cython[] = "_ChannelArg.__setstate_cython__";
+static const char __pyx_k_ChannelState___reduce_cython[] = "_ChannelState.__reduce_cython__";
+static const char __pyx_k_Expecting_non_ok_status_code[] = "Expecting non-ok status code.";
+static const char __pyx_k_ReceiveMessageOperation_type[] = "ReceiveMessageOperation.type";
+static const char __pyx_k_SendCloseFromClientOperation[] = "SendCloseFromClientOperation";
+static const char __pyx_k_SendInitialMetadataOperation[] = "SendInitialMetadataOperation";
+static const char __pyx_k_ServicerContext_auth_context[] = "_ServicerContext.auth_context";
+static const char __pyx_k_SyncServicerContext_set_code[] = "_SyncServicerContext.set_code";
+static const char __pyx_k_UNKNOWN_CANCELLATION_DETAILS[] = "_UNKNOWN_CANCELLATION_DETAILS";
+static const char __pyx_k_async_generator_to_generator[] = "async_generator_to_generator";
+static const char __pyx_k_channel_credentials_insecure[] = "channel_credentials_insecure";
+static const char __pyx_k_enter_user_request_generator[] = "enter_user_request_generator";
+static const char __pyx_k_fork_handler_registered_lock[] = "fork_handler_registered_lock";
+static const char __pyx_k_generator_to_async_generator[] = "generator_to_async_generator";
+static const char __pyx_k_get_metadata_locals_callback[] = "_get_metadata.<locals>.callback";
+static const char __pyx_k_next_event_locals_on_failure[] = "next_event.<locals>.on_failure";
+static const char __pyx_k_next_event_locals_on_success[] = "next_event.<locals>.on_success";
+static const char __pyx_k_run_with_context_locals__run[] = "_run_with_context.<locals>._run";
+static const char __pyx_k_shutdown_await_next_greenlet[] = "shutdown_await_next_greenlet";
+static const char __pyx_k_AWAIT_THREADS_TIMEOUT_SECONDS[] = "_AWAIT_THREADS_TIMEOUT_SECONDS";
+static const char __pyx_k_Abort_error_has_been_replaced[] = "Abort error has been replaced!";
+static const char __pyx_k_AioCall_initiate_unary_stream[] = "_AioCall.initiate_unary_stream";
+static const char __pyx_k_CallDetails___setstate_cython[] = "CallDetails.__setstate_cython__";
+static const char __pyx_k_CensusContext___reduce_cython[] = "CensusContext.__reduce_cython__";
+static const char __pyx_k_ChannelArgs___setstate_cython[] = "_ChannelArgs.__setstate_cython__";
+static const char __pyx_k_Concurrent_RPC_limit_exceeded[] = "Concurrent RPC limit exceeded!";
+static const char __pyx_k_MetadataPluginCallCredentials[] = "MetadataPluginCallCredentials";
+static const char __pyx_k_ReceiveCloseOnServerOperation[] = "ReceiveCloseOnServerOperation";
+static const char __pyx_k_SendStatusFromServerOperation[] = "SendStatusFromServerOperation";
+static const char __pyx_k_handle_cancellation_from_core[] = "_handle_cancellation_from_core";
+static const char __pyx_k_http2_initial_sequence_number[] = "http2_initial_sequence_number";
+static const char __pyx_k_send_error_status_from_server[] = "_send_error_status_from_server";
+static const char __pyx_k_server_certificate_config_ssl[] = "server_certificate_config_ssl";
+static const char __pyx_k_the_server_hasn_t_started_yet[] = "the server hasn't started yet";
+static const char __pyx_k_wait_for_ready_explicitly_set[] = "wait_for_ready_explicitly_set";
+static const char __pyx_k_AioCall_initiate_stream_stream[] = "_AioCall.initiate_stream_stream";
+static const char __pyx_k_AioRpcStatus___setstate_cython[] = "AioRpcStatus.__setstate_cython__";
+static const char __pyx_k_AioRpcStatus_trailing_metadata[] = "AioRpcStatus.trailing_metadata";
+static const char __pyx_k_AioServer__start_shutting_down[] = "AioServer._start_shutting_down";
+static const char __pyx_k_AioServer_wait_for_termination[] = "AioServer.wait_for_termination";
+static const char __pyx_k_BoundEventLoop___reduce_cython[] = "_BoundEventLoop.__reduce_cython__";
+static const char __pyx_k_Cannot_monitor_channel_state_s[] = "Cannot monitor channel state: %s";
+static const char __pyx_k_ChannelState___setstate_cython[] = "_ChannelState.__setstate_cython__";
+static const char __pyx_k_CompletionQueue__internal_poll[] = "CompletionQueue._internal_poll";
+static const char __pyx_k_ConcurrentRpcLimiter__decrease[] = "_ConcurrentRpcLimiter._decrease_active_rpcs_count";
+static const char __pyx_k_Error_in_callback_for_method_s[] = "Error in callback for method [%s]";
+static const char __pyx_k_GrpcArgWrapper___reduce_cython[] = "_GrpcArgWrapper.__reduce_cython__";
+static const char __pyx_k_IntegratedCall___reduce_cython[] = "IntegratedCall.__reduce_cython__";
+static const char __pyx_k_MessageReceiver__async_message[] = "_MessageReceiver._async_message_receiver";
+static const char __pyx_k_Pyx_CFunc_7_cython_6cygrpc_obj[] = "__Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg.<locals>.wrap";
+static const char __pyx_k_Pyx_CFunc_7_cython_6cygrpc_voi[] = "__Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_.<locals>.wrap";
+static const char __pyx_k_ReceiveStatusOnClientOperation[] = "ReceiveStatusOnClientOperation";
+static const char __pyx_k_RequestCallTag___reduce_cython[] = "_RequestCallTag.__reduce_cython__";
+static const char __pyx_k_SegregatedCall___reduce_cython[] = "SegregatedCall.__reduce_cython__";
+static const char __pyx_k_ServerCertificateConfiguration[] = "ServerCertificateConfiguration";
+static const char __pyx_k_ServicerContext_time_remaining[] = "_ServicerContext.time_remaining";
+static const char __pyx_k_SyncServicerContext___setstate[] = "_SyncServicerContext.__setstate_cython__";
+static const char __pyx_k_SyncServicerContext_invocation[] = "_SyncServicerContext.invocation_metadata";
+static const char __pyx_k_dealloc___called_on_running_se[] = "__dealloc__ called on running server %s with status %d";
+static const char __pyx_k_gevent_decrement_channel_count[] = "gevent_decrement_channel_count";
+static const char __pyx_k_gevent_increment_channel_count[] = "gevent_increment_channel_count";
+static const char __pyx_k_grpc_completion_queue_shutdown[] = "grpc_completion_queue_shutdown";
+static const char __pyx_k_pyx_unpickle_ChannelCredential[] = "__pyx_unpickle_ChannelCredentials";
+static const char __pyx_k_pyx_unpickle_InsecureChannelCr[] = "__pyx_unpickle_InsecureChannelCredentials";
+static const char __pyx_k_set_server_call_tracer_factory[] = "set_server_call_tracer_factory";
+static const char __pyx_k_src_python_grpcio_grpc__cython[] = "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi";
+static const char __pyx_k_the_server_has_already_started[] = "the server has already started";
+static const char __pyx_k_ALTSChannelCredentials___reduce[] = "ALTSChannelCredentials.__reduce_cython__";
+static const char __pyx_k_Aborting_method_s_due_to_server[] = "Aborting method [%s] due to server stop.";
+static const char __pyx_k_ActiveThreadCount_await_zero_th[] = "_ActiveThreadCount.await_zero_threads";
+static const char __pyx_k_AioCall__handle_status_once_rec[] = "_AioCall._handle_status_once_received";
+static const char __pyx_k_AioCall_receive_serialized_mess[] = "_AioCall.receive_serialized_message";
+static const char __pyx_k_AioCall_send_serialized_message[] = "_AioCall.send_serialized_message";
+static const char __pyx_k_AioRpcStatus_debug_error_string[] = "AioRpcStatus.debug_error_string";
+static const char __pyx_k_BatchOperationTag___reduce_cyth[] = "_BatchOperationTag.__reduce_cython__";
+static const char __pyx_k_BatchOperationTag___setstate_cy[] = "_BatchOperationTag.__setstate_cython__";
+static const char __pyx_k_BoundEventLoop___setstate_cytho[] = "_BoundEventLoop.__setstate_cython__";
+static const char __pyx_k_COMPRESSION_METADATA_STRING_MAP[] = "_COMPRESSION_METADATA_STRING_MAPPING";
+static const char __pyx_k_CallCredentials___reduce_cython[] = "CallCredentials.__reduce_cython__";
+static const char __pyx_k_Call_credentials_are_only_valid[] = "Call credentials are only valid on secure channels";
+static const char __pyx_k_CallbackFailureHandler___reduce[] = "CallbackFailureHandler.__reduce_cython__";
+static const char __pyx_k_CallbackWrapper___reduce_cython[] = "CallbackWrapper.__reduce_cython__";
+static const char __pyx_k_CensusContext___setstate_cython[] = "CensusContext.__setstate_cython__";
+static const char __pyx_k_CompletionQueue___reduce_cython[] = "CompletionQueue.__reduce_cython__";
+static const char __pyx_k_CompressionOptions_is_algorithm[] = "CompressionOptions.is_algorithm_enabled";
+static const char __pyx_k_ComputeEngineChannelCredentials[] = "ComputeEngineChannelCredentials";
+static const char __pyx_k_ConcurrentRpcLimiter___reduce_c[] = "_ConcurrentRpcLimiter.__reduce_cython__";
+static const char __pyx_k_ConcurrentRpcLimiter___setstate[] = "_ConcurrentRpcLimiter.__setstate_cython__";
+static const char __pyx_k_ConcurrentRpcLimiter_check_befo[] = "_ConcurrentRpcLimiter.check_before_request_call";
+static const char __pyx_k_ConcurrentRpcLimiter_decrease_o[] = "_ConcurrentRpcLimiter.decrease_once_finished";
+static const char __pyx_k_ConnectivityTag___reduce_cython[] = "_ConnectivityTag.__reduce_cython__";
+static const char __pyx_k_ConnectivityTag___setstate_cyth[] = "_ConnectivityTag.__setstate_cython__";
+static const char __pyx_k_Failed_to_get_the_server_please[] = "Failed to get the server, please ensure your server_id==%s is valid";
+static const char __pyx_k_Failed_to_get_the_socket_please[] = "Failed to get the socket, please ensure your socket_id==%s is valid";
+static const char __pyx_k_GrpcArgWrapper___setstate_cytho[] = "_GrpcArgWrapper.__setstate_cython__";
+static const char __pyx_k_HandlerCallDetails___reduce_cyt[] = "_HandlerCallDetails.__reduce_cython__";
+static const char __pyx_k_HandlerCallDetails___setstate_c[] = "_HandlerCallDetails.__setstate_cython__";
+static const char __pyx_k_INTERNAL_CALL_ERROR_MESSAGE_FOR[] = "_INTERNAL_CALL_ERROR_MESSAGE_FORMAT";
+static const char __pyx_k_MessageReceiver___reduce_cython[] = "_MessageReceiver.__reduce_cython__";
+static const char __pyx_k_MessageReceiver___setstate_cyth[] = "_MessageReceiver.__setstate_cython__";
+static const char __pyx_k_MetadataPluginCallCredentials_2[] = "MetadataPluginCallCredentials.__reduce_cython__";
+static const char __pyx_k_MetadataPluginCallCredentials_3[] = "MetadataPluginCallCredentials.__setstate_cython__";
+static const char __pyx_k_No_custom_hooks_are_implemented[] = "No custom hooks are implemented";
+static const char __pyx_k_PollerCompletionQueue_bind_loop[] = "PollerCompletionQueue.bind_loop";
+static const char __pyx_k_Raised_if_the_server_is_stopped[] = "Raised if the server is stopped.";
+static const char __pyx_k_Raised_when_the_usage_of_API_by[] = "Raised when the usage of API by applications is inappropriate.\n\n    For example, trying to invoke RPC on a closed channel, mixing two styles\n    of streaming API on the client side. This exception should not be\n    suppressed.\n    ";
+static const char __pyx_k_ReceiveCloseOnServerOperation_2[] = "ReceiveCloseOnServerOperation.__reduce_cython__";
+static const char __pyx_k_ReceiveCloseOnServerOperation_3[] = "ReceiveCloseOnServerOperation.__setstate_cython__";
+static const char __pyx_k_ReceiveInitialMetadataOperation[] = "ReceiveInitialMetadataOperation";
+static const char __pyx_k_ReceiveMessageOperation_message[] = "ReceiveMessageOperation.message";
+static const char __pyx_k_RequestCallTag___setstate_cytho[] = "_RequestCallTag.__setstate_cython__";
+static const char __pyx_k_SendMessageOperation___setstate[] = "SendMessageOperation.__setstate_cython__";
+static const char __pyx_k_SendStatusFromServerOperation_2[] = "SendStatusFromServerOperation.__reduce_cython__";
+static const char __pyx_k_SendStatusFromServerOperation_3[] = "SendStatusFromServerOperation.__setstate_cython__";
+static const char __pyx_k_ServerShutdownTag___reduce_cyth[] = "_ServerShutdownTag.__reduce_cython__";
+static const char __pyx_k_ServerShutdownTag___setstate_cy[] = "_ServerShutdownTag.__setstate_cython__";
+static const char __pyx_k_ServicerContext___reduce_cython[] = "_ServicerContext.__reduce_cython__";
+static const char __pyx_k_ServicerContext___setstate_cyth[] = "_ServicerContext.__setstate_cython__";
+static const char __pyx_k_ServicerContext_abort_with_stat[] = "_ServicerContext.abort_with_status";
+static const char __pyx_k_ServicerContext_add_done_callba[] = "_ServicerContext.add_done_callback";
+static const char __pyx_k_ServicerContext_disable_next_me[] = "_ServicerContext.disable_next_message_compression";
+static const char __pyx_k_ServicerContext_invocation_meta[] = "_ServicerContext.invocation_metadata";
+static const char __pyx_k_ServicerContext_peer_identities[] = "_ServicerContext.peer_identities";
+static const char __pyx_k_ServicerContext_peer_identity_k[] = "_ServicerContext.peer_identity_key";
+static const char __pyx_k_ServicerContext_send_initial_me[] = "_ServicerContext.send_initial_metadata";
+static const char __pyx_k_ServicerContext_set_compression[] = "_ServicerContext.set_compression";
+static const char __pyx_k_ServicerContext_set_trailing_me[] = "_ServicerContext.set_trailing_metadata";
+static const char __pyx_k_ServicerContext_trailing_metada[] = "_ServicerContext.trailing_metadata";
+static const char __pyx_k_SyncServicerContext___reduce_cy[] = "_SyncServicerContext.__reduce_cython__";
+static const char __pyx_k_SyncServicerContext_add_callbac[] = "_SyncServicerContext.add_callback";
+static const char __pyx_k_SyncServicerContext_auth_contex[] = "_SyncServicerContext.auth_context";
+static const char __pyx_k_SyncServicerContext_disable_nex[] = "_SyncServicerContext.disable_next_message_compression";
+static const char __pyx_k_SyncServicerContext_peer_identi[] = "_SyncServicerContext.peer_identities";
+static const char __pyx_k_SyncServicerContext_send_initia[] = "_SyncServicerContext.send_initial_metadata";
+static const char __pyx_k_SyncServicerContext_set_compres[] = "_SyncServicerContext.set_compression";
+static const char __pyx_k_SyncServicerContext_set_details[] = "_SyncServicerContext.set_details";
+static const char __pyx_k_SyncServicerContext_set_trailin[] = "_SyncServicerContext.set_trailing_metadata";
+static const char __pyx_k_SyncServicerContext_time_remain[] = "_SyncServicerContext.time_remaining";
+static const char __pyx_k_Tuple_Tuple_str_Union_str_bytes[] = "Tuple[Tuple[str, Union[str, bytes]]...]";
+static const char __pyx_k_Unexpected_s_raised_by_servicer[] = "Unexpected [%s] raised by servicer method [%s]";
+static const char __pyx_k_add_callback_handler_locals_han[] = "_add_callback_handler.<locals>.handle_callbacks";
+static const char __pyx_k_find_method_handler_locals_quer[] = "_find_method_handler.<locals>.query_handlers";
+static const char __pyx_k_finish_handler_with_stream_resp[] = "_finish_handler_with_stream_responses";
+static const char __pyx_k_finish_handler_with_unary_respo[] = "_finish_handler_with_unary_response";
+static const char __pyx_k_grpc_server_shutdown_and_notify[] = "grpc_server_shutdown_and_notify";
+static const char __pyx_k_integrated_call_locals_on_succe[] = "_integrated_call.<locals>.on_success";
+static const char __pyx_k_maybe_save_server_trace_context[] = "maybe_save_server_trace_context";
+static const char __pyx_k_of_RPC_that_terminated_with_sta[] = "<{} of RPC that terminated with:\n\tstatus = {}\n\tdetails = \"{}\"\n>";
+static const char __pyx_k_segregated_call_locals_on_succe[] = "_segregated_call.<locals>.on_success";
+static const char __pyx_k_self__cq_cannot_be_converted_to[] = "self._cq cannot be converted to a Python object for pickling";
+static const char __pyx_k_self_arg_cannot_be_converted_to[] = "self.arg cannot be converted to a Python object for pickling";
+static const char __pyx_k_ALTSChannelCredentials___setstat[] = "ALTSChannelCredentials.__setstate_cython__";
+static const char __pyx_k_Abort_error_unexpectedly_suppres[] = "Abort error unexpectedly suppressed: %s";
+static const char __pyx_k_AioChannel_check_connectivity_st[] = "AioChannel.check_connectivity_state";
+static const char __pyx_k_AioChannel_watch_connectivity_st[] = "AioChannel.watch_connectivity_state";
+static const char __pyx_k_AioServer__serving_task_crash_ha[] = "AioServer._serving_task_crash_handler";
+static const char __pyx_k_AioServer_add_generic_rpc_handle[] = "AioServer.add_generic_rpc_handlers";
+static const char __pyx_k_BaseCompletionQueue___reduce_cyt[] = "BaseCompletionQueue.__reduce_cython__";
+static const char __pyx_k_BaseCompletionQueue___setstate_c[] = "BaseCompletionQueue.__setstate_cython__";
+static const char __pyx_k_BatchOperationEvent___reduce_cyt[] = "BatchOperationEvent.__reduce_cython__";
+static const char __pyx_k_BatchOperationEvent___setstate_c[] = "BatchOperationEvent.__setstate_cython__";
+static const char __pyx_k_Binary_metadata_key_s_expected_b[] = "Binary metadata key=\"%s\" expected bytes, got %s";
+static const char __pyx_k_CYGRPC_STATUS_CODE_TO_STATUS_COD[] = "CYGRPC_STATUS_CODE_TO_STATUS_CODE";
+static const char __pyx_k_CallCredentials___setstate_cytho[] = "CallCredentials.__setstate_cython__";
+static const char __pyx_k_Call_credentials_may_not_be_NULL[] = "Call credentials may not be NULL.";
+static const char __pyx_k_CallbackFailureHandler___setstat[] = "CallbackFailureHandler.__setstate_cython__";
+static const char __pyx_k_CallbackWrapper___setstate_cytho[] = "CallbackWrapper.__setstate_cython__";
+static const char __pyx_k_Cannot_invoke_RPC_on_closed_chan[] = "Cannot invoke RPC on closed channel!";
+static const char __pyx_k_ChannelCredentials___reduce_cyth[] = "ChannelCredentials.__reduce_cython__";
+static const char __pyx_k_ChannelCredentials___setstate_cy[] = "ChannelCredentials.__setstate_cython__";
+static const char __pyx_k_Channel_check_connectivity_state[] = "Channel.check_connectivity_state";
+static const char __pyx_k_Channel_get_registered_call_hand[] = "Channel.get_registered_call_handle";
+static const char __pyx_k_Channel_watch_connectivity_state[] = "Channel.watch_connectivity_state";
+static const char __pyx_k_CompletionQueue___setstate_cytho[] = "CompletionQueue.__setstate_cython__";
+static const char __pyx_k_CompositeCallCredentials___reduc[] = "CompositeCallCredentials.__reduce_cython__";
+static const char __pyx_k_CompositeCallCredentials___setst[] = "CompositeCallCredentials.__setstate_cython__";
+static const char __pyx_k_CompositeChannelCredentials___re[] = "CompositeChannelCredentials.__reduce_cython__";
+static const char __pyx_k_CompositeChannelCredentials___se[] = "CompositeChannelCredentials.__setstate_cython__";
+static const char __pyx_k_CompressionOptions___reduce_cyth[] = "CompressionOptions.__reduce_cython__";
+static const char __pyx_k_CompressionOptions___setstate_cy[] = "CompressionOptions.__setstate_cython__";
+static const char __pyx_k_CompressionOptions_disable_algor[] = "CompressionOptions.disable_algorithm";
+static const char __pyx_k_CompressionOptions_enable_algori[] = "CompressionOptions.enable_algorithm";
+static const char __pyx_k_CompressionOptions_to_channel_ar[] = "CompressionOptions.to_channel_arg";
+static const char __pyx_k_Compression_setting_must_be_spec[] = "Compression setting must be specified before sending initial metadata";
+static const char __pyx_k_ConnectivityEvent___reduce_cytho[] = "ConnectivityEvent.__reduce_cython__";
+static const char __pyx_k_ConnectivityEvent___setstate_cyt[] = "ConnectivityEvent.__setstate_cython__";
+static const char __pyx_k_Core_should_not_return_GRPC_QUEU[] = "Core should not return GRPC_QUEUE_TIMEOUT!";
+static const char __pyx_k_Credentials_couldn_t_have_been_s[] = "Credentials couldn't have been set: {0}";
+static const char __pyx_k_Dedicated_exception_class_for_wa[] = "Dedicated exception class for watch connectivity failed.\n\n    It might be failed due to deadline exceeded.\n    ";
+static const char __pyx_k_Error_fetching_certificate_confi[] = "Error fetching certificate config";
+static const char __pyx_k_Error_in_grpc_server_request_cal[] = "Error in grpc_server_request_call: %s";
+static const char __pyx_k_ExecuteBatchError_raised_in_core[] = "ExecuteBatchError raised in core by servicer method [%s]";
+static const char __pyx_k_Exiting_child_due_to_raised_exce[] = "Exiting child due to raised exception";
+static const char __pyx_k_Expected_bytes_str_or_unicode_no[] = "Expected bytes, str, or unicode, not {}";
+static const char __pyx_k_Expected_int_bytes_or_behavior_g[] = "Expected int, bytes, or behavior, got {}";
+static const char __pyx_k_Failed_grpc_call_start_batch_wit[] = "Failed grpc_call_start_batch: {} with grpc_call_error value: '{}'";
+static const char __pyx_k_Failed_sending_error_status_from[] = "Failed sending error status from server";
+static const char __pyx_k_Failed_to_get_server_sockets_ple[] = "Failed to get server sockets, please ensure your server_id==%s and start_socket_id==%s and max_results==%s is valid";
+static const char __pyx_k_Failed_to_get_servers_please_ens[] = "Failed to get servers, please ensure your start_server_id==%s is valid";
+static const char __pyx_k_Failed_to_get_the_channel_please[] = "Failed to get the channel, please ensure your channel_id==%s is valid";
+static const char __pyx_k_Failed_to_get_the_subchannel_ple[] = "Failed to get the subchannel, please ensure your subchannel_id==%s is valid";
+static const char __pyx_k_Failed_to_get_top_channels_pleas[] = "Failed to get top channels, please ensure your start_channel_id==%s is valid";
+static const char __pyx_k_Failed_to_receive_any_message_fr[] = "Failed to receive any message from Core";
+static const char __pyx_k_Failed_to_shutdown_gRPC_Core_aft[] = "Failed to shutdown gRPC Core after fork()";
+static const char __pyx_k_Failed_to_shutdown_gRPC_Python_t[] = "Failed to shutdown gRPC Python threads prior to fork. Behavior after fork will be undefined.";
+static const char __pyx_k_ForkManagedThread___init___local[] = "ForkManagedThread.__init__.<locals>.managed_target";
+static const char __pyx_k_GRPC_COMPRESSION_CHANNEL_DEFAULT[] = "GRPC_COMPRESSION_CHANNEL_DEFAULT_ALGORITHM";
+static const char __pyx_k_GRPC_COMPRESSION_REQUEST_ALGORIT[] = "GRPC_COMPRESSION_REQUEST_ALGORITHM_MD_KEY";
+static const char __pyx_k_GRPC_PROPAGATE_CENSUS_STATS_CONT[] = "GRPC_PROPAGATE_CENSUS_STATS_CONTEXT";
+static const char __pyx_k_GRPC_PROPAGATE_CENSUS_TRACING_CO[] = "GRPC_PROPAGATE_CENSUS_TRACING_CONTEXT";
+static const char __pyx_k_Incompatible_checksums_0x_x_vs_0[] = "Incompatible checksums (0x%x vs (0xe3b0c44, 0xda39a3e, 0xd41d8cd) = ())";
+static const char __pyx_k_InsecureChannelCredentials___red[] = "InsecureChannelCredentials.__reduce_cython__";
+static const char __pyx_k_InsecureChannelCredentials___set[] = "InsecureChannelCredentials.__setstate_cython__";
+static const char __pyx_k_IntegratedCall___setstate_cython[] = "IntegratedCall.__setstate_cython__";
+static const char __pyx_k_Invalid_trailing_metadata_type_e[] = "Invalid trailing metadata type, expected ";
+static const char __pyx_k_LocalChannelCredentials___reduce[] = "LocalChannelCredentials.__reduce_cython__";
+static const char __pyx_k_LocalChannelCredentials___setsta[] = "LocalChannelCredentials.__setstate_cython__";
+static const char __pyx_k_Please_report_to_https_github_co[] = "Please report to https://github.com/grpc/grpc/issues";
+static const char __pyx_k_PollerCompletionQueue___reduce_c[] = "PollerCompletionQueue.__reduce_cython__";
+static const char __pyx_k_PollerCompletionQueue___setstate[] = "PollerCompletionQueue.__setstate_cython__";
+static const char __pyx_k_PollerCompletionQueue__handle_ev[] = "PollerCompletionQueue._handle_events";
+static const char __pyx_k_PollerCompletionQueue__poll_wrap[] = "PollerCompletionQueue._poll_wrapper";
+static const char __pyx_k_Pyx_CFunc_7_cython_6cygrpc_obj_2[] = "__Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_.<locals>.wrap";
+static const char __pyx_k_Pyx_CFunc_7_cython_6cygrpc_obj_3[] = "__Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args.<locals>.wrap";
+static const char __pyx_k_RPC_cancelled_for_servicer_metho[] = "RPC cancelled for servicer method [%s]";
+static const char __pyx_k_RPC_cancelled_for_unknown_reason[] = "RPC cancelled for unknown reason.";
+static const char __pyx_k_Raised_upon_unexpected_errors_in[] = "Raised upon unexpected errors in native code.";
+static const char __pyx_k_Raised_when_calling_abort_in_ser[] = "Raised when calling abort in servicer methods.\n\n    This exception should not be suppressed. Applications may catch it to\n    perform certain clean-up logic, and then re-raise it.\n    ";
+static const char __pyx_k_Raised_when_execute_batch_return[] = "Raised when execute batch returns a failure from Core.";
+static const char __pyx_k_ReceiveCloseOnServerOperation_ca[] = "ReceiveCloseOnServerOperation.cancelled";
+static const char __pyx_k_ReceiveCloseOnServerOperation_ty[] = "ReceiveCloseOnServerOperation.type";
+static const char __pyx_k_ReceiveMessageOperation___reduce[] = "ReceiveMessageOperation.__reduce_cython__";
+static const char __pyx_k_ReceiveMessageOperation___setsta[] = "ReceiveMessageOperation.__setstate_cython__";
+static const char __pyx_k_ReceiveStatusOnClientOperation_2[] = "ReceiveStatusOnClientOperation.__reduce_cython__";
+static const char __pyx_k_ReceiveStatusOnClientOperation_3[] = "ReceiveStatusOnClientOperation.__setstate_cython__";
+static const char __pyx_k_ReceiveStatusOnClientOperation_c[] = "ReceiveStatusOnClientOperation.code";
+static const char __pyx_k_ReceiveStatusOnClientOperation_d[] = "ReceiveStatusOnClientOperation.details";
+static const char __pyx_k_ReceiveStatusOnClientOperation_e[] = "ReceiveStatusOnClientOperation.error_string";
+static const char __pyx_k_ReceiveStatusOnClientOperation_t[] = "ReceiveStatusOnClientOperation.type";
+static const char __pyx_k_RequestCallEvent___reduce_cython[] = "RequestCallEvent.__reduce_cython__";
+static const char __pyx_k_RequestCallEvent___setstate_cyth[] = "RequestCallEvent.__setstate_cython__";
+static const char __pyx_k_SSLChannelCredentials___reduce_c[] = "SSLChannelCredentials.__reduce_cython__";
+static const char __pyx_k_SSLChannelCredentials___setstate[] = "SSLChannelCredentials.__setstate_cython__";
+static const char __pyx_k_SSLSessionCacheLRU___reduce_cyth[] = "SSLSessionCacheLRU.__reduce_cython__";
+static const char __pyx_k_SSLSessionCacheLRU___setstate_cy[] = "SSLSessionCacheLRU.__setstate_cython__";
+static const char __pyx_k_SegregatedCall___setstate_cython[] = "SegregatedCall.__setstate_cython__";
+static const char __pyx_k_SendCloseFromClientOperation___r[] = "SendCloseFromClientOperation.__reduce_cython__";
+static const char __pyx_k_SendCloseFromClientOperation___s[] = "SendCloseFromClientOperation.__setstate_cython__";
+static const char __pyx_k_SendCloseFromClientOperation_typ[] = "SendCloseFromClientOperation.type";
+static const char __pyx_k_SendInitialMetadataOperation___r[] = "SendInitialMetadataOperation.__reduce_cython__";
+static const char __pyx_k_SendInitialMetadataOperation___s[] = "SendInitialMetadataOperation.__setstate_cython__";
+static const char __pyx_k_SendInitialMetadataOperation_typ[] = "SendInitialMetadataOperation.type";
+static const char __pyx_k_SendMessageOperation___reduce_cy[] = "SendMessageOperation.__reduce_cython__";
+static const char __pyx_k_SendStatusFromServerOperation_ty[] = "SendStatusFromServerOperation.type";
+static const char __pyx_k_Send_initial_metadata_failed_alr[] = "Send initial metadata failed: already sent";
+static const char __pyx_k_ServerCertificateConfig___reduce[] = "ServerCertificateConfig.__reduce_cython__";
+static const char __pyx_k_ServerCertificateConfig___setsta[] = "ServerCertificateConfig.__setstate_cython__";
+static const char __pyx_k_ServerCredentials___reduce_cytho[] = "ServerCredentials.__reduce_cython__";
+static const char __pyx_k_ServerCredentials___setstate_cyt[] = "ServerCredentials.__setstate_cython__";
+static const char __pyx_k_ServerShutdownEvent___reduce_cyt[] = "ServerShutdownEvent.__reduce_cython__";
+static const char __pyx_k_ServerShutdownEvent___setstate_c[] = "ServerShutdownEvent.__setstate_cython__";
+static const char __pyx_k_Server_register_completion_queue[] = "Server.register_completion_queue";
+static const char __pyx_k_Server_shutdown_failed_no_comple[] = "Server shutdown failed: no completion queue.";
+static const char __pyx_k_SslPemKeyCertPair___reduce_cytho[] = "SslPemKeyCertPair.__reduce_cython__";
+static const char __pyx_k_SslPemKeyCertPair___setstate_cyt[] = "SslPemKeyCertPair.__setstate_cython__";
+static const char __pyx_k_The_base_class_for_exceptions_ge[] = "The base class for exceptions generated by gRPC AsyncIO stack.";
+static const char __pyx_k_XDSChannelCredentials___reduce_c[] = "XDSChannelCredentials.__reduce_cython__";
+static const char __pyx_k_XDSChannelCredentials___setstate[] = "XDSChannelCredentials.__setstate_cython__";
+static const char __pyx_k_cannot_register_completion_queue[] = "cannot register completion queues after start";
+static const char __pyx_k_cert_config_fetcher_must_be_call[] = "cert_config_fetcher must be callable";
+static const char __pyx_k_channel_credentials_compute_engi[] = "channel_credentials_compute_engine";
+static const char __pyx_k_clear_server_call_tracer_factory[] = "clear_server_call_tracer_factory";
+static const char __pyx_k_create_server_call_tracer_factor[] = "create_server_call_tracer_factory";
+static const char __pyx_k_disable_next_message_compression[] = "disable_next_message_compression";
+static const char __pyx_k_expected_certificate_to_be_bytes[] = "expected certificate to be bytes, got %s";
+static const char __pyx_k_expected_pem_key_cert_pairs_to_b[] = "expected pem_key_cert_pairs to be sequence of SslPemKeyCertPair";
+static const char __pyx_k_expected_registered_completion_q[] = "expected registered completion queue";
+static const char __pyx_k_generator_to_async_generator_loc[] = "generator_to_async_generator.<locals>.yield_to_queue";
+static const char __pyx_k_grpc_python__cygrpc__GrpcArgWrap[] = "grpc.python._cygrpc._GrpcArgWrapper";
+static const char __pyx_k_if_error_code_is_specified_so_mu[] = "if error_code is specified, so must details (and vice-versa)";
+static const char __pyx_k_initial_cert_config_must_be_a_gr[] = "initial_cert_config must be a grpc.ServerCertificateConfiguration";
+static const char __pyx_k_install_context_from_request_cal[] = "install_context_from_request_call_event_aio";
+static const char __pyx_k_internal_error_user_data_must_be[] = "internal error: user_data must be specified";
+static const char __pyx_k_invalid_call_object_cannot_be_us[] = "invalid call object cannot be used from Python";
+static const char __pyx_k_maximum_concurrent_rpcs_should_b[] = "maximum_concurrent_rpcs should be a postive integer";
+static const char __pyx_k_next_call_event_locals_on_succes[] = "next_call_event.<locals>.on_success";
+static const char __pyx_k_no_default___reduce___due_to_non[] = "no default __reduce__ due to non-trivial __cinit__";
+static const char __pyx_k_queue_must_be_shutting_down_to_b[] = "queue must be shutting down to be cleared";
+static const char __pyx_k_raise_if_not_valid_trailing_meta[] = "raise_if_not_valid_trailing_metadata";
+static const char __pyx_k_return_from_user_request_generat[] = "return_from_user_request_generator";
+static const char __pyx_k_self_c_argument_cannot_be_conver[] = "self.c_argument cannot be converted to a Python object for pickling";
+static const char __pyx_k_self_c_credentials_cannot_be_con[] = "self.c_credentials cannot be converted to a Python object for pickling";
+static const char __pyx_k_self_c_op_cannot_be_converted_to[] = "self.c_op cannot be converted to a Python object for pickling";
+static const char __pyx_k_server_credentials_ssl_dynamic_c[] = "server_credentials_ssl_dynamic_cert_config";
+static const char __pyx_k_server_must_be_started_and_not_s[] = "server must be started and not shutting down";
+static const char __pyx_k_server_queue_must_be_a_registere[] = "server_queue must be a registered completion queue";
+static const char __pyx_k_set_instrumentation_context_on_c[] = "set_instrumentation_context_on_call_aio";
+static const char __pyx_k_src_python_grpcio_grpc__cython_2[] = "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi";
+static const char __pyx_k_src_python_grpcio_grpc__cython_3[] = "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi";
+static const char __pyx_k_src_python_grpcio_grpc__cython_4[] = "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi";
+static const char __pyx_k_src_python_grpcio_grpc__cython_5[] = "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi";
+static const char __pyx_k_src_python_grpcio_grpc__cython_6[] = "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi";
+static const char __pyx_k_src_python_grpcio_grpc__cython_7[] = "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi";
+static const char __pyx_k_src_python_grpcio_grpc__cython_8[] = "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi";
+static const char __pyx_k_src_python_grpcio_grpc__cython_9[] = "src/python/grpcio/grpc/_cython/_cygrpc/csds.pyx.pxi";
+static const char __pyx_k_the_server_must_be_shutting_down[] = "the server must be shutting down to cancel all calls";
+static const char __pyx_k_ComputeEngineChannelCredentials_2[] = "ComputeEngineChannelCredentials.__reduce_cython__";
+static const char __pyx_k_ComputeEngineChannelCredentials_3[] = "ComputeEngineChannelCredentials.__setstate_cython__";
+static const char __pyx_k_ReceiveInitialMetadataOperation_2[] = "ReceiveInitialMetadataOperation.type";
+static const char __pyx_k_ReceiveInitialMetadataOperation_3[] = "ReceiveInitialMetadataOperation.initial_metadata";
+static const char __pyx_k_ReceiveInitialMetadataOperation_4[] = "ReceiveInitialMetadataOperation.__reduce_cython__";
+static const char __pyx_k_ReceiveInitialMetadataOperation_5[] = "ReceiveInitialMetadataOperation.__setstate_cython__";
+static const char __pyx_k_SyncServicerContext_peer_identi_2[] = "_SyncServicerContext.peer_identity_key";
+static const char __pyx_k_of_RPC_that_terminated_with_sta_2[] = "<{} of RPC that terminated with:\n\tstatus = {}\n\tdetails = \"{}\"\n\tdebug_error_string = \"{}\"\n>";
+static const char __pyx_k_src_python_grpcio_grpc__cython_10[] = "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi";
+static const char __pyx_k_src_python_grpcio_grpc__cython_11[] = "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi";
+static const char __pyx_k_src_python_grpcio_grpc__cython_12[] = "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi";
+static const char __pyx_k_src_python_grpcio_grpc__cython_13[] = "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi";
+static const char __pyx_k_src_python_grpcio_grpc__cython_14[] = "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi";
+static const char __pyx_k_src_python_grpcio_grpc__cython_15[] = "src/python/grpcio/grpc/_cython/_cygrpc/_hooks.pyx.pxi";
+static const char __pyx_k_src_python_grpcio_grpc__cython_16[] = "src/python/grpcio/grpc/_cython/_cygrpc/observability.pyx.pxi";
+static const char __pyx_k_src_python_grpcio_grpc__cython_17[] = "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi";
+static const char __pyx_k_src_python_grpcio_grpc__cython_18[] = "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pyx.pxi";
+static const char __pyx_k_src_python_grpcio_grpc__cython_19[] = "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi";
+static const char __pyx_k_src_python_grpcio_grpc__cython_20[] = "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi";
+static const char __pyx_k_src_python_grpcio_grpc__cython_21[] = "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi";
+static const char __pyx_k_src_python_grpcio_grpc__cython_22[] = "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi";
+static const char __pyx_k_src_python_grpcio_grpc__cython_23[] = "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi";
+static const char __pyx_k_Error_fetching_certificate_confi_2[] = "Error fetching certificate configuration: certificate configuration must be of type grpc.ServerCertificateConfiguration, not %s";
+static const char __pyx_k_Incompatible_checksums_0x_x_vs_0_2[] = "Incompatible checksums (0x%x vs (0xa3b308d, 0x7117f7c, 0xa3714dd) = (_crash_exception, _generic_handlers, _interceptors, _limiter, _loop, _server, _serving_task, _shutdown_callback_wrapper, _shutdown_completed, _shutdown_lock, _status, _thread_pool))";
+static const char __pyx_k_ReceiveStatusOnClientOperation_t_2[] = "ReceiveStatusOnClientOperation.trailing_metadata";
+static const char __pyx_k_install_context_from_request_cal_2[] = "install_context_from_request_call_event";
+/* #### Code section: decls ### */
+static PyObject *__pyx_pf_11cfunc_dot_to_py_91__Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg_wrap(PyObject *__pyx_self, struct __pyx_obj_7_cython_6cygrpc__LatentEventArg *__pyx_v_latent_event_arg); /* proto */
+static PyObject *__pyx_pf_11cfunc_dot_to_py_58__Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py__wrap(PyObject *__pyx_self); /* proto */
+static PyObject *__pyx_pf_11cfunc_dot_to_py_86__Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args_wrap(PyObject *__pyx_self, PyObject *__pyx_v_cb, PyObject *__pyx_v_args); /* proto */
+static PyObject *__pyx_pf_11cfunc_dot_to_py_77__Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py__wrap(PyObject *__pyx_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_15_GrpcArgWrapper___reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__GrpcArgWrapper *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_15_GrpcArgWrapper_2__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__GrpcArgWrapper *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_11_ChannelArg___reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__ChannelArg *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_11_ChannelArg_2__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__ChannelArg *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
+static int __pyx_pf_7_cython_6cygrpc_12_ChannelArgs___cinit__(struct __pyx_obj_7_cython_6cygrpc__ChannelArgs *__pyx_v_self, PyObject *__pyx_v_arguments); /* proto */
+static void __pyx_pf_7_cython_6cygrpc_12_ChannelArgs_2__dealloc__(struct __pyx_obj_7_cython_6cygrpc__ChannelArgs *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_12_ChannelArgs_10_arguments___get__(struct __pyx_obj_7_cython_6cygrpc__ChannelArgs *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_12_ChannelArgs_11_references___get__(struct __pyx_obj_7_cython_6cygrpc__ChannelArgs *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_12_ChannelArgs_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__ChannelArgs *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_12_ChannelArgs_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__ChannelArgs *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
+static int __pyx_pf_7_cython_6cygrpc_4Call___cinit__(struct __pyx_obj_7_cython_6cygrpc_Call *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_4Call_2_start_batch(struct __pyx_obj_7_cython_6cygrpc_Call *__pyx_v_self, PyObject *__pyx_v_operations, PyObject *__pyx_v_tag, PyObject *__pyx_v_retain_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_4Call_4start_client_batch(struct __pyx_obj_7_cython_6cygrpc_Call *__pyx_v_self, PyObject *__pyx_v_operations, PyObject *__pyx_v_tag); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_4Call_6start_server_batch(struct __pyx_obj_7_cython_6cygrpc_Call *__pyx_v_self, PyObject *__pyx_v_operations, PyObject *__pyx_v_tag); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_4Call_8cancel(struct __pyx_obj_7_cython_6cygrpc_Call *__pyx_v_self, grpc_status_code __pyx_v_error_code, PyObject *__pyx_v_details); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_4Call_10set_credentials(struct __pyx_obj_7_cython_6cygrpc_Call *__pyx_v_self, struct __pyx_obj_7_cython_6cygrpc_CallCredentials *__pyx_v_call_credentials); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_4Call_12peer(struct __pyx_obj_7_cython_6cygrpc_Call *__pyx_v_self); /* proto */
+static void __pyx_pf_7_cython_6cygrpc_4Call_14__dealloc__(struct __pyx_obj_7_cython_6cygrpc_Call *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_4Call_8is_valid___get__(struct __pyx_obj_7_cython_6cygrpc_Call *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_4Call_16_custom_op_on_c_call(struct __pyx_obj_7_cython_6cygrpc_Call *__pyx_v_self, int __pyx_v_op); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_4Call_18__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_Call *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_4Call_20__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_Call *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
+static int __pyx_pf_7_cython_6cygrpc_10_CallState___cinit__(struct __pyx_obj_7_cython_6cygrpc__CallState *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_10_CallState_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__CallState *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_10_CallState_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__CallState *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
+static int __pyx_pf_7_cython_6cygrpc_13_ChannelState___cinit__(struct __pyx_obj_7_cython_6cygrpc__ChannelState *__pyx_v_self, PyObject *__pyx_v_target); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_13_ChannelState_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__ChannelState *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_13_ChannelState_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__ChannelState *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
+static int __pyx_pf_7_cython_6cygrpc_10CallHandle___cinit__(struct __pyx_obj_7_cython_6cygrpc_CallHandle *__pyx_v_self, struct __pyx_obj_7_cython_6cygrpc__ChannelState *__pyx_v_channel_state, PyObject *__pyx_v_method); /* proto */
+static void __pyx_pf_7_cython_6cygrpc_10CallHandle_2__dealloc__(struct __pyx_obj_7_cython_6cygrpc_CallHandle *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_10CallHandle_11call_handle___get__(struct __pyx_obj_7_cython_6cygrpc_CallHandle *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_10CallHandle_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_CallHandle *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_10CallHandle_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_CallHandle *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
+static int __pyx_pf_7_cython_6cygrpc_14IntegratedCall___cinit__(struct __pyx_obj_7_cython_6cygrpc_IntegratedCall *__pyx_v_self, struct __pyx_obj_7_cython_6cygrpc__ChannelState *__pyx_v_channel_state, struct __pyx_obj_7_cython_6cygrpc__CallState *__pyx_v_call_state); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_14IntegratedCall_2operate(struct __pyx_obj_7_cython_6cygrpc_IntegratedCall *__pyx_v_self, PyObject *__pyx_v_operations, PyObject *__pyx_v_tag); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_14IntegratedCall_4cancel(struct __pyx_obj_7_cython_6cygrpc_IntegratedCall *__pyx_v_self, PyObject *__pyx_v_code, PyObject *__pyx_v_details); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_14IntegratedCall_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_IntegratedCall *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_14IntegratedCall_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_IntegratedCall *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_16_integrated_call_on_success(PyObject *__pyx_self, PyObject *__pyx_v_started_tags); /* proto */
+static int __pyx_pf_7_cython_6cygrpc_14SegregatedCall___cinit__(struct __pyx_obj_7_cython_6cygrpc_SegregatedCall *__pyx_v_self, struct __pyx_obj_7_cython_6cygrpc__ChannelState *__pyx_v_channel_state, struct __pyx_obj_7_cython_6cygrpc__CallState *__pyx_v_call_state); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_14SegregatedCall_2operate(struct __pyx_obj_7_cython_6cygrpc_SegregatedCall *__pyx_v_self, PyObject *__pyx_v_operations, PyObject *__pyx_v_tag); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_14SegregatedCall_4cancel(struct __pyx_obj_7_cython_6cygrpc_SegregatedCall *__pyx_v_self, PyObject *__pyx_v_code, PyObject *__pyx_v_details); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_14SegregatedCall_10next_event_on_success(PyObject *__pyx_self, PyObject *__pyx_v_tag); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_14SegregatedCall_10next_event_2on_failure(PyObject *__pyx_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_14SegregatedCall_6next_event(struct __pyx_obj_7_cython_6cygrpc_SegregatedCall *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_14SegregatedCall_8__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_SegregatedCall *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_14SegregatedCall_10__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_SegregatedCall *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_16_segregated_call_on_success(PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_started_tags); /* proto */
+static int __pyx_pf_7_cython_6cygrpc_7Channel___cinit__(struct __pyx_obj_7_cython_6cygrpc_Channel *__pyx_v_self, PyObject *__pyx_v_target, PyObject *__pyx_v_arguments, struct __pyx_obj_7_cython_6cygrpc_ChannelCredentials *__pyx_v_channel_credentials); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_7Channel_2target(struct __pyx_obj_7_cython_6cygrpc_Channel *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_7Channel_4integrated_call(struct __pyx_obj_7_cython_6cygrpc_Channel *__pyx_v_self, int __pyx_v_flags, PyObject *__pyx_v_method, PyObject *__pyx_v_host, PyObject *__pyx_v_deadline, PyObject *__pyx_v_metadata, struct __pyx_obj_7_cython_6cygrpc_CallCredentials *__pyx_v_credentials, PyObject *__pyx_v_operationses_and_tags, PyObject *__pyx_v_context, PyObject *__pyx_v_registered_call_handle); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_7Channel_15next_call_event_on_success(PyObject *__pyx_self, PyObject *__pyx_v_tag); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_7Channel_6next_call_event(struct __pyx_obj_7_cython_6cygrpc_Channel *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_7Channel_8segregated_call(struct __pyx_obj_7_cython_6cygrpc_Channel *__pyx_v_self, int __pyx_v_flags, PyObject *__pyx_v_method, PyObject *__pyx_v_host, PyObject *__pyx_v_deadline, PyObject *__pyx_v_metadata, struct __pyx_obj_7_cython_6cygrpc_CallCredentials *__pyx_v_credentials, PyObject *__pyx_v_operationses_and_tags, PyObject *__pyx_v_context, PyObject *__pyx_v_registered_call_handle); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_7Channel_10check_connectivity_state(struct __pyx_obj_7_cython_6cygrpc_Channel *__pyx_v_self, int __pyx_v_try_to_connect); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_7Channel_12watch_connectivity_state(struct __pyx_obj_7_cython_6cygrpc_Channel *__pyx_v_self, grpc_connectivity_state __pyx_v_last_observed_state, PyObject *__pyx_v_deadline); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_7Channel_14close(struct __pyx_obj_7_cython_6cygrpc_Channel *__pyx_v_self, PyObject *__pyx_v_code, PyObject *__pyx_v_details); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_7Channel_16close_on_fork(struct __pyx_obj_7_cython_6cygrpc_Channel *__pyx_v_self, PyObject *__pyx_v_code, PyObject *__pyx_v_details); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_7Channel_18get_registered_call_handle(struct __pyx_obj_7_cython_6cygrpc_Channel *__pyx_v_self, PyObject *__pyx_v_method); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_7Channel_20__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_Channel *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_7Channel_22__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_Channel *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_channelz_get_top_channels(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_start_channel_id); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_2channelz_get_servers(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_start_server_id); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_4channelz_get_server(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_server_id); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_6channelz_get_server_sockets(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_server_id, PyObject *__pyx_v_start_socket_id, PyObject *__pyx_v_max_results); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_8channelz_get_channel(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_channel_id); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_10channelz_get_subchannel(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_subchannel_id); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_12channelz_get_socket(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_socket_id); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_14dump_xds_configs(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_16_spawn_callback_in_thread(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_cb_func, PyObject *__pyx_v_args); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_18set_async_callback_func(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_callback_func); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_20_spawn_callback_async(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_callback, PyObject *__pyx_v_args); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_15CallCredentials___reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_CallCredentials *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_15CallCredentials_2__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_CallCredentials *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_13_get_metadata_callback(PyObject *__pyx_self, PyObject *__pyx_v_metadata, grpc_status_code __pyx_v_status, PyObject *__pyx_v_error_details); /* proto */
+static int __pyx_pf_7_cython_6cygrpc_29MetadataPluginCallCredentials___cinit__(struct __pyx_obj_7_cython_6cygrpc_MetadataPluginCallCredentials *__pyx_v_self, PyObject *__pyx_v_metadata_plugin, PyObject *__pyx_v_name); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_29MetadataPluginCallCredentials_16_metadata_plugin___get__(struct __pyx_obj_7_cython_6cygrpc_MetadataPluginCallCredentials *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_29MetadataPluginCallCredentials_5_name___get__(struct __pyx_obj_7_cython_6cygrpc_MetadataPluginCallCredentials *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_29MetadataPluginCallCredentials_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_MetadataPluginCallCredentials *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_29MetadataPluginCallCredentials_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_MetadataPluginCallCredentials *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
+static int __pyx_pf_7_cython_6cygrpc_24CompositeCallCredentials___cinit__(struct __pyx_obj_7_cython_6cygrpc_CompositeCallCredentials *__pyx_v_self, PyObject *__pyx_v_call_credentialses); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_24CompositeCallCredentials_19_call_credentialses___get__(struct __pyx_obj_7_cython_6cygrpc_CompositeCallCredentials *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_24CompositeCallCredentials_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_CompositeCallCredentials *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_24CompositeCallCredentials_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_CompositeCallCredentials *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_18ChannelCredentials___reduce_cython__(struct __pyx_obj_7_cython_6cygrpc_ChannelCredentials *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_18ChannelCredentials_2__setstate_cython__(struct __pyx_obj_7_cython_6cygrpc_ChannelCredentials *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
+static int __pyx_pf_7_cython_6cygrpc_18SSLSessionCacheLRU___cinit__(struct __pyx_obj_7_cython_6cygrpc_SSLSessionCacheLRU *__pyx_v_self, PyObject *__pyx_v_capacity); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_18SSLSessionCacheLRU_2__int__(struct __pyx_obj_7_cython_6cygrpc_SSLSessionCacheLRU *__pyx_v_self); /* proto */
+static void __pyx_pf_7_cython_6cygrpc_18SSLSessionCacheLRU_4__dealloc__(struct __pyx_obj_7_cython_6cygrpc_SSLSessionCacheLRU *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_18SSLSessionCacheLRU_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_SSLSessionCacheLRU *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_18SSLSessionCacheLRU_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_SSLSessionCacheLRU *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
+static int __pyx_pf_7_cython_6cygrpc_21SSLChannelCredentials___cinit__(struct __pyx_obj_7_cython_6cygrpc_SSLChannelCredentials *__pyx_v_self, PyObject *__pyx_v_pem_root_certificates, PyObject *__pyx_v_private_key, PyObject *__pyx_v_certificate_chain); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_21SSLChannelCredentials_22_pem_root_certificates___get__(struct __pyx_obj_7_cython_6cygrpc_SSLChannelCredentials *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_21SSLChannelCredentials_12_private_key___get__(struct __pyx_obj_7_cython_6cygrpc_SSLChannelCredentials *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_21SSLChannelCredentials_18_certificate_chain___get__(struct __pyx_obj_7_cython_6cygrpc_SSLChannelCredentials *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_21SSLChannelCredentials_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_SSLChannelCredentials *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_21SSLChannelCredentials_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_SSLChannelCredentials *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
+static int __pyx_pf_7_cython_6cygrpc_27CompositeChannelCredentials___cinit__(struct __pyx_obj_7_cython_6cygrpc_CompositeChannelCredentials *__pyx_v_self, PyObject *__pyx_v_call_credentialses, PyObject *__pyx_v_channel_credentials); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_27CompositeChannelCredentials_19_call_credentialses___get__(struct __pyx_obj_7_cython_6cygrpc_CompositeChannelCredentials *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_27CompositeChannelCredentials_20_channel_credentials___get__(struct __pyx_obj_7_cython_6cygrpc_CompositeChannelCredentials *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_27CompositeChannelCredentials_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_CompositeChannelCredentials *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_27CompositeChannelCredentials_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_CompositeChannelCredentials *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
+static int __pyx_pf_7_cython_6cygrpc_21XDSChannelCredentials___cinit__(struct __pyx_obj_7_cython_6cygrpc_XDSChannelCredentials *__pyx_v_self, PyObject *__pyx_v_fallback_credentials); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_21XDSChannelCredentials_21_fallback_credentials___get__(struct __pyx_obj_7_cython_6cygrpc_XDSChannelCredentials *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_21XDSChannelCredentials_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_XDSChannelCredentials *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_21XDSChannelCredentials_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_XDSChannelCredentials *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
+static int __pyx_pf_7_cython_6cygrpc_23ServerCertificateConfig___cinit__(struct __pyx_obj_7_cython_6cygrpc_ServerCertificateConfig *__pyx_v_self); /* proto */
+static void __pyx_pf_7_cython_6cygrpc_23ServerCertificateConfig_2__dealloc__(struct __pyx_obj_7_cython_6cygrpc_ServerCertificateConfig *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_23ServerCertificateConfig_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_ServerCertificateConfig *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_23ServerCertificateConfig_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_ServerCertificateConfig *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
+static int __pyx_pf_7_cython_6cygrpc_17ServerCredentials___cinit__(struct __pyx_obj_7_cython_6cygrpc_ServerCredentials *__pyx_v_self); /* proto */
+static void __pyx_pf_7_cython_6cygrpc_17ServerCredentials_2__dealloc__(struct __pyx_obj_7_cython_6cygrpc_ServerCredentials *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_17ServerCredentials_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_ServerCredentials *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_17ServerCredentials_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_ServerCredentials *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_22server_credentials_ssl(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_pem_root_certs, PyObject *__pyx_v_pem_key_cert_pairs, int __pyx_v_force_client_auth); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_24server_certificate_config_ssl(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_pem_root_certs, PyObject *__pyx_v_pem_key_cert_pairs); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_26server_credentials_ssl_dynamic_cert_config(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_initial_cert_config, PyObject *__pyx_v_cert_config_fetcher, int __pyx_v_force_client_auth); /* proto */
+static int __pyx_pf_7_cython_6cygrpc_23LocalChannelCredentials___cinit__(struct __pyx_obj_7_cython_6cygrpc_LocalChannelCredentials *__pyx_v_self, grpc_local_connect_type __pyx_v_local_connect_type); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_23LocalChannelCredentials_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_LocalChannelCredentials *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_23LocalChannelCredentials_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_LocalChannelCredentials *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_28channel_credentials_local(CYTHON_UNUSED PyObject *__pyx_self, grpc_local_connect_type __pyx_v_local_connect_type); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_26InsecureChannelCredentials___reduce_cython__(struct __pyx_obj_7_cython_6cygrpc_InsecureChannelCredentials *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_26InsecureChannelCredentials_2__setstate_cython__(struct __pyx_obj_7_cython_6cygrpc_InsecureChannelCredentials *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_30channel_credentials_insecure(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_32server_credentials_local(CYTHON_UNUSED PyObject *__pyx_self, grpc_local_connect_type __pyx_v_local_connect_type); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_34xds_server_credentials(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7_cython_6cygrpc_ServerCredentials *__pyx_v_fallback_credentials); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_36insecure_server_credentials(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
+static int __pyx_pf_7_cython_6cygrpc_22ALTSChannelCredentials___cinit__(struct __pyx_obj_7_cython_6cygrpc_ALTSChannelCredentials *__pyx_v_self, PyObject *__pyx_v_service_accounts); /* proto */
+static void __pyx_pf_7_cython_6cygrpc_22ALTSChannelCredentials_2__dealloc__(struct __pyx_obj_7_cython_6cygrpc_ALTSChannelCredentials *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_22ALTSChannelCredentials_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_ALTSChannelCredentials *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_22ALTSChannelCredentials_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_ALTSChannelCredentials *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_38channel_credentials_alts(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_service_accounts); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_40server_credentials_alts(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
+static int __pyx_pf_7_cython_6cygrpc_31ComputeEngineChannelCredentials___cinit__(struct __pyx_obj_7_cython_6cygrpc_ComputeEngineChannelCredentials *__pyx_v_self, struct __pyx_obj_7_cython_6cygrpc_CallCredentials *__pyx_v_call_creds); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_31ComputeEngineChannelCredentials_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_ComputeEngineChannelCredentials *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_31ComputeEngineChannelCredentials_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_ComputeEngineChannelCredentials *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_42channel_credentials_compute_engine(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_call_creds); /* proto */
+static int __pyx_pf_7_cython_6cygrpc_15CompletionQueue___cinit__(struct __pyx_obj_7_cython_6cygrpc_CompletionQueue *__pyx_v_self, PyObject *__pyx_v_shutdown_cq); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_15CompletionQueue_2_internal_poll(struct __pyx_obj_7_cython_6cygrpc_CompletionQueue *__pyx_v_self, PyObject *__pyx_v_deadline); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_15CompletionQueue_4poll(struct __pyx_obj_7_cython_6cygrpc_CompletionQueue *__pyx_v_self, PyObject *__pyx_v_deadline); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_15CompletionQueue_6shutdown(struct __pyx_obj_7_cython_6cygrpc_CompletionQueue *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_15CompletionQueue_8clear(struct __pyx_obj_7_cython_6cygrpc_CompletionQueue *__pyx_v_self); /* proto */
+static void __pyx_pf_7_cython_6cygrpc_15CompletionQueue_10__dealloc__(struct __pyx_obj_7_cython_6cygrpc_CompletionQueue *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_15CompletionQueue_12__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_CompletionQueue *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_15CompletionQueue_14__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_CompletionQueue *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
+static int __pyx_pf_7_cython_6cygrpc_17ConnectivityEvent___cinit__(struct __pyx_obj_7_cython_6cygrpc_ConnectivityEvent *__pyx_v_self, grpc_completion_type __pyx_v_completion_type, int __pyx_v_success, PyObject *__pyx_v_tag); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_17ConnectivityEvent_15completion_type___get__(struct __pyx_obj_7_cython_6cygrpc_ConnectivityEvent *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_17ConnectivityEvent_7success___get__(struct __pyx_obj_7_cython_6cygrpc_ConnectivityEvent *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_17ConnectivityEvent_3tag___get__(struct __pyx_obj_7_cython_6cygrpc_ConnectivityEvent *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_17ConnectivityEvent_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_ConnectivityEvent *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_17ConnectivityEvent_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_ConnectivityEvent *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
+static int __pyx_pf_7_cython_6cygrpc_16RequestCallEvent___cinit__(struct __pyx_obj_7_cython_6cygrpc_RequestCallEvent *__pyx_v_self, grpc_completion_type __pyx_v_completion_type, int __pyx_v_success, PyObject *__pyx_v_tag, struct __pyx_obj_7_cython_6cygrpc_Call *__pyx_v_call, struct __pyx_obj_7_cython_6cygrpc_CallDetails *__pyx_v_call_details, PyObject *__pyx_v_invocation_metadata); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_16RequestCallEvent_15completion_type___get__(struct __pyx_obj_7_cython_6cygrpc_RequestCallEvent *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_16RequestCallEvent_7success___get__(struct __pyx_obj_7_cython_6cygrpc_RequestCallEvent *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_16RequestCallEvent_3tag___get__(struct __pyx_obj_7_cython_6cygrpc_RequestCallEvent *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_16RequestCallEvent_4call___get__(struct __pyx_obj_7_cython_6cygrpc_RequestCallEvent *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_16RequestCallEvent_12call_details___get__(struct __pyx_obj_7_cython_6cygrpc_RequestCallEvent *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_16RequestCallEvent_19invocation_metadata___get__(struct __pyx_obj_7_cython_6cygrpc_RequestCallEvent *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_16RequestCallEvent_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_RequestCallEvent *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_16RequestCallEvent_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_RequestCallEvent *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
+static int __pyx_pf_7_cython_6cygrpc_19BatchOperationEvent___cinit__(struct __pyx_obj_7_cython_6cygrpc_BatchOperationEvent *__pyx_v_self, grpc_completion_type __pyx_v_completion_type, int __pyx_v_success, PyObject *__pyx_v_tag, PyObject *__pyx_v_batch_operations); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_19BatchOperationEvent_15completion_type___get__(struct __pyx_obj_7_cython_6cygrpc_BatchOperationEvent *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_19BatchOperationEvent_7success___get__(struct __pyx_obj_7_cython_6cygrpc_BatchOperationEvent *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_19BatchOperationEvent_3tag___get__(struct __pyx_obj_7_cython_6cygrpc_BatchOperationEvent *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_19BatchOperationEvent_16batch_operations___get__(struct __pyx_obj_7_cython_6cygrpc_BatchOperationEvent *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_19BatchOperationEvent_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_BatchOperationEvent *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_19BatchOperationEvent_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_BatchOperationEvent *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
+static int __pyx_pf_7_cython_6cygrpc_19ServerShutdownEvent___cinit__(struct __pyx_obj_7_cython_6cygrpc_ServerShutdownEvent *__pyx_v_self, grpc_completion_type __pyx_v_completion_type, int __pyx_v_success, PyObject *__pyx_v_tag); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_19ServerShutdownEvent_15completion_type___get__(struct __pyx_obj_7_cython_6cygrpc_ServerShutdownEvent *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_19ServerShutdownEvent_7success___get__(struct __pyx_obj_7_cython_6cygrpc_ServerShutdownEvent *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_19ServerShutdownEvent_3tag___get__(struct __pyx_obj_7_cython_6cygrpc_ServerShutdownEvent *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_19ServerShutdownEvent_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_ServerShutdownEvent *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_19ServerShutdownEvent_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_ServerShutdownEvent *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_9_metadata_genexpr(PyObject *__pyx_self, size_t __pyx_genexpr_arg_0); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_9Operation___reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_Operation *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_9Operation_2__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_Operation *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
+static int __pyx_pf_7_cython_6cygrpc_28SendInitialMetadataOperation___cinit__(struct __pyx_obj_7_cython_6cygrpc_SendInitialMetadataOperation *__pyx_v_self, PyObject *__pyx_v_initial_metadata, PyObject *__pyx_v_flags); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_28SendInitialMetadataOperation_2type(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_SendInitialMetadataOperation *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_28SendInitialMetadataOperation_17_initial_metadata___get__(struct __pyx_obj_7_cython_6cygrpc_SendInitialMetadataOperation *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_28SendInitialMetadataOperation_6_flags___get__(struct __pyx_obj_7_cython_6cygrpc_SendInitialMetadataOperation *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_28SendInitialMetadataOperation_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_SendInitialMetadataOperation *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_28SendInitialMetadataOperation_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_SendInitialMetadataOperation *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
+static int __pyx_pf_7_cython_6cygrpc_20SendMessageOperation___cinit__(struct __pyx_obj_7_cython_6cygrpc_SendMessageOperation *__pyx_v_self, PyObject *__pyx_v_message, int __pyx_v_flags); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_20SendMessageOperation_2type(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_SendMessageOperation *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_20SendMessageOperation_8_message___get__(struct __pyx_obj_7_cython_6cygrpc_SendMessageOperation *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_20SendMessageOperation_6_flags___get__(struct __pyx_obj_7_cython_6cygrpc_SendMessageOperation *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_20SendMessageOperation_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_SendMessageOperation *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_20SendMessageOperation_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_SendMessageOperation *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
+static int __pyx_pf_7_cython_6cygrpc_28SendCloseFromClientOperation___cinit__(struct __pyx_obj_7_cython_6cygrpc_SendCloseFromClientOperation *__pyx_v_self, int __pyx_v_flags); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_28SendCloseFromClientOperation_2type(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_SendCloseFromClientOperation *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_28SendCloseFromClientOperation_6_flags___get__(struct __pyx_obj_7_cython_6cygrpc_SendCloseFromClientOperation *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_28SendCloseFromClientOperation_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_SendCloseFromClientOperation *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_28SendCloseFromClientOperation_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_SendCloseFromClientOperation *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
+static int __pyx_pf_7_cython_6cygrpc_29SendStatusFromServerOperation___cinit__(struct __pyx_obj_7_cython_6cygrpc_SendStatusFromServerOperation *__pyx_v_self, PyObject *__pyx_v_trailing_metadata, PyObject *__pyx_v_code, PyObject *__pyx_v_details, int __pyx_v_flags); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_29SendStatusFromServerOperation_2type(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_SendStatusFromServerOperation *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_29SendStatusFromServerOperation_18_trailing_metadata___get__(struct __pyx_obj_7_cython_6cygrpc_SendStatusFromServerOperation *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_29SendStatusFromServerOperation_5_code___get__(struct __pyx_obj_7_cython_6cygrpc_SendStatusFromServerOperation *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_29SendStatusFromServerOperation_8_details___get__(struct __pyx_obj_7_cython_6cygrpc_SendStatusFromServerOperation *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_29SendStatusFromServerOperation_6_flags___get__(struct __pyx_obj_7_cython_6cygrpc_SendStatusFromServerOperation *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_29SendStatusFromServerOperation_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_SendStatusFromServerOperation *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_29SendStatusFromServerOperation_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_SendStatusFromServerOperation *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
+static int __pyx_pf_7_cython_6cygrpc_31ReceiveInitialMetadataOperation___cinit__(struct __pyx_obj_7_cython_6cygrpc_ReceiveInitialMetadataOperation *__pyx_v_self, PyObject *__pyx_v_flags); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_2type(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_ReceiveInitialMetadataOperation *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_4initial_metadata(struct __pyx_obj_7_cython_6cygrpc_ReceiveInitialMetadataOperation *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_6_flags___get__(struct __pyx_obj_7_cython_6cygrpc_ReceiveInitialMetadataOperation *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_ReceiveInitialMetadataOperation *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_ReceiveInitialMetadataOperation *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
+static int __pyx_pf_7_cython_6cygrpc_23ReceiveMessageOperation___cinit__(struct __pyx_obj_7_cython_6cygrpc_ReceiveMessageOperation *__pyx_v_self, PyObject *__pyx_v_flags); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_23ReceiveMessageOperation_2type(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_ReceiveMessageOperation *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_23ReceiveMessageOperation_4message(struct __pyx_obj_7_cython_6cygrpc_ReceiveMessageOperation *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_23ReceiveMessageOperation_6_flags___get__(struct __pyx_obj_7_cython_6cygrpc_ReceiveMessageOperation *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_23ReceiveMessageOperation_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_ReceiveMessageOperation *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_23ReceiveMessageOperation_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_ReceiveMessageOperation *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
+static int __pyx_pf_7_cython_6cygrpc_30ReceiveStatusOnClientOperation___cinit__(struct __pyx_obj_7_cython_6cygrpc_ReceiveStatusOnClientOperation *__pyx_v_self, PyObject *__pyx_v_flags); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_2type(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_ReceiveStatusOnClientOperation *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_4trailing_metadata(struct __pyx_obj_7_cython_6cygrpc_ReceiveStatusOnClientOperation *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_6code(struct __pyx_obj_7_cython_6cygrpc_ReceiveStatusOnClientOperation *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_8details(struct __pyx_obj_7_cython_6cygrpc_ReceiveStatusOnClientOperation *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_10error_string(struct __pyx_obj_7_cython_6cygrpc_ReceiveStatusOnClientOperation *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_6_flags___get__(struct __pyx_obj_7_cython_6cygrpc_ReceiveStatusOnClientOperation *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_12__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_ReceiveStatusOnClientOperation *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_14__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_ReceiveStatusOnClientOperation *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
+static int __pyx_pf_7_cython_6cygrpc_29ReceiveCloseOnServerOperation___cinit__(struct __pyx_obj_7_cython_6cygrpc_ReceiveCloseOnServerOperation *__pyx_v_self, PyObject *__pyx_v_flags); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_2type(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_ReceiveCloseOnServerOperation *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_4cancelled(struct __pyx_obj_7_cython_6cygrpc_ReceiveCloseOnServerOperation *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_6_flags___get__(struct __pyx_obj_7_cython_6cygrpc_ReceiveCloseOnServerOperation *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_ReceiveCloseOnServerOperation *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_ReceiveCloseOnServerOperation *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
+static int __pyx_pf_7_cython_6cygrpc_11CallDetails___cinit__(struct __pyx_obj_7_cython_6cygrpc_CallDetails *__pyx_v_self); /* proto */
+static void __pyx_pf_7_cython_6cygrpc_11CallDetails_2__dealloc__(struct __pyx_obj_7_cython_6cygrpc_CallDetails *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_11CallDetails_6method___get__(struct __pyx_obj_7_cython_6cygrpc_CallDetails *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_11CallDetails_4host___get__(struct __pyx_obj_7_cython_6cygrpc_CallDetails *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_11CallDetails_8deadline___get__(struct __pyx_obj_7_cython_6cygrpc_CallDetails *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_11CallDetails_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_CallDetails *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_11CallDetails_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_CallDetails *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
+static int __pyx_pf_7_cython_6cygrpc_17SslPemKeyCertPair___cinit__(struct __pyx_obj_7_cython_6cygrpc_SslPemKeyCertPair *__pyx_v_self, PyObject *__pyx_v_private_key, PyObject *__pyx_v_certificate_chain); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_17SslPemKeyCertPair_11private_key___get__(struct __pyx_obj_7_cython_6cygrpc_SslPemKeyCertPair *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_17SslPemKeyCertPair_17certificate_chain___get__(struct __pyx_obj_7_cython_6cygrpc_SslPemKeyCertPair *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_17SslPemKeyCertPair_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_SslPemKeyCertPair *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_17SslPemKeyCertPair_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_SslPemKeyCertPair *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
+static int __pyx_pf_7_cython_6cygrpc_18CompressionOptions___cinit__(struct __pyx_obj_7_cython_6cygrpc_CompressionOptions *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_18CompressionOptions_2enable_algorithm(struct __pyx_obj_7_cython_6cygrpc_CompressionOptions *__pyx_v_self, grpc_compression_algorithm __pyx_v_algorithm); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_18CompressionOptions_4disable_algorithm(struct __pyx_obj_7_cython_6cygrpc_CompressionOptions *__pyx_v_self, grpc_compression_algorithm __pyx_v_algorithm); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_18CompressionOptions_6is_algorithm_enabled(struct __pyx_obj_7_cython_6cygrpc_CompressionOptions *__pyx_v_self, grpc_compression_algorithm __pyx_v_algorithm); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_18CompressionOptions_8to_channel_arg(struct __pyx_obj_7_cython_6cygrpc_CompressionOptions *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_18CompressionOptions_10__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_CompressionOptions *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_18CompressionOptions_12__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_CompressionOptions *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_44compression_algorithm_name(CYTHON_UNUSED PyObject *__pyx_self, grpc_compression_algorithm __pyx_v_algorithm); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_46reset_grpc_config_vars(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_48peer_identities(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7_cython_6cygrpc_Call *__pyx_v_call); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_50peer_identity_key(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7_cython_6cygrpc_Call *__pyx_v_call); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_52auth_context(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7_cython_6cygrpc_Call *__pyx_v_call); /* proto */
+static int __pyx_pf_7_cython_6cygrpc_6Server___cinit__(struct __pyx_obj_7_cython_6cygrpc_Server *__pyx_v_self, PyObject *__pyx_v_arguments, int __pyx_v_xds); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_6Server_2request_call(struct __pyx_obj_7_cython_6cygrpc_Server *__pyx_v_self, struct __pyx_obj_7_cython_6cygrpc_CompletionQueue *__pyx_v_call_queue, struct __pyx_obj_7_cython_6cygrpc_CompletionQueue *__pyx_v_server_queue, PyObject *__pyx_v_tag); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_6Server_4register_completion_queue(struct __pyx_obj_7_cython_6cygrpc_Server *__pyx_v_self, struct __pyx_obj_7_cython_6cygrpc_CompletionQueue *__pyx_v_queue); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_6Server_6start(struct __pyx_obj_7_cython_6cygrpc_Server *__pyx_v_self, PyObject *__pyx_v_backup_queue); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_6Server_8add_http2_port(struct __pyx_obj_7_cython_6cygrpc_Server *__pyx_v_self, PyObject *__pyx_v_address, struct __pyx_obj_7_cython_6cygrpc_ServerCredentials *__pyx_v_server_credentials); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_6Server_10shutdown(struct __pyx_obj_7_cython_6cygrpc_Server *__pyx_v_self, struct __pyx_obj_7_cython_6cygrpc_CompletionQueue *__pyx_v_queue, PyObject *__pyx_v_tag); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_6Server_12cancel_all_calls(struct __pyx_obj_7_cython_6cygrpc_Server *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_6Server_14destroy(struct __pyx_obj_7_cython_6cygrpc_Server *__pyx_v_self); /* proto */
+static void __pyx_pf_7_cython_6cygrpc_6Server_16__dealloc__(struct __pyx_obj_7_cython_6cygrpc_Server *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_6Server_18__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_Server *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_6Server_20__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_Server *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_4_Tag___reduce_cython__(struct __pyx_obj_7_cython_6cygrpc__Tag *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_4_Tag_2__setstate_cython__(struct __pyx_obj_7_cython_6cygrpc__Tag *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
+static int __pyx_pf_7_cython_6cygrpc_16_ConnectivityTag___cinit__(struct __pyx_obj_7_cython_6cygrpc__ConnectivityTag *__pyx_v_self, PyObject *__pyx_v_user_tag); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_16_ConnectivityTag_9_user_tag___get__(struct __pyx_obj_7_cython_6cygrpc__ConnectivityTag *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_16_ConnectivityTag_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__ConnectivityTag *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_16_ConnectivityTag_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__ConnectivityTag *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
+static int __pyx_pf_7_cython_6cygrpc_15_RequestCallTag___cinit__(struct __pyx_obj_7_cython_6cygrpc__RequestCallTag *__pyx_v_self, PyObject *__pyx_v_user_tag); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_15_RequestCallTag_9_user_tag___get__(struct __pyx_obj_7_cython_6cygrpc__RequestCallTag *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_15_RequestCallTag_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__RequestCallTag *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_15_RequestCallTag_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__RequestCallTag *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
+static int __pyx_pf_7_cython_6cygrpc_18_BatchOperationTag___cinit__(struct __pyx_obj_7_cython_6cygrpc__BatchOperationTag *__pyx_v_self, PyObject *__pyx_v_user_tag, PyObject *__pyx_v_operations, PyObject *__pyx_v_call); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_18_BatchOperationTag_11_operations___get__(struct __pyx_obj_7_cython_6cygrpc__BatchOperationTag *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_18_BatchOperationTag_14_retained_call___get__(struct __pyx_obj_7_cython_6cygrpc__BatchOperationTag *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_18_BatchOperationTag_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__BatchOperationTag *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_18_BatchOperationTag_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__BatchOperationTag *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
+static int __pyx_pf_7_cython_6cygrpc_18_ServerShutdownTag___cinit__(struct __pyx_obj_7_cython_6cygrpc__ServerShutdownTag *__pyx_v_self, PyObject *__pyx_v_user_tag, PyObject *__pyx_v_shutting_down_server); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_18_ServerShutdownTag_9_user_tag___get__(struct __pyx_obj_7_cython_6cygrpc__ServerShutdownTag *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_18_ServerShutdownTag_21_shutting_down_server___get__(struct __pyx_obj_7_cython_6cygrpc__ServerShutdownTag *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_18_ServerShutdownTag_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__ServerShutdownTag *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_18_ServerShutdownTag_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__ServerShutdownTag *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_54install_context_from_request_call_event(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7_cython_6cygrpc_RequestCallEvent *__pyx_v_event); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_56install_context_from_request_call_event_aio(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_GrpcCallWrapper *__pyx_v_event); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_58uninstall_context(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_60build_census_context(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_13CensusContext___reduce_cython__(struct __pyx_obj_7_cython_6cygrpc_CensusContext *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_13CensusContext_2__setstate_cython__(struct __pyx_obj_7_cython_6cygrpc_CensusContext *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_62set_census_context_on_call(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__CallState *__pyx_v_call_state, CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_CensusContext *__pyx_v_census_ctx); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_64set_instrumentation_context_on_call_aio(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_GrpcCallWrapper *__pyx_v_call_state, CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_CensusContext *__pyx_v_census_ctx); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_66get_deadline_from_context(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_68set_server_call_tracer_factory(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_observability_plugin); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_70clear_server_call_tracer_factory(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_72maybe_save_server_trace_context(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7_cython_6cygrpc_RequestCallEvent *__pyx_v_event); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_74gevent_increment_channel_count(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_76gevent_decrement_channel_count(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_78spawn_greenlets(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_80run_spawn_greenlets(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_82shutdown_await_next_greenlet(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_84init_grpc_gevent(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_86_contextvars_supported(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_88_run_with_context(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_target); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_17_run_with_context__run(PyObject *__pyx_self, PyObject *__pyx_v_args); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_90_run_with_context(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_target); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_17_run_with_context_2_run(PyObject *__pyx_self, PyObject *__pyx_v_args); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_92_run_with_context(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_target); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_94fork_handlers_and_grpc_init(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_17ForkManagedThread_8__init___managed_target(PyObject *__pyx_self, PyObject *__pyx_v_args); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_17ForkManagedThread___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_target, PyObject *__pyx_v_args); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_17ForkManagedThread_2setDaemon(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_daemonic); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_17ForkManagedThread_4start(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_17ForkManagedThread_6join(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_96block_if_fork_in_progress(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_postfork_state_to_reset); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_98enter_user_request_generator(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_100return_from_user_request_generator(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_102get_fork_epoch(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_104is_fork_support_enabled(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_106fork_register_channel(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_channel); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_108fork_unregister_channel(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_channel); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_18_ActiveThreadCount___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_18_ActiveThreadCount_2increment(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_18_ActiveThreadCount_4decrement(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_18_ActiveThreadCount_6await_zero_threads(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_timeout_secs); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_10_ForkState___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_4_EOF___bool__(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_4_EOF_2__len__(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_4_EOF_4_repr(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_4_EOF_6__repr__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_4_EOF_8__str__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_110schedule_coro_threadsafe(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_coro, PyObject *__pyx_v_loop); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_112async_generator_to_generator(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_agen, PyObject *__pyx_v_loop); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_115generator_to_async_generator(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_gen, PyObject *__pyx_v_loop, PyObject *__pyx_v_thread_pool); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_28generator_to_async_generator_yield_to_queue(PyObject *__pyx_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_118get_working_loop(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_120get_working_loop(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_122raise_if_not_valid_trailing_metadata(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_metadata); /* proto */
+static int __pyx_pf_7_cython_6cygrpc_12AioRpcStatus___cinit__(struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *__pyx_v_self, grpc_status_code __pyx_v_code, PyObject *__pyx_v_details, PyObject *__pyx_v_trailing_metadata, PyObject *__pyx_v_debug_error_string); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_12AioRpcStatus_2code(struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_12AioRpcStatus_4details(struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_12AioRpcStatus_6trailing_metadata(struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_12AioRpcStatus_8debug_error_string(struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_12AioRpcStatus_5_code___get__(struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_12AioRpcStatus_8_details___get__(struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_12AioRpcStatus_18_trailing_metadata___get__(struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_12AioRpcStatus_19_debug_error_string___get__(struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_12AioRpcStatus_10__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_12AioRpcStatus_12__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_124_handle_callback_wrapper(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7_cython_6cygrpc_CallbackWrapper *__pyx_v_callback_wrapper, int __pyx_v_success); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_19BaseCompletionQueue___reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_BaseCompletionQueue *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_19BaseCompletionQueue_2__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_BaseCompletionQueue *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
+static int __pyx_pf_7_cython_6cygrpc_15_BoundEventLoop___cinit__(struct __pyx_obj_7_cython_6cygrpc__BoundEventLoop *__pyx_v_self, PyObject *__pyx_v_loop, PyObject *__pyx_v_read_socket, PyObject *__pyx_v_handler); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_15_BoundEventLoop_2close(struct __pyx_obj_7_cython_6cygrpc__BoundEventLoop *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_15_BoundEventLoop_4loop___get__(struct __pyx_obj_7_cython_6cygrpc__BoundEventLoop *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_15_BoundEventLoop_11read_socket___get__(struct __pyx_obj_7_cython_6cygrpc__BoundEventLoop *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_15_BoundEventLoop_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__BoundEventLoop *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_15_BoundEventLoop_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__BoundEventLoop *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
+static int __pyx_pf_7_cython_6cygrpc_21PollerCompletionQueue___cinit__(struct __pyx_obj_7_cython_6cygrpc_PollerCompletionQueue *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_21PollerCompletionQueue_2bind_loop(struct __pyx_obj_7_cython_6cygrpc_PollerCompletionQueue *__pyx_v_self, PyObject *__pyx_v_loop); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_21PollerCompletionQueue_4_poll_wrapper(struct __pyx_obj_7_cython_6cygrpc_PollerCompletionQueue *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_21PollerCompletionQueue_6_handle_events(struct __pyx_obj_7_cython_6cygrpc_PollerCompletionQueue *__pyx_v_self, PyObject *__pyx_v_context_loop); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_21PollerCompletionQueue_8__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_PollerCompletionQueue *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_21PollerCompletionQueue_10__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_PollerCompletionQueue *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
+static int __pyx_pf_7_cython_6cygrpc_22CallbackFailureHandler___cinit__(struct __pyx_obj_7_cython_6cygrpc_CallbackFailureHandler *__pyx_v_self, PyObject *__pyx_v_core_function_name, PyObject *__pyx_v_error_details, PyObject *__pyx_v_exception_type); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_22CallbackFailureHandler_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_CallbackFailureHandler *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_22CallbackFailureHandler_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_CallbackFailureHandler *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
+static int __pyx_pf_7_cython_6cygrpc_15CallbackWrapper___cinit__(struct __pyx_obj_7_cython_6cygrpc_CallbackWrapper *__pyx_v_self, PyObject *__pyx_v_future, PyObject *__pyx_v_loop, struct __pyx_obj_7_cython_6cygrpc_CallbackFailureHandler *__pyx_v_failure_handler); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_15CallbackWrapper_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_CallbackWrapper *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_15CallbackWrapper_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_CallbackWrapper *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_126execute_batch(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7_cython_6cygrpc_GrpcCallWrapper *__pyx_v_grpc_call_wrapper, PyObject *__pyx_v_operations, PyObject *__pyx_v_loop); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_129_receive_message(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7_cython_6cygrpc_GrpcCallWrapper *__pyx_v_grpc_call_wrapper, PyObject *__pyx_v_loop); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_132_send_message(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7_cython_6cygrpc_GrpcCallWrapper *__pyx_v_grpc_call_wrapper, PyObject *__pyx_v_message, struct __pyx_obj_7_cython_6cygrpc_Operation *__pyx_v_send_initial_metadata_op, int __pyx_v_write_flag, PyObject *__pyx_v_loop); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_135_send_initial_metadata(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7_cython_6cygrpc_GrpcCallWrapper *__pyx_v_grpc_call_wrapper, PyObject *__pyx_v_metadata, int __pyx_v_flags, PyObject *__pyx_v_loop); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_138_receive_initial_metadata(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7_cython_6cygrpc_GrpcCallWrapper *__pyx_v_grpc_call_wrapper, PyObject *__pyx_v_loop); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_141_send_error_status_from_server(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7_cython_6cygrpc_GrpcCallWrapper *__pyx_v_grpc_call_wrapper, grpc_status_code __pyx_v_code, PyObject *__pyx_v_details, PyObject *__pyx_v_trailing_metadata, struct __pyx_obj_7_cython_6cygrpc_Operation *__pyx_v_send_initial_metadata_op, PyObject *__pyx_v_loop); /* proto */
+static int __pyx_pf_7_cython_6cygrpc_9_AioState___cinit__(struct __pyx_obj_7_cython_6cygrpc__AioState *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_9_AioState_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__AioState *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_9_AioState_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__AioState *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_144_grpc_shutdown_wrapper(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v__); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_146init_grpc_aio(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_148shutdown_grpc_aio(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
+static int __pyx_pf_7_cython_6cygrpc_8_AioCall___cinit__(struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self, struct __pyx_obj_7_cython_6cygrpc_AioChannel *__pyx_v_channel, PyObject *__pyx_v_deadline, PyObject *__pyx_v_method, struct __pyx_obj_7_cython_6cygrpc_CallCredentials *__pyx_v_call_credentials, PyObject *__pyx_v_wait_for_ready); /* proto */
+static void __pyx_pf_7_cython_6cygrpc_8_AioCall_2__dealloc__(struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_8_AioCall_4_repr(struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_8_AioCall_6__repr__(struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_8_AioCall_8__str__(struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_8_AioCall_10add_done_callback(struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self, PyObject *__pyx_v_callback); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_8_AioCall_12time_remaining(struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_8_AioCall_14cancel(struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self, PyObject *__pyx_v_details); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_8_AioCall_16done(struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_8_AioCall_18cancelled(struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_8_AioCall_20status(struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_8_AioCall_23is_ok(struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_8_AioCall_25initial_metadata(struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_8_AioCall_28is_locally_cancelled(struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_8_AioCall_30set_internal_error(struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self, PyObject *__pyx_v_error_str); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_8_AioCall_32unary_unary(struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self, PyObject *__pyx_v_request, PyObject *__pyx_v_outbound_initial_metadata, PyObject *__pyx_v_context); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_8_AioCall_35_handle_status_once_received(struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_8_AioCall_38receive_serialized_message(struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_8_AioCall_41send_serialized_message(struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self, PyObject *__pyx_v_message); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_8_AioCall_44send_receive_close(struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_8_AioCall_47initiate_unary_stream(struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self, PyObject *__pyx_v_request, PyObject *__pyx_v_outbound_initial_metadata, PyObject *__pyx_v_context); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_8_AioCall_50stream_unary(struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self, PyObject *__pyx_v_outbound_initial_metadata, PyObject *__pyx_v_metadata_sent_observer, PyObject *__pyx_v_context); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_8_AioCall_53initiate_stream_stream(struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self, PyObject *__pyx_v_outbound_initial_metadata, PyObject *__pyx_v_metadata_sent_observer, PyObject *__pyx_v_context); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_8_AioCall_8_channel___get__(struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_8_AioCall_7_status___get__(struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_8_AioCall_17_initial_metadata___get__(struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_8_AioCall_56__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_8_AioCall_58__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
+static int __pyx_pf_7_cython_6cygrpc_10AioChannel___cinit__(struct __pyx_obj_7_cython_6cygrpc_AioChannel *__pyx_v_self, PyObject *__pyx_v_target, PyObject *__pyx_v_options, struct __pyx_obj_7_cython_6cygrpc_ChannelCredentials *__pyx_v_credentials, PyObject *__pyx_v_loop); /* proto */
+static void __pyx_pf_7_cython_6cygrpc_10AioChannel_2__dealloc__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_AioChannel *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_10AioChannel_4__repr__(struct __pyx_obj_7_cython_6cygrpc_AioChannel *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_10AioChannel_6check_connectivity_state(struct __pyx_obj_7_cython_6cygrpc_AioChannel *__pyx_v_self, int __pyx_v_try_to_connect); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_10AioChannel_8watch_connectivity_state(struct __pyx_obj_7_cython_6cygrpc_AioChannel *__pyx_v_self, grpc_connectivity_state __pyx_v_last_observed_state, PyObject *__pyx_v_deadline); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_10AioChannel_11closing(struct __pyx_obj_7_cython_6cygrpc_AioChannel *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_10AioChannel_13close(struct __pyx_obj_7_cython_6cygrpc_AioChannel *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_10AioChannel_15closed(struct __pyx_obj_7_cython_6cygrpc_AioChannel *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_10AioChannel_17call(struct __pyx_obj_7_cython_6cygrpc_AioChannel *__pyx_v_self, PyObject *__pyx_v_method, PyObject *__pyx_v_deadline, PyObject *__pyx_v_python_call_credentials, PyObject *__pyx_v_wait_for_ready); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_10AioChannel_19__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_AioChannel *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_10AioChannel_21__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_AioChannel *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
+static int __pyx_pf_7_cython_6cygrpc_19_HandlerCallDetails___cinit__(struct __pyx_obj_7_cython_6cygrpc__HandlerCallDetails *__pyx_v_self, PyObject *__pyx_v_method, PyObject *__pyx_v_invocation_metadata); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_19_HandlerCallDetails_6method___get__(struct __pyx_obj_7_cython_6cygrpc__HandlerCallDetails *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_19_HandlerCallDetails_19invocation_metadata___get__(struct __pyx_obj_7_cython_6cygrpc__HandlerCallDetails *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_19_HandlerCallDetails_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__HandlerCallDetails *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_19_HandlerCallDetails_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__HandlerCallDetails *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
+static int __pyx_pf_7_cython_6cygrpc_8RPCState___cinit__(struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_self, struct __pyx_obj_7_cython_6cygrpc_AioServer *__pyx_v_server); /* proto */
+static void __pyx_pf_7_cython_6cygrpc_8RPCState_2__dealloc__(struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_8RPCState_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_8RPCState_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
+static int __pyx_pf_7_cython_6cygrpc_16_ServicerContext___cinit__(struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_self, struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state, PyObject *__pyx_v_request_deserializer, PyObject *__pyx_v_response_serializer, PyObject *__pyx_v_loop); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_16_ServicerContext_2read(struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_16_ServicerContext_5write(struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_self, PyObject *__pyx_v_message); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_16_ServicerContext_8send_initial_metadata(struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_self, PyObject *__pyx_v_metadata); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_16_ServicerContext_11abort(struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_self, PyObject *__pyx_v_code, PyObject *__pyx_v_details, PyObject *__pyx_v_trailing_metadata); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_16_ServicerContext_14abort_with_status(struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_self, PyObject *__pyx_v_status); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_16_ServicerContext_17set_trailing_metadata(struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_self, PyObject *__pyx_v_metadata); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_16_ServicerContext_19trailing_metadata(struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_16_ServicerContext_21invocation_metadata(struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_16_ServicerContext_23set_code(struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_self, PyObject *__pyx_v_code); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_16_ServicerContext_25code(struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_16_ServicerContext_27set_details(struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_self, PyObject *__pyx_v_details); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_16_ServicerContext_29details(struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_16_ServicerContext_31set_compression(struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_self, PyObject *__pyx_v_compression); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_16_ServicerContext_33disable_next_message_compression(struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_16_ServicerContext_35peer(struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_16_ServicerContext_37peer_identities(struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_16_ServicerContext_39peer_identity_key(struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_16_ServicerContext_41auth_context(struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_16_ServicerContext_43time_remaining(struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_16_ServicerContext_45add_done_callback(struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_self, PyObject *__pyx_v_callback); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_16_ServicerContext_47done(struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_16_ServicerContext_49cancelled(struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_16_ServicerContext_51__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_16_ServicerContext_53__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
+static int __pyx_pf_7_cython_6cygrpc_20_SyncServicerContext___cinit__(struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *__pyx_v_self, struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_context); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_20_SyncServicerContext_2abort(struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *__pyx_v_self, PyObject *__pyx_v_code, PyObject *__pyx_v_details, PyObject *__pyx_v_trailing_metadata); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_20_SyncServicerContext_4send_initial_metadata(struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *__pyx_v_self, PyObject *__pyx_v_metadata); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_20_SyncServicerContext_6set_trailing_metadata(struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *__pyx_v_self, PyObject *__pyx_v_metadata); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_20_SyncServicerContext_8invocation_metadata(struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_20_SyncServicerContext_10set_code(struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *__pyx_v_self, PyObject *__pyx_v_code); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_20_SyncServicerContext_12set_details(struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *__pyx_v_self, PyObject *__pyx_v_details); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_20_SyncServicerContext_14set_compression(struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *__pyx_v_self, PyObject *__pyx_v_compression); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_20_SyncServicerContext_16disable_next_message_compression(struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_20_SyncServicerContext_18add_callback(struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *__pyx_v_self, PyObject *__pyx_v_callback); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_20_SyncServicerContext_20peer(struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_20_SyncServicerContext_22peer_identities(struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_20_SyncServicerContext_24peer_identity_key(struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_20_SyncServicerContext_26auth_context(struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_20_SyncServicerContext_28time_remaining(struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_20_SyncServicerContext_30__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_20_SyncServicerContext_32__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_150_run_interceptor(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_interceptors, PyObject *__pyx_v_query_handler, PyObject *__pyx_v_handler_call_details); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_153_is_async_handler(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_handler); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_155_find_method_handler(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_method, PyObject *__pyx_v_metadata, PyObject *__pyx_v_generic_handlers, PyObject *__pyx_v_interceptors); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_20_find_method_handler_query_handlers(PyObject *__pyx_self, PyObject *__pyx_v_handler_call_details); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_158_finish_handler_with_unary_response(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state, PyObject *__pyx_v_unary_handler, PyObject *__pyx_v_request, struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_servicer_context, PyObject *__pyx_v_response_serializer, PyObject *__pyx_v_loop); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_161_finish_handler_with_stream_responses(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state, PyObject *__pyx_v_stream_handler, PyObject *__pyx_v_request, struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_servicer_context, PyObject *__pyx_v_loop); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_164_handle_unary_unary_rpc(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_method_handler, struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state, PyObject *__pyx_v_loop); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_167_handle_unary_stream_rpc(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_method_handler, struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state, PyObject *__pyx_v_loop); /* proto */
+static int __pyx_pf_7_cython_6cygrpc_16_MessageReceiver___cinit__(struct __pyx_obj_7_cython_6cygrpc__MessageReceiver *__pyx_v_self, struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_servicer_context); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_16_MessageReceiver_2_async_message_receiver(struct __pyx_obj_7_cython_6cygrpc__MessageReceiver *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_16_MessageReceiver_5__aiter__(struct __pyx_obj_7_cython_6cygrpc__MessageReceiver *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_16_MessageReceiver_7__anext__(struct __pyx_obj_7_cython_6cygrpc__MessageReceiver *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_16_MessageReceiver_10__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__MessageReceiver *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_16_MessageReceiver_12__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__MessageReceiver *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_170_handle_stream_unary_rpc(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_method_handler, struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state, PyObject *__pyx_v_loop); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_173_handle_stream_stream_rpc(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_method_handler, struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state, PyObject *__pyx_v_loop); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_176_handle_exceptions(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state, PyObject *__pyx_v_rpc_coro, PyObject *__pyx_v_loop); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_21_add_callback_handler_handle_callbacks(PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_unused_task); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_179_handle_cancellation_from_core(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_rpc_task, struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state, PyObject *__pyx_v_loop); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_182_schedule_rpc_coro(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_rpc_coro, struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state, PyObject *__pyx_v_loop); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_185_handle_rpc(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_generic_handlers, PyObject *__pyx_v_interceptors, struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state, PyObject *__pyx_v_loop, int __pyx_v_concurrency_exceeded); /* proto */
+static int __pyx_pf_7_cython_6cygrpc_21_ConcurrentRpcLimiter___cinit__(struct __pyx_obj_7_cython_6cygrpc__ConcurrentRpcLimiter *__pyx_v_self, int __pyx_v_maximum_concurrent_rpcs); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_21_ConcurrentRpcLimiter_2check_before_request_call(struct __pyx_obj_7_cython_6cygrpc__ConcurrentRpcLimiter *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_21_ConcurrentRpcLimiter_4_decrease_active_rpcs_count(struct __pyx_obj_7_cython_6cygrpc__ConcurrentRpcLimiter *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_unused_future); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_21_ConcurrentRpcLimiter_6decrease_once_finished(struct __pyx_obj_7_cython_6cygrpc__ConcurrentRpcLimiter *__pyx_v_self, PyObject *__pyx_v_rpc_task); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_21_ConcurrentRpcLimiter_8__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__ConcurrentRpcLimiter *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_21_ConcurrentRpcLimiter_10__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__ConcurrentRpcLimiter *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
+static int __pyx_pf_7_cython_6cygrpc_9AioServer___init__(struct __pyx_obj_7_cython_6cygrpc_AioServer *__pyx_v_self, PyObject *__pyx_v_loop, PyObject *__pyx_v_thread_pool, PyObject *__pyx_v_generic_handlers, PyObject *__pyx_v_interceptors, PyObject *__pyx_v_options, PyObject *__pyx_v_maximum_concurrent_rpcs); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_9AioServer_2add_generic_rpc_handlers(struct __pyx_obj_7_cython_6cygrpc_AioServer *__pyx_v_self, PyObject *__pyx_v_generic_rpc_handlers); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_9AioServer_4add_insecure_port(struct __pyx_obj_7_cython_6cygrpc_AioServer *__pyx_v_self, PyObject *__pyx_v_address); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_9AioServer_6add_secure_port(struct __pyx_obj_7_cython_6cygrpc_AioServer *__pyx_v_self, PyObject *__pyx_v_address, PyObject *__pyx_v_server_credentials); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_9AioServer_8_request_call(struct __pyx_obj_7_cython_6cygrpc_AioServer *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_9AioServer_11_server_main_loop(struct __pyx_obj_7_cython_6cygrpc_AioServer *__pyx_v_self, PyObject *__pyx_v_server_started); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_9AioServer_14_serving_task_crash_handler(struct __pyx_obj_7_cython_6cygrpc_AioServer *__pyx_v_self, PyObject *__pyx_v_task); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_9AioServer_16start(struct __pyx_obj_7_cython_6cygrpc_AioServer *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_9AioServer_19_start_shutting_down(struct __pyx_obj_7_cython_6cygrpc_AioServer *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_9AioServer_22shutdown(struct __pyx_obj_7_cython_6cygrpc_AioServer *__pyx_v_self, PyObject *__pyx_v_grace); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_9AioServer_25wait_for_termination(struct __pyx_obj_7_cython_6cygrpc_AioServer *__pyx_v_self, PyObject *__pyx_v_timeout); /* proto */
+static void __pyx_pf_7_cython_6cygrpc_9AioServer_28__dealloc__(struct __pyx_obj_7_cython_6cygrpc_AioServer *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_9AioServer_30is_running(struct __pyx_obj_7_cython_6cygrpc_AioServer *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_9AioServer_32__reduce_cython__(struct __pyx_obj_7_cython_6cygrpc_AioServer *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_9AioServer_34__setstate_cython__(struct __pyx_obj_7_cython_6cygrpc_AioServer *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
+static PyObject *__pyx_pf_7_cython_6cygrpc_188__pyx_unpickle_ChannelCredentials(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_7_cython_6cygrpc_190__pyx_unpickle_InsecureChannelCredentials(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_7_cython_6cygrpc_192__pyx_unpickle__Tag(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_7_cython_6cygrpc_194__pyx_unpickle_CensusContext(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_7_cython_6cygrpc_196__pyx_unpickle_AioServer(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_7_cython_6cygrpc__ChannelArg(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc__ChannelArgs(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_Call(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc__CallState(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc__ChannelState(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_IntegratedCall(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_SegregatedCall(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_Channel(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_CallHandle(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_CallCredentials(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_MetadataPluginCallCredentials(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_CompositeCallCredentials(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_ChannelCredentials(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_SSLSessionCacheLRU(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_SSLChannelCredentials(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_CompositeChannelCredentials(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_XDSChannelCredentials(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_ServerCertificateConfig(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_ServerCredentials(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_LocalChannelCredentials(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_ALTSChannelCredentials(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc__LatentEventArg(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_CompletionQueue(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_BaseEvent(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_ConnectivityEvent(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_RequestCallEvent(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_BatchOperationEvent(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_ServerShutdownEvent(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_Operation(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_SendInitialMetadataOperation(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_SendMessageOperation(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_SendCloseFromClientOperation(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_SendStatusFromServerOperation(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_ReceiveInitialMetadataOperation(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_ReceiveMessageOperation(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_ReceiveStatusOnClientOperation(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_ReceiveCloseOnServerOperation(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_CallDetails(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_SslPemKeyCertPair(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_CompressionOptions(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_Server(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc__Tag(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc__ConnectivityTag(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc__RequestCallTag(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc__BatchOperationTag(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc__ServerShutdownTag(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_BaseCompletionQueue(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc__BoundEventLoop(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_PollerCompletionQueue(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_AioRpcStatus(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc__AioState(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_CallbackFailureHandler(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_CallbackWrapper(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_GrpcCallWrapper(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc__AioCall(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_AioChannel(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc__HandlerCallDetails(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_RPCState(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc__ServicerContext(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc__SyncServicerContext(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc__MessageReceiver(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc__ConcurrentRpcLimiter(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_AioServer(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc__GrpcArgWrapper(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_InsecureChannelCredentials(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_ComputeEngineChannelCredentials(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_CensusContext(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_1_next_event(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_7_cython_6cygrpc__metadata(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_6_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_9___init__(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_13__receive_message(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_14__send_message(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_18_status(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_29_read(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_30_write(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_32_abort(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_41___anext__(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_49__request_call(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_51_start(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_53_shutdown(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static PyObject *__pyx_tp_new___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
+static __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_get = {0, 0, 0, 0, 0};
+static __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_keys = {0, 0, 0, 0, 0};
+static __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_pop = {0, 0, 0, 0, 0};
+static __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_values = {0, 0, 0, 0, 0};
+/* #### 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
+  #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
+  #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
+  #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_7_cython_6cygrpc__ChannelArg;
+  PyObject *__pyx_type_7_cython_6cygrpc__ChannelArgs;
+  PyObject *__pyx_type_7_cython_6cygrpc_Call;
+  PyObject *__pyx_type_7_cython_6cygrpc__CallState;
+  PyObject *__pyx_type_7_cython_6cygrpc__ChannelState;
+  PyObject *__pyx_type_7_cython_6cygrpc_IntegratedCall;
+  PyObject *__pyx_type_7_cython_6cygrpc_SegregatedCall;
+  PyObject *__pyx_type_7_cython_6cygrpc_Channel;
+  PyObject *__pyx_type_7_cython_6cygrpc_CallHandle;
+  PyObject *__pyx_type_7_cython_6cygrpc_CallCredentials;
+  PyObject *__pyx_type_7_cython_6cygrpc_MetadataPluginCallCredentials;
+  PyObject *__pyx_type_7_cython_6cygrpc_CompositeCallCredentials;
+  PyObject *__pyx_type_7_cython_6cygrpc_ChannelCredentials;
+  PyObject *__pyx_type_7_cython_6cygrpc_SSLSessionCacheLRU;
+  PyObject *__pyx_type_7_cython_6cygrpc_SSLChannelCredentials;
+  PyObject *__pyx_type_7_cython_6cygrpc_CompositeChannelCredentials;
+  PyObject *__pyx_type_7_cython_6cygrpc_XDSChannelCredentials;
+  PyObject *__pyx_type_7_cython_6cygrpc_ServerCertificateConfig;
+  PyObject *__pyx_type_7_cython_6cygrpc_ServerCredentials;
+  PyObject *__pyx_type_7_cython_6cygrpc_LocalChannelCredentials;
+  PyObject *__pyx_type_7_cython_6cygrpc_ALTSChannelCredentials;
+  PyObject *__pyx_type_7_cython_6cygrpc__LatentEventArg;
+  PyObject *__pyx_type_7_cython_6cygrpc_CompletionQueue;
+  PyObject *__pyx_type_7_cython_6cygrpc_BaseEvent;
+  PyObject *__pyx_type_7_cython_6cygrpc_ConnectivityEvent;
+  PyObject *__pyx_type_7_cython_6cygrpc_RequestCallEvent;
+  PyObject *__pyx_type_7_cython_6cygrpc_BatchOperationEvent;
+  PyObject *__pyx_type_7_cython_6cygrpc_ServerShutdownEvent;
+  PyObject *__pyx_type_7_cython_6cygrpc_Operation;
+  PyObject *__pyx_type_7_cython_6cygrpc_SendInitialMetadataOperation;
+  PyObject *__pyx_type_7_cython_6cygrpc_SendMessageOperation;
+  PyObject *__pyx_type_7_cython_6cygrpc_SendCloseFromClientOperation;
+  PyObject *__pyx_type_7_cython_6cygrpc_SendStatusFromServerOperation;
+  PyObject *__pyx_type_7_cython_6cygrpc_ReceiveInitialMetadataOperation;
+  PyObject *__pyx_type_7_cython_6cygrpc_ReceiveMessageOperation;
+  PyObject *__pyx_type_7_cython_6cygrpc_ReceiveStatusOnClientOperation;
+  PyObject *__pyx_type_7_cython_6cygrpc_ReceiveCloseOnServerOperation;
+  PyObject *__pyx_type_7_cython_6cygrpc_CallDetails;
+  PyObject *__pyx_type_7_cython_6cygrpc_SslPemKeyCertPair;
+  PyObject *__pyx_type_7_cython_6cygrpc_CompressionOptions;
+  PyObject *__pyx_type_7_cython_6cygrpc_Server;
+  PyObject *__pyx_type_7_cython_6cygrpc__Tag;
+  PyObject *__pyx_type_7_cython_6cygrpc__ConnectivityTag;
+  PyObject *__pyx_type_7_cython_6cygrpc__RequestCallTag;
+  PyObject *__pyx_type_7_cython_6cygrpc__BatchOperationTag;
+  PyObject *__pyx_type_7_cython_6cygrpc__ServerShutdownTag;
+  PyObject *__pyx_type_7_cython_6cygrpc_BaseCompletionQueue;
+  PyObject *__pyx_type_7_cython_6cygrpc__BoundEventLoop;
+  PyObject *__pyx_type_7_cython_6cygrpc_PollerCompletionQueue;
+  PyObject *__pyx_type_7_cython_6cygrpc_AioRpcStatus;
+  PyObject *__pyx_type_7_cython_6cygrpc__AioState;
+  PyObject *__pyx_type_7_cython_6cygrpc_CallbackFailureHandler;
+  PyObject *__pyx_type_7_cython_6cygrpc_CallbackWrapper;
+  PyObject *__pyx_type_7_cython_6cygrpc_GrpcCallWrapper;
+  PyObject *__pyx_type_7_cython_6cygrpc__AioCall;
+  PyObject *__pyx_type_7_cython_6cygrpc_AioChannel;
+  PyObject *__pyx_type_7_cython_6cygrpc__HandlerCallDetails;
+  PyObject *__pyx_type_7_cython_6cygrpc_RPCState;
+  PyObject *__pyx_type_7_cython_6cygrpc__ServicerContext;
+  PyObject *__pyx_type_7_cython_6cygrpc__SyncServicerContext;
+  PyObject *__pyx_type_7_cython_6cygrpc__MessageReceiver;
+  PyObject *__pyx_type_7_cython_6cygrpc__ConcurrentRpcLimiter;
+  PyObject *__pyx_type_7_cython_6cygrpc_AioServer;
+  PyObject *__pyx_type_7_cython_6cygrpc__GrpcArgWrapper;
+  PyObject *__pyx_type_7_cython_6cygrpc_InsecureChannelCredentials;
+  PyObject *__pyx_type_7_cython_6cygrpc_ComputeEngineChannelCredentials;
+  PyObject *__pyx_type_7_cython_6cygrpc_CensusContext;
+  PyObject *__pyx_type_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call;
+  PyObject *__pyx_type_7_cython_6cygrpc___pyx_scope_struct_1_next_event;
+  PyObject *__pyx_type_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call;
+  PyObject *__pyx_type_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event;
+  PyObject *__pyx_type_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata;
+  PyObject *__pyx_type_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_7_cython_6cygrpc__metadata;
+  PyObject *__pyx_type_7_cython_6cygrpc___pyx_scope_struct_6_genexpr;
+  PyObject *__pyx_type_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context;
+  PyObject *__pyx_type_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context;
+  PyObject *__pyx_type_7_cython_6cygrpc___pyx_scope_struct_9___init__;
+  PyObject *__pyx_type_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator;
+  PyObject *__pyx_type_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator;
+  PyObject *__pyx_type_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch;
+  PyObject *__pyx_type_7_cython_6cygrpc___pyx_scope_struct_13__receive_message;
+  PyObject *__pyx_type_7_cython_6cygrpc___pyx_scope_struct_14__send_message;
+  PyObject *__pyx_type_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata;
+  PyObject *__pyx_type_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata;
+  PyObject *__pyx_type_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server;
+  PyObject *__pyx_type_7_cython_6cygrpc___pyx_scope_struct_18_status;
+  PyObject *__pyx_type_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata;
+  PyObject *__pyx_type_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary;
+  PyObject *__pyx_type_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received;
+  PyObject *__pyx_type_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message;
+  PyObject *__pyx_type_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message;
+  PyObject *__pyx_type_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close;
+  PyObject *__pyx_type_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream;
+  PyObject *__pyx_type_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary;
+  PyObject *__pyx_type_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream;
+  PyObject *__pyx_type_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state;
+  PyObject *__pyx_type_7_cython_6cygrpc___pyx_scope_struct_29_read;
+  PyObject *__pyx_type_7_cython_6cygrpc___pyx_scope_struct_30_write;
+  PyObject *__pyx_type_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata;
+  PyObject *__pyx_type_7_cython_6cygrpc___pyx_scope_struct_32_abort;
+  PyObject *__pyx_type_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status;
+  PyObject *__pyx_type_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor;
+  PyObject *__pyx_type_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler;
+  PyObject *__pyx_type_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response;
+  PyObject *__pyx_type_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses;
+  PyObject *__pyx_type_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc;
+  PyObject *__pyx_type_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc;
+  PyObject *__pyx_type_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver;
+  PyObject *__pyx_type_7_cython_6cygrpc___pyx_scope_struct_41___anext__;
+  PyObject *__pyx_type_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc;
+  PyObject *__pyx_type_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc;
+  PyObject *__pyx_type_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions;
+  PyObject *__pyx_type_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler;
+  PyObject *__pyx_type_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core;
+  PyObject *__pyx_type_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro;
+  PyObject *__pyx_type_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc;
+  PyObject *__pyx_type_7_cython_6cygrpc___pyx_scope_struct_49__request_call;
+  PyObject *__pyx_type_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop;
+  PyObject *__pyx_type_7_cython_6cygrpc___pyx_scope_struct_51_start;
+  PyObject *__pyx_type_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down;
+  PyObject *__pyx_type_7_cython_6cygrpc___pyx_scope_struct_53_shutdown;
+  PyObject *__pyx_type_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination;
+  PyObject *__pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg;
+  PyObject *__pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_;
+  PyObject *__pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args;
+  PyObject *__pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_;
+  #endif
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc__ChannelArg;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc__ChannelArgs;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc_Call;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc__CallState;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc__ChannelState;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc_IntegratedCall;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc_SegregatedCall;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc_Channel;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc_CallHandle;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc_CallCredentials;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc_MetadataPluginCallCredentials;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc_CompositeCallCredentials;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc_ChannelCredentials;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc_SSLSessionCacheLRU;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc_SSLChannelCredentials;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc_CompositeChannelCredentials;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc_XDSChannelCredentials;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc_ServerCertificateConfig;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc_ServerCredentials;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc_LocalChannelCredentials;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc_ALTSChannelCredentials;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc__LatentEventArg;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc_CompletionQueue;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc_BaseEvent;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc_ConnectivityEvent;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc_RequestCallEvent;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc_BatchOperationEvent;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc_ServerShutdownEvent;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc_Operation;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc_SendInitialMetadataOperation;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc_SendMessageOperation;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc_SendCloseFromClientOperation;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc_SendStatusFromServerOperation;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc_ReceiveInitialMetadataOperation;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc_ReceiveMessageOperation;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc_ReceiveStatusOnClientOperation;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc_ReceiveCloseOnServerOperation;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc_CallDetails;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc_SslPemKeyCertPair;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc_CompressionOptions;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc_Server;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc__Tag;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc__ConnectivityTag;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc__RequestCallTag;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc__BatchOperationTag;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc__ServerShutdownTag;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc_BaseCompletionQueue;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc__BoundEventLoop;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc_PollerCompletionQueue;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc_AioRpcStatus;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc__AioState;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc_CallbackFailureHandler;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc_CallbackWrapper;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc_GrpcCallWrapper;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc__AioCall;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc_AioChannel;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc__HandlerCallDetails;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc_RPCState;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc__ServicerContext;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc__SyncServicerContext;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc__MessageReceiver;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc__ConcurrentRpcLimiter;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc_AioServer;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc__GrpcArgWrapper;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc_InsecureChannelCredentials;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc_ComputeEngineChannelCredentials;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc_CensusContext;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_1_next_event;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_7_cython_6cygrpc__metadata;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_6_genexpr;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_9___init__;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_13__receive_message;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_14__send_message;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_18_status;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_29_read;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_30_write;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_32_abort;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_41___anext__;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_49__request_call;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_51_start;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_53_shutdown;
+  PyTypeObject *__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination;
+  PyTypeObject *__pyx_ptype___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg;
+  PyTypeObject *__pyx_ptype___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_;
+  PyTypeObject *__pyx_ptype___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args;
+  PyTypeObject *__pyx_ptype___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_;
+  PyObject *__pyx_kp_s_0;
+  PyObject *__pyx_kp_s_1;
+  PyObject *__pyx_n_s_ALTSChannelCredentials;
+  PyObject *__pyx_n_s_ALTSChannelCredentials___reduce;
+  PyObject *__pyx_n_s_ALTSChannelCredentials___setstat;
+  PyObject *__pyx_n_s_AWAIT_THREADS_TIMEOUT_SECONDS;
+  PyObject *__pyx_n_s_AbortError;
+  PyObject *__pyx_kp_s_Abort_already_called;
+  PyObject *__pyx_kp_s_Abort_error_has_been_replaced;
+  PyObject *__pyx_kp_s_Abort_error_unexpectedly_suppres;
+  PyObject *__pyx_kp_s_Aborting_method_s_due_to_server;
+  PyObject *__pyx_n_s_ActiveThreadCount;
+  PyObject *__pyx_n_s_ActiveThreadCount___init;
+  PyObject *__pyx_n_s_ActiveThreadCount_await_zero_th;
+  PyObject *__pyx_n_s_ActiveThreadCount_decrement;
+  PyObject *__pyx_n_s_ActiveThreadCount_increment;
+  PyObject *__pyx_n_s_AioCall;
+  PyObject *__pyx_n_s_AioCall___reduce_cython;
+  PyObject *__pyx_n_s_AioCall___setstate_cython;
+  PyObject *__pyx_n_s_AioCall__handle_status_once_rec;
+  PyObject *__pyx_n_s_AioCall__repr;
+  PyObject *__pyx_n_s_AioCall_add_done_callback;
+  PyObject *__pyx_n_s_AioCall_cancel;
+  PyObject *__pyx_n_s_AioCall_cancelled;
+  PyObject *__pyx_n_s_AioCall_done;
+  PyObject *__pyx_n_s_AioCall_initial_metadata;
+  PyObject *__pyx_n_s_AioCall_initiate_stream_stream;
+  PyObject *__pyx_n_s_AioCall_initiate_unary_stream;
+  PyObject *__pyx_n_s_AioCall_is_locally_cancelled;
+  PyObject *__pyx_n_s_AioCall_is_ok;
+  PyObject *__pyx_n_s_AioCall_receive_serialized_mess;
+  PyObject *__pyx_n_s_AioCall_send_receive_close;
+  PyObject *__pyx_n_s_AioCall_send_serialized_message;
+  PyObject *__pyx_n_s_AioCall_set_internal_error;
+  PyObject *__pyx_n_s_AioCall_status;
+  PyObject *__pyx_n_s_AioCall_stream_unary;
+  PyObject *__pyx_n_s_AioCall_time_remaining;
+  PyObject *__pyx_n_s_AioCall_unary_unary;
+  PyObject *__pyx_n_s_AioChannel;
+  PyObject *__pyx_n_s_AioChannel___reduce_cython;
+  PyObject *__pyx_n_s_AioChannel___setstate_cython;
+  PyObject *__pyx_n_s_AioChannel_call;
+  PyObject *__pyx_n_s_AioChannel_check_connectivity_st;
+  PyObject *__pyx_n_s_AioChannel_close;
+  PyObject *__pyx_n_s_AioChannel_closed;
+  PyObject *__pyx_n_s_AioChannel_closing;
+  PyObject *__pyx_n_s_AioChannel_watch_connectivity_st;
+  PyObject *__pyx_n_s_AioRpcStatus;
+  PyObject *__pyx_n_s_AioRpcStatus___reduce_cython;
+  PyObject *__pyx_n_s_AioRpcStatus___setstate_cython;
+  PyObject *__pyx_n_s_AioRpcStatus_code;
+  PyObject *__pyx_n_s_AioRpcStatus_debug_error_string;
+  PyObject *__pyx_n_s_AioRpcStatus_details;
+  PyObject *__pyx_n_s_AioRpcStatus_trailing_metadata;
+  PyObject *__pyx_n_s_AioServer;
+  PyObject *__pyx_n_s_AioServer___reduce_cython;
+  PyObject *__pyx_n_s_AioServer___setstate_cython;
+  PyObject *__pyx_n_s_AioServer__request_call;
+  PyObject *__pyx_n_s_AioServer__server_main_loop;
+  PyObject *__pyx_n_s_AioServer__serving_task_crash_ha;
+  PyObject *__pyx_n_s_AioServer__start_shutting_down;
+  PyObject *__pyx_n_s_AioServer_add_generic_rpc_handle;
+  PyObject *__pyx_n_s_AioServer_add_insecure_port;
+  PyObject *__pyx_n_s_AioServer_add_secure_port;
+  PyObject *__pyx_n_s_AioServer_is_running;
+  PyObject *__pyx_n_s_AioServer_shutdown;
+  PyObject *__pyx_n_s_AioServer_start;
+  PyObject *__pyx_n_s_AioServer_wait_for_termination;
+  PyObject *__pyx_n_s_AioState;
+  PyObject *__pyx_n_s_AioState___reduce_cython;
+  PyObject *__pyx_n_s_AioState___setstate_cython;
+  PyObject *__pyx_n_s_AssertionError;
+  PyObject *__pyx_n_s_AsyncIOEngine;
+  PyObject *__pyx_n_s_AttributeError;
+  PyObject *__pyx_n_s_BaseCompletionQueue;
+  PyObject *__pyx_n_s_BaseCompletionQueue___reduce_cyt;
+  PyObject *__pyx_n_s_BaseCompletionQueue___setstate_c;
+  PyObject *__pyx_n_s_BaseError;
+  PyObject *__pyx_n_s_BaseEvent;
+  PyObject *__pyx_n_s_BatchOperationEvent;
+  PyObject *__pyx_n_s_BatchOperationEvent___reduce_cyt;
+  PyObject *__pyx_n_s_BatchOperationEvent___setstate_c;
+  PyObject *__pyx_n_s_BatchOperationTag;
+  PyObject *__pyx_n_s_BatchOperationTag___reduce_cyth;
+  PyObject *__pyx_n_s_BatchOperationTag___setstate_cy;
+  PyObject *__pyx_kp_s_Binary_metadata_key_s_expected_b;
+  PyObject *__pyx_n_s_BoundEventLoop;
+  PyObject *__pyx_n_s_BoundEventLoop___reduce_cython;
+  PyObject *__pyx_n_s_BoundEventLoop___setstate_cytho;
+  PyObject *__pyx_n_s_BoundEventLoop_close;
+  PyObject *__pyx_n_s_COMPRESSION_METADATA_STRING_MAP;
+  PyObject *__pyx_n_s_CUSTOM_IO_MANAGER;
+  PyObject *__pyx_n_s_CYGRPC_STATUS_CODE_TO_STATUS_COD;
+  PyObject *__pyx_n_s_Call;
+  PyObject *__pyx_n_s_CallCredentials;
+  PyObject *__pyx_n_s_CallCredentials___reduce_cython;
+  PyObject *__pyx_n_s_CallCredentials___setstate_cytho;
+  PyObject *__pyx_n_s_CallDetails;
+  PyObject *__pyx_n_s_CallDetails___reduce_cython;
+  PyObject *__pyx_n_s_CallDetails___setstate_cython;
+  PyObject *__pyx_n_s_CallError;
+  PyObject *__pyx_n_s_CallHandle;
+  PyObject *__pyx_n_s_CallHandle___reduce_cython;
+  PyObject *__pyx_n_s_CallHandle___setstate_cython;
+  PyObject *__pyx_n_s_CallState;
+  PyObject *__pyx_n_s_CallState___reduce_cython;
+  PyObject *__pyx_n_s_CallState___setstate_cython;
+  PyObject *__pyx_n_s_Call___reduce_cython;
+  PyObject *__pyx_n_s_Call___setstate_cython;
+  PyObject *__pyx_n_s_Call__custom_op_on_c_call;
+  PyObject *__pyx_n_s_Call__start_batch;
+  PyObject *__pyx_n_s_Call_cancel;
+  PyObject *__pyx_kp_s_Call_credentials_are_only_valid;
+  PyObject *__pyx_kp_s_Call_credentials_may_not_be_NULL;
+  PyObject *__pyx_n_s_Call_peer;
+  PyObject *__pyx_n_s_Call_set_credentials;
+  PyObject *__pyx_n_s_Call_start_client_batch;
+  PyObject *__pyx_n_s_Call_start_server_batch;
+  PyObject *__pyx_n_s_CallbackFailureHandler;
+  PyObject *__pyx_n_s_CallbackFailureHandler___reduce;
+  PyObject *__pyx_n_s_CallbackFailureHandler___setstat;
+  PyObject *__pyx_n_s_CallbackWrapper;
+  PyObject *__pyx_n_s_CallbackWrapper___reduce_cython;
+  PyObject *__pyx_n_s_CallbackWrapper___setstate_cytho;
+  PyObject *__pyx_n_s_CancelledError;
+  PyObject *__pyx_kp_s_Cannot_invoke_RPC_on_closed_chan;
+  PyObject *__pyx_kp_s_Cannot_invoke_RPC_s;
+  PyObject *__pyx_kp_s_Cannot_monitor_channel_state_s;
+  PyObject *__pyx_n_s_CensusContext;
+  PyObject *__pyx_n_s_CensusContext___reduce_cython;
+  PyObject *__pyx_n_s_CensusContext___setstate_cython;
+  PyObject *__pyx_n_s_Channel;
+  PyObject *__pyx_n_s_ChannelArg;
+  PyObject *__pyx_n_s_ChannelArgKey;
+  PyObject *__pyx_n_s_ChannelArg___reduce_cython;
+  PyObject *__pyx_n_s_ChannelArg___setstate_cython;
+  PyObject *__pyx_n_s_ChannelArgs;
+  PyObject *__pyx_n_s_ChannelArgs___reduce_cython;
+  PyObject *__pyx_n_s_ChannelArgs___setstate_cython;
+  PyObject *__pyx_n_s_ChannelCredentials;
+  PyObject *__pyx_n_s_ChannelCredentials___reduce_cyth;
+  PyObject *__pyx_n_s_ChannelCredentials___setstate_cy;
+  PyObject *__pyx_n_s_ChannelState;
+  PyObject *__pyx_n_s_ChannelState___reduce_cython;
+  PyObject *__pyx_n_s_ChannelState___setstate_cython;
+  PyObject *__pyx_n_s_Channel___reduce_cython;
+  PyObject *__pyx_n_s_Channel___setstate_cython;
+  PyObject *__pyx_n_s_Channel_check_connectivity_state;
+  PyObject *__pyx_n_s_Channel_close;
+  PyObject *__pyx_n_s_Channel_close_on_fork;
+  PyObject *__pyx_n_s_Channel_get_registered_call_hand;
+  PyObject *__pyx_n_s_Channel_integrated_call;
+  PyObject *__pyx_kp_s_Channel_is_closed;
+  PyObject *__pyx_n_s_Channel_next_call_event;
+  PyObject *__pyx_n_s_Channel_segregated_call;
+  PyObject *__pyx_n_s_Channel_target;
+  PyObject *__pyx_n_s_Channel_watch_connectivity_state;
+  PyObject *__pyx_n_s_CompletionQueue;
+  PyObject *__pyx_n_s_CompletionQueue___reduce_cython;
+  PyObject *__pyx_n_s_CompletionQueue___setstate_cytho;
+  PyObject *__pyx_n_s_CompletionQueue__internal_poll;
+  PyObject *__pyx_n_s_CompletionQueue_clear;
+  PyObject *__pyx_n_s_CompletionQueue_poll;
+  PyObject *__pyx_n_s_CompletionQueue_shutdown;
+  PyObject *__pyx_n_s_CompletionType;
+  PyObject *__pyx_n_s_CompositeCallCredentials;
+  PyObject *__pyx_n_s_CompositeCallCredentials___reduc;
+  PyObject *__pyx_n_s_CompositeCallCredentials___setst;
+  PyObject *__pyx_n_s_CompositeChannelCredentials;
+  PyObject *__pyx_n_s_CompositeChannelCredentials___re;
+  PyObject *__pyx_n_s_CompositeChannelCredentials___se;
+  PyObject *__pyx_n_s_CompressionAlgorithm;
+  PyObject *__pyx_n_s_CompressionLevel;
+  PyObject *__pyx_n_s_CompressionOptions;
+  PyObject *__pyx_n_s_CompressionOptions___reduce_cyth;
+  PyObject *__pyx_n_s_CompressionOptions___setstate_cy;
+  PyObject *__pyx_n_s_CompressionOptions_disable_algor;
+  PyObject *__pyx_n_s_CompressionOptions_enable_algori;
+  PyObject *__pyx_n_s_CompressionOptions_is_algorithm;
+  PyObject *__pyx_n_s_CompressionOptions_to_channel_ar;
+  PyObject *__pyx_kp_s_Compression_setting_must_be_spec;
+  PyObject *__pyx_n_s_ComputeEngineChannelCredentials;
+  PyObject *__pyx_n_s_ComputeEngineChannelCredentials_2;
+  PyObject *__pyx_n_s_ComputeEngineChannelCredentials_3;
+  PyObject *__pyx_n_s_ConcurrentRpcLimiter;
+  PyObject *__pyx_n_s_ConcurrentRpcLimiter___reduce_c;
+  PyObject *__pyx_n_s_ConcurrentRpcLimiter___setstate;
+  PyObject *__pyx_n_s_ConcurrentRpcLimiter__decrease;
+  PyObject *__pyx_n_s_ConcurrentRpcLimiter_check_befo;
+  PyObject *__pyx_n_s_ConcurrentRpcLimiter_decrease_o;
+  PyObject *__pyx_kp_s_Concurrent_RPC_limit_exceeded;
+  PyObject *__pyx_n_s_Condition;
+  PyObject *__pyx_n_s_ConnectivityEvent;
+  PyObject *__pyx_n_s_ConnectivityEvent___reduce_cytho;
+  PyObject *__pyx_n_s_ConnectivityEvent___setstate_cyt;
+  PyObject *__pyx_n_s_ConnectivityState;
+  PyObject *__pyx_n_s_ConnectivityTag;
+  PyObject *__pyx_n_s_ConnectivityTag___reduce_cython;
+  PyObject *__pyx_n_s_ConnectivityTag___setstate_cyth;
+  PyObject *__pyx_kp_s_Core_should_not_return_GRPC_QUEU;
+  PyObject *__pyx_kp_s_Credentials_couldn_t_have_been_s;
+  PyObject *__pyx_kp_s_Dedicated_exception_class_for_wa;
+  PyObject *__pyx_n_s_DeprecationWarning;
+  PyObject *__pyx_n_s_EMPTY_FLAGS;
+  PyObject *__pyx_n_s_EMPTY_MASK;
+  PyObject *__pyx_n_s_EOF;
+  PyObject *__pyx_n_s_EOF_2;
+  PyObject *__pyx_n_s_EOF___bool;
+  PyObject *__pyx_n_s_EOF___len;
+  PyObject *__pyx_n_s_EOF___repr;
+  PyObject *__pyx_n_s_EOF___str;
+  PyObject *__pyx_n_s_EOF__repr;
+  PyObject *__pyx_n_s_EX_USAGE;
+  PyObject *__pyx_n_s_Enum;
+  PyObject *__pyx_kp_s_Error_fetching_certificate_confi;
+  PyObject *__pyx_kp_s_Error_fetching_certificate_confi_2;
+  PyObject *__pyx_kp_s_Error_in_callback_for_method_s;
+  PyObject *__pyx_kp_s_Error_in_grpc_server_request_cal;
+  PyObject *__pyx_n_s_ExecuteBatchError;
+  PyObject *__pyx_kp_s_ExecuteBatchError_raised_in_core;
+  PyObject *__pyx_kp_s_Exiting_child_due_to_raised_exce;
+  PyObject *__pyx_kp_s_Expected_bytes_str_or_unicode_no;
+  PyObject *__pyx_kp_s_Expected_int_bytes_or_behavior_g;
+  PyObject *__pyx_kp_s_Expected_str_not;
+  PyObject *__pyx_kp_s_Expecting_non_ok_status_code;
+  PyObject *__pyx_kp_s_Failed_grpc_call_start_batch_wit;
+  PyObject *__pyx_kp_s_Failed_s_s;
+  PyObject *__pyx_kp_s_Failed_sending_error_status_from;
+  PyObject *__pyx_kp_s_Failed_to_get_server_sockets_ple;
+  PyObject *__pyx_kp_s_Failed_to_get_servers_please_ens;
+  PyObject *__pyx_kp_s_Failed_to_get_the_channel_please;
+  PyObject *__pyx_kp_s_Failed_to_get_the_server_please;
+  PyObject *__pyx_kp_s_Failed_to_get_the_socket_please;
+  PyObject *__pyx_kp_s_Failed_to_get_the_subchannel_ple;
+  PyObject *__pyx_kp_s_Failed_to_get_top_channels_pleas;
+  PyObject *__pyx_kp_s_Failed_to_receive_any_message_fr;
+  PyObject *__pyx_kp_s_Failed_to_shutdown_gRPC_Core_aft;
+  PyObject *__pyx_kp_s_Failed_to_shutdown_gRPC_Python_t;
+  PyObject *__pyx_n_s_ForkManagedThread;
+  PyObject *__pyx_n_s_ForkManagedThread___init;
+  PyObject *__pyx_n_s_ForkManagedThread___init___local;
+  PyObject *__pyx_n_s_ForkManagedThread_join;
+  PyObject *__pyx_n_s_ForkManagedThread_setDaemon;
+  PyObject *__pyx_n_s_ForkManagedThread_start;
+  PyObject *__pyx_n_s_ForkState;
+  PyObject *__pyx_n_s_ForkState___init;
+  PyObject *__pyx_n_s_GRPC_ASYNCIO_ENGINE;
+  PyObject *__pyx_n_s_GRPC_COMPRESSION_CHANNEL_DEFAULT;
+  PyObject *__pyx_n_s_GRPC_COMPRESSION_REQUEST_ALGORIT;
+  PyObject *__pyx_n_s_GRPC_ENABLE_FORK_SUPPORT;
+  PyObject *__pyx_n_s_GRPC_ENABLE_FORK_SUPPORT_2;
+  PyObject *__pyx_n_s_GRPC_PROPAGATE_CANCELLATION;
+  PyObject *__pyx_n_s_GRPC_PROPAGATE_CENSUS_STATS_CONT;
+  PyObject *__pyx_n_s_GRPC_PROPAGATE_CENSUS_TRACING_CO;
+  PyObject *__pyx_n_s_GRPC_PROPAGATE_DEADLINE;
+  PyObject *__pyx_n_s_GRPC_PROPAGATE_DEFAULTS;
+  PyObject *__pyx_n_s_Group;
+  PyObject *__pyx_n_s_GrpcArgWrapper;
+  PyObject *__pyx_n_s_GrpcArgWrapper___reduce_cython;
+  PyObject *__pyx_n_s_GrpcArgWrapper___setstate_cytho;
+  PyObject *__pyx_n_s_GrpcCallWrapper;
+  PyObject *__pyx_n_s_HandlerCallDetails;
+  PyObject *__pyx_n_s_HandlerCallDetails___reduce_cyt;
+  PyObject *__pyx_n_s_HandlerCallDetails___setstate_c;
+  PyObject *__pyx_n_s_IMMUTABLE_EMPTY_METADATA;
+  PyObject *__pyx_n_s_INTERNAL_CALL_ERROR_MESSAGE_FOR;
+  PyObject *__pyx_n_s_ImportError;
+  PyObject *__pyx_kp_s_Incompatible_checksums_0x_x_vs_0;
+  PyObject *__pyx_kp_s_Incompatible_checksums_0x_x_vs_0_2;
+  PyObject *__pyx_n_s_InitialMetadataFlags;
+  PyObject *__pyx_n_s_InsecureChannelCredentials;
+  PyObject *__pyx_n_s_InsecureChannelCredentials___red;
+  PyObject *__pyx_n_s_InsecureChannelCredentials___set;
+  PyObject *__pyx_n_s_IntegratedCall;
+  PyObject *__pyx_n_s_IntegratedCall___reduce_cython;
+  PyObject *__pyx_n_s_IntegratedCall___setstate_cython;
+  PyObject *__pyx_n_s_IntegratedCall_cancel;
+  PyObject *__pyx_n_s_IntegratedCall_operate;
+  PyObject *__pyx_n_s_InternalError;
+  PyObject *__pyx_kp_s_Internal_error_from_Core;
+  PyObject *__pyx_kp_s_Internal_gRPC_call_error_d;
+  PyObject *__pyx_kp_s_Invalid_encoding_on_s;
+  PyObject *__pyx_kp_u_Invalid_trailing_metadata_type_e;
+  PyObject *__pyx_n_s_KeyError;
+  PyObject *__pyx_n_s_KeyboardInterrupt;
+  PyObject *__pyx_n_s_LOGGER;
+  PyObject *__pyx_n_s_LatentEventArg;
+  PyObject *__pyx_n_s_LocalChannelCredentials;
+  PyObject *__pyx_n_s_LocalChannelCredentials___reduce;
+  PyObject *__pyx_n_s_LocalChannelCredentials___setsta;
+  PyObject *__pyx_n_s_LocalConnectionType;
+  PyObject *__pyx_kp_s_Locally_aborted;
+  PyObject *__pyx_n_s_Lock;
+  PyObject *__pyx_n_s_MessageReceiver;
+  PyObject *__pyx_n_s_MessageReceiver___anext;
+  PyObject *__pyx_n_s_MessageReceiver___reduce_cython;
+  PyObject *__pyx_n_s_MessageReceiver___setstate_cyth;
+  PyObject *__pyx_n_s_MessageReceiver__async_message;
+  PyObject *__pyx_n_s_MetadataPluginCallCredentials;
+  PyObject *__pyx_n_s_MetadataPluginCallCredentials_2;
+  PyObject *__pyx_n_s_MetadataPluginCallCredentials_3;
+  PyObject *__pyx_n_s_Metadatum;
+  PyObject *__pyx_kp_s_Method_not_found;
+  PyObject *__pyx_n_s_NON_OK_CALL_REPRESENTATION;
+  PyObject *__pyx_kp_s_No_custom_hooks_are_implemented;
+  PyObject *__pyx_kp_s_Non_thread_safe_operation;
+  PyObject *__pyx_n_s_None;
+  PyObject *__pyx_n_s_NotImplementedError;
+  PyObject *__pyx_n_s_OK_CALL_REPRESENTATION;
+  PyObject *__pyx_n_s_Operation;
+  PyObject *__pyx_n_s_OperationType;
+  PyObject *__pyx_n_s_Operation___reduce_cython;
+  PyObject *__pyx_n_s_Operation___setstate_cython;
+  PyObject *__pyx_n_s_Optional;
+  PyObject *__pyx_n_s_POLLER;
+  PyObject *__pyx_n_s_PickleError;
+  PyObject *__pyx_kp_s_Please_report_to_https_github_co;
+  PyObject *__pyx_n_s_PollerCompletionQueue;
+  PyObject *__pyx_n_s_PollerCompletionQueue___reduce_c;
+  PyObject *__pyx_n_s_PollerCompletionQueue___setstate;
+  PyObject *__pyx_n_s_PollerCompletionQueue__handle_ev;
+  PyObject *__pyx_n_s_PollerCompletionQueue__poll_wrap;
+  PyObject *__pyx_n_s_PollerCompletionQueue_bind_loop;
+  PyObject *__pyx_n_s_PropagationConstants;
+  PyObject *__pyx_n_s_Pyx_CFunc_7_cython_6cygrpc_obj;
+  PyObject *__pyx_n_s_Pyx_CFunc_7_cython_6cygrpc_obj_2;
+  PyObject *__pyx_n_s_Pyx_CFunc_7_cython_6cygrpc_obj_3;
+  PyObject *__pyx_n_s_Pyx_CFunc_7_cython_6cygrpc_voi;
+  PyObject *__pyx_n_s_Queue;
+  PyObject *__pyx_n_s_RLock;
+  PyObject *__pyx_n_s_RPCState;
+  PyObject *__pyx_n_s_RPCState___reduce_cython;
+  PyObject *__pyx_n_s_RPCState___setstate_cython;
+  PyObject *__pyx_kp_s_RPC_already_finished;
+  PyObject *__pyx_kp_s_RPC_cancelled_for_servicer_metho;
+  PyObject *__pyx_kp_s_RPC_cancelled_for_unknown_reason;
+  PyObject *__pyx_kp_s_Raised_if_the_server_is_stopped;
+  PyObject *__pyx_kp_s_Raised_upon_unexpected_errors_in;
+  PyObject *__pyx_kp_s_Raised_when_calling_abort_in_ser;
+  PyObject *__pyx_kp_s_Raised_when_execute_batch_return;
+  PyObject *__pyx_kp_s_Raised_when_the_usage_of_API_by;
+  PyObject *__pyx_n_s_ReceiveCloseOnServerOperation;
+  PyObject *__pyx_n_s_ReceiveCloseOnServerOperation_2;
+  PyObject *__pyx_n_s_ReceiveCloseOnServerOperation_3;
+  PyObject *__pyx_n_s_ReceiveCloseOnServerOperation_ca;
+  PyObject *__pyx_n_s_ReceiveCloseOnServerOperation_ty;
+  PyObject *__pyx_n_s_ReceiveInitialMetadataOperation;
+  PyObject *__pyx_n_s_ReceiveInitialMetadataOperation_2;
+  PyObject *__pyx_n_s_ReceiveInitialMetadataOperation_3;
+  PyObject *__pyx_n_s_ReceiveInitialMetadataOperation_4;
+  PyObject *__pyx_n_s_ReceiveInitialMetadataOperation_5;
+  PyObject *__pyx_n_s_ReceiveMessageOperation;
+  PyObject *__pyx_n_s_ReceiveMessageOperation___reduce;
+  PyObject *__pyx_n_s_ReceiveMessageOperation___setsta;
+  PyObject *__pyx_n_s_ReceiveMessageOperation_message;
+  PyObject *__pyx_n_s_ReceiveMessageOperation_type;
+  PyObject *__pyx_n_s_ReceiveStatusOnClientOperation;
+  PyObject *__pyx_n_s_ReceiveStatusOnClientOperation_2;
+  PyObject *__pyx_n_s_ReceiveStatusOnClientOperation_3;
+  PyObject *__pyx_n_s_ReceiveStatusOnClientOperation_c;
+  PyObject *__pyx_n_s_ReceiveStatusOnClientOperation_d;
+  PyObject *__pyx_n_s_ReceiveStatusOnClientOperation_e;
+  PyObject *__pyx_n_s_ReceiveStatusOnClientOperation_t;
+  PyObject *__pyx_n_s_ReceiveStatusOnClientOperation_t_2;
+  PyObject *__pyx_n_s_RequestCallError;
+  PyObject *__pyx_n_s_RequestCallEvent;
+  PyObject *__pyx_n_s_RequestCallEvent___reduce_cython;
+  PyObject *__pyx_n_s_RequestCallEvent___setstate_cyth;
+  PyObject *__pyx_n_s_RequestCallTag;
+  PyObject *__pyx_n_s_RequestCallTag___reduce_cython;
+  PyObject *__pyx_n_s_RequestCallTag___setstate_cytho;
+  PyObject *__pyx_n_s_RuntimeError;
+  PyObject *__pyx_n_s_SERVICES_TO_EXCLUDE;
+  PyObject *__pyx_n_s_SSLChannelCredentials;
+  PyObject *__pyx_n_s_SSLChannelCredentials___reduce_c;
+  PyObject *__pyx_n_s_SSLChannelCredentials___setstate;
+  PyObject *__pyx_n_s_SSLSessionCacheLRU;
+  PyObject *__pyx_n_s_SSLSessionCacheLRU___reduce_cyth;
+  PyObject *__pyx_n_s_SSLSessionCacheLRU___setstate_cy;
+  PyObject *__pyx_n_s_SegregatedCall;
+  PyObject *__pyx_n_s_SegregatedCall___reduce_cython;
+  PyObject *__pyx_n_s_SegregatedCall___setstate_cython;
+  PyObject *__pyx_n_s_SegregatedCall_cancel;
+  PyObject *__pyx_n_s_SegregatedCall_next_event;
+  PyObject *__pyx_n_s_SegregatedCall_operate;
+  PyObject *__pyx_n_s_SendCloseFromClientOperation;
+  PyObject *__pyx_n_s_SendCloseFromClientOperation___r;
+  PyObject *__pyx_n_s_SendCloseFromClientOperation___s;
+  PyObject *__pyx_n_s_SendCloseFromClientOperation_typ;
+  PyObject *__pyx_n_s_SendInitialMetadataOperation;
+  PyObject *__pyx_n_s_SendInitialMetadataOperation___r;
+  PyObject *__pyx_n_s_SendInitialMetadataOperation___s;
+  PyObject *__pyx_n_s_SendInitialMetadataOperation_typ;
+  PyObject *__pyx_n_s_SendMessageOperation;
+  PyObject *__pyx_n_s_SendMessageOperation___reduce_cy;
+  PyObject *__pyx_n_s_SendMessageOperation___setstate;
+  PyObject *__pyx_n_s_SendMessageOperation_type;
+  PyObject *__pyx_n_s_SendStatusFromServerOperation;
+  PyObject *__pyx_n_s_SendStatusFromServerOperation_2;
+  PyObject *__pyx_n_s_SendStatusFromServerOperation_3;
+  PyObject *__pyx_n_s_SendStatusFromServerOperation_ty;
+  PyObject *__pyx_kp_s_Send_initial_metadata_failed_alr;
+  PyObject *__pyx_n_s_Server;
+  PyObject *__pyx_n_s_ServerCertificateConfig;
+  PyObject *__pyx_n_s_ServerCertificateConfig___reduce;
+  PyObject *__pyx_n_s_ServerCertificateConfig___setsta;
+  PyObject *__pyx_n_s_ServerCertificateConfiguration;
+  PyObject *__pyx_n_s_ServerCredentials;
+  PyObject *__pyx_n_s_ServerCredentials___reduce_cytho;
+  PyObject *__pyx_n_s_ServerCredentials___setstate_cyt;
+  PyObject *__pyx_n_s_ServerShutdownEvent;
+  PyObject *__pyx_n_s_ServerShutdownEvent___reduce_cyt;
+  PyObject *__pyx_n_s_ServerShutdownEvent___setstate_c;
+  PyObject *__pyx_n_s_ServerShutdownTag;
+  PyObject *__pyx_n_s_ServerShutdownTag___reduce_cyth;
+  PyObject *__pyx_n_s_ServerShutdownTag___setstate_cy;
+  PyObject *__pyx_n_s_ServerStoppedError;
+  PyObject *__pyx_n_s_Server___reduce_cython;
+  PyObject *__pyx_n_s_Server___setstate_cython;
+  PyObject *__pyx_n_s_Server_add_http2_port;
+  PyObject *__pyx_kp_s_Server_already_stopped;
+  PyObject *__pyx_n_s_Server_cancel_all_calls;
+  PyObject *__pyx_n_s_Server_destroy;
+  PyObject *__pyx_kp_s_Server_not_in_ready_state;
+  PyObject *__pyx_n_s_Server_register_completion_queue;
+  PyObject *__pyx_n_s_Server_request_call;
+  PyObject *__pyx_n_s_Server_shutdown;
+  PyObject *__pyx_kp_s_Server_shutdown_failed_no_comple;
+  PyObject *__pyx_n_s_Server_start;
+  PyObject *__pyx_n_s_ServicerContext;
+  PyObject *__pyx_n_s_ServicerContext___reduce_cython;
+  PyObject *__pyx_n_s_ServicerContext___setstate_cyth;
+  PyObject *__pyx_n_s_ServicerContext_abort;
+  PyObject *__pyx_n_s_ServicerContext_abort_with_stat;
+  PyObject *__pyx_n_s_ServicerContext_add_done_callba;
+  PyObject *__pyx_n_s_ServicerContext_auth_context;
+  PyObject *__pyx_n_s_ServicerContext_cancelled;
+  PyObject *__pyx_n_s_ServicerContext_code;
+  PyObject *__pyx_n_s_ServicerContext_details;
+  PyObject *__pyx_n_s_ServicerContext_disable_next_me;
+  PyObject *__pyx_n_s_ServicerContext_done;
+  PyObject *__pyx_n_s_ServicerContext_invocation_meta;
+  PyObject *__pyx_n_s_ServicerContext_peer;
+  PyObject *__pyx_n_s_ServicerContext_peer_identities;
+  PyObject *__pyx_n_s_ServicerContext_peer_identity_k;
+  PyObject *__pyx_n_s_ServicerContext_read;
+  PyObject *__pyx_n_s_ServicerContext_send_initial_me;
+  PyObject *__pyx_n_s_ServicerContext_set_code;
+  PyObject *__pyx_n_s_ServicerContext_set_compression;
+  PyObject *__pyx_n_s_ServicerContext_set_details;
+  PyObject *__pyx_n_s_ServicerContext_set_trailing_me;
+  PyObject *__pyx_n_s_ServicerContext_time_remaining;
+  PyObject *__pyx_n_s_ServicerContext_trailing_metada;
+  PyObject *__pyx_n_s_ServicerContext_write;
+  PyObject *__pyx_n_s_SslPemKeyCertPair;
+  PyObject *__pyx_n_s_SslPemKeyCertPair___reduce_cytho;
+  PyObject *__pyx_n_s_SslPemKeyCertPair___setstate_cyt;
+  PyObject *__pyx_n_s_StatusCode;
+  PyObject *__pyx_n_s_SyncServicerContext;
+  PyObject *__pyx_n_s_SyncServicerContext___reduce_cy;
+  PyObject *__pyx_n_s_SyncServicerContext___setstate;
+  PyObject *__pyx_n_s_SyncServicerContext_abort;
+  PyObject *__pyx_n_s_SyncServicerContext_add_callbac;
+  PyObject *__pyx_n_s_SyncServicerContext_auth_contex;
+  PyObject *__pyx_n_s_SyncServicerContext_disable_nex;
+  PyObject *__pyx_n_s_SyncServicerContext_invocation;
+  PyObject *__pyx_n_s_SyncServicerContext_peer;
+  PyObject *__pyx_n_s_SyncServicerContext_peer_identi;
+  PyObject *__pyx_n_s_SyncServicerContext_peer_identi_2;
+  PyObject *__pyx_n_s_SyncServicerContext_send_initia;
+  PyObject *__pyx_n_s_SyncServicerContext_set_code;
+  PyObject *__pyx_n_s_SyncServicerContext_set_compres;
+  PyObject *__pyx_n_s_SyncServicerContext_set_details;
+  PyObject *__pyx_n_s_SyncServicerContext_set_trailin;
+  PyObject *__pyx_n_s_SyncServicerContext_time_remain;
+  PyObject *__pyx_n_s_SystemExit;
+  PyObject *__pyx_n_s_TRUE;
+  PyObject *__pyx_n_s_TRUE_VALUES;
+  PyObject *__pyx_n_s_TYPE_METADATA_STRING;
+  PyObject *__pyx_n_s_Tag;
+  PyObject *__pyx_n_s_Tag___reduce_cython;
+  PyObject *__pyx_n_s_Tag___setstate_cython;
+  PyObject *__pyx_kp_s_The_base_class_for_exceptions_ge;
+  PyObject *__pyx_n_s_Thread;
+  PyObject *__pyx_kp_s_Timed_out;
+  PyObject *__pyx_n_s_TimeoutError;
+  PyObject *__pyx_n_s_True;
+  PyObject *__pyx_kp_s_Tuple_Tuple_str_Union_str_bytes;
+  PyObject *__pyx_n_s_TypeError;
+  PyObject *__pyx_n_s_UNKNOWN_CANCELLATION_DETAILS;
+  PyObject *__pyx_kp_s_Unexpected_s_raised_by_servicer;
+  PyObject *__pyx_kp_s_Unexpected_s_s;
+  PyObject *__pyx_n_s_UnicodeDecodeError;
+  PyObject *__pyx_n_s_Unknown;
+  PyObject *__pyx_kp_s_Unsupported_engine_type_s;
+  PyObject *__pyx_n_s_UsageError;
+  PyObject *__pyx_kp_s_Using_s_as_I_O_engine;
+  PyObject *__pyx_n_s_ValueError;
+  PyObject *__pyx_n_s_WatchConnectivityFailed;
+  PyObject *__pyx_n_s_WriteFlag;
+  PyObject *__pyx_n_s_XDSChannelCredentials;
+  PyObject *__pyx_n_s_XDSChannelCredentials___reduce_c;
+  PyObject *__pyx_n_s_XDSChannelCredentials___setstate;
+  PyObject *__pyx_n_s_YES;
+  PyObject *__pyx_n_s_Yes;
+  PyObject *__pyx_n_s__107;
+  PyObject *__pyx_n_s__38;
+  PyObject *__pyx_kp_u__49;
+  PyObject *__pyx_n_s__57;
+  PyObject *__pyx_kp_u__58;
+  PyObject *__pyx_kp_u__69;
+  PyObject *__pyx_kp_b__7;
+  PyObject *__pyx_kp_s__7;
+  PyObject *__pyx_kp_u__70;
+  PyObject *__pyx_kp_u__71;
+  PyObject *__pyx_n_s_abort;
+  PyObject *__pyx_n_s_abort_with_status;
+  PyObject *__pyx_n_s_aborted;
+  PyObject *__pyx_n_s_active_thread_count;
+  PyObject *__pyx_n_s_actual_code;
+  PyObject *__pyx_n_s_add;
+  PyObject *__pyx_n_s_add_callback;
+  PyObject *__pyx_n_s_add_callback_handler_locals_han;
+  PyObject *__pyx_n_s_add_done_callback;
+  PyObject *__pyx_n_s_add_generic_rpc_handlers;
+  PyObject *__pyx_n_s_add_http2_port;
+  PyObject *__pyx_n_s_add_insecure_port;
+  PyObject *__pyx_n_s_add_reader;
+  PyObject *__pyx_n_s_add_secure_port;
+  PyObject *__pyx_n_s_address;
+  PyObject *__pyx_n_s_address_c_string;
+  PyObject *__pyx_n_s_aenter;
+  PyObject *__pyx_n_s_aexit;
+  PyObject *__pyx_n_s_after_in_child;
+  PyObject *__pyx_n_s_after_in_parent;
+  PyObject *__pyx_n_s_agen;
+  PyObject *__pyx_n_s_aiter;
+  PyObject *__pyx_n_s_algorithm;
+  PyObject *__pyx_n_s_already_accepted;
+  PyObject *__pyx_n_s_already_exists;
+  PyObject *__pyx_n_s_already_finished;
+  PyObject *__pyx_n_s_already_invoked;
+  PyObject *__pyx_n_s_anext;
+  PyObject *__pyx_n_s_append;
+  PyObject *__pyx_n_s_apply;
+  PyObject *__pyx_n_s_args;
+  PyObject *__pyx_n_s_arguments;
+  PyObject *__pyx_n_s_ascii;
+  PyObject *__pyx_n_s_async_callback_func;
+  PyObject *__pyx_n_s_async_generator_to_generator;
+  PyObject *__pyx_n_s_async_message_receiver;
+  PyObject *__pyx_n_s_async_response_generator;
+  PyObject *__pyx_n_s_asyncio;
+  PyObject *__pyx_n_s_asyncio_coroutines;
+  PyObject *__pyx_n_s_asyncio_tasks;
+  PyObject *__pyx_n_s_atexit;
+  PyObject *__pyx_n_s_auth_context;
+  PyObject *__pyx_n_s_await;
+  PyObject *__pyx_n_s_await_zero_threads;
+  PyObject *__pyx_n_s_backup_queue;
+  PyObject *__pyx_n_s_batch_error;
+  PyObject *__pyx_n_s_batch_operation_tag;
+  PyObject *__pyx_n_s_batch_operations;
+  PyObject *__pyx_n_s_before;
+  PyObject *__pyx_kp_b_bin;
+  PyObject *__pyx_n_s_bind_loop;
+  PyObject *__pyx_n_s_block_if_fork_in_progress;
+  PyObject *__pyx_n_s_bool;
+  PyObject *__pyx_n_s_buffer_hint;
+  PyObject *__pyx_n_s_build_census_context;
+  PyObject *__pyx_n_s_bytes_ctx;
+  PyObject *__pyx_n_s_c_call_credentials;
+  PyObject *__pyx_n_s_c_cert_config;
+  PyObject *__pyx_n_s_c_deadline;
+  PyObject *__pyx_n_s_c_details;
+  PyObject *__pyx_n_s_c_error_details;
+  PyObject *__pyx_n_s_c_event;
+  PyObject *__pyx_n_s_c_key;
+  PyObject *__pyx_n_s_c_options;
+  PyObject *__pyx_n_s_c_peer;
+  PyObject *__pyx_n_s_c_pem_root_certs;
+  PyObject *__pyx_n_s_c_returned_str;
+  PyObject *__pyx_n_s_c_target;
+  PyObject *__pyx_n_s_call;
+  PyObject *__pyx_n_s_call_credentials;
+  PyObject *__pyx_n_s_call_credentialses;
+  PyObject *__pyx_n_s_call_creds;
+  PyObject *__pyx_n_s_call_details;
+  PyObject *__pyx_n_s_call_error;
+  PyObject *__pyx_n_s_call_handle;
+  PyObject *__pyx_n_s_call_queue;
+  PyObject *__pyx_n_s_call_soon_threadsafe;
+  PyObject *__pyx_n_s_call_state;
+  PyObject *__pyx_n_s_callback;
+  PyObject *__pyx_n_s_callback_func;
+  PyObject *__pyx_n_s_callback_wrapper;
+  PyObject *__pyx_n_s_cancel;
+  PyObject *__pyx_n_s_cancel_all_calls;
+  PyObject *__pyx_n_s_cancelled;
+  PyObject *__pyx_kp_s_cannot_register_completion_queue;
+  PyObject *__pyx_n_s_capacity;
+  PyObject *__pyx_n_s_capsule;
+  PyObject *__pyx_n_s_capsule_ptr;
+  PyObject *__pyx_n_s_catch_warnings;
+  PyObject *__pyx_n_s_cb;
+  PyObject *__pyx_n_s_cb_func;
+  PyObject *__pyx_n_s_census_ctx;
+  PyObject *__pyx_n_s_cert_config;
+  PyObject *__pyx_n_s_cert_config_fetcher;
+  PyObject *__pyx_kp_s_cert_config_fetcher_must_be_call;
+  PyObject *__pyx_n_s_certificate_chain;
+  PyObject *__pyx_n_s_certificate_configuration;
+  PyObject *__pyx_n_s_cfunc_to_py;
+  PyObject *__pyx_n_s_channel;
+  PyObject *__pyx_n_s_channel_credentials;
+  PyObject *__pyx_n_s_channel_credentials_alts;
+  PyObject *__pyx_n_s_channel_credentials_compute_engi;
+  PyObject *__pyx_n_s_channel_credentials_insecure;
+  PyObject *__pyx_n_s_channel_credentials_local;
+  PyObject *__pyx_n_s_channel_id;
+  PyObject *__pyx_n_s_channel_state;
+  PyObject *__pyx_n_s_channels;
+  PyObject *__pyx_n_s_channelz_get_channel;
+  PyObject *__pyx_n_s_channelz_get_server;
+  PyObject *__pyx_n_s_channelz_get_server_sockets;
+  PyObject *__pyx_n_s_channelz_get_servers;
+  PyObject *__pyx_n_s_channelz_get_socket;
+  PyObject *__pyx_n_s_channelz_get_subchannel;
+  PyObject *__pyx_n_s_channelz_get_top_channels;
+  PyObject *__pyx_n_s_check_before_request_call;
+  PyObject *__pyx_n_s_check_connectivity_state;
+  PyObject *__pyx_n_s_class;
+  PyObject *__pyx_n_s_class_getitem;
+  PyObject *__pyx_n_s_clear;
+  PyObject *__pyx_n_s_clear_server_call_tracer_factory;
+  PyObject *__pyx_n_s_client_config_in_slice;
+  PyObject *__pyx_n_s_cline_in_traceback;
+  PyObject *__pyx_n_s_close;
+  PyObject *__pyx_n_s_close_on_fork;
+  PyObject *__pyx_n_s_close_on_fork_2;
+  PyObject *__pyx_n_s_closed;
+  PyObject *__pyx_n_s_closing;
+  PyObject *__pyx_n_s_code;
+  PyObject *__pyx_n_s_codecs;
+  PyObject *__pyx_n_s_collections;
+  PyObject *__pyx_n_s_common;
+  PyObject *__pyx_n_s_completion_type;
+  PyObject *__pyx_n_s_compression;
+  PyObject *__pyx_n_s_compression_algorithm_name;
+  PyObject *__pyx_n_s_concurrency_exceeded;
+  PyObject *__pyx_n_s_condition;
+  PyObject *__pyx_n_s_connecting;
+  PyObject *__pyx_n_s_context;
+  PyObject *__pyx_n_s_context_loop;
+  PyObject *__pyx_n_s_contextvars;
+  PyObject *__pyx_n_s_contextvars_supported;
+  PyObject *__pyx_n_s_continuation;
+  PyObject *__pyx_n_s_copy;
+  PyObject *__pyx_n_s_copy_context;
+  PyObject *__pyx_n_s_core_function_name;
+  PyObject *__pyx_n_s_coro;
+  PyObject *__pyx_n_s_create_client_call_tracer;
+  PyObject *__pyx_n_s_create_future;
+  PyObject *__pyx_n_s_create_server_call_tracer_factor;
+  PyObject *__pyx_n_s_create_task;
+  PyObject *__pyx_n_s_credentials;
+  PyObject *__pyx_n_s_credentials_2;
+  PyObject *__pyx_kp_s_credentials_roots_pem;
+  PyObject *__pyx_n_s_creds;
+  PyObject *__pyx_n_s_ctx;
+  PyObject *__pyx_n_s_custom_io_manager;
+  PyObject *__pyx_n_s_custom_op_on_c_call;
+  PyObject *__pyx_kp_s_cygrpc;
+  PyObject *__pyx_n_s_cython_call_credentials;
+  PyObject *__pyx_n_s_cython_cygrpc;
+  PyObject *__pyx_n_s_daemon;
+  PyObject *__pyx_n_s_daemonic;
+  PyObject *__pyx_n_s_data;
+  PyObject *__pyx_n_s_data_loss;
+  PyObject *__pyx_n_s_deadline;
+  PyObject *__pyx_n_s_deadline_exceeded;
+  PyObject *__pyx_kp_s_dealloc___called_on_running_se;
+  PyObject *__pyx_n_s_debug;
+  PyObject *__pyx_n_s_debug_error_string;
+  PyObject *__pyx_n_s_decode;
+  PyObject *__pyx_n_s_decrease_active_rpcs_count;
+  PyObject *__pyx_n_s_decrease_once_finished;
+  PyObject *__pyx_n_s_decrement;
+  PyObject *__pyx_n_s_default_authority;
+  PyObject *__pyx_n_s_default_vtable;
+  PyObject *__pyx_n_s_deflate;
+  PyObject *__pyx_n_s_delete_call_tracer;
+  PyObject *__pyx_n_s_destroy;
+  PyObject *__pyx_n_s_details;
+  PyObject *__pyx_n_s_details_bytes;
+  PyObject *__pyx_n_s_dict;
+  PyObject *__pyx_n_s_dict_2;
+  PyObject *__pyx_kp_u_disable;
+  PyObject *__pyx_n_s_disable_algorithm;
+  PyObject *__pyx_n_s_disable_next_message_compression;
+  PyObject *__pyx_n_s_discard;
+  PyObject *__pyx_n_s_doc;
+  PyObject *__pyx_n_s_done;
+  PyObject *__pyx_n_s_dump_xds_configs;
+  PyObject *__pyx_n_s_e;
+  PyObject *__pyx_kp_u_enable;
+  PyObject *__pyx_n_s_enable_algorithm;
+  PyObject *__pyx_n_s_enable_census;
+  PyObject *__pyx_n_s_encode;
+  PyObject *__pyx_n_s_end_time;
+  PyObject *__pyx_n_s_endswith;
+  PyObject *__pyx_n_s_enter;
+  PyObject *__pyx_n_s_enter_user_request_generator;
+  PyObject *__pyx_n_s_enum;
+  PyObject *__pyx_n_s_enumerate;
+  PyObject *__pyx_n_s_environ;
+  PyObject *__pyx_n_s_errno;
+  PyObject *__pyx_n_s_error;
+  PyObject *__pyx_n_s_error_code;
+  PyObject *__pyx_n_s_error_details;
+  PyObject *__pyx_n_s_error_str;
+  PyObject *__pyx_n_s_error_string;
+  PyObject *__pyx_n_s_event;
+  PyObject *__pyx_n_s_exc_info;
+  PyObject *__pyx_n_s_exception;
+  PyObject *__pyx_n_s_exception_type;
+  PyObject *__pyx_n_s_execute_batch;
+  PyObject *__pyx_n_s_exit;
+  PyObject *__pyx_n_s_exit_2;
+  PyObject *__pyx_kp_s_expected_certificate_to_be_bytes;
+  PyObject *__pyx_kp_s_expected_pem_key_cert_pairs_to_b;
+  PyObject *__pyx_kp_s_expected_registered_completion_q;
+  PyObject *__pyx_n_s_failed_precondition;
+  PyObject *__pyx_n_s_failure_handler;
+  PyObject *__pyx_n_s_fallback_credentials;
+  PyObject *__pyx_n_s_fileno;
+  PyObject *__pyx_n_s_find_method_handler;
+  PyObject *__pyx_n_s_find_method_handler_locals_quer;
+  PyObject *__pyx_n_s_finish_handler_with_stream_resp;
+  PyObject *__pyx_n_s_finish_handler_with_unary_respo;
+  PyObject *__pyx_n_s_finish_ops;
+  PyObject *__pyx_n_s_flags;
+  PyObject *__pyx_n_s_fn;
+  PyObject *__pyx_n_s_force_client_auth;
+  PyObject *__pyx_n_s_fork_epoch;
+  PyObject *__pyx_n_s_fork_handler_failed;
+  PyObject *__pyx_n_s_fork_handler_registered;
+  PyObject *__pyx_n_s_fork_handler_registered_lock;
+  PyObject *__pyx_n_s_fork_handlers_and_grpc_init;
+  PyObject *__pyx_n_s_fork_in_progress;
+  PyObject *__pyx_n_s_fork_in_progress_condition;
+  PyObject *__pyx_n_s_fork_register_channel;
+  PyObject *__pyx_n_s_fork_state;
+  PyObject *__pyx_n_s_fork_unregister_channel;
+  PyObject *__pyx_n_s_format;
+  PyObject *__pyx_n_s_format_exception;
+  PyObject *__pyx_n_s_functools;
+  PyObject *__pyx_n_s_future;
+  PyObject *__pyx_n_s_g_gevent_activated;
+  PyObject *__pyx_n_s_g_gevent_pool;
+  PyObject *__pyx_n_s_g_gevent_threadpool;
+  PyObject *__pyx_n_s_g_interrupt_check_period_ms;
+  PyObject *__pyx_kp_u_gc;
+  PyObject *__pyx_n_s_gen;
+  PyObject *__pyx_n_s_generator_to_async_generator;
+  PyObject *__pyx_n_s_generator_to_async_generator_loc;
+  PyObject *__pyx_n_s_generic_handler;
+  PyObject *__pyx_n_s_generic_handlers;
+  PyObject *__pyx_n_s_generic_rpc_handlers;
+  PyObject *__pyx_n_s_genexpr;
+  PyObject *__pyx_n_s_get;
+  PyObject *__pyx_n_s_getLogger;
+  PyObject *__pyx_n_s_get_data;
+  PyObject *__pyx_n_s_get_deadline_from_context;
+  PyObject *__pyx_n_s_get_event_loop;
+  PyObject *__pyx_n_s_get_event_loop_policy;
+  PyObject *__pyx_n_s_get_fork_epoch;
+  PyObject *__pyx_n_s_get_hub;
+  PyObject *__pyx_n_s_get_metadata_locals_callback;
+  PyObject *__pyx_n_s_get_plugin;
+  PyObject *__pyx_n_s_get_registered_call_handle;
+  PyObject *__pyx_n_s_get_running_loop;
+  PyObject *__pyx_n_s_get_working_loop;
+  PyObject *__pyx_n_s_getstate;
+  PyObject *__pyx_n_s_gevent;
+  PyObject *__pyx_n_s_gevent_decrement_channel_count;
+  PyObject *__pyx_n_s_gevent_hub;
+  PyObject *__pyx_n_s_gevent_increment_channel_count;
+  PyObject *__pyx_n_s_gevent_pool;
+  PyObject *__pyx_n_s_grace;
+  PyObject *__pyx_n_s_grpc;
+  PyObject *__pyx_kp_s_grpc_aio_EOF;
+  PyObject *__pyx_n_s_grpc_call_error_string;
+  PyObject *__pyx_n_s_grpc_call_wrapper;
+  PyObject *__pyx_n_s_grpc_completion_queue_shutdown;
+  PyObject *__pyx_kp_s_grpc_python__cygrpc__GrpcArgWrap;
+  PyObject *__pyx_n_s_grpc_server_request_call;
+  PyObject *__pyx_n_s_grpc_server_shutdown_and_notify;
+  PyObject *__pyx_n_s_grpc_shutdown_wrapper;
+  PyObject *__pyx_n_s_gzip;
+  PyObject *__pyx_n_s_handle_callback_wrapper;
+  PyObject *__pyx_n_s_handle_callbacks;
+  PyObject *__pyx_n_s_handle_cancellation_from_core;
+  PyObject *__pyx_n_s_handle_events;
+  PyObject *__pyx_n_s_handle_exceptions;
+  PyObject *__pyx_n_s_handle_rpc;
+  PyObject *__pyx_n_s_handle_status_once_received;
+  PyObject *__pyx_n_s_handle_stream_stream_rpc;
+  PyObject *__pyx_n_s_handle_stream_unary_rpc;
+  PyObject *__pyx_n_s_handle_unary_stream_rpc;
+  PyObject *__pyx_n_s_handle_unary_unary_rpc;
+  PyObject *__pyx_n_s_handler;
+  PyObject *__pyx_n_s_handler_call_details;
+  PyObject *__pyx_n_s_hex_codec;
+  PyObject *__pyx_n_s_high;
+  PyObject *__pyx_n_s_host;
+  PyObject *__pyx_n_s_http2_initial_sequence_number;
+  PyObject *__pyx_n_s_hub;
+  PyObject *__pyx_n_s_id;
+  PyObject *__pyx_n_s_identities;
+  PyObject *__pyx_n_s_identity;
+  PyObject *__pyx_n_s_identity_key;
+  PyObject *__pyx_n_s_idle;
+  PyObject *__pyx_kp_s_if_error_code_is_specified_so_mu;
+  PyObject *__pyx_n_s_import;
+  PyObject *__pyx_n_s_inbound_ops;
+  PyObject *__pyx_n_s_increment;
+  PyObject *__pyx_n_s_init;
+  PyObject *__pyx_n_s_init_grpc_aio;
+  PyObject *__pyx_n_s_init_grpc_gevent;
+  PyObject *__pyx_n_s_init_subclass;
+  PyObject *__pyx_n_s_initial_cert_config;
+  PyObject *__pyx_kp_s_initial_cert_config_must_be_a_gr;
+  PyObject *__pyx_n_s_initial_metadata;
+  PyObject *__pyx_n_s_initial_metadata_op;
+  PyObject *__pyx_n_s_initializing;
+  PyObject *__pyx_n_s_initiate_stream_stream;
+  PyObject *__pyx_n_s_initiate_unary_stream;
+  PyObject *__pyx_n_s_insecure_server_credentials;
+  PyObject *__pyx_n_s_inspect;
+  PyObject *__pyx_n_s_install_context_from_request_cal;
+  PyObject *__pyx_n_s_install_context_from_request_cal_2;
+  PyObject *__pyx_n_s_int;
+  PyObject *__pyx_n_s_integrated_call;
+  PyObject *__pyx_n_s_integrated_call_locals_on_succe;
+  PyObject *__pyx_n_s_intercept_service;
+  PyObject *__pyx_n_s_interceptor;
+  PyObject *__pyx_n_s_interceptors;
+  PyObject *__pyx_n_s_internal;
+  PyObject *__pyx_kp_s_internal_error_user_data_must_be;
+  PyObject *__pyx_n_s_internal_poll;
+  PyObject *__pyx_n_s_invalid_argument;
+  PyObject *__pyx_kp_s_invalid_call_object_cannot_be_us;
+  PyObject *__pyx_n_s_invalid_flags;
+  PyObject *__pyx_n_s_invalid_metadata;
+  PyObject *__pyx_n_s_invocation_metadata;
+  PyObject *__pyx_n_s_is_algorithm_enabled;
+  PyObject *__pyx_n_s_is_async_handler;
+  PyObject *__pyx_n_s_is_coroutine;
+  PyObject *__pyx_n_s_is_fork_support_enabled;
+  PyObject *__pyx_n_s_is_locally_cancelled;
+  PyObject *__pyx_n_s_is_ok;
+  PyObject *__pyx_n_s_is_running;
+  PyObject *__pyx_n_s_is_sampled;
+  PyObject *__pyx_n_s_is_valid;
+  PyObject *__pyx_n_s_isasyncgenfunction;
+  PyObject *__pyx_n_s_isawaitable;
+  PyObject *__pyx_n_s_iscoroutinefunction;
+  PyObject *__pyx_kp_u_isenabled;
+  PyObject *__pyx_n_s_item;
+  PyObject *__pyx_n_s_iter;
+  PyObject *__pyx_n_s_join;
+  PyObject *__pyx_n_s_key;
+  PyObject *__pyx_n_s_keys;
+  PyObject *__pyx_n_s_last_observed_state;
+  PyObject *__pyx_n_s_latent_event_arg;
+  PyObject *__pyx_n_s_len;
+  PyObject *__pyx_n_s_lk;
+  PyObject *__pyx_n_s_local_connect_type;
+  PyObject *__pyx_n_s_local_tcp;
+  PyObject *__pyx_n_s_logging;
+  PyObject *__pyx_n_s_loop;
+  PyObject *__pyx_n_s_low;
+  PyObject *__pyx_n_s_lower;
+  PyObject *__pyx_n_s_main;
+  PyObject *__pyx_n_s_managed_target;
+  PyObject *__pyx_n_s_max_concurrent_streams;
+  PyObject *__pyx_n_s_max_receive_message_length;
+  PyObject *__pyx_n_s_max_results;
+  PyObject *__pyx_n_s_max_send_message_length;
+  PyObject *__pyx_n_s_maximum_concurrent_rpcs;
+  PyObject *__pyx_kp_s_maximum_concurrent_rpcs_should_b;
+  PyObject *__pyx_n_s_maxsize;
+  PyObject *__pyx_n_s_maybe_save_server_trace_context;
+  PyObject *__pyx_n_s_medium;
+  PyObject *__pyx_n_s_members;
+  PyObject *__pyx_n_s_message;
+  PyObject *__pyx_n_s_metaclass;
+  PyObject *__pyx_n_s_metadata;
+  PyObject *__pyx_n_s_metadata_locals_genexpr;
+  PyObject *__pyx_n_s_metadata_plugin;
+  PyObject *__pyx_n_s_metadata_sent_observer;
+  PyObject *__pyx_kp_s_metadata_was_invalid_s;
+  PyObject *__pyx_n_s_method;
+  PyObject *__pyx_n_s_method_handler;
+  PyObject *__pyx_n_s_module;
+  PyObject *__pyx_n_s_mro_entries;
+  PyObject *__pyx_n_s_name;
+  PyObject *__pyx_n_s_name_2;
+  PyObject *__pyx_n_s_namedtuple;
+  PyObject *__pyx_n_s_new;
+  PyObject *__pyx_n_s_new_event_loop;
+  PyObject *__pyx_n_s_next_call_event;
+  PyObject *__pyx_n_s_next_call_event_locals_on_succes;
+  PyObject *__pyx_n_s_next_event;
+  PyObject *__pyx_n_s_next_event_locals_on_failure;
+  PyObject *__pyx_n_s_next_event_locals_on_success;
+  PyObject *__pyx_n_s_no_compress;
+  PyObject *__pyx_kp_s_no_default___reduce___due_to_non;
+  PyObject *__pyx_n_s_none;
+  PyObject *__pyx_n_s_not_found;
+  PyObject *__pyx_n_s_not_invoked;
+  PyObject *__pyx_n_s_not_on_client;
+  PyObject *__pyx_n_s_not_on_server;
+  PyObject *__pyx_n_s_notify_all;
+  PyObject *__pyx_n_s_num_active_threads;
+  PyObject *__pyx_n_s_object;
+  PyObject *__pyx_kp_s_object_2;
+  PyObject *__pyx_n_s_observability;
+  PyObject *__pyx_n_s_observability_enabled;
+  PyObject *__pyx_n_s_observability_plugin;
+  PyObject *__pyx_kp_s_of_RPC_that_terminated_with_sta;
+  PyObject *__pyx_kp_s_of_RPC_that_terminated_with_sta_2;
+  PyObject *__pyx_n_s_ok;
+  PyObject *__pyx_n_s_on_failure;
+  PyObject *__pyx_n_s_on_success;
+  PyObject *__pyx_n_s_op;
+  PyObject *__pyx_n_s_operate;
+  PyObject *__pyx_n_s_operation_complete;
+  PyObject *__pyx_n_s_operations;
+  PyObject *__pyx_n_s_operationses_and_tags;
+  PyObject *__pyx_n_s_ops;
+  PyObject *__pyx_n_s_options;
+  PyObject *__pyx_n_s_os;
+  PyObject *__pyx_n_s_out_of_range;
+  PyObject *__pyx_n_s_outbound_initial_metadata;
+  PyObject *__pyx_n_s_outbound_ops;
+  PyObject *__pyx_n_s_partial;
+  PyObject *__pyx_n_s_peer;
+  PyObject *__pyx_n_s_peer_identities;
+  PyObject *__pyx_n_s_peer_identity_key;
+  PyObject *__pyx_n_s_pem_key_cert_pairs;
+  PyObject *__pyx_n_s_pem_root_certificates;
+  PyObject *__pyx_n_s_pem_root_certs;
+  PyObject *__pyx_n_s_permission_denied;
+  PyObject *__pyx_n_s_pickle;
+  PyObject *__pyx_n_s_pkgutil;
+  PyObject *__pyx_n_s_plugin;
+  PyObject *__pyx_n_s_poll;
+  PyObject *__pyx_n_s_poll_wrapper;
+  PyObject *__pyx_n_s_poller;
+  PyObject *__pyx_n_s_pool;
+  PyObject *__pyx_n_s_pop;
+  PyObject *__pyx_n_s_postfork_state_to_reset;
+  PyObject *__pyx_n_s_postfork_states_to_reset;
+  PyObject *__pyx_n_s_prepare;
+  PyObject *__pyx_n_s_primary_user_agent_string;
+  PyObject *__pyx_n_s_print_exc;
+  PyObject *__pyx_n_s_private_key;
+  PyObject *__pyx_n_s_properties;
+  PyObject *__pyx_n_s_property;
+  PyObject *__pyx_n_s_put;
+  PyObject *__pyx_n_s_py_auth_context;
+  PyObject *__pyx_n_s_python_call_credentials;
+  PyObject *__pyx_n_s_pyx_PickleError;
+  PyObject *__pyx_n_s_pyx_capi;
+  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_AioServer;
+  PyObject *__pyx_n_s_pyx_unpickle_CensusContext;
+  PyObject *__pyx_n_s_pyx_unpickle_ChannelCredential;
+  PyObject *__pyx_n_s_pyx_unpickle_InsecureChannelCr;
+  PyObject *__pyx_n_s_pyx_unpickle__Tag;
+  PyObject *__pyx_n_s_pyx_vtable;
+  PyObject *__pyx_n_s_qualname;
+  PyObject *__pyx_n_s_query_call;
+  PyObject *__pyx_n_s_query_handler;
+  PyObject *__pyx_n_s_query_handlers;
+  PyObject *__pyx_n_s_queue;
+  PyObject *__pyx_n_s_queue_deadline;
+  PyObject *__pyx_kp_s_queue_must_be_live;
+  PyObject *__pyx_kp_s_queue_must_be_shutting_down_to_b;
+  PyObject *__pyx_n_s_queue_shutdown;
+  PyObject *__pyx_n_s_queue_timeout;
+  PyObject *__pyx_n_s_raise_if_not_valid_trailing_meta;
+  PyObject *__pyx_n_s_range;
+  PyObject *__pyx_n_s_raw_message;
+  PyObject *__pyx_n_s_read;
+  PyObject *__pyx_n_s_read_socket;
+  PyObject *__pyx_n_s_ready;
+  PyObject *__pyx_n_s_receive_close_on_server;
+  PyObject *__pyx_n_s_receive_initial_metadata;
+  PyObject *__pyx_n_s_receive_initial_metadata_2;
+  PyObject *__pyx_n_s_receive_initial_metadata_op;
+  PyObject *__pyx_n_s_receive_message;
+  PyObject *__pyx_n_s_receive_message_2;
+  PyObject *__pyx_n_s_receive_message_op;
+  PyObject *__pyx_n_s_receive_op;
+  PyObject *__pyx_n_s_receive_serialized_message;
+  PyObject *__pyx_n_s_receive_status_on_client;
+  PyObject *__pyx_n_s_receive_status_on_client_op;
+  PyObject *__pyx_n_s_received_message;
+  PyObject *__pyx_n_s_recv;
+  PyObject *__pyx_n_s_reduce;
+  PyObject *__pyx_n_s_reduce_cython;
+  PyObject *__pyx_n_s_reduce_ex;
+  PyObject *__pyx_n_s_register;
+  PyObject *__pyx_n_s_register_at_fork;
+  PyObject *__pyx_n_s_register_completion_queue;
+  PyObject *__pyx_n_s_registered_call_handle;
+  PyObject *__pyx_n_s_remove_reader;
+  PyObject *__pyx_n_s_repr;
+  PyObject *__pyx_n_s_repr_2;
+  PyObject *__pyx_n_s_request;
+  PyObject *__pyx_n_s_request_call;
+  PyObject *__pyx_n_s_request_call_2;
+  PyObject *__pyx_n_s_request_call_tag;
+  PyObject *__pyx_n_s_request_deserializer;
+  PyObject *__pyx_n_s_request_iterator;
+  PyObject *__pyx_n_s_request_message;
+  PyObject *__pyx_n_s_request_raw;
+  PyObject *__pyx_n_s_request_streaming;
+  PyObject *__pyx_n_s_reset_grpc_config_vars;
+  PyObject *__pyx_n_s_reset_postfork_child;
+  PyObject *__pyx_n_s_resource_exhausted;
+  PyObject *__pyx_n_s_response;
+  PyObject *__pyx_n_s_response_message;
+  PyObject *__pyx_n_s_response_raw;
+  PyObject *__pyx_n_s_response_serializer;
+  PyObject *__pyx_n_s_response_streaming;
+  PyObject *__pyx_n_s_result;
+  PyObject *__pyx_n_s_retain_self;
+  PyObject *__pyx_n_s_return;
+  PyObject *__pyx_n_s_return_from_user_request_generat;
+  PyObject *__pyx_n_s_rpc_coro;
+  PyObject *__pyx_n_s_rpc_state;
+  PyObject *__pyx_n_s_rpc_task;
+  PyObject *__pyx_n_s_run;
+  PyObject *__pyx_n_s_run_2;
+  PyObject *__pyx_n_s_run_coroutine_threadsafe;
+  PyObject *__pyx_n_s_run_in_executor;
+  PyObject *__pyx_n_s_run_interceptor;
+  PyObject *__pyx_n_s_run_spawn_greenlets;
+  PyObject *__pyx_n_s_run_with_context;
+  PyObject *__pyx_n_s_run_with_context_locals__run;
+  PyObject *__pyx_n_s_runtime_error;
+  PyObject *__pyx_n_s_save_trace_context;
+  PyObject *__pyx_n_s_schedule_coro_threadsafe;
+  PyObject *__pyx_n_s_schedule_rpc_coro;
+  PyObject *__pyx_n_s_secondary_user_agent_string;
+  PyObject *__pyx_n_s_segregated_call;
+  PyObject *__pyx_n_s_segregated_call_locals_on_succe;
+  PyObject *__pyx_n_s_self;
+  PyObject *__pyx_kp_s_self__cq_cannot_be_converted_to;
+  PyObject *__pyx_kp_s_self_arg_cannot_be_converted_to;
+  PyObject *__pyx_kp_s_self_c_argument_cannot_be_conver;
+  PyObject *__pyx_kp_s_self_c_credentials_cannot_be_con;
+  PyObject *__pyx_kp_s_self_c_op_cannot_be_converted_to;
+  PyObject *__pyx_n_s_send;
+  PyObject *__pyx_n_s_send_close_from_client;
+  PyObject *__pyx_n_s_send_close_op;
+  PyObject *__pyx_n_s_send_error_status_from_server;
+  PyObject *__pyx_n_s_send_initial_metadata;
+  PyObject *__pyx_n_s_send_initial_metadata_2;
+  PyObject *__pyx_n_s_send_initial_metadata_op;
+  PyObject *__pyx_n_s_send_message;
+  PyObject *__pyx_n_s_send_message_2;
+  PyObject *__pyx_n_s_send_message_op;
+  PyObject *__pyx_n_s_send_receive_close;
+  PyObject *__pyx_n_s_send_serialized_message;
+  PyObject *__pyx_n_s_send_status_from_server;
+  PyObject *__pyx_n_s_server;
+  PyObject *__pyx_n_s_server_call_tracer;
+  PyObject *__pyx_n_s_server_certificate_config_ssl;
+  PyObject *__pyx_n_s_server_credentials;
+  PyObject *__pyx_n_s_server_credentials_alts;
+  PyObject *__pyx_n_s_server_credentials_local;
+  PyObject *__pyx_n_s_server_credentials_ssl;
+  PyObject *__pyx_n_s_server_credentials_ssl_dynamic_c;
+  PyObject *__pyx_n_s_server_id;
+  PyObject *__pyx_n_s_server_main_loop;
+  PyObject *__pyx_kp_s_server_must_be_started_and_not_s;
+  PyObject *__pyx_n_s_server_queue;
+  PyObject *__pyx_kp_s_server_queue_must_be_a_registere;
+  PyObject *__pyx_n_s_server_started;
+  PyObject *__pyx_n_s_service;
+  PyObject *__pyx_n_s_service_accounts;
+  PyObject *__pyx_n_s_servicer_context;
+  PyObject *__pyx_n_s_serving_task_crash_handler;
+  PyObject *__pyx_n_s_setDaemon;
+  PyObject *__pyx_n_s_set_async_callback_func;
+  PyObject *__pyx_n_s_set_census_context_on_call;
+  PyObject *__pyx_n_s_set_code;
+  PyObject *__pyx_n_s_set_compression;
+  PyObject *__pyx_n_s_set_credentials;
+  PyObject *__pyx_n_s_set_details;
+  PyObject *__pyx_n_s_set_exception;
+  PyObject *__pyx_n_s_set_instrumentation_context_on_c;
+  PyObject *__pyx_n_s_set_internal_error;
+  PyObject *__pyx_n_s_set_name;
+  PyObject *__pyx_n_s_set_result;
+  PyObject *__pyx_n_s_set_server_call_tracer_factory;
+  PyObject *__pyx_n_s_set_trailing_metadata;
+  PyObject *__pyx_n_s_setblocking;
+  PyObject *__pyx_n_s_setstate;
+  PyObject *__pyx_n_s_setstate_cython;
+  PyObject *__pyx_n_s_shield;
+  PyObject *__pyx_n_s_shutdown;
+  PyObject *__pyx_n_s_shutdown_await_next_greenlet;
+  PyObject *__pyx_n_s_shutdown_cq;
+  PyObject *__pyx_n_s_shutdown_grpc_aio;
+  PyObject *__pyx_n_s_shutting_down_server;
+  PyObject *__pyx_n_s_simplefilter;
+  PyObject *__pyx_n_s_sleep;
+  PyObject *__pyx_n_s_socket;
+  PyObject *__pyx_n_s_socket_id;
+  PyObject *__pyx_n_s_socketpair;
+  PyObject *__pyx_n_s_span_id;
+  PyObject *__pyx_n_s_spawn;
+  PyObject *__pyx_n_s_spawn_callback_async;
+  PyObject *__pyx_n_s_spawn_callback_in_thread;
+  PyObject *__pyx_n_s_spawn_greenlets;
+  PyObject *__pyx_n_s_spec;
+  PyObject *__pyx_kp_s_src_python_grpcio_grpc__cython;
+  PyObject *__pyx_kp_s_src_python_grpcio_grpc__cython_10;
+  PyObject *__pyx_kp_s_src_python_grpcio_grpc__cython_11;
+  PyObject *__pyx_kp_s_src_python_grpcio_grpc__cython_12;
+  PyObject *__pyx_kp_s_src_python_grpcio_grpc__cython_13;
+  PyObject *__pyx_kp_s_src_python_grpcio_grpc__cython_14;
+  PyObject *__pyx_kp_s_src_python_grpcio_grpc__cython_15;
+  PyObject *__pyx_kp_s_src_python_grpcio_grpc__cython_16;
+  PyObject *__pyx_kp_s_src_python_grpcio_grpc__cython_17;
+  PyObject *__pyx_kp_s_src_python_grpcio_grpc__cython_18;
+  PyObject *__pyx_kp_s_src_python_grpcio_grpc__cython_19;
+  PyObject *__pyx_kp_s_src_python_grpcio_grpc__cython_2;
+  PyObject *__pyx_kp_s_src_python_grpcio_grpc__cython_20;
+  PyObject *__pyx_kp_s_src_python_grpcio_grpc__cython_21;
+  PyObject *__pyx_kp_s_src_python_grpcio_grpc__cython_22;
+  PyObject *__pyx_kp_s_src_python_grpcio_grpc__cython_23;
+  PyObject *__pyx_kp_s_src_python_grpcio_grpc__cython_3;
+  PyObject *__pyx_kp_s_src_python_grpcio_grpc__cython_4;
+  PyObject *__pyx_kp_s_src_python_grpcio_grpc__cython_5;
+  PyObject *__pyx_kp_s_src_python_grpcio_grpc__cython_6;
+  PyObject *__pyx_kp_s_src_python_grpcio_grpc__cython_7;
+  PyObject *__pyx_kp_s_src_python_grpcio_grpc__cython_8;
+  PyObject *__pyx_kp_s_src_python_grpcio_grpc__cython_9;
+  PyObject *__pyx_n_s_ssl_session_cache;
+  PyObject *__pyx_n_s_ssl_target_name_override;
+  PyObject *__pyx_n_s_start;
+  PyObject *__pyx_n_s_start_batch;
+  PyObject *__pyx_n_s_start_channel_id;
+  PyObject *__pyx_n_s_start_client_batch;
+  PyObject *__pyx_n_s_start_server_batch;
+  PyObject *__pyx_n_s_start_server_id;
+  PyObject *__pyx_n_s_start_shutting_down;
+  PyObject *__pyx_n_s_start_socket_id;
+  PyObject *__pyx_n_s_started_tag;
+  PyObject *__pyx_n_s_started_tags;
+  PyObject *__pyx_n_s_state;
+  PyObject *__pyx_n_s_status;
+  PyObject *__pyx_n_s_status_code;
+  PyObject *__pyx_n_s_status_task;
+  PyObject *__pyx_n_s_stored_ctx;
+  PyObject *__pyx_n_s_str;
+  PyObject *__pyx_n_s_str_2;
+  PyObject *__pyx_n_s_stream_handler;
+  PyObject *__pyx_n_s_stream_stream;
+  PyObject *__pyx_n_s_stream_unary;
+  PyObject *__pyx_kp_s_stringsource;
+  PyObject *__pyx_n_s_subchannel_id;
+  PyObject *__pyx_n_s_success;
+  PyObject *__pyx_n_s_super;
+  PyObject *__pyx_n_s_sync_servicer_context;
+  PyObject *__pyx_n_s_sys;
+  PyObject *__pyx_n_s_t;
+  PyObject *__pyx_n_s_tag;
+  PyObject *__pyx_n_s_target;
+  PyObject *__pyx_n_s_task;
+  PyObject *__pyx_n_s_test;
+  PyObject *__pyx_kp_s_the_server_has_already_started;
+  PyObject *__pyx_kp_s_the_server_hasn_t_started_yet;
+  PyObject *__pyx_kp_s_the_server_must_be_shutting_down;
+  PyObject *__pyx_n_s_thread;
+  PyObject *__pyx_n_s_thread_pool;
+  PyObject *__pyx_n_s_threading;
+  PyObject *__pyx_n_s_threadpool;
+  PyObject *__pyx_n_s_throw;
+  PyObject *__pyx_n_s_time;
+  PyObject *__pyx_n_s_time_remaining;
+  PyObject *__pyx_n_s_timeout;
+  PyObject *__pyx_n_s_timeout_secs;
+  PyObject *__pyx_n_s_to_call;
+  PyObject *__pyx_n_s_to_channel_arg;
+  PyObject *__pyx_n_s_too_many_operations;
+  PyObject *__pyx_n_s_trace_id;
+  PyObject *__pyx_n_s_traceback;
+  PyObject *__pyx_n_s_tracing_enabled;
+  PyObject *__pyx_n_s_trailing_metadata;
+  PyObject *__pyx_n_s_transient_failure;
+  PyObject *__pyx_n_s_true;
+  PyObject *__pyx_n_s_try_to_connect;
+  PyObject *__pyx_n_s_type;
+  PyObject *__pyx_n_s_typing;
+  PyObject *__pyx_n_s_uds;
+  PyObject *__pyx_n_s_unary_handler;
+  PyObject *__pyx_n_s_unary_stream;
+  PyObject *__pyx_n_s_unary_unary;
+  PyObject *__pyx_n_s_unauthenticated;
+  PyObject *__pyx_n_s_unavailable;
+  PyObject *__pyx_n_s_unimplemented;
+  PyObject *__pyx_n_s_uninstall_context;
+  PyObject *__pyx_n_s_unknown;
+  PyObject *__pyx_n_s_unused_future;
+  PyObject *__pyx_n_s_unused_task;
+  PyObject *__pyx_n_s_update;
+  PyObject *__pyx_n_s_upper;
+  PyObject *__pyx_n_s_use_setstate;
+  PyObject *__pyx_n_s_used_mask;
+  PyObject *__pyx_n_s_user_tag;
+  PyObject *__pyx_n_s_utf8;
+  PyObject *__pyx_kp_s_utf_8;
+  PyObject *__pyx_n_s_value;
+  PyObject *__pyx_n_s_values;
+  PyObject *__pyx_n_s_wait;
+  PyObject *__pyx_n_s_wait_for;
+  PyObject *__pyx_n_s_wait_for_ready;
+  PyObject *__pyx_n_s_wait_for_ready_explicitly_set;
+  PyObject *__pyx_n_s_wait_for_termination;
+  PyObject *__pyx_n_s_wait_time;
+  PyObject *__pyx_n_s_warning;
+  PyObject *__pyx_n_s_warnings;
+  PyObject *__pyx_n_s_watch_connectivity_state;
+  PyObject *__pyx_n_s_wrap;
+  PyObject *__pyx_n_s_wrapper;
+  PyObject *__pyx_n_s_write;
+  PyObject *__pyx_n_s_write_flag;
+  PyObject *__pyx_n_s_xds;
+  PyObject *__pyx_n_s_xds_server_credentials;
+  PyObject *__pyx_n_s_yes;
+  PyObject *__pyx_n_s_yield_to_queue;
+  PyObject *__pyx_float_1_0;
+  PyObject *__pyx_int_0;
+  PyObject *__pyx_int_1;
+  PyObject *__pyx_int_5;
+  PyObject *__pyx_int_118587260;
+  PyObject *__pyx_int_171381981;
+  PyObject *__pyx_int_171651213;
+  PyObject *__pyx_int_222419149;
+  PyObject *__pyx_int_228825662;
+  PyObject *__pyx_int_238750788;
+  grpc_status_code __pyx_k__9;
+  PyObject *__pyx_k__76;
+  PyObject *__pyx_k__80;
+  PyObject *__pyx_tuple_;
+  PyObject *__pyx_tuple__4;
+  PyObject *__pyx_tuple__8;
+  PyObject *__pyx_slice__37;
+  PyObject *__pyx_tuple__10;
+  PyObject *__pyx_tuple__11;
+  PyObject *__pyx_tuple__12;
+  PyObject *__pyx_tuple__14;
+  PyObject *__pyx_tuple__17;
+  PyObject *__pyx_tuple__19;
+  PyObject *__pyx_tuple__21;
+  PyObject *__pyx_tuple__23;
+  PyObject *__pyx_tuple__24;
+  PyObject *__pyx_tuple__25;
+  PyObject *__pyx_tuple__26;
+  PyObject *__pyx_tuple__27;
+  PyObject *__pyx_tuple__28;
+  PyObject *__pyx_tuple__29;
+  PyObject *__pyx_tuple__30;
+  PyObject *__pyx_tuple__31;
+  PyObject *__pyx_tuple__32;
+  PyObject *__pyx_tuple__33;
+  PyObject *__pyx_tuple__34;
+  PyObject *__pyx_tuple__35;
+  PyObject *__pyx_tuple__36;
+  PyObject *__pyx_tuple__39;
+  PyObject *__pyx_tuple__40;
+  PyObject *__pyx_tuple__46;
+  PyObject *__pyx_tuple__48;
+  PyObject *__pyx_tuple__50;
+  PyObject *__pyx_tuple__79;
+  PyObject *__pyx_tuple__83;
+  PyObject *__pyx_tuple__93;
+  PyObject *__pyx_tuple__98;
+  PyObject *__pyx_codeobj__2;
+  PyObject *__pyx_codeobj__3;
+  PyObject *__pyx_codeobj__5;
+  PyObject *__pyx_codeobj__6;
+  PyObject *__pyx_tuple__105;
+  PyObject *__pyx_tuple__106;
+  PyObject *__pyx_tuple__108;
+  PyObject *__pyx_tuple__110;
+  PyObject *__pyx_tuple__116;
+  PyObject *__pyx_tuple__118;
+  PyObject *__pyx_tuple__121;
+  PyObject *__pyx_tuple__123;
+  PyObject *__pyx_tuple__125;
+  PyObject *__pyx_tuple__127;
+  PyObject *__pyx_tuple__138;
+  PyObject *__pyx_tuple__144;
+  PyObject *__pyx_tuple__148;
+  PyObject *__pyx_tuple__150;
+  PyObject *__pyx_tuple__152;
+  PyObject *__pyx_tuple__153;
+  PyObject *__pyx_tuple__156;
+  PyObject *__pyx_tuple__158;
+  PyObject *__pyx_tuple__162;
+  PyObject *__pyx_tuple__166;
+  PyObject *__pyx_tuple__168;
+  PyObject *__pyx_tuple__170;
+  PyObject *__pyx_tuple__172;
+  PyObject *__pyx_tuple__174;
+  PyObject *__pyx_tuple__176;
+  PyObject *__pyx_tuple__178;
+  PyObject *__pyx_tuple__180;
+  PyObject *__pyx_tuple__182;
+  PyObject *__pyx_tuple__184;
+  PyObject *__pyx_tuple__186;
+  PyObject *__pyx_tuple__194;
+  PyObject *__pyx_tuple__209;
+  PyObject *__pyx_tuple__211;
+  PyObject *__pyx_tuple__213;
+  PyObject *__pyx_tuple__217;
+  PyObject *__pyx_tuple__222;
+  PyObject *__pyx_tuple__224;
+  PyObject *__pyx_tuple__226;
+  PyObject *__pyx_tuple__230;
+  PyObject *__pyx_tuple__232;
+  PyObject *__pyx_tuple__236;
+  PyObject *__pyx_tuple__238;
+  PyObject *__pyx_tuple__241;
+  PyObject *__pyx_tuple__254;
+  PyObject *__pyx_tuple__255;
+  PyObject *__pyx_tuple__293;
+  PyObject *__pyx_tuple__296;
+  PyObject *__pyx_tuple__301;
+  PyObject *__pyx_tuple__304;
+  PyObject *__pyx_tuple__306;
+  PyObject *__pyx_tuple__308;
+  PyObject *__pyx_tuple__310;
+  PyObject *__pyx_tuple__312;
+  PyObject *__pyx_tuple__314;
+  PyObject *__pyx_tuple__316;
+  PyObject *__pyx_tuple__317;
+  PyObject *__pyx_tuple__319;
+  PyObject *__pyx_tuple__335;
+  PyObject *__pyx_tuple__342;
+  PyObject *__pyx_tuple__346;
+  PyObject *__pyx_tuple__349;
+  PyObject *__pyx_tuple__353;
+  PyObject *__pyx_tuple__356;
+  PyObject *__pyx_tuple__358;
+  PyObject *__pyx_tuple__360;
+  PyObject *__pyx_tuple__362;
+  PyObject *__pyx_tuple__364;
+  PyObject *__pyx_tuple__366;
+  PyObject *__pyx_tuple__368;
+  PyObject *__pyx_tuple__370;
+  PyObject *__pyx_tuple__371;
+  PyObject *__pyx_tuple__372;
+  PyObject *__pyx_tuple__374;
+  PyObject *__pyx_tuple__375;
+  PyObject *__pyx_tuple__379;
+  PyObject *__pyx_tuple__385;
+  PyObject *__pyx_tuple__388;
+  PyObject *__pyx_tuple__389;
+  PyObject *__pyx_tuple__393;
+  PyObject *__pyx_tuple__395;
+  PyObject *__pyx_tuple__396;
+  PyObject *__pyx_tuple__403;
+  PyObject *__pyx_tuple__405;
+  PyObject *__pyx_tuple__406;
+  PyObject *__pyx_tuple__409;
+  PyObject *__pyx_tuple__417;
+  PyObject *__pyx_tuple__424;
+  PyObject *__pyx_tuple__427;
+  PyObject *__pyx_tuple__435;
+  PyObject *__pyx_tuple__436;
+  PyObject *__pyx_tuple__437;
+  PyObject *__pyx_tuple__438;
+  PyObject *__pyx_tuple__439;
+  PyObject *__pyx_tuple__440;
+  PyObject *__pyx_tuple__441;
+  PyObject *__pyx_tuple__444;
+  PyObject *__pyx_tuple__448;
+  PyObject *__pyx_tuple__450;
+  PyObject *__pyx_tuple__453;
+  PyObject *__pyx_tuple__457;
+  PyObject *__pyx_tuple__460;
+  PyObject *__pyx_tuple__462;
+  PyObject *__pyx_tuple__463;
+  PyObject *__pyx_tuple__464;
+  PyObject *__pyx_tuple__465;
+  PyObject *__pyx_tuple__466;
+  PyObject *__pyx_tuple__467;
+  PyObject *__pyx_tuple__468;
+  PyObject *__pyx_tuple__472;
+  PyObject *__pyx_tuple__476;
+  PyObject *__pyx_tuple__484;
+  PyObject *__pyx_tuple__485;
+  PyObject *__pyx_tuple__486;
+  PyObject *__pyx_tuple__487;
+  PyObject *__pyx_tuple__491;
+  PyObject *__pyx_tuple__494;
+  PyObject *__pyx_tuple__497;
+  PyObject *__pyx_tuple__500;
+  PyObject *__pyx_tuple__502;
+  PyObject *__pyx_tuple__504;
+  PyObject *__pyx_tuple__506;
+  PyObject *__pyx_tuple__509;
+  PyObject *__pyx_tuple__515;
+  PyObject *__pyx_tuple__517;
+  PyObject *__pyx_tuple__533;
+  PyObject *__pyx_tuple__534;
+  PyObject *__pyx_tuple__536;
+  PyObject *__pyx_tuple__537;
+  PyObject *__pyx_tuple__538;
+  PyObject *__pyx_tuple__539;
+  PyObject *__pyx_tuple__542;
+  PyObject *__pyx_tuple__543;
+  PyObject *__pyx_tuple__544;
+  PyObject *__pyx_tuple__545;
+  PyObject *__pyx_tuple__546;
+  PyObject *__pyx_tuple__548;
+  PyObject *__pyx_tuple__550;
+  PyObject *__pyx_tuple__554;
+  PyObject *__pyx_tuple__556;
+  PyObject *__pyx_tuple__558;
+  PyObject *__pyx_tuple__560;
+  PyObject *__pyx_tuple__561;
+  PyObject *__pyx_tuple__562;
+  PyObject *__pyx_tuple__564;
+  PyObject *__pyx_tuple__565;
+  PyObject *__pyx_tuple__566;
+  PyObject *__pyx_tuple__570;
+  PyObject *__pyx_codeobj__13;
+  PyObject *__pyx_codeobj__15;
+  PyObject *__pyx_codeobj__16;
+  PyObject *__pyx_codeobj__18;
+  PyObject *__pyx_codeobj__20;
+  PyObject *__pyx_codeobj__22;
+  PyObject *__pyx_codeobj__41;
+  PyObject *__pyx_codeobj__42;
+  PyObject *__pyx_codeobj__43;
+  PyObject *__pyx_codeobj__44;
+  PyObject *__pyx_codeobj__45;
+  PyObject *__pyx_codeobj__47;
+  PyObject *__pyx_codeobj__51;
+  PyObject *__pyx_codeobj__52;
+  PyObject *__pyx_codeobj__53;
+  PyObject *__pyx_codeobj__54;
+  PyObject *__pyx_codeobj__55;
+  PyObject *__pyx_codeobj__56;
+  PyObject *__pyx_codeobj__59;
+  PyObject *__pyx_codeobj__60;
+  PyObject *__pyx_codeobj__61;
+  PyObject *__pyx_codeobj__62;
+  PyObject *__pyx_codeobj__63;
+  PyObject *__pyx_codeobj__64;
+  PyObject *__pyx_codeobj__65;
+  PyObject *__pyx_codeobj__66;
+  PyObject *__pyx_codeobj__67;
+  PyObject *__pyx_codeobj__68;
+  PyObject *__pyx_codeobj__72;
+  PyObject *__pyx_codeobj__73;
+  PyObject *__pyx_codeobj__74;
+  PyObject *__pyx_codeobj__75;
+  PyObject *__pyx_codeobj__77;
+  PyObject *__pyx_codeobj__78;
+  PyObject *__pyx_codeobj__81;
+  PyObject *__pyx_codeobj__82;
+  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__90;
+  PyObject *__pyx_codeobj__91;
+  PyObject *__pyx_codeobj__92;
+  PyObject *__pyx_codeobj__94;
+  PyObject *__pyx_codeobj__95;
+  PyObject *__pyx_codeobj__96;
+  PyObject *__pyx_codeobj__97;
+  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__109;
+  PyObject *__pyx_codeobj__111;
+  PyObject *__pyx_codeobj__112;
+  PyObject *__pyx_codeobj__113;
+  PyObject *__pyx_codeobj__114;
+  PyObject *__pyx_codeobj__115;
+  PyObject *__pyx_codeobj__117;
+  PyObject *__pyx_codeobj__119;
+  PyObject *__pyx_codeobj__120;
+  PyObject *__pyx_codeobj__122;
+  PyObject *__pyx_codeobj__124;
+  PyObject *__pyx_codeobj__126;
+  PyObject *__pyx_codeobj__128;
+  PyObject *__pyx_codeobj__129;
+  PyObject *__pyx_codeobj__130;
+  PyObject *__pyx_codeobj__131;
+  PyObject *__pyx_codeobj__132;
+  PyObject *__pyx_codeobj__133;
+  PyObject *__pyx_codeobj__134;
+  PyObject *__pyx_codeobj__135;
+  PyObject *__pyx_codeobj__136;
+  PyObject *__pyx_codeobj__137;
+  PyObject *__pyx_codeobj__139;
+  PyObject *__pyx_codeobj__140;
+  PyObject *__pyx_codeobj__141;
+  PyObject *__pyx_codeobj__142;
+  PyObject *__pyx_codeobj__143;
+  PyObject *__pyx_codeobj__145;
+  PyObject *__pyx_codeobj__146;
+  PyObject *__pyx_codeobj__147;
+  PyObject *__pyx_codeobj__149;
+  PyObject *__pyx_codeobj__151;
+  PyObject *__pyx_codeobj__154;
+  PyObject *__pyx_codeobj__155;
+  PyObject *__pyx_codeobj__157;
+  PyObject *__pyx_codeobj__159;
+  PyObject *__pyx_codeobj__160;
+  PyObject *__pyx_codeobj__161;
+  PyObject *__pyx_codeobj__163;
+  PyObject *__pyx_codeobj__164;
+  PyObject *__pyx_codeobj__165;
+  PyObject *__pyx_codeobj__167;
+  PyObject *__pyx_codeobj__169;
+  PyObject *__pyx_codeobj__171;
+  PyObject *__pyx_codeobj__173;
+  PyObject *__pyx_codeobj__175;
+  PyObject *__pyx_codeobj__177;
+  PyObject *__pyx_codeobj__179;
+  PyObject *__pyx_codeobj__181;
+  PyObject *__pyx_codeobj__183;
+  PyObject *__pyx_codeobj__185;
+  PyObject *__pyx_codeobj__187;
+  PyObject *__pyx_codeobj__188;
+  PyObject *__pyx_codeobj__189;
+  PyObject *__pyx_codeobj__190;
+  PyObject *__pyx_codeobj__191;
+  PyObject *__pyx_codeobj__192;
+  PyObject *__pyx_codeobj__193;
+  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__205;
+  PyObject *__pyx_codeobj__206;
+  PyObject *__pyx_codeobj__207;
+  PyObject *__pyx_codeobj__208;
+  PyObject *__pyx_codeobj__210;
+  PyObject *__pyx_codeobj__212;
+  PyObject *__pyx_codeobj__214;
+  PyObject *__pyx_codeobj__215;
+  PyObject *__pyx_codeobj__216;
+  PyObject *__pyx_codeobj__218;
+  PyObject *__pyx_codeobj__219;
+  PyObject *__pyx_codeobj__220;
+  PyObject *__pyx_codeobj__221;
+  PyObject *__pyx_codeobj__223;
+  PyObject *__pyx_codeobj__225;
+  PyObject *__pyx_codeobj__227;
+  PyObject *__pyx_codeobj__228;
+  PyObject *__pyx_codeobj__229;
+  PyObject *__pyx_codeobj__231;
+  PyObject *__pyx_codeobj__233;
+  PyObject *__pyx_codeobj__234;
+  PyObject *__pyx_codeobj__235;
+  PyObject *__pyx_codeobj__237;
+  PyObject *__pyx_codeobj__239;
+  PyObject *__pyx_codeobj__240;
+  PyObject *__pyx_codeobj__242;
+  PyObject *__pyx_codeobj__243;
+  PyObject *__pyx_codeobj__244;
+  PyObject *__pyx_codeobj__245;
+  PyObject *__pyx_codeobj__246;
+  PyObject *__pyx_codeobj__247;
+  PyObject *__pyx_codeobj__248;
+  PyObject *__pyx_codeobj__249;
+  PyObject *__pyx_codeobj__250;
+  PyObject *__pyx_codeobj__251;
+  PyObject *__pyx_codeobj__252;
+  PyObject *__pyx_codeobj__253;
+  PyObject *__pyx_codeobj__256;
+  PyObject *__pyx_codeobj__257;
+  PyObject *__pyx_codeobj__258;
+  PyObject *__pyx_codeobj__259;
+  PyObject *__pyx_codeobj__260;
+  PyObject *__pyx_codeobj__261;
+  PyObject *__pyx_codeobj__262;
+  PyObject *__pyx_codeobj__263;
+  PyObject *__pyx_codeobj__264;
+  PyObject *__pyx_codeobj__265;
+  PyObject *__pyx_codeobj__266;
+  PyObject *__pyx_codeobj__267;
+  PyObject *__pyx_codeobj__268;
+  PyObject *__pyx_codeobj__269;
+  PyObject *__pyx_codeobj__270;
+  PyObject *__pyx_codeobj__271;
+  PyObject *__pyx_codeobj__272;
+  PyObject *__pyx_codeobj__273;
+  PyObject *__pyx_codeobj__274;
+  PyObject *__pyx_codeobj__275;
+  PyObject *__pyx_codeobj__276;
+  PyObject *__pyx_codeobj__277;
+  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__286;
+  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__298;
+  PyObject *__pyx_codeobj__299;
+  PyObject *__pyx_codeobj__300;
+  PyObject *__pyx_codeobj__302;
+  PyObject *__pyx_codeobj__303;
+  PyObject *__pyx_codeobj__305;
+  PyObject *__pyx_codeobj__307;
+  PyObject *__pyx_codeobj__309;
+  PyObject *__pyx_codeobj__311;
+  PyObject *__pyx_codeobj__313;
+  PyObject *__pyx_codeobj__315;
+  PyObject *__pyx_codeobj__318;
+  PyObject *__pyx_codeobj__320;
+  PyObject *__pyx_codeobj__321;
+  PyObject *__pyx_codeobj__322;
+  PyObject *__pyx_codeobj__323;
+  PyObject *__pyx_codeobj__324;
+  PyObject *__pyx_codeobj__325;
+  PyObject *__pyx_codeobj__326;
+  PyObject *__pyx_codeobj__327;
+  PyObject *__pyx_codeobj__328;
+  PyObject *__pyx_codeobj__329;
+  PyObject *__pyx_codeobj__330;
+  PyObject *__pyx_codeobj__331;
+  PyObject *__pyx_codeobj__332;
+  PyObject *__pyx_codeobj__333;
+  PyObject *__pyx_codeobj__334;
+  PyObject *__pyx_codeobj__336;
+  PyObject *__pyx_codeobj__337;
+  PyObject *__pyx_codeobj__338;
+  PyObject *__pyx_codeobj__339;
+  PyObject *__pyx_codeobj__340;
+  PyObject *__pyx_codeobj__341;
+  PyObject *__pyx_codeobj__343;
+  PyObject *__pyx_codeobj__344;
+  PyObject *__pyx_codeobj__345;
+  PyObject *__pyx_codeobj__347;
+  PyObject *__pyx_codeobj__348;
+  PyObject *__pyx_codeobj__350;
+  PyObject *__pyx_codeobj__351;
+  PyObject *__pyx_codeobj__352;
+  PyObject *__pyx_codeobj__354;
+  PyObject *__pyx_codeobj__355;
+  PyObject *__pyx_codeobj__357;
+  PyObject *__pyx_codeobj__359;
+  PyObject *__pyx_codeobj__361;
+  PyObject *__pyx_codeobj__363;
+  PyObject *__pyx_codeobj__365;
+  PyObject *__pyx_codeobj__367;
+  PyObject *__pyx_codeobj__369;
+  PyObject *__pyx_codeobj__373;
+  PyObject *__pyx_codeobj__376;
+  PyObject *__pyx_codeobj__377;
+  PyObject *__pyx_codeobj__378;
+  PyObject *__pyx_codeobj__380;
+  PyObject *__pyx_codeobj__381;
+  PyObject *__pyx_codeobj__382;
+  PyObject *__pyx_codeobj__383;
+  PyObject *__pyx_codeobj__384;
+  PyObject *__pyx_codeobj__386;
+  PyObject *__pyx_codeobj__387;
+  PyObject *__pyx_codeobj__390;
+  PyObject *__pyx_codeobj__391;
+  PyObject *__pyx_codeobj__392;
+  PyObject *__pyx_codeobj__394;
+  PyObject *__pyx_codeobj__397;
+  PyObject *__pyx_codeobj__398;
+  PyObject *__pyx_codeobj__399;
+  PyObject *__pyx_codeobj__400;
+  PyObject *__pyx_codeobj__401;
+  PyObject *__pyx_codeobj__402;
+  PyObject *__pyx_codeobj__404;
+  PyObject *__pyx_codeobj__407;
+  PyObject *__pyx_codeobj__408;
+  PyObject *__pyx_codeobj__410;
+  PyObject *__pyx_codeobj__411;
+  PyObject *__pyx_codeobj__412;
+  PyObject *__pyx_codeobj__413;
+  PyObject *__pyx_codeobj__414;
+  PyObject *__pyx_codeobj__415;
+  PyObject *__pyx_codeobj__416;
+  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__428;
+  PyObject *__pyx_codeobj__429;
+  PyObject *__pyx_codeobj__430;
+  PyObject *__pyx_codeobj__431;
+  PyObject *__pyx_codeobj__432;
+  PyObject *__pyx_codeobj__433;
+  PyObject *__pyx_codeobj__434;
+  PyObject *__pyx_codeobj__442;
+  PyObject *__pyx_codeobj__443;
+  PyObject *__pyx_codeobj__445;
+  PyObject *__pyx_codeobj__446;
+  PyObject *__pyx_codeobj__447;
+  PyObject *__pyx_codeobj__449;
+  PyObject *__pyx_codeobj__451;
+  PyObject *__pyx_codeobj__452;
+  PyObject *__pyx_codeobj__454;
+  PyObject *__pyx_codeobj__455;
+  PyObject *__pyx_codeobj__456;
+  PyObject *__pyx_codeobj__458;
+  PyObject *__pyx_codeobj__459;
+  PyObject *__pyx_codeobj__461;
+  PyObject *__pyx_codeobj__469;
+  PyObject *__pyx_codeobj__470;
+  PyObject *__pyx_codeobj__471;
+  PyObject *__pyx_codeobj__473;
+  PyObject *__pyx_codeobj__474;
+  PyObject *__pyx_codeobj__475;
+  PyObject *__pyx_codeobj__477;
+  PyObject *__pyx_codeobj__478;
+  PyObject *__pyx_codeobj__479;
+  PyObject *__pyx_codeobj__480;
+  PyObject *__pyx_codeobj__481;
+  PyObject *__pyx_codeobj__482;
+  PyObject *__pyx_codeobj__483;
+  PyObject *__pyx_codeobj__488;
+  PyObject *__pyx_codeobj__489;
+  PyObject *__pyx_codeobj__490;
+  PyObject *__pyx_codeobj__492;
+  PyObject *__pyx_codeobj__493;
+  PyObject *__pyx_codeobj__495;
+  PyObject *__pyx_codeobj__496;
+  PyObject *__pyx_codeobj__498;
+  PyObject *__pyx_codeobj__499;
+  PyObject *__pyx_codeobj__501;
+  PyObject *__pyx_codeobj__503;
+  PyObject *__pyx_codeobj__505;
+  PyObject *__pyx_codeobj__507;
+  PyObject *__pyx_codeobj__508;
+  PyObject *__pyx_codeobj__510;
+  PyObject *__pyx_codeobj__511;
+  PyObject *__pyx_codeobj__512;
+  PyObject *__pyx_codeobj__513;
+  PyObject *__pyx_codeobj__514;
+  PyObject *__pyx_codeobj__516;
+  PyObject *__pyx_codeobj__518;
+  PyObject *__pyx_codeobj__519;
+  PyObject *__pyx_codeobj__520;
+  PyObject *__pyx_codeobj__521;
+  PyObject *__pyx_codeobj__522;
+  PyObject *__pyx_codeobj__523;
+  PyObject *__pyx_codeobj__524;
+  PyObject *__pyx_codeobj__525;
+  PyObject *__pyx_codeobj__526;
+  PyObject *__pyx_codeobj__527;
+  PyObject *__pyx_codeobj__528;
+  PyObject *__pyx_codeobj__529;
+  PyObject *__pyx_codeobj__530;
+  PyObject *__pyx_codeobj__531;
+  PyObject *__pyx_codeobj__532;
+  PyObject *__pyx_codeobj__535;
+  PyObject *__pyx_codeobj__540;
+  PyObject *__pyx_codeobj__541;
+  PyObject *__pyx_codeobj__547;
+  PyObject *__pyx_codeobj__549;
+  PyObject *__pyx_codeobj__551;
+  PyObject *__pyx_codeobj__552;
+  PyObject *__pyx_codeobj__553;
+  PyObject *__pyx_codeobj__555;
+  PyObject *__pyx_codeobj__557;
+  PyObject *__pyx_codeobj__559;
+  PyObject *__pyx_codeobj__563;
+  PyObject *__pyx_codeobj__567;
+  PyObject *__pyx_codeobj__568;
+  PyObject *__pyx_codeobj__569;
+  PyObject *__pyx_codeobj__571;
+  PyObject *__pyx_codeobj__572;
+  PyObject *__pyx_codeobj__573;
+  PyObject *__pyx_codeobj__574;
+  PyObject *__pyx_codeobj__575;
+} __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_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_7_cython_6cygrpc__ChannelArg);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc__ChannelArg);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc__ChannelArgs);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc__ChannelArgs);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc_Call);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc_Call);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc__CallState);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc__CallState);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc__ChannelState);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc__ChannelState);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc_IntegratedCall);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc_IntegratedCall);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc_SegregatedCall);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc_SegregatedCall);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc_Channel);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc_Channel);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc_CallHandle);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc_CallHandle);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc_CallCredentials);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc_CallCredentials);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc_MetadataPluginCallCredentials);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc_MetadataPluginCallCredentials);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc_CompositeCallCredentials);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc_CompositeCallCredentials);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc_ChannelCredentials);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc_ChannelCredentials);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc_SSLSessionCacheLRU);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc_SSLSessionCacheLRU);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc_SSLChannelCredentials);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc_SSLChannelCredentials);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc_CompositeChannelCredentials);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc_CompositeChannelCredentials);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc_XDSChannelCredentials);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc_XDSChannelCredentials);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc_ServerCertificateConfig);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc_ServerCertificateConfig);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc_ServerCredentials);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc_ServerCredentials);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc_LocalChannelCredentials);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc_LocalChannelCredentials);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc_ALTSChannelCredentials);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc_ALTSChannelCredentials);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc__LatentEventArg);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc__LatentEventArg);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc_CompletionQueue);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc_CompletionQueue);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc_BaseEvent);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc_BaseEvent);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc_ConnectivityEvent);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc_ConnectivityEvent);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc_RequestCallEvent);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc_RequestCallEvent);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc_BatchOperationEvent);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc_BatchOperationEvent);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc_ServerShutdownEvent);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc_ServerShutdownEvent);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc_Operation);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc_Operation);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc_SendInitialMetadataOperation);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc_SendInitialMetadataOperation);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc_SendMessageOperation);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc_SendMessageOperation);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc_SendCloseFromClientOperation);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc_SendCloseFromClientOperation);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc_SendStatusFromServerOperation);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc_SendStatusFromServerOperation);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc_ReceiveInitialMetadataOperation);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc_ReceiveInitialMetadataOperation);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc_ReceiveMessageOperation);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc_ReceiveMessageOperation);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc_ReceiveStatusOnClientOperation);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc_ReceiveStatusOnClientOperation);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc_ReceiveCloseOnServerOperation);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc_ReceiveCloseOnServerOperation);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc_CallDetails);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc_CallDetails);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc_SslPemKeyCertPair);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc_SslPemKeyCertPair);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc_CompressionOptions);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc_CompressionOptions);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc_Server);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc_Server);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc__Tag);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc__Tag);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc__ConnectivityTag);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc__ConnectivityTag);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc__RequestCallTag);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc__RequestCallTag);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc__BatchOperationTag);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc__BatchOperationTag);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc__ServerShutdownTag);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc__ServerShutdownTag);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc_BaseCompletionQueue);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc_BaseCompletionQueue);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc__BoundEventLoop);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc__BoundEventLoop);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc_PollerCompletionQueue);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc_PollerCompletionQueue);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc_AioRpcStatus);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc_AioRpcStatus);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc__AioState);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc__AioState);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc_CallbackFailureHandler);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc_CallbackFailureHandler);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc_CallbackWrapper);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc_CallbackWrapper);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc_GrpcCallWrapper);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc_GrpcCallWrapper);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc__AioCall);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc__AioCall);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc_AioChannel);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc_AioChannel);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc__HandlerCallDetails);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc__HandlerCallDetails);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc_RPCState);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc_RPCState);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc__ServicerContext);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc__ServicerContext);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc__SyncServicerContext);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc__SyncServicerContext);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc__MessageReceiver);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc__MessageReceiver);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc__ConcurrentRpcLimiter);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc__ConcurrentRpcLimiter);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc_AioServer);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc_AioServer);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc__GrpcArgWrapper);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc__GrpcArgWrapper);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc_InsecureChannelCredentials);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc_InsecureChannelCredentials);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc_ComputeEngineChannelCredentials);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc_ComputeEngineChannelCredentials);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc_CensusContext);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc_CensusContext);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_1_next_event);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_1_next_event);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_7_cython_6cygrpc__metadata);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_7_cython_6cygrpc__metadata);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_6_genexpr);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_6_genexpr);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_9___init__);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_9___init__);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_13__receive_message);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_13__receive_message);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_14__send_message);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_14__send_message);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_18_status);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_18_status);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_29_read);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_29_read);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_30_write);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_30_write);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_32_abort);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_32_abort);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_41___anext__);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_41___anext__);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_49__request_call);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_49__request_call);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_51_start);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_51_start);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_53_shutdown);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_53_shutdown);
+  Py_CLEAR(clear_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination);
+  Py_CLEAR(clear_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination);
+  Py_CLEAR(clear_module_state->__pyx_ptype___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg);
+  Py_CLEAR(clear_module_state->__pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg);
+  Py_CLEAR(clear_module_state->__pyx_ptype___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_);
+  Py_CLEAR(clear_module_state->__pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_);
+  Py_CLEAR(clear_module_state->__pyx_ptype___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args);
+  Py_CLEAR(clear_module_state->__pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args);
+  Py_CLEAR(clear_module_state->__pyx_ptype___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_);
+  Py_CLEAR(clear_module_state->__pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_0);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_1);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ALTSChannelCredentials);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ALTSChannelCredentials___reduce);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ALTSChannelCredentials___setstat);
+  Py_CLEAR(clear_module_state->__pyx_n_s_AWAIT_THREADS_TIMEOUT_SECONDS);
+  Py_CLEAR(clear_module_state->__pyx_n_s_AbortError);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_Abort_already_called);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_Abort_error_has_been_replaced);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_Abort_error_unexpectedly_suppres);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_Aborting_method_s_due_to_server);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ActiveThreadCount);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ActiveThreadCount___init);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ActiveThreadCount_await_zero_th);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ActiveThreadCount_decrement);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ActiveThreadCount_increment);
+  Py_CLEAR(clear_module_state->__pyx_n_s_AioCall);
+  Py_CLEAR(clear_module_state->__pyx_n_s_AioCall___reduce_cython);
+  Py_CLEAR(clear_module_state->__pyx_n_s_AioCall___setstate_cython);
+  Py_CLEAR(clear_module_state->__pyx_n_s_AioCall__handle_status_once_rec);
+  Py_CLEAR(clear_module_state->__pyx_n_s_AioCall__repr);
+  Py_CLEAR(clear_module_state->__pyx_n_s_AioCall_add_done_callback);
+  Py_CLEAR(clear_module_state->__pyx_n_s_AioCall_cancel);
+  Py_CLEAR(clear_module_state->__pyx_n_s_AioCall_cancelled);
+  Py_CLEAR(clear_module_state->__pyx_n_s_AioCall_done);
+  Py_CLEAR(clear_module_state->__pyx_n_s_AioCall_initial_metadata);
+  Py_CLEAR(clear_module_state->__pyx_n_s_AioCall_initiate_stream_stream);
+  Py_CLEAR(clear_module_state->__pyx_n_s_AioCall_initiate_unary_stream);
+  Py_CLEAR(clear_module_state->__pyx_n_s_AioCall_is_locally_cancelled);
+  Py_CLEAR(clear_module_state->__pyx_n_s_AioCall_is_ok);
+  Py_CLEAR(clear_module_state->__pyx_n_s_AioCall_receive_serialized_mess);
+  Py_CLEAR(clear_module_state->__pyx_n_s_AioCall_send_receive_close);
+  Py_CLEAR(clear_module_state->__pyx_n_s_AioCall_send_serialized_message);
+  Py_CLEAR(clear_module_state->__pyx_n_s_AioCall_set_internal_error);
+  Py_CLEAR(clear_module_state->__pyx_n_s_AioCall_status);
+  Py_CLEAR(clear_module_state->__pyx_n_s_AioCall_stream_unary);
+  Py_CLEAR(clear_module_state->__pyx_n_s_AioCall_time_remaining);
+  Py_CLEAR(clear_module_state->__pyx_n_s_AioCall_unary_unary);
+  Py_CLEAR(clear_module_state->__pyx_n_s_AioChannel);
+  Py_CLEAR(clear_module_state->__pyx_n_s_AioChannel___reduce_cython);
+  Py_CLEAR(clear_module_state->__pyx_n_s_AioChannel___setstate_cython);
+  Py_CLEAR(clear_module_state->__pyx_n_s_AioChannel_call);
+  Py_CLEAR(clear_module_state->__pyx_n_s_AioChannel_check_connectivity_st);
+  Py_CLEAR(clear_module_state->__pyx_n_s_AioChannel_close);
+  Py_CLEAR(clear_module_state->__pyx_n_s_AioChannel_closed);
+  Py_CLEAR(clear_module_state->__pyx_n_s_AioChannel_closing);
+  Py_CLEAR(clear_module_state->__pyx_n_s_AioChannel_watch_connectivity_st);
+  Py_CLEAR(clear_module_state->__pyx_n_s_AioRpcStatus);
+  Py_CLEAR(clear_module_state->__pyx_n_s_AioRpcStatus___reduce_cython);
+  Py_CLEAR(clear_module_state->__pyx_n_s_AioRpcStatus___setstate_cython);
+  Py_CLEAR(clear_module_state->__pyx_n_s_AioRpcStatus_code);
+  Py_CLEAR(clear_module_state->__pyx_n_s_AioRpcStatus_debug_error_string);
+  Py_CLEAR(clear_module_state->__pyx_n_s_AioRpcStatus_details);
+  Py_CLEAR(clear_module_state->__pyx_n_s_AioRpcStatus_trailing_metadata);
+  Py_CLEAR(clear_module_state->__pyx_n_s_AioServer);
+  Py_CLEAR(clear_module_state->__pyx_n_s_AioServer___reduce_cython);
+  Py_CLEAR(clear_module_state->__pyx_n_s_AioServer___setstate_cython);
+  Py_CLEAR(clear_module_state->__pyx_n_s_AioServer__request_call);
+  Py_CLEAR(clear_module_state->__pyx_n_s_AioServer__server_main_loop);
+  Py_CLEAR(clear_module_state->__pyx_n_s_AioServer__serving_task_crash_ha);
+  Py_CLEAR(clear_module_state->__pyx_n_s_AioServer__start_shutting_down);
+  Py_CLEAR(clear_module_state->__pyx_n_s_AioServer_add_generic_rpc_handle);
+  Py_CLEAR(clear_module_state->__pyx_n_s_AioServer_add_insecure_port);
+  Py_CLEAR(clear_module_state->__pyx_n_s_AioServer_add_secure_port);
+  Py_CLEAR(clear_module_state->__pyx_n_s_AioServer_is_running);
+  Py_CLEAR(clear_module_state->__pyx_n_s_AioServer_shutdown);
+  Py_CLEAR(clear_module_state->__pyx_n_s_AioServer_start);
+  Py_CLEAR(clear_module_state->__pyx_n_s_AioServer_wait_for_termination);
+  Py_CLEAR(clear_module_state->__pyx_n_s_AioState);
+  Py_CLEAR(clear_module_state->__pyx_n_s_AioState___reduce_cython);
+  Py_CLEAR(clear_module_state->__pyx_n_s_AioState___setstate_cython);
+  Py_CLEAR(clear_module_state->__pyx_n_s_AssertionError);
+  Py_CLEAR(clear_module_state->__pyx_n_s_AsyncIOEngine);
+  Py_CLEAR(clear_module_state->__pyx_n_s_AttributeError);
+  Py_CLEAR(clear_module_state->__pyx_n_s_BaseCompletionQueue);
+  Py_CLEAR(clear_module_state->__pyx_n_s_BaseCompletionQueue___reduce_cyt);
+  Py_CLEAR(clear_module_state->__pyx_n_s_BaseCompletionQueue___setstate_c);
+  Py_CLEAR(clear_module_state->__pyx_n_s_BaseError);
+  Py_CLEAR(clear_module_state->__pyx_n_s_BaseEvent);
+  Py_CLEAR(clear_module_state->__pyx_n_s_BatchOperationEvent);
+  Py_CLEAR(clear_module_state->__pyx_n_s_BatchOperationEvent___reduce_cyt);
+  Py_CLEAR(clear_module_state->__pyx_n_s_BatchOperationEvent___setstate_c);
+  Py_CLEAR(clear_module_state->__pyx_n_s_BatchOperationTag);
+  Py_CLEAR(clear_module_state->__pyx_n_s_BatchOperationTag___reduce_cyth);
+  Py_CLEAR(clear_module_state->__pyx_n_s_BatchOperationTag___setstate_cy);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_Binary_metadata_key_s_expected_b);
+  Py_CLEAR(clear_module_state->__pyx_n_s_BoundEventLoop);
+  Py_CLEAR(clear_module_state->__pyx_n_s_BoundEventLoop___reduce_cython);
+  Py_CLEAR(clear_module_state->__pyx_n_s_BoundEventLoop___setstate_cytho);
+  Py_CLEAR(clear_module_state->__pyx_n_s_BoundEventLoop_close);
+  Py_CLEAR(clear_module_state->__pyx_n_s_COMPRESSION_METADATA_STRING_MAP);
+  Py_CLEAR(clear_module_state->__pyx_n_s_CUSTOM_IO_MANAGER);
+  Py_CLEAR(clear_module_state->__pyx_n_s_CYGRPC_STATUS_CODE_TO_STATUS_COD);
+  Py_CLEAR(clear_module_state->__pyx_n_s_Call);
+  Py_CLEAR(clear_module_state->__pyx_n_s_CallCredentials);
+  Py_CLEAR(clear_module_state->__pyx_n_s_CallCredentials___reduce_cython);
+  Py_CLEAR(clear_module_state->__pyx_n_s_CallCredentials___setstate_cytho);
+  Py_CLEAR(clear_module_state->__pyx_n_s_CallDetails);
+  Py_CLEAR(clear_module_state->__pyx_n_s_CallDetails___reduce_cython);
+  Py_CLEAR(clear_module_state->__pyx_n_s_CallDetails___setstate_cython);
+  Py_CLEAR(clear_module_state->__pyx_n_s_CallError);
+  Py_CLEAR(clear_module_state->__pyx_n_s_CallHandle);
+  Py_CLEAR(clear_module_state->__pyx_n_s_CallHandle___reduce_cython);
+  Py_CLEAR(clear_module_state->__pyx_n_s_CallHandle___setstate_cython);
+  Py_CLEAR(clear_module_state->__pyx_n_s_CallState);
+  Py_CLEAR(clear_module_state->__pyx_n_s_CallState___reduce_cython);
+  Py_CLEAR(clear_module_state->__pyx_n_s_CallState___setstate_cython);
+  Py_CLEAR(clear_module_state->__pyx_n_s_Call___reduce_cython);
+  Py_CLEAR(clear_module_state->__pyx_n_s_Call___setstate_cython);
+  Py_CLEAR(clear_module_state->__pyx_n_s_Call__custom_op_on_c_call);
+  Py_CLEAR(clear_module_state->__pyx_n_s_Call__start_batch);
+  Py_CLEAR(clear_module_state->__pyx_n_s_Call_cancel);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_Call_credentials_are_only_valid);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_Call_credentials_may_not_be_NULL);
+  Py_CLEAR(clear_module_state->__pyx_n_s_Call_peer);
+  Py_CLEAR(clear_module_state->__pyx_n_s_Call_set_credentials);
+  Py_CLEAR(clear_module_state->__pyx_n_s_Call_start_client_batch);
+  Py_CLEAR(clear_module_state->__pyx_n_s_Call_start_server_batch);
+  Py_CLEAR(clear_module_state->__pyx_n_s_CallbackFailureHandler);
+  Py_CLEAR(clear_module_state->__pyx_n_s_CallbackFailureHandler___reduce);
+  Py_CLEAR(clear_module_state->__pyx_n_s_CallbackFailureHandler___setstat);
+  Py_CLEAR(clear_module_state->__pyx_n_s_CallbackWrapper);
+  Py_CLEAR(clear_module_state->__pyx_n_s_CallbackWrapper___reduce_cython);
+  Py_CLEAR(clear_module_state->__pyx_n_s_CallbackWrapper___setstate_cytho);
+  Py_CLEAR(clear_module_state->__pyx_n_s_CancelledError);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_Cannot_invoke_RPC_on_closed_chan);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_Cannot_invoke_RPC_s);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_Cannot_monitor_channel_state_s);
+  Py_CLEAR(clear_module_state->__pyx_n_s_CensusContext);
+  Py_CLEAR(clear_module_state->__pyx_n_s_CensusContext___reduce_cython);
+  Py_CLEAR(clear_module_state->__pyx_n_s_CensusContext___setstate_cython);
+  Py_CLEAR(clear_module_state->__pyx_n_s_Channel);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ChannelArg);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ChannelArgKey);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ChannelArg___reduce_cython);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ChannelArg___setstate_cython);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ChannelArgs);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ChannelArgs___reduce_cython);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ChannelArgs___setstate_cython);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ChannelCredentials);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ChannelCredentials___reduce_cyth);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ChannelCredentials___setstate_cy);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ChannelState);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ChannelState___reduce_cython);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ChannelState___setstate_cython);
+  Py_CLEAR(clear_module_state->__pyx_n_s_Channel___reduce_cython);
+  Py_CLEAR(clear_module_state->__pyx_n_s_Channel___setstate_cython);
+  Py_CLEAR(clear_module_state->__pyx_n_s_Channel_check_connectivity_state);
+  Py_CLEAR(clear_module_state->__pyx_n_s_Channel_close);
+  Py_CLEAR(clear_module_state->__pyx_n_s_Channel_close_on_fork);
+  Py_CLEAR(clear_module_state->__pyx_n_s_Channel_get_registered_call_hand);
+  Py_CLEAR(clear_module_state->__pyx_n_s_Channel_integrated_call);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_Channel_is_closed);
+  Py_CLEAR(clear_module_state->__pyx_n_s_Channel_next_call_event);
+  Py_CLEAR(clear_module_state->__pyx_n_s_Channel_segregated_call);
+  Py_CLEAR(clear_module_state->__pyx_n_s_Channel_target);
+  Py_CLEAR(clear_module_state->__pyx_n_s_Channel_watch_connectivity_state);
+  Py_CLEAR(clear_module_state->__pyx_n_s_CompletionQueue);
+  Py_CLEAR(clear_module_state->__pyx_n_s_CompletionQueue___reduce_cython);
+  Py_CLEAR(clear_module_state->__pyx_n_s_CompletionQueue___setstate_cytho);
+  Py_CLEAR(clear_module_state->__pyx_n_s_CompletionQueue__internal_poll);
+  Py_CLEAR(clear_module_state->__pyx_n_s_CompletionQueue_clear);
+  Py_CLEAR(clear_module_state->__pyx_n_s_CompletionQueue_poll);
+  Py_CLEAR(clear_module_state->__pyx_n_s_CompletionQueue_shutdown);
+  Py_CLEAR(clear_module_state->__pyx_n_s_CompletionType);
+  Py_CLEAR(clear_module_state->__pyx_n_s_CompositeCallCredentials);
+  Py_CLEAR(clear_module_state->__pyx_n_s_CompositeCallCredentials___reduc);
+  Py_CLEAR(clear_module_state->__pyx_n_s_CompositeCallCredentials___setst);
+  Py_CLEAR(clear_module_state->__pyx_n_s_CompositeChannelCredentials);
+  Py_CLEAR(clear_module_state->__pyx_n_s_CompositeChannelCredentials___re);
+  Py_CLEAR(clear_module_state->__pyx_n_s_CompositeChannelCredentials___se);
+  Py_CLEAR(clear_module_state->__pyx_n_s_CompressionAlgorithm);
+  Py_CLEAR(clear_module_state->__pyx_n_s_CompressionLevel);
+  Py_CLEAR(clear_module_state->__pyx_n_s_CompressionOptions);
+  Py_CLEAR(clear_module_state->__pyx_n_s_CompressionOptions___reduce_cyth);
+  Py_CLEAR(clear_module_state->__pyx_n_s_CompressionOptions___setstate_cy);
+  Py_CLEAR(clear_module_state->__pyx_n_s_CompressionOptions_disable_algor);
+  Py_CLEAR(clear_module_state->__pyx_n_s_CompressionOptions_enable_algori);
+  Py_CLEAR(clear_module_state->__pyx_n_s_CompressionOptions_is_algorithm);
+  Py_CLEAR(clear_module_state->__pyx_n_s_CompressionOptions_to_channel_ar);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_Compression_setting_must_be_spec);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ComputeEngineChannelCredentials);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ComputeEngineChannelCredentials_2);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ComputeEngineChannelCredentials_3);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ConcurrentRpcLimiter);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ConcurrentRpcLimiter___reduce_c);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ConcurrentRpcLimiter___setstate);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ConcurrentRpcLimiter__decrease);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ConcurrentRpcLimiter_check_befo);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ConcurrentRpcLimiter_decrease_o);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_Concurrent_RPC_limit_exceeded);
+  Py_CLEAR(clear_module_state->__pyx_n_s_Condition);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ConnectivityEvent);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ConnectivityEvent___reduce_cytho);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ConnectivityEvent___setstate_cyt);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ConnectivityState);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ConnectivityTag);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ConnectivityTag___reduce_cython);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ConnectivityTag___setstate_cyth);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_Core_should_not_return_GRPC_QUEU);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_Credentials_couldn_t_have_been_s);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_Dedicated_exception_class_for_wa);
+  Py_CLEAR(clear_module_state->__pyx_n_s_DeprecationWarning);
+  Py_CLEAR(clear_module_state->__pyx_n_s_EMPTY_FLAGS);
+  Py_CLEAR(clear_module_state->__pyx_n_s_EMPTY_MASK);
+  Py_CLEAR(clear_module_state->__pyx_n_s_EOF);
+  Py_CLEAR(clear_module_state->__pyx_n_s_EOF_2);
+  Py_CLEAR(clear_module_state->__pyx_n_s_EOF___bool);
+  Py_CLEAR(clear_module_state->__pyx_n_s_EOF___len);
+  Py_CLEAR(clear_module_state->__pyx_n_s_EOF___repr);
+  Py_CLEAR(clear_module_state->__pyx_n_s_EOF___str);
+  Py_CLEAR(clear_module_state->__pyx_n_s_EOF__repr);
+  Py_CLEAR(clear_module_state->__pyx_n_s_EX_USAGE);
+  Py_CLEAR(clear_module_state->__pyx_n_s_Enum);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_Error_fetching_certificate_confi);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_Error_fetching_certificate_confi_2);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_Error_in_callback_for_method_s);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_Error_in_grpc_server_request_cal);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ExecuteBatchError);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_ExecuteBatchError_raised_in_core);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_Exiting_child_due_to_raised_exce);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_Expected_bytes_str_or_unicode_no);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_Expected_int_bytes_or_behavior_g);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_Expected_str_not);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_Expecting_non_ok_status_code);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_Failed_grpc_call_start_batch_wit);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_Failed_s_s);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_Failed_sending_error_status_from);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_Failed_to_get_server_sockets_ple);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_Failed_to_get_servers_please_ens);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_Failed_to_get_the_channel_please);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_Failed_to_get_the_server_please);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_Failed_to_get_the_socket_please);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_Failed_to_get_the_subchannel_ple);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_Failed_to_get_top_channels_pleas);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_Failed_to_receive_any_message_fr);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_Failed_to_shutdown_gRPC_Core_aft);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_Failed_to_shutdown_gRPC_Python_t);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ForkManagedThread);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ForkManagedThread___init);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ForkManagedThread___init___local);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ForkManagedThread_join);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ForkManagedThread_setDaemon);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ForkManagedThread_start);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ForkState);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ForkState___init);
+  Py_CLEAR(clear_module_state->__pyx_n_s_GRPC_ASYNCIO_ENGINE);
+  Py_CLEAR(clear_module_state->__pyx_n_s_GRPC_COMPRESSION_CHANNEL_DEFAULT);
+  Py_CLEAR(clear_module_state->__pyx_n_s_GRPC_COMPRESSION_REQUEST_ALGORIT);
+  Py_CLEAR(clear_module_state->__pyx_n_s_GRPC_ENABLE_FORK_SUPPORT);
+  Py_CLEAR(clear_module_state->__pyx_n_s_GRPC_ENABLE_FORK_SUPPORT_2);
+  Py_CLEAR(clear_module_state->__pyx_n_s_GRPC_PROPAGATE_CANCELLATION);
+  Py_CLEAR(clear_module_state->__pyx_n_s_GRPC_PROPAGATE_CENSUS_STATS_CONT);
+  Py_CLEAR(clear_module_state->__pyx_n_s_GRPC_PROPAGATE_CENSUS_TRACING_CO);
+  Py_CLEAR(clear_module_state->__pyx_n_s_GRPC_PROPAGATE_DEADLINE);
+  Py_CLEAR(clear_module_state->__pyx_n_s_GRPC_PROPAGATE_DEFAULTS);
+  Py_CLEAR(clear_module_state->__pyx_n_s_Group);
+  Py_CLEAR(clear_module_state->__pyx_n_s_GrpcArgWrapper);
+  Py_CLEAR(clear_module_state->__pyx_n_s_GrpcArgWrapper___reduce_cython);
+  Py_CLEAR(clear_module_state->__pyx_n_s_GrpcArgWrapper___setstate_cytho);
+  Py_CLEAR(clear_module_state->__pyx_n_s_GrpcCallWrapper);
+  Py_CLEAR(clear_module_state->__pyx_n_s_HandlerCallDetails);
+  Py_CLEAR(clear_module_state->__pyx_n_s_HandlerCallDetails___reduce_cyt);
+  Py_CLEAR(clear_module_state->__pyx_n_s_HandlerCallDetails___setstate_c);
+  Py_CLEAR(clear_module_state->__pyx_n_s_IMMUTABLE_EMPTY_METADATA);
+  Py_CLEAR(clear_module_state->__pyx_n_s_INTERNAL_CALL_ERROR_MESSAGE_FOR);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ImportError);
+  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_n_s_InitialMetadataFlags);
+  Py_CLEAR(clear_module_state->__pyx_n_s_InsecureChannelCredentials);
+  Py_CLEAR(clear_module_state->__pyx_n_s_InsecureChannelCredentials___red);
+  Py_CLEAR(clear_module_state->__pyx_n_s_InsecureChannelCredentials___set);
+  Py_CLEAR(clear_module_state->__pyx_n_s_IntegratedCall);
+  Py_CLEAR(clear_module_state->__pyx_n_s_IntegratedCall___reduce_cython);
+  Py_CLEAR(clear_module_state->__pyx_n_s_IntegratedCall___setstate_cython);
+  Py_CLEAR(clear_module_state->__pyx_n_s_IntegratedCall_cancel);
+  Py_CLEAR(clear_module_state->__pyx_n_s_IntegratedCall_operate);
+  Py_CLEAR(clear_module_state->__pyx_n_s_InternalError);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_Internal_error_from_Core);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_Internal_gRPC_call_error_d);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_Invalid_encoding_on_s);
+  Py_CLEAR(clear_module_state->__pyx_kp_u_Invalid_trailing_metadata_type_e);
+  Py_CLEAR(clear_module_state->__pyx_n_s_KeyError);
+  Py_CLEAR(clear_module_state->__pyx_n_s_KeyboardInterrupt);
+  Py_CLEAR(clear_module_state->__pyx_n_s_LOGGER);
+  Py_CLEAR(clear_module_state->__pyx_n_s_LatentEventArg);
+  Py_CLEAR(clear_module_state->__pyx_n_s_LocalChannelCredentials);
+  Py_CLEAR(clear_module_state->__pyx_n_s_LocalChannelCredentials___reduce);
+  Py_CLEAR(clear_module_state->__pyx_n_s_LocalChannelCredentials___setsta);
+  Py_CLEAR(clear_module_state->__pyx_n_s_LocalConnectionType);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_Locally_aborted);
+  Py_CLEAR(clear_module_state->__pyx_n_s_Lock);
+  Py_CLEAR(clear_module_state->__pyx_n_s_MessageReceiver);
+  Py_CLEAR(clear_module_state->__pyx_n_s_MessageReceiver___anext);
+  Py_CLEAR(clear_module_state->__pyx_n_s_MessageReceiver___reduce_cython);
+  Py_CLEAR(clear_module_state->__pyx_n_s_MessageReceiver___setstate_cyth);
+  Py_CLEAR(clear_module_state->__pyx_n_s_MessageReceiver__async_message);
+  Py_CLEAR(clear_module_state->__pyx_n_s_MetadataPluginCallCredentials);
+  Py_CLEAR(clear_module_state->__pyx_n_s_MetadataPluginCallCredentials_2);
+  Py_CLEAR(clear_module_state->__pyx_n_s_MetadataPluginCallCredentials_3);
+  Py_CLEAR(clear_module_state->__pyx_n_s_Metadatum);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_Method_not_found);
+  Py_CLEAR(clear_module_state->__pyx_n_s_NON_OK_CALL_REPRESENTATION);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_No_custom_hooks_are_implemented);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_Non_thread_safe_operation);
+  Py_CLEAR(clear_module_state->__pyx_n_s_None);
+  Py_CLEAR(clear_module_state->__pyx_n_s_NotImplementedError);
+  Py_CLEAR(clear_module_state->__pyx_n_s_OK_CALL_REPRESENTATION);
+  Py_CLEAR(clear_module_state->__pyx_n_s_Operation);
+  Py_CLEAR(clear_module_state->__pyx_n_s_OperationType);
+  Py_CLEAR(clear_module_state->__pyx_n_s_Operation___reduce_cython);
+  Py_CLEAR(clear_module_state->__pyx_n_s_Operation___setstate_cython);
+  Py_CLEAR(clear_module_state->__pyx_n_s_Optional);
+  Py_CLEAR(clear_module_state->__pyx_n_s_POLLER);
+  Py_CLEAR(clear_module_state->__pyx_n_s_PickleError);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_Please_report_to_https_github_co);
+  Py_CLEAR(clear_module_state->__pyx_n_s_PollerCompletionQueue);
+  Py_CLEAR(clear_module_state->__pyx_n_s_PollerCompletionQueue___reduce_c);
+  Py_CLEAR(clear_module_state->__pyx_n_s_PollerCompletionQueue___setstate);
+  Py_CLEAR(clear_module_state->__pyx_n_s_PollerCompletionQueue__handle_ev);
+  Py_CLEAR(clear_module_state->__pyx_n_s_PollerCompletionQueue__poll_wrap);
+  Py_CLEAR(clear_module_state->__pyx_n_s_PollerCompletionQueue_bind_loop);
+  Py_CLEAR(clear_module_state->__pyx_n_s_PropagationConstants);
+  Py_CLEAR(clear_module_state->__pyx_n_s_Pyx_CFunc_7_cython_6cygrpc_obj);
+  Py_CLEAR(clear_module_state->__pyx_n_s_Pyx_CFunc_7_cython_6cygrpc_obj_2);
+  Py_CLEAR(clear_module_state->__pyx_n_s_Pyx_CFunc_7_cython_6cygrpc_obj_3);
+  Py_CLEAR(clear_module_state->__pyx_n_s_Pyx_CFunc_7_cython_6cygrpc_voi);
+  Py_CLEAR(clear_module_state->__pyx_n_s_Queue);
+  Py_CLEAR(clear_module_state->__pyx_n_s_RLock);
+  Py_CLEAR(clear_module_state->__pyx_n_s_RPCState);
+  Py_CLEAR(clear_module_state->__pyx_n_s_RPCState___reduce_cython);
+  Py_CLEAR(clear_module_state->__pyx_n_s_RPCState___setstate_cython);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_RPC_already_finished);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_RPC_cancelled_for_servicer_metho);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_RPC_cancelled_for_unknown_reason);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_Raised_if_the_server_is_stopped);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_Raised_upon_unexpected_errors_in);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_Raised_when_calling_abort_in_ser);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_Raised_when_execute_batch_return);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_Raised_when_the_usage_of_API_by);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ReceiveCloseOnServerOperation);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ReceiveCloseOnServerOperation_2);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ReceiveCloseOnServerOperation_3);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ReceiveCloseOnServerOperation_ca);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ReceiveCloseOnServerOperation_ty);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ReceiveInitialMetadataOperation);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ReceiveInitialMetadataOperation_2);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ReceiveInitialMetadataOperation_3);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ReceiveInitialMetadataOperation_4);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ReceiveInitialMetadataOperation_5);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ReceiveMessageOperation);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ReceiveMessageOperation___reduce);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ReceiveMessageOperation___setsta);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ReceiveMessageOperation_message);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ReceiveMessageOperation_type);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ReceiveStatusOnClientOperation);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ReceiveStatusOnClientOperation_2);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ReceiveStatusOnClientOperation_3);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ReceiveStatusOnClientOperation_c);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ReceiveStatusOnClientOperation_d);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ReceiveStatusOnClientOperation_e);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ReceiveStatusOnClientOperation_t);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ReceiveStatusOnClientOperation_t_2);
+  Py_CLEAR(clear_module_state->__pyx_n_s_RequestCallError);
+  Py_CLEAR(clear_module_state->__pyx_n_s_RequestCallEvent);
+  Py_CLEAR(clear_module_state->__pyx_n_s_RequestCallEvent___reduce_cython);
+  Py_CLEAR(clear_module_state->__pyx_n_s_RequestCallEvent___setstate_cyth);
+  Py_CLEAR(clear_module_state->__pyx_n_s_RequestCallTag);
+  Py_CLEAR(clear_module_state->__pyx_n_s_RequestCallTag___reduce_cython);
+  Py_CLEAR(clear_module_state->__pyx_n_s_RequestCallTag___setstate_cytho);
+  Py_CLEAR(clear_module_state->__pyx_n_s_RuntimeError);
+  Py_CLEAR(clear_module_state->__pyx_n_s_SERVICES_TO_EXCLUDE);
+  Py_CLEAR(clear_module_state->__pyx_n_s_SSLChannelCredentials);
+  Py_CLEAR(clear_module_state->__pyx_n_s_SSLChannelCredentials___reduce_c);
+  Py_CLEAR(clear_module_state->__pyx_n_s_SSLChannelCredentials___setstate);
+  Py_CLEAR(clear_module_state->__pyx_n_s_SSLSessionCacheLRU);
+  Py_CLEAR(clear_module_state->__pyx_n_s_SSLSessionCacheLRU___reduce_cyth);
+  Py_CLEAR(clear_module_state->__pyx_n_s_SSLSessionCacheLRU___setstate_cy);
+  Py_CLEAR(clear_module_state->__pyx_n_s_SegregatedCall);
+  Py_CLEAR(clear_module_state->__pyx_n_s_SegregatedCall___reduce_cython);
+  Py_CLEAR(clear_module_state->__pyx_n_s_SegregatedCall___setstate_cython);
+  Py_CLEAR(clear_module_state->__pyx_n_s_SegregatedCall_cancel);
+  Py_CLEAR(clear_module_state->__pyx_n_s_SegregatedCall_next_event);
+  Py_CLEAR(clear_module_state->__pyx_n_s_SegregatedCall_operate);
+  Py_CLEAR(clear_module_state->__pyx_n_s_SendCloseFromClientOperation);
+  Py_CLEAR(clear_module_state->__pyx_n_s_SendCloseFromClientOperation___r);
+  Py_CLEAR(clear_module_state->__pyx_n_s_SendCloseFromClientOperation___s);
+  Py_CLEAR(clear_module_state->__pyx_n_s_SendCloseFromClientOperation_typ);
+  Py_CLEAR(clear_module_state->__pyx_n_s_SendInitialMetadataOperation);
+  Py_CLEAR(clear_module_state->__pyx_n_s_SendInitialMetadataOperation___r);
+  Py_CLEAR(clear_module_state->__pyx_n_s_SendInitialMetadataOperation___s);
+  Py_CLEAR(clear_module_state->__pyx_n_s_SendInitialMetadataOperation_typ);
+  Py_CLEAR(clear_module_state->__pyx_n_s_SendMessageOperation);
+  Py_CLEAR(clear_module_state->__pyx_n_s_SendMessageOperation___reduce_cy);
+  Py_CLEAR(clear_module_state->__pyx_n_s_SendMessageOperation___setstate);
+  Py_CLEAR(clear_module_state->__pyx_n_s_SendMessageOperation_type);
+  Py_CLEAR(clear_module_state->__pyx_n_s_SendStatusFromServerOperation);
+  Py_CLEAR(clear_module_state->__pyx_n_s_SendStatusFromServerOperation_2);
+  Py_CLEAR(clear_module_state->__pyx_n_s_SendStatusFromServerOperation_3);
+  Py_CLEAR(clear_module_state->__pyx_n_s_SendStatusFromServerOperation_ty);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_Send_initial_metadata_failed_alr);
+  Py_CLEAR(clear_module_state->__pyx_n_s_Server);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ServerCertificateConfig);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ServerCertificateConfig___reduce);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ServerCertificateConfig___setsta);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ServerCertificateConfiguration);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ServerCredentials);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ServerCredentials___reduce_cytho);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ServerCredentials___setstate_cyt);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ServerShutdownEvent);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ServerShutdownEvent___reduce_cyt);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ServerShutdownEvent___setstate_c);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ServerShutdownTag);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ServerShutdownTag___reduce_cyth);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ServerShutdownTag___setstate_cy);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ServerStoppedError);
+  Py_CLEAR(clear_module_state->__pyx_n_s_Server___reduce_cython);
+  Py_CLEAR(clear_module_state->__pyx_n_s_Server___setstate_cython);
+  Py_CLEAR(clear_module_state->__pyx_n_s_Server_add_http2_port);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_Server_already_stopped);
+  Py_CLEAR(clear_module_state->__pyx_n_s_Server_cancel_all_calls);
+  Py_CLEAR(clear_module_state->__pyx_n_s_Server_destroy);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_Server_not_in_ready_state);
+  Py_CLEAR(clear_module_state->__pyx_n_s_Server_register_completion_queue);
+  Py_CLEAR(clear_module_state->__pyx_n_s_Server_request_call);
+  Py_CLEAR(clear_module_state->__pyx_n_s_Server_shutdown);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_Server_shutdown_failed_no_comple);
+  Py_CLEAR(clear_module_state->__pyx_n_s_Server_start);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ServicerContext);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ServicerContext___reduce_cython);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ServicerContext___setstate_cyth);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ServicerContext_abort);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ServicerContext_abort_with_stat);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ServicerContext_add_done_callba);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ServicerContext_auth_context);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ServicerContext_cancelled);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ServicerContext_code);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ServicerContext_details);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ServicerContext_disable_next_me);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ServicerContext_done);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ServicerContext_invocation_meta);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ServicerContext_peer);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ServicerContext_peer_identities);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ServicerContext_peer_identity_k);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ServicerContext_read);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ServicerContext_send_initial_me);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ServicerContext_set_code);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ServicerContext_set_compression);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ServicerContext_set_details);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ServicerContext_set_trailing_me);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ServicerContext_time_remaining);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ServicerContext_trailing_metada);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ServicerContext_write);
+  Py_CLEAR(clear_module_state->__pyx_n_s_SslPemKeyCertPair);
+  Py_CLEAR(clear_module_state->__pyx_n_s_SslPemKeyCertPair___reduce_cytho);
+  Py_CLEAR(clear_module_state->__pyx_n_s_SslPemKeyCertPair___setstate_cyt);
+  Py_CLEAR(clear_module_state->__pyx_n_s_StatusCode);
+  Py_CLEAR(clear_module_state->__pyx_n_s_SyncServicerContext);
+  Py_CLEAR(clear_module_state->__pyx_n_s_SyncServicerContext___reduce_cy);
+  Py_CLEAR(clear_module_state->__pyx_n_s_SyncServicerContext___setstate);
+  Py_CLEAR(clear_module_state->__pyx_n_s_SyncServicerContext_abort);
+  Py_CLEAR(clear_module_state->__pyx_n_s_SyncServicerContext_add_callbac);
+  Py_CLEAR(clear_module_state->__pyx_n_s_SyncServicerContext_auth_contex);
+  Py_CLEAR(clear_module_state->__pyx_n_s_SyncServicerContext_disable_nex);
+  Py_CLEAR(clear_module_state->__pyx_n_s_SyncServicerContext_invocation);
+  Py_CLEAR(clear_module_state->__pyx_n_s_SyncServicerContext_peer);
+  Py_CLEAR(clear_module_state->__pyx_n_s_SyncServicerContext_peer_identi);
+  Py_CLEAR(clear_module_state->__pyx_n_s_SyncServicerContext_peer_identi_2);
+  Py_CLEAR(clear_module_state->__pyx_n_s_SyncServicerContext_send_initia);
+  Py_CLEAR(clear_module_state->__pyx_n_s_SyncServicerContext_set_code);
+  Py_CLEAR(clear_module_state->__pyx_n_s_SyncServicerContext_set_compres);
+  Py_CLEAR(clear_module_state->__pyx_n_s_SyncServicerContext_set_details);
+  Py_CLEAR(clear_module_state->__pyx_n_s_SyncServicerContext_set_trailin);
+  Py_CLEAR(clear_module_state->__pyx_n_s_SyncServicerContext_time_remain);
+  Py_CLEAR(clear_module_state->__pyx_n_s_SystemExit);
+  Py_CLEAR(clear_module_state->__pyx_n_s_TRUE);
+  Py_CLEAR(clear_module_state->__pyx_n_s_TRUE_VALUES);
+  Py_CLEAR(clear_module_state->__pyx_n_s_TYPE_METADATA_STRING);
+  Py_CLEAR(clear_module_state->__pyx_n_s_Tag);
+  Py_CLEAR(clear_module_state->__pyx_n_s_Tag___reduce_cython);
+  Py_CLEAR(clear_module_state->__pyx_n_s_Tag___setstate_cython);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_The_base_class_for_exceptions_ge);
+  Py_CLEAR(clear_module_state->__pyx_n_s_Thread);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_Timed_out);
+  Py_CLEAR(clear_module_state->__pyx_n_s_TimeoutError);
+  Py_CLEAR(clear_module_state->__pyx_n_s_True);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_Tuple_Tuple_str_Union_str_bytes);
+  Py_CLEAR(clear_module_state->__pyx_n_s_TypeError);
+  Py_CLEAR(clear_module_state->__pyx_n_s_UNKNOWN_CANCELLATION_DETAILS);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_Unexpected_s_raised_by_servicer);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_Unexpected_s_s);
+  Py_CLEAR(clear_module_state->__pyx_n_s_UnicodeDecodeError);
+  Py_CLEAR(clear_module_state->__pyx_n_s_Unknown);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_Unsupported_engine_type_s);
+  Py_CLEAR(clear_module_state->__pyx_n_s_UsageError);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_Using_s_as_I_O_engine);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ValueError);
+  Py_CLEAR(clear_module_state->__pyx_n_s_WatchConnectivityFailed);
+  Py_CLEAR(clear_module_state->__pyx_n_s_WriteFlag);
+  Py_CLEAR(clear_module_state->__pyx_n_s_XDSChannelCredentials);
+  Py_CLEAR(clear_module_state->__pyx_n_s_XDSChannelCredentials___reduce_c);
+  Py_CLEAR(clear_module_state->__pyx_n_s_XDSChannelCredentials___setstate);
+  Py_CLEAR(clear_module_state->__pyx_n_s_YES);
+  Py_CLEAR(clear_module_state->__pyx_n_s_Yes);
+  Py_CLEAR(clear_module_state->__pyx_n_s__107);
+  Py_CLEAR(clear_module_state->__pyx_n_s__38);
+  Py_CLEAR(clear_module_state->__pyx_kp_u__49);
+  Py_CLEAR(clear_module_state->__pyx_n_s__57);
+  Py_CLEAR(clear_module_state->__pyx_kp_u__58);
+  Py_CLEAR(clear_module_state->__pyx_kp_u__69);
+  Py_CLEAR(clear_module_state->__pyx_kp_b__7);
+  Py_CLEAR(clear_module_state->__pyx_kp_s__7);
+  Py_CLEAR(clear_module_state->__pyx_kp_u__70);
+  Py_CLEAR(clear_module_state->__pyx_kp_u__71);
+  Py_CLEAR(clear_module_state->__pyx_n_s_abort);
+  Py_CLEAR(clear_module_state->__pyx_n_s_abort_with_status);
+  Py_CLEAR(clear_module_state->__pyx_n_s_aborted);
+  Py_CLEAR(clear_module_state->__pyx_n_s_active_thread_count);
+  Py_CLEAR(clear_module_state->__pyx_n_s_actual_code);
+  Py_CLEAR(clear_module_state->__pyx_n_s_add);
+  Py_CLEAR(clear_module_state->__pyx_n_s_add_callback);
+  Py_CLEAR(clear_module_state->__pyx_n_s_add_callback_handler_locals_han);
+  Py_CLEAR(clear_module_state->__pyx_n_s_add_done_callback);
+  Py_CLEAR(clear_module_state->__pyx_n_s_add_generic_rpc_handlers);
+  Py_CLEAR(clear_module_state->__pyx_n_s_add_http2_port);
+  Py_CLEAR(clear_module_state->__pyx_n_s_add_insecure_port);
+  Py_CLEAR(clear_module_state->__pyx_n_s_add_reader);
+  Py_CLEAR(clear_module_state->__pyx_n_s_add_secure_port);
+  Py_CLEAR(clear_module_state->__pyx_n_s_address);
+  Py_CLEAR(clear_module_state->__pyx_n_s_address_c_string);
+  Py_CLEAR(clear_module_state->__pyx_n_s_aenter);
+  Py_CLEAR(clear_module_state->__pyx_n_s_aexit);
+  Py_CLEAR(clear_module_state->__pyx_n_s_after_in_child);
+  Py_CLEAR(clear_module_state->__pyx_n_s_after_in_parent);
+  Py_CLEAR(clear_module_state->__pyx_n_s_agen);
+  Py_CLEAR(clear_module_state->__pyx_n_s_aiter);
+  Py_CLEAR(clear_module_state->__pyx_n_s_algorithm);
+  Py_CLEAR(clear_module_state->__pyx_n_s_already_accepted);
+  Py_CLEAR(clear_module_state->__pyx_n_s_already_exists);
+  Py_CLEAR(clear_module_state->__pyx_n_s_already_finished);
+  Py_CLEAR(clear_module_state->__pyx_n_s_already_invoked);
+  Py_CLEAR(clear_module_state->__pyx_n_s_anext);
+  Py_CLEAR(clear_module_state->__pyx_n_s_append);
+  Py_CLEAR(clear_module_state->__pyx_n_s_apply);
+  Py_CLEAR(clear_module_state->__pyx_n_s_args);
+  Py_CLEAR(clear_module_state->__pyx_n_s_arguments);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ascii);
+  Py_CLEAR(clear_module_state->__pyx_n_s_async_callback_func);
+  Py_CLEAR(clear_module_state->__pyx_n_s_async_generator_to_generator);
+  Py_CLEAR(clear_module_state->__pyx_n_s_async_message_receiver);
+  Py_CLEAR(clear_module_state->__pyx_n_s_async_response_generator);
+  Py_CLEAR(clear_module_state->__pyx_n_s_asyncio);
+  Py_CLEAR(clear_module_state->__pyx_n_s_asyncio_coroutines);
+  Py_CLEAR(clear_module_state->__pyx_n_s_asyncio_tasks);
+  Py_CLEAR(clear_module_state->__pyx_n_s_atexit);
+  Py_CLEAR(clear_module_state->__pyx_n_s_auth_context);
+  Py_CLEAR(clear_module_state->__pyx_n_s_await);
+  Py_CLEAR(clear_module_state->__pyx_n_s_await_zero_threads);
+  Py_CLEAR(clear_module_state->__pyx_n_s_backup_queue);
+  Py_CLEAR(clear_module_state->__pyx_n_s_batch_error);
+  Py_CLEAR(clear_module_state->__pyx_n_s_batch_operation_tag);
+  Py_CLEAR(clear_module_state->__pyx_n_s_batch_operations);
+  Py_CLEAR(clear_module_state->__pyx_n_s_before);
+  Py_CLEAR(clear_module_state->__pyx_kp_b_bin);
+  Py_CLEAR(clear_module_state->__pyx_n_s_bind_loop);
+  Py_CLEAR(clear_module_state->__pyx_n_s_block_if_fork_in_progress);
+  Py_CLEAR(clear_module_state->__pyx_n_s_bool);
+  Py_CLEAR(clear_module_state->__pyx_n_s_buffer_hint);
+  Py_CLEAR(clear_module_state->__pyx_n_s_build_census_context);
+  Py_CLEAR(clear_module_state->__pyx_n_s_bytes_ctx);
+  Py_CLEAR(clear_module_state->__pyx_n_s_c_call_credentials);
+  Py_CLEAR(clear_module_state->__pyx_n_s_c_cert_config);
+  Py_CLEAR(clear_module_state->__pyx_n_s_c_deadline);
+  Py_CLEAR(clear_module_state->__pyx_n_s_c_details);
+  Py_CLEAR(clear_module_state->__pyx_n_s_c_error_details);
+  Py_CLEAR(clear_module_state->__pyx_n_s_c_event);
+  Py_CLEAR(clear_module_state->__pyx_n_s_c_key);
+  Py_CLEAR(clear_module_state->__pyx_n_s_c_options);
+  Py_CLEAR(clear_module_state->__pyx_n_s_c_peer);
+  Py_CLEAR(clear_module_state->__pyx_n_s_c_pem_root_certs);
+  Py_CLEAR(clear_module_state->__pyx_n_s_c_returned_str);
+  Py_CLEAR(clear_module_state->__pyx_n_s_c_target);
+  Py_CLEAR(clear_module_state->__pyx_n_s_call);
+  Py_CLEAR(clear_module_state->__pyx_n_s_call_credentials);
+  Py_CLEAR(clear_module_state->__pyx_n_s_call_credentialses);
+  Py_CLEAR(clear_module_state->__pyx_n_s_call_creds);
+  Py_CLEAR(clear_module_state->__pyx_n_s_call_details);
+  Py_CLEAR(clear_module_state->__pyx_n_s_call_error);
+  Py_CLEAR(clear_module_state->__pyx_n_s_call_handle);
+  Py_CLEAR(clear_module_state->__pyx_n_s_call_queue);
+  Py_CLEAR(clear_module_state->__pyx_n_s_call_soon_threadsafe);
+  Py_CLEAR(clear_module_state->__pyx_n_s_call_state);
+  Py_CLEAR(clear_module_state->__pyx_n_s_callback);
+  Py_CLEAR(clear_module_state->__pyx_n_s_callback_func);
+  Py_CLEAR(clear_module_state->__pyx_n_s_callback_wrapper);
+  Py_CLEAR(clear_module_state->__pyx_n_s_cancel);
+  Py_CLEAR(clear_module_state->__pyx_n_s_cancel_all_calls);
+  Py_CLEAR(clear_module_state->__pyx_n_s_cancelled);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_cannot_register_completion_queue);
+  Py_CLEAR(clear_module_state->__pyx_n_s_capacity);
+  Py_CLEAR(clear_module_state->__pyx_n_s_capsule);
+  Py_CLEAR(clear_module_state->__pyx_n_s_capsule_ptr);
+  Py_CLEAR(clear_module_state->__pyx_n_s_catch_warnings);
+  Py_CLEAR(clear_module_state->__pyx_n_s_cb);
+  Py_CLEAR(clear_module_state->__pyx_n_s_cb_func);
+  Py_CLEAR(clear_module_state->__pyx_n_s_census_ctx);
+  Py_CLEAR(clear_module_state->__pyx_n_s_cert_config);
+  Py_CLEAR(clear_module_state->__pyx_n_s_cert_config_fetcher);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_cert_config_fetcher_must_be_call);
+  Py_CLEAR(clear_module_state->__pyx_n_s_certificate_chain);
+  Py_CLEAR(clear_module_state->__pyx_n_s_certificate_configuration);
+  Py_CLEAR(clear_module_state->__pyx_n_s_cfunc_to_py);
+  Py_CLEAR(clear_module_state->__pyx_n_s_channel);
+  Py_CLEAR(clear_module_state->__pyx_n_s_channel_credentials);
+  Py_CLEAR(clear_module_state->__pyx_n_s_channel_credentials_alts);
+  Py_CLEAR(clear_module_state->__pyx_n_s_channel_credentials_compute_engi);
+  Py_CLEAR(clear_module_state->__pyx_n_s_channel_credentials_insecure);
+  Py_CLEAR(clear_module_state->__pyx_n_s_channel_credentials_local);
+  Py_CLEAR(clear_module_state->__pyx_n_s_channel_id);
+  Py_CLEAR(clear_module_state->__pyx_n_s_channel_state);
+  Py_CLEAR(clear_module_state->__pyx_n_s_channels);
+  Py_CLEAR(clear_module_state->__pyx_n_s_channelz_get_channel);
+  Py_CLEAR(clear_module_state->__pyx_n_s_channelz_get_server);
+  Py_CLEAR(clear_module_state->__pyx_n_s_channelz_get_server_sockets);
+  Py_CLEAR(clear_module_state->__pyx_n_s_channelz_get_servers);
+  Py_CLEAR(clear_module_state->__pyx_n_s_channelz_get_socket);
+  Py_CLEAR(clear_module_state->__pyx_n_s_channelz_get_subchannel);
+  Py_CLEAR(clear_module_state->__pyx_n_s_channelz_get_top_channels);
+  Py_CLEAR(clear_module_state->__pyx_n_s_check_before_request_call);
+  Py_CLEAR(clear_module_state->__pyx_n_s_check_connectivity_state);
+  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_s_clear);
+  Py_CLEAR(clear_module_state->__pyx_n_s_clear_server_call_tracer_factory);
+  Py_CLEAR(clear_module_state->__pyx_n_s_client_config_in_slice);
+  Py_CLEAR(clear_module_state->__pyx_n_s_cline_in_traceback);
+  Py_CLEAR(clear_module_state->__pyx_n_s_close);
+  Py_CLEAR(clear_module_state->__pyx_n_s_close_on_fork);
+  Py_CLEAR(clear_module_state->__pyx_n_s_close_on_fork_2);
+  Py_CLEAR(clear_module_state->__pyx_n_s_closed);
+  Py_CLEAR(clear_module_state->__pyx_n_s_closing);
+  Py_CLEAR(clear_module_state->__pyx_n_s_code);
+  Py_CLEAR(clear_module_state->__pyx_n_s_codecs);
+  Py_CLEAR(clear_module_state->__pyx_n_s_collections);
+  Py_CLEAR(clear_module_state->__pyx_n_s_common);
+  Py_CLEAR(clear_module_state->__pyx_n_s_completion_type);
+  Py_CLEAR(clear_module_state->__pyx_n_s_compression);
+  Py_CLEAR(clear_module_state->__pyx_n_s_compression_algorithm_name);
+  Py_CLEAR(clear_module_state->__pyx_n_s_concurrency_exceeded);
+  Py_CLEAR(clear_module_state->__pyx_n_s_condition);
+  Py_CLEAR(clear_module_state->__pyx_n_s_connecting);
+  Py_CLEAR(clear_module_state->__pyx_n_s_context);
+  Py_CLEAR(clear_module_state->__pyx_n_s_context_loop);
+  Py_CLEAR(clear_module_state->__pyx_n_s_contextvars);
+  Py_CLEAR(clear_module_state->__pyx_n_s_contextvars_supported);
+  Py_CLEAR(clear_module_state->__pyx_n_s_continuation);
+  Py_CLEAR(clear_module_state->__pyx_n_s_copy);
+  Py_CLEAR(clear_module_state->__pyx_n_s_copy_context);
+  Py_CLEAR(clear_module_state->__pyx_n_s_core_function_name);
+  Py_CLEAR(clear_module_state->__pyx_n_s_coro);
+  Py_CLEAR(clear_module_state->__pyx_n_s_create_client_call_tracer);
+  Py_CLEAR(clear_module_state->__pyx_n_s_create_future);
+  Py_CLEAR(clear_module_state->__pyx_n_s_create_server_call_tracer_factor);
+  Py_CLEAR(clear_module_state->__pyx_n_s_create_task);
+  Py_CLEAR(clear_module_state->__pyx_n_s_credentials);
+  Py_CLEAR(clear_module_state->__pyx_n_s_credentials_2);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_credentials_roots_pem);
+  Py_CLEAR(clear_module_state->__pyx_n_s_creds);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ctx);
+  Py_CLEAR(clear_module_state->__pyx_n_s_custom_io_manager);
+  Py_CLEAR(clear_module_state->__pyx_n_s_custom_op_on_c_call);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_cygrpc);
+  Py_CLEAR(clear_module_state->__pyx_n_s_cython_call_credentials);
+  Py_CLEAR(clear_module_state->__pyx_n_s_cython_cygrpc);
+  Py_CLEAR(clear_module_state->__pyx_n_s_daemon);
+  Py_CLEAR(clear_module_state->__pyx_n_s_daemonic);
+  Py_CLEAR(clear_module_state->__pyx_n_s_data);
+  Py_CLEAR(clear_module_state->__pyx_n_s_data_loss);
+  Py_CLEAR(clear_module_state->__pyx_n_s_deadline);
+  Py_CLEAR(clear_module_state->__pyx_n_s_deadline_exceeded);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_dealloc___called_on_running_se);
+  Py_CLEAR(clear_module_state->__pyx_n_s_debug);
+  Py_CLEAR(clear_module_state->__pyx_n_s_debug_error_string);
+  Py_CLEAR(clear_module_state->__pyx_n_s_decode);
+  Py_CLEAR(clear_module_state->__pyx_n_s_decrease_active_rpcs_count);
+  Py_CLEAR(clear_module_state->__pyx_n_s_decrease_once_finished);
+  Py_CLEAR(clear_module_state->__pyx_n_s_decrement);
+  Py_CLEAR(clear_module_state->__pyx_n_s_default_authority);
+  Py_CLEAR(clear_module_state->__pyx_n_s_default_vtable);
+  Py_CLEAR(clear_module_state->__pyx_n_s_deflate);
+  Py_CLEAR(clear_module_state->__pyx_n_s_delete_call_tracer);
+  Py_CLEAR(clear_module_state->__pyx_n_s_destroy);
+  Py_CLEAR(clear_module_state->__pyx_n_s_details);
+  Py_CLEAR(clear_module_state->__pyx_n_s_details_bytes);
+  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_kp_u_disable);
+  Py_CLEAR(clear_module_state->__pyx_n_s_disable_algorithm);
+  Py_CLEAR(clear_module_state->__pyx_n_s_disable_next_message_compression);
+  Py_CLEAR(clear_module_state->__pyx_n_s_discard);
+  Py_CLEAR(clear_module_state->__pyx_n_s_doc);
+  Py_CLEAR(clear_module_state->__pyx_n_s_done);
+  Py_CLEAR(clear_module_state->__pyx_n_s_dump_xds_configs);
+  Py_CLEAR(clear_module_state->__pyx_n_s_e);
+  Py_CLEAR(clear_module_state->__pyx_kp_u_enable);
+  Py_CLEAR(clear_module_state->__pyx_n_s_enable_algorithm);
+  Py_CLEAR(clear_module_state->__pyx_n_s_enable_census);
+  Py_CLEAR(clear_module_state->__pyx_n_s_encode);
+  Py_CLEAR(clear_module_state->__pyx_n_s_end_time);
+  Py_CLEAR(clear_module_state->__pyx_n_s_endswith);
+  Py_CLEAR(clear_module_state->__pyx_n_s_enter);
+  Py_CLEAR(clear_module_state->__pyx_n_s_enter_user_request_generator);
+  Py_CLEAR(clear_module_state->__pyx_n_s_enum);
+  Py_CLEAR(clear_module_state->__pyx_n_s_enumerate);
+  Py_CLEAR(clear_module_state->__pyx_n_s_environ);
+  Py_CLEAR(clear_module_state->__pyx_n_s_errno);
+  Py_CLEAR(clear_module_state->__pyx_n_s_error);
+  Py_CLEAR(clear_module_state->__pyx_n_s_error_code);
+  Py_CLEAR(clear_module_state->__pyx_n_s_error_details);
+  Py_CLEAR(clear_module_state->__pyx_n_s_error_str);
+  Py_CLEAR(clear_module_state->__pyx_n_s_error_string);
+  Py_CLEAR(clear_module_state->__pyx_n_s_event);
+  Py_CLEAR(clear_module_state->__pyx_n_s_exc_info);
+  Py_CLEAR(clear_module_state->__pyx_n_s_exception);
+  Py_CLEAR(clear_module_state->__pyx_n_s_exception_type);
+  Py_CLEAR(clear_module_state->__pyx_n_s_execute_batch);
+  Py_CLEAR(clear_module_state->__pyx_n_s_exit);
+  Py_CLEAR(clear_module_state->__pyx_n_s_exit_2);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_expected_certificate_to_be_bytes);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_expected_pem_key_cert_pairs_to_b);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_expected_registered_completion_q);
+  Py_CLEAR(clear_module_state->__pyx_n_s_failed_precondition);
+  Py_CLEAR(clear_module_state->__pyx_n_s_failure_handler);
+  Py_CLEAR(clear_module_state->__pyx_n_s_fallback_credentials);
+  Py_CLEAR(clear_module_state->__pyx_n_s_fileno);
+  Py_CLEAR(clear_module_state->__pyx_n_s_find_method_handler);
+  Py_CLEAR(clear_module_state->__pyx_n_s_find_method_handler_locals_quer);
+  Py_CLEAR(clear_module_state->__pyx_n_s_finish_handler_with_stream_resp);
+  Py_CLEAR(clear_module_state->__pyx_n_s_finish_handler_with_unary_respo);
+  Py_CLEAR(clear_module_state->__pyx_n_s_finish_ops);
+  Py_CLEAR(clear_module_state->__pyx_n_s_flags);
+  Py_CLEAR(clear_module_state->__pyx_n_s_fn);
+  Py_CLEAR(clear_module_state->__pyx_n_s_force_client_auth);
+  Py_CLEAR(clear_module_state->__pyx_n_s_fork_epoch);
+  Py_CLEAR(clear_module_state->__pyx_n_s_fork_handler_failed);
+  Py_CLEAR(clear_module_state->__pyx_n_s_fork_handler_registered);
+  Py_CLEAR(clear_module_state->__pyx_n_s_fork_handler_registered_lock);
+  Py_CLEAR(clear_module_state->__pyx_n_s_fork_handlers_and_grpc_init);
+  Py_CLEAR(clear_module_state->__pyx_n_s_fork_in_progress);
+  Py_CLEAR(clear_module_state->__pyx_n_s_fork_in_progress_condition);
+  Py_CLEAR(clear_module_state->__pyx_n_s_fork_register_channel);
+  Py_CLEAR(clear_module_state->__pyx_n_s_fork_state);
+  Py_CLEAR(clear_module_state->__pyx_n_s_fork_unregister_channel);
+  Py_CLEAR(clear_module_state->__pyx_n_s_format);
+  Py_CLEAR(clear_module_state->__pyx_n_s_format_exception);
+  Py_CLEAR(clear_module_state->__pyx_n_s_functools);
+  Py_CLEAR(clear_module_state->__pyx_n_s_future);
+  Py_CLEAR(clear_module_state->__pyx_n_s_g_gevent_activated);
+  Py_CLEAR(clear_module_state->__pyx_n_s_g_gevent_pool);
+  Py_CLEAR(clear_module_state->__pyx_n_s_g_gevent_threadpool);
+  Py_CLEAR(clear_module_state->__pyx_n_s_g_interrupt_check_period_ms);
+  Py_CLEAR(clear_module_state->__pyx_kp_u_gc);
+  Py_CLEAR(clear_module_state->__pyx_n_s_gen);
+  Py_CLEAR(clear_module_state->__pyx_n_s_generator_to_async_generator);
+  Py_CLEAR(clear_module_state->__pyx_n_s_generator_to_async_generator_loc);
+  Py_CLEAR(clear_module_state->__pyx_n_s_generic_handler);
+  Py_CLEAR(clear_module_state->__pyx_n_s_generic_handlers);
+  Py_CLEAR(clear_module_state->__pyx_n_s_generic_rpc_handlers);
+  Py_CLEAR(clear_module_state->__pyx_n_s_genexpr);
+  Py_CLEAR(clear_module_state->__pyx_n_s_get);
+  Py_CLEAR(clear_module_state->__pyx_n_s_getLogger);
+  Py_CLEAR(clear_module_state->__pyx_n_s_get_data);
+  Py_CLEAR(clear_module_state->__pyx_n_s_get_deadline_from_context);
+  Py_CLEAR(clear_module_state->__pyx_n_s_get_event_loop);
+  Py_CLEAR(clear_module_state->__pyx_n_s_get_event_loop_policy);
+  Py_CLEAR(clear_module_state->__pyx_n_s_get_fork_epoch);
+  Py_CLEAR(clear_module_state->__pyx_n_s_get_hub);
+  Py_CLEAR(clear_module_state->__pyx_n_s_get_metadata_locals_callback);
+  Py_CLEAR(clear_module_state->__pyx_n_s_get_plugin);
+  Py_CLEAR(clear_module_state->__pyx_n_s_get_registered_call_handle);
+  Py_CLEAR(clear_module_state->__pyx_n_s_get_running_loop);
+  Py_CLEAR(clear_module_state->__pyx_n_s_get_working_loop);
+  Py_CLEAR(clear_module_state->__pyx_n_s_getstate);
+  Py_CLEAR(clear_module_state->__pyx_n_s_gevent);
+  Py_CLEAR(clear_module_state->__pyx_n_s_gevent_decrement_channel_count);
+  Py_CLEAR(clear_module_state->__pyx_n_s_gevent_hub);
+  Py_CLEAR(clear_module_state->__pyx_n_s_gevent_increment_channel_count);
+  Py_CLEAR(clear_module_state->__pyx_n_s_gevent_pool);
+  Py_CLEAR(clear_module_state->__pyx_n_s_grace);
+  Py_CLEAR(clear_module_state->__pyx_n_s_grpc);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_grpc_aio_EOF);
+  Py_CLEAR(clear_module_state->__pyx_n_s_grpc_call_error_string);
+  Py_CLEAR(clear_module_state->__pyx_n_s_grpc_call_wrapper);
+  Py_CLEAR(clear_module_state->__pyx_n_s_grpc_completion_queue_shutdown);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_grpc_python__cygrpc__GrpcArgWrap);
+  Py_CLEAR(clear_module_state->__pyx_n_s_grpc_server_request_call);
+  Py_CLEAR(clear_module_state->__pyx_n_s_grpc_server_shutdown_and_notify);
+  Py_CLEAR(clear_module_state->__pyx_n_s_grpc_shutdown_wrapper);
+  Py_CLEAR(clear_module_state->__pyx_n_s_gzip);
+  Py_CLEAR(clear_module_state->__pyx_n_s_handle_callback_wrapper);
+  Py_CLEAR(clear_module_state->__pyx_n_s_handle_callbacks);
+  Py_CLEAR(clear_module_state->__pyx_n_s_handle_cancellation_from_core);
+  Py_CLEAR(clear_module_state->__pyx_n_s_handle_events);
+  Py_CLEAR(clear_module_state->__pyx_n_s_handle_exceptions);
+  Py_CLEAR(clear_module_state->__pyx_n_s_handle_rpc);
+  Py_CLEAR(clear_module_state->__pyx_n_s_handle_status_once_received);
+  Py_CLEAR(clear_module_state->__pyx_n_s_handle_stream_stream_rpc);
+  Py_CLEAR(clear_module_state->__pyx_n_s_handle_stream_unary_rpc);
+  Py_CLEAR(clear_module_state->__pyx_n_s_handle_unary_stream_rpc);
+  Py_CLEAR(clear_module_state->__pyx_n_s_handle_unary_unary_rpc);
+  Py_CLEAR(clear_module_state->__pyx_n_s_handler);
+  Py_CLEAR(clear_module_state->__pyx_n_s_handler_call_details);
+  Py_CLEAR(clear_module_state->__pyx_n_s_hex_codec);
+  Py_CLEAR(clear_module_state->__pyx_n_s_high);
+  Py_CLEAR(clear_module_state->__pyx_n_s_host);
+  Py_CLEAR(clear_module_state->__pyx_n_s_http2_initial_sequence_number);
+  Py_CLEAR(clear_module_state->__pyx_n_s_hub);
+  Py_CLEAR(clear_module_state->__pyx_n_s_id);
+  Py_CLEAR(clear_module_state->__pyx_n_s_identities);
+  Py_CLEAR(clear_module_state->__pyx_n_s_identity);
+  Py_CLEAR(clear_module_state->__pyx_n_s_identity_key);
+  Py_CLEAR(clear_module_state->__pyx_n_s_idle);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_if_error_code_is_specified_so_mu);
+  Py_CLEAR(clear_module_state->__pyx_n_s_import);
+  Py_CLEAR(clear_module_state->__pyx_n_s_inbound_ops);
+  Py_CLEAR(clear_module_state->__pyx_n_s_increment);
+  Py_CLEAR(clear_module_state->__pyx_n_s_init);
+  Py_CLEAR(clear_module_state->__pyx_n_s_init_grpc_aio);
+  Py_CLEAR(clear_module_state->__pyx_n_s_init_grpc_gevent);
+  Py_CLEAR(clear_module_state->__pyx_n_s_init_subclass);
+  Py_CLEAR(clear_module_state->__pyx_n_s_initial_cert_config);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_initial_cert_config_must_be_a_gr);
+  Py_CLEAR(clear_module_state->__pyx_n_s_initial_metadata);
+  Py_CLEAR(clear_module_state->__pyx_n_s_initial_metadata_op);
+  Py_CLEAR(clear_module_state->__pyx_n_s_initializing);
+  Py_CLEAR(clear_module_state->__pyx_n_s_initiate_stream_stream);
+  Py_CLEAR(clear_module_state->__pyx_n_s_initiate_unary_stream);
+  Py_CLEAR(clear_module_state->__pyx_n_s_insecure_server_credentials);
+  Py_CLEAR(clear_module_state->__pyx_n_s_inspect);
+  Py_CLEAR(clear_module_state->__pyx_n_s_install_context_from_request_cal);
+  Py_CLEAR(clear_module_state->__pyx_n_s_install_context_from_request_cal_2);
+  Py_CLEAR(clear_module_state->__pyx_n_s_int);
+  Py_CLEAR(clear_module_state->__pyx_n_s_integrated_call);
+  Py_CLEAR(clear_module_state->__pyx_n_s_integrated_call_locals_on_succe);
+  Py_CLEAR(clear_module_state->__pyx_n_s_intercept_service);
+  Py_CLEAR(clear_module_state->__pyx_n_s_interceptor);
+  Py_CLEAR(clear_module_state->__pyx_n_s_interceptors);
+  Py_CLEAR(clear_module_state->__pyx_n_s_internal);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_internal_error_user_data_must_be);
+  Py_CLEAR(clear_module_state->__pyx_n_s_internal_poll);
+  Py_CLEAR(clear_module_state->__pyx_n_s_invalid_argument);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_invalid_call_object_cannot_be_us);
+  Py_CLEAR(clear_module_state->__pyx_n_s_invalid_flags);
+  Py_CLEAR(clear_module_state->__pyx_n_s_invalid_metadata);
+  Py_CLEAR(clear_module_state->__pyx_n_s_invocation_metadata);
+  Py_CLEAR(clear_module_state->__pyx_n_s_is_algorithm_enabled);
+  Py_CLEAR(clear_module_state->__pyx_n_s_is_async_handler);
+  Py_CLEAR(clear_module_state->__pyx_n_s_is_coroutine);
+  Py_CLEAR(clear_module_state->__pyx_n_s_is_fork_support_enabled);
+  Py_CLEAR(clear_module_state->__pyx_n_s_is_locally_cancelled);
+  Py_CLEAR(clear_module_state->__pyx_n_s_is_ok);
+  Py_CLEAR(clear_module_state->__pyx_n_s_is_running);
+  Py_CLEAR(clear_module_state->__pyx_n_s_is_sampled);
+  Py_CLEAR(clear_module_state->__pyx_n_s_is_valid);
+  Py_CLEAR(clear_module_state->__pyx_n_s_isasyncgenfunction);
+  Py_CLEAR(clear_module_state->__pyx_n_s_isawaitable);
+  Py_CLEAR(clear_module_state->__pyx_n_s_iscoroutinefunction);
+  Py_CLEAR(clear_module_state->__pyx_kp_u_isenabled);
+  Py_CLEAR(clear_module_state->__pyx_n_s_item);
+  Py_CLEAR(clear_module_state->__pyx_n_s_iter);
+  Py_CLEAR(clear_module_state->__pyx_n_s_join);
+  Py_CLEAR(clear_module_state->__pyx_n_s_key);
+  Py_CLEAR(clear_module_state->__pyx_n_s_keys);
+  Py_CLEAR(clear_module_state->__pyx_n_s_last_observed_state);
+  Py_CLEAR(clear_module_state->__pyx_n_s_latent_event_arg);
+  Py_CLEAR(clear_module_state->__pyx_n_s_len);
+  Py_CLEAR(clear_module_state->__pyx_n_s_lk);
+  Py_CLEAR(clear_module_state->__pyx_n_s_local_connect_type);
+  Py_CLEAR(clear_module_state->__pyx_n_s_local_tcp);
+  Py_CLEAR(clear_module_state->__pyx_n_s_logging);
+  Py_CLEAR(clear_module_state->__pyx_n_s_loop);
+  Py_CLEAR(clear_module_state->__pyx_n_s_low);
+  Py_CLEAR(clear_module_state->__pyx_n_s_lower);
+  Py_CLEAR(clear_module_state->__pyx_n_s_main);
+  Py_CLEAR(clear_module_state->__pyx_n_s_managed_target);
+  Py_CLEAR(clear_module_state->__pyx_n_s_max_concurrent_streams);
+  Py_CLEAR(clear_module_state->__pyx_n_s_max_receive_message_length);
+  Py_CLEAR(clear_module_state->__pyx_n_s_max_results);
+  Py_CLEAR(clear_module_state->__pyx_n_s_max_send_message_length);
+  Py_CLEAR(clear_module_state->__pyx_n_s_maximum_concurrent_rpcs);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_maximum_concurrent_rpcs_should_b);
+  Py_CLEAR(clear_module_state->__pyx_n_s_maxsize);
+  Py_CLEAR(clear_module_state->__pyx_n_s_maybe_save_server_trace_context);
+  Py_CLEAR(clear_module_state->__pyx_n_s_medium);
+  Py_CLEAR(clear_module_state->__pyx_n_s_members);
+  Py_CLEAR(clear_module_state->__pyx_n_s_message);
+  Py_CLEAR(clear_module_state->__pyx_n_s_metaclass);
+  Py_CLEAR(clear_module_state->__pyx_n_s_metadata);
+  Py_CLEAR(clear_module_state->__pyx_n_s_metadata_locals_genexpr);
+  Py_CLEAR(clear_module_state->__pyx_n_s_metadata_plugin);
+  Py_CLEAR(clear_module_state->__pyx_n_s_metadata_sent_observer);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_metadata_was_invalid_s);
+  Py_CLEAR(clear_module_state->__pyx_n_s_method);
+  Py_CLEAR(clear_module_state->__pyx_n_s_method_handler);
+  Py_CLEAR(clear_module_state->__pyx_n_s_module);
+  Py_CLEAR(clear_module_state->__pyx_n_s_mro_entries);
+  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_namedtuple);
+  Py_CLEAR(clear_module_state->__pyx_n_s_new);
+  Py_CLEAR(clear_module_state->__pyx_n_s_new_event_loop);
+  Py_CLEAR(clear_module_state->__pyx_n_s_next_call_event);
+  Py_CLEAR(clear_module_state->__pyx_n_s_next_call_event_locals_on_succes);
+  Py_CLEAR(clear_module_state->__pyx_n_s_next_event);
+  Py_CLEAR(clear_module_state->__pyx_n_s_next_event_locals_on_failure);
+  Py_CLEAR(clear_module_state->__pyx_n_s_next_event_locals_on_success);
+  Py_CLEAR(clear_module_state->__pyx_n_s_no_compress);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_no_default___reduce___due_to_non);
+  Py_CLEAR(clear_module_state->__pyx_n_s_none);
+  Py_CLEAR(clear_module_state->__pyx_n_s_not_found);
+  Py_CLEAR(clear_module_state->__pyx_n_s_not_invoked);
+  Py_CLEAR(clear_module_state->__pyx_n_s_not_on_client);
+  Py_CLEAR(clear_module_state->__pyx_n_s_not_on_server);
+  Py_CLEAR(clear_module_state->__pyx_n_s_notify_all);
+  Py_CLEAR(clear_module_state->__pyx_n_s_num_active_threads);
+  Py_CLEAR(clear_module_state->__pyx_n_s_object);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_object_2);
+  Py_CLEAR(clear_module_state->__pyx_n_s_observability);
+  Py_CLEAR(clear_module_state->__pyx_n_s_observability_enabled);
+  Py_CLEAR(clear_module_state->__pyx_n_s_observability_plugin);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_of_RPC_that_terminated_with_sta);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_of_RPC_that_terminated_with_sta_2);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ok);
+  Py_CLEAR(clear_module_state->__pyx_n_s_on_failure);
+  Py_CLEAR(clear_module_state->__pyx_n_s_on_success);
+  Py_CLEAR(clear_module_state->__pyx_n_s_op);
+  Py_CLEAR(clear_module_state->__pyx_n_s_operate);
+  Py_CLEAR(clear_module_state->__pyx_n_s_operation_complete);
+  Py_CLEAR(clear_module_state->__pyx_n_s_operations);
+  Py_CLEAR(clear_module_state->__pyx_n_s_operationses_and_tags);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ops);
+  Py_CLEAR(clear_module_state->__pyx_n_s_options);
+  Py_CLEAR(clear_module_state->__pyx_n_s_os);
+  Py_CLEAR(clear_module_state->__pyx_n_s_out_of_range);
+  Py_CLEAR(clear_module_state->__pyx_n_s_outbound_initial_metadata);
+  Py_CLEAR(clear_module_state->__pyx_n_s_outbound_ops);
+  Py_CLEAR(clear_module_state->__pyx_n_s_partial);
+  Py_CLEAR(clear_module_state->__pyx_n_s_peer);
+  Py_CLEAR(clear_module_state->__pyx_n_s_peer_identities);
+  Py_CLEAR(clear_module_state->__pyx_n_s_peer_identity_key);
+  Py_CLEAR(clear_module_state->__pyx_n_s_pem_key_cert_pairs);
+  Py_CLEAR(clear_module_state->__pyx_n_s_pem_root_certificates);
+  Py_CLEAR(clear_module_state->__pyx_n_s_pem_root_certs);
+  Py_CLEAR(clear_module_state->__pyx_n_s_permission_denied);
+  Py_CLEAR(clear_module_state->__pyx_n_s_pickle);
+  Py_CLEAR(clear_module_state->__pyx_n_s_pkgutil);
+  Py_CLEAR(clear_module_state->__pyx_n_s_plugin);
+  Py_CLEAR(clear_module_state->__pyx_n_s_poll);
+  Py_CLEAR(clear_module_state->__pyx_n_s_poll_wrapper);
+  Py_CLEAR(clear_module_state->__pyx_n_s_poller);
+  Py_CLEAR(clear_module_state->__pyx_n_s_pool);
+  Py_CLEAR(clear_module_state->__pyx_n_s_pop);
+  Py_CLEAR(clear_module_state->__pyx_n_s_postfork_state_to_reset);
+  Py_CLEAR(clear_module_state->__pyx_n_s_postfork_states_to_reset);
+  Py_CLEAR(clear_module_state->__pyx_n_s_prepare);
+  Py_CLEAR(clear_module_state->__pyx_n_s_primary_user_agent_string);
+  Py_CLEAR(clear_module_state->__pyx_n_s_print_exc);
+  Py_CLEAR(clear_module_state->__pyx_n_s_private_key);
+  Py_CLEAR(clear_module_state->__pyx_n_s_properties);
+  Py_CLEAR(clear_module_state->__pyx_n_s_property);
+  Py_CLEAR(clear_module_state->__pyx_n_s_put);
+  Py_CLEAR(clear_module_state->__pyx_n_s_py_auth_context);
+  Py_CLEAR(clear_module_state->__pyx_n_s_python_call_credentials);
+  Py_CLEAR(clear_module_state->__pyx_n_s_pyx_PickleError);
+  Py_CLEAR(clear_module_state->__pyx_n_s_pyx_capi);
+  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_AioServer);
+  Py_CLEAR(clear_module_state->__pyx_n_s_pyx_unpickle_CensusContext);
+  Py_CLEAR(clear_module_state->__pyx_n_s_pyx_unpickle_ChannelCredential);
+  Py_CLEAR(clear_module_state->__pyx_n_s_pyx_unpickle_InsecureChannelCr);
+  Py_CLEAR(clear_module_state->__pyx_n_s_pyx_unpickle__Tag);
+  Py_CLEAR(clear_module_state->__pyx_n_s_pyx_vtable);
+  Py_CLEAR(clear_module_state->__pyx_n_s_qualname);
+  Py_CLEAR(clear_module_state->__pyx_n_s_query_call);
+  Py_CLEAR(clear_module_state->__pyx_n_s_query_handler);
+  Py_CLEAR(clear_module_state->__pyx_n_s_query_handlers);
+  Py_CLEAR(clear_module_state->__pyx_n_s_queue);
+  Py_CLEAR(clear_module_state->__pyx_n_s_queue_deadline);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_queue_must_be_live);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_queue_must_be_shutting_down_to_b);
+  Py_CLEAR(clear_module_state->__pyx_n_s_queue_shutdown);
+  Py_CLEAR(clear_module_state->__pyx_n_s_queue_timeout);
+  Py_CLEAR(clear_module_state->__pyx_n_s_raise_if_not_valid_trailing_meta);
+  Py_CLEAR(clear_module_state->__pyx_n_s_range);
+  Py_CLEAR(clear_module_state->__pyx_n_s_raw_message);
+  Py_CLEAR(clear_module_state->__pyx_n_s_read);
+  Py_CLEAR(clear_module_state->__pyx_n_s_read_socket);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ready);
+  Py_CLEAR(clear_module_state->__pyx_n_s_receive_close_on_server);
+  Py_CLEAR(clear_module_state->__pyx_n_s_receive_initial_metadata);
+  Py_CLEAR(clear_module_state->__pyx_n_s_receive_initial_metadata_2);
+  Py_CLEAR(clear_module_state->__pyx_n_s_receive_initial_metadata_op);
+  Py_CLEAR(clear_module_state->__pyx_n_s_receive_message);
+  Py_CLEAR(clear_module_state->__pyx_n_s_receive_message_2);
+  Py_CLEAR(clear_module_state->__pyx_n_s_receive_message_op);
+  Py_CLEAR(clear_module_state->__pyx_n_s_receive_op);
+  Py_CLEAR(clear_module_state->__pyx_n_s_receive_serialized_message);
+  Py_CLEAR(clear_module_state->__pyx_n_s_receive_status_on_client);
+  Py_CLEAR(clear_module_state->__pyx_n_s_receive_status_on_client_op);
+  Py_CLEAR(clear_module_state->__pyx_n_s_received_message);
+  Py_CLEAR(clear_module_state->__pyx_n_s_recv);
+  Py_CLEAR(clear_module_state->__pyx_n_s_reduce);
+  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_register);
+  Py_CLEAR(clear_module_state->__pyx_n_s_register_at_fork);
+  Py_CLEAR(clear_module_state->__pyx_n_s_register_completion_queue);
+  Py_CLEAR(clear_module_state->__pyx_n_s_registered_call_handle);
+  Py_CLEAR(clear_module_state->__pyx_n_s_remove_reader);
+  Py_CLEAR(clear_module_state->__pyx_n_s_repr);
+  Py_CLEAR(clear_module_state->__pyx_n_s_repr_2);
+  Py_CLEAR(clear_module_state->__pyx_n_s_request);
+  Py_CLEAR(clear_module_state->__pyx_n_s_request_call);
+  Py_CLEAR(clear_module_state->__pyx_n_s_request_call_2);
+  Py_CLEAR(clear_module_state->__pyx_n_s_request_call_tag);
+  Py_CLEAR(clear_module_state->__pyx_n_s_request_deserializer);
+  Py_CLEAR(clear_module_state->__pyx_n_s_request_iterator);
+  Py_CLEAR(clear_module_state->__pyx_n_s_request_message);
+  Py_CLEAR(clear_module_state->__pyx_n_s_request_raw);
+  Py_CLEAR(clear_module_state->__pyx_n_s_request_streaming);
+  Py_CLEAR(clear_module_state->__pyx_n_s_reset_grpc_config_vars);
+  Py_CLEAR(clear_module_state->__pyx_n_s_reset_postfork_child);
+  Py_CLEAR(clear_module_state->__pyx_n_s_resource_exhausted);
+  Py_CLEAR(clear_module_state->__pyx_n_s_response);
+  Py_CLEAR(clear_module_state->__pyx_n_s_response_message);
+  Py_CLEAR(clear_module_state->__pyx_n_s_response_raw);
+  Py_CLEAR(clear_module_state->__pyx_n_s_response_serializer);
+  Py_CLEAR(clear_module_state->__pyx_n_s_response_streaming);
+  Py_CLEAR(clear_module_state->__pyx_n_s_result);
+  Py_CLEAR(clear_module_state->__pyx_n_s_retain_self);
+  Py_CLEAR(clear_module_state->__pyx_n_s_return);
+  Py_CLEAR(clear_module_state->__pyx_n_s_return_from_user_request_generat);
+  Py_CLEAR(clear_module_state->__pyx_n_s_rpc_coro);
+  Py_CLEAR(clear_module_state->__pyx_n_s_rpc_state);
+  Py_CLEAR(clear_module_state->__pyx_n_s_rpc_task);
+  Py_CLEAR(clear_module_state->__pyx_n_s_run);
+  Py_CLEAR(clear_module_state->__pyx_n_s_run_2);
+  Py_CLEAR(clear_module_state->__pyx_n_s_run_coroutine_threadsafe);
+  Py_CLEAR(clear_module_state->__pyx_n_s_run_in_executor);
+  Py_CLEAR(clear_module_state->__pyx_n_s_run_interceptor);
+  Py_CLEAR(clear_module_state->__pyx_n_s_run_spawn_greenlets);
+  Py_CLEAR(clear_module_state->__pyx_n_s_run_with_context);
+  Py_CLEAR(clear_module_state->__pyx_n_s_run_with_context_locals__run);
+  Py_CLEAR(clear_module_state->__pyx_n_s_runtime_error);
+  Py_CLEAR(clear_module_state->__pyx_n_s_save_trace_context);
+  Py_CLEAR(clear_module_state->__pyx_n_s_schedule_coro_threadsafe);
+  Py_CLEAR(clear_module_state->__pyx_n_s_schedule_rpc_coro);
+  Py_CLEAR(clear_module_state->__pyx_n_s_secondary_user_agent_string);
+  Py_CLEAR(clear_module_state->__pyx_n_s_segregated_call);
+  Py_CLEAR(clear_module_state->__pyx_n_s_segregated_call_locals_on_succe);
+  Py_CLEAR(clear_module_state->__pyx_n_s_self);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_self__cq_cannot_be_converted_to);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_self_arg_cannot_be_converted_to);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_self_c_argument_cannot_be_conver);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_self_c_credentials_cannot_be_con);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_self_c_op_cannot_be_converted_to);
+  Py_CLEAR(clear_module_state->__pyx_n_s_send);
+  Py_CLEAR(clear_module_state->__pyx_n_s_send_close_from_client);
+  Py_CLEAR(clear_module_state->__pyx_n_s_send_close_op);
+  Py_CLEAR(clear_module_state->__pyx_n_s_send_error_status_from_server);
+  Py_CLEAR(clear_module_state->__pyx_n_s_send_initial_metadata);
+  Py_CLEAR(clear_module_state->__pyx_n_s_send_initial_metadata_2);
+  Py_CLEAR(clear_module_state->__pyx_n_s_send_initial_metadata_op);
+  Py_CLEAR(clear_module_state->__pyx_n_s_send_message);
+  Py_CLEAR(clear_module_state->__pyx_n_s_send_message_2);
+  Py_CLEAR(clear_module_state->__pyx_n_s_send_message_op);
+  Py_CLEAR(clear_module_state->__pyx_n_s_send_receive_close);
+  Py_CLEAR(clear_module_state->__pyx_n_s_send_serialized_message);
+  Py_CLEAR(clear_module_state->__pyx_n_s_send_status_from_server);
+  Py_CLEAR(clear_module_state->__pyx_n_s_server);
+  Py_CLEAR(clear_module_state->__pyx_n_s_server_call_tracer);
+  Py_CLEAR(clear_module_state->__pyx_n_s_server_certificate_config_ssl);
+  Py_CLEAR(clear_module_state->__pyx_n_s_server_credentials);
+  Py_CLEAR(clear_module_state->__pyx_n_s_server_credentials_alts);
+  Py_CLEAR(clear_module_state->__pyx_n_s_server_credentials_local);
+  Py_CLEAR(clear_module_state->__pyx_n_s_server_credentials_ssl);
+  Py_CLEAR(clear_module_state->__pyx_n_s_server_credentials_ssl_dynamic_c);
+  Py_CLEAR(clear_module_state->__pyx_n_s_server_id);
+  Py_CLEAR(clear_module_state->__pyx_n_s_server_main_loop);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_server_must_be_started_and_not_s);
+  Py_CLEAR(clear_module_state->__pyx_n_s_server_queue);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_server_queue_must_be_a_registere);
+  Py_CLEAR(clear_module_state->__pyx_n_s_server_started);
+  Py_CLEAR(clear_module_state->__pyx_n_s_service);
+  Py_CLEAR(clear_module_state->__pyx_n_s_service_accounts);
+  Py_CLEAR(clear_module_state->__pyx_n_s_servicer_context);
+  Py_CLEAR(clear_module_state->__pyx_n_s_serving_task_crash_handler);
+  Py_CLEAR(clear_module_state->__pyx_n_s_setDaemon);
+  Py_CLEAR(clear_module_state->__pyx_n_s_set_async_callback_func);
+  Py_CLEAR(clear_module_state->__pyx_n_s_set_census_context_on_call);
+  Py_CLEAR(clear_module_state->__pyx_n_s_set_code);
+  Py_CLEAR(clear_module_state->__pyx_n_s_set_compression);
+  Py_CLEAR(clear_module_state->__pyx_n_s_set_credentials);
+  Py_CLEAR(clear_module_state->__pyx_n_s_set_details);
+  Py_CLEAR(clear_module_state->__pyx_n_s_set_exception);
+  Py_CLEAR(clear_module_state->__pyx_n_s_set_instrumentation_context_on_c);
+  Py_CLEAR(clear_module_state->__pyx_n_s_set_internal_error);
+  Py_CLEAR(clear_module_state->__pyx_n_s_set_name);
+  Py_CLEAR(clear_module_state->__pyx_n_s_set_result);
+  Py_CLEAR(clear_module_state->__pyx_n_s_set_server_call_tracer_factory);
+  Py_CLEAR(clear_module_state->__pyx_n_s_set_trailing_metadata);
+  Py_CLEAR(clear_module_state->__pyx_n_s_setblocking);
+  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_shield);
+  Py_CLEAR(clear_module_state->__pyx_n_s_shutdown);
+  Py_CLEAR(clear_module_state->__pyx_n_s_shutdown_await_next_greenlet);
+  Py_CLEAR(clear_module_state->__pyx_n_s_shutdown_cq);
+  Py_CLEAR(clear_module_state->__pyx_n_s_shutdown_grpc_aio);
+  Py_CLEAR(clear_module_state->__pyx_n_s_shutting_down_server);
+  Py_CLEAR(clear_module_state->__pyx_n_s_simplefilter);
+  Py_CLEAR(clear_module_state->__pyx_n_s_sleep);
+  Py_CLEAR(clear_module_state->__pyx_n_s_socket);
+  Py_CLEAR(clear_module_state->__pyx_n_s_socket_id);
+  Py_CLEAR(clear_module_state->__pyx_n_s_socketpair);
+  Py_CLEAR(clear_module_state->__pyx_n_s_span_id);
+  Py_CLEAR(clear_module_state->__pyx_n_s_spawn);
+  Py_CLEAR(clear_module_state->__pyx_n_s_spawn_callback_async);
+  Py_CLEAR(clear_module_state->__pyx_n_s_spawn_callback_in_thread);
+  Py_CLEAR(clear_module_state->__pyx_n_s_spawn_greenlets);
+  Py_CLEAR(clear_module_state->__pyx_n_s_spec);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_src_python_grpcio_grpc__cython);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_src_python_grpcio_grpc__cython_10);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_src_python_grpcio_grpc__cython_11);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_src_python_grpcio_grpc__cython_12);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_src_python_grpcio_grpc__cython_13);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_src_python_grpcio_grpc__cython_14);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_src_python_grpcio_grpc__cython_15);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_src_python_grpcio_grpc__cython_16);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_src_python_grpcio_grpc__cython_17);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_src_python_grpcio_grpc__cython_18);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_src_python_grpcio_grpc__cython_19);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_src_python_grpcio_grpc__cython_2);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_src_python_grpcio_grpc__cython_20);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_src_python_grpcio_grpc__cython_21);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_src_python_grpcio_grpc__cython_22);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_src_python_grpcio_grpc__cython_23);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_src_python_grpcio_grpc__cython_3);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_src_python_grpcio_grpc__cython_4);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_src_python_grpcio_grpc__cython_5);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_src_python_grpcio_grpc__cython_6);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_src_python_grpcio_grpc__cython_7);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_src_python_grpcio_grpc__cython_8);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_src_python_grpcio_grpc__cython_9);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ssl_session_cache);
+  Py_CLEAR(clear_module_state->__pyx_n_s_ssl_target_name_override);
+  Py_CLEAR(clear_module_state->__pyx_n_s_start);
+  Py_CLEAR(clear_module_state->__pyx_n_s_start_batch);
+  Py_CLEAR(clear_module_state->__pyx_n_s_start_channel_id);
+  Py_CLEAR(clear_module_state->__pyx_n_s_start_client_batch);
+  Py_CLEAR(clear_module_state->__pyx_n_s_start_server_batch);
+  Py_CLEAR(clear_module_state->__pyx_n_s_start_server_id);
+  Py_CLEAR(clear_module_state->__pyx_n_s_start_shutting_down);
+  Py_CLEAR(clear_module_state->__pyx_n_s_start_socket_id);
+  Py_CLEAR(clear_module_state->__pyx_n_s_started_tag);
+  Py_CLEAR(clear_module_state->__pyx_n_s_started_tags);
+  Py_CLEAR(clear_module_state->__pyx_n_s_state);
+  Py_CLEAR(clear_module_state->__pyx_n_s_status);
+  Py_CLEAR(clear_module_state->__pyx_n_s_status_code);
+  Py_CLEAR(clear_module_state->__pyx_n_s_status_task);
+  Py_CLEAR(clear_module_state->__pyx_n_s_stored_ctx);
+  Py_CLEAR(clear_module_state->__pyx_n_s_str);
+  Py_CLEAR(clear_module_state->__pyx_n_s_str_2);
+  Py_CLEAR(clear_module_state->__pyx_n_s_stream_handler);
+  Py_CLEAR(clear_module_state->__pyx_n_s_stream_stream);
+  Py_CLEAR(clear_module_state->__pyx_n_s_stream_unary);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_stringsource);
+  Py_CLEAR(clear_module_state->__pyx_n_s_subchannel_id);
+  Py_CLEAR(clear_module_state->__pyx_n_s_success);
+  Py_CLEAR(clear_module_state->__pyx_n_s_super);
+  Py_CLEAR(clear_module_state->__pyx_n_s_sync_servicer_context);
+  Py_CLEAR(clear_module_state->__pyx_n_s_sys);
+  Py_CLEAR(clear_module_state->__pyx_n_s_t);
+  Py_CLEAR(clear_module_state->__pyx_n_s_tag);
+  Py_CLEAR(clear_module_state->__pyx_n_s_target);
+  Py_CLEAR(clear_module_state->__pyx_n_s_task);
+  Py_CLEAR(clear_module_state->__pyx_n_s_test);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_the_server_has_already_started);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_the_server_hasn_t_started_yet);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_the_server_must_be_shutting_down);
+  Py_CLEAR(clear_module_state->__pyx_n_s_thread);
+  Py_CLEAR(clear_module_state->__pyx_n_s_thread_pool);
+  Py_CLEAR(clear_module_state->__pyx_n_s_threading);
+  Py_CLEAR(clear_module_state->__pyx_n_s_threadpool);
+  Py_CLEAR(clear_module_state->__pyx_n_s_throw);
+  Py_CLEAR(clear_module_state->__pyx_n_s_time);
+  Py_CLEAR(clear_module_state->__pyx_n_s_time_remaining);
+  Py_CLEAR(clear_module_state->__pyx_n_s_timeout);
+  Py_CLEAR(clear_module_state->__pyx_n_s_timeout_secs);
+  Py_CLEAR(clear_module_state->__pyx_n_s_to_call);
+  Py_CLEAR(clear_module_state->__pyx_n_s_to_channel_arg);
+  Py_CLEAR(clear_module_state->__pyx_n_s_too_many_operations);
+  Py_CLEAR(clear_module_state->__pyx_n_s_trace_id);
+  Py_CLEAR(clear_module_state->__pyx_n_s_traceback);
+  Py_CLEAR(clear_module_state->__pyx_n_s_tracing_enabled);
+  Py_CLEAR(clear_module_state->__pyx_n_s_trailing_metadata);
+  Py_CLEAR(clear_module_state->__pyx_n_s_transient_failure);
+  Py_CLEAR(clear_module_state->__pyx_n_s_true);
+  Py_CLEAR(clear_module_state->__pyx_n_s_try_to_connect);
+  Py_CLEAR(clear_module_state->__pyx_n_s_type);
+  Py_CLEAR(clear_module_state->__pyx_n_s_typing);
+  Py_CLEAR(clear_module_state->__pyx_n_s_uds);
+  Py_CLEAR(clear_module_state->__pyx_n_s_unary_handler);
+  Py_CLEAR(clear_module_state->__pyx_n_s_unary_stream);
+  Py_CLEAR(clear_module_state->__pyx_n_s_unary_unary);
+  Py_CLEAR(clear_module_state->__pyx_n_s_unauthenticated);
+  Py_CLEAR(clear_module_state->__pyx_n_s_unavailable);
+  Py_CLEAR(clear_module_state->__pyx_n_s_unimplemented);
+  Py_CLEAR(clear_module_state->__pyx_n_s_uninstall_context);
+  Py_CLEAR(clear_module_state->__pyx_n_s_unknown);
+  Py_CLEAR(clear_module_state->__pyx_n_s_unused_future);
+  Py_CLEAR(clear_module_state->__pyx_n_s_unused_task);
+  Py_CLEAR(clear_module_state->__pyx_n_s_update);
+  Py_CLEAR(clear_module_state->__pyx_n_s_upper);
+  Py_CLEAR(clear_module_state->__pyx_n_s_use_setstate);
+  Py_CLEAR(clear_module_state->__pyx_n_s_used_mask);
+  Py_CLEAR(clear_module_state->__pyx_n_s_user_tag);
+  Py_CLEAR(clear_module_state->__pyx_n_s_utf8);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_utf_8);
+  Py_CLEAR(clear_module_state->__pyx_n_s_value);
+  Py_CLEAR(clear_module_state->__pyx_n_s_values);
+  Py_CLEAR(clear_module_state->__pyx_n_s_wait);
+  Py_CLEAR(clear_module_state->__pyx_n_s_wait_for);
+  Py_CLEAR(clear_module_state->__pyx_n_s_wait_for_ready);
+  Py_CLEAR(clear_module_state->__pyx_n_s_wait_for_ready_explicitly_set);
+  Py_CLEAR(clear_module_state->__pyx_n_s_wait_for_termination);
+  Py_CLEAR(clear_module_state->__pyx_n_s_wait_time);
+  Py_CLEAR(clear_module_state->__pyx_n_s_warning);
+  Py_CLEAR(clear_module_state->__pyx_n_s_warnings);
+  Py_CLEAR(clear_module_state->__pyx_n_s_watch_connectivity_state);
+  Py_CLEAR(clear_module_state->__pyx_n_s_wrap);
+  Py_CLEAR(clear_module_state->__pyx_n_s_wrapper);
+  Py_CLEAR(clear_module_state->__pyx_n_s_write);
+  Py_CLEAR(clear_module_state->__pyx_n_s_write_flag);
+  Py_CLEAR(clear_module_state->__pyx_n_s_xds);
+  Py_CLEAR(clear_module_state->__pyx_n_s_xds_server_credentials);
+  Py_CLEAR(clear_module_state->__pyx_n_s_yes);
+  Py_CLEAR(clear_module_state->__pyx_n_s_yield_to_queue);
+  Py_CLEAR(clear_module_state->__pyx_float_1_0);
+  Py_CLEAR(clear_module_state->__pyx_int_0);
+  Py_CLEAR(clear_module_state->__pyx_int_1);
+  Py_CLEAR(clear_module_state->__pyx_int_5);
+  Py_CLEAR(clear_module_state->__pyx_int_118587260);
+  Py_CLEAR(clear_module_state->__pyx_int_171381981);
+  Py_CLEAR(clear_module_state->__pyx_int_171651213);
+  Py_CLEAR(clear_module_state->__pyx_int_222419149);
+  Py_CLEAR(clear_module_state->__pyx_int_228825662);
+  Py_CLEAR(clear_module_state->__pyx_int_238750788);
+  Py_CLEAR(clear_module_state->__pyx_k__76);
+  Py_CLEAR(clear_module_state->__pyx_k__80);
+  Py_CLEAR(clear_module_state->__pyx_tuple_);
+  Py_CLEAR(clear_module_state->__pyx_tuple__4);
+  Py_CLEAR(clear_module_state->__pyx_tuple__8);
+  Py_CLEAR(clear_module_state->__pyx_slice__37);
+  Py_CLEAR(clear_module_state->__pyx_tuple__10);
+  Py_CLEAR(clear_module_state->__pyx_tuple__11);
+  Py_CLEAR(clear_module_state->__pyx_tuple__12);
+  Py_CLEAR(clear_module_state->__pyx_tuple__14);
+  Py_CLEAR(clear_module_state->__pyx_tuple__17);
+  Py_CLEAR(clear_module_state->__pyx_tuple__19);
+  Py_CLEAR(clear_module_state->__pyx_tuple__21);
+  Py_CLEAR(clear_module_state->__pyx_tuple__23);
+  Py_CLEAR(clear_module_state->__pyx_tuple__24);
+  Py_CLEAR(clear_module_state->__pyx_tuple__25);
+  Py_CLEAR(clear_module_state->__pyx_tuple__26);
+  Py_CLEAR(clear_module_state->__pyx_tuple__27);
+  Py_CLEAR(clear_module_state->__pyx_tuple__28);
+  Py_CLEAR(clear_module_state->__pyx_tuple__29);
+  Py_CLEAR(clear_module_state->__pyx_tuple__30);
+  Py_CLEAR(clear_module_state->__pyx_tuple__31);
+  Py_CLEAR(clear_module_state->__pyx_tuple__32);
+  Py_CLEAR(clear_module_state->__pyx_tuple__33);
+  Py_CLEAR(clear_module_state->__pyx_tuple__34);
+  Py_CLEAR(clear_module_state->__pyx_tuple__35);
+  Py_CLEAR(clear_module_state->__pyx_tuple__36);
+  Py_CLEAR(clear_module_state->__pyx_tuple__39);
+  Py_CLEAR(clear_module_state->__pyx_tuple__40);
+  Py_CLEAR(clear_module_state->__pyx_tuple__46);
+  Py_CLEAR(clear_module_state->__pyx_tuple__48);
+  Py_CLEAR(clear_module_state->__pyx_tuple__50);
+  Py_CLEAR(clear_module_state->__pyx_tuple__79);
+  Py_CLEAR(clear_module_state->__pyx_tuple__83);
+  Py_CLEAR(clear_module_state->__pyx_tuple__93);
+  Py_CLEAR(clear_module_state->__pyx_tuple__98);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__2);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__3);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__5);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__6);
+  Py_CLEAR(clear_module_state->__pyx_tuple__105);
+  Py_CLEAR(clear_module_state->__pyx_tuple__106);
+  Py_CLEAR(clear_module_state->__pyx_tuple__108);
+  Py_CLEAR(clear_module_state->__pyx_tuple__110);
+  Py_CLEAR(clear_module_state->__pyx_tuple__116);
+  Py_CLEAR(clear_module_state->__pyx_tuple__118);
+  Py_CLEAR(clear_module_state->__pyx_tuple__121);
+  Py_CLEAR(clear_module_state->__pyx_tuple__123);
+  Py_CLEAR(clear_module_state->__pyx_tuple__125);
+  Py_CLEAR(clear_module_state->__pyx_tuple__127);
+  Py_CLEAR(clear_module_state->__pyx_tuple__138);
+  Py_CLEAR(clear_module_state->__pyx_tuple__144);
+  Py_CLEAR(clear_module_state->__pyx_tuple__148);
+  Py_CLEAR(clear_module_state->__pyx_tuple__150);
+  Py_CLEAR(clear_module_state->__pyx_tuple__152);
+  Py_CLEAR(clear_module_state->__pyx_tuple__153);
+  Py_CLEAR(clear_module_state->__pyx_tuple__156);
+  Py_CLEAR(clear_module_state->__pyx_tuple__158);
+  Py_CLEAR(clear_module_state->__pyx_tuple__162);
+  Py_CLEAR(clear_module_state->__pyx_tuple__166);
+  Py_CLEAR(clear_module_state->__pyx_tuple__168);
+  Py_CLEAR(clear_module_state->__pyx_tuple__170);
+  Py_CLEAR(clear_module_state->__pyx_tuple__172);
+  Py_CLEAR(clear_module_state->__pyx_tuple__174);
+  Py_CLEAR(clear_module_state->__pyx_tuple__176);
+  Py_CLEAR(clear_module_state->__pyx_tuple__178);
+  Py_CLEAR(clear_module_state->__pyx_tuple__180);
+  Py_CLEAR(clear_module_state->__pyx_tuple__182);
+  Py_CLEAR(clear_module_state->__pyx_tuple__184);
+  Py_CLEAR(clear_module_state->__pyx_tuple__186);
+  Py_CLEAR(clear_module_state->__pyx_tuple__194);
+  Py_CLEAR(clear_module_state->__pyx_tuple__209);
+  Py_CLEAR(clear_module_state->__pyx_tuple__211);
+  Py_CLEAR(clear_module_state->__pyx_tuple__213);
+  Py_CLEAR(clear_module_state->__pyx_tuple__217);
+  Py_CLEAR(clear_module_state->__pyx_tuple__222);
+  Py_CLEAR(clear_module_state->__pyx_tuple__224);
+  Py_CLEAR(clear_module_state->__pyx_tuple__226);
+  Py_CLEAR(clear_module_state->__pyx_tuple__230);
+  Py_CLEAR(clear_module_state->__pyx_tuple__232);
+  Py_CLEAR(clear_module_state->__pyx_tuple__236);
+  Py_CLEAR(clear_module_state->__pyx_tuple__238);
+  Py_CLEAR(clear_module_state->__pyx_tuple__241);
+  Py_CLEAR(clear_module_state->__pyx_tuple__254);
+  Py_CLEAR(clear_module_state->__pyx_tuple__255);
+  Py_CLEAR(clear_module_state->__pyx_tuple__293);
+  Py_CLEAR(clear_module_state->__pyx_tuple__296);
+  Py_CLEAR(clear_module_state->__pyx_tuple__301);
+  Py_CLEAR(clear_module_state->__pyx_tuple__304);
+  Py_CLEAR(clear_module_state->__pyx_tuple__306);
+  Py_CLEAR(clear_module_state->__pyx_tuple__308);
+  Py_CLEAR(clear_module_state->__pyx_tuple__310);
+  Py_CLEAR(clear_module_state->__pyx_tuple__312);
+  Py_CLEAR(clear_module_state->__pyx_tuple__314);
+  Py_CLEAR(clear_module_state->__pyx_tuple__316);
+  Py_CLEAR(clear_module_state->__pyx_tuple__317);
+  Py_CLEAR(clear_module_state->__pyx_tuple__319);
+  Py_CLEAR(clear_module_state->__pyx_tuple__335);
+  Py_CLEAR(clear_module_state->__pyx_tuple__342);
+  Py_CLEAR(clear_module_state->__pyx_tuple__346);
+  Py_CLEAR(clear_module_state->__pyx_tuple__349);
+  Py_CLEAR(clear_module_state->__pyx_tuple__353);
+  Py_CLEAR(clear_module_state->__pyx_tuple__356);
+  Py_CLEAR(clear_module_state->__pyx_tuple__358);
+  Py_CLEAR(clear_module_state->__pyx_tuple__360);
+  Py_CLEAR(clear_module_state->__pyx_tuple__362);
+  Py_CLEAR(clear_module_state->__pyx_tuple__364);
+  Py_CLEAR(clear_module_state->__pyx_tuple__366);
+  Py_CLEAR(clear_module_state->__pyx_tuple__368);
+  Py_CLEAR(clear_module_state->__pyx_tuple__370);
+  Py_CLEAR(clear_module_state->__pyx_tuple__371);
+  Py_CLEAR(clear_module_state->__pyx_tuple__372);
+  Py_CLEAR(clear_module_state->__pyx_tuple__374);
+  Py_CLEAR(clear_module_state->__pyx_tuple__375);
+  Py_CLEAR(clear_module_state->__pyx_tuple__379);
+  Py_CLEAR(clear_module_state->__pyx_tuple__385);
+  Py_CLEAR(clear_module_state->__pyx_tuple__388);
+  Py_CLEAR(clear_module_state->__pyx_tuple__389);
+  Py_CLEAR(clear_module_state->__pyx_tuple__393);
+  Py_CLEAR(clear_module_state->__pyx_tuple__395);
+  Py_CLEAR(clear_module_state->__pyx_tuple__396);
+  Py_CLEAR(clear_module_state->__pyx_tuple__403);
+  Py_CLEAR(clear_module_state->__pyx_tuple__405);
+  Py_CLEAR(clear_module_state->__pyx_tuple__406);
+  Py_CLEAR(clear_module_state->__pyx_tuple__409);
+  Py_CLEAR(clear_module_state->__pyx_tuple__417);
+  Py_CLEAR(clear_module_state->__pyx_tuple__424);
+  Py_CLEAR(clear_module_state->__pyx_tuple__427);
+  Py_CLEAR(clear_module_state->__pyx_tuple__435);
+  Py_CLEAR(clear_module_state->__pyx_tuple__436);
+  Py_CLEAR(clear_module_state->__pyx_tuple__437);
+  Py_CLEAR(clear_module_state->__pyx_tuple__438);
+  Py_CLEAR(clear_module_state->__pyx_tuple__439);
+  Py_CLEAR(clear_module_state->__pyx_tuple__440);
+  Py_CLEAR(clear_module_state->__pyx_tuple__441);
+  Py_CLEAR(clear_module_state->__pyx_tuple__444);
+  Py_CLEAR(clear_module_state->__pyx_tuple__448);
+  Py_CLEAR(clear_module_state->__pyx_tuple__450);
+  Py_CLEAR(clear_module_state->__pyx_tuple__453);
+  Py_CLEAR(clear_module_state->__pyx_tuple__457);
+  Py_CLEAR(clear_module_state->__pyx_tuple__460);
+  Py_CLEAR(clear_module_state->__pyx_tuple__462);
+  Py_CLEAR(clear_module_state->__pyx_tuple__463);
+  Py_CLEAR(clear_module_state->__pyx_tuple__464);
+  Py_CLEAR(clear_module_state->__pyx_tuple__465);
+  Py_CLEAR(clear_module_state->__pyx_tuple__466);
+  Py_CLEAR(clear_module_state->__pyx_tuple__467);
+  Py_CLEAR(clear_module_state->__pyx_tuple__468);
+  Py_CLEAR(clear_module_state->__pyx_tuple__472);
+  Py_CLEAR(clear_module_state->__pyx_tuple__476);
+  Py_CLEAR(clear_module_state->__pyx_tuple__484);
+  Py_CLEAR(clear_module_state->__pyx_tuple__485);
+  Py_CLEAR(clear_module_state->__pyx_tuple__486);
+  Py_CLEAR(clear_module_state->__pyx_tuple__487);
+  Py_CLEAR(clear_module_state->__pyx_tuple__491);
+  Py_CLEAR(clear_module_state->__pyx_tuple__494);
+  Py_CLEAR(clear_module_state->__pyx_tuple__497);
+  Py_CLEAR(clear_module_state->__pyx_tuple__500);
+  Py_CLEAR(clear_module_state->__pyx_tuple__502);
+  Py_CLEAR(clear_module_state->__pyx_tuple__504);
+  Py_CLEAR(clear_module_state->__pyx_tuple__506);
+  Py_CLEAR(clear_module_state->__pyx_tuple__509);
+  Py_CLEAR(clear_module_state->__pyx_tuple__515);
+  Py_CLEAR(clear_module_state->__pyx_tuple__517);
+  Py_CLEAR(clear_module_state->__pyx_tuple__533);
+  Py_CLEAR(clear_module_state->__pyx_tuple__534);
+  Py_CLEAR(clear_module_state->__pyx_tuple__536);
+  Py_CLEAR(clear_module_state->__pyx_tuple__537);
+  Py_CLEAR(clear_module_state->__pyx_tuple__538);
+  Py_CLEAR(clear_module_state->__pyx_tuple__539);
+  Py_CLEAR(clear_module_state->__pyx_tuple__542);
+  Py_CLEAR(clear_module_state->__pyx_tuple__543);
+  Py_CLEAR(clear_module_state->__pyx_tuple__544);
+  Py_CLEAR(clear_module_state->__pyx_tuple__545);
+  Py_CLEAR(clear_module_state->__pyx_tuple__546);
+  Py_CLEAR(clear_module_state->__pyx_tuple__548);
+  Py_CLEAR(clear_module_state->__pyx_tuple__550);
+  Py_CLEAR(clear_module_state->__pyx_tuple__554);
+  Py_CLEAR(clear_module_state->__pyx_tuple__556);
+  Py_CLEAR(clear_module_state->__pyx_tuple__558);
+  Py_CLEAR(clear_module_state->__pyx_tuple__560);
+  Py_CLEAR(clear_module_state->__pyx_tuple__561);
+  Py_CLEAR(clear_module_state->__pyx_tuple__562);
+  Py_CLEAR(clear_module_state->__pyx_tuple__564);
+  Py_CLEAR(clear_module_state->__pyx_tuple__565);
+  Py_CLEAR(clear_module_state->__pyx_tuple__566);
+  Py_CLEAR(clear_module_state->__pyx_tuple__570);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__13);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__15);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__16);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__18);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__20);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__22);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__41);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__42);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__43);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__44);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__45);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__47);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__51);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__52);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__53);
+  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__59);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__60);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__61);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__62);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__63);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__64);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__65);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__66);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__67);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__68);
+  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__78);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__81);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__82);
+  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__90);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__91);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__92);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__94);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__95);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__96);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__97);
+  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__109);
+  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__117);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__119);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__120);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__122);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__124);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__126);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__128);
+  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__134);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__135);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__136);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__137);
+  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__145);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__146);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__147);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__149);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__151);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__154);
+  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__163);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__164);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__165);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__167);
+  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__175);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__177);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__179);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__181);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__183);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__185);
+  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__192);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__193);
+  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__205);
+  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__210);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__212);
+  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__218);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__219);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__220);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__221);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__223);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__225);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__227);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__228);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__229);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__231);
+  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__237);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__239);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__240);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__242);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__243);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__244);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__245);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__246);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__247);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__248);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__249);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__250);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__251);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__252);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__253);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__256);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__257);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__258);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__259);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__260);
+  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__264);
+  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__269);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__270);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__271);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__272);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__273);
+  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__277);
+  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__286);
+  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__298);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__299);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__300);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__302);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__303);
+  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__311);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__313);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__315);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__318);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__320);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__321);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__322);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__323);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__324);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__325);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__326);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__327);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__328);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__329);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__330);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__331);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__332);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__333);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__334);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__336);
+  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__343);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__344);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__345);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__347);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__348);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__350);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__351);
+  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__359);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__361);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__363);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__365);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__367);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__369);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__373);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__376);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__377);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__378);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__380);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__381);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__382);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__383);
+  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__390);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__391);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__392);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__394);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__397);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__398);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__399);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__400);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__401);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__402);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__404);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__407);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__408);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__410);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__411);
+  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__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__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__432);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__433);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__434);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__442);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__443);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__445);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__446);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__447);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__449);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__451);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__452);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__454);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__455);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__456);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__458);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__459);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__461);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__469);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__470);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__471);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__473);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__474);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__475);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__477);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__478);
+  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__482);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__483);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__488);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__489);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__490);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__492);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__493);
+  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__499);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__501);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__503);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__505);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__507);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__508);
+  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);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__516);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__518);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__519);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__520);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__521);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__522);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__523);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__524);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__525);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__526);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__527);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__528);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__529);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__530);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__531);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__532);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__535);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__540);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__541);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__547);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__549);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__551);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__552);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__553);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__555);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__557);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__559);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__563);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__567);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__568);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__569);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__571);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__572);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__573);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__574);
+  Py_CLEAR(clear_module_state->__pyx_codeobj__575);
+  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_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_7_cython_6cygrpc__ChannelArg);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc__ChannelArg);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc__ChannelArgs);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc__ChannelArgs);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc_Call);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc_Call);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc__CallState);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc__CallState);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc__ChannelState);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc__ChannelState);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc_IntegratedCall);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc_IntegratedCall);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc_SegregatedCall);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc_SegregatedCall);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc_Channel);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc_Channel);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc_CallHandle);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc_CallHandle);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc_CallCredentials);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc_CallCredentials);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc_MetadataPluginCallCredentials);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc_MetadataPluginCallCredentials);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc_CompositeCallCredentials);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc_CompositeCallCredentials);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc_ChannelCredentials);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc_ChannelCredentials);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc_SSLSessionCacheLRU);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc_SSLSessionCacheLRU);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc_SSLChannelCredentials);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc_SSLChannelCredentials);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc_CompositeChannelCredentials);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc_CompositeChannelCredentials);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc_XDSChannelCredentials);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc_XDSChannelCredentials);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc_ServerCertificateConfig);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc_ServerCertificateConfig);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc_ServerCredentials);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc_ServerCredentials);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc_LocalChannelCredentials);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc_LocalChannelCredentials);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc_ALTSChannelCredentials);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc_ALTSChannelCredentials);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc__LatentEventArg);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc__LatentEventArg);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc_CompletionQueue);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc_CompletionQueue);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc_BaseEvent);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc_BaseEvent);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc_ConnectivityEvent);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc_ConnectivityEvent);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc_RequestCallEvent);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc_RequestCallEvent);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc_BatchOperationEvent);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc_BatchOperationEvent);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc_ServerShutdownEvent);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc_ServerShutdownEvent);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc_Operation);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc_Operation);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc_SendInitialMetadataOperation);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc_SendInitialMetadataOperation);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc_SendMessageOperation);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc_SendMessageOperation);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc_SendCloseFromClientOperation);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc_SendCloseFromClientOperation);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc_SendStatusFromServerOperation);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc_SendStatusFromServerOperation);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc_ReceiveInitialMetadataOperation);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc_ReceiveInitialMetadataOperation);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc_ReceiveMessageOperation);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc_ReceiveMessageOperation);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc_ReceiveStatusOnClientOperation);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc_ReceiveStatusOnClientOperation);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc_ReceiveCloseOnServerOperation);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc_ReceiveCloseOnServerOperation);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc_CallDetails);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc_CallDetails);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc_SslPemKeyCertPair);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc_SslPemKeyCertPair);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc_CompressionOptions);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc_CompressionOptions);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc_Server);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc_Server);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc__Tag);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc__Tag);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc__ConnectivityTag);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc__ConnectivityTag);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc__RequestCallTag);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc__RequestCallTag);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc__BatchOperationTag);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc__BatchOperationTag);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc__ServerShutdownTag);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc__ServerShutdownTag);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc_BaseCompletionQueue);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc_BaseCompletionQueue);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc__BoundEventLoop);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc__BoundEventLoop);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc_PollerCompletionQueue);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc_PollerCompletionQueue);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc_AioRpcStatus);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc_AioRpcStatus);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc__AioState);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc__AioState);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc_CallbackFailureHandler);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc_CallbackFailureHandler);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc_CallbackWrapper);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc_CallbackWrapper);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc_GrpcCallWrapper);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc_GrpcCallWrapper);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc__AioCall);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc__AioCall);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc_AioChannel);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc_AioChannel);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc__HandlerCallDetails);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc__HandlerCallDetails);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc_RPCState);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc_RPCState);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc__ServicerContext);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc__ServicerContext);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc__SyncServicerContext);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc__SyncServicerContext);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc__MessageReceiver);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc__MessageReceiver);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc__ConcurrentRpcLimiter);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc__ConcurrentRpcLimiter);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc_AioServer);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc_AioServer);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc__GrpcArgWrapper);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc__GrpcArgWrapper);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc_InsecureChannelCredentials);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc_InsecureChannelCredentials);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc_ComputeEngineChannelCredentials);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc_ComputeEngineChannelCredentials);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc_CensusContext);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc_CensusContext);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_1_next_event);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_1_next_event);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_7_cython_6cygrpc__metadata);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_7_cython_6cygrpc__metadata);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_6_genexpr);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_6_genexpr);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_9___init__);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_9___init__);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_13__receive_message);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_13__receive_message);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_14__send_message);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_14__send_message);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_18_status);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_18_status);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_29_read);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_29_read);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_30_write);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_30_write);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_32_abort);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_32_abort);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_41___anext__);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_41___anext__);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_49__request_call);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_49__request_call);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_51_start);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_51_start);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_53_shutdown);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_53_shutdown);
+  Py_VISIT(traverse_module_state->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination);
+  Py_VISIT(traverse_module_state->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination);
+  Py_VISIT(traverse_module_state->__pyx_ptype___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg);
+  Py_VISIT(traverse_module_state->__pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg);
+  Py_VISIT(traverse_module_state->__pyx_ptype___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_);
+  Py_VISIT(traverse_module_state->__pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_);
+  Py_VISIT(traverse_module_state->__pyx_ptype___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args);
+  Py_VISIT(traverse_module_state->__pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args);
+  Py_VISIT(traverse_module_state->__pyx_ptype___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_);
+  Py_VISIT(traverse_module_state->__pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_0);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_1);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ALTSChannelCredentials);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ALTSChannelCredentials___reduce);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ALTSChannelCredentials___setstat);
+  Py_VISIT(traverse_module_state->__pyx_n_s_AWAIT_THREADS_TIMEOUT_SECONDS);
+  Py_VISIT(traverse_module_state->__pyx_n_s_AbortError);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_Abort_already_called);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_Abort_error_has_been_replaced);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_Abort_error_unexpectedly_suppres);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_Aborting_method_s_due_to_server);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ActiveThreadCount);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ActiveThreadCount___init);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ActiveThreadCount_await_zero_th);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ActiveThreadCount_decrement);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ActiveThreadCount_increment);
+  Py_VISIT(traverse_module_state->__pyx_n_s_AioCall);
+  Py_VISIT(traverse_module_state->__pyx_n_s_AioCall___reduce_cython);
+  Py_VISIT(traverse_module_state->__pyx_n_s_AioCall___setstate_cython);
+  Py_VISIT(traverse_module_state->__pyx_n_s_AioCall__handle_status_once_rec);
+  Py_VISIT(traverse_module_state->__pyx_n_s_AioCall__repr);
+  Py_VISIT(traverse_module_state->__pyx_n_s_AioCall_add_done_callback);
+  Py_VISIT(traverse_module_state->__pyx_n_s_AioCall_cancel);
+  Py_VISIT(traverse_module_state->__pyx_n_s_AioCall_cancelled);
+  Py_VISIT(traverse_module_state->__pyx_n_s_AioCall_done);
+  Py_VISIT(traverse_module_state->__pyx_n_s_AioCall_initial_metadata);
+  Py_VISIT(traverse_module_state->__pyx_n_s_AioCall_initiate_stream_stream);
+  Py_VISIT(traverse_module_state->__pyx_n_s_AioCall_initiate_unary_stream);
+  Py_VISIT(traverse_module_state->__pyx_n_s_AioCall_is_locally_cancelled);
+  Py_VISIT(traverse_module_state->__pyx_n_s_AioCall_is_ok);
+  Py_VISIT(traverse_module_state->__pyx_n_s_AioCall_receive_serialized_mess);
+  Py_VISIT(traverse_module_state->__pyx_n_s_AioCall_send_receive_close);
+  Py_VISIT(traverse_module_state->__pyx_n_s_AioCall_send_serialized_message);
+  Py_VISIT(traverse_module_state->__pyx_n_s_AioCall_set_internal_error);
+  Py_VISIT(traverse_module_state->__pyx_n_s_AioCall_status);
+  Py_VISIT(traverse_module_state->__pyx_n_s_AioCall_stream_unary);
+  Py_VISIT(traverse_module_state->__pyx_n_s_AioCall_time_remaining);
+  Py_VISIT(traverse_module_state->__pyx_n_s_AioCall_unary_unary);
+  Py_VISIT(traverse_module_state->__pyx_n_s_AioChannel);
+  Py_VISIT(traverse_module_state->__pyx_n_s_AioChannel___reduce_cython);
+  Py_VISIT(traverse_module_state->__pyx_n_s_AioChannel___setstate_cython);
+  Py_VISIT(traverse_module_state->__pyx_n_s_AioChannel_call);
+  Py_VISIT(traverse_module_state->__pyx_n_s_AioChannel_check_connectivity_st);
+  Py_VISIT(traverse_module_state->__pyx_n_s_AioChannel_close);
+  Py_VISIT(traverse_module_state->__pyx_n_s_AioChannel_closed);
+  Py_VISIT(traverse_module_state->__pyx_n_s_AioChannel_closing);
+  Py_VISIT(traverse_module_state->__pyx_n_s_AioChannel_watch_connectivity_st);
+  Py_VISIT(traverse_module_state->__pyx_n_s_AioRpcStatus);
+  Py_VISIT(traverse_module_state->__pyx_n_s_AioRpcStatus___reduce_cython);
+  Py_VISIT(traverse_module_state->__pyx_n_s_AioRpcStatus___setstate_cython);
+  Py_VISIT(traverse_module_state->__pyx_n_s_AioRpcStatus_code);
+  Py_VISIT(traverse_module_state->__pyx_n_s_AioRpcStatus_debug_error_string);
+  Py_VISIT(traverse_module_state->__pyx_n_s_AioRpcStatus_details);
+  Py_VISIT(traverse_module_state->__pyx_n_s_AioRpcStatus_trailing_metadata);
+  Py_VISIT(traverse_module_state->__pyx_n_s_AioServer);
+  Py_VISIT(traverse_module_state->__pyx_n_s_AioServer___reduce_cython);
+  Py_VISIT(traverse_module_state->__pyx_n_s_AioServer___setstate_cython);
+  Py_VISIT(traverse_module_state->__pyx_n_s_AioServer__request_call);
+  Py_VISIT(traverse_module_state->__pyx_n_s_AioServer__server_main_loop);
+  Py_VISIT(traverse_module_state->__pyx_n_s_AioServer__serving_task_crash_ha);
+  Py_VISIT(traverse_module_state->__pyx_n_s_AioServer__start_shutting_down);
+  Py_VISIT(traverse_module_state->__pyx_n_s_AioServer_add_generic_rpc_handle);
+  Py_VISIT(traverse_module_state->__pyx_n_s_AioServer_add_insecure_port);
+  Py_VISIT(traverse_module_state->__pyx_n_s_AioServer_add_secure_port);
+  Py_VISIT(traverse_module_state->__pyx_n_s_AioServer_is_running);
+  Py_VISIT(traverse_module_state->__pyx_n_s_AioServer_shutdown);
+  Py_VISIT(traverse_module_state->__pyx_n_s_AioServer_start);
+  Py_VISIT(traverse_module_state->__pyx_n_s_AioServer_wait_for_termination);
+  Py_VISIT(traverse_module_state->__pyx_n_s_AioState);
+  Py_VISIT(traverse_module_state->__pyx_n_s_AioState___reduce_cython);
+  Py_VISIT(traverse_module_state->__pyx_n_s_AioState___setstate_cython);
+  Py_VISIT(traverse_module_state->__pyx_n_s_AssertionError);
+  Py_VISIT(traverse_module_state->__pyx_n_s_AsyncIOEngine);
+  Py_VISIT(traverse_module_state->__pyx_n_s_AttributeError);
+  Py_VISIT(traverse_module_state->__pyx_n_s_BaseCompletionQueue);
+  Py_VISIT(traverse_module_state->__pyx_n_s_BaseCompletionQueue___reduce_cyt);
+  Py_VISIT(traverse_module_state->__pyx_n_s_BaseCompletionQueue___setstate_c);
+  Py_VISIT(traverse_module_state->__pyx_n_s_BaseError);
+  Py_VISIT(traverse_module_state->__pyx_n_s_BaseEvent);
+  Py_VISIT(traverse_module_state->__pyx_n_s_BatchOperationEvent);
+  Py_VISIT(traverse_module_state->__pyx_n_s_BatchOperationEvent___reduce_cyt);
+  Py_VISIT(traverse_module_state->__pyx_n_s_BatchOperationEvent___setstate_c);
+  Py_VISIT(traverse_module_state->__pyx_n_s_BatchOperationTag);
+  Py_VISIT(traverse_module_state->__pyx_n_s_BatchOperationTag___reduce_cyth);
+  Py_VISIT(traverse_module_state->__pyx_n_s_BatchOperationTag___setstate_cy);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_Binary_metadata_key_s_expected_b);
+  Py_VISIT(traverse_module_state->__pyx_n_s_BoundEventLoop);
+  Py_VISIT(traverse_module_state->__pyx_n_s_BoundEventLoop___reduce_cython);
+  Py_VISIT(traverse_module_state->__pyx_n_s_BoundEventLoop___setstate_cytho);
+  Py_VISIT(traverse_module_state->__pyx_n_s_BoundEventLoop_close);
+  Py_VISIT(traverse_module_state->__pyx_n_s_COMPRESSION_METADATA_STRING_MAP);
+  Py_VISIT(traverse_module_state->__pyx_n_s_CUSTOM_IO_MANAGER);
+  Py_VISIT(traverse_module_state->__pyx_n_s_CYGRPC_STATUS_CODE_TO_STATUS_COD);
+  Py_VISIT(traverse_module_state->__pyx_n_s_Call);
+  Py_VISIT(traverse_module_state->__pyx_n_s_CallCredentials);
+  Py_VISIT(traverse_module_state->__pyx_n_s_CallCredentials___reduce_cython);
+  Py_VISIT(traverse_module_state->__pyx_n_s_CallCredentials___setstate_cytho);
+  Py_VISIT(traverse_module_state->__pyx_n_s_CallDetails);
+  Py_VISIT(traverse_module_state->__pyx_n_s_CallDetails___reduce_cython);
+  Py_VISIT(traverse_module_state->__pyx_n_s_CallDetails___setstate_cython);
+  Py_VISIT(traverse_module_state->__pyx_n_s_CallError);
+  Py_VISIT(traverse_module_state->__pyx_n_s_CallHandle);
+  Py_VISIT(traverse_module_state->__pyx_n_s_CallHandle___reduce_cython);
+  Py_VISIT(traverse_module_state->__pyx_n_s_CallHandle___setstate_cython);
+  Py_VISIT(traverse_module_state->__pyx_n_s_CallState);
+  Py_VISIT(traverse_module_state->__pyx_n_s_CallState___reduce_cython);
+  Py_VISIT(traverse_module_state->__pyx_n_s_CallState___setstate_cython);
+  Py_VISIT(traverse_module_state->__pyx_n_s_Call___reduce_cython);
+  Py_VISIT(traverse_module_state->__pyx_n_s_Call___setstate_cython);
+  Py_VISIT(traverse_module_state->__pyx_n_s_Call__custom_op_on_c_call);
+  Py_VISIT(traverse_module_state->__pyx_n_s_Call__start_batch);
+  Py_VISIT(traverse_module_state->__pyx_n_s_Call_cancel);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_Call_credentials_are_only_valid);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_Call_credentials_may_not_be_NULL);
+  Py_VISIT(traverse_module_state->__pyx_n_s_Call_peer);
+  Py_VISIT(traverse_module_state->__pyx_n_s_Call_set_credentials);
+  Py_VISIT(traverse_module_state->__pyx_n_s_Call_start_client_batch);
+  Py_VISIT(traverse_module_state->__pyx_n_s_Call_start_server_batch);
+  Py_VISIT(traverse_module_state->__pyx_n_s_CallbackFailureHandler);
+  Py_VISIT(traverse_module_state->__pyx_n_s_CallbackFailureHandler___reduce);
+  Py_VISIT(traverse_module_state->__pyx_n_s_CallbackFailureHandler___setstat);
+  Py_VISIT(traverse_module_state->__pyx_n_s_CallbackWrapper);
+  Py_VISIT(traverse_module_state->__pyx_n_s_CallbackWrapper___reduce_cython);
+  Py_VISIT(traverse_module_state->__pyx_n_s_CallbackWrapper___setstate_cytho);
+  Py_VISIT(traverse_module_state->__pyx_n_s_CancelledError);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_Cannot_invoke_RPC_on_closed_chan);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_Cannot_invoke_RPC_s);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_Cannot_monitor_channel_state_s);
+  Py_VISIT(traverse_module_state->__pyx_n_s_CensusContext);
+  Py_VISIT(traverse_module_state->__pyx_n_s_CensusContext___reduce_cython);
+  Py_VISIT(traverse_module_state->__pyx_n_s_CensusContext___setstate_cython);
+  Py_VISIT(traverse_module_state->__pyx_n_s_Channel);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ChannelArg);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ChannelArgKey);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ChannelArg___reduce_cython);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ChannelArg___setstate_cython);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ChannelArgs);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ChannelArgs___reduce_cython);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ChannelArgs___setstate_cython);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ChannelCredentials);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ChannelCredentials___reduce_cyth);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ChannelCredentials___setstate_cy);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ChannelState);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ChannelState___reduce_cython);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ChannelState___setstate_cython);
+  Py_VISIT(traverse_module_state->__pyx_n_s_Channel___reduce_cython);
+  Py_VISIT(traverse_module_state->__pyx_n_s_Channel___setstate_cython);
+  Py_VISIT(traverse_module_state->__pyx_n_s_Channel_check_connectivity_state);
+  Py_VISIT(traverse_module_state->__pyx_n_s_Channel_close);
+  Py_VISIT(traverse_module_state->__pyx_n_s_Channel_close_on_fork);
+  Py_VISIT(traverse_module_state->__pyx_n_s_Channel_get_registered_call_hand);
+  Py_VISIT(traverse_module_state->__pyx_n_s_Channel_integrated_call);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_Channel_is_closed);
+  Py_VISIT(traverse_module_state->__pyx_n_s_Channel_next_call_event);
+  Py_VISIT(traverse_module_state->__pyx_n_s_Channel_segregated_call);
+  Py_VISIT(traverse_module_state->__pyx_n_s_Channel_target);
+  Py_VISIT(traverse_module_state->__pyx_n_s_Channel_watch_connectivity_state);
+  Py_VISIT(traverse_module_state->__pyx_n_s_CompletionQueue);
+  Py_VISIT(traverse_module_state->__pyx_n_s_CompletionQueue___reduce_cython);
+  Py_VISIT(traverse_module_state->__pyx_n_s_CompletionQueue___setstate_cytho);
+  Py_VISIT(traverse_module_state->__pyx_n_s_CompletionQueue__internal_poll);
+  Py_VISIT(traverse_module_state->__pyx_n_s_CompletionQueue_clear);
+  Py_VISIT(traverse_module_state->__pyx_n_s_CompletionQueue_poll);
+  Py_VISIT(traverse_module_state->__pyx_n_s_CompletionQueue_shutdown);
+  Py_VISIT(traverse_module_state->__pyx_n_s_CompletionType);
+  Py_VISIT(traverse_module_state->__pyx_n_s_CompositeCallCredentials);
+  Py_VISIT(traverse_module_state->__pyx_n_s_CompositeCallCredentials___reduc);
+  Py_VISIT(traverse_module_state->__pyx_n_s_CompositeCallCredentials___setst);
+  Py_VISIT(traverse_module_state->__pyx_n_s_CompositeChannelCredentials);
+  Py_VISIT(traverse_module_state->__pyx_n_s_CompositeChannelCredentials___re);
+  Py_VISIT(traverse_module_state->__pyx_n_s_CompositeChannelCredentials___se);
+  Py_VISIT(traverse_module_state->__pyx_n_s_CompressionAlgorithm);
+  Py_VISIT(traverse_module_state->__pyx_n_s_CompressionLevel);
+  Py_VISIT(traverse_module_state->__pyx_n_s_CompressionOptions);
+  Py_VISIT(traverse_module_state->__pyx_n_s_CompressionOptions___reduce_cyth);
+  Py_VISIT(traverse_module_state->__pyx_n_s_CompressionOptions___setstate_cy);
+  Py_VISIT(traverse_module_state->__pyx_n_s_CompressionOptions_disable_algor);
+  Py_VISIT(traverse_module_state->__pyx_n_s_CompressionOptions_enable_algori);
+  Py_VISIT(traverse_module_state->__pyx_n_s_CompressionOptions_is_algorithm);
+  Py_VISIT(traverse_module_state->__pyx_n_s_CompressionOptions_to_channel_ar);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_Compression_setting_must_be_spec);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ComputeEngineChannelCredentials);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ComputeEngineChannelCredentials_2);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ComputeEngineChannelCredentials_3);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ConcurrentRpcLimiter);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ConcurrentRpcLimiter___reduce_c);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ConcurrentRpcLimiter___setstate);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ConcurrentRpcLimiter__decrease);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ConcurrentRpcLimiter_check_befo);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ConcurrentRpcLimiter_decrease_o);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_Concurrent_RPC_limit_exceeded);
+  Py_VISIT(traverse_module_state->__pyx_n_s_Condition);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ConnectivityEvent);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ConnectivityEvent___reduce_cytho);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ConnectivityEvent___setstate_cyt);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ConnectivityState);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ConnectivityTag);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ConnectivityTag___reduce_cython);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ConnectivityTag___setstate_cyth);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_Core_should_not_return_GRPC_QUEU);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_Credentials_couldn_t_have_been_s);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_Dedicated_exception_class_for_wa);
+  Py_VISIT(traverse_module_state->__pyx_n_s_DeprecationWarning);
+  Py_VISIT(traverse_module_state->__pyx_n_s_EMPTY_FLAGS);
+  Py_VISIT(traverse_module_state->__pyx_n_s_EMPTY_MASK);
+  Py_VISIT(traverse_module_state->__pyx_n_s_EOF);
+  Py_VISIT(traverse_module_state->__pyx_n_s_EOF_2);
+  Py_VISIT(traverse_module_state->__pyx_n_s_EOF___bool);
+  Py_VISIT(traverse_module_state->__pyx_n_s_EOF___len);
+  Py_VISIT(traverse_module_state->__pyx_n_s_EOF___repr);
+  Py_VISIT(traverse_module_state->__pyx_n_s_EOF___str);
+  Py_VISIT(traverse_module_state->__pyx_n_s_EOF__repr);
+  Py_VISIT(traverse_module_state->__pyx_n_s_EX_USAGE);
+  Py_VISIT(traverse_module_state->__pyx_n_s_Enum);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_Error_fetching_certificate_confi);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_Error_fetching_certificate_confi_2);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_Error_in_callback_for_method_s);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_Error_in_grpc_server_request_cal);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ExecuteBatchError);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_ExecuteBatchError_raised_in_core);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_Exiting_child_due_to_raised_exce);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_Expected_bytes_str_or_unicode_no);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_Expected_int_bytes_or_behavior_g);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_Expected_str_not);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_Expecting_non_ok_status_code);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_Failed_grpc_call_start_batch_wit);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_Failed_s_s);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_Failed_sending_error_status_from);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_Failed_to_get_server_sockets_ple);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_Failed_to_get_servers_please_ens);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_Failed_to_get_the_channel_please);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_Failed_to_get_the_server_please);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_Failed_to_get_the_socket_please);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_Failed_to_get_the_subchannel_ple);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_Failed_to_get_top_channels_pleas);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_Failed_to_receive_any_message_fr);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_Failed_to_shutdown_gRPC_Core_aft);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_Failed_to_shutdown_gRPC_Python_t);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ForkManagedThread);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ForkManagedThread___init);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ForkManagedThread___init___local);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ForkManagedThread_join);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ForkManagedThread_setDaemon);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ForkManagedThread_start);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ForkState);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ForkState___init);
+  Py_VISIT(traverse_module_state->__pyx_n_s_GRPC_ASYNCIO_ENGINE);
+  Py_VISIT(traverse_module_state->__pyx_n_s_GRPC_COMPRESSION_CHANNEL_DEFAULT);
+  Py_VISIT(traverse_module_state->__pyx_n_s_GRPC_COMPRESSION_REQUEST_ALGORIT);
+  Py_VISIT(traverse_module_state->__pyx_n_s_GRPC_ENABLE_FORK_SUPPORT);
+  Py_VISIT(traverse_module_state->__pyx_n_s_GRPC_ENABLE_FORK_SUPPORT_2);
+  Py_VISIT(traverse_module_state->__pyx_n_s_GRPC_PROPAGATE_CANCELLATION);
+  Py_VISIT(traverse_module_state->__pyx_n_s_GRPC_PROPAGATE_CENSUS_STATS_CONT);
+  Py_VISIT(traverse_module_state->__pyx_n_s_GRPC_PROPAGATE_CENSUS_TRACING_CO);
+  Py_VISIT(traverse_module_state->__pyx_n_s_GRPC_PROPAGATE_DEADLINE);
+  Py_VISIT(traverse_module_state->__pyx_n_s_GRPC_PROPAGATE_DEFAULTS);
+  Py_VISIT(traverse_module_state->__pyx_n_s_Group);
+  Py_VISIT(traverse_module_state->__pyx_n_s_GrpcArgWrapper);
+  Py_VISIT(traverse_module_state->__pyx_n_s_GrpcArgWrapper___reduce_cython);
+  Py_VISIT(traverse_module_state->__pyx_n_s_GrpcArgWrapper___setstate_cytho);
+  Py_VISIT(traverse_module_state->__pyx_n_s_GrpcCallWrapper);
+  Py_VISIT(traverse_module_state->__pyx_n_s_HandlerCallDetails);
+  Py_VISIT(traverse_module_state->__pyx_n_s_HandlerCallDetails___reduce_cyt);
+  Py_VISIT(traverse_module_state->__pyx_n_s_HandlerCallDetails___setstate_c);
+  Py_VISIT(traverse_module_state->__pyx_n_s_IMMUTABLE_EMPTY_METADATA);
+  Py_VISIT(traverse_module_state->__pyx_n_s_INTERNAL_CALL_ERROR_MESSAGE_FOR);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ImportError);
+  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_n_s_InitialMetadataFlags);
+  Py_VISIT(traverse_module_state->__pyx_n_s_InsecureChannelCredentials);
+  Py_VISIT(traverse_module_state->__pyx_n_s_InsecureChannelCredentials___red);
+  Py_VISIT(traverse_module_state->__pyx_n_s_InsecureChannelCredentials___set);
+  Py_VISIT(traverse_module_state->__pyx_n_s_IntegratedCall);
+  Py_VISIT(traverse_module_state->__pyx_n_s_IntegratedCall___reduce_cython);
+  Py_VISIT(traverse_module_state->__pyx_n_s_IntegratedCall___setstate_cython);
+  Py_VISIT(traverse_module_state->__pyx_n_s_IntegratedCall_cancel);
+  Py_VISIT(traverse_module_state->__pyx_n_s_IntegratedCall_operate);
+  Py_VISIT(traverse_module_state->__pyx_n_s_InternalError);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_Internal_error_from_Core);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_Internal_gRPC_call_error_d);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_Invalid_encoding_on_s);
+  Py_VISIT(traverse_module_state->__pyx_kp_u_Invalid_trailing_metadata_type_e);
+  Py_VISIT(traverse_module_state->__pyx_n_s_KeyError);
+  Py_VISIT(traverse_module_state->__pyx_n_s_KeyboardInterrupt);
+  Py_VISIT(traverse_module_state->__pyx_n_s_LOGGER);
+  Py_VISIT(traverse_module_state->__pyx_n_s_LatentEventArg);
+  Py_VISIT(traverse_module_state->__pyx_n_s_LocalChannelCredentials);
+  Py_VISIT(traverse_module_state->__pyx_n_s_LocalChannelCredentials___reduce);
+  Py_VISIT(traverse_module_state->__pyx_n_s_LocalChannelCredentials___setsta);
+  Py_VISIT(traverse_module_state->__pyx_n_s_LocalConnectionType);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_Locally_aborted);
+  Py_VISIT(traverse_module_state->__pyx_n_s_Lock);
+  Py_VISIT(traverse_module_state->__pyx_n_s_MessageReceiver);
+  Py_VISIT(traverse_module_state->__pyx_n_s_MessageReceiver___anext);
+  Py_VISIT(traverse_module_state->__pyx_n_s_MessageReceiver___reduce_cython);
+  Py_VISIT(traverse_module_state->__pyx_n_s_MessageReceiver___setstate_cyth);
+  Py_VISIT(traverse_module_state->__pyx_n_s_MessageReceiver__async_message);
+  Py_VISIT(traverse_module_state->__pyx_n_s_MetadataPluginCallCredentials);
+  Py_VISIT(traverse_module_state->__pyx_n_s_MetadataPluginCallCredentials_2);
+  Py_VISIT(traverse_module_state->__pyx_n_s_MetadataPluginCallCredentials_3);
+  Py_VISIT(traverse_module_state->__pyx_n_s_Metadatum);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_Method_not_found);
+  Py_VISIT(traverse_module_state->__pyx_n_s_NON_OK_CALL_REPRESENTATION);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_No_custom_hooks_are_implemented);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_Non_thread_safe_operation);
+  Py_VISIT(traverse_module_state->__pyx_n_s_None);
+  Py_VISIT(traverse_module_state->__pyx_n_s_NotImplementedError);
+  Py_VISIT(traverse_module_state->__pyx_n_s_OK_CALL_REPRESENTATION);
+  Py_VISIT(traverse_module_state->__pyx_n_s_Operation);
+  Py_VISIT(traverse_module_state->__pyx_n_s_OperationType);
+  Py_VISIT(traverse_module_state->__pyx_n_s_Operation___reduce_cython);
+  Py_VISIT(traverse_module_state->__pyx_n_s_Operation___setstate_cython);
+  Py_VISIT(traverse_module_state->__pyx_n_s_Optional);
+  Py_VISIT(traverse_module_state->__pyx_n_s_POLLER);
+  Py_VISIT(traverse_module_state->__pyx_n_s_PickleError);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_Please_report_to_https_github_co);
+  Py_VISIT(traverse_module_state->__pyx_n_s_PollerCompletionQueue);
+  Py_VISIT(traverse_module_state->__pyx_n_s_PollerCompletionQueue___reduce_c);
+  Py_VISIT(traverse_module_state->__pyx_n_s_PollerCompletionQueue___setstate);
+  Py_VISIT(traverse_module_state->__pyx_n_s_PollerCompletionQueue__handle_ev);
+  Py_VISIT(traverse_module_state->__pyx_n_s_PollerCompletionQueue__poll_wrap);
+  Py_VISIT(traverse_module_state->__pyx_n_s_PollerCompletionQueue_bind_loop);
+  Py_VISIT(traverse_module_state->__pyx_n_s_PropagationConstants);
+  Py_VISIT(traverse_module_state->__pyx_n_s_Pyx_CFunc_7_cython_6cygrpc_obj);
+  Py_VISIT(traverse_module_state->__pyx_n_s_Pyx_CFunc_7_cython_6cygrpc_obj_2);
+  Py_VISIT(traverse_module_state->__pyx_n_s_Pyx_CFunc_7_cython_6cygrpc_obj_3);
+  Py_VISIT(traverse_module_state->__pyx_n_s_Pyx_CFunc_7_cython_6cygrpc_voi);
+  Py_VISIT(traverse_module_state->__pyx_n_s_Queue);
+  Py_VISIT(traverse_module_state->__pyx_n_s_RLock);
+  Py_VISIT(traverse_module_state->__pyx_n_s_RPCState);
+  Py_VISIT(traverse_module_state->__pyx_n_s_RPCState___reduce_cython);
+  Py_VISIT(traverse_module_state->__pyx_n_s_RPCState___setstate_cython);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_RPC_already_finished);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_RPC_cancelled_for_servicer_metho);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_RPC_cancelled_for_unknown_reason);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_Raised_if_the_server_is_stopped);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_Raised_upon_unexpected_errors_in);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_Raised_when_calling_abort_in_ser);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_Raised_when_execute_batch_return);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_Raised_when_the_usage_of_API_by);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ReceiveCloseOnServerOperation);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ReceiveCloseOnServerOperation_2);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ReceiveCloseOnServerOperation_3);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ReceiveCloseOnServerOperation_ca);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ReceiveCloseOnServerOperation_ty);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ReceiveInitialMetadataOperation);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ReceiveInitialMetadataOperation_2);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ReceiveInitialMetadataOperation_3);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ReceiveInitialMetadataOperation_4);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ReceiveInitialMetadataOperation_5);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ReceiveMessageOperation);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ReceiveMessageOperation___reduce);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ReceiveMessageOperation___setsta);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ReceiveMessageOperation_message);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ReceiveMessageOperation_type);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ReceiveStatusOnClientOperation);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ReceiveStatusOnClientOperation_2);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ReceiveStatusOnClientOperation_3);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ReceiveStatusOnClientOperation_c);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ReceiveStatusOnClientOperation_d);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ReceiveStatusOnClientOperation_e);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ReceiveStatusOnClientOperation_t);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ReceiveStatusOnClientOperation_t_2);
+  Py_VISIT(traverse_module_state->__pyx_n_s_RequestCallError);
+  Py_VISIT(traverse_module_state->__pyx_n_s_RequestCallEvent);
+  Py_VISIT(traverse_module_state->__pyx_n_s_RequestCallEvent___reduce_cython);
+  Py_VISIT(traverse_module_state->__pyx_n_s_RequestCallEvent___setstate_cyth);
+  Py_VISIT(traverse_module_state->__pyx_n_s_RequestCallTag);
+  Py_VISIT(traverse_module_state->__pyx_n_s_RequestCallTag___reduce_cython);
+  Py_VISIT(traverse_module_state->__pyx_n_s_RequestCallTag___setstate_cytho);
+  Py_VISIT(traverse_module_state->__pyx_n_s_RuntimeError);
+  Py_VISIT(traverse_module_state->__pyx_n_s_SERVICES_TO_EXCLUDE);
+  Py_VISIT(traverse_module_state->__pyx_n_s_SSLChannelCredentials);
+  Py_VISIT(traverse_module_state->__pyx_n_s_SSLChannelCredentials___reduce_c);
+  Py_VISIT(traverse_module_state->__pyx_n_s_SSLChannelCredentials___setstate);
+  Py_VISIT(traverse_module_state->__pyx_n_s_SSLSessionCacheLRU);
+  Py_VISIT(traverse_module_state->__pyx_n_s_SSLSessionCacheLRU___reduce_cyth);
+  Py_VISIT(traverse_module_state->__pyx_n_s_SSLSessionCacheLRU___setstate_cy);
+  Py_VISIT(traverse_module_state->__pyx_n_s_SegregatedCall);
+  Py_VISIT(traverse_module_state->__pyx_n_s_SegregatedCall___reduce_cython);
+  Py_VISIT(traverse_module_state->__pyx_n_s_SegregatedCall___setstate_cython);
+  Py_VISIT(traverse_module_state->__pyx_n_s_SegregatedCall_cancel);
+  Py_VISIT(traverse_module_state->__pyx_n_s_SegregatedCall_next_event);
+  Py_VISIT(traverse_module_state->__pyx_n_s_SegregatedCall_operate);
+  Py_VISIT(traverse_module_state->__pyx_n_s_SendCloseFromClientOperation);
+  Py_VISIT(traverse_module_state->__pyx_n_s_SendCloseFromClientOperation___r);
+  Py_VISIT(traverse_module_state->__pyx_n_s_SendCloseFromClientOperation___s);
+  Py_VISIT(traverse_module_state->__pyx_n_s_SendCloseFromClientOperation_typ);
+  Py_VISIT(traverse_module_state->__pyx_n_s_SendInitialMetadataOperation);
+  Py_VISIT(traverse_module_state->__pyx_n_s_SendInitialMetadataOperation___r);
+  Py_VISIT(traverse_module_state->__pyx_n_s_SendInitialMetadataOperation___s);
+  Py_VISIT(traverse_module_state->__pyx_n_s_SendInitialMetadataOperation_typ);
+  Py_VISIT(traverse_module_state->__pyx_n_s_SendMessageOperation);
+  Py_VISIT(traverse_module_state->__pyx_n_s_SendMessageOperation___reduce_cy);
+  Py_VISIT(traverse_module_state->__pyx_n_s_SendMessageOperation___setstate);
+  Py_VISIT(traverse_module_state->__pyx_n_s_SendMessageOperation_type);
+  Py_VISIT(traverse_module_state->__pyx_n_s_SendStatusFromServerOperation);
+  Py_VISIT(traverse_module_state->__pyx_n_s_SendStatusFromServerOperation_2);
+  Py_VISIT(traverse_module_state->__pyx_n_s_SendStatusFromServerOperation_3);
+  Py_VISIT(traverse_module_state->__pyx_n_s_SendStatusFromServerOperation_ty);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_Send_initial_metadata_failed_alr);
+  Py_VISIT(traverse_module_state->__pyx_n_s_Server);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ServerCertificateConfig);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ServerCertificateConfig___reduce);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ServerCertificateConfig___setsta);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ServerCertificateConfiguration);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ServerCredentials);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ServerCredentials___reduce_cytho);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ServerCredentials___setstate_cyt);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ServerShutdownEvent);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ServerShutdownEvent___reduce_cyt);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ServerShutdownEvent___setstate_c);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ServerShutdownTag);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ServerShutdownTag___reduce_cyth);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ServerShutdownTag___setstate_cy);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ServerStoppedError);
+  Py_VISIT(traverse_module_state->__pyx_n_s_Server___reduce_cython);
+  Py_VISIT(traverse_module_state->__pyx_n_s_Server___setstate_cython);
+  Py_VISIT(traverse_module_state->__pyx_n_s_Server_add_http2_port);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_Server_already_stopped);
+  Py_VISIT(traverse_module_state->__pyx_n_s_Server_cancel_all_calls);
+  Py_VISIT(traverse_module_state->__pyx_n_s_Server_destroy);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_Server_not_in_ready_state);
+  Py_VISIT(traverse_module_state->__pyx_n_s_Server_register_completion_queue);
+  Py_VISIT(traverse_module_state->__pyx_n_s_Server_request_call);
+  Py_VISIT(traverse_module_state->__pyx_n_s_Server_shutdown);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_Server_shutdown_failed_no_comple);
+  Py_VISIT(traverse_module_state->__pyx_n_s_Server_start);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ServicerContext);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ServicerContext___reduce_cython);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ServicerContext___setstate_cyth);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ServicerContext_abort);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ServicerContext_abort_with_stat);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ServicerContext_add_done_callba);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ServicerContext_auth_context);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ServicerContext_cancelled);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ServicerContext_code);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ServicerContext_details);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ServicerContext_disable_next_me);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ServicerContext_done);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ServicerContext_invocation_meta);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ServicerContext_peer);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ServicerContext_peer_identities);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ServicerContext_peer_identity_k);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ServicerContext_read);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ServicerContext_send_initial_me);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ServicerContext_set_code);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ServicerContext_set_compression);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ServicerContext_set_details);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ServicerContext_set_trailing_me);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ServicerContext_time_remaining);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ServicerContext_trailing_metada);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ServicerContext_write);
+  Py_VISIT(traverse_module_state->__pyx_n_s_SslPemKeyCertPair);
+  Py_VISIT(traverse_module_state->__pyx_n_s_SslPemKeyCertPair___reduce_cytho);
+  Py_VISIT(traverse_module_state->__pyx_n_s_SslPemKeyCertPair___setstate_cyt);
+  Py_VISIT(traverse_module_state->__pyx_n_s_StatusCode);
+  Py_VISIT(traverse_module_state->__pyx_n_s_SyncServicerContext);
+  Py_VISIT(traverse_module_state->__pyx_n_s_SyncServicerContext___reduce_cy);
+  Py_VISIT(traverse_module_state->__pyx_n_s_SyncServicerContext___setstate);
+  Py_VISIT(traverse_module_state->__pyx_n_s_SyncServicerContext_abort);
+  Py_VISIT(traverse_module_state->__pyx_n_s_SyncServicerContext_add_callbac);
+  Py_VISIT(traverse_module_state->__pyx_n_s_SyncServicerContext_auth_contex);
+  Py_VISIT(traverse_module_state->__pyx_n_s_SyncServicerContext_disable_nex);
+  Py_VISIT(traverse_module_state->__pyx_n_s_SyncServicerContext_invocation);
+  Py_VISIT(traverse_module_state->__pyx_n_s_SyncServicerContext_peer);
+  Py_VISIT(traverse_module_state->__pyx_n_s_SyncServicerContext_peer_identi);
+  Py_VISIT(traverse_module_state->__pyx_n_s_SyncServicerContext_peer_identi_2);
+  Py_VISIT(traverse_module_state->__pyx_n_s_SyncServicerContext_send_initia);
+  Py_VISIT(traverse_module_state->__pyx_n_s_SyncServicerContext_set_code);
+  Py_VISIT(traverse_module_state->__pyx_n_s_SyncServicerContext_set_compres);
+  Py_VISIT(traverse_module_state->__pyx_n_s_SyncServicerContext_set_details);
+  Py_VISIT(traverse_module_state->__pyx_n_s_SyncServicerContext_set_trailin);
+  Py_VISIT(traverse_module_state->__pyx_n_s_SyncServicerContext_time_remain);
+  Py_VISIT(traverse_module_state->__pyx_n_s_SystemExit);
+  Py_VISIT(traverse_module_state->__pyx_n_s_TRUE);
+  Py_VISIT(traverse_module_state->__pyx_n_s_TRUE_VALUES);
+  Py_VISIT(traverse_module_state->__pyx_n_s_TYPE_METADATA_STRING);
+  Py_VISIT(traverse_module_state->__pyx_n_s_Tag);
+  Py_VISIT(traverse_module_state->__pyx_n_s_Tag___reduce_cython);
+  Py_VISIT(traverse_module_state->__pyx_n_s_Tag___setstate_cython);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_The_base_class_for_exceptions_ge);
+  Py_VISIT(traverse_module_state->__pyx_n_s_Thread);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_Timed_out);
+  Py_VISIT(traverse_module_state->__pyx_n_s_TimeoutError);
+  Py_VISIT(traverse_module_state->__pyx_n_s_True);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_Tuple_Tuple_str_Union_str_bytes);
+  Py_VISIT(traverse_module_state->__pyx_n_s_TypeError);
+  Py_VISIT(traverse_module_state->__pyx_n_s_UNKNOWN_CANCELLATION_DETAILS);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_Unexpected_s_raised_by_servicer);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_Unexpected_s_s);
+  Py_VISIT(traverse_module_state->__pyx_n_s_UnicodeDecodeError);
+  Py_VISIT(traverse_module_state->__pyx_n_s_Unknown);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_Unsupported_engine_type_s);
+  Py_VISIT(traverse_module_state->__pyx_n_s_UsageError);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_Using_s_as_I_O_engine);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ValueError);
+  Py_VISIT(traverse_module_state->__pyx_n_s_WatchConnectivityFailed);
+  Py_VISIT(traverse_module_state->__pyx_n_s_WriteFlag);
+  Py_VISIT(traverse_module_state->__pyx_n_s_XDSChannelCredentials);
+  Py_VISIT(traverse_module_state->__pyx_n_s_XDSChannelCredentials___reduce_c);
+  Py_VISIT(traverse_module_state->__pyx_n_s_XDSChannelCredentials___setstate);
+  Py_VISIT(traverse_module_state->__pyx_n_s_YES);
+  Py_VISIT(traverse_module_state->__pyx_n_s_Yes);
+  Py_VISIT(traverse_module_state->__pyx_n_s__107);
+  Py_VISIT(traverse_module_state->__pyx_n_s__38);
+  Py_VISIT(traverse_module_state->__pyx_kp_u__49);
+  Py_VISIT(traverse_module_state->__pyx_n_s__57);
+  Py_VISIT(traverse_module_state->__pyx_kp_u__58);
+  Py_VISIT(traverse_module_state->__pyx_kp_u__69);
+  Py_VISIT(traverse_module_state->__pyx_kp_b__7);
+  Py_VISIT(traverse_module_state->__pyx_kp_s__7);
+  Py_VISIT(traverse_module_state->__pyx_kp_u__70);
+  Py_VISIT(traverse_module_state->__pyx_kp_u__71);
+  Py_VISIT(traverse_module_state->__pyx_n_s_abort);
+  Py_VISIT(traverse_module_state->__pyx_n_s_abort_with_status);
+  Py_VISIT(traverse_module_state->__pyx_n_s_aborted);
+  Py_VISIT(traverse_module_state->__pyx_n_s_active_thread_count);
+  Py_VISIT(traverse_module_state->__pyx_n_s_actual_code);
+  Py_VISIT(traverse_module_state->__pyx_n_s_add);
+  Py_VISIT(traverse_module_state->__pyx_n_s_add_callback);
+  Py_VISIT(traverse_module_state->__pyx_n_s_add_callback_handler_locals_han);
+  Py_VISIT(traverse_module_state->__pyx_n_s_add_done_callback);
+  Py_VISIT(traverse_module_state->__pyx_n_s_add_generic_rpc_handlers);
+  Py_VISIT(traverse_module_state->__pyx_n_s_add_http2_port);
+  Py_VISIT(traverse_module_state->__pyx_n_s_add_insecure_port);
+  Py_VISIT(traverse_module_state->__pyx_n_s_add_reader);
+  Py_VISIT(traverse_module_state->__pyx_n_s_add_secure_port);
+  Py_VISIT(traverse_module_state->__pyx_n_s_address);
+  Py_VISIT(traverse_module_state->__pyx_n_s_address_c_string);
+  Py_VISIT(traverse_module_state->__pyx_n_s_aenter);
+  Py_VISIT(traverse_module_state->__pyx_n_s_aexit);
+  Py_VISIT(traverse_module_state->__pyx_n_s_after_in_child);
+  Py_VISIT(traverse_module_state->__pyx_n_s_after_in_parent);
+  Py_VISIT(traverse_module_state->__pyx_n_s_agen);
+  Py_VISIT(traverse_module_state->__pyx_n_s_aiter);
+  Py_VISIT(traverse_module_state->__pyx_n_s_algorithm);
+  Py_VISIT(traverse_module_state->__pyx_n_s_already_accepted);
+  Py_VISIT(traverse_module_state->__pyx_n_s_already_exists);
+  Py_VISIT(traverse_module_state->__pyx_n_s_already_finished);
+  Py_VISIT(traverse_module_state->__pyx_n_s_already_invoked);
+  Py_VISIT(traverse_module_state->__pyx_n_s_anext);
+  Py_VISIT(traverse_module_state->__pyx_n_s_append);
+  Py_VISIT(traverse_module_state->__pyx_n_s_apply);
+  Py_VISIT(traverse_module_state->__pyx_n_s_args);
+  Py_VISIT(traverse_module_state->__pyx_n_s_arguments);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ascii);
+  Py_VISIT(traverse_module_state->__pyx_n_s_async_callback_func);
+  Py_VISIT(traverse_module_state->__pyx_n_s_async_generator_to_generator);
+  Py_VISIT(traverse_module_state->__pyx_n_s_async_message_receiver);
+  Py_VISIT(traverse_module_state->__pyx_n_s_async_response_generator);
+  Py_VISIT(traverse_module_state->__pyx_n_s_asyncio);
+  Py_VISIT(traverse_module_state->__pyx_n_s_asyncio_coroutines);
+  Py_VISIT(traverse_module_state->__pyx_n_s_asyncio_tasks);
+  Py_VISIT(traverse_module_state->__pyx_n_s_atexit);
+  Py_VISIT(traverse_module_state->__pyx_n_s_auth_context);
+  Py_VISIT(traverse_module_state->__pyx_n_s_await);
+  Py_VISIT(traverse_module_state->__pyx_n_s_await_zero_threads);
+  Py_VISIT(traverse_module_state->__pyx_n_s_backup_queue);
+  Py_VISIT(traverse_module_state->__pyx_n_s_batch_error);
+  Py_VISIT(traverse_module_state->__pyx_n_s_batch_operation_tag);
+  Py_VISIT(traverse_module_state->__pyx_n_s_batch_operations);
+  Py_VISIT(traverse_module_state->__pyx_n_s_before);
+  Py_VISIT(traverse_module_state->__pyx_kp_b_bin);
+  Py_VISIT(traverse_module_state->__pyx_n_s_bind_loop);
+  Py_VISIT(traverse_module_state->__pyx_n_s_block_if_fork_in_progress);
+  Py_VISIT(traverse_module_state->__pyx_n_s_bool);
+  Py_VISIT(traverse_module_state->__pyx_n_s_buffer_hint);
+  Py_VISIT(traverse_module_state->__pyx_n_s_build_census_context);
+  Py_VISIT(traverse_module_state->__pyx_n_s_bytes_ctx);
+  Py_VISIT(traverse_module_state->__pyx_n_s_c_call_credentials);
+  Py_VISIT(traverse_module_state->__pyx_n_s_c_cert_config);
+  Py_VISIT(traverse_module_state->__pyx_n_s_c_deadline);
+  Py_VISIT(traverse_module_state->__pyx_n_s_c_details);
+  Py_VISIT(traverse_module_state->__pyx_n_s_c_error_details);
+  Py_VISIT(traverse_module_state->__pyx_n_s_c_event);
+  Py_VISIT(traverse_module_state->__pyx_n_s_c_key);
+  Py_VISIT(traverse_module_state->__pyx_n_s_c_options);
+  Py_VISIT(traverse_module_state->__pyx_n_s_c_peer);
+  Py_VISIT(traverse_module_state->__pyx_n_s_c_pem_root_certs);
+  Py_VISIT(traverse_module_state->__pyx_n_s_c_returned_str);
+  Py_VISIT(traverse_module_state->__pyx_n_s_c_target);
+  Py_VISIT(traverse_module_state->__pyx_n_s_call);
+  Py_VISIT(traverse_module_state->__pyx_n_s_call_credentials);
+  Py_VISIT(traverse_module_state->__pyx_n_s_call_credentialses);
+  Py_VISIT(traverse_module_state->__pyx_n_s_call_creds);
+  Py_VISIT(traverse_module_state->__pyx_n_s_call_details);
+  Py_VISIT(traverse_module_state->__pyx_n_s_call_error);
+  Py_VISIT(traverse_module_state->__pyx_n_s_call_handle);
+  Py_VISIT(traverse_module_state->__pyx_n_s_call_queue);
+  Py_VISIT(traverse_module_state->__pyx_n_s_call_soon_threadsafe);
+  Py_VISIT(traverse_module_state->__pyx_n_s_call_state);
+  Py_VISIT(traverse_module_state->__pyx_n_s_callback);
+  Py_VISIT(traverse_module_state->__pyx_n_s_callback_func);
+  Py_VISIT(traverse_module_state->__pyx_n_s_callback_wrapper);
+  Py_VISIT(traverse_module_state->__pyx_n_s_cancel);
+  Py_VISIT(traverse_module_state->__pyx_n_s_cancel_all_calls);
+  Py_VISIT(traverse_module_state->__pyx_n_s_cancelled);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_cannot_register_completion_queue);
+  Py_VISIT(traverse_module_state->__pyx_n_s_capacity);
+  Py_VISIT(traverse_module_state->__pyx_n_s_capsule);
+  Py_VISIT(traverse_module_state->__pyx_n_s_capsule_ptr);
+  Py_VISIT(traverse_module_state->__pyx_n_s_catch_warnings);
+  Py_VISIT(traverse_module_state->__pyx_n_s_cb);
+  Py_VISIT(traverse_module_state->__pyx_n_s_cb_func);
+  Py_VISIT(traverse_module_state->__pyx_n_s_census_ctx);
+  Py_VISIT(traverse_module_state->__pyx_n_s_cert_config);
+  Py_VISIT(traverse_module_state->__pyx_n_s_cert_config_fetcher);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_cert_config_fetcher_must_be_call);
+  Py_VISIT(traverse_module_state->__pyx_n_s_certificate_chain);
+  Py_VISIT(traverse_module_state->__pyx_n_s_certificate_configuration);
+  Py_VISIT(traverse_module_state->__pyx_n_s_cfunc_to_py);
+  Py_VISIT(traverse_module_state->__pyx_n_s_channel);
+  Py_VISIT(traverse_module_state->__pyx_n_s_channel_credentials);
+  Py_VISIT(traverse_module_state->__pyx_n_s_channel_credentials_alts);
+  Py_VISIT(traverse_module_state->__pyx_n_s_channel_credentials_compute_engi);
+  Py_VISIT(traverse_module_state->__pyx_n_s_channel_credentials_insecure);
+  Py_VISIT(traverse_module_state->__pyx_n_s_channel_credentials_local);
+  Py_VISIT(traverse_module_state->__pyx_n_s_channel_id);
+  Py_VISIT(traverse_module_state->__pyx_n_s_channel_state);
+  Py_VISIT(traverse_module_state->__pyx_n_s_channels);
+  Py_VISIT(traverse_module_state->__pyx_n_s_channelz_get_channel);
+  Py_VISIT(traverse_module_state->__pyx_n_s_channelz_get_server);
+  Py_VISIT(traverse_module_state->__pyx_n_s_channelz_get_server_sockets);
+  Py_VISIT(traverse_module_state->__pyx_n_s_channelz_get_servers);
+  Py_VISIT(traverse_module_state->__pyx_n_s_channelz_get_socket);
+  Py_VISIT(traverse_module_state->__pyx_n_s_channelz_get_subchannel);
+  Py_VISIT(traverse_module_state->__pyx_n_s_channelz_get_top_channels);
+  Py_VISIT(traverse_module_state->__pyx_n_s_check_before_request_call);
+  Py_VISIT(traverse_module_state->__pyx_n_s_check_connectivity_state);
+  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_s_clear);
+  Py_VISIT(traverse_module_state->__pyx_n_s_clear_server_call_tracer_factory);
+  Py_VISIT(traverse_module_state->__pyx_n_s_client_config_in_slice);
+  Py_VISIT(traverse_module_state->__pyx_n_s_cline_in_traceback);
+  Py_VISIT(traverse_module_state->__pyx_n_s_close);
+  Py_VISIT(traverse_module_state->__pyx_n_s_close_on_fork);
+  Py_VISIT(traverse_module_state->__pyx_n_s_close_on_fork_2);
+  Py_VISIT(traverse_module_state->__pyx_n_s_closed);
+  Py_VISIT(traverse_module_state->__pyx_n_s_closing);
+  Py_VISIT(traverse_module_state->__pyx_n_s_code);
+  Py_VISIT(traverse_module_state->__pyx_n_s_codecs);
+  Py_VISIT(traverse_module_state->__pyx_n_s_collections);
+  Py_VISIT(traverse_module_state->__pyx_n_s_common);
+  Py_VISIT(traverse_module_state->__pyx_n_s_completion_type);
+  Py_VISIT(traverse_module_state->__pyx_n_s_compression);
+  Py_VISIT(traverse_module_state->__pyx_n_s_compression_algorithm_name);
+  Py_VISIT(traverse_module_state->__pyx_n_s_concurrency_exceeded);
+  Py_VISIT(traverse_module_state->__pyx_n_s_condition);
+  Py_VISIT(traverse_module_state->__pyx_n_s_connecting);
+  Py_VISIT(traverse_module_state->__pyx_n_s_context);
+  Py_VISIT(traverse_module_state->__pyx_n_s_context_loop);
+  Py_VISIT(traverse_module_state->__pyx_n_s_contextvars);
+  Py_VISIT(traverse_module_state->__pyx_n_s_contextvars_supported);
+  Py_VISIT(traverse_module_state->__pyx_n_s_continuation);
+  Py_VISIT(traverse_module_state->__pyx_n_s_copy);
+  Py_VISIT(traverse_module_state->__pyx_n_s_copy_context);
+  Py_VISIT(traverse_module_state->__pyx_n_s_core_function_name);
+  Py_VISIT(traverse_module_state->__pyx_n_s_coro);
+  Py_VISIT(traverse_module_state->__pyx_n_s_create_client_call_tracer);
+  Py_VISIT(traverse_module_state->__pyx_n_s_create_future);
+  Py_VISIT(traverse_module_state->__pyx_n_s_create_server_call_tracer_factor);
+  Py_VISIT(traverse_module_state->__pyx_n_s_create_task);
+  Py_VISIT(traverse_module_state->__pyx_n_s_credentials);
+  Py_VISIT(traverse_module_state->__pyx_n_s_credentials_2);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_credentials_roots_pem);
+  Py_VISIT(traverse_module_state->__pyx_n_s_creds);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ctx);
+  Py_VISIT(traverse_module_state->__pyx_n_s_custom_io_manager);
+  Py_VISIT(traverse_module_state->__pyx_n_s_custom_op_on_c_call);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_cygrpc);
+  Py_VISIT(traverse_module_state->__pyx_n_s_cython_call_credentials);
+  Py_VISIT(traverse_module_state->__pyx_n_s_cython_cygrpc);
+  Py_VISIT(traverse_module_state->__pyx_n_s_daemon);
+  Py_VISIT(traverse_module_state->__pyx_n_s_daemonic);
+  Py_VISIT(traverse_module_state->__pyx_n_s_data);
+  Py_VISIT(traverse_module_state->__pyx_n_s_data_loss);
+  Py_VISIT(traverse_module_state->__pyx_n_s_deadline);
+  Py_VISIT(traverse_module_state->__pyx_n_s_deadline_exceeded);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_dealloc___called_on_running_se);
+  Py_VISIT(traverse_module_state->__pyx_n_s_debug);
+  Py_VISIT(traverse_module_state->__pyx_n_s_debug_error_string);
+  Py_VISIT(traverse_module_state->__pyx_n_s_decode);
+  Py_VISIT(traverse_module_state->__pyx_n_s_decrease_active_rpcs_count);
+  Py_VISIT(traverse_module_state->__pyx_n_s_decrease_once_finished);
+  Py_VISIT(traverse_module_state->__pyx_n_s_decrement);
+  Py_VISIT(traverse_module_state->__pyx_n_s_default_authority);
+  Py_VISIT(traverse_module_state->__pyx_n_s_default_vtable);
+  Py_VISIT(traverse_module_state->__pyx_n_s_deflate);
+  Py_VISIT(traverse_module_state->__pyx_n_s_delete_call_tracer);
+  Py_VISIT(traverse_module_state->__pyx_n_s_destroy);
+  Py_VISIT(traverse_module_state->__pyx_n_s_details);
+  Py_VISIT(traverse_module_state->__pyx_n_s_details_bytes);
+  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_kp_u_disable);
+  Py_VISIT(traverse_module_state->__pyx_n_s_disable_algorithm);
+  Py_VISIT(traverse_module_state->__pyx_n_s_disable_next_message_compression);
+  Py_VISIT(traverse_module_state->__pyx_n_s_discard);
+  Py_VISIT(traverse_module_state->__pyx_n_s_doc);
+  Py_VISIT(traverse_module_state->__pyx_n_s_done);
+  Py_VISIT(traverse_module_state->__pyx_n_s_dump_xds_configs);
+  Py_VISIT(traverse_module_state->__pyx_n_s_e);
+  Py_VISIT(traverse_module_state->__pyx_kp_u_enable);
+  Py_VISIT(traverse_module_state->__pyx_n_s_enable_algorithm);
+  Py_VISIT(traverse_module_state->__pyx_n_s_enable_census);
+  Py_VISIT(traverse_module_state->__pyx_n_s_encode);
+  Py_VISIT(traverse_module_state->__pyx_n_s_end_time);
+  Py_VISIT(traverse_module_state->__pyx_n_s_endswith);
+  Py_VISIT(traverse_module_state->__pyx_n_s_enter);
+  Py_VISIT(traverse_module_state->__pyx_n_s_enter_user_request_generator);
+  Py_VISIT(traverse_module_state->__pyx_n_s_enum);
+  Py_VISIT(traverse_module_state->__pyx_n_s_enumerate);
+  Py_VISIT(traverse_module_state->__pyx_n_s_environ);
+  Py_VISIT(traverse_module_state->__pyx_n_s_errno);
+  Py_VISIT(traverse_module_state->__pyx_n_s_error);
+  Py_VISIT(traverse_module_state->__pyx_n_s_error_code);
+  Py_VISIT(traverse_module_state->__pyx_n_s_error_details);
+  Py_VISIT(traverse_module_state->__pyx_n_s_error_str);
+  Py_VISIT(traverse_module_state->__pyx_n_s_error_string);
+  Py_VISIT(traverse_module_state->__pyx_n_s_event);
+  Py_VISIT(traverse_module_state->__pyx_n_s_exc_info);
+  Py_VISIT(traverse_module_state->__pyx_n_s_exception);
+  Py_VISIT(traverse_module_state->__pyx_n_s_exception_type);
+  Py_VISIT(traverse_module_state->__pyx_n_s_execute_batch);
+  Py_VISIT(traverse_module_state->__pyx_n_s_exit);
+  Py_VISIT(traverse_module_state->__pyx_n_s_exit_2);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_expected_certificate_to_be_bytes);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_expected_pem_key_cert_pairs_to_b);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_expected_registered_completion_q);
+  Py_VISIT(traverse_module_state->__pyx_n_s_failed_precondition);
+  Py_VISIT(traverse_module_state->__pyx_n_s_failure_handler);
+  Py_VISIT(traverse_module_state->__pyx_n_s_fallback_credentials);
+  Py_VISIT(traverse_module_state->__pyx_n_s_fileno);
+  Py_VISIT(traverse_module_state->__pyx_n_s_find_method_handler);
+  Py_VISIT(traverse_module_state->__pyx_n_s_find_method_handler_locals_quer);
+  Py_VISIT(traverse_module_state->__pyx_n_s_finish_handler_with_stream_resp);
+  Py_VISIT(traverse_module_state->__pyx_n_s_finish_handler_with_unary_respo);
+  Py_VISIT(traverse_module_state->__pyx_n_s_finish_ops);
+  Py_VISIT(traverse_module_state->__pyx_n_s_flags);
+  Py_VISIT(traverse_module_state->__pyx_n_s_fn);
+  Py_VISIT(traverse_module_state->__pyx_n_s_force_client_auth);
+  Py_VISIT(traverse_module_state->__pyx_n_s_fork_epoch);
+  Py_VISIT(traverse_module_state->__pyx_n_s_fork_handler_failed);
+  Py_VISIT(traverse_module_state->__pyx_n_s_fork_handler_registered);
+  Py_VISIT(traverse_module_state->__pyx_n_s_fork_handler_registered_lock);
+  Py_VISIT(traverse_module_state->__pyx_n_s_fork_handlers_and_grpc_init);
+  Py_VISIT(traverse_module_state->__pyx_n_s_fork_in_progress);
+  Py_VISIT(traverse_module_state->__pyx_n_s_fork_in_progress_condition);
+  Py_VISIT(traverse_module_state->__pyx_n_s_fork_register_channel);
+  Py_VISIT(traverse_module_state->__pyx_n_s_fork_state);
+  Py_VISIT(traverse_module_state->__pyx_n_s_fork_unregister_channel);
+  Py_VISIT(traverse_module_state->__pyx_n_s_format);
+  Py_VISIT(traverse_module_state->__pyx_n_s_format_exception);
+  Py_VISIT(traverse_module_state->__pyx_n_s_functools);
+  Py_VISIT(traverse_module_state->__pyx_n_s_future);
+  Py_VISIT(traverse_module_state->__pyx_n_s_g_gevent_activated);
+  Py_VISIT(traverse_module_state->__pyx_n_s_g_gevent_pool);
+  Py_VISIT(traverse_module_state->__pyx_n_s_g_gevent_threadpool);
+  Py_VISIT(traverse_module_state->__pyx_n_s_g_interrupt_check_period_ms);
+  Py_VISIT(traverse_module_state->__pyx_kp_u_gc);
+  Py_VISIT(traverse_module_state->__pyx_n_s_gen);
+  Py_VISIT(traverse_module_state->__pyx_n_s_generator_to_async_generator);
+  Py_VISIT(traverse_module_state->__pyx_n_s_generator_to_async_generator_loc);
+  Py_VISIT(traverse_module_state->__pyx_n_s_generic_handler);
+  Py_VISIT(traverse_module_state->__pyx_n_s_generic_handlers);
+  Py_VISIT(traverse_module_state->__pyx_n_s_generic_rpc_handlers);
+  Py_VISIT(traverse_module_state->__pyx_n_s_genexpr);
+  Py_VISIT(traverse_module_state->__pyx_n_s_get);
+  Py_VISIT(traverse_module_state->__pyx_n_s_getLogger);
+  Py_VISIT(traverse_module_state->__pyx_n_s_get_data);
+  Py_VISIT(traverse_module_state->__pyx_n_s_get_deadline_from_context);
+  Py_VISIT(traverse_module_state->__pyx_n_s_get_event_loop);
+  Py_VISIT(traverse_module_state->__pyx_n_s_get_event_loop_policy);
+  Py_VISIT(traverse_module_state->__pyx_n_s_get_fork_epoch);
+  Py_VISIT(traverse_module_state->__pyx_n_s_get_hub);
+  Py_VISIT(traverse_module_state->__pyx_n_s_get_metadata_locals_callback);
+  Py_VISIT(traverse_module_state->__pyx_n_s_get_plugin);
+  Py_VISIT(traverse_module_state->__pyx_n_s_get_registered_call_handle);
+  Py_VISIT(traverse_module_state->__pyx_n_s_get_running_loop);
+  Py_VISIT(traverse_module_state->__pyx_n_s_get_working_loop);
+  Py_VISIT(traverse_module_state->__pyx_n_s_getstate);
+  Py_VISIT(traverse_module_state->__pyx_n_s_gevent);
+  Py_VISIT(traverse_module_state->__pyx_n_s_gevent_decrement_channel_count);
+  Py_VISIT(traverse_module_state->__pyx_n_s_gevent_hub);
+  Py_VISIT(traverse_module_state->__pyx_n_s_gevent_increment_channel_count);
+  Py_VISIT(traverse_module_state->__pyx_n_s_gevent_pool);
+  Py_VISIT(traverse_module_state->__pyx_n_s_grace);
+  Py_VISIT(traverse_module_state->__pyx_n_s_grpc);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_grpc_aio_EOF);
+  Py_VISIT(traverse_module_state->__pyx_n_s_grpc_call_error_string);
+  Py_VISIT(traverse_module_state->__pyx_n_s_grpc_call_wrapper);
+  Py_VISIT(traverse_module_state->__pyx_n_s_grpc_completion_queue_shutdown);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_grpc_python__cygrpc__GrpcArgWrap);
+  Py_VISIT(traverse_module_state->__pyx_n_s_grpc_server_request_call);
+  Py_VISIT(traverse_module_state->__pyx_n_s_grpc_server_shutdown_and_notify);
+  Py_VISIT(traverse_module_state->__pyx_n_s_grpc_shutdown_wrapper);
+  Py_VISIT(traverse_module_state->__pyx_n_s_gzip);
+  Py_VISIT(traverse_module_state->__pyx_n_s_handle_callback_wrapper);
+  Py_VISIT(traverse_module_state->__pyx_n_s_handle_callbacks);
+  Py_VISIT(traverse_module_state->__pyx_n_s_handle_cancellation_from_core);
+  Py_VISIT(traverse_module_state->__pyx_n_s_handle_events);
+  Py_VISIT(traverse_module_state->__pyx_n_s_handle_exceptions);
+  Py_VISIT(traverse_module_state->__pyx_n_s_handle_rpc);
+  Py_VISIT(traverse_module_state->__pyx_n_s_handle_status_once_received);
+  Py_VISIT(traverse_module_state->__pyx_n_s_handle_stream_stream_rpc);
+  Py_VISIT(traverse_module_state->__pyx_n_s_handle_stream_unary_rpc);
+  Py_VISIT(traverse_module_state->__pyx_n_s_handle_unary_stream_rpc);
+  Py_VISIT(traverse_module_state->__pyx_n_s_handle_unary_unary_rpc);
+  Py_VISIT(traverse_module_state->__pyx_n_s_handler);
+  Py_VISIT(traverse_module_state->__pyx_n_s_handler_call_details);
+  Py_VISIT(traverse_module_state->__pyx_n_s_hex_codec);
+  Py_VISIT(traverse_module_state->__pyx_n_s_high);
+  Py_VISIT(traverse_module_state->__pyx_n_s_host);
+  Py_VISIT(traverse_module_state->__pyx_n_s_http2_initial_sequence_number);
+  Py_VISIT(traverse_module_state->__pyx_n_s_hub);
+  Py_VISIT(traverse_module_state->__pyx_n_s_id);
+  Py_VISIT(traverse_module_state->__pyx_n_s_identities);
+  Py_VISIT(traverse_module_state->__pyx_n_s_identity);
+  Py_VISIT(traverse_module_state->__pyx_n_s_identity_key);
+  Py_VISIT(traverse_module_state->__pyx_n_s_idle);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_if_error_code_is_specified_so_mu);
+  Py_VISIT(traverse_module_state->__pyx_n_s_import);
+  Py_VISIT(traverse_module_state->__pyx_n_s_inbound_ops);
+  Py_VISIT(traverse_module_state->__pyx_n_s_increment);
+  Py_VISIT(traverse_module_state->__pyx_n_s_init);
+  Py_VISIT(traverse_module_state->__pyx_n_s_init_grpc_aio);
+  Py_VISIT(traverse_module_state->__pyx_n_s_init_grpc_gevent);
+  Py_VISIT(traverse_module_state->__pyx_n_s_init_subclass);
+  Py_VISIT(traverse_module_state->__pyx_n_s_initial_cert_config);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_initial_cert_config_must_be_a_gr);
+  Py_VISIT(traverse_module_state->__pyx_n_s_initial_metadata);
+  Py_VISIT(traverse_module_state->__pyx_n_s_initial_metadata_op);
+  Py_VISIT(traverse_module_state->__pyx_n_s_initializing);
+  Py_VISIT(traverse_module_state->__pyx_n_s_initiate_stream_stream);
+  Py_VISIT(traverse_module_state->__pyx_n_s_initiate_unary_stream);
+  Py_VISIT(traverse_module_state->__pyx_n_s_insecure_server_credentials);
+  Py_VISIT(traverse_module_state->__pyx_n_s_inspect);
+  Py_VISIT(traverse_module_state->__pyx_n_s_install_context_from_request_cal);
+  Py_VISIT(traverse_module_state->__pyx_n_s_install_context_from_request_cal_2);
+  Py_VISIT(traverse_module_state->__pyx_n_s_int);
+  Py_VISIT(traverse_module_state->__pyx_n_s_integrated_call);
+  Py_VISIT(traverse_module_state->__pyx_n_s_integrated_call_locals_on_succe);
+  Py_VISIT(traverse_module_state->__pyx_n_s_intercept_service);
+  Py_VISIT(traverse_module_state->__pyx_n_s_interceptor);
+  Py_VISIT(traverse_module_state->__pyx_n_s_interceptors);
+  Py_VISIT(traverse_module_state->__pyx_n_s_internal);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_internal_error_user_data_must_be);
+  Py_VISIT(traverse_module_state->__pyx_n_s_internal_poll);
+  Py_VISIT(traverse_module_state->__pyx_n_s_invalid_argument);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_invalid_call_object_cannot_be_us);
+  Py_VISIT(traverse_module_state->__pyx_n_s_invalid_flags);
+  Py_VISIT(traverse_module_state->__pyx_n_s_invalid_metadata);
+  Py_VISIT(traverse_module_state->__pyx_n_s_invocation_metadata);
+  Py_VISIT(traverse_module_state->__pyx_n_s_is_algorithm_enabled);
+  Py_VISIT(traverse_module_state->__pyx_n_s_is_async_handler);
+  Py_VISIT(traverse_module_state->__pyx_n_s_is_coroutine);
+  Py_VISIT(traverse_module_state->__pyx_n_s_is_fork_support_enabled);
+  Py_VISIT(traverse_module_state->__pyx_n_s_is_locally_cancelled);
+  Py_VISIT(traverse_module_state->__pyx_n_s_is_ok);
+  Py_VISIT(traverse_module_state->__pyx_n_s_is_running);
+  Py_VISIT(traverse_module_state->__pyx_n_s_is_sampled);
+  Py_VISIT(traverse_module_state->__pyx_n_s_is_valid);
+  Py_VISIT(traverse_module_state->__pyx_n_s_isasyncgenfunction);
+  Py_VISIT(traverse_module_state->__pyx_n_s_isawaitable);
+  Py_VISIT(traverse_module_state->__pyx_n_s_iscoroutinefunction);
+  Py_VISIT(traverse_module_state->__pyx_kp_u_isenabled);
+  Py_VISIT(traverse_module_state->__pyx_n_s_item);
+  Py_VISIT(traverse_module_state->__pyx_n_s_iter);
+  Py_VISIT(traverse_module_state->__pyx_n_s_join);
+  Py_VISIT(traverse_module_state->__pyx_n_s_key);
+  Py_VISIT(traverse_module_state->__pyx_n_s_keys);
+  Py_VISIT(traverse_module_state->__pyx_n_s_last_observed_state);
+  Py_VISIT(traverse_module_state->__pyx_n_s_latent_event_arg);
+  Py_VISIT(traverse_module_state->__pyx_n_s_len);
+  Py_VISIT(traverse_module_state->__pyx_n_s_lk);
+  Py_VISIT(traverse_module_state->__pyx_n_s_local_connect_type);
+  Py_VISIT(traverse_module_state->__pyx_n_s_local_tcp);
+  Py_VISIT(traverse_module_state->__pyx_n_s_logging);
+  Py_VISIT(traverse_module_state->__pyx_n_s_loop);
+  Py_VISIT(traverse_module_state->__pyx_n_s_low);
+  Py_VISIT(traverse_module_state->__pyx_n_s_lower);
+  Py_VISIT(traverse_module_state->__pyx_n_s_main);
+  Py_VISIT(traverse_module_state->__pyx_n_s_managed_target);
+  Py_VISIT(traverse_module_state->__pyx_n_s_max_concurrent_streams);
+  Py_VISIT(traverse_module_state->__pyx_n_s_max_receive_message_length);
+  Py_VISIT(traverse_module_state->__pyx_n_s_max_results);
+  Py_VISIT(traverse_module_state->__pyx_n_s_max_send_message_length);
+  Py_VISIT(traverse_module_state->__pyx_n_s_maximum_concurrent_rpcs);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_maximum_concurrent_rpcs_should_b);
+  Py_VISIT(traverse_module_state->__pyx_n_s_maxsize);
+  Py_VISIT(traverse_module_state->__pyx_n_s_maybe_save_server_trace_context);
+  Py_VISIT(traverse_module_state->__pyx_n_s_medium);
+  Py_VISIT(traverse_module_state->__pyx_n_s_members);
+  Py_VISIT(traverse_module_state->__pyx_n_s_message);
+  Py_VISIT(traverse_module_state->__pyx_n_s_metaclass);
+  Py_VISIT(traverse_module_state->__pyx_n_s_metadata);
+  Py_VISIT(traverse_module_state->__pyx_n_s_metadata_locals_genexpr);
+  Py_VISIT(traverse_module_state->__pyx_n_s_metadata_plugin);
+  Py_VISIT(traverse_module_state->__pyx_n_s_metadata_sent_observer);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_metadata_was_invalid_s);
+  Py_VISIT(traverse_module_state->__pyx_n_s_method);
+  Py_VISIT(traverse_module_state->__pyx_n_s_method_handler);
+  Py_VISIT(traverse_module_state->__pyx_n_s_module);
+  Py_VISIT(traverse_module_state->__pyx_n_s_mro_entries);
+  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_namedtuple);
+  Py_VISIT(traverse_module_state->__pyx_n_s_new);
+  Py_VISIT(traverse_module_state->__pyx_n_s_new_event_loop);
+  Py_VISIT(traverse_module_state->__pyx_n_s_next_call_event);
+  Py_VISIT(traverse_module_state->__pyx_n_s_next_call_event_locals_on_succes);
+  Py_VISIT(traverse_module_state->__pyx_n_s_next_event);
+  Py_VISIT(traverse_module_state->__pyx_n_s_next_event_locals_on_failure);
+  Py_VISIT(traverse_module_state->__pyx_n_s_next_event_locals_on_success);
+  Py_VISIT(traverse_module_state->__pyx_n_s_no_compress);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_no_default___reduce___due_to_non);
+  Py_VISIT(traverse_module_state->__pyx_n_s_none);
+  Py_VISIT(traverse_module_state->__pyx_n_s_not_found);
+  Py_VISIT(traverse_module_state->__pyx_n_s_not_invoked);
+  Py_VISIT(traverse_module_state->__pyx_n_s_not_on_client);
+  Py_VISIT(traverse_module_state->__pyx_n_s_not_on_server);
+  Py_VISIT(traverse_module_state->__pyx_n_s_notify_all);
+  Py_VISIT(traverse_module_state->__pyx_n_s_num_active_threads);
+  Py_VISIT(traverse_module_state->__pyx_n_s_object);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_object_2);
+  Py_VISIT(traverse_module_state->__pyx_n_s_observability);
+  Py_VISIT(traverse_module_state->__pyx_n_s_observability_enabled);
+  Py_VISIT(traverse_module_state->__pyx_n_s_observability_plugin);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_of_RPC_that_terminated_with_sta);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_of_RPC_that_terminated_with_sta_2);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ok);
+  Py_VISIT(traverse_module_state->__pyx_n_s_on_failure);
+  Py_VISIT(traverse_module_state->__pyx_n_s_on_success);
+  Py_VISIT(traverse_module_state->__pyx_n_s_op);
+  Py_VISIT(traverse_module_state->__pyx_n_s_operate);
+  Py_VISIT(traverse_module_state->__pyx_n_s_operation_complete);
+  Py_VISIT(traverse_module_state->__pyx_n_s_operations);
+  Py_VISIT(traverse_module_state->__pyx_n_s_operationses_and_tags);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ops);
+  Py_VISIT(traverse_module_state->__pyx_n_s_options);
+  Py_VISIT(traverse_module_state->__pyx_n_s_os);
+  Py_VISIT(traverse_module_state->__pyx_n_s_out_of_range);
+  Py_VISIT(traverse_module_state->__pyx_n_s_outbound_initial_metadata);
+  Py_VISIT(traverse_module_state->__pyx_n_s_outbound_ops);
+  Py_VISIT(traverse_module_state->__pyx_n_s_partial);
+  Py_VISIT(traverse_module_state->__pyx_n_s_peer);
+  Py_VISIT(traverse_module_state->__pyx_n_s_peer_identities);
+  Py_VISIT(traverse_module_state->__pyx_n_s_peer_identity_key);
+  Py_VISIT(traverse_module_state->__pyx_n_s_pem_key_cert_pairs);
+  Py_VISIT(traverse_module_state->__pyx_n_s_pem_root_certificates);
+  Py_VISIT(traverse_module_state->__pyx_n_s_pem_root_certs);
+  Py_VISIT(traverse_module_state->__pyx_n_s_permission_denied);
+  Py_VISIT(traverse_module_state->__pyx_n_s_pickle);
+  Py_VISIT(traverse_module_state->__pyx_n_s_pkgutil);
+  Py_VISIT(traverse_module_state->__pyx_n_s_plugin);
+  Py_VISIT(traverse_module_state->__pyx_n_s_poll);
+  Py_VISIT(traverse_module_state->__pyx_n_s_poll_wrapper);
+  Py_VISIT(traverse_module_state->__pyx_n_s_poller);
+  Py_VISIT(traverse_module_state->__pyx_n_s_pool);
+  Py_VISIT(traverse_module_state->__pyx_n_s_pop);
+  Py_VISIT(traverse_module_state->__pyx_n_s_postfork_state_to_reset);
+  Py_VISIT(traverse_module_state->__pyx_n_s_postfork_states_to_reset);
+  Py_VISIT(traverse_module_state->__pyx_n_s_prepare);
+  Py_VISIT(traverse_module_state->__pyx_n_s_primary_user_agent_string);
+  Py_VISIT(traverse_module_state->__pyx_n_s_print_exc);
+  Py_VISIT(traverse_module_state->__pyx_n_s_private_key);
+  Py_VISIT(traverse_module_state->__pyx_n_s_properties);
+  Py_VISIT(traverse_module_state->__pyx_n_s_property);
+  Py_VISIT(traverse_module_state->__pyx_n_s_put);
+  Py_VISIT(traverse_module_state->__pyx_n_s_py_auth_context);
+  Py_VISIT(traverse_module_state->__pyx_n_s_python_call_credentials);
+  Py_VISIT(traverse_module_state->__pyx_n_s_pyx_PickleError);
+  Py_VISIT(traverse_module_state->__pyx_n_s_pyx_capi);
+  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_AioServer);
+  Py_VISIT(traverse_module_state->__pyx_n_s_pyx_unpickle_CensusContext);
+  Py_VISIT(traverse_module_state->__pyx_n_s_pyx_unpickle_ChannelCredential);
+  Py_VISIT(traverse_module_state->__pyx_n_s_pyx_unpickle_InsecureChannelCr);
+  Py_VISIT(traverse_module_state->__pyx_n_s_pyx_unpickle__Tag);
+  Py_VISIT(traverse_module_state->__pyx_n_s_pyx_vtable);
+  Py_VISIT(traverse_module_state->__pyx_n_s_qualname);
+  Py_VISIT(traverse_module_state->__pyx_n_s_query_call);
+  Py_VISIT(traverse_module_state->__pyx_n_s_query_handler);
+  Py_VISIT(traverse_module_state->__pyx_n_s_query_handlers);
+  Py_VISIT(traverse_module_state->__pyx_n_s_queue);
+  Py_VISIT(traverse_module_state->__pyx_n_s_queue_deadline);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_queue_must_be_live);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_queue_must_be_shutting_down_to_b);
+  Py_VISIT(traverse_module_state->__pyx_n_s_queue_shutdown);
+  Py_VISIT(traverse_module_state->__pyx_n_s_queue_timeout);
+  Py_VISIT(traverse_module_state->__pyx_n_s_raise_if_not_valid_trailing_meta);
+  Py_VISIT(traverse_module_state->__pyx_n_s_range);
+  Py_VISIT(traverse_module_state->__pyx_n_s_raw_message);
+  Py_VISIT(traverse_module_state->__pyx_n_s_read);
+  Py_VISIT(traverse_module_state->__pyx_n_s_read_socket);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ready);
+  Py_VISIT(traverse_module_state->__pyx_n_s_receive_close_on_server);
+  Py_VISIT(traverse_module_state->__pyx_n_s_receive_initial_metadata);
+  Py_VISIT(traverse_module_state->__pyx_n_s_receive_initial_metadata_2);
+  Py_VISIT(traverse_module_state->__pyx_n_s_receive_initial_metadata_op);
+  Py_VISIT(traverse_module_state->__pyx_n_s_receive_message);
+  Py_VISIT(traverse_module_state->__pyx_n_s_receive_message_2);
+  Py_VISIT(traverse_module_state->__pyx_n_s_receive_message_op);
+  Py_VISIT(traverse_module_state->__pyx_n_s_receive_op);
+  Py_VISIT(traverse_module_state->__pyx_n_s_receive_serialized_message);
+  Py_VISIT(traverse_module_state->__pyx_n_s_receive_status_on_client);
+  Py_VISIT(traverse_module_state->__pyx_n_s_receive_status_on_client_op);
+  Py_VISIT(traverse_module_state->__pyx_n_s_received_message);
+  Py_VISIT(traverse_module_state->__pyx_n_s_recv);
+  Py_VISIT(traverse_module_state->__pyx_n_s_reduce);
+  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_register);
+  Py_VISIT(traverse_module_state->__pyx_n_s_register_at_fork);
+  Py_VISIT(traverse_module_state->__pyx_n_s_register_completion_queue);
+  Py_VISIT(traverse_module_state->__pyx_n_s_registered_call_handle);
+  Py_VISIT(traverse_module_state->__pyx_n_s_remove_reader);
+  Py_VISIT(traverse_module_state->__pyx_n_s_repr);
+  Py_VISIT(traverse_module_state->__pyx_n_s_repr_2);
+  Py_VISIT(traverse_module_state->__pyx_n_s_request);
+  Py_VISIT(traverse_module_state->__pyx_n_s_request_call);
+  Py_VISIT(traverse_module_state->__pyx_n_s_request_call_2);
+  Py_VISIT(traverse_module_state->__pyx_n_s_request_call_tag);
+  Py_VISIT(traverse_module_state->__pyx_n_s_request_deserializer);
+  Py_VISIT(traverse_module_state->__pyx_n_s_request_iterator);
+  Py_VISIT(traverse_module_state->__pyx_n_s_request_message);
+  Py_VISIT(traverse_module_state->__pyx_n_s_request_raw);
+  Py_VISIT(traverse_module_state->__pyx_n_s_request_streaming);
+  Py_VISIT(traverse_module_state->__pyx_n_s_reset_grpc_config_vars);
+  Py_VISIT(traverse_module_state->__pyx_n_s_reset_postfork_child);
+  Py_VISIT(traverse_module_state->__pyx_n_s_resource_exhausted);
+  Py_VISIT(traverse_module_state->__pyx_n_s_response);
+  Py_VISIT(traverse_module_state->__pyx_n_s_response_message);
+  Py_VISIT(traverse_module_state->__pyx_n_s_response_raw);
+  Py_VISIT(traverse_module_state->__pyx_n_s_response_serializer);
+  Py_VISIT(traverse_module_state->__pyx_n_s_response_streaming);
+  Py_VISIT(traverse_module_state->__pyx_n_s_result);
+  Py_VISIT(traverse_module_state->__pyx_n_s_retain_self);
+  Py_VISIT(traverse_module_state->__pyx_n_s_return);
+  Py_VISIT(traverse_module_state->__pyx_n_s_return_from_user_request_generat);
+  Py_VISIT(traverse_module_state->__pyx_n_s_rpc_coro);
+  Py_VISIT(traverse_module_state->__pyx_n_s_rpc_state);
+  Py_VISIT(traverse_module_state->__pyx_n_s_rpc_task);
+  Py_VISIT(traverse_module_state->__pyx_n_s_run);
+  Py_VISIT(traverse_module_state->__pyx_n_s_run_2);
+  Py_VISIT(traverse_module_state->__pyx_n_s_run_coroutine_threadsafe);
+  Py_VISIT(traverse_module_state->__pyx_n_s_run_in_executor);
+  Py_VISIT(traverse_module_state->__pyx_n_s_run_interceptor);
+  Py_VISIT(traverse_module_state->__pyx_n_s_run_spawn_greenlets);
+  Py_VISIT(traverse_module_state->__pyx_n_s_run_with_context);
+  Py_VISIT(traverse_module_state->__pyx_n_s_run_with_context_locals__run);
+  Py_VISIT(traverse_module_state->__pyx_n_s_runtime_error);
+  Py_VISIT(traverse_module_state->__pyx_n_s_save_trace_context);
+  Py_VISIT(traverse_module_state->__pyx_n_s_schedule_coro_threadsafe);
+  Py_VISIT(traverse_module_state->__pyx_n_s_schedule_rpc_coro);
+  Py_VISIT(traverse_module_state->__pyx_n_s_secondary_user_agent_string);
+  Py_VISIT(traverse_module_state->__pyx_n_s_segregated_call);
+  Py_VISIT(traverse_module_state->__pyx_n_s_segregated_call_locals_on_succe);
+  Py_VISIT(traverse_module_state->__pyx_n_s_self);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_self__cq_cannot_be_converted_to);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_self_arg_cannot_be_converted_to);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_self_c_argument_cannot_be_conver);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_self_c_credentials_cannot_be_con);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_self_c_op_cannot_be_converted_to);
+  Py_VISIT(traverse_module_state->__pyx_n_s_send);
+  Py_VISIT(traverse_module_state->__pyx_n_s_send_close_from_client);
+  Py_VISIT(traverse_module_state->__pyx_n_s_send_close_op);
+  Py_VISIT(traverse_module_state->__pyx_n_s_send_error_status_from_server);
+  Py_VISIT(traverse_module_state->__pyx_n_s_send_initial_metadata);
+  Py_VISIT(traverse_module_state->__pyx_n_s_send_initial_metadata_2);
+  Py_VISIT(traverse_module_state->__pyx_n_s_send_initial_metadata_op);
+  Py_VISIT(traverse_module_state->__pyx_n_s_send_message);
+  Py_VISIT(traverse_module_state->__pyx_n_s_send_message_2);
+  Py_VISIT(traverse_module_state->__pyx_n_s_send_message_op);
+  Py_VISIT(traverse_module_state->__pyx_n_s_send_receive_close);
+  Py_VISIT(traverse_module_state->__pyx_n_s_send_serialized_message);
+  Py_VISIT(traverse_module_state->__pyx_n_s_send_status_from_server);
+  Py_VISIT(traverse_module_state->__pyx_n_s_server);
+  Py_VISIT(traverse_module_state->__pyx_n_s_server_call_tracer);
+  Py_VISIT(traverse_module_state->__pyx_n_s_server_certificate_config_ssl);
+  Py_VISIT(traverse_module_state->__pyx_n_s_server_credentials);
+  Py_VISIT(traverse_module_state->__pyx_n_s_server_credentials_alts);
+  Py_VISIT(traverse_module_state->__pyx_n_s_server_credentials_local);
+  Py_VISIT(traverse_module_state->__pyx_n_s_server_credentials_ssl);
+  Py_VISIT(traverse_module_state->__pyx_n_s_server_credentials_ssl_dynamic_c);
+  Py_VISIT(traverse_module_state->__pyx_n_s_server_id);
+  Py_VISIT(traverse_module_state->__pyx_n_s_server_main_loop);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_server_must_be_started_and_not_s);
+  Py_VISIT(traverse_module_state->__pyx_n_s_server_queue);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_server_queue_must_be_a_registere);
+  Py_VISIT(traverse_module_state->__pyx_n_s_server_started);
+  Py_VISIT(traverse_module_state->__pyx_n_s_service);
+  Py_VISIT(traverse_module_state->__pyx_n_s_service_accounts);
+  Py_VISIT(traverse_module_state->__pyx_n_s_servicer_context);
+  Py_VISIT(traverse_module_state->__pyx_n_s_serving_task_crash_handler);
+  Py_VISIT(traverse_module_state->__pyx_n_s_setDaemon);
+  Py_VISIT(traverse_module_state->__pyx_n_s_set_async_callback_func);
+  Py_VISIT(traverse_module_state->__pyx_n_s_set_census_context_on_call);
+  Py_VISIT(traverse_module_state->__pyx_n_s_set_code);
+  Py_VISIT(traverse_module_state->__pyx_n_s_set_compression);
+  Py_VISIT(traverse_module_state->__pyx_n_s_set_credentials);
+  Py_VISIT(traverse_module_state->__pyx_n_s_set_details);
+  Py_VISIT(traverse_module_state->__pyx_n_s_set_exception);
+  Py_VISIT(traverse_module_state->__pyx_n_s_set_instrumentation_context_on_c);
+  Py_VISIT(traverse_module_state->__pyx_n_s_set_internal_error);
+  Py_VISIT(traverse_module_state->__pyx_n_s_set_name);
+  Py_VISIT(traverse_module_state->__pyx_n_s_set_result);
+  Py_VISIT(traverse_module_state->__pyx_n_s_set_server_call_tracer_factory);
+  Py_VISIT(traverse_module_state->__pyx_n_s_set_trailing_metadata);
+  Py_VISIT(traverse_module_state->__pyx_n_s_setblocking);
+  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_shield);
+  Py_VISIT(traverse_module_state->__pyx_n_s_shutdown);
+  Py_VISIT(traverse_module_state->__pyx_n_s_shutdown_await_next_greenlet);
+  Py_VISIT(traverse_module_state->__pyx_n_s_shutdown_cq);
+  Py_VISIT(traverse_module_state->__pyx_n_s_shutdown_grpc_aio);
+  Py_VISIT(traverse_module_state->__pyx_n_s_shutting_down_server);
+  Py_VISIT(traverse_module_state->__pyx_n_s_simplefilter);
+  Py_VISIT(traverse_module_state->__pyx_n_s_sleep);
+  Py_VISIT(traverse_module_state->__pyx_n_s_socket);
+  Py_VISIT(traverse_module_state->__pyx_n_s_socket_id);
+  Py_VISIT(traverse_module_state->__pyx_n_s_socketpair);
+  Py_VISIT(traverse_module_state->__pyx_n_s_span_id);
+  Py_VISIT(traverse_module_state->__pyx_n_s_spawn);
+  Py_VISIT(traverse_module_state->__pyx_n_s_spawn_callback_async);
+  Py_VISIT(traverse_module_state->__pyx_n_s_spawn_callback_in_thread);
+  Py_VISIT(traverse_module_state->__pyx_n_s_spawn_greenlets);
+  Py_VISIT(traverse_module_state->__pyx_n_s_spec);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_src_python_grpcio_grpc__cython);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_src_python_grpcio_grpc__cython_10);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_src_python_grpcio_grpc__cython_11);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_src_python_grpcio_grpc__cython_12);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_src_python_grpcio_grpc__cython_13);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_src_python_grpcio_grpc__cython_14);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_src_python_grpcio_grpc__cython_15);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_src_python_grpcio_grpc__cython_16);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_src_python_grpcio_grpc__cython_17);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_src_python_grpcio_grpc__cython_18);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_src_python_grpcio_grpc__cython_19);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_src_python_grpcio_grpc__cython_2);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_src_python_grpcio_grpc__cython_20);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_src_python_grpcio_grpc__cython_21);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_src_python_grpcio_grpc__cython_22);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_src_python_grpcio_grpc__cython_23);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_src_python_grpcio_grpc__cython_3);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_src_python_grpcio_grpc__cython_4);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_src_python_grpcio_grpc__cython_5);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_src_python_grpcio_grpc__cython_6);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_src_python_grpcio_grpc__cython_7);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_src_python_grpcio_grpc__cython_8);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_src_python_grpcio_grpc__cython_9);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ssl_session_cache);
+  Py_VISIT(traverse_module_state->__pyx_n_s_ssl_target_name_override);
+  Py_VISIT(traverse_module_state->__pyx_n_s_start);
+  Py_VISIT(traverse_module_state->__pyx_n_s_start_batch);
+  Py_VISIT(traverse_module_state->__pyx_n_s_start_channel_id);
+  Py_VISIT(traverse_module_state->__pyx_n_s_start_client_batch);
+  Py_VISIT(traverse_module_state->__pyx_n_s_start_server_batch);
+  Py_VISIT(traverse_module_state->__pyx_n_s_start_server_id);
+  Py_VISIT(traverse_module_state->__pyx_n_s_start_shutting_down);
+  Py_VISIT(traverse_module_state->__pyx_n_s_start_socket_id);
+  Py_VISIT(traverse_module_state->__pyx_n_s_started_tag);
+  Py_VISIT(traverse_module_state->__pyx_n_s_started_tags);
+  Py_VISIT(traverse_module_state->__pyx_n_s_state);
+  Py_VISIT(traverse_module_state->__pyx_n_s_status);
+  Py_VISIT(traverse_module_state->__pyx_n_s_status_code);
+  Py_VISIT(traverse_module_state->__pyx_n_s_status_task);
+  Py_VISIT(traverse_module_state->__pyx_n_s_stored_ctx);
+  Py_VISIT(traverse_module_state->__pyx_n_s_str);
+  Py_VISIT(traverse_module_state->__pyx_n_s_str_2);
+  Py_VISIT(traverse_module_state->__pyx_n_s_stream_handler);
+  Py_VISIT(traverse_module_state->__pyx_n_s_stream_stream);
+  Py_VISIT(traverse_module_state->__pyx_n_s_stream_unary);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_stringsource);
+  Py_VISIT(traverse_module_state->__pyx_n_s_subchannel_id);
+  Py_VISIT(traverse_module_state->__pyx_n_s_success);
+  Py_VISIT(traverse_module_state->__pyx_n_s_super);
+  Py_VISIT(traverse_module_state->__pyx_n_s_sync_servicer_context);
+  Py_VISIT(traverse_module_state->__pyx_n_s_sys);
+  Py_VISIT(traverse_module_state->__pyx_n_s_t);
+  Py_VISIT(traverse_module_state->__pyx_n_s_tag);
+  Py_VISIT(traverse_module_state->__pyx_n_s_target);
+  Py_VISIT(traverse_module_state->__pyx_n_s_task);
+  Py_VISIT(traverse_module_state->__pyx_n_s_test);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_the_server_has_already_started);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_the_server_hasn_t_started_yet);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_the_server_must_be_shutting_down);
+  Py_VISIT(traverse_module_state->__pyx_n_s_thread);
+  Py_VISIT(traverse_module_state->__pyx_n_s_thread_pool);
+  Py_VISIT(traverse_module_state->__pyx_n_s_threading);
+  Py_VISIT(traverse_module_state->__pyx_n_s_threadpool);
+  Py_VISIT(traverse_module_state->__pyx_n_s_throw);
+  Py_VISIT(traverse_module_state->__pyx_n_s_time);
+  Py_VISIT(traverse_module_state->__pyx_n_s_time_remaining);
+  Py_VISIT(traverse_module_state->__pyx_n_s_timeout);
+  Py_VISIT(traverse_module_state->__pyx_n_s_timeout_secs);
+  Py_VISIT(traverse_module_state->__pyx_n_s_to_call);
+  Py_VISIT(traverse_module_state->__pyx_n_s_to_channel_arg);
+  Py_VISIT(traverse_module_state->__pyx_n_s_too_many_operations);
+  Py_VISIT(traverse_module_state->__pyx_n_s_trace_id);
+  Py_VISIT(traverse_module_state->__pyx_n_s_traceback);
+  Py_VISIT(traverse_module_state->__pyx_n_s_tracing_enabled);
+  Py_VISIT(traverse_module_state->__pyx_n_s_trailing_metadata);
+  Py_VISIT(traverse_module_state->__pyx_n_s_transient_failure);
+  Py_VISIT(traverse_module_state->__pyx_n_s_true);
+  Py_VISIT(traverse_module_state->__pyx_n_s_try_to_connect);
+  Py_VISIT(traverse_module_state->__pyx_n_s_type);
+  Py_VISIT(traverse_module_state->__pyx_n_s_typing);
+  Py_VISIT(traverse_module_state->__pyx_n_s_uds);
+  Py_VISIT(traverse_module_state->__pyx_n_s_unary_handler);
+  Py_VISIT(traverse_module_state->__pyx_n_s_unary_stream);
+  Py_VISIT(traverse_module_state->__pyx_n_s_unary_unary);
+  Py_VISIT(traverse_module_state->__pyx_n_s_unauthenticated);
+  Py_VISIT(traverse_module_state->__pyx_n_s_unavailable);
+  Py_VISIT(traverse_module_state->__pyx_n_s_unimplemented);
+  Py_VISIT(traverse_module_state->__pyx_n_s_uninstall_context);
+  Py_VISIT(traverse_module_state->__pyx_n_s_unknown);
+  Py_VISIT(traverse_module_state->__pyx_n_s_unused_future);
+  Py_VISIT(traverse_module_state->__pyx_n_s_unused_task);
+  Py_VISIT(traverse_module_state->__pyx_n_s_update);
+  Py_VISIT(traverse_module_state->__pyx_n_s_upper);
+  Py_VISIT(traverse_module_state->__pyx_n_s_use_setstate);
+  Py_VISIT(traverse_module_state->__pyx_n_s_used_mask);
+  Py_VISIT(traverse_module_state->__pyx_n_s_user_tag);
+  Py_VISIT(traverse_module_state->__pyx_n_s_utf8);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_utf_8);
+  Py_VISIT(traverse_module_state->__pyx_n_s_value);
+  Py_VISIT(traverse_module_state->__pyx_n_s_values);
+  Py_VISIT(traverse_module_state->__pyx_n_s_wait);
+  Py_VISIT(traverse_module_state->__pyx_n_s_wait_for);
+  Py_VISIT(traverse_module_state->__pyx_n_s_wait_for_ready);
+  Py_VISIT(traverse_module_state->__pyx_n_s_wait_for_ready_explicitly_set);
+  Py_VISIT(traverse_module_state->__pyx_n_s_wait_for_termination);
+  Py_VISIT(traverse_module_state->__pyx_n_s_wait_time);
+  Py_VISIT(traverse_module_state->__pyx_n_s_warning);
+  Py_VISIT(traverse_module_state->__pyx_n_s_warnings);
+  Py_VISIT(traverse_module_state->__pyx_n_s_watch_connectivity_state);
+  Py_VISIT(traverse_module_state->__pyx_n_s_wrap);
+  Py_VISIT(traverse_module_state->__pyx_n_s_wrapper);
+  Py_VISIT(traverse_module_state->__pyx_n_s_write);
+  Py_VISIT(traverse_module_state->__pyx_n_s_write_flag);
+  Py_VISIT(traverse_module_state->__pyx_n_s_xds);
+  Py_VISIT(traverse_module_state->__pyx_n_s_xds_server_credentials);
+  Py_VISIT(traverse_module_state->__pyx_n_s_yes);
+  Py_VISIT(traverse_module_state->__pyx_n_s_yield_to_queue);
+  Py_VISIT(traverse_module_state->__pyx_float_1_0);
+  Py_VISIT(traverse_module_state->__pyx_int_0);
+  Py_VISIT(traverse_module_state->__pyx_int_1);
+  Py_VISIT(traverse_module_state->__pyx_int_5);
+  Py_VISIT(traverse_module_state->__pyx_int_118587260);
+  Py_VISIT(traverse_module_state->__pyx_int_171381981);
+  Py_VISIT(traverse_module_state->__pyx_int_171651213);
+  Py_VISIT(traverse_module_state->__pyx_int_222419149);
+  Py_VISIT(traverse_module_state->__pyx_int_228825662);
+  Py_VISIT(traverse_module_state->__pyx_int_238750788);
+  Py_VISIT(traverse_module_state->__pyx_k__76);
+  Py_VISIT(traverse_module_state->__pyx_k__80);
+  Py_VISIT(traverse_module_state->__pyx_tuple_);
+  Py_VISIT(traverse_module_state->__pyx_tuple__4);
+  Py_VISIT(traverse_module_state->__pyx_tuple__8);
+  Py_VISIT(traverse_module_state->__pyx_slice__37);
+  Py_VISIT(traverse_module_state->__pyx_tuple__10);
+  Py_VISIT(traverse_module_state->__pyx_tuple__11);
+  Py_VISIT(traverse_module_state->__pyx_tuple__12);
+  Py_VISIT(traverse_module_state->__pyx_tuple__14);
+  Py_VISIT(traverse_module_state->__pyx_tuple__17);
+  Py_VISIT(traverse_module_state->__pyx_tuple__19);
+  Py_VISIT(traverse_module_state->__pyx_tuple__21);
+  Py_VISIT(traverse_module_state->__pyx_tuple__23);
+  Py_VISIT(traverse_module_state->__pyx_tuple__24);
+  Py_VISIT(traverse_module_state->__pyx_tuple__25);
+  Py_VISIT(traverse_module_state->__pyx_tuple__26);
+  Py_VISIT(traverse_module_state->__pyx_tuple__27);
+  Py_VISIT(traverse_module_state->__pyx_tuple__28);
+  Py_VISIT(traverse_module_state->__pyx_tuple__29);
+  Py_VISIT(traverse_module_state->__pyx_tuple__30);
+  Py_VISIT(traverse_module_state->__pyx_tuple__31);
+  Py_VISIT(traverse_module_state->__pyx_tuple__32);
+  Py_VISIT(traverse_module_state->__pyx_tuple__33);
+  Py_VISIT(traverse_module_state->__pyx_tuple__34);
+  Py_VISIT(traverse_module_state->__pyx_tuple__35);
+  Py_VISIT(traverse_module_state->__pyx_tuple__36);
+  Py_VISIT(traverse_module_state->__pyx_tuple__39);
+  Py_VISIT(traverse_module_state->__pyx_tuple__40);
+  Py_VISIT(traverse_module_state->__pyx_tuple__46);
+  Py_VISIT(traverse_module_state->__pyx_tuple__48);
+  Py_VISIT(traverse_module_state->__pyx_tuple__50);
+  Py_VISIT(traverse_module_state->__pyx_tuple__79);
+  Py_VISIT(traverse_module_state->__pyx_tuple__83);
+  Py_VISIT(traverse_module_state->__pyx_tuple__93);
+  Py_VISIT(traverse_module_state->__pyx_tuple__98);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__2);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__3);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__5);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__6);
+  Py_VISIT(traverse_module_state->__pyx_tuple__105);
+  Py_VISIT(traverse_module_state->__pyx_tuple__106);
+  Py_VISIT(traverse_module_state->__pyx_tuple__108);
+  Py_VISIT(traverse_module_state->__pyx_tuple__110);
+  Py_VISIT(traverse_module_state->__pyx_tuple__116);
+  Py_VISIT(traverse_module_state->__pyx_tuple__118);
+  Py_VISIT(traverse_module_state->__pyx_tuple__121);
+  Py_VISIT(traverse_module_state->__pyx_tuple__123);
+  Py_VISIT(traverse_module_state->__pyx_tuple__125);
+  Py_VISIT(traverse_module_state->__pyx_tuple__127);
+  Py_VISIT(traverse_module_state->__pyx_tuple__138);
+  Py_VISIT(traverse_module_state->__pyx_tuple__144);
+  Py_VISIT(traverse_module_state->__pyx_tuple__148);
+  Py_VISIT(traverse_module_state->__pyx_tuple__150);
+  Py_VISIT(traverse_module_state->__pyx_tuple__152);
+  Py_VISIT(traverse_module_state->__pyx_tuple__153);
+  Py_VISIT(traverse_module_state->__pyx_tuple__156);
+  Py_VISIT(traverse_module_state->__pyx_tuple__158);
+  Py_VISIT(traverse_module_state->__pyx_tuple__162);
+  Py_VISIT(traverse_module_state->__pyx_tuple__166);
+  Py_VISIT(traverse_module_state->__pyx_tuple__168);
+  Py_VISIT(traverse_module_state->__pyx_tuple__170);
+  Py_VISIT(traverse_module_state->__pyx_tuple__172);
+  Py_VISIT(traverse_module_state->__pyx_tuple__174);
+  Py_VISIT(traverse_module_state->__pyx_tuple__176);
+  Py_VISIT(traverse_module_state->__pyx_tuple__178);
+  Py_VISIT(traverse_module_state->__pyx_tuple__180);
+  Py_VISIT(traverse_module_state->__pyx_tuple__182);
+  Py_VISIT(traverse_module_state->__pyx_tuple__184);
+  Py_VISIT(traverse_module_state->__pyx_tuple__186);
+  Py_VISIT(traverse_module_state->__pyx_tuple__194);
+  Py_VISIT(traverse_module_state->__pyx_tuple__209);
+  Py_VISIT(traverse_module_state->__pyx_tuple__211);
+  Py_VISIT(traverse_module_state->__pyx_tuple__213);
+  Py_VISIT(traverse_module_state->__pyx_tuple__217);
+  Py_VISIT(traverse_module_state->__pyx_tuple__222);
+  Py_VISIT(traverse_module_state->__pyx_tuple__224);
+  Py_VISIT(traverse_module_state->__pyx_tuple__226);
+  Py_VISIT(traverse_module_state->__pyx_tuple__230);
+  Py_VISIT(traverse_module_state->__pyx_tuple__232);
+  Py_VISIT(traverse_module_state->__pyx_tuple__236);
+  Py_VISIT(traverse_module_state->__pyx_tuple__238);
+  Py_VISIT(traverse_module_state->__pyx_tuple__241);
+  Py_VISIT(traverse_module_state->__pyx_tuple__254);
+  Py_VISIT(traverse_module_state->__pyx_tuple__255);
+  Py_VISIT(traverse_module_state->__pyx_tuple__293);
+  Py_VISIT(traverse_module_state->__pyx_tuple__296);
+  Py_VISIT(traverse_module_state->__pyx_tuple__301);
+  Py_VISIT(traverse_module_state->__pyx_tuple__304);
+  Py_VISIT(traverse_module_state->__pyx_tuple__306);
+  Py_VISIT(traverse_module_state->__pyx_tuple__308);
+  Py_VISIT(traverse_module_state->__pyx_tuple__310);
+  Py_VISIT(traverse_module_state->__pyx_tuple__312);
+  Py_VISIT(traverse_module_state->__pyx_tuple__314);
+  Py_VISIT(traverse_module_state->__pyx_tuple__316);
+  Py_VISIT(traverse_module_state->__pyx_tuple__317);
+  Py_VISIT(traverse_module_state->__pyx_tuple__319);
+  Py_VISIT(traverse_module_state->__pyx_tuple__335);
+  Py_VISIT(traverse_module_state->__pyx_tuple__342);
+  Py_VISIT(traverse_module_state->__pyx_tuple__346);
+  Py_VISIT(traverse_module_state->__pyx_tuple__349);
+  Py_VISIT(traverse_module_state->__pyx_tuple__353);
+  Py_VISIT(traverse_module_state->__pyx_tuple__356);
+  Py_VISIT(traverse_module_state->__pyx_tuple__358);
+  Py_VISIT(traverse_module_state->__pyx_tuple__360);
+  Py_VISIT(traverse_module_state->__pyx_tuple__362);
+  Py_VISIT(traverse_module_state->__pyx_tuple__364);
+  Py_VISIT(traverse_module_state->__pyx_tuple__366);
+  Py_VISIT(traverse_module_state->__pyx_tuple__368);
+  Py_VISIT(traverse_module_state->__pyx_tuple__370);
+  Py_VISIT(traverse_module_state->__pyx_tuple__371);
+  Py_VISIT(traverse_module_state->__pyx_tuple__372);
+  Py_VISIT(traverse_module_state->__pyx_tuple__374);
+  Py_VISIT(traverse_module_state->__pyx_tuple__375);
+  Py_VISIT(traverse_module_state->__pyx_tuple__379);
+  Py_VISIT(traverse_module_state->__pyx_tuple__385);
+  Py_VISIT(traverse_module_state->__pyx_tuple__388);
+  Py_VISIT(traverse_module_state->__pyx_tuple__389);
+  Py_VISIT(traverse_module_state->__pyx_tuple__393);
+  Py_VISIT(traverse_module_state->__pyx_tuple__395);
+  Py_VISIT(traverse_module_state->__pyx_tuple__396);
+  Py_VISIT(traverse_module_state->__pyx_tuple__403);
+  Py_VISIT(traverse_module_state->__pyx_tuple__405);
+  Py_VISIT(traverse_module_state->__pyx_tuple__406);
+  Py_VISIT(traverse_module_state->__pyx_tuple__409);
+  Py_VISIT(traverse_module_state->__pyx_tuple__417);
+  Py_VISIT(traverse_module_state->__pyx_tuple__424);
+  Py_VISIT(traverse_module_state->__pyx_tuple__427);
+  Py_VISIT(traverse_module_state->__pyx_tuple__435);
+  Py_VISIT(traverse_module_state->__pyx_tuple__436);
+  Py_VISIT(traverse_module_state->__pyx_tuple__437);
+  Py_VISIT(traverse_module_state->__pyx_tuple__438);
+  Py_VISIT(traverse_module_state->__pyx_tuple__439);
+  Py_VISIT(traverse_module_state->__pyx_tuple__440);
+  Py_VISIT(traverse_module_state->__pyx_tuple__441);
+  Py_VISIT(traverse_module_state->__pyx_tuple__444);
+  Py_VISIT(traverse_module_state->__pyx_tuple__448);
+  Py_VISIT(traverse_module_state->__pyx_tuple__450);
+  Py_VISIT(traverse_module_state->__pyx_tuple__453);
+  Py_VISIT(traverse_module_state->__pyx_tuple__457);
+  Py_VISIT(traverse_module_state->__pyx_tuple__460);
+  Py_VISIT(traverse_module_state->__pyx_tuple__462);
+  Py_VISIT(traverse_module_state->__pyx_tuple__463);
+  Py_VISIT(traverse_module_state->__pyx_tuple__464);
+  Py_VISIT(traverse_module_state->__pyx_tuple__465);
+  Py_VISIT(traverse_module_state->__pyx_tuple__466);
+  Py_VISIT(traverse_module_state->__pyx_tuple__467);
+  Py_VISIT(traverse_module_state->__pyx_tuple__468);
+  Py_VISIT(traverse_module_state->__pyx_tuple__472);
+  Py_VISIT(traverse_module_state->__pyx_tuple__476);
+  Py_VISIT(traverse_module_state->__pyx_tuple__484);
+  Py_VISIT(traverse_module_state->__pyx_tuple__485);
+  Py_VISIT(traverse_module_state->__pyx_tuple__486);
+  Py_VISIT(traverse_module_state->__pyx_tuple__487);
+  Py_VISIT(traverse_module_state->__pyx_tuple__491);
+  Py_VISIT(traverse_module_state->__pyx_tuple__494);
+  Py_VISIT(traverse_module_state->__pyx_tuple__497);
+  Py_VISIT(traverse_module_state->__pyx_tuple__500);
+  Py_VISIT(traverse_module_state->__pyx_tuple__502);
+  Py_VISIT(traverse_module_state->__pyx_tuple__504);
+  Py_VISIT(traverse_module_state->__pyx_tuple__506);
+  Py_VISIT(traverse_module_state->__pyx_tuple__509);
+  Py_VISIT(traverse_module_state->__pyx_tuple__515);
+  Py_VISIT(traverse_module_state->__pyx_tuple__517);
+  Py_VISIT(traverse_module_state->__pyx_tuple__533);
+  Py_VISIT(traverse_module_state->__pyx_tuple__534);
+  Py_VISIT(traverse_module_state->__pyx_tuple__536);
+  Py_VISIT(traverse_module_state->__pyx_tuple__537);
+  Py_VISIT(traverse_module_state->__pyx_tuple__538);
+  Py_VISIT(traverse_module_state->__pyx_tuple__539);
+  Py_VISIT(traverse_module_state->__pyx_tuple__542);
+  Py_VISIT(traverse_module_state->__pyx_tuple__543);
+  Py_VISIT(traverse_module_state->__pyx_tuple__544);
+  Py_VISIT(traverse_module_state->__pyx_tuple__545);
+  Py_VISIT(traverse_module_state->__pyx_tuple__546);
+  Py_VISIT(traverse_module_state->__pyx_tuple__548);
+  Py_VISIT(traverse_module_state->__pyx_tuple__550);
+  Py_VISIT(traverse_module_state->__pyx_tuple__554);
+  Py_VISIT(traverse_module_state->__pyx_tuple__556);
+  Py_VISIT(traverse_module_state->__pyx_tuple__558);
+  Py_VISIT(traverse_module_state->__pyx_tuple__560);
+  Py_VISIT(traverse_module_state->__pyx_tuple__561);
+  Py_VISIT(traverse_module_state->__pyx_tuple__562);
+  Py_VISIT(traverse_module_state->__pyx_tuple__564);
+  Py_VISIT(traverse_module_state->__pyx_tuple__565);
+  Py_VISIT(traverse_module_state->__pyx_tuple__566);
+  Py_VISIT(traverse_module_state->__pyx_tuple__570);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__13);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__15);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__16);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__18);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__20);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__22);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__41);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__42);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__43);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__44);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__45);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__47);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__51);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__52);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__53);
+  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__59);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__60);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__61);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__62);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__63);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__64);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__65);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__66);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__67);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__68);
+  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__78);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__81);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__82);
+  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__90);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__91);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__92);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__94);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__95);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__96);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__97);
+  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__109);
+  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__117);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__119);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__120);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__122);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__124);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__126);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__128);
+  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__134);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__135);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__136);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__137);
+  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__145);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__146);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__147);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__149);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__151);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__154);
+  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__163);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__164);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__165);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__167);
+  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__175);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__177);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__179);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__181);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__183);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__185);
+  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__192);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__193);
+  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__205);
+  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__210);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__212);
+  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__218);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__219);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__220);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__221);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__223);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__225);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__227);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__228);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__229);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__231);
+  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__237);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__239);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__240);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__242);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__243);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__244);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__245);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__246);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__247);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__248);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__249);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__250);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__251);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__252);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__253);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__256);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__257);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__258);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__259);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__260);
+  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__264);
+  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__269);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__270);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__271);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__272);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__273);
+  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__277);
+  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__286);
+  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__298);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__299);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__300);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__302);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__303);
+  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__311);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__313);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__315);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__318);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__320);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__321);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__322);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__323);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__324);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__325);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__326);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__327);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__328);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__329);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__330);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__331);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__332);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__333);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__334);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__336);
+  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__343);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__344);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__345);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__347);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__348);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__350);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__351);
+  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__359);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__361);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__363);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__365);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__367);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__369);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__373);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__376);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__377);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__378);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__380);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__381);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__382);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__383);
+  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__390);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__391);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__392);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__394);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__397);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__398);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__399);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__400);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__401);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__402);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__404);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__407);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__408);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__410);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__411);
+  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__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__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__432);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__433);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__434);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__442);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__443);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__445);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__446);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__447);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__449);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__451);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__452);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__454);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__455);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__456);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__458);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__459);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__461);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__469);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__470);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__471);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__473);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__474);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__475);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__477);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__478);
+  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__482);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__483);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__488);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__489);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__490);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__492);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__493);
+  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__499);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__501);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__503);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__505);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__507);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__508);
+  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);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__516);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__518);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__519);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__520);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__521);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__522);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__523);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__524);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__525);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__526);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__527);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__528);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__529);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__530);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__531);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__532);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__535);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__540);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__541);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__547);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__549);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__551);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__552);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__553);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__555);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__557);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__559);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__563);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__567);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__568);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__569);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__571);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__572);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__573);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__574);
+  Py_VISIT(traverse_module_state->__pyx_codeobj__575);
+  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
+#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
+#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
+#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_7_cython_6cygrpc__ChannelArg __pyx_mstate_global->__pyx_type_7_cython_6cygrpc__ChannelArg
+#define __pyx_type_7_cython_6cygrpc__ChannelArgs __pyx_mstate_global->__pyx_type_7_cython_6cygrpc__ChannelArgs
+#define __pyx_type_7_cython_6cygrpc_Call __pyx_mstate_global->__pyx_type_7_cython_6cygrpc_Call
+#define __pyx_type_7_cython_6cygrpc__CallState __pyx_mstate_global->__pyx_type_7_cython_6cygrpc__CallState
+#define __pyx_type_7_cython_6cygrpc__ChannelState __pyx_mstate_global->__pyx_type_7_cython_6cygrpc__ChannelState
+#define __pyx_type_7_cython_6cygrpc_IntegratedCall __pyx_mstate_global->__pyx_type_7_cython_6cygrpc_IntegratedCall
+#define __pyx_type_7_cython_6cygrpc_SegregatedCall __pyx_mstate_global->__pyx_type_7_cython_6cygrpc_SegregatedCall
+#define __pyx_type_7_cython_6cygrpc_Channel __pyx_mstate_global->__pyx_type_7_cython_6cygrpc_Channel
+#define __pyx_type_7_cython_6cygrpc_CallHandle __pyx_mstate_global->__pyx_type_7_cython_6cygrpc_CallHandle
+#define __pyx_type_7_cython_6cygrpc_CallCredentials __pyx_mstate_global->__pyx_type_7_cython_6cygrpc_CallCredentials
+#define __pyx_type_7_cython_6cygrpc_MetadataPluginCallCredentials __pyx_mstate_global->__pyx_type_7_cython_6cygrpc_MetadataPluginCallCredentials
+#define __pyx_type_7_cython_6cygrpc_CompositeCallCredentials __pyx_mstate_global->__pyx_type_7_cython_6cygrpc_CompositeCallCredentials
+#define __pyx_type_7_cython_6cygrpc_ChannelCredentials __pyx_mstate_global->__pyx_type_7_cython_6cygrpc_ChannelCredentials
+#define __pyx_type_7_cython_6cygrpc_SSLSessionCacheLRU __pyx_mstate_global->__pyx_type_7_cython_6cygrpc_SSLSessionCacheLRU
+#define __pyx_type_7_cython_6cygrpc_SSLChannelCredentials __pyx_mstate_global->__pyx_type_7_cython_6cygrpc_SSLChannelCredentials
+#define __pyx_type_7_cython_6cygrpc_CompositeChannelCredentials __pyx_mstate_global->__pyx_type_7_cython_6cygrpc_CompositeChannelCredentials
+#define __pyx_type_7_cython_6cygrpc_XDSChannelCredentials __pyx_mstate_global->__pyx_type_7_cython_6cygrpc_XDSChannelCredentials
+#define __pyx_type_7_cython_6cygrpc_ServerCertificateConfig __pyx_mstate_global->__pyx_type_7_cython_6cygrpc_ServerCertificateConfig
+#define __pyx_type_7_cython_6cygrpc_ServerCredentials __pyx_mstate_global->__pyx_type_7_cython_6cygrpc_ServerCredentials
+#define __pyx_type_7_cython_6cygrpc_LocalChannelCredentials __pyx_mstate_global->__pyx_type_7_cython_6cygrpc_LocalChannelCredentials
+#define __pyx_type_7_cython_6cygrpc_ALTSChannelCredentials __pyx_mstate_global->__pyx_type_7_cython_6cygrpc_ALTSChannelCredentials
+#define __pyx_type_7_cython_6cygrpc__LatentEventArg __pyx_mstate_global->__pyx_type_7_cython_6cygrpc__LatentEventArg
+#define __pyx_type_7_cython_6cygrpc_CompletionQueue __pyx_mstate_global->__pyx_type_7_cython_6cygrpc_CompletionQueue
+#define __pyx_type_7_cython_6cygrpc_BaseEvent __pyx_mstate_global->__pyx_type_7_cython_6cygrpc_BaseEvent
+#define __pyx_type_7_cython_6cygrpc_ConnectivityEvent __pyx_mstate_global->__pyx_type_7_cython_6cygrpc_ConnectivityEvent
+#define __pyx_type_7_cython_6cygrpc_RequestCallEvent __pyx_mstate_global->__pyx_type_7_cython_6cygrpc_RequestCallEvent
+#define __pyx_type_7_cython_6cygrpc_BatchOperationEvent __pyx_mstate_global->__pyx_type_7_cython_6cygrpc_BatchOperationEvent
+#define __pyx_type_7_cython_6cygrpc_ServerShutdownEvent __pyx_mstate_global->__pyx_type_7_cython_6cygrpc_ServerShutdownEvent
+#define __pyx_type_7_cython_6cygrpc_Operation __pyx_mstate_global->__pyx_type_7_cython_6cygrpc_Operation
+#define __pyx_type_7_cython_6cygrpc_SendInitialMetadataOperation __pyx_mstate_global->__pyx_type_7_cython_6cygrpc_SendInitialMetadataOperation
+#define __pyx_type_7_cython_6cygrpc_SendMessageOperation __pyx_mstate_global->__pyx_type_7_cython_6cygrpc_SendMessageOperation
+#define __pyx_type_7_cython_6cygrpc_SendCloseFromClientOperation __pyx_mstate_global->__pyx_type_7_cython_6cygrpc_SendCloseFromClientOperation
+#define __pyx_type_7_cython_6cygrpc_SendStatusFromServerOperation __pyx_mstate_global->__pyx_type_7_cython_6cygrpc_SendStatusFromServerOperation
+#define __pyx_type_7_cython_6cygrpc_ReceiveInitialMetadataOperation __pyx_mstate_global->__pyx_type_7_cython_6cygrpc_ReceiveInitialMetadataOperation
+#define __pyx_type_7_cython_6cygrpc_ReceiveMessageOperation __pyx_mstate_global->__pyx_type_7_cython_6cygrpc_ReceiveMessageOperation
+#define __pyx_type_7_cython_6cygrpc_ReceiveStatusOnClientOperation __pyx_mstate_global->__pyx_type_7_cython_6cygrpc_ReceiveStatusOnClientOperation
+#define __pyx_type_7_cython_6cygrpc_ReceiveCloseOnServerOperation __pyx_mstate_global->__pyx_type_7_cython_6cygrpc_ReceiveCloseOnServerOperation
+#define __pyx_type_7_cython_6cygrpc_CallDetails __pyx_mstate_global->__pyx_type_7_cython_6cygrpc_CallDetails
+#define __pyx_type_7_cython_6cygrpc_SslPemKeyCertPair __pyx_mstate_global->__pyx_type_7_cython_6cygrpc_SslPemKeyCertPair
+#define __pyx_type_7_cython_6cygrpc_CompressionOptions __pyx_mstate_global->__pyx_type_7_cython_6cygrpc_CompressionOptions
+#define __pyx_type_7_cython_6cygrpc_Server __pyx_mstate_global->__pyx_type_7_cython_6cygrpc_Server
+#define __pyx_type_7_cython_6cygrpc__Tag __pyx_mstate_global->__pyx_type_7_cython_6cygrpc__Tag
+#define __pyx_type_7_cython_6cygrpc__ConnectivityTag __pyx_mstate_global->__pyx_type_7_cython_6cygrpc__ConnectivityTag
+#define __pyx_type_7_cython_6cygrpc__RequestCallTag __pyx_mstate_global->__pyx_type_7_cython_6cygrpc__RequestCallTag
+#define __pyx_type_7_cython_6cygrpc__BatchOperationTag __pyx_mstate_global->__pyx_type_7_cython_6cygrpc__BatchOperationTag
+#define __pyx_type_7_cython_6cygrpc__ServerShutdownTag __pyx_mstate_global->__pyx_type_7_cython_6cygrpc__ServerShutdownTag
+#define __pyx_type_7_cython_6cygrpc_BaseCompletionQueue __pyx_mstate_global->__pyx_type_7_cython_6cygrpc_BaseCompletionQueue
+#define __pyx_type_7_cython_6cygrpc__BoundEventLoop __pyx_mstate_global->__pyx_type_7_cython_6cygrpc__BoundEventLoop
+#define __pyx_type_7_cython_6cygrpc_PollerCompletionQueue __pyx_mstate_global->__pyx_type_7_cython_6cygrpc_PollerCompletionQueue
+#define __pyx_type_7_cython_6cygrpc_AioRpcStatus __pyx_mstate_global->__pyx_type_7_cython_6cygrpc_AioRpcStatus
+#define __pyx_type_7_cython_6cygrpc__AioState __pyx_mstate_global->__pyx_type_7_cython_6cygrpc__AioState
+#define __pyx_type_7_cython_6cygrpc_CallbackFailureHandler __pyx_mstate_global->__pyx_type_7_cython_6cygrpc_CallbackFailureHandler
+#define __pyx_type_7_cython_6cygrpc_CallbackWrapper __pyx_mstate_global->__pyx_type_7_cython_6cygrpc_CallbackWrapper
+#define __pyx_type_7_cython_6cygrpc_GrpcCallWrapper __pyx_mstate_global->__pyx_type_7_cython_6cygrpc_GrpcCallWrapper
+#define __pyx_type_7_cython_6cygrpc__AioCall __pyx_mstate_global->__pyx_type_7_cython_6cygrpc__AioCall
+#define __pyx_type_7_cython_6cygrpc_AioChannel __pyx_mstate_global->__pyx_type_7_cython_6cygrpc_AioChannel
+#define __pyx_type_7_cython_6cygrpc__HandlerCallDetails __pyx_mstate_global->__pyx_type_7_cython_6cygrpc__HandlerCallDetails
+#define __pyx_type_7_cython_6cygrpc_RPCState __pyx_mstate_global->__pyx_type_7_cython_6cygrpc_RPCState
+#define __pyx_type_7_cython_6cygrpc__ServicerContext __pyx_mstate_global->__pyx_type_7_cython_6cygrpc__ServicerContext
+#define __pyx_type_7_cython_6cygrpc__SyncServicerContext __pyx_mstate_global->__pyx_type_7_cython_6cygrpc__SyncServicerContext
+#define __pyx_type_7_cython_6cygrpc__MessageReceiver __pyx_mstate_global->__pyx_type_7_cython_6cygrpc__MessageReceiver
+#define __pyx_type_7_cython_6cygrpc__ConcurrentRpcLimiter __pyx_mstate_global->__pyx_type_7_cython_6cygrpc__ConcurrentRpcLimiter
+#define __pyx_type_7_cython_6cygrpc_AioServer __pyx_mstate_global->__pyx_type_7_cython_6cygrpc_AioServer
+#define __pyx_type_7_cython_6cygrpc__GrpcArgWrapper __pyx_mstate_global->__pyx_type_7_cython_6cygrpc__GrpcArgWrapper
+#define __pyx_type_7_cython_6cygrpc_InsecureChannelCredentials __pyx_mstate_global->__pyx_type_7_cython_6cygrpc_InsecureChannelCredentials
+#define __pyx_type_7_cython_6cygrpc_ComputeEngineChannelCredentials __pyx_mstate_global->__pyx_type_7_cython_6cygrpc_ComputeEngineChannelCredentials
+#define __pyx_type_7_cython_6cygrpc_CensusContext __pyx_mstate_global->__pyx_type_7_cython_6cygrpc_CensusContext
+#define __pyx_type_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call __pyx_mstate_global->__pyx_type_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call
+#define __pyx_type_7_cython_6cygrpc___pyx_scope_struct_1_next_event __pyx_mstate_global->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_1_next_event
+#define __pyx_type_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call __pyx_mstate_global->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call
+#define __pyx_type_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event __pyx_mstate_global->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event
+#define __pyx_type_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata __pyx_mstate_global->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata
+#define __pyx_type_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_7_cython_6cygrpc__metadata __pyx_mstate_global->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_7_cython_6cygrpc__metadata
+#define __pyx_type_7_cython_6cygrpc___pyx_scope_struct_6_genexpr __pyx_mstate_global->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_6_genexpr
+#define __pyx_type_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context __pyx_mstate_global->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context
+#define __pyx_type_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context __pyx_mstate_global->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context
+#define __pyx_type_7_cython_6cygrpc___pyx_scope_struct_9___init__ __pyx_mstate_global->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_9___init__
+#define __pyx_type_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator __pyx_mstate_global->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator
+#define __pyx_type_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator __pyx_mstate_global->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator
+#define __pyx_type_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch __pyx_mstate_global->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch
+#define __pyx_type_7_cython_6cygrpc___pyx_scope_struct_13__receive_message __pyx_mstate_global->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_13__receive_message
+#define __pyx_type_7_cython_6cygrpc___pyx_scope_struct_14__send_message __pyx_mstate_global->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_14__send_message
+#define __pyx_type_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata __pyx_mstate_global->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata
+#define __pyx_type_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata __pyx_mstate_global->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata
+#define __pyx_type_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server __pyx_mstate_global->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server
+#define __pyx_type_7_cython_6cygrpc___pyx_scope_struct_18_status __pyx_mstate_global->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_18_status
+#define __pyx_type_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata __pyx_mstate_global->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata
+#define __pyx_type_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary __pyx_mstate_global->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary
+#define __pyx_type_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received __pyx_mstate_global->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received
+#define __pyx_type_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message __pyx_mstate_global->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message
+#define __pyx_type_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message __pyx_mstate_global->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message
+#define __pyx_type_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close __pyx_mstate_global->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close
+#define __pyx_type_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream __pyx_mstate_global->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream
+#define __pyx_type_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary __pyx_mstate_global->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary
+#define __pyx_type_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream __pyx_mstate_global->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream
+#define __pyx_type_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state __pyx_mstate_global->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state
+#define __pyx_type_7_cython_6cygrpc___pyx_scope_struct_29_read __pyx_mstate_global->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_29_read
+#define __pyx_type_7_cython_6cygrpc___pyx_scope_struct_30_write __pyx_mstate_global->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_30_write
+#define __pyx_type_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata __pyx_mstate_global->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata
+#define __pyx_type_7_cython_6cygrpc___pyx_scope_struct_32_abort __pyx_mstate_global->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_32_abort
+#define __pyx_type_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status __pyx_mstate_global->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status
+#define __pyx_type_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor __pyx_mstate_global->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor
+#define __pyx_type_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler __pyx_mstate_global->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler
+#define __pyx_type_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response __pyx_mstate_global->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response
+#define __pyx_type_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses __pyx_mstate_global->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses
+#define __pyx_type_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc __pyx_mstate_global->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc
+#define __pyx_type_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc __pyx_mstate_global->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc
+#define __pyx_type_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver __pyx_mstate_global->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver
+#define __pyx_type_7_cython_6cygrpc___pyx_scope_struct_41___anext__ __pyx_mstate_global->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_41___anext__
+#define __pyx_type_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc __pyx_mstate_global->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc
+#define __pyx_type_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc __pyx_mstate_global->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc
+#define __pyx_type_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions __pyx_mstate_global->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions
+#define __pyx_type_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler __pyx_mstate_global->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler
+#define __pyx_type_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core __pyx_mstate_global->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core
+#define __pyx_type_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro __pyx_mstate_global->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro
+#define __pyx_type_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc __pyx_mstate_global->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc
+#define __pyx_type_7_cython_6cygrpc___pyx_scope_struct_49__request_call __pyx_mstate_global->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_49__request_call
+#define __pyx_type_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop __pyx_mstate_global->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop
+#define __pyx_type_7_cython_6cygrpc___pyx_scope_struct_51_start __pyx_mstate_global->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_51_start
+#define __pyx_type_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down __pyx_mstate_global->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down
+#define __pyx_type_7_cython_6cygrpc___pyx_scope_struct_53_shutdown __pyx_mstate_global->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_53_shutdown
+#define __pyx_type_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination __pyx_mstate_global->__pyx_type_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination
+#define __pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg __pyx_mstate_global->__pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg
+#define __pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_ __pyx_mstate_global->__pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_
+#define __pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args __pyx_mstate_global->__pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args
+#define __pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_ __pyx_mstate_global->__pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_
+#endif
+#define __pyx_ptype_7_cython_6cygrpc__ChannelArg __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc__ChannelArg
+#define __pyx_ptype_7_cython_6cygrpc__ChannelArgs __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc__ChannelArgs
+#define __pyx_ptype_7_cython_6cygrpc_Call __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc_Call
+#define __pyx_ptype_7_cython_6cygrpc__CallState __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc__CallState
+#define __pyx_ptype_7_cython_6cygrpc__ChannelState __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc__ChannelState
+#define __pyx_ptype_7_cython_6cygrpc_IntegratedCall __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc_IntegratedCall
+#define __pyx_ptype_7_cython_6cygrpc_SegregatedCall __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc_SegregatedCall
+#define __pyx_ptype_7_cython_6cygrpc_Channel __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc_Channel
+#define __pyx_ptype_7_cython_6cygrpc_CallHandle __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc_CallHandle
+#define __pyx_ptype_7_cython_6cygrpc_CallCredentials __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc_CallCredentials
+#define __pyx_ptype_7_cython_6cygrpc_MetadataPluginCallCredentials __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc_MetadataPluginCallCredentials
+#define __pyx_ptype_7_cython_6cygrpc_CompositeCallCredentials __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc_CompositeCallCredentials
+#define __pyx_ptype_7_cython_6cygrpc_ChannelCredentials __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc_ChannelCredentials
+#define __pyx_ptype_7_cython_6cygrpc_SSLSessionCacheLRU __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc_SSLSessionCacheLRU
+#define __pyx_ptype_7_cython_6cygrpc_SSLChannelCredentials __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc_SSLChannelCredentials
+#define __pyx_ptype_7_cython_6cygrpc_CompositeChannelCredentials __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc_CompositeChannelCredentials
+#define __pyx_ptype_7_cython_6cygrpc_XDSChannelCredentials __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc_XDSChannelCredentials
+#define __pyx_ptype_7_cython_6cygrpc_ServerCertificateConfig __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc_ServerCertificateConfig
+#define __pyx_ptype_7_cython_6cygrpc_ServerCredentials __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc_ServerCredentials
+#define __pyx_ptype_7_cython_6cygrpc_LocalChannelCredentials __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc_LocalChannelCredentials
+#define __pyx_ptype_7_cython_6cygrpc_ALTSChannelCredentials __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc_ALTSChannelCredentials
+#define __pyx_ptype_7_cython_6cygrpc__LatentEventArg __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc__LatentEventArg
+#define __pyx_ptype_7_cython_6cygrpc_CompletionQueue __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc_CompletionQueue
+#define __pyx_ptype_7_cython_6cygrpc_BaseEvent __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc_BaseEvent
+#define __pyx_ptype_7_cython_6cygrpc_ConnectivityEvent __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc_ConnectivityEvent
+#define __pyx_ptype_7_cython_6cygrpc_RequestCallEvent __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc_RequestCallEvent
+#define __pyx_ptype_7_cython_6cygrpc_BatchOperationEvent __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc_BatchOperationEvent
+#define __pyx_ptype_7_cython_6cygrpc_ServerShutdownEvent __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc_ServerShutdownEvent
+#define __pyx_ptype_7_cython_6cygrpc_Operation __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc_Operation
+#define __pyx_ptype_7_cython_6cygrpc_SendInitialMetadataOperation __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc_SendInitialMetadataOperation
+#define __pyx_ptype_7_cython_6cygrpc_SendMessageOperation __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc_SendMessageOperation
+#define __pyx_ptype_7_cython_6cygrpc_SendCloseFromClientOperation __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc_SendCloseFromClientOperation
+#define __pyx_ptype_7_cython_6cygrpc_SendStatusFromServerOperation __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc_SendStatusFromServerOperation
+#define __pyx_ptype_7_cython_6cygrpc_ReceiveInitialMetadataOperation __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc_ReceiveInitialMetadataOperation
+#define __pyx_ptype_7_cython_6cygrpc_ReceiveMessageOperation __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc_ReceiveMessageOperation
+#define __pyx_ptype_7_cython_6cygrpc_ReceiveStatusOnClientOperation __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc_ReceiveStatusOnClientOperation
+#define __pyx_ptype_7_cython_6cygrpc_ReceiveCloseOnServerOperation __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc_ReceiveCloseOnServerOperation
+#define __pyx_ptype_7_cython_6cygrpc_CallDetails __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc_CallDetails
+#define __pyx_ptype_7_cython_6cygrpc_SslPemKeyCertPair __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc_SslPemKeyCertPair
+#define __pyx_ptype_7_cython_6cygrpc_CompressionOptions __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc_CompressionOptions
+#define __pyx_ptype_7_cython_6cygrpc_Server __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc_Server
+#define __pyx_ptype_7_cython_6cygrpc__Tag __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc__Tag
+#define __pyx_ptype_7_cython_6cygrpc__ConnectivityTag __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc__ConnectivityTag
+#define __pyx_ptype_7_cython_6cygrpc__RequestCallTag __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc__RequestCallTag
+#define __pyx_ptype_7_cython_6cygrpc__BatchOperationTag __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc__BatchOperationTag
+#define __pyx_ptype_7_cython_6cygrpc__ServerShutdownTag __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc__ServerShutdownTag
+#define __pyx_ptype_7_cython_6cygrpc_BaseCompletionQueue __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc_BaseCompletionQueue
+#define __pyx_ptype_7_cython_6cygrpc__BoundEventLoop __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc__BoundEventLoop
+#define __pyx_ptype_7_cython_6cygrpc_PollerCompletionQueue __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc_PollerCompletionQueue
+#define __pyx_ptype_7_cython_6cygrpc_AioRpcStatus __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc_AioRpcStatus
+#define __pyx_ptype_7_cython_6cygrpc__AioState __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc__AioState
+#define __pyx_ptype_7_cython_6cygrpc_CallbackFailureHandler __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc_CallbackFailureHandler
+#define __pyx_ptype_7_cython_6cygrpc_CallbackWrapper __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc_CallbackWrapper
+#define __pyx_ptype_7_cython_6cygrpc_GrpcCallWrapper __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc_GrpcCallWrapper
+#define __pyx_ptype_7_cython_6cygrpc__AioCall __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc__AioCall
+#define __pyx_ptype_7_cython_6cygrpc_AioChannel __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc_AioChannel
+#define __pyx_ptype_7_cython_6cygrpc__HandlerCallDetails __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc__HandlerCallDetails
+#define __pyx_ptype_7_cython_6cygrpc_RPCState __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc_RPCState
+#define __pyx_ptype_7_cython_6cygrpc__ServicerContext __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc__ServicerContext
+#define __pyx_ptype_7_cython_6cygrpc__SyncServicerContext __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc__SyncServicerContext
+#define __pyx_ptype_7_cython_6cygrpc__MessageReceiver __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc__MessageReceiver
+#define __pyx_ptype_7_cython_6cygrpc__ConcurrentRpcLimiter __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc__ConcurrentRpcLimiter
+#define __pyx_ptype_7_cython_6cygrpc_AioServer __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc_AioServer
+#define __pyx_ptype_7_cython_6cygrpc__GrpcArgWrapper __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc__GrpcArgWrapper
+#define __pyx_ptype_7_cython_6cygrpc_InsecureChannelCredentials __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc_InsecureChannelCredentials
+#define __pyx_ptype_7_cython_6cygrpc_ComputeEngineChannelCredentials __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc_ComputeEngineChannelCredentials
+#define __pyx_ptype_7_cython_6cygrpc_CensusContext __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc_CensusContext
+#define __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call
+#define __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_1_next_event __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_1_next_event
+#define __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call
+#define __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event
+#define __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata
+#define __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_7_cython_6cygrpc__metadata __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_7_cython_6cygrpc__metadata
+#define __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_6_genexpr __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_6_genexpr
+#define __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context
+#define __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context
+#define __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_9___init__ __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_9___init__
+#define __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator
+#define __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator
+#define __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch
+#define __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_13__receive_message __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_13__receive_message
+#define __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_14__send_message __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_14__send_message
+#define __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata
+#define __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata
+#define __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server
+#define __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_18_status __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_18_status
+#define __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata
+#define __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary
+#define __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received
+#define __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message
+#define __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message
+#define __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close
+#define __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream
+#define __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary
+#define __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream
+#define __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state
+#define __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_29_read __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_29_read
+#define __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_30_write __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_30_write
+#define __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata
+#define __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_32_abort __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_32_abort
+#define __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status
+#define __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor
+#define __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler
+#define __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response
+#define __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses
+#define __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc
+#define __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc
+#define __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver
+#define __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_41___anext__ __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_41___anext__
+#define __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc
+#define __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc
+#define __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions
+#define __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler
+#define __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core
+#define __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro
+#define __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc
+#define __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_49__request_call __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_49__request_call
+#define __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop
+#define __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_51_start __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_51_start
+#define __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down
+#define __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_53_shutdown __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_53_shutdown
+#define __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination __pyx_mstate_global->__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination
+#define __pyx_ptype___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg __pyx_mstate_global->__pyx_ptype___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg
+#define __pyx_ptype___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_ __pyx_mstate_global->__pyx_ptype___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_
+#define __pyx_ptype___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args __pyx_mstate_global->__pyx_ptype___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args
+#define __pyx_ptype___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_ __pyx_mstate_global->__pyx_ptype___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_
+#define __pyx_kp_s_0 __pyx_mstate_global->__pyx_kp_s_0
+#define __pyx_kp_s_1 __pyx_mstate_global->__pyx_kp_s_1
+#define __pyx_n_s_ALTSChannelCredentials __pyx_mstate_global->__pyx_n_s_ALTSChannelCredentials
+#define __pyx_n_s_ALTSChannelCredentials___reduce __pyx_mstate_global->__pyx_n_s_ALTSChannelCredentials___reduce
+#define __pyx_n_s_ALTSChannelCredentials___setstat __pyx_mstate_global->__pyx_n_s_ALTSChannelCredentials___setstat
+#define __pyx_n_s_AWAIT_THREADS_TIMEOUT_SECONDS __pyx_mstate_global->__pyx_n_s_AWAIT_THREADS_TIMEOUT_SECONDS
+#define __pyx_n_s_AbortError __pyx_mstate_global->__pyx_n_s_AbortError
+#define __pyx_kp_s_Abort_already_called __pyx_mstate_global->__pyx_kp_s_Abort_already_called
+#define __pyx_kp_s_Abort_error_has_been_replaced __pyx_mstate_global->__pyx_kp_s_Abort_error_has_been_replaced
+#define __pyx_kp_s_Abort_error_unexpectedly_suppres __pyx_mstate_global->__pyx_kp_s_Abort_error_unexpectedly_suppres
+#define __pyx_kp_s_Aborting_method_s_due_to_server __pyx_mstate_global->__pyx_kp_s_Aborting_method_s_due_to_server
+#define __pyx_n_s_ActiveThreadCount __pyx_mstate_global->__pyx_n_s_ActiveThreadCount
+#define __pyx_n_s_ActiveThreadCount___init __pyx_mstate_global->__pyx_n_s_ActiveThreadCount___init
+#define __pyx_n_s_ActiveThreadCount_await_zero_th __pyx_mstate_global->__pyx_n_s_ActiveThreadCount_await_zero_th
+#define __pyx_n_s_ActiveThreadCount_decrement __pyx_mstate_global->__pyx_n_s_ActiveThreadCount_decrement
+#define __pyx_n_s_ActiveThreadCount_increment __pyx_mstate_global->__pyx_n_s_ActiveThreadCount_increment
+#define __pyx_n_s_AioCall __pyx_mstate_global->__pyx_n_s_AioCall
+#define __pyx_n_s_AioCall___reduce_cython __pyx_mstate_global->__pyx_n_s_AioCall___reduce_cython
+#define __pyx_n_s_AioCall___setstate_cython __pyx_mstate_global->__pyx_n_s_AioCall___setstate_cython
+#define __pyx_n_s_AioCall__handle_status_once_rec __pyx_mstate_global->__pyx_n_s_AioCall__handle_status_once_rec
+#define __pyx_n_s_AioCall__repr __pyx_mstate_global->__pyx_n_s_AioCall__repr
+#define __pyx_n_s_AioCall_add_done_callback __pyx_mstate_global->__pyx_n_s_AioCall_add_done_callback
+#define __pyx_n_s_AioCall_cancel __pyx_mstate_global->__pyx_n_s_AioCall_cancel
+#define __pyx_n_s_AioCall_cancelled __pyx_mstate_global->__pyx_n_s_AioCall_cancelled
+#define __pyx_n_s_AioCall_done __pyx_mstate_global->__pyx_n_s_AioCall_done
+#define __pyx_n_s_AioCall_initial_metadata __pyx_mstate_global->__pyx_n_s_AioCall_initial_metadata
+#define __pyx_n_s_AioCall_initiate_stream_stream __pyx_mstate_global->__pyx_n_s_AioCall_initiate_stream_stream
+#define __pyx_n_s_AioCall_initiate_unary_stream __pyx_mstate_global->__pyx_n_s_AioCall_initiate_unary_stream
+#define __pyx_n_s_AioCall_is_locally_cancelled __pyx_mstate_global->__pyx_n_s_AioCall_is_locally_cancelled
+#define __pyx_n_s_AioCall_is_ok __pyx_mstate_global->__pyx_n_s_AioCall_is_ok
+#define __pyx_n_s_AioCall_receive_serialized_mess __pyx_mstate_global->__pyx_n_s_AioCall_receive_serialized_mess
+#define __pyx_n_s_AioCall_send_receive_close __pyx_mstate_global->__pyx_n_s_AioCall_send_receive_close
+#define __pyx_n_s_AioCall_send_serialized_message __pyx_mstate_global->__pyx_n_s_AioCall_send_serialized_message
+#define __pyx_n_s_AioCall_set_internal_error __pyx_mstate_global->__pyx_n_s_AioCall_set_internal_error
+#define __pyx_n_s_AioCall_status __pyx_mstate_global->__pyx_n_s_AioCall_status
+#define __pyx_n_s_AioCall_stream_unary __pyx_mstate_global->__pyx_n_s_AioCall_stream_unary
+#define __pyx_n_s_AioCall_time_remaining __pyx_mstate_global->__pyx_n_s_AioCall_time_remaining
+#define __pyx_n_s_AioCall_unary_unary __pyx_mstate_global->__pyx_n_s_AioCall_unary_unary
+#define __pyx_n_s_AioChannel __pyx_mstate_global->__pyx_n_s_AioChannel
+#define __pyx_n_s_AioChannel___reduce_cython __pyx_mstate_global->__pyx_n_s_AioChannel___reduce_cython
+#define __pyx_n_s_AioChannel___setstate_cython __pyx_mstate_global->__pyx_n_s_AioChannel___setstate_cython
+#define __pyx_n_s_AioChannel_call __pyx_mstate_global->__pyx_n_s_AioChannel_call
+#define __pyx_n_s_AioChannel_check_connectivity_st __pyx_mstate_global->__pyx_n_s_AioChannel_check_connectivity_st
+#define __pyx_n_s_AioChannel_close __pyx_mstate_global->__pyx_n_s_AioChannel_close
+#define __pyx_n_s_AioChannel_closed __pyx_mstate_global->__pyx_n_s_AioChannel_closed
+#define __pyx_n_s_AioChannel_closing __pyx_mstate_global->__pyx_n_s_AioChannel_closing
+#define __pyx_n_s_AioChannel_watch_connectivity_st __pyx_mstate_global->__pyx_n_s_AioChannel_watch_connectivity_st
+#define __pyx_n_s_AioRpcStatus __pyx_mstate_global->__pyx_n_s_AioRpcStatus
+#define __pyx_n_s_AioRpcStatus___reduce_cython __pyx_mstate_global->__pyx_n_s_AioRpcStatus___reduce_cython
+#define __pyx_n_s_AioRpcStatus___setstate_cython __pyx_mstate_global->__pyx_n_s_AioRpcStatus___setstate_cython
+#define __pyx_n_s_AioRpcStatus_code __pyx_mstate_global->__pyx_n_s_AioRpcStatus_code
+#define __pyx_n_s_AioRpcStatus_debug_error_string __pyx_mstate_global->__pyx_n_s_AioRpcStatus_debug_error_string
+#define __pyx_n_s_AioRpcStatus_details __pyx_mstate_global->__pyx_n_s_AioRpcStatus_details
+#define __pyx_n_s_AioRpcStatus_trailing_metadata __pyx_mstate_global->__pyx_n_s_AioRpcStatus_trailing_metadata
+#define __pyx_n_s_AioServer __pyx_mstate_global->__pyx_n_s_AioServer
+#define __pyx_n_s_AioServer___reduce_cython __pyx_mstate_global->__pyx_n_s_AioServer___reduce_cython
+#define __pyx_n_s_AioServer___setstate_cython __pyx_mstate_global->__pyx_n_s_AioServer___setstate_cython
+#define __pyx_n_s_AioServer__request_call __pyx_mstate_global->__pyx_n_s_AioServer__request_call
+#define __pyx_n_s_AioServer__server_main_loop __pyx_mstate_global->__pyx_n_s_AioServer__server_main_loop
+#define __pyx_n_s_AioServer__serving_task_crash_ha __pyx_mstate_global->__pyx_n_s_AioServer__serving_task_crash_ha
+#define __pyx_n_s_AioServer__start_shutting_down __pyx_mstate_global->__pyx_n_s_AioServer__start_shutting_down
+#define __pyx_n_s_AioServer_add_generic_rpc_handle __pyx_mstate_global->__pyx_n_s_AioServer_add_generic_rpc_handle
+#define __pyx_n_s_AioServer_add_insecure_port __pyx_mstate_global->__pyx_n_s_AioServer_add_insecure_port
+#define __pyx_n_s_AioServer_add_secure_port __pyx_mstate_global->__pyx_n_s_AioServer_add_secure_port
+#define __pyx_n_s_AioServer_is_running __pyx_mstate_global->__pyx_n_s_AioServer_is_running
+#define __pyx_n_s_AioServer_shutdown __pyx_mstate_global->__pyx_n_s_AioServer_shutdown
+#define __pyx_n_s_AioServer_start __pyx_mstate_global->__pyx_n_s_AioServer_start
+#define __pyx_n_s_AioServer_wait_for_termination __pyx_mstate_global->__pyx_n_s_AioServer_wait_for_termination
+#define __pyx_n_s_AioState __pyx_mstate_global->__pyx_n_s_AioState
+#define __pyx_n_s_AioState___reduce_cython __pyx_mstate_global->__pyx_n_s_AioState___reduce_cython
+#define __pyx_n_s_AioState___setstate_cython __pyx_mstate_global->__pyx_n_s_AioState___setstate_cython
+#define __pyx_n_s_AssertionError __pyx_mstate_global->__pyx_n_s_AssertionError
+#define __pyx_n_s_AsyncIOEngine __pyx_mstate_global->__pyx_n_s_AsyncIOEngine
+#define __pyx_n_s_AttributeError __pyx_mstate_global->__pyx_n_s_AttributeError
+#define __pyx_n_s_BaseCompletionQueue __pyx_mstate_global->__pyx_n_s_BaseCompletionQueue
+#define __pyx_n_s_BaseCompletionQueue___reduce_cyt __pyx_mstate_global->__pyx_n_s_BaseCompletionQueue___reduce_cyt
+#define __pyx_n_s_BaseCompletionQueue___setstate_c __pyx_mstate_global->__pyx_n_s_BaseCompletionQueue___setstate_c
+#define __pyx_n_s_BaseError __pyx_mstate_global->__pyx_n_s_BaseError
+#define __pyx_n_s_BaseEvent __pyx_mstate_global->__pyx_n_s_BaseEvent
+#define __pyx_n_s_BatchOperationEvent __pyx_mstate_global->__pyx_n_s_BatchOperationEvent
+#define __pyx_n_s_BatchOperationEvent___reduce_cyt __pyx_mstate_global->__pyx_n_s_BatchOperationEvent___reduce_cyt
+#define __pyx_n_s_BatchOperationEvent___setstate_c __pyx_mstate_global->__pyx_n_s_BatchOperationEvent___setstate_c
+#define __pyx_n_s_BatchOperationTag __pyx_mstate_global->__pyx_n_s_BatchOperationTag
+#define __pyx_n_s_BatchOperationTag___reduce_cyth __pyx_mstate_global->__pyx_n_s_BatchOperationTag___reduce_cyth
+#define __pyx_n_s_BatchOperationTag___setstate_cy __pyx_mstate_global->__pyx_n_s_BatchOperationTag___setstate_cy
+#define __pyx_kp_s_Binary_metadata_key_s_expected_b __pyx_mstate_global->__pyx_kp_s_Binary_metadata_key_s_expected_b
+#define __pyx_n_s_BoundEventLoop __pyx_mstate_global->__pyx_n_s_BoundEventLoop
+#define __pyx_n_s_BoundEventLoop___reduce_cython __pyx_mstate_global->__pyx_n_s_BoundEventLoop___reduce_cython
+#define __pyx_n_s_BoundEventLoop___setstate_cytho __pyx_mstate_global->__pyx_n_s_BoundEventLoop___setstate_cytho
+#define __pyx_n_s_BoundEventLoop_close __pyx_mstate_global->__pyx_n_s_BoundEventLoop_close
+#define __pyx_n_s_COMPRESSION_METADATA_STRING_MAP __pyx_mstate_global->__pyx_n_s_COMPRESSION_METADATA_STRING_MAP
+#define __pyx_n_s_CUSTOM_IO_MANAGER __pyx_mstate_global->__pyx_n_s_CUSTOM_IO_MANAGER
+#define __pyx_n_s_CYGRPC_STATUS_CODE_TO_STATUS_COD __pyx_mstate_global->__pyx_n_s_CYGRPC_STATUS_CODE_TO_STATUS_COD
+#define __pyx_n_s_Call __pyx_mstate_global->__pyx_n_s_Call
+#define __pyx_n_s_CallCredentials __pyx_mstate_global->__pyx_n_s_CallCredentials
+#define __pyx_n_s_CallCredentials___reduce_cython __pyx_mstate_global->__pyx_n_s_CallCredentials___reduce_cython
+#define __pyx_n_s_CallCredentials___setstate_cytho __pyx_mstate_global->__pyx_n_s_CallCredentials___setstate_cytho
+#define __pyx_n_s_CallDetails __pyx_mstate_global->__pyx_n_s_CallDetails
+#define __pyx_n_s_CallDetails___reduce_cython __pyx_mstate_global->__pyx_n_s_CallDetails___reduce_cython
+#define __pyx_n_s_CallDetails___setstate_cython __pyx_mstate_global->__pyx_n_s_CallDetails___setstate_cython
+#define __pyx_n_s_CallError __pyx_mstate_global->__pyx_n_s_CallError
+#define __pyx_n_s_CallHandle __pyx_mstate_global->__pyx_n_s_CallHandle
+#define __pyx_n_s_CallHandle___reduce_cython __pyx_mstate_global->__pyx_n_s_CallHandle___reduce_cython
+#define __pyx_n_s_CallHandle___setstate_cython __pyx_mstate_global->__pyx_n_s_CallHandle___setstate_cython
+#define __pyx_n_s_CallState __pyx_mstate_global->__pyx_n_s_CallState
+#define __pyx_n_s_CallState___reduce_cython __pyx_mstate_global->__pyx_n_s_CallState___reduce_cython
+#define __pyx_n_s_CallState___setstate_cython __pyx_mstate_global->__pyx_n_s_CallState___setstate_cython
+#define __pyx_n_s_Call___reduce_cython __pyx_mstate_global->__pyx_n_s_Call___reduce_cython
+#define __pyx_n_s_Call___setstate_cython __pyx_mstate_global->__pyx_n_s_Call___setstate_cython
+#define __pyx_n_s_Call__custom_op_on_c_call __pyx_mstate_global->__pyx_n_s_Call__custom_op_on_c_call
+#define __pyx_n_s_Call__start_batch __pyx_mstate_global->__pyx_n_s_Call__start_batch
+#define __pyx_n_s_Call_cancel __pyx_mstate_global->__pyx_n_s_Call_cancel
+#define __pyx_kp_s_Call_credentials_are_only_valid __pyx_mstate_global->__pyx_kp_s_Call_credentials_are_only_valid
+#define __pyx_kp_s_Call_credentials_may_not_be_NULL __pyx_mstate_global->__pyx_kp_s_Call_credentials_may_not_be_NULL
+#define __pyx_n_s_Call_peer __pyx_mstate_global->__pyx_n_s_Call_peer
+#define __pyx_n_s_Call_set_credentials __pyx_mstate_global->__pyx_n_s_Call_set_credentials
+#define __pyx_n_s_Call_start_client_batch __pyx_mstate_global->__pyx_n_s_Call_start_client_batch
+#define __pyx_n_s_Call_start_server_batch __pyx_mstate_global->__pyx_n_s_Call_start_server_batch
+#define __pyx_n_s_CallbackFailureHandler __pyx_mstate_global->__pyx_n_s_CallbackFailureHandler
+#define __pyx_n_s_CallbackFailureHandler___reduce __pyx_mstate_global->__pyx_n_s_CallbackFailureHandler___reduce
+#define __pyx_n_s_CallbackFailureHandler___setstat __pyx_mstate_global->__pyx_n_s_CallbackFailureHandler___setstat
+#define __pyx_n_s_CallbackWrapper __pyx_mstate_global->__pyx_n_s_CallbackWrapper
+#define __pyx_n_s_CallbackWrapper___reduce_cython __pyx_mstate_global->__pyx_n_s_CallbackWrapper___reduce_cython
+#define __pyx_n_s_CallbackWrapper___setstate_cytho __pyx_mstate_global->__pyx_n_s_CallbackWrapper___setstate_cytho
+#define __pyx_n_s_CancelledError __pyx_mstate_global->__pyx_n_s_CancelledError
+#define __pyx_kp_s_Cannot_invoke_RPC_on_closed_chan __pyx_mstate_global->__pyx_kp_s_Cannot_invoke_RPC_on_closed_chan
+#define __pyx_kp_s_Cannot_invoke_RPC_s __pyx_mstate_global->__pyx_kp_s_Cannot_invoke_RPC_s
+#define __pyx_kp_s_Cannot_monitor_channel_state_s __pyx_mstate_global->__pyx_kp_s_Cannot_monitor_channel_state_s
+#define __pyx_n_s_CensusContext __pyx_mstate_global->__pyx_n_s_CensusContext
+#define __pyx_n_s_CensusContext___reduce_cython __pyx_mstate_global->__pyx_n_s_CensusContext___reduce_cython
+#define __pyx_n_s_CensusContext___setstate_cython __pyx_mstate_global->__pyx_n_s_CensusContext___setstate_cython
+#define __pyx_n_s_Channel __pyx_mstate_global->__pyx_n_s_Channel
+#define __pyx_n_s_ChannelArg __pyx_mstate_global->__pyx_n_s_ChannelArg
+#define __pyx_n_s_ChannelArgKey __pyx_mstate_global->__pyx_n_s_ChannelArgKey
+#define __pyx_n_s_ChannelArg___reduce_cython __pyx_mstate_global->__pyx_n_s_ChannelArg___reduce_cython
+#define __pyx_n_s_ChannelArg___setstate_cython __pyx_mstate_global->__pyx_n_s_ChannelArg___setstate_cython
+#define __pyx_n_s_ChannelArgs __pyx_mstate_global->__pyx_n_s_ChannelArgs
+#define __pyx_n_s_ChannelArgs___reduce_cython __pyx_mstate_global->__pyx_n_s_ChannelArgs___reduce_cython
+#define __pyx_n_s_ChannelArgs___setstate_cython __pyx_mstate_global->__pyx_n_s_ChannelArgs___setstate_cython
+#define __pyx_n_s_ChannelCredentials __pyx_mstate_global->__pyx_n_s_ChannelCredentials
+#define __pyx_n_s_ChannelCredentials___reduce_cyth __pyx_mstate_global->__pyx_n_s_ChannelCredentials___reduce_cyth
+#define __pyx_n_s_ChannelCredentials___setstate_cy __pyx_mstate_global->__pyx_n_s_ChannelCredentials___setstate_cy
+#define __pyx_n_s_ChannelState __pyx_mstate_global->__pyx_n_s_ChannelState
+#define __pyx_n_s_ChannelState___reduce_cython __pyx_mstate_global->__pyx_n_s_ChannelState___reduce_cython
+#define __pyx_n_s_ChannelState___setstate_cython __pyx_mstate_global->__pyx_n_s_ChannelState___setstate_cython
+#define __pyx_n_s_Channel___reduce_cython __pyx_mstate_global->__pyx_n_s_Channel___reduce_cython
+#define __pyx_n_s_Channel___setstate_cython __pyx_mstate_global->__pyx_n_s_Channel___setstate_cython
+#define __pyx_n_s_Channel_check_connectivity_state __pyx_mstate_global->__pyx_n_s_Channel_check_connectivity_state
+#define __pyx_n_s_Channel_close __pyx_mstate_global->__pyx_n_s_Channel_close
+#define __pyx_n_s_Channel_close_on_fork __pyx_mstate_global->__pyx_n_s_Channel_close_on_fork
+#define __pyx_n_s_Channel_get_registered_call_hand __pyx_mstate_global->__pyx_n_s_Channel_get_registered_call_hand
+#define __pyx_n_s_Channel_integrated_call __pyx_mstate_global->__pyx_n_s_Channel_integrated_call
+#define __pyx_kp_s_Channel_is_closed __pyx_mstate_global->__pyx_kp_s_Channel_is_closed
+#define __pyx_n_s_Channel_next_call_event __pyx_mstate_global->__pyx_n_s_Channel_next_call_event
+#define __pyx_n_s_Channel_segregated_call __pyx_mstate_global->__pyx_n_s_Channel_segregated_call
+#define __pyx_n_s_Channel_target __pyx_mstate_global->__pyx_n_s_Channel_target
+#define __pyx_n_s_Channel_watch_connectivity_state __pyx_mstate_global->__pyx_n_s_Channel_watch_connectivity_state
+#define __pyx_n_s_CompletionQueue __pyx_mstate_global->__pyx_n_s_CompletionQueue
+#define __pyx_n_s_CompletionQueue___reduce_cython __pyx_mstate_global->__pyx_n_s_CompletionQueue___reduce_cython
+#define __pyx_n_s_CompletionQueue___setstate_cytho __pyx_mstate_global->__pyx_n_s_CompletionQueue___setstate_cytho
+#define __pyx_n_s_CompletionQueue__internal_poll __pyx_mstate_global->__pyx_n_s_CompletionQueue__internal_poll
+#define __pyx_n_s_CompletionQueue_clear __pyx_mstate_global->__pyx_n_s_CompletionQueue_clear
+#define __pyx_n_s_CompletionQueue_poll __pyx_mstate_global->__pyx_n_s_CompletionQueue_poll
+#define __pyx_n_s_CompletionQueue_shutdown __pyx_mstate_global->__pyx_n_s_CompletionQueue_shutdown
+#define __pyx_n_s_CompletionType __pyx_mstate_global->__pyx_n_s_CompletionType
+#define __pyx_n_s_CompositeCallCredentials __pyx_mstate_global->__pyx_n_s_CompositeCallCredentials
+#define __pyx_n_s_CompositeCallCredentials___reduc __pyx_mstate_global->__pyx_n_s_CompositeCallCredentials___reduc
+#define __pyx_n_s_CompositeCallCredentials___setst __pyx_mstate_global->__pyx_n_s_CompositeCallCredentials___setst
+#define __pyx_n_s_CompositeChannelCredentials __pyx_mstate_global->__pyx_n_s_CompositeChannelCredentials
+#define __pyx_n_s_CompositeChannelCredentials___re __pyx_mstate_global->__pyx_n_s_CompositeChannelCredentials___re
+#define __pyx_n_s_CompositeChannelCredentials___se __pyx_mstate_global->__pyx_n_s_CompositeChannelCredentials___se
+#define __pyx_n_s_CompressionAlgorithm __pyx_mstate_global->__pyx_n_s_CompressionAlgorithm
+#define __pyx_n_s_CompressionLevel __pyx_mstate_global->__pyx_n_s_CompressionLevel
+#define __pyx_n_s_CompressionOptions __pyx_mstate_global->__pyx_n_s_CompressionOptions
+#define __pyx_n_s_CompressionOptions___reduce_cyth __pyx_mstate_global->__pyx_n_s_CompressionOptions___reduce_cyth
+#define __pyx_n_s_CompressionOptions___setstate_cy __pyx_mstate_global->__pyx_n_s_CompressionOptions___setstate_cy
+#define __pyx_n_s_CompressionOptions_disable_algor __pyx_mstate_global->__pyx_n_s_CompressionOptions_disable_algor
+#define __pyx_n_s_CompressionOptions_enable_algori __pyx_mstate_global->__pyx_n_s_CompressionOptions_enable_algori
+#define __pyx_n_s_CompressionOptions_is_algorithm __pyx_mstate_global->__pyx_n_s_CompressionOptions_is_algorithm
+#define __pyx_n_s_CompressionOptions_to_channel_ar __pyx_mstate_global->__pyx_n_s_CompressionOptions_to_channel_ar
+#define __pyx_kp_s_Compression_setting_must_be_spec __pyx_mstate_global->__pyx_kp_s_Compression_setting_must_be_spec
+#define __pyx_n_s_ComputeEngineChannelCredentials __pyx_mstate_global->__pyx_n_s_ComputeEngineChannelCredentials
+#define __pyx_n_s_ComputeEngineChannelCredentials_2 __pyx_mstate_global->__pyx_n_s_ComputeEngineChannelCredentials_2
+#define __pyx_n_s_ComputeEngineChannelCredentials_3 __pyx_mstate_global->__pyx_n_s_ComputeEngineChannelCredentials_3
+#define __pyx_n_s_ConcurrentRpcLimiter __pyx_mstate_global->__pyx_n_s_ConcurrentRpcLimiter
+#define __pyx_n_s_ConcurrentRpcLimiter___reduce_c __pyx_mstate_global->__pyx_n_s_ConcurrentRpcLimiter___reduce_c
+#define __pyx_n_s_ConcurrentRpcLimiter___setstate __pyx_mstate_global->__pyx_n_s_ConcurrentRpcLimiter___setstate
+#define __pyx_n_s_ConcurrentRpcLimiter__decrease __pyx_mstate_global->__pyx_n_s_ConcurrentRpcLimiter__decrease
+#define __pyx_n_s_ConcurrentRpcLimiter_check_befo __pyx_mstate_global->__pyx_n_s_ConcurrentRpcLimiter_check_befo
+#define __pyx_n_s_ConcurrentRpcLimiter_decrease_o __pyx_mstate_global->__pyx_n_s_ConcurrentRpcLimiter_decrease_o
+#define __pyx_kp_s_Concurrent_RPC_limit_exceeded __pyx_mstate_global->__pyx_kp_s_Concurrent_RPC_limit_exceeded
+#define __pyx_n_s_Condition __pyx_mstate_global->__pyx_n_s_Condition
+#define __pyx_n_s_ConnectivityEvent __pyx_mstate_global->__pyx_n_s_ConnectivityEvent
+#define __pyx_n_s_ConnectivityEvent___reduce_cytho __pyx_mstate_global->__pyx_n_s_ConnectivityEvent___reduce_cytho
+#define __pyx_n_s_ConnectivityEvent___setstate_cyt __pyx_mstate_global->__pyx_n_s_ConnectivityEvent___setstate_cyt
+#define __pyx_n_s_ConnectivityState __pyx_mstate_global->__pyx_n_s_ConnectivityState
+#define __pyx_n_s_ConnectivityTag __pyx_mstate_global->__pyx_n_s_ConnectivityTag
+#define __pyx_n_s_ConnectivityTag___reduce_cython __pyx_mstate_global->__pyx_n_s_ConnectivityTag___reduce_cython
+#define __pyx_n_s_ConnectivityTag___setstate_cyth __pyx_mstate_global->__pyx_n_s_ConnectivityTag___setstate_cyth
+#define __pyx_kp_s_Core_should_not_return_GRPC_QUEU __pyx_mstate_global->__pyx_kp_s_Core_should_not_return_GRPC_QUEU
+#define __pyx_kp_s_Credentials_couldn_t_have_been_s __pyx_mstate_global->__pyx_kp_s_Credentials_couldn_t_have_been_s
+#define __pyx_kp_s_Dedicated_exception_class_for_wa __pyx_mstate_global->__pyx_kp_s_Dedicated_exception_class_for_wa
+#define __pyx_n_s_DeprecationWarning __pyx_mstate_global->__pyx_n_s_DeprecationWarning
+#define __pyx_n_s_EMPTY_FLAGS __pyx_mstate_global->__pyx_n_s_EMPTY_FLAGS
+#define __pyx_n_s_EMPTY_MASK __pyx_mstate_global->__pyx_n_s_EMPTY_MASK
+#define __pyx_n_s_EOF __pyx_mstate_global->__pyx_n_s_EOF
+#define __pyx_n_s_EOF_2 __pyx_mstate_global->__pyx_n_s_EOF_2
+#define __pyx_n_s_EOF___bool __pyx_mstate_global->__pyx_n_s_EOF___bool
+#define __pyx_n_s_EOF___len __pyx_mstate_global->__pyx_n_s_EOF___len
+#define __pyx_n_s_EOF___repr __pyx_mstate_global->__pyx_n_s_EOF___repr
+#define __pyx_n_s_EOF___str __pyx_mstate_global->__pyx_n_s_EOF___str
+#define __pyx_n_s_EOF__repr __pyx_mstate_global->__pyx_n_s_EOF__repr
+#define __pyx_n_s_EX_USAGE __pyx_mstate_global->__pyx_n_s_EX_USAGE
+#define __pyx_n_s_Enum __pyx_mstate_global->__pyx_n_s_Enum
+#define __pyx_kp_s_Error_fetching_certificate_confi __pyx_mstate_global->__pyx_kp_s_Error_fetching_certificate_confi
+#define __pyx_kp_s_Error_fetching_certificate_confi_2 __pyx_mstate_global->__pyx_kp_s_Error_fetching_certificate_confi_2
+#define __pyx_kp_s_Error_in_callback_for_method_s __pyx_mstate_global->__pyx_kp_s_Error_in_callback_for_method_s
+#define __pyx_kp_s_Error_in_grpc_server_request_cal __pyx_mstate_global->__pyx_kp_s_Error_in_grpc_server_request_cal
+#define __pyx_n_s_ExecuteBatchError __pyx_mstate_global->__pyx_n_s_ExecuteBatchError
+#define __pyx_kp_s_ExecuteBatchError_raised_in_core __pyx_mstate_global->__pyx_kp_s_ExecuteBatchError_raised_in_core
+#define __pyx_kp_s_Exiting_child_due_to_raised_exce __pyx_mstate_global->__pyx_kp_s_Exiting_child_due_to_raised_exce
+#define __pyx_kp_s_Expected_bytes_str_or_unicode_no __pyx_mstate_global->__pyx_kp_s_Expected_bytes_str_or_unicode_no
+#define __pyx_kp_s_Expected_int_bytes_or_behavior_g __pyx_mstate_global->__pyx_kp_s_Expected_int_bytes_or_behavior_g
+#define __pyx_kp_s_Expected_str_not __pyx_mstate_global->__pyx_kp_s_Expected_str_not
+#define __pyx_kp_s_Expecting_non_ok_status_code __pyx_mstate_global->__pyx_kp_s_Expecting_non_ok_status_code
+#define __pyx_kp_s_Failed_grpc_call_start_batch_wit __pyx_mstate_global->__pyx_kp_s_Failed_grpc_call_start_batch_wit
+#define __pyx_kp_s_Failed_s_s __pyx_mstate_global->__pyx_kp_s_Failed_s_s
+#define __pyx_kp_s_Failed_sending_error_status_from __pyx_mstate_global->__pyx_kp_s_Failed_sending_error_status_from
+#define __pyx_kp_s_Failed_to_get_server_sockets_ple __pyx_mstate_global->__pyx_kp_s_Failed_to_get_server_sockets_ple
+#define __pyx_kp_s_Failed_to_get_servers_please_ens __pyx_mstate_global->__pyx_kp_s_Failed_to_get_servers_please_ens
+#define __pyx_kp_s_Failed_to_get_the_channel_please __pyx_mstate_global->__pyx_kp_s_Failed_to_get_the_channel_please
+#define __pyx_kp_s_Failed_to_get_the_server_please __pyx_mstate_global->__pyx_kp_s_Failed_to_get_the_server_please
+#define __pyx_kp_s_Failed_to_get_the_socket_please __pyx_mstate_global->__pyx_kp_s_Failed_to_get_the_socket_please
+#define __pyx_kp_s_Failed_to_get_the_subchannel_ple __pyx_mstate_global->__pyx_kp_s_Failed_to_get_the_subchannel_ple
+#define __pyx_kp_s_Failed_to_get_top_channels_pleas __pyx_mstate_global->__pyx_kp_s_Failed_to_get_top_channels_pleas
+#define __pyx_kp_s_Failed_to_receive_any_message_fr __pyx_mstate_global->__pyx_kp_s_Failed_to_receive_any_message_fr
+#define __pyx_kp_s_Failed_to_shutdown_gRPC_Core_aft __pyx_mstate_global->__pyx_kp_s_Failed_to_shutdown_gRPC_Core_aft
+#define __pyx_kp_s_Failed_to_shutdown_gRPC_Python_t __pyx_mstate_global->__pyx_kp_s_Failed_to_shutdown_gRPC_Python_t
+#define __pyx_n_s_ForkManagedThread __pyx_mstate_global->__pyx_n_s_ForkManagedThread
+#define __pyx_n_s_ForkManagedThread___init __pyx_mstate_global->__pyx_n_s_ForkManagedThread___init
+#define __pyx_n_s_ForkManagedThread___init___local __pyx_mstate_global->__pyx_n_s_ForkManagedThread___init___local
+#define __pyx_n_s_ForkManagedThread_join __pyx_mstate_global->__pyx_n_s_ForkManagedThread_join
+#define __pyx_n_s_ForkManagedThread_setDaemon __pyx_mstate_global->__pyx_n_s_ForkManagedThread_setDaemon
+#define __pyx_n_s_ForkManagedThread_start __pyx_mstate_global->__pyx_n_s_ForkManagedThread_start
+#define __pyx_n_s_ForkState __pyx_mstate_global->__pyx_n_s_ForkState
+#define __pyx_n_s_ForkState___init __pyx_mstate_global->__pyx_n_s_ForkState___init
+#define __pyx_n_s_GRPC_ASYNCIO_ENGINE __pyx_mstate_global->__pyx_n_s_GRPC_ASYNCIO_ENGINE
+#define __pyx_n_s_GRPC_COMPRESSION_CHANNEL_DEFAULT __pyx_mstate_global->__pyx_n_s_GRPC_COMPRESSION_CHANNEL_DEFAULT
+#define __pyx_n_s_GRPC_COMPRESSION_REQUEST_ALGORIT __pyx_mstate_global->__pyx_n_s_GRPC_COMPRESSION_REQUEST_ALGORIT
+#define __pyx_n_s_GRPC_ENABLE_FORK_SUPPORT __pyx_mstate_global->__pyx_n_s_GRPC_ENABLE_FORK_SUPPORT
+#define __pyx_n_s_GRPC_ENABLE_FORK_SUPPORT_2 __pyx_mstate_global->__pyx_n_s_GRPC_ENABLE_FORK_SUPPORT_2
+#define __pyx_n_s_GRPC_PROPAGATE_CANCELLATION __pyx_mstate_global->__pyx_n_s_GRPC_PROPAGATE_CANCELLATION
+#define __pyx_n_s_GRPC_PROPAGATE_CENSUS_STATS_CONT __pyx_mstate_global->__pyx_n_s_GRPC_PROPAGATE_CENSUS_STATS_CONT
+#define __pyx_n_s_GRPC_PROPAGATE_CENSUS_TRACING_CO __pyx_mstate_global->__pyx_n_s_GRPC_PROPAGATE_CENSUS_TRACING_CO
+#define __pyx_n_s_GRPC_PROPAGATE_DEADLINE __pyx_mstate_global->__pyx_n_s_GRPC_PROPAGATE_DEADLINE
+#define __pyx_n_s_GRPC_PROPAGATE_DEFAULTS __pyx_mstate_global->__pyx_n_s_GRPC_PROPAGATE_DEFAULTS
+#define __pyx_n_s_Group __pyx_mstate_global->__pyx_n_s_Group
+#define __pyx_n_s_GrpcArgWrapper __pyx_mstate_global->__pyx_n_s_GrpcArgWrapper
+#define __pyx_n_s_GrpcArgWrapper___reduce_cython __pyx_mstate_global->__pyx_n_s_GrpcArgWrapper___reduce_cython
+#define __pyx_n_s_GrpcArgWrapper___setstate_cytho __pyx_mstate_global->__pyx_n_s_GrpcArgWrapper___setstate_cytho
+#define __pyx_n_s_GrpcCallWrapper __pyx_mstate_global->__pyx_n_s_GrpcCallWrapper
+#define __pyx_n_s_HandlerCallDetails __pyx_mstate_global->__pyx_n_s_HandlerCallDetails
+#define __pyx_n_s_HandlerCallDetails___reduce_cyt __pyx_mstate_global->__pyx_n_s_HandlerCallDetails___reduce_cyt
+#define __pyx_n_s_HandlerCallDetails___setstate_c __pyx_mstate_global->__pyx_n_s_HandlerCallDetails___setstate_c
+#define __pyx_n_s_IMMUTABLE_EMPTY_METADATA __pyx_mstate_global->__pyx_n_s_IMMUTABLE_EMPTY_METADATA
+#define __pyx_n_s_INTERNAL_CALL_ERROR_MESSAGE_FOR __pyx_mstate_global->__pyx_n_s_INTERNAL_CALL_ERROR_MESSAGE_FOR
+#define __pyx_n_s_ImportError __pyx_mstate_global->__pyx_n_s_ImportError
+#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_n_s_InitialMetadataFlags __pyx_mstate_global->__pyx_n_s_InitialMetadataFlags
+#define __pyx_n_s_InsecureChannelCredentials __pyx_mstate_global->__pyx_n_s_InsecureChannelCredentials
+#define __pyx_n_s_InsecureChannelCredentials___red __pyx_mstate_global->__pyx_n_s_InsecureChannelCredentials___red
+#define __pyx_n_s_InsecureChannelCredentials___set __pyx_mstate_global->__pyx_n_s_InsecureChannelCredentials___set
+#define __pyx_n_s_IntegratedCall __pyx_mstate_global->__pyx_n_s_IntegratedCall
+#define __pyx_n_s_IntegratedCall___reduce_cython __pyx_mstate_global->__pyx_n_s_IntegratedCall___reduce_cython
+#define __pyx_n_s_IntegratedCall___setstate_cython __pyx_mstate_global->__pyx_n_s_IntegratedCall___setstate_cython
+#define __pyx_n_s_IntegratedCall_cancel __pyx_mstate_global->__pyx_n_s_IntegratedCall_cancel
+#define __pyx_n_s_IntegratedCall_operate __pyx_mstate_global->__pyx_n_s_IntegratedCall_operate
+#define __pyx_n_s_InternalError __pyx_mstate_global->__pyx_n_s_InternalError
+#define __pyx_kp_s_Internal_error_from_Core __pyx_mstate_global->__pyx_kp_s_Internal_error_from_Core
+#define __pyx_kp_s_Internal_gRPC_call_error_d __pyx_mstate_global->__pyx_kp_s_Internal_gRPC_call_error_d
+#define __pyx_kp_s_Invalid_encoding_on_s __pyx_mstate_global->__pyx_kp_s_Invalid_encoding_on_s
+#define __pyx_kp_u_Invalid_trailing_metadata_type_e __pyx_mstate_global->__pyx_kp_u_Invalid_trailing_metadata_type_e
+#define __pyx_n_s_KeyError __pyx_mstate_global->__pyx_n_s_KeyError
+#define __pyx_n_s_KeyboardInterrupt __pyx_mstate_global->__pyx_n_s_KeyboardInterrupt
+#define __pyx_n_s_LOGGER __pyx_mstate_global->__pyx_n_s_LOGGER
+#define __pyx_n_s_LatentEventArg __pyx_mstate_global->__pyx_n_s_LatentEventArg
+#define __pyx_n_s_LocalChannelCredentials __pyx_mstate_global->__pyx_n_s_LocalChannelCredentials
+#define __pyx_n_s_LocalChannelCredentials___reduce __pyx_mstate_global->__pyx_n_s_LocalChannelCredentials___reduce
+#define __pyx_n_s_LocalChannelCredentials___setsta __pyx_mstate_global->__pyx_n_s_LocalChannelCredentials___setsta
+#define __pyx_n_s_LocalConnectionType __pyx_mstate_global->__pyx_n_s_LocalConnectionType
+#define __pyx_kp_s_Locally_aborted __pyx_mstate_global->__pyx_kp_s_Locally_aborted
+#define __pyx_n_s_Lock __pyx_mstate_global->__pyx_n_s_Lock
+#define __pyx_n_s_MessageReceiver __pyx_mstate_global->__pyx_n_s_MessageReceiver
+#define __pyx_n_s_MessageReceiver___anext __pyx_mstate_global->__pyx_n_s_MessageReceiver___anext
+#define __pyx_n_s_MessageReceiver___reduce_cython __pyx_mstate_global->__pyx_n_s_MessageReceiver___reduce_cython
+#define __pyx_n_s_MessageReceiver___setstate_cyth __pyx_mstate_global->__pyx_n_s_MessageReceiver___setstate_cyth
+#define __pyx_n_s_MessageReceiver__async_message __pyx_mstate_global->__pyx_n_s_MessageReceiver__async_message
+#define __pyx_n_s_MetadataPluginCallCredentials __pyx_mstate_global->__pyx_n_s_MetadataPluginCallCredentials
+#define __pyx_n_s_MetadataPluginCallCredentials_2 __pyx_mstate_global->__pyx_n_s_MetadataPluginCallCredentials_2
+#define __pyx_n_s_MetadataPluginCallCredentials_3 __pyx_mstate_global->__pyx_n_s_MetadataPluginCallCredentials_3
+#define __pyx_n_s_Metadatum __pyx_mstate_global->__pyx_n_s_Metadatum
+#define __pyx_kp_s_Method_not_found __pyx_mstate_global->__pyx_kp_s_Method_not_found
+#define __pyx_n_s_NON_OK_CALL_REPRESENTATION __pyx_mstate_global->__pyx_n_s_NON_OK_CALL_REPRESENTATION
+#define __pyx_kp_s_No_custom_hooks_are_implemented __pyx_mstate_global->__pyx_kp_s_No_custom_hooks_are_implemented
+#define __pyx_kp_s_Non_thread_safe_operation __pyx_mstate_global->__pyx_kp_s_Non_thread_safe_operation
+#define __pyx_n_s_None __pyx_mstate_global->__pyx_n_s_None
+#define __pyx_n_s_NotImplementedError __pyx_mstate_global->__pyx_n_s_NotImplementedError
+#define __pyx_n_s_OK_CALL_REPRESENTATION __pyx_mstate_global->__pyx_n_s_OK_CALL_REPRESENTATION
+#define __pyx_n_s_Operation __pyx_mstate_global->__pyx_n_s_Operation
+#define __pyx_n_s_OperationType __pyx_mstate_global->__pyx_n_s_OperationType
+#define __pyx_n_s_Operation___reduce_cython __pyx_mstate_global->__pyx_n_s_Operation___reduce_cython
+#define __pyx_n_s_Operation___setstate_cython __pyx_mstate_global->__pyx_n_s_Operation___setstate_cython
+#define __pyx_n_s_Optional __pyx_mstate_global->__pyx_n_s_Optional
+#define __pyx_n_s_POLLER __pyx_mstate_global->__pyx_n_s_POLLER
+#define __pyx_n_s_PickleError __pyx_mstate_global->__pyx_n_s_PickleError
+#define __pyx_kp_s_Please_report_to_https_github_co __pyx_mstate_global->__pyx_kp_s_Please_report_to_https_github_co
+#define __pyx_n_s_PollerCompletionQueue __pyx_mstate_global->__pyx_n_s_PollerCompletionQueue
+#define __pyx_n_s_PollerCompletionQueue___reduce_c __pyx_mstate_global->__pyx_n_s_PollerCompletionQueue___reduce_c
+#define __pyx_n_s_PollerCompletionQueue___setstate __pyx_mstate_global->__pyx_n_s_PollerCompletionQueue___setstate
+#define __pyx_n_s_PollerCompletionQueue__handle_ev __pyx_mstate_global->__pyx_n_s_PollerCompletionQueue__handle_ev
+#define __pyx_n_s_PollerCompletionQueue__poll_wrap __pyx_mstate_global->__pyx_n_s_PollerCompletionQueue__poll_wrap
+#define __pyx_n_s_PollerCompletionQueue_bind_loop __pyx_mstate_global->__pyx_n_s_PollerCompletionQueue_bind_loop
+#define __pyx_n_s_PropagationConstants __pyx_mstate_global->__pyx_n_s_PropagationConstants
+#define __pyx_n_s_Pyx_CFunc_7_cython_6cygrpc_obj __pyx_mstate_global->__pyx_n_s_Pyx_CFunc_7_cython_6cygrpc_obj
+#define __pyx_n_s_Pyx_CFunc_7_cython_6cygrpc_obj_2 __pyx_mstate_global->__pyx_n_s_Pyx_CFunc_7_cython_6cygrpc_obj_2
+#define __pyx_n_s_Pyx_CFunc_7_cython_6cygrpc_obj_3 __pyx_mstate_global->__pyx_n_s_Pyx_CFunc_7_cython_6cygrpc_obj_3
+#define __pyx_n_s_Pyx_CFunc_7_cython_6cygrpc_voi __pyx_mstate_global->__pyx_n_s_Pyx_CFunc_7_cython_6cygrpc_voi
+#define __pyx_n_s_Queue __pyx_mstate_global->__pyx_n_s_Queue
+#define __pyx_n_s_RLock __pyx_mstate_global->__pyx_n_s_RLock
+#define __pyx_n_s_RPCState __pyx_mstate_global->__pyx_n_s_RPCState
+#define __pyx_n_s_RPCState___reduce_cython __pyx_mstate_global->__pyx_n_s_RPCState___reduce_cython
+#define __pyx_n_s_RPCState___setstate_cython __pyx_mstate_global->__pyx_n_s_RPCState___setstate_cython
+#define __pyx_kp_s_RPC_already_finished __pyx_mstate_global->__pyx_kp_s_RPC_already_finished
+#define __pyx_kp_s_RPC_cancelled_for_servicer_metho __pyx_mstate_global->__pyx_kp_s_RPC_cancelled_for_servicer_metho
+#define __pyx_kp_s_RPC_cancelled_for_unknown_reason __pyx_mstate_global->__pyx_kp_s_RPC_cancelled_for_unknown_reason
+#define __pyx_kp_s_Raised_if_the_server_is_stopped __pyx_mstate_global->__pyx_kp_s_Raised_if_the_server_is_stopped
+#define __pyx_kp_s_Raised_upon_unexpected_errors_in __pyx_mstate_global->__pyx_kp_s_Raised_upon_unexpected_errors_in
+#define __pyx_kp_s_Raised_when_calling_abort_in_ser __pyx_mstate_global->__pyx_kp_s_Raised_when_calling_abort_in_ser
+#define __pyx_kp_s_Raised_when_execute_batch_return __pyx_mstate_global->__pyx_kp_s_Raised_when_execute_batch_return
+#define __pyx_kp_s_Raised_when_the_usage_of_API_by __pyx_mstate_global->__pyx_kp_s_Raised_when_the_usage_of_API_by
+#define __pyx_n_s_ReceiveCloseOnServerOperation __pyx_mstate_global->__pyx_n_s_ReceiveCloseOnServerOperation
+#define __pyx_n_s_ReceiveCloseOnServerOperation_2 __pyx_mstate_global->__pyx_n_s_ReceiveCloseOnServerOperation_2
+#define __pyx_n_s_ReceiveCloseOnServerOperation_3 __pyx_mstate_global->__pyx_n_s_ReceiveCloseOnServerOperation_3
+#define __pyx_n_s_ReceiveCloseOnServerOperation_ca __pyx_mstate_global->__pyx_n_s_ReceiveCloseOnServerOperation_ca
+#define __pyx_n_s_ReceiveCloseOnServerOperation_ty __pyx_mstate_global->__pyx_n_s_ReceiveCloseOnServerOperation_ty
+#define __pyx_n_s_ReceiveInitialMetadataOperation __pyx_mstate_global->__pyx_n_s_ReceiveInitialMetadataOperation
+#define __pyx_n_s_ReceiveInitialMetadataOperation_2 __pyx_mstate_global->__pyx_n_s_ReceiveInitialMetadataOperation_2
+#define __pyx_n_s_ReceiveInitialMetadataOperation_3 __pyx_mstate_global->__pyx_n_s_ReceiveInitialMetadataOperation_3
+#define __pyx_n_s_ReceiveInitialMetadataOperation_4 __pyx_mstate_global->__pyx_n_s_ReceiveInitialMetadataOperation_4
+#define __pyx_n_s_ReceiveInitialMetadataOperation_5 __pyx_mstate_global->__pyx_n_s_ReceiveInitialMetadataOperation_5
+#define __pyx_n_s_ReceiveMessageOperation __pyx_mstate_global->__pyx_n_s_ReceiveMessageOperation
+#define __pyx_n_s_ReceiveMessageOperation___reduce __pyx_mstate_global->__pyx_n_s_ReceiveMessageOperation___reduce
+#define __pyx_n_s_ReceiveMessageOperation___setsta __pyx_mstate_global->__pyx_n_s_ReceiveMessageOperation___setsta
+#define __pyx_n_s_ReceiveMessageOperation_message __pyx_mstate_global->__pyx_n_s_ReceiveMessageOperation_message
+#define __pyx_n_s_ReceiveMessageOperation_type __pyx_mstate_global->__pyx_n_s_ReceiveMessageOperation_type
+#define __pyx_n_s_ReceiveStatusOnClientOperation __pyx_mstate_global->__pyx_n_s_ReceiveStatusOnClientOperation
+#define __pyx_n_s_ReceiveStatusOnClientOperation_2 __pyx_mstate_global->__pyx_n_s_ReceiveStatusOnClientOperation_2
+#define __pyx_n_s_ReceiveStatusOnClientOperation_3 __pyx_mstate_global->__pyx_n_s_ReceiveStatusOnClientOperation_3
+#define __pyx_n_s_ReceiveStatusOnClientOperation_c __pyx_mstate_global->__pyx_n_s_ReceiveStatusOnClientOperation_c
+#define __pyx_n_s_ReceiveStatusOnClientOperation_d __pyx_mstate_global->__pyx_n_s_ReceiveStatusOnClientOperation_d
+#define __pyx_n_s_ReceiveStatusOnClientOperation_e __pyx_mstate_global->__pyx_n_s_ReceiveStatusOnClientOperation_e
+#define __pyx_n_s_ReceiveStatusOnClientOperation_t __pyx_mstate_global->__pyx_n_s_ReceiveStatusOnClientOperation_t
+#define __pyx_n_s_ReceiveStatusOnClientOperation_t_2 __pyx_mstate_global->__pyx_n_s_ReceiveStatusOnClientOperation_t_2
+#define __pyx_n_s_RequestCallError __pyx_mstate_global->__pyx_n_s_RequestCallError
+#define __pyx_n_s_RequestCallEvent __pyx_mstate_global->__pyx_n_s_RequestCallEvent
+#define __pyx_n_s_RequestCallEvent___reduce_cython __pyx_mstate_global->__pyx_n_s_RequestCallEvent___reduce_cython
+#define __pyx_n_s_RequestCallEvent___setstate_cyth __pyx_mstate_global->__pyx_n_s_RequestCallEvent___setstate_cyth
+#define __pyx_n_s_RequestCallTag __pyx_mstate_global->__pyx_n_s_RequestCallTag
+#define __pyx_n_s_RequestCallTag___reduce_cython __pyx_mstate_global->__pyx_n_s_RequestCallTag___reduce_cython
+#define __pyx_n_s_RequestCallTag___setstate_cytho __pyx_mstate_global->__pyx_n_s_RequestCallTag___setstate_cytho
+#define __pyx_n_s_RuntimeError __pyx_mstate_global->__pyx_n_s_RuntimeError
+#define __pyx_n_s_SERVICES_TO_EXCLUDE __pyx_mstate_global->__pyx_n_s_SERVICES_TO_EXCLUDE
+#define __pyx_n_s_SSLChannelCredentials __pyx_mstate_global->__pyx_n_s_SSLChannelCredentials
+#define __pyx_n_s_SSLChannelCredentials___reduce_c __pyx_mstate_global->__pyx_n_s_SSLChannelCredentials___reduce_c
+#define __pyx_n_s_SSLChannelCredentials___setstate __pyx_mstate_global->__pyx_n_s_SSLChannelCredentials___setstate
+#define __pyx_n_s_SSLSessionCacheLRU __pyx_mstate_global->__pyx_n_s_SSLSessionCacheLRU
+#define __pyx_n_s_SSLSessionCacheLRU___reduce_cyth __pyx_mstate_global->__pyx_n_s_SSLSessionCacheLRU___reduce_cyth
+#define __pyx_n_s_SSLSessionCacheLRU___setstate_cy __pyx_mstate_global->__pyx_n_s_SSLSessionCacheLRU___setstate_cy
+#define __pyx_n_s_SegregatedCall __pyx_mstate_global->__pyx_n_s_SegregatedCall
+#define __pyx_n_s_SegregatedCall___reduce_cython __pyx_mstate_global->__pyx_n_s_SegregatedCall___reduce_cython
+#define __pyx_n_s_SegregatedCall___setstate_cython __pyx_mstate_global->__pyx_n_s_SegregatedCall___setstate_cython
+#define __pyx_n_s_SegregatedCall_cancel __pyx_mstate_global->__pyx_n_s_SegregatedCall_cancel
+#define __pyx_n_s_SegregatedCall_next_event __pyx_mstate_global->__pyx_n_s_SegregatedCall_next_event
+#define __pyx_n_s_SegregatedCall_operate __pyx_mstate_global->__pyx_n_s_SegregatedCall_operate
+#define __pyx_n_s_SendCloseFromClientOperation __pyx_mstate_global->__pyx_n_s_SendCloseFromClientOperation
+#define __pyx_n_s_SendCloseFromClientOperation___r __pyx_mstate_global->__pyx_n_s_SendCloseFromClientOperation___r
+#define __pyx_n_s_SendCloseFromClientOperation___s __pyx_mstate_global->__pyx_n_s_SendCloseFromClientOperation___s
+#define __pyx_n_s_SendCloseFromClientOperation_typ __pyx_mstate_global->__pyx_n_s_SendCloseFromClientOperation_typ
+#define __pyx_n_s_SendInitialMetadataOperation __pyx_mstate_global->__pyx_n_s_SendInitialMetadataOperation
+#define __pyx_n_s_SendInitialMetadataOperation___r __pyx_mstate_global->__pyx_n_s_SendInitialMetadataOperation___r
+#define __pyx_n_s_SendInitialMetadataOperation___s __pyx_mstate_global->__pyx_n_s_SendInitialMetadataOperation___s
+#define __pyx_n_s_SendInitialMetadataOperation_typ __pyx_mstate_global->__pyx_n_s_SendInitialMetadataOperation_typ
+#define __pyx_n_s_SendMessageOperation __pyx_mstate_global->__pyx_n_s_SendMessageOperation
+#define __pyx_n_s_SendMessageOperation___reduce_cy __pyx_mstate_global->__pyx_n_s_SendMessageOperation___reduce_cy
+#define __pyx_n_s_SendMessageOperation___setstate __pyx_mstate_global->__pyx_n_s_SendMessageOperation___setstate
+#define __pyx_n_s_SendMessageOperation_type __pyx_mstate_global->__pyx_n_s_SendMessageOperation_type
+#define __pyx_n_s_SendStatusFromServerOperation __pyx_mstate_global->__pyx_n_s_SendStatusFromServerOperation
+#define __pyx_n_s_SendStatusFromServerOperation_2 __pyx_mstate_global->__pyx_n_s_SendStatusFromServerOperation_2
+#define __pyx_n_s_SendStatusFromServerOperation_3 __pyx_mstate_global->__pyx_n_s_SendStatusFromServerOperation_3
+#define __pyx_n_s_SendStatusFromServerOperation_ty __pyx_mstate_global->__pyx_n_s_SendStatusFromServerOperation_ty
+#define __pyx_kp_s_Send_initial_metadata_failed_alr __pyx_mstate_global->__pyx_kp_s_Send_initial_metadata_failed_alr
+#define __pyx_n_s_Server __pyx_mstate_global->__pyx_n_s_Server
+#define __pyx_n_s_ServerCertificateConfig __pyx_mstate_global->__pyx_n_s_ServerCertificateConfig
+#define __pyx_n_s_ServerCertificateConfig___reduce __pyx_mstate_global->__pyx_n_s_ServerCertificateConfig___reduce
+#define __pyx_n_s_ServerCertificateConfig___setsta __pyx_mstate_global->__pyx_n_s_ServerCertificateConfig___setsta
+#define __pyx_n_s_ServerCertificateConfiguration __pyx_mstate_global->__pyx_n_s_ServerCertificateConfiguration
+#define __pyx_n_s_ServerCredentials __pyx_mstate_global->__pyx_n_s_ServerCredentials
+#define __pyx_n_s_ServerCredentials___reduce_cytho __pyx_mstate_global->__pyx_n_s_ServerCredentials___reduce_cytho
+#define __pyx_n_s_ServerCredentials___setstate_cyt __pyx_mstate_global->__pyx_n_s_ServerCredentials___setstate_cyt
+#define __pyx_n_s_ServerShutdownEvent __pyx_mstate_global->__pyx_n_s_ServerShutdownEvent
+#define __pyx_n_s_ServerShutdownEvent___reduce_cyt __pyx_mstate_global->__pyx_n_s_ServerShutdownEvent___reduce_cyt
+#define __pyx_n_s_ServerShutdownEvent___setstate_c __pyx_mstate_global->__pyx_n_s_ServerShutdownEvent___setstate_c
+#define __pyx_n_s_ServerShutdownTag __pyx_mstate_global->__pyx_n_s_ServerShutdownTag
+#define __pyx_n_s_ServerShutdownTag___reduce_cyth __pyx_mstate_global->__pyx_n_s_ServerShutdownTag___reduce_cyth
+#define __pyx_n_s_ServerShutdownTag___setstate_cy __pyx_mstate_global->__pyx_n_s_ServerShutdownTag___setstate_cy
+#define __pyx_n_s_ServerStoppedError __pyx_mstate_global->__pyx_n_s_ServerStoppedError
+#define __pyx_n_s_Server___reduce_cython __pyx_mstate_global->__pyx_n_s_Server___reduce_cython
+#define __pyx_n_s_Server___setstate_cython __pyx_mstate_global->__pyx_n_s_Server___setstate_cython
+#define __pyx_n_s_Server_add_http2_port __pyx_mstate_global->__pyx_n_s_Server_add_http2_port
+#define __pyx_kp_s_Server_already_stopped __pyx_mstate_global->__pyx_kp_s_Server_already_stopped
+#define __pyx_n_s_Server_cancel_all_calls __pyx_mstate_global->__pyx_n_s_Server_cancel_all_calls
+#define __pyx_n_s_Server_destroy __pyx_mstate_global->__pyx_n_s_Server_destroy
+#define __pyx_kp_s_Server_not_in_ready_state __pyx_mstate_global->__pyx_kp_s_Server_not_in_ready_state
+#define __pyx_n_s_Server_register_completion_queue __pyx_mstate_global->__pyx_n_s_Server_register_completion_queue
+#define __pyx_n_s_Server_request_call __pyx_mstate_global->__pyx_n_s_Server_request_call
+#define __pyx_n_s_Server_shutdown __pyx_mstate_global->__pyx_n_s_Server_shutdown
+#define __pyx_kp_s_Server_shutdown_failed_no_comple __pyx_mstate_global->__pyx_kp_s_Server_shutdown_failed_no_comple
+#define __pyx_n_s_Server_start __pyx_mstate_global->__pyx_n_s_Server_start
+#define __pyx_n_s_ServicerContext __pyx_mstate_global->__pyx_n_s_ServicerContext
+#define __pyx_n_s_ServicerContext___reduce_cython __pyx_mstate_global->__pyx_n_s_ServicerContext___reduce_cython
+#define __pyx_n_s_ServicerContext___setstate_cyth __pyx_mstate_global->__pyx_n_s_ServicerContext___setstate_cyth
+#define __pyx_n_s_ServicerContext_abort __pyx_mstate_global->__pyx_n_s_ServicerContext_abort
+#define __pyx_n_s_ServicerContext_abort_with_stat __pyx_mstate_global->__pyx_n_s_ServicerContext_abort_with_stat
+#define __pyx_n_s_ServicerContext_add_done_callba __pyx_mstate_global->__pyx_n_s_ServicerContext_add_done_callba
+#define __pyx_n_s_ServicerContext_auth_context __pyx_mstate_global->__pyx_n_s_ServicerContext_auth_context
+#define __pyx_n_s_ServicerContext_cancelled __pyx_mstate_global->__pyx_n_s_ServicerContext_cancelled
+#define __pyx_n_s_ServicerContext_code __pyx_mstate_global->__pyx_n_s_ServicerContext_code
+#define __pyx_n_s_ServicerContext_details __pyx_mstate_global->__pyx_n_s_ServicerContext_details
+#define __pyx_n_s_ServicerContext_disable_next_me __pyx_mstate_global->__pyx_n_s_ServicerContext_disable_next_me
+#define __pyx_n_s_ServicerContext_done __pyx_mstate_global->__pyx_n_s_ServicerContext_done
+#define __pyx_n_s_ServicerContext_invocation_meta __pyx_mstate_global->__pyx_n_s_ServicerContext_invocation_meta
+#define __pyx_n_s_ServicerContext_peer __pyx_mstate_global->__pyx_n_s_ServicerContext_peer
+#define __pyx_n_s_ServicerContext_peer_identities __pyx_mstate_global->__pyx_n_s_ServicerContext_peer_identities
+#define __pyx_n_s_ServicerContext_peer_identity_k __pyx_mstate_global->__pyx_n_s_ServicerContext_peer_identity_k
+#define __pyx_n_s_ServicerContext_read __pyx_mstate_global->__pyx_n_s_ServicerContext_read
+#define __pyx_n_s_ServicerContext_send_initial_me __pyx_mstate_global->__pyx_n_s_ServicerContext_send_initial_me
+#define __pyx_n_s_ServicerContext_set_code __pyx_mstate_global->__pyx_n_s_ServicerContext_set_code
+#define __pyx_n_s_ServicerContext_set_compression __pyx_mstate_global->__pyx_n_s_ServicerContext_set_compression
+#define __pyx_n_s_ServicerContext_set_details __pyx_mstate_global->__pyx_n_s_ServicerContext_set_details
+#define __pyx_n_s_ServicerContext_set_trailing_me __pyx_mstate_global->__pyx_n_s_ServicerContext_set_trailing_me
+#define __pyx_n_s_ServicerContext_time_remaining __pyx_mstate_global->__pyx_n_s_ServicerContext_time_remaining
+#define __pyx_n_s_ServicerContext_trailing_metada __pyx_mstate_global->__pyx_n_s_ServicerContext_trailing_metada
+#define __pyx_n_s_ServicerContext_write __pyx_mstate_global->__pyx_n_s_ServicerContext_write
+#define __pyx_n_s_SslPemKeyCertPair __pyx_mstate_global->__pyx_n_s_SslPemKeyCertPair
+#define __pyx_n_s_SslPemKeyCertPair___reduce_cytho __pyx_mstate_global->__pyx_n_s_SslPemKeyCertPair___reduce_cytho
+#define __pyx_n_s_SslPemKeyCertPair___setstate_cyt __pyx_mstate_global->__pyx_n_s_SslPemKeyCertPair___setstate_cyt
+#define __pyx_n_s_StatusCode __pyx_mstate_global->__pyx_n_s_StatusCode
+#define __pyx_n_s_SyncServicerContext __pyx_mstate_global->__pyx_n_s_SyncServicerContext
+#define __pyx_n_s_SyncServicerContext___reduce_cy __pyx_mstate_global->__pyx_n_s_SyncServicerContext___reduce_cy
+#define __pyx_n_s_SyncServicerContext___setstate __pyx_mstate_global->__pyx_n_s_SyncServicerContext___setstate
+#define __pyx_n_s_SyncServicerContext_abort __pyx_mstate_global->__pyx_n_s_SyncServicerContext_abort
+#define __pyx_n_s_SyncServicerContext_add_callbac __pyx_mstate_global->__pyx_n_s_SyncServicerContext_add_callbac
+#define __pyx_n_s_SyncServicerContext_auth_contex __pyx_mstate_global->__pyx_n_s_SyncServicerContext_auth_contex
+#define __pyx_n_s_SyncServicerContext_disable_nex __pyx_mstate_global->__pyx_n_s_SyncServicerContext_disable_nex
+#define __pyx_n_s_SyncServicerContext_invocation __pyx_mstate_global->__pyx_n_s_SyncServicerContext_invocation
+#define __pyx_n_s_SyncServicerContext_peer __pyx_mstate_global->__pyx_n_s_SyncServicerContext_peer
+#define __pyx_n_s_SyncServicerContext_peer_identi __pyx_mstate_global->__pyx_n_s_SyncServicerContext_peer_identi
+#define __pyx_n_s_SyncServicerContext_peer_identi_2 __pyx_mstate_global->__pyx_n_s_SyncServicerContext_peer_identi_2
+#define __pyx_n_s_SyncServicerContext_send_initia __pyx_mstate_global->__pyx_n_s_SyncServicerContext_send_initia
+#define __pyx_n_s_SyncServicerContext_set_code __pyx_mstate_global->__pyx_n_s_SyncServicerContext_set_code
+#define __pyx_n_s_SyncServicerContext_set_compres __pyx_mstate_global->__pyx_n_s_SyncServicerContext_set_compres
+#define __pyx_n_s_SyncServicerContext_set_details __pyx_mstate_global->__pyx_n_s_SyncServicerContext_set_details
+#define __pyx_n_s_SyncServicerContext_set_trailin __pyx_mstate_global->__pyx_n_s_SyncServicerContext_set_trailin
+#define __pyx_n_s_SyncServicerContext_time_remain __pyx_mstate_global->__pyx_n_s_SyncServicerContext_time_remain
+#define __pyx_n_s_SystemExit __pyx_mstate_global->__pyx_n_s_SystemExit
+#define __pyx_n_s_TRUE __pyx_mstate_global->__pyx_n_s_TRUE
+#define __pyx_n_s_TRUE_VALUES __pyx_mstate_global->__pyx_n_s_TRUE_VALUES
+#define __pyx_n_s_TYPE_METADATA_STRING __pyx_mstate_global->__pyx_n_s_TYPE_METADATA_STRING
+#define __pyx_n_s_Tag __pyx_mstate_global->__pyx_n_s_Tag
+#define __pyx_n_s_Tag___reduce_cython __pyx_mstate_global->__pyx_n_s_Tag___reduce_cython
+#define __pyx_n_s_Tag___setstate_cython __pyx_mstate_global->__pyx_n_s_Tag___setstate_cython
+#define __pyx_kp_s_The_base_class_for_exceptions_ge __pyx_mstate_global->__pyx_kp_s_The_base_class_for_exceptions_ge
+#define __pyx_n_s_Thread __pyx_mstate_global->__pyx_n_s_Thread
+#define __pyx_kp_s_Timed_out __pyx_mstate_global->__pyx_kp_s_Timed_out
+#define __pyx_n_s_TimeoutError __pyx_mstate_global->__pyx_n_s_TimeoutError
+#define __pyx_n_s_True __pyx_mstate_global->__pyx_n_s_True
+#define __pyx_kp_s_Tuple_Tuple_str_Union_str_bytes __pyx_mstate_global->__pyx_kp_s_Tuple_Tuple_str_Union_str_bytes
+#define __pyx_n_s_TypeError __pyx_mstate_global->__pyx_n_s_TypeError
+#define __pyx_n_s_UNKNOWN_CANCELLATION_DETAILS __pyx_mstate_global->__pyx_n_s_UNKNOWN_CANCELLATION_DETAILS
+#define __pyx_kp_s_Unexpected_s_raised_by_servicer __pyx_mstate_global->__pyx_kp_s_Unexpected_s_raised_by_servicer
+#define __pyx_kp_s_Unexpected_s_s __pyx_mstate_global->__pyx_kp_s_Unexpected_s_s
+#define __pyx_n_s_UnicodeDecodeError __pyx_mstate_global->__pyx_n_s_UnicodeDecodeError
+#define __pyx_n_s_Unknown __pyx_mstate_global->__pyx_n_s_Unknown
+#define __pyx_kp_s_Unsupported_engine_type_s __pyx_mstate_global->__pyx_kp_s_Unsupported_engine_type_s
+#define __pyx_n_s_UsageError __pyx_mstate_global->__pyx_n_s_UsageError
+#define __pyx_kp_s_Using_s_as_I_O_engine __pyx_mstate_global->__pyx_kp_s_Using_s_as_I_O_engine
+#define __pyx_n_s_ValueError __pyx_mstate_global->__pyx_n_s_ValueError
+#define __pyx_n_s_WatchConnectivityFailed __pyx_mstate_global->__pyx_n_s_WatchConnectivityFailed
+#define __pyx_n_s_WriteFlag __pyx_mstate_global->__pyx_n_s_WriteFlag
+#define __pyx_n_s_XDSChannelCredentials __pyx_mstate_global->__pyx_n_s_XDSChannelCredentials
+#define __pyx_n_s_XDSChannelCredentials___reduce_c __pyx_mstate_global->__pyx_n_s_XDSChannelCredentials___reduce_c
+#define __pyx_n_s_XDSChannelCredentials___setstate __pyx_mstate_global->__pyx_n_s_XDSChannelCredentials___setstate
+#define __pyx_n_s_YES __pyx_mstate_global->__pyx_n_s_YES
+#define __pyx_n_s_Yes __pyx_mstate_global->__pyx_n_s_Yes
+#define __pyx_n_s__107 __pyx_mstate_global->__pyx_n_s__107
+#define __pyx_n_s__38 __pyx_mstate_global->__pyx_n_s__38
+#define __pyx_kp_u__49 __pyx_mstate_global->__pyx_kp_u__49
+#define __pyx_n_s__57 __pyx_mstate_global->__pyx_n_s__57
+#define __pyx_kp_u__58 __pyx_mstate_global->__pyx_kp_u__58
+#define __pyx_kp_u__69 __pyx_mstate_global->__pyx_kp_u__69
+#define __pyx_kp_b__7 __pyx_mstate_global->__pyx_kp_b__7
+#define __pyx_kp_s__7 __pyx_mstate_global->__pyx_kp_s__7
+#define __pyx_kp_u__70 __pyx_mstate_global->__pyx_kp_u__70
+#define __pyx_kp_u__71 __pyx_mstate_global->__pyx_kp_u__71
+#define __pyx_n_s_abort __pyx_mstate_global->__pyx_n_s_abort
+#define __pyx_n_s_abort_with_status __pyx_mstate_global->__pyx_n_s_abort_with_status
+#define __pyx_n_s_aborted __pyx_mstate_global->__pyx_n_s_aborted
+#define __pyx_n_s_active_thread_count __pyx_mstate_global->__pyx_n_s_active_thread_count
+#define __pyx_n_s_actual_code __pyx_mstate_global->__pyx_n_s_actual_code
+#define __pyx_n_s_add __pyx_mstate_global->__pyx_n_s_add
+#define __pyx_n_s_add_callback __pyx_mstate_global->__pyx_n_s_add_callback
+#define __pyx_n_s_add_callback_handler_locals_han __pyx_mstate_global->__pyx_n_s_add_callback_handler_locals_han
+#define __pyx_n_s_add_done_callback __pyx_mstate_global->__pyx_n_s_add_done_callback
+#define __pyx_n_s_add_generic_rpc_handlers __pyx_mstate_global->__pyx_n_s_add_generic_rpc_handlers
+#define __pyx_n_s_add_http2_port __pyx_mstate_global->__pyx_n_s_add_http2_port
+#define __pyx_n_s_add_insecure_port __pyx_mstate_global->__pyx_n_s_add_insecure_port
+#define __pyx_n_s_add_reader __pyx_mstate_global->__pyx_n_s_add_reader
+#define __pyx_n_s_add_secure_port __pyx_mstate_global->__pyx_n_s_add_secure_port
+#define __pyx_n_s_address __pyx_mstate_global->__pyx_n_s_address
+#define __pyx_n_s_address_c_string __pyx_mstate_global->__pyx_n_s_address_c_string
+#define __pyx_n_s_aenter __pyx_mstate_global->__pyx_n_s_aenter
+#define __pyx_n_s_aexit __pyx_mstate_global->__pyx_n_s_aexit
+#define __pyx_n_s_after_in_child __pyx_mstate_global->__pyx_n_s_after_in_child
+#define __pyx_n_s_after_in_parent __pyx_mstate_global->__pyx_n_s_after_in_parent
+#define __pyx_n_s_agen __pyx_mstate_global->__pyx_n_s_agen
+#define __pyx_n_s_aiter __pyx_mstate_global->__pyx_n_s_aiter
+#define __pyx_n_s_algorithm __pyx_mstate_global->__pyx_n_s_algorithm
+#define __pyx_n_s_already_accepted __pyx_mstate_global->__pyx_n_s_already_accepted
+#define __pyx_n_s_already_exists __pyx_mstate_global->__pyx_n_s_already_exists
+#define __pyx_n_s_already_finished __pyx_mstate_global->__pyx_n_s_already_finished
+#define __pyx_n_s_already_invoked __pyx_mstate_global->__pyx_n_s_already_invoked
+#define __pyx_n_s_anext __pyx_mstate_global->__pyx_n_s_anext
+#define __pyx_n_s_append __pyx_mstate_global->__pyx_n_s_append
+#define __pyx_n_s_apply __pyx_mstate_global->__pyx_n_s_apply
+#define __pyx_n_s_args __pyx_mstate_global->__pyx_n_s_args
+#define __pyx_n_s_arguments __pyx_mstate_global->__pyx_n_s_arguments
+#define __pyx_n_s_ascii __pyx_mstate_global->__pyx_n_s_ascii
+#define __pyx_n_s_async_callback_func __pyx_mstate_global->__pyx_n_s_async_callback_func
+#define __pyx_n_s_async_generator_to_generator __pyx_mstate_global->__pyx_n_s_async_generator_to_generator
+#define __pyx_n_s_async_message_receiver __pyx_mstate_global->__pyx_n_s_async_message_receiver
+#define __pyx_n_s_async_response_generator __pyx_mstate_global->__pyx_n_s_async_response_generator
+#define __pyx_n_s_asyncio __pyx_mstate_global->__pyx_n_s_asyncio
+#define __pyx_n_s_asyncio_coroutines __pyx_mstate_global->__pyx_n_s_asyncio_coroutines
+#define __pyx_n_s_asyncio_tasks __pyx_mstate_global->__pyx_n_s_asyncio_tasks
+#define __pyx_n_s_atexit __pyx_mstate_global->__pyx_n_s_atexit
+#define __pyx_n_s_auth_context __pyx_mstate_global->__pyx_n_s_auth_context
+#define __pyx_n_s_await __pyx_mstate_global->__pyx_n_s_await
+#define __pyx_n_s_await_zero_threads __pyx_mstate_global->__pyx_n_s_await_zero_threads
+#define __pyx_n_s_backup_queue __pyx_mstate_global->__pyx_n_s_backup_queue
+#define __pyx_n_s_batch_error __pyx_mstate_global->__pyx_n_s_batch_error
+#define __pyx_n_s_batch_operation_tag __pyx_mstate_global->__pyx_n_s_batch_operation_tag
+#define __pyx_n_s_batch_operations __pyx_mstate_global->__pyx_n_s_batch_operations
+#define __pyx_n_s_before __pyx_mstate_global->__pyx_n_s_before
+#define __pyx_kp_b_bin __pyx_mstate_global->__pyx_kp_b_bin
+#define __pyx_n_s_bind_loop __pyx_mstate_global->__pyx_n_s_bind_loop
+#define __pyx_n_s_block_if_fork_in_progress __pyx_mstate_global->__pyx_n_s_block_if_fork_in_progress
+#define __pyx_n_s_bool __pyx_mstate_global->__pyx_n_s_bool
+#define __pyx_n_s_buffer_hint __pyx_mstate_global->__pyx_n_s_buffer_hint
+#define __pyx_n_s_build_census_context __pyx_mstate_global->__pyx_n_s_build_census_context
+#define __pyx_n_s_bytes_ctx __pyx_mstate_global->__pyx_n_s_bytes_ctx
+#define __pyx_n_s_c_call_credentials __pyx_mstate_global->__pyx_n_s_c_call_credentials
+#define __pyx_n_s_c_cert_config __pyx_mstate_global->__pyx_n_s_c_cert_config
+#define __pyx_n_s_c_deadline __pyx_mstate_global->__pyx_n_s_c_deadline
+#define __pyx_n_s_c_details __pyx_mstate_global->__pyx_n_s_c_details
+#define __pyx_n_s_c_error_details __pyx_mstate_global->__pyx_n_s_c_error_details
+#define __pyx_n_s_c_event __pyx_mstate_global->__pyx_n_s_c_event
+#define __pyx_n_s_c_key __pyx_mstate_global->__pyx_n_s_c_key
+#define __pyx_n_s_c_options __pyx_mstate_global->__pyx_n_s_c_options
+#define __pyx_n_s_c_peer __pyx_mstate_global->__pyx_n_s_c_peer
+#define __pyx_n_s_c_pem_root_certs __pyx_mstate_global->__pyx_n_s_c_pem_root_certs
+#define __pyx_n_s_c_returned_str __pyx_mstate_global->__pyx_n_s_c_returned_str
+#define __pyx_n_s_c_target __pyx_mstate_global->__pyx_n_s_c_target
+#define __pyx_n_s_call __pyx_mstate_global->__pyx_n_s_call
+#define __pyx_n_s_call_credentials __pyx_mstate_global->__pyx_n_s_call_credentials
+#define __pyx_n_s_call_credentialses __pyx_mstate_global->__pyx_n_s_call_credentialses
+#define __pyx_n_s_call_creds __pyx_mstate_global->__pyx_n_s_call_creds
+#define __pyx_n_s_call_details __pyx_mstate_global->__pyx_n_s_call_details
+#define __pyx_n_s_call_error __pyx_mstate_global->__pyx_n_s_call_error
+#define __pyx_n_s_call_handle __pyx_mstate_global->__pyx_n_s_call_handle
+#define __pyx_n_s_call_queue __pyx_mstate_global->__pyx_n_s_call_queue
+#define __pyx_n_s_call_soon_threadsafe __pyx_mstate_global->__pyx_n_s_call_soon_threadsafe
+#define __pyx_n_s_call_state __pyx_mstate_global->__pyx_n_s_call_state
+#define __pyx_n_s_callback __pyx_mstate_global->__pyx_n_s_callback
+#define __pyx_n_s_callback_func __pyx_mstate_global->__pyx_n_s_callback_func
+#define __pyx_n_s_callback_wrapper __pyx_mstate_global->__pyx_n_s_callback_wrapper
+#define __pyx_n_s_cancel __pyx_mstate_global->__pyx_n_s_cancel
+#define __pyx_n_s_cancel_all_calls __pyx_mstate_global->__pyx_n_s_cancel_all_calls
+#define __pyx_n_s_cancelled __pyx_mstate_global->__pyx_n_s_cancelled
+#define __pyx_kp_s_cannot_register_completion_queue __pyx_mstate_global->__pyx_kp_s_cannot_register_completion_queue
+#define __pyx_n_s_capacity __pyx_mstate_global->__pyx_n_s_capacity
+#define __pyx_n_s_capsule __pyx_mstate_global->__pyx_n_s_capsule
+#define __pyx_n_s_capsule_ptr __pyx_mstate_global->__pyx_n_s_capsule_ptr
+#define __pyx_n_s_catch_warnings __pyx_mstate_global->__pyx_n_s_catch_warnings
+#define __pyx_n_s_cb __pyx_mstate_global->__pyx_n_s_cb
+#define __pyx_n_s_cb_func __pyx_mstate_global->__pyx_n_s_cb_func
+#define __pyx_n_s_census_ctx __pyx_mstate_global->__pyx_n_s_census_ctx
+#define __pyx_n_s_cert_config __pyx_mstate_global->__pyx_n_s_cert_config
+#define __pyx_n_s_cert_config_fetcher __pyx_mstate_global->__pyx_n_s_cert_config_fetcher
+#define __pyx_kp_s_cert_config_fetcher_must_be_call __pyx_mstate_global->__pyx_kp_s_cert_config_fetcher_must_be_call
+#define __pyx_n_s_certificate_chain __pyx_mstate_global->__pyx_n_s_certificate_chain
+#define __pyx_n_s_certificate_configuration __pyx_mstate_global->__pyx_n_s_certificate_configuration
+#define __pyx_n_s_cfunc_to_py __pyx_mstate_global->__pyx_n_s_cfunc_to_py
+#define __pyx_n_s_channel __pyx_mstate_global->__pyx_n_s_channel
+#define __pyx_n_s_channel_credentials __pyx_mstate_global->__pyx_n_s_channel_credentials
+#define __pyx_n_s_channel_credentials_alts __pyx_mstate_global->__pyx_n_s_channel_credentials_alts
+#define __pyx_n_s_channel_credentials_compute_engi __pyx_mstate_global->__pyx_n_s_channel_credentials_compute_engi
+#define __pyx_n_s_channel_credentials_insecure __pyx_mstate_global->__pyx_n_s_channel_credentials_insecure
+#define __pyx_n_s_channel_credentials_local __pyx_mstate_global->__pyx_n_s_channel_credentials_local
+#define __pyx_n_s_channel_id __pyx_mstate_global->__pyx_n_s_channel_id
+#define __pyx_n_s_channel_state __pyx_mstate_global->__pyx_n_s_channel_state
+#define __pyx_n_s_channels __pyx_mstate_global->__pyx_n_s_channels
+#define __pyx_n_s_channelz_get_channel __pyx_mstate_global->__pyx_n_s_channelz_get_channel
+#define __pyx_n_s_channelz_get_server __pyx_mstate_global->__pyx_n_s_channelz_get_server
+#define __pyx_n_s_channelz_get_server_sockets __pyx_mstate_global->__pyx_n_s_channelz_get_server_sockets
+#define __pyx_n_s_channelz_get_servers __pyx_mstate_global->__pyx_n_s_channelz_get_servers
+#define __pyx_n_s_channelz_get_socket __pyx_mstate_global->__pyx_n_s_channelz_get_socket
+#define __pyx_n_s_channelz_get_subchannel __pyx_mstate_global->__pyx_n_s_channelz_get_subchannel
+#define __pyx_n_s_channelz_get_top_channels __pyx_mstate_global->__pyx_n_s_channelz_get_top_channels
+#define __pyx_n_s_check_before_request_call __pyx_mstate_global->__pyx_n_s_check_before_request_call
+#define __pyx_n_s_check_connectivity_state __pyx_mstate_global->__pyx_n_s_check_connectivity_state
+#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_s_clear __pyx_mstate_global->__pyx_n_s_clear
+#define __pyx_n_s_clear_server_call_tracer_factory __pyx_mstate_global->__pyx_n_s_clear_server_call_tracer_factory
+#define __pyx_n_s_client_config_in_slice __pyx_mstate_global->__pyx_n_s_client_config_in_slice
+#define __pyx_n_s_cline_in_traceback __pyx_mstate_global->__pyx_n_s_cline_in_traceback
+#define __pyx_n_s_close __pyx_mstate_global->__pyx_n_s_close
+#define __pyx_n_s_close_on_fork __pyx_mstate_global->__pyx_n_s_close_on_fork
+#define __pyx_n_s_close_on_fork_2 __pyx_mstate_global->__pyx_n_s_close_on_fork_2
+#define __pyx_n_s_closed __pyx_mstate_global->__pyx_n_s_closed
+#define __pyx_n_s_closing __pyx_mstate_global->__pyx_n_s_closing
+#define __pyx_n_s_code __pyx_mstate_global->__pyx_n_s_code
+#define __pyx_n_s_codecs __pyx_mstate_global->__pyx_n_s_codecs
+#define __pyx_n_s_collections __pyx_mstate_global->__pyx_n_s_collections
+#define __pyx_n_s_common __pyx_mstate_global->__pyx_n_s_common
+#define __pyx_n_s_completion_type __pyx_mstate_global->__pyx_n_s_completion_type
+#define __pyx_n_s_compression __pyx_mstate_global->__pyx_n_s_compression
+#define __pyx_n_s_compression_algorithm_name __pyx_mstate_global->__pyx_n_s_compression_algorithm_name
+#define __pyx_n_s_concurrency_exceeded __pyx_mstate_global->__pyx_n_s_concurrency_exceeded
+#define __pyx_n_s_condition __pyx_mstate_global->__pyx_n_s_condition
+#define __pyx_n_s_connecting __pyx_mstate_global->__pyx_n_s_connecting
+#define __pyx_n_s_context __pyx_mstate_global->__pyx_n_s_context
+#define __pyx_n_s_context_loop __pyx_mstate_global->__pyx_n_s_context_loop
+#define __pyx_n_s_contextvars __pyx_mstate_global->__pyx_n_s_contextvars
+#define __pyx_n_s_contextvars_supported __pyx_mstate_global->__pyx_n_s_contextvars_supported
+#define __pyx_n_s_continuation __pyx_mstate_global->__pyx_n_s_continuation
+#define __pyx_n_s_copy __pyx_mstate_global->__pyx_n_s_copy
+#define __pyx_n_s_copy_context __pyx_mstate_global->__pyx_n_s_copy_context
+#define __pyx_n_s_core_function_name __pyx_mstate_global->__pyx_n_s_core_function_name
+#define __pyx_n_s_coro __pyx_mstate_global->__pyx_n_s_coro
+#define __pyx_n_s_create_client_call_tracer __pyx_mstate_global->__pyx_n_s_create_client_call_tracer
+#define __pyx_n_s_create_future __pyx_mstate_global->__pyx_n_s_create_future
+#define __pyx_n_s_create_server_call_tracer_factor __pyx_mstate_global->__pyx_n_s_create_server_call_tracer_factor
+#define __pyx_n_s_create_task __pyx_mstate_global->__pyx_n_s_create_task
+#define __pyx_n_s_credentials __pyx_mstate_global->__pyx_n_s_credentials
+#define __pyx_n_s_credentials_2 __pyx_mstate_global->__pyx_n_s_credentials_2
+#define __pyx_kp_s_credentials_roots_pem __pyx_mstate_global->__pyx_kp_s_credentials_roots_pem
+#define __pyx_n_s_creds __pyx_mstate_global->__pyx_n_s_creds
+#define __pyx_n_s_ctx __pyx_mstate_global->__pyx_n_s_ctx
+#define __pyx_n_s_custom_io_manager __pyx_mstate_global->__pyx_n_s_custom_io_manager
+#define __pyx_n_s_custom_op_on_c_call __pyx_mstate_global->__pyx_n_s_custom_op_on_c_call
+#define __pyx_kp_s_cygrpc __pyx_mstate_global->__pyx_kp_s_cygrpc
+#define __pyx_n_s_cython_call_credentials __pyx_mstate_global->__pyx_n_s_cython_call_credentials
+#define __pyx_n_s_cython_cygrpc __pyx_mstate_global->__pyx_n_s_cython_cygrpc
+#define __pyx_n_s_daemon __pyx_mstate_global->__pyx_n_s_daemon
+#define __pyx_n_s_daemonic __pyx_mstate_global->__pyx_n_s_daemonic
+#define __pyx_n_s_data __pyx_mstate_global->__pyx_n_s_data
+#define __pyx_n_s_data_loss __pyx_mstate_global->__pyx_n_s_data_loss
+#define __pyx_n_s_deadline __pyx_mstate_global->__pyx_n_s_deadline
+#define __pyx_n_s_deadline_exceeded __pyx_mstate_global->__pyx_n_s_deadline_exceeded
+#define __pyx_kp_s_dealloc___called_on_running_se __pyx_mstate_global->__pyx_kp_s_dealloc___called_on_running_se
+#define __pyx_n_s_debug __pyx_mstate_global->__pyx_n_s_debug
+#define __pyx_n_s_debug_error_string __pyx_mstate_global->__pyx_n_s_debug_error_string
+#define __pyx_n_s_decode __pyx_mstate_global->__pyx_n_s_decode
+#define __pyx_n_s_decrease_active_rpcs_count __pyx_mstate_global->__pyx_n_s_decrease_active_rpcs_count
+#define __pyx_n_s_decrease_once_finished __pyx_mstate_global->__pyx_n_s_decrease_once_finished
+#define __pyx_n_s_decrement __pyx_mstate_global->__pyx_n_s_decrement
+#define __pyx_n_s_default_authority __pyx_mstate_global->__pyx_n_s_default_authority
+#define __pyx_n_s_default_vtable __pyx_mstate_global->__pyx_n_s_default_vtable
+#define __pyx_n_s_deflate __pyx_mstate_global->__pyx_n_s_deflate
+#define __pyx_n_s_delete_call_tracer __pyx_mstate_global->__pyx_n_s_delete_call_tracer
+#define __pyx_n_s_destroy __pyx_mstate_global->__pyx_n_s_destroy
+#define __pyx_n_s_details __pyx_mstate_global->__pyx_n_s_details
+#define __pyx_n_s_details_bytes __pyx_mstate_global->__pyx_n_s_details_bytes
+#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_kp_u_disable __pyx_mstate_global->__pyx_kp_u_disable
+#define __pyx_n_s_disable_algorithm __pyx_mstate_global->__pyx_n_s_disable_algorithm
+#define __pyx_n_s_disable_next_message_compression __pyx_mstate_global->__pyx_n_s_disable_next_message_compression
+#define __pyx_n_s_discard __pyx_mstate_global->__pyx_n_s_discard
+#define __pyx_n_s_doc __pyx_mstate_global->__pyx_n_s_doc
+#define __pyx_n_s_done __pyx_mstate_global->__pyx_n_s_done
+#define __pyx_n_s_dump_xds_configs __pyx_mstate_global->__pyx_n_s_dump_xds_configs
+#define __pyx_n_s_e __pyx_mstate_global->__pyx_n_s_e
+#define __pyx_kp_u_enable __pyx_mstate_global->__pyx_kp_u_enable
+#define __pyx_n_s_enable_algorithm __pyx_mstate_global->__pyx_n_s_enable_algorithm
+#define __pyx_n_s_enable_census __pyx_mstate_global->__pyx_n_s_enable_census
+#define __pyx_n_s_encode __pyx_mstate_global->__pyx_n_s_encode
+#define __pyx_n_s_end_time __pyx_mstate_global->__pyx_n_s_end_time
+#define __pyx_n_s_endswith __pyx_mstate_global->__pyx_n_s_endswith
+#define __pyx_n_s_enter __pyx_mstate_global->__pyx_n_s_enter
+#define __pyx_n_s_enter_user_request_generator __pyx_mstate_global->__pyx_n_s_enter_user_request_generator
+#define __pyx_n_s_enum __pyx_mstate_global->__pyx_n_s_enum
+#define __pyx_n_s_enumerate __pyx_mstate_global->__pyx_n_s_enumerate
+#define __pyx_n_s_environ __pyx_mstate_global->__pyx_n_s_environ
+#define __pyx_n_s_errno __pyx_mstate_global->__pyx_n_s_errno
+#define __pyx_n_s_error __pyx_mstate_global->__pyx_n_s_error
+#define __pyx_n_s_error_code __pyx_mstate_global->__pyx_n_s_error_code
+#define __pyx_n_s_error_details __pyx_mstate_global->__pyx_n_s_error_details
+#define __pyx_n_s_error_str __pyx_mstate_global->__pyx_n_s_error_str
+#define __pyx_n_s_error_string __pyx_mstate_global->__pyx_n_s_error_string
+#define __pyx_n_s_event __pyx_mstate_global->__pyx_n_s_event
+#define __pyx_n_s_exc_info __pyx_mstate_global->__pyx_n_s_exc_info
+#define __pyx_n_s_exception __pyx_mstate_global->__pyx_n_s_exception
+#define __pyx_n_s_exception_type __pyx_mstate_global->__pyx_n_s_exception_type
+#define __pyx_n_s_execute_batch __pyx_mstate_global->__pyx_n_s_execute_batch
+#define __pyx_n_s_exit __pyx_mstate_global->__pyx_n_s_exit
+#define __pyx_n_s_exit_2 __pyx_mstate_global->__pyx_n_s_exit_2
+#define __pyx_kp_s_expected_certificate_to_be_bytes __pyx_mstate_global->__pyx_kp_s_expected_certificate_to_be_bytes
+#define __pyx_kp_s_expected_pem_key_cert_pairs_to_b __pyx_mstate_global->__pyx_kp_s_expected_pem_key_cert_pairs_to_b
+#define __pyx_kp_s_expected_registered_completion_q __pyx_mstate_global->__pyx_kp_s_expected_registered_completion_q
+#define __pyx_n_s_failed_precondition __pyx_mstate_global->__pyx_n_s_failed_precondition
+#define __pyx_n_s_failure_handler __pyx_mstate_global->__pyx_n_s_failure_handler
+#define __pyx_n_s_fallback_credentials __pyx_mstate_global->__pyx_n_s_fallback_credentials
+#define __pyx_n_s_fileno __pyx_mstate_global->__pyx_n_s_fileno
+#define __pyx_n_s_find_method_handler __pyx_mstate_global->__pyx_n_s_find_method_handler
+#define __pyx_n_s_find_method_handler_locals_quer __pyx_mstate_global->__pyx_n_s_find_method_handler_locals_quer
+#define __pyx_n_s_finish_handler_with_stream_resp __pyx_mstate_global->__pyx_n_s_finish_handler_with_stream_resp
+#define __pyx_n_s_finish_handler_with_unary_respo __pyx_mstate_global->__pyx_n_s_finish_handler_with_unary_respo
+#define __pyx_n_s_finish_ops __pyx_mstate_global->__pyx_n_s_finish_ops
+#define __pyx_n_s_flags __pyx_mstate_global->__pyx_n_s_flags
+#define __pyx_n_s_fn __pyx_mstate_global->__pyx_n_s_fn
+#define __pyx_n_s_force_client_auth __pyx_mstate_global->__pyx_n_s_force_client_auth
+#define __pyx_n_s_fork_epoch __pyx_mstate_global->__pyx_n_s_fork_epoch
+#define __pyx_n_s_fork_handler_failed __pyx_mstate_global->__pyx_n_s_fork_handler_failed
+#define __pyx_n_s_fork_handler_registered __pyx_mstate_global->__pyx_n_s_fork_handler_registered
+#define __pyx_n_s_fork_handler_registered_lock __pyx_mstate_global->__pyx_n_s_fork_handler_registered_lock
+#define __pyx_n_s_fork_handlers_and_grpc_init __pyx_mstate_global->__pyx_n_s_fork_handlers_and_grpc_init
+#define __pyx_n_s_fork_in_progress __pyx_mstate_global->__pyx_n_s_fork_in_progress
+#define __pyx_n_s_fork_in_progress_condition __pyx_mstate_global->__pyx_n_s_fork_in_progress_condition
+#define __pyx_n_s_fork_register_channel __pyx_mstate_global->__pyx_n_s_fork_register_channel
+#define __pyx_n_s_fork_state __pyx_mstate_global->__pyx_n_s_fork_state
+#define __pyx_n_s_fork_unregister_channel __pyx_mstate_global->__pyx_n_s_fork_unregister_channel
+#define __pyx_n_s_format __pyx_mstate_global->__pyx_n_s_format
+#define __pyx_n_s_format_exception __pyx_mstate_global->__pyx_n_s_format_exception
+#define __pyx_n_s_functools __pyx_mstate_global->__pyx_n_s_functools
+#define __pyx_n_s_future __pyx_mstate_global->__pyx_n_s_future
+#define __pyx_n_s_g_gevent_activated __pyx_mstate_global->__pyx_n_s_g_gevent_activated
+#define __pyx_n_s_g_gevent_pool __pyx_mstate_global->__pyx_n_s_g_gevent_pool
+#define __pyx_n_s_g_gevent_threadpool __pyx_mstate_global->__pyx_n_s_g_gevent_threadpool
+#define __pyx_n_s_g_interrupt_check_period_ms __pyx_mstate_global->__pyx_n_s_g_interrupt_check_period_ms
+#define __pyx_kp_u_gc __pyx_mstate_global->__pyx_kp_u_gc
+#define __pyx_n_s_gen __pyx_mstate_global->__pyx_n_s_gen
+#define __pyx_n_s_generator_to_async_generator __pyx_mstate_global->__pyx_n_s_generator_to_async_generator
+#define __pyx_n_s_generator_to_async_generator_loc __pyx_mstate_global->__pyx_n_s_generator_to_async_generator_loc
+#define __pyx_n_s_generic_handler __pyx_mstate_global->__pyx_n_s_generic_handler
+#define __pyx_n_s_generic_handlers __pyx_mstate_global->__pyx_n_s_generic_handlers
+#define __pyx_n_s_generic_rpc_handlers __pyx_mstate_global->__pyx_n_s_generic_rpc_handlers
+#define __pyx_n_s_genexpr __pyx_mstate_global->__pyx_n_s_genexpr
+#define __pyx_n_s_get __pyx_mstate_global->__pyx_n_s_get
+#define __pyx_n_s_getLogger __pyx_mstate_global->__pyx_n_s_getLogger
+#define __pyx_n_s_get_data __pyx_mstate_global->__pyx_n_s_get_data
+#define __pyx_n_s_get_deadline_from_context __pyx_mstate_global->__pyx_n_s_get_deadline_from_context
+#define __pyx_n_s_get_event_loop __pyx_mstate_global->__pyx_n_s_get_event_loop
+#define __pyx_n_s_get_event_loop_policy __pyx_mstate_global->__pyx_n_s_get_event_loop_policy
+#define __pyx_n_s_get_fork_epoch __pyx_mstate_global->__pyx_n_s_get_fork_epoch
+#define __pyx_n_s_get_hub __pyx_mstate_global->__pyx_n_s_get_hub
+#define __pyx_n_s_get_metadata_locals_callback __pyx_mstate_global->__pyx_n_s_get_metadata_locals_callback
+#define __pyx_n_s_get_plugin __pyx_mstate_global->__pyx_n_s_get_plugin
+#define __pyx_n_s_get_registered_call_handle __pyx_mstate_global->__pyx_n_s_get_registered_call_handle
+#define __pyx_n_s_get_running_loop __pyx_mstate_global->__pyx_n_s_get_running_loop
+#define __pyx_n_s_get_working_loop __pyx_mstate_global->__pyx_n_s_get_working_loop
+#define __pyx_n_s_getstate __pyx_mstate_global->__pyx_n_s_getstate
+#define __pyx_n_s_gevent __pyx_mstate_global->__pyx_n_s_gevent
+#define __pyx_n_s_gevent_decrement_channel_count __pyx_mstate_global->__pyx_n_s_gevent_decrement_channel_count
+#define __pyx_n_s_gevent_hub __pyx_mstate_global->__pyx_n_s_gevent_hub
+#define __pyx_n_s_gevent_increment_channel_count __pyx_mstate_global->__pyx_n_s_gevent_increment_channel_count
+#define __pyx_n_s_gevent_pool __pyx_mstate_global->__pyx_n_s_gevent_pool
+#define __pyx_n_s_grace __pyx_mstate_global->__pyx_n_s_grace
+#define __pyx_n_s_grpc __pyx_mstate_global->__pyx_n_s_grpc
+#define __pyx_kp_s_grpc_aio_EOF __pyx_mstate_global->__pyx_kp_s_grpc_aio_EOF
+#define __pyx_n_s_grpc_call_error_string __pyx_mstate_global->__pyx_n_s_grpc_call_error_string
+#define __pyx_n_s_grpc_call_wrapper __pyx_mstate_global->__pyx_n_s_grpc_call_wrapper
+#define __pyx_n_s_grpc_completion_queue_shutdown __pyx_mstate_global->__pyx_n_s_grpc_completion_queue_shutdown
+#define __pyx_kp_s_grpc_python__cygrpc__GrpcArgWrap __pyx_mstate_global->__pyx_kp_s_grpc_python__cygrpc__GrpcArgWrap
+#define __pyx_n_s_grpc_server_request_call __pyx_mstate_global->__pyx_n_s_grpc_server_request_call
+#define __pyx_n_s_grpc_server_shutdown_and_notify __pyx_mstate_global->__pyx_n_s_grpc_server_shutdown_and_notify
+#define __pyx_n_s_grpc_shutdown_wrapper __pyx_mstate_global->__pyx_n_s_grpc_shutdown_wrapper
+#define __pyx_n_s_gzip __pyx_mstate_global->__pyx_n_s_gzip
+#define __pyx_n_s_handle_callback_wrapper __pyx_mstate_global->__pyx_n_s_handle_callback_wrapper
+#define __pyx_n_s_handle_callbacks __pyx_mstate_global->__pyx_n_s_handle_callbacks
+#define __pyx_n_s_handle_cancellation_from_core __pyx_mstate_global->__pyx_n_s_handle_cancellation_from_core
+#define __pyx_n_s_handle_events __pyx_mstate_global->__pyx_n_s_handle_events
+#define __pyx_n_s_handle_exceptions __pyx_mstate_global->__pyx_n_s_handle_exceptions
+#define __pyx_n_s_handle_rpc __pyx_mstate_global->__pyx_n_s_handle_rpc
+#define __pyx_n_s_handle_status_once_received __pyx_mstate_global->__pyx_n_s_handle_status_once_received
+#define __pyx_n_s_handle_stream_stream_rpc __pyx_mstate_global->__pyx_n_s_handle_stream_stream_rpc
+#define __pyx_n_s_handle_stream_unary_rpc __pyx_mstate_global->__pyx_n_s_handle_stream_unary_rpc
+#define __pyx_n_s_handle_unary_stream_rpc __pyx_mstate_global->__pyx_n_s_handle_unary_stream_rpc
+#define __pyx_n_s_handle_unary_unary_rpc __pyx_mstate_global->__pyx_n_s_handle_unary_unary_rpc
+#define __pyx_n_s_handler __pyx_mstate_global->__pyx_n_s_handler
+#define __pyx_n_s_handler_call_details __pyx_mstate_global->__pyx_n_s_handler_call_details
+#define __pyx_n_s_hex_codec __pyx_mstate_global->__pyx_n_s_hex_codec
+#define __pyx_n_s_high __pyx_mstate_global->__pyx_n_s_high
+#define __pyx_n_s_host __pyx_mstate_global->__pyx_n_s_host
+#define __pyx_n_s_http2_initial_sequence_number __pyx_mstate_global->__pyx_n_s_http2_initial_sequence_number
+#define __pyx_n_s_hub __pyx_mstate_global->__pyx_n_s_hub
+#define __pyx_n_s_id __pyx_mstate_global->__pyx_n_s_id
+#define __pyx_n_s_identities __pyx_mstate_global->__pyx_n_s_identities
+#define __pyx_n_s_identity __pyx_mstate_global->__pyx_n_s_identity
+#define __pyx_n_s_identity_key __pyx_mstate_global->__pyx_n_s_identity_key
+#define __pyx_n_s_idle __pyx_mstate_global->__pyx_n_s_idle
+#define __pyx_kp_s_if_error_code_is_specified_so_mu __pyx_mstate_global->__pyx_kp_s_if_error_code_is_specified_so_mu
+#define __pyx_n_s_import __pyx_mstate_global->__pyx_n_s_import
+#define __pyx_n_s_inbound_ops __pyx_mstate_global->__pyx_n_s_inbound_ops
+#define __pyx_n_s_increment __pyx_mstate_global->__pyx_n_s_increment
+#define __pyx_n_s_init __pyx_mstate_global->__pyx_n_s_init
+#define __pyx_n_s_init_grpc_aio __pyx_mstate_global->__pyx_n_s_init_grpc_aio
+#define __pyx_n_s_init_grpc_gevent __pyx_mstate_global->__pyx_n_s_init_grpc_gevent
+#define __pyx_n_s_init_subclass __pyx_mstate_global->__pyx_n_s_init_subclass
+#define __pyx_n_s_initial_cert_config __pyx_mstate_global->__pyx_n_s_initial_cert_config
+#define __pyx_kp_s_initial_cert_config_must_be_a_gr __pyx_mstate_global->__pyx_kp_s_initial_cert_config_must_be_a_gr
+#define __pyx_n_s_initial_metadata __pyx_mstate_global->__pyx_n_s_initial_metadata
+#define __pyx_n_s_initial_metadata_op __pyx_mstate_global->__pyx_n_s_initial_metadata_op
+#define __pyx_n_s_initializing __pyx_mstate_global->__pyx_n_s_initializing
+#define __pyx_n_s_initiate_stream_stream __pyx_mstate_global->__pyx_n_s_initiate_stream_stream
+#define __pyx_n_s_initiate_unary_stream __pyx_mstate_global->__pyx_n_s_initiate_unary_stream
+#define __pyx_n_s_insecure_server_credentials __pyx_mstate_global->__pyx_n_s_insecure_server_credentials
+#define __pyx_n_s_inspect __pyx_mstate_global->__pyx_n_s_inspect
+#define __pyx_n_s_install_context_from_request_cal __pyx_mstate_global->__pyx_n_s_install_context_from_request_cal
+#define __pyx_n_s_install_context_from_request_cal_2 __pyx_mstate_global->__pyx_n_s_install_context_from_request_cal_2
+#define __pyx_n_s_int __pyx_mstate_global->__pyx_n_s_int
+#define __pyx_n_s_integrated_call __pyx_mstate_global->__pyx_n_s_integrated_call
+#define __pyx_n_s_integrated_call_locals_on_succe __pyx_mstate_global->__pyx_n_s_integrated_call_locals_on_succe
+#define __pyx_n_s_intercept_service __pyx_mstate_global->__pyx_n_s_intercept_service
+#define __pyx_n_s_interceptor __pyx_mstate_global->__pyx_n_s_interceptor
+#define __pyx_n_s_interceptors __pyx_mstate_global->__pyx_n_s_interceptors
+#define __pyx_n_s_internal __pyx_mstate_global->__pyx_n_s_internal
+#define __pyx_kp_s_internal_error_user_data_must_be __pyx_mstate_global->__pyx_kp_s_internal_error_user_data_must_be
+#define __pyx_n_s_internal_poll __pyx_mstate_global->__pyx_n_s_internal_poll
+#define __pyx_n_s_invalid_argument __pyx_mstate_global->__pyx_n_s_invalid_argument
+#define __pyx_kp_s_invalid_call_object_cannot_be_us __pyx_mstate_global->__pyx_kp_s_invalid_call_object_cannot_be_us
+#define __pyx_n_s_invalid_flags __pyx_mstate_global->__pyx_n_s_invalid_flags
+#define __pyx_n_s_invalid_metadata __pyx_mstate_global->__pyx_n_s_invalid_metadata
+#define __pyx_n_s_invocation_metadata __pyx_mstate_global->__pyx_n_s_invocation_metadata
+#define __pyx_n_s_is_algorithm_enabled __pyx_mstate_global->__pyx_n_s_is_algorithm_enabled
+#define __pyx_n_s_is_async_handler __pyx_mstate_global->__pyx_n_s_is_async_handler
+#define __pyx_n_s_is_coroutine __pyx_mstate_global->__pyx_n_s_is_coroutine
+#define __pyx_n_s_is_fork_support_enabled __pyx_mstate_global->__pyx_n_s_is_fork_support_enabled
+#define __pyx_n_s_is_locally_cancelled __pyx_mstate_global->__pyx_n_s_is_locally_cancelled
+#define __pyx_n_s_is_ok __pyx_mstate_global->__pyx_n_s_is_ok
+#define __pyx_n_s_is_running __pyx_mstate_global->__pyx_n_s_is_running
+#define __pyx_n_s_is_sampled __pyx_mstate_global->__pyx_n_s_is_sampled
+#define __pyx_n_s_is_valid __pyx_mstate_global->__pyx_n_s_is_valid
+#define __pyx_n_s_isasyncgenfunction __pyx_mstate_global->__pyx_n_s_isasyncgenfunction
+#define __pyx_n_s_isawaitable __pyx_mstate_global->__pyx_n_s_isawaitable
+#define __pyx_n_s_iscoroutinefunction __pyx_mstate_global->__pyx_n_s_iscoroutinefunction
+#define __pyx_kp_u_isenabled __pyx_mstate_global->__pyx_kp_u_isenabled
+#define __pyx_n_s_item __pyx_mstate_global->__pyx_n_s_item
+#define __pyx_n_s_iter __pyx_mstate_global->__pyx_n_s_iter
+#define __pyx_n_s_join __pyx_mstate_global->__pyx_n_s_join
+#define __pyx_n_s_key __pyx_mstate_global->__pyx_n_s_key
+#define __pyx_n_s_keys __pyx_mstate_global->__pyx_n_s_keys
+#define __pyx_n_s_last_observed_state __pyx_mstate_global->__pyx_n_s_last_observed_state
+#define __pyx_n_s_latent_event_arg __pyx_mstate_global->__pyx_n_s_latent_event_arg
+#define __pyx_n_s_len __pyx_mstate_global->__pyx_n_s_len
+#define __pyx_n_s_lk __pyx_mstate_global->__pyx_n_s_lk
+#define __pyx_n_s_local_connect_type __pyx_mstate_global->__pyx_n_s_local_connect_type
+#define __pyx_n_s_local_tcp __pyx_mstate_global->__pyx_n_s_local_tcp
+#define __pyx_n_s_logging __pyx_mstate_global->__pyx_n_s_logging
+#define __pyx_n_s_loop __pyx_mstate_global->__pyx_n_s_loop
+#define __pyx_n_s_low __pyx_mstate_global->__pyx_n_s_low
+#define __pyx_n_s_lower __pyx_mstate_global->__pyx_n_s_lower
+#define __pyx_n_s_main __pyx_mstate_global->__pyx_n_s_main
+#define __pyx_n_s_managed_target __pyx_mstate_global->__pyx_n_s_managed_target
+#define __pyx_n_s_max_concurrent_streams __pyx_mstate_global->__pyx_n_s_max_concurrent_streams
+#define __pyx_n_s_max_receive_message_length __pyx_mstate_global->__pyx_n_s_max_receive_message_length
+#define __pyx_n_s_max_results __pyx_mstate_global->__pyx_n_s_max_results
+#define __pyx_n_s_max_send_message_length __pyx_mstate_global->__pyx_n_s_max_send_message_length
+#define __pyx_n_s_maximum_concurrent_rpcs __pyx_mstate_global->__pyx_n_s_maximum_concurrent_rpcs
+#define __pyx_kp_s_maximum_concurrent_rpcs_should_b __pyx_mstate_global->__pyx_kp_s_maximum_concurrent_rpcs_should_b
+#define __pyx_n_s_maxsize __pyx_mstate_global->__pyx_n_s_maxsize
+#define __pyx_n_s_maybe_save_server_trace_context __pyx_mstate_global->__pyx_n_s_maybe_save_server_trace_context
+#define __pyx_n_s_medium __pyx_mstate_global->__pyx_n_s_medium
+#define __pyx_n_s_members __pyx_mstate_global->__pyx_n_s_members
+#define __pyx_n_s_message __pyx_mstate_global->__pyx_n_s_message
+#define __pyx_n_s_metaclass __pyx_mstate_global->__pyx_n_s_metaclass
+#define __pyx_n_s_metadata __pyx_mstate_global->__pyx_n_s_metadata
+#define __pyx_n_s_metadata_locals_genexpr __pyx_mstate_global->__pyx_n_s_metadata_locals_genexpr
+#define __pyx_n_s_metadata_plugin __pyx_mstate_global->__pyx_n_s_metadata_plugin
+#define __pyx_n_s_metadata_sent_observer __pyx_mstate_global->__pyx_n_s_metadata_sent_observer
+#define __pyx_kp_s_metadata_was_invalid_s __pyx_mstate_global->__pyx_kp_s_metadata_was_invalid_s
+#define __pyx_n_s_method __pyx_mstate_global->__pyx_n_s_method
+#define __pyx_n_s_method_handler __pyx_mstate_global->__pyx_n_s_method_handler
+#define __pyx_n_s_module __pyx_mstate_global->__pyx_n_s_module
+#define __pyx_n_s_mro_entries __pyx_mstate_global->__pyx_n_s_mro_entries
+#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_namedtuple __pyx_mstate_global->__pyx_n_s_namedtuple
+#define __pyx_n_s_new __pyx_mstate_global->__pyx_n_s_new
+#define __pyx_n_s_new_event_loop __pyx_mstate_global->__pyx_n_s_new_event_loop
+#define __pyx_n_s_next_call_event __pyx_mstate_global->__pyx_n_s_next_call_event
+#define __pyx_n_s_next_call_event_locals_on_succes __pyx_mstate_global->__pyx_n_s_next_call_event_locals_on_succes
+#define __pyx_n_s_next_event __pyx_mstate_global->__pyx_n_s_next_event
+#define __pyx_n_s_next_event_locals_on_failure __pyx_mstate_global->__pyx_n_s_next_event_locals_on_failure
+#define __pyx_n_s_next_event_locals_on_success __pyx_mstate_global->__pyx_n_s_next_event_locals_on_success
+#define __pyx_n_s_no_compress __pyx_mstate_global->__pyx_n_s_no_compress
+#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_none __pyx_mstate_global->__pyx_n_s_none
+#define __pyx_n_s_not_found __pyx_mstate_global->__pyx_n_s_not_found
+#define __pyx_n_s_not_invoked __pyx_mstate_global->__pyx_n_s_not_invoked
+#define __pyx_n_s_not_on_client __pyx_mstate_global->__pyx_n_s_not_on_client
+#define __pyx_n_s_not_on_server __pyx_mstate_global->__pyx_n_s_not_on_server
+#define __pyx_n_s_notify_all __pyx_mstate_global->__pyx_n_s_notify_all
+#define __pyx_n_s_num_active_threads __pyx_mstate_global->__pyx_n_s_num_active_threads
+#define __pyx_n_s_object __pyx_mstate_global->__pyx_n_s_object
+#define __pyx_kp_s_object_2 __pyx_mstate_global->__pyx_kp_s_object_2
+#define __pyx_n_s_observability __pyx_mstate_global->__pyx_n_s_observability
+#define __pyx_n_s_observability_enabled __pyx_mstate_global->__pyx_n_s_observability_enabled
+#define __pyx_n_s_observability_plugin __pyx_mstate_global->__pyx_n_s_observability_plugin
+#define __pyx_kp_s_of_RPC_that_terminated_with_sta __pyx_mstate_global->__pyx_kp_s_of_RPC_that_terminated_with_sta
+#define __pyx_kp_s_of_RPC_that_terminated_with_sta_2 __pyx_mstate_global->__pyx_kp_s_of_RPC_that_terminated_with_sta_2
+#define __pyx_n_s_ok __pyx_mstate_global->__pyx_n_s_ok
+#define __pyx_n_s_on_failure __pyx_mstate_global->__pyx_n_s_on_failure
+#define __pyx_n_s_on_success __pyx_mstate_global->__pyx_n_s_on_success
+#define __pyx_n_s_op __pyx_mstate_global->__pyx_n_s_op
+#define __pyx_n_s_operate __pyx_mstate_global->__pyx_n_s_operate
+#define __pyx_n_s_operation_complete __pyx_mstate_global->__pyx_n_s_operation_complete
+#define __pyx_n_s_operations __pyx_mstate_global->__pyx_n_s_operations
+#define __pyx_n_s_operationses_and_tags __pyx_mstate_global->__pyx_n_s_operationses_and_tags
+#define __pyx_n_s_ops __pyx_mstate_global->__pyx_n_s_ops
+#define __pyx_n_s_options __pyx_mstate_global->__pyx_n_s_options
+#define __pyx_n_s_os __pyx_mstate_global->__pyx_n_s_os
+#define __pyx_n_s_out_of_range __pyx_mstate_global->__pyx_n_s_out_of_range
+#define __pyx_n_s_outbound_initial_metadata __pyx_mstate_global->__pyx_n_s_outbound_initial_metadata
+#define __pyx_n_s_outbound_ops __pyx_mstate_global->__pyx_n_s_outbound_ops
+#define __pyx_n_s_partial __pyx_mstate_global->__pyx_n_s_partial
+#define __pyx_n_s_peer __pyx_mstate_global->__pyx_n_s_peer
+#define __pyx_n_s_peer_identities __pyx_mstate_global->__pyx_n_s_peer_identities
+#define __pyx_n_s_peer_identity_key __pyx_mstate_global->__pyx_n_s_peer_identity_key
+#define __pyx_n_s_pem_key_cert_pairs __pyx_mstate_global->__pyx_n_s_pem_key_cert_pairs
+#define __pyx_n_s_pem_root_certificates __pyx_mstate_global->__pyx_n_s_pem_root_certificates
+#define __pyx_n_s_pem_root_certs __pyx_mstate_global->__pyx_n_s_pem_root_certs
+#define __pyx_n_s_permission_denied __pyx_mstate_global->__pyx_n_s_permission_denied
+#define __pyx_n_s_pickle __pyx_mstate_global->__pyx_n_s_pickle
+#define __pyx_n_s_pkgutil __pyx_mstate_global->__pyx_n_s_pkgutil
+#define __pyx_n_s_plugin __pyx_mstate_global->__pyx_n_s_plugin
+#define __pyx_n_s_poll __pyx_mstate_global->__pyx_n_s_poll
+#define __pyx_n_s_poll_wrapper __pyx_mstate_global->__pyx_n_s_poll_wrapper
+#define __pyx_n_s_poller __pyx_mstate_global->__pyx_n_s_poller
+#define __pyx_n_s_pool __pyx_mstate_global->__pyx_n_s_pool
+#define __pyx_n_s_pop __pyx_mstate_global->__pyx_n_s_pop
+#define __pyx_n_s_postfork_state_to_reset __pyx_mstate_global->__pyx_n_s_postfork_state_to_reset
+#define __pyx_n_s_postfork_states_to_reset __pyx_mstate_global->__pyx_n_s_postfork_states_to_reset
+#define __pyx_n_s_prepare __pyx_mstate_global->__pyx_n_s_prepare
+#define __pyx_n_s_primary_user_agent_string __pyx_mstate_global->__pyx_n_s_primary_user_agent_string
+#define __pyx_n_s_print_exc __pyx_mstate_global->__pyx_n_s_print_exc
+#define __pyx_n_s_private_key __pyx_mstate_global->__pyx_n_s_private_key
+#define __pyx_n_s_properties __pyx_mstate_global->__pyx_n_s_properties
+#define __pyx_n_s_property __pyx_mstate_global->__pyx_n_s_property
+#define __pyx_n_s_put __pyx_mstate_global->__pyx_n_s_put
+#define __pyx_n_s_py_auth_context __pyx_mstate_global->__pyx_n_s_py_auth_context
+#define __pyx_n_s_python_call_credentials __pyx_mstate_global->__pyx_n_s_python_call_credentials
+#define __pyx_n_s_pyx_PickleError __pyx_mstate_global->__pyx_n_s_pyx_PickleError
+#define __pyx_n_s_pyx_capi __pyx_mstate_global->__pyx_n_s_pyx_capi
+#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_AioServer __pyx_mstate_global->__pyx_n_s_pyx_unpickle_AioServer
+#define __pyx_n_s_pyx_unpickle_CensusContext __pyx_mstate_global->__pyx_n_s_pyx_unpickle_CensusContext
+#define __pyx_n_s_pyx_unpickle_ChannelCredential __pyx_mstate_global->__pyx_n_s_pyx_unpickle_ChannelCredential
+#define __pyx_n_s_pyx_unpickle_InsecureChannelCr __pyx_mstate_global->__pyx_n_s_pyx_unpickle_InsecureChannelCr
+#define __pyx_n_s_pyx_unpickle__Tag __pyx_mstate_global->__pyx_n_s_pyx_unpickle__Tag
+#define __pyx_n_s_pyx_vtable __pyx_mstate_global->__pyx_n_s_pyx_vtable
+#define __pyx_n_s_qualname __pyx_mstate_global->__pyx_n_s_qualname
+#define __pyx_n_s_query_call __pyx_mstate_global->__pyx_n_s_query_call
+#define __pyx_n_s_query_handler __pyx_mstate_global->__pyx_n_s_query_handler
+#define __pyx_n_s_query_handlers __pyx_mstate_global->__pyx_n_s_query_handlers
+#define __pyx_n_s_queue __pyx_mstate_global->__pyx_n_s_queue
+#define __pyx_n_s_queue_deadline __pyx_mstate_global->__pyx_n_s_queue_deadline
+#define __pyx_kp_s_queue_must_be_live __pyx_mstate_global->__pyx_kp_s_queue_must_be_live
+#define __pyx_kp_s_queue_must_be_shutting_down_to_b __pyx_mstate_global->__pyx_kp_s_queue_must_be_shutting_down_to_b
+#define __pyx_n_s_queue_shutdown __pyx_mstate_global->__pyx_n_s_queue_shutdown
+#define __pyx_n_s_queue_timeout __pyx_mstate_global->__pyx_n_s_queue_timeout
+#define __pyx_n_s_raise_if_not_valid_trailing_meta __pyx_mstate_global->__pyx_n_s_raise_if_not_valid_trailing_meta
+#define __pyx_n_s_range __pyx_mstate_global->__pyx_n_s_range
+#define __pyx_n_s_raw_message __pyx_mstate_global->__pyx_n_s_raw_message
+#define __pyx_n_s_read __pyx_mstate_global->__pyx_n_s_read
+#define __pyx_n_s_read_socket __pyx_mstate_global->__pyx_n_s_read_socket
+#define __pyx_n_s_ready __pyx_mstate_global->__pyx_n_s_ready
+#define __pyx_n_s_receive_close_on_server __pyx_mstate_global->__pyx_n_s_receive_close_on_server
+#define __pyx_n_s_receive_initial_metadata __pyx_mstate_global->__pyx_n_s_receive_initial_metadata
+#define __pyx_n_s_receive_initial_metadata_2 __pyx_mstate_global->__pyx_n_s_receive_initial_metadata_2
+#define __pyx_n_s_receive_initial_metadata_op __pyx_mstate_global->__pyx_n_s_receive_initial_metadata_op
+#define __pyx_n_s_receive_message __pyx_mstate_global->__pyx_n_s_receive_message
+#define __pyx_n_s_receive_message_2 __pyx_mstate_global->__pyx_n_s_receive_message_2
+#define __pyx_n_s_receive_message_op __pyx_mstate_global->__pyx_n_s_receive_message_op
+#define __pyx_n_s_receive_op __pyx_mstate_global->__pyx_n_s_receive_op
+#define __pyx_n_s_receive_serialized_message __pyx_mstate_global->__pyx_n_s_receive_serialized_message
+#define __pyx_n_s_receive_status_on_client __pyx_mstate_global->__pyx_n_s_receive_status_on_client
+#define __pyx_n_s_receive_status_on_client_op __pyx_mstate_global->__pyx_n_s_receive_status_on_client_op
+#define __pyx_n_s_received_message __pyx_mstate_global->__pyx_n_s_received_message
+#define __pyx_n_s_recv __pyx_mstate_global->__pyx_n_s_recv
+#define __pyx_n_s_reduce __pyx_mstate_global->__pyx_n_s_reduce
+#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_register __pyx_mstate_global->__pyx_n_s_register
+#define __pyx_n_s_register_at_fork __pyx_mstate_global->__pyx_n_s_register_at_fork
+#define __pyx_n_s_register_completion_queue __pyx_mstate_global->__pyx_n_s_register_completion_queue
+#define __pyx_n_s_registered_call_handle __pyx_mstate_global->__pyx_n_s_registered_call_handle
+#define __pyx_n_s_remove_reader __pyx_mstate_global->__pyx_n_s_remove_reader
+#define __pyx_n_s_repr __pyx_mstate_global->__pyx_n_s_repr
+#define __pyx_n_s_repr_2 __pyx_mstate_global->__pyx_n_s_repr_2
+#define __pyx_n_s_request __pyx_mstate_global->__pyx_n_s_request
+#define __pyx_n_s_request_call __pyx_mstate_global->__pyx_n_s_request_call
+#define __pyx_n_s_request_call_2 __pyx_mstate_global->__pyx_n_s_request_call_2
+#define __pyx_n_s_request_call_tag __pyx_mstate_global->__pyx_n_s_request_call_tag
+#define __pyx_n_s_request_deserializer __pyx_mstate_global->__pyx_n_s_request_deserializer
+#define __pyx_n_s_request_iterator __pyx_mstate_global->__pyx_n_s_request_iterator
+#define __pyx_n_s_request_message __pyx_mstate_global->__pyx_n_s_request_message
+#define __pyx_n_s_request_raw __pyx_mstate_global->__pyx_n_s_request_raw
+#define __pyx_n_s_request_streaming __pyx_mstate_global->__pyx_n_s_request_streaming
+#define __pyx_n_s_reset_grpc_config_vars __pyx_mstate_global->__pyx_n_s_reset_grpc_config_vars
+#define __pyx_n_s_reset_postfork_child __pyx_mstate_global->__pyx_n_s_reset_postfork_child
+#define __pyx_n_s_resource_exhausted __pyx_mstate_global->__pyx_n_s_resource_exhausted
+#define __pyx_n_s_response __pyx_mstate_global->__pyx_n_s_response
+#define __pyx_n_s_response_message __pyx_mstate_global->__pyx_n_s_response_message
+#define __pyx_n_s_response_raw __pyx_mstate_global->__pyx_n_s_response_raw
+#define __pyx_n_s_response_serializer __pyx_mstate_global->__pyx_n_s_response_serializer
+#define __pyx_n_s_response_streaming __pyx_mstate_global->__pyx_n_s_response_streaming
+#define __pyx_n_s_result __pyx_mstate_global->__pyx_n_s_result
+#define __pyx_n_s_retain_self __pyx_mstate_global->__pyx_n_s_retain_self
+#define __pyx_n_s_return __pyx_mstate_global->__pyx_n_s_return
+#define __pyx_n_s_return_from_user_request_generat __pyx_mstate_global->__pyx_n_s_return_from_user_request_generat
+#define __pyx_n_s_rpc_coro __pyx_mstate_global->__pyx_n_s_rpc_coro
+#define __pyx_n_s_rpc_state __pyx_mstate_global->__pyx_n_s_rpc_state
+#define __pyx_n_s_rpc_task __pyx_mstate_global->__pyx_n_s_rpc_task
+#define __pyx_n_s_run __pyx_mstate_global->__pyx_n_s_run
+#define __pyx_n_s_run_2 __pyx_mstate_global->__pyx_n_s_run_2
+#define __pyx_n_s_run_coroutine_threadsafe __pyx_mstate_global->__pyx_n_s_run_coroutine_threadsafe
+#define __pyx_n_s_run_in_executor __pyx_mstate_global->__pyx_n_s_run_in_executor
+#define __pyx_n_s_run_interceptor __pyx_mstate_global->__pyx_n_s_run_interceptor
+#define __pyx_n_s_run_spawn_greenlets __pyx_mstate_global->__pyx_n_s_run_spawn_greenlets
+#define __pyx_n_s_run_with_context __pyx_mstate_global->__pyx_n_s_run_with_context
+#define __pyx_n_s_run_with_context_locals__run __pyx_mstate_global->__pyx_n_s_run_with_context_locals__run
+#define __pyx_n_s_runtime_error __pyx_mstate_global->__pyx_n_s_runtime_error
+#define __pyx_n_s_save_trace_context __pyx_mstate_global->__pyx_n_s_save_trace_context
+#define __pyx_n_s_schedule_coro_threadsafe __pyx_mstate_global->__pyx_n_s_schedule_coro_threadsafe
+#define __pyx_n_s_schedule_rpc_coro __pyx_mstate_global->__pyx_n_s_schedule_rpc_coro
+#define __pyx_n_s_secondary_user_agent_string __pyx_mstate_global->__pyx_n_s_secondary_user_agent_string
+#define __pyx_n_s_segregated_call __pyx_mstate_global->__pyx_n_s_segregated_call
+#define __pyx_n_s_segregated_call_locals_on_succe __pyx_mstate_global->__pyx_n_s_segregated_call_locals_on_succe
+#define __pyx_n_s_self __pyx_mstate_global->__pyx_n_s_self
+#define __pyx_kp_s_self__cq_cannot_be_converted_to __pyx_mstate_global->__pyx_kp_s_self__cq_cannot_be_converted_to
+#define __pyx_kp_s_self_arg_cannot_be_converted_to __pyx_mstate_global->__pyx_kp_s_self_arg_cannot_be_converted_to
+#define __pyx_kp_s_self_c_argument_cannot_be_conver __pyx_mstate_global->__pyx_kp_s_self_c_argument_cannot_be_conver
+#define __pyx_kp_s_self_c_credentials_cannot_be_con __pyx_mstate_global->__pyx_kp_s_self_c_credentials_cannot_be_con
+#define __pyx_kp_s_self_c_op_cannot_be_converted_to __pyx_mstate_global->__pyx_kp_s_self_c_op_cannot_be_converted_to
+#define __pyx_n_s_send __pyx_mstate_global->__pyx_n_s_send
+#define __pyx_n_s_send_close_from_client __pyx_mstate_global->__pyx_n_s_send_close_from_client
+#define __pyx_n_s_send_close_op __pyx_mstate_global->__pyx_n_s_send_close_op
+#define __pyx_n_s_send_error_status_from_server __pyx_mstate_global->__pyx_n_s_send_error_status_from_server
+#define __pyx_n_s_send_initial_metadata __pyx_mstate_global->__pyx_n_s_send_initial_metadata
+#define __pyx_n_s_send_initial_metadata_2 __pyx_mstate_global->__pyx_n_s_send_initial_metadata_2
+#define __pyx_n_s_send_initial_metadata_op __pyx_mstate_global->__pyx_n_s_send_initial_metadata_op
+#define __pyx_n_s_send_message __pyx_mstate_global->__pyx_n_s_send_message
+#define __pyx_n_s_send_message_2 __pyx_mstate_global->__pyx_n_s_send_message_2
+#define __pyx_n_s_send_message_op __pyx_mstate_global->__pyx_n_s_send_message_op
+#define __pyx_n_s_send_receive_close __pyx_mstate_global->__pyx_n_s_send_receive_close
+#define __pyx_n_s_send_serialized_message __pyx_mstate_global->__pyx_n_s_send_serialized_message
+#define __pyx_n_s_send_status_from_server __pyx_mstate_global->__pyx_n_s_send_status_from_server
+#define __pyx_n_s_server __pyx_mstate_global->__pyx_n_s_server
+#define __pyx_n_s_server_call_tracer __pyx_mstate_global->__pyx_n_s_server_call_tracer
+#define __pyx_n_s_server_certificate_config_ssl __pyx_mstate_global->__pyx_n_s_server_certificate_config_ssl
+#define __pyx_n_s_server_credentials __pyx_mstate_global->__pyx_n_s_server_credentials
+#define __pyx_n_s_server_credentials_alts __pyx_mstate_global->__pyx_n_s_server_credentials_alts
+#define __pyx_n_s_server_credentials_local __pyx_mstate_global->__pyx_n_s_server_credentials_local
+#define __pyx_n_s_server_credentials_ssl __pyx_mstate_global->__pyx_n_s_server_credentials_ssl
+#define __pyx_n_s_server_credentials_ssl_dynamic_c __pyx_mstate_global->__pyx_n_s_server_credentials_ssl_dynamic_c
+#define __pyx_n_s_server_id __pyx_mstate_global->__pyx_n_s_server_id
+#define __pyx_n_s_server_main_loop __pyx_mstate_global->__pyx_n_s_server_main_loop
+#define __pyx_kp_s_server_must_be_started_and_not_s __pyx_mstate_global->__pyx_kp_s_server_must_be_started_and_not_s
+#define __pyx_n_s_server_queue __pyx_mstate_global->__pyx_n_s_server_queue
+#define __pyx_kp_s_server_queue_must_be_a_registere __pyx_mstate_global->__pyx_kp_s_server_queue_must_be_a_registere
+#define __pyx_n_s_server_started __pyx_mstate_global->__pyx_n_s_server_started
+#define __pyx_n_s_service __pyx_mstate_global->__pyx_n_s_service
+#define __pyx_n_s_service_accounts __pyx_mstate_global->__pyx_n_s_service_accounts
+#define __pyx_n_s_servicer_context __pyx_mstate_global->__pyx_n_s_servicer_context
+#define __pyx_n_s_serving_task_crash_handler __pyx_mstate_global->__pyx_n_s_serving_task_crash_handler
+#define __pyx_n_s_setDaemon __pyx_mstate_global->__pyx_n_s_setDaemon
+#define __pyx_n_s_set_async_callback_func __pyx_mstate_global->__pyx_n_s_set_async_callback_func
+#define __pyx_n_s_set_census_context_on_call __pyx_mstate_global->__pyx_n_s_set_census_context_on_call
+#define __pyx_n_s_set_code __pyx_mstate_global->__pyx_n_s_set_code
+#define __pyx_n_s_set_compression __pyx_mstate_global->__pyx_n_s_set_compression
+#define __pyx_n_s_set_credentials __pyx_mstate_global->__pyx_n_s_set_credentials
+#define __pyx_n_s_set_details __pyx_mstate_global->__pyx_n_s_set_details
+#define __pyx_n_s_set_exception __pyx_mstate_global->__pyx_n_s_set_exception
+#define __pyx_n_s_set_instrumentation_context_on_c __pyx_mstate_global->__pyx_n_s_set_instrumentation_context_on_c
+#define __pyx_n_s_set_internal_error __pyx_mstate_global->__pyx_n_s_set_internal_error
+#define __pyx_n_s_set_name __pyx_mstate_global->__pyx_n_s_set_name
+#define __pyx_n_s_set_result __pyx_mstate_global->__pyx_n_s_set_result
+#define __pyx_n_s_set_server_call_tracer_factory __pyx_mstate_global->__pyx_n_s_set_server_call_tracer_factory
+#define __pyx_n_s_set_trailing_metadata __pyx_mstate_global->__pyx_n_s_set_trailing_metadata
+#define __pyx_n_s_setblocking __pyx_mstate_global->__pyx_n_s_setblocking
+#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_shield __pyx_mstate_global->__pyx_n_s_shield
+#define __pyx_n_s_shutdown __pyx_mstate_global->__pyx_n_s_shutdown
+#define __pyx_n_s_shutdown_await_next_greenlet __pyx_mstate_global->__pyx_n_s_shutdown_await_next_greenlet
+#define __pyx_n_s_shutdown_cq __pyx_mstate_global->__pyx_n_s_shutdown_cq
+#define __pyx_n_s_shutdown_grpc_aio __pyx_mstate_global->__pyx_n_s_shutdown_grpc_aio
+#define __pyx_n_s_shutting_down_server __pyx_mstate_global->__pyx_n_s_shutting_down_server
+#define __pyx_n_s_simplefilter __pyx_mstate_global->__pyx_n_s_simplefilter
+#define __pyx_n_s_sleep __pyx_mstate_global->__pyx_n_s_sleep
+#define __pyx_n_s_socket __pyx_mstate_global->__pyx_n_s_socket
+#define __pyx_n_s_socket_id __pyx_mstate_global->__pyx_n_s_socket_id
+#define __pyx_n_s_socketpair __pyx_mstate_global->__pyx_n_s_socketpair
+#define __pyx_n_s_span_id __pyx_mstate_global->__pyx_n_s_span_id
+#define __pyx_n_s_spawn __pyx_mstate_global->__pyx_n_s_spawn
+#define __pyx_n_s_spawn_callback_async __pyx_mstate_global->__pyx_n_s_spawn_callback_async
+#define __pyx_n_s_spawn_callback_in_thread __pyx_mstate_global->__pyx_n_s_spawn_callback_in_thread
+#define __pyx_n_s_spawn_greenlets __pyx_mstate_global->__pyx_n_s_spawn_greenlets
+#define __pyx_n_s_spec __pyx_mstate_global->__pyx_n_s_spec
+#define __pyx_kp_s_src_python_grpcio_grpc__cython __pyx_mstate_global->__pyx_kp_s_src_python_grpcio_grpc__cython
+#define __pyx_kp_s_src_python_grpcio_grpc__cython_10 __pyx_mstate_global->__pyx_kp_s_src_python_grpcio_grpc__cython_10
+#define __pyx_kp_s_src_python_grpcio_grpc__cython_11 __pyx_mstate_global->__pyx_kp_s_src_python_grpcio_grpc__cython_11
+#define __pyx_kp_s_src_python_grpcio_grpc__cython_12 __pyx_mstate_global->__pyx_kp_s_src_python_grpcio_grpc__cython_12
+#define __pyx_kp_s_src_python_grpcio_grpc__cython_13 __pyx_mstate_global->__pyx_kp_s_src_python_grpcio_grpc__cython_13
+#define __pyx_kp_s_src_python_grpcio_grpc__cython_14 __pyx_mstate_global->__pyx_kp_s_src_python_grpcio_grpc__cython_14
+#define __pyx_kp_s_src_python_grpcio_grpc__cython_15 __pyx_mstate_global->__pyx_kp_s_src_python_grpcio_grpc__cython_15
+#define __pyx_kp_s_src_python_grpcio_grpc__cython_16 __pyx_mstate_global->__pyx_kp_s_src_python_grpcio_grpc__cython_16
+#define __pyx_kp_s_src_python_grpcio_grpc__cython_17 __pyx_mstate_global->__pyx_kp_s_src_python_grpcio_grpc__cython_17
+#define __pyx_kp_s_src_python_grpcio_grpc__cython_18 __pyx_mstate_global->__pyx_kp_s_src_python_grpcio_grpc__cython_18
+#define __pyx_kp_s_src_python_grpcio_grpc__cython_19 __pyx_mstate_global->__pyx_kp_s_src_python_grpcio_grpc__cython_19
+#define __pyx_kp_s_src_python_grpcio_grpc__cython_2 __pyx_mstate_global->__pyx_kp_s_src_python_grpcio_grpc__cython_2
+#define __pyx_kp_s_src_python_grpcio_grpc__cython_20 __pyx_mstate_global->__pyx_kp_s_src_python_grpcio_grpc__cython_20
+#define __pyx_kp_s_src_python_grpcio_grpc__cython_21 __pyx_mstate_global->__pyx_kp_s_src_python_grpcio_grpc__cython_21
+#define __pyx_kp_s_src_python_grpcio_grpc__cython_22 __pyx_mstate_global->__pyx_kp_s_src_python_grpcio_grpc__cython_22
+#define __pyx_kp_s_src_python_grpcio_grpc__cython_23 __pyx_mstate_global->__pyx_kp_s_src_python_grpcio_grpc__cython_23
+#define __pyx_kp_s_src_python_grpcio_grpc__cython_3 __pyx_mstate_global->__pyx_kp_s_src_python_grpcio_grpc__cython_3
+#define __pyx_kp_s_src_python_grpcio_grpc__cython_4 __pyx_mstate_global->__pyx_kp_s_src_python_grpcio_grpc__cython_4
+#define __pyx_kp_s_src_python_grpcio_grpc__cython_5 __pyx_mstate_global->__pyx_kp_s_src_python_grpcio_grpc__cython_5
+#define __pyx_kp_s_src_python_grpcio_grpc__cython_6 __pyx_mstate_global->__pyx_kp_s_src_python_grpcio_grpc__cython_6
+#define __pyx_kp_s_src_python_grpcio_grpc__cython_7 __pyx_mstate_global->__pyx_kp_s_src_python_grpcio_grpc__cython_7
+#define __pyx_kp_s_src_python_grpcio_grpc__cython_8 __pyx_mstate_global->__pyx_kp_s_src_python_grpcio_grpc__cython_8
+#define __pyx_kp_s_src_python_grpcio_grpc__cython_9 __pyx_mstate_global->__pyx_kp_s_src_python_grpcio_grpc__cython_9
+#define __pyx_n_s_ssl_session_cache __pyx_mstate_global->__pyx_n_s_ssl_session_cache
+#define __pyx_n_s_ssl_target_name_override __pyx_mstate_global->__pyx_n_s_ssl_target_name_override
+#define __pyx_n_s_start __pyx_mstate_global->__pyx_n_s_start
+#define __pyx_n_s_start_batch __pyx_mstate_global->__pyx_n_s_start_batch
+#define __pyx_n_s_start_channel_id __pyx_mstate_global->__pyx_n_s_start_channel_id
+#define __pyx_n_s_start_client_batch __pyx_mstate_global->__pyx_n_s_start_client_batch
+#define __pyx_n_s_start_server_batch __pyx_mstate_global->__pyx_n_s_start_server_batch
+#define __pyx_n_s_start_server_id __pyx_mstate_global->__pyx_n_s_start_server_id
+#define __pyx_n_s_start_shutting_down __pyx_mstate_global->__pyx_n_s_start_shutting_down
+#define __pyx_n_s_start_socket_id __pyx_mstate_global->__pyx_n_s_start_socket_id
+#define __pyx_n_s_started_tag __pyx_mstate_global->__pyx_n_s_started_tag
+#define __pyx_n_s_started_tags __pyx_mstate_global->__pyx_n_s_started_tags
+#define __pyx_n_s_state __pyx_mstate_global->__pyx_n_s_state
+#define __pyx_n_s_status __pyx_mstate_global->__pyx_n_s_status
+#define __pyx_n_s_status_code __pyx_mstate_global->__pyx_n_s_status_code
+#define __pyx_n_s_status_task __pyx_mstate_global->__pyx_n_s_status_task
+#define __pyx_n_s_stored_ctx __pyx_mstate_global->__pyx_n_s_stored_ctx
+#define __pyx_n_s_str __pyx_mstate_global->__pyx_n_s_str
+#define __pyx_n_s_str_2 __pyx_mstate_global->__pyx_n_s_str_2
+#define __pyx_n_s_stream_handler __pyx_mstate_global->__pyx_n_s_stream_handler
+#define __pyx_n_s_stream_stream __pyx_mstate_global->__pyx_n_s_stream_stream
+#define __pyx_n_s_stream_unary __pyx_mstate_global->__pyx_n_s_stream_unary
+#define __pyx_kp_s_stringsource __pyx_mstate_global->__pyx_kp_s_stringsource
+#define __pyx_n_s_subchannel_id __pyx_mstate_global->__pyx_n_s_subchannel_id
+#define __pyx_n_s_success __pyx_mstate_global->__pyx_n_s_success
+#define __pyx_n_s_super __pyx_mstate_global->__pyx_n_s_super
+#define __pyx_n_s_sync_servicer_context __pyx_mstate_global->__pyx_n_s_sync_servicer_context
+#define __pyx_n_s_sys __pyx_mstate_global->__pyx_n_s_sys
+#define __pyx_n_s_t __pyx_mstate_global->__pyx_n_s_t
+#define __pyx_n_s_tag __pyx_mstate_global->__pyx_n_s_tag
+#define __pyx_n_s_target __pyx_mstate_global->__pyx_n_s_target
+#define __pyx_n_s_task __pyx_mstate_global->__pyx_n_s_task
+#define __pyx_n_s_test __pyx_mstate_global->__pyx_n_s_test
+#define __pyx_kp_s_the_server_has_already_started __pyx_mstate_global->__pyx_kp_s_the_server_has_already_started
+#define __pyx_kp_s_the_server_hasn_t_started_yet __pyx_mstate_global->__pyx_kp_s_the_server_hasn_t_started_yet
+#define __pyx_kp_s_the_server_must_be_shutting_down __pyx_mstate_global->__pyx_kp_s_the_server_must_be_shutting_down
+#define __pyx_n_s_thread __pyx_mstate_global->__pyx_n_s_thread
+#define __pyx_n_s_thread_pool __pyx_mstate_global->__pyx_n_s_thread_pool
+#define __pyx_n_s_threading __pyx_mstate_global->__pyx_n_s_threading
+#define __pyx_n_s_threadpool __pyx_mstate_global->__pyx_n_s_threadpool
+#define __pyx_n_s_throw __pyx_mstate_global->__pyx_n_s_throw
+#define __pyx_n_s_time __pyx_mstate_global->__pyx_n_s_time
+#define __pyx_n_s_time_remaining __pyx_mstate_global->__pyx_n_s_time_remaining
+#define __pyx_n_s_timeout __pyx_mstate_global->__pyx_n_s_timeout
+#define __pyx_n_s_timeout_secs __pyx_mstate_global->__pyx_n_s_timeout_secs
+#define __pyx_n_s_to_call __pyx_mstate_global->__pyx_n_s_to_call
+#define __pyx_n_s_to_channel_arg __pyx_mstate_global->__pyx_n_s_to_channel_arg
+#define __pyx_n_s_too_many_operations __pyx_mstate_global->__pyx_n_s_too_many_operations
+#define __pyx_n_s_trace_id __pyx_mstate_global->__pyx_n_s_trace_id
+#define __pyx_n_s_traceback __pyx_mstate_global->__pyx_n_s_traceback
+#define __pyx_n_s_tracing_enabled __pyx_mstate_global->__pyx_n_s_tracing_enabled
+#define __pyx_n_s_trailing_metadata __pyx_mstate_global->__pyx_n_s_trailing_metadata
+#define __pyx_n_s_transient_failure __pyx_mstate_global->__pyx_n_s_transient_failure
+#define __pyx_n_s_true __pyx_mstate_global->__pyx_n_s_true
+#define __pyx_n_s_try_to_connect __pyx_mstate_global->__pyx_n_s_try_to_connect
+#define __pyx_n_s_type __pyx_mstate_global->__pyx_n_s_type
+#define __pyx_n_s_typing __pyx_mstate_global->__pyx_n_s_typing
+#define __pyx_n_s_uds __pyx_mstate_global->__pyx_n_s_uds
+#define __pyx_n_s_unary_handler __pyx_mstate_global->__pyx_n_s_unary_handler
+#define __pyx_n_s_unary_stream __pyx_mstate_global->__pyx_n_s_unary_stream
+#define __pyx_n_s_unary_unary __pyx_mstate_global->__pyx_n_s_unary_unary
+#define __pyx_n_s_unauthenticated __pyx_mstate_global->__pyx_n_s_unauthenticated
+#define __pyx_n_s_unavailable __pyx_mstate_global->__pyx_n_s_unavailable
+#define __pyx_n_s_unimplemented __pyx_mstate_global->__pyx_n_s_unimplemented
+#define __pyx_n_s_uninstall_context __pyx_mstate_global->__pyx_n_s_uninstall_context
+#define __pyx_n_s_unknown __pyx_mstate_global->__pyx_n_s_unknown
+#define __pyx_n_s_unused_future __pyx_mstate_global->__pyx_n_s_unused_future
+#define __pyx_n_s_unused_task __pyx_mstate_global->__pyx_n_s_unused_task
+#define __pyx_n_s_update __pyx_mstate_global->__pyx_n_s_update
+#define __pyx_n_s_upper __pyx_mstate_global->__pyx_n_s_upper
+#define __pyx_n_s_use_setstate __pyx_mstate_global->__pyx_n_s_use_setstate
+#define __pyx_n_s_used_mask __pyx_mstate_global->__pyx_n_s_used_mask
+#define __pyx_n_s_user_tag __pyx_mstate_global->__pyx_n_s_user_tag
+#define __pyx_n_s_utf8 __pyx_mstate_global->__pyx_n_s_utf8
+#define __pyx_kp_s_utf_8 __pyx_mstate_global->__pyx_kp_s_utf_8
+#define __pyx_n_s_value __pyx_mstate_global->__pyx_n_s_value
+#define __pyx_n_s_values __pyx_mstate_global->__pyx_n_s_values
+#define __pyx_n_s_wait __pyx_mstate_global->__pyx_n_s_wait
+#define __pyx_n_s_wait_for __pyx_mstate_global->__pyx_n_s_wait_for
+#define __pyx_n_s_wait_for_ready __pyx_mstate_global->__pyx_n_s_wait_for_ready
+#define __pyx_n_s_wait_for_ready_explicitly_set __pyx_mstate_global->__pyx_n_s_wait_for_ready_explicitly_set
+#define __pyx_n_s_wait_for_termination __pyx_mstate_global->__pyx_n_s_wait_for_termination
+#define __pyx_n_s_wait_time __pyx_mstate_global->__pyx_n_s_wait_time
+#define __pyx_n_s_warning __pyx_mstate_global->__pyx_n_s_warning
+#define __pyx_n_s_warnings __pyx_mstate_global->__pyx_n_s_warnings
+#define __pyx_n_s_watch_connectivity_state __pyx_mstate_global->__pyx_n_s_watch_connectivity_state
+#define __pyx_n_s_wrap __pyx_mstate_global->__pyx_n_s_wrap
+#define __pyx_n_s_wrapper __pyx_mstate_global->__pyx_n_s_wrapper
+#define __pyx_n_s_write __pyx_mstate_global->__pyx_n_s_write
+#define __pyx_n_s_write_flag __pyx_mstate_global->__pyx_n_s_write_flag
+#define __pyx_n_s_xds __pyx_mstate_global->__pyx_n_s_xds
+#define __pyx_n_s_xds_server_credentials __pyx_mstate_global->__pyx_n_s_xds_server_credentials
+#define __pyx_n_s_yes __pyx_mstate_global->__pyx_n_s_yes
+#define __pyx_n_s_yield_to_queue __pyx_mstate_global->__pyx_n_s_yield_to_queue
+#define __pyx_float_1_0 __pyx_mstate_global->__pyx_float_1_0
+#define __pyx_int_0 __pyx_mstate_global->__pyx_int_0
+#define __pyx_int_1 __pyx_mstate_global->__pyx_int_1
+#define __pyx_int_5 __pyx_mstate_global->__pyx_int_5
+#define __pyx_int_118587260 __pyx_mstate_global->__pyx_int_118587260
+#define __pyx_int_171381981 __pyx_mstate_global->__pyx_int_171381981
+#define __pyx_int_171651213 __pyx_mstate_global->__pyx_int_171651213
+#define __pyx_int_222419149 __pyx_mstate_global->__pyx_int_222419149
+#define __pyx_int_228825662 __pyx_mstate_global->__pyx_int_228825662
+#define __pyx_int_238750788 __pyx_mstate_global->__pyx_int_238750788
+#define __pyx_k__9 __pyx_mstate_global->__pyx_k__9
+#define __pyx_k__76 __pyx_mstate_global->__pyx_k__76
+#define __pyx_k__80 __pyx_mstate_global->__pyx_k__80
+#define __pyx_tuple_ __pyx_mstate_global->__pyx_tuple_
+#define __pyx_tuple__4 __pyx_mstate_global->__pyx_tuple__4
+#define __pyx_tuple__8 __pyx_mstate_global->__pyx_tuple__8
+#define __pyx_slice__37 __pyx_mstate_global->__pyx_slice__37
+#define __pyx_tuple__10 __pyx_mstate_global->__pyx_tuple__10
+#define __pyx_tuple__11 __pyx_mstate_global->__pyx_tuple__11
+#define __pyx_tuple__12 __pyx_mstate_global->__pyx_tuple__12
+#define __pyx_tuple__14 __pyx_mstate_global->__pyx_tuple__14
+#define __pyx_tuple__17 __pyx_mstate_global->__pyx_tuple__17
+#define __pyx_tuple__19 __pyx_mstate_global->__pyx_tuple__19
+#define __pyx_tuple__21 __pyx_mstate_global->__pyx_tuple__21
+#define __pyx_tuple__23 __pyx_mstate_global->__pyx_tuple__23
+#define __pyx_tuple__24 __pyx_mstate_global->__pyx_tuple__24
+#define __pyx_tuple__25 __pyx_mstate_global->__pyx_tuple__25
+#define __pyx_tuple__26 __pyx_mstate_global->__pyx_tuple__26
+#define __pyx_tuple__27 __pyx_mstate_global->__pyx_tuple__27
+#define __pyx_tuple__28 __pyx_mstate_global->__pyx_tuple__28
+#define __pyx_tuple__29 __pyx_mstate_global->__pyx_tuple__29
+#define __pyx_tuple__30 __pyx_mstate_global->__pyx_tuple__30
+#define __pyx_tuple__31 __pyx_mstate_global->__pyx_tuple__31
+#define __pyx_tuple__32 __pyx_mstate_global->__pyx_tuple__32
+#define __pyx_tuple__33 __pyx_mstate_global->__pyx_tuple__33
+#define __pyx_tuple__34 __pyx_mstate_global->__pyx_tuple__34
+#define __pyx_tuple__35 __pyx_mstate_global->__pyx_tuple__35
+#define __pyx_tuple__36 __pyx_mstate_global->__pyx_tuple__36
+#define __pyx_tuple__39 __pyx_mstate_global->__pyx_tuple__39
+#define __pyx_tuple__40 __pyx_mstate_global->__pyx_tuple__40
+#define __pyx_tuple__46 __pyx_mstate_global->__pyx_tuple__46
+#define __pyx_tuple__48 __pyx_mstate_global->__pyx_tuple__48
+#define __pyx_tuple__50 __pyx_mstate_global->__pyx_tuple__50
+#define __pyx_tuple__79 __pyx_mstate_global->__pyx_tuple__79
+#define __pyx_tuple__83 __pyx_mstate_global->__pyx_tuple__83
+#define __pyx_tuple__93 __pyx_mstate_global->__pyx_tuple__93
+#define __pyx_tuple__98 __pyx_mstate_global->__pyx_tuple__98
+#define __pyx_codeobj__2 __pyx_mstate_global->__pyx_codeobj__2
+#define __pyx_codeobj__3 __pyx_mstate_global->__pyx_codeobj__3
+#define __pyx_codeobj__5 __pyx_mstate_global->__pyx_codeobj__5
+#define __pyx_codeobj__6 __pyx_mstate_global->__pyx_codeobj__6
+#define __pyx_tuple__105 __pyx_mstate_global->__pyx_tuple__105
+#define __pyx_tuple__106 __pyx_mstate_global->__pyx_tuple__106
+#define __pyx_tuple__108 __pyx_mstate_global->__pyx_tuple__108
+#define __pyx_tuple__110 __pyx_mstate_global->__pyx_tuple__110
+#define __pyx_tuple__116 __pyx_mstate_global->__pyx_tuple__116
+#define __pyx_tuple__118 __pyx_mstate_global->__pyx_tuple__118
+#define __pyx_tuple__121 __pyx_mstate_global->__pyx_tuple__121
+#define __pyx_tuple__123 __pyx_mstate_global->__pyx_tuple__123
+#define __pyx_tuple__125 __pyx_mstate_global->__pyx_tuple__125
+#define __pyx_tuple__127 __pyx_mstate_global->__pyx_tuple__127
+#define __pyx_tuple__138 __pyx_mstate_global->__pyx_tuple__138
+#define __pyx_tuple__144 __pyx_mstate_global->__pyx_tuple__144
+#define __pyx_tuple__148 __pyx_mstate_global->__pyx_tuple__148
+#define __pyx_tuple__150 __pyx_mstate_global->__pyx_tuple__150
+#define __pyx_tuple__152 __pyx_mstate_global->__pyx_tuple__152
+#define __pyx_tuple__153 __pyx_mstate_global->__pyx_tuple__153
+#define __pyx_tuple__156 __pyx_mstate_global->__pyx_tuple__156
+#define __pyx_tuple__158 __pyx_mstate_global->__pyx_tuple__158
+#define __pyx_tuple__162 __pyx_mstate_global->__pyx_tuple__162
+#define __pyx_tuple__166 __pyx_mstate_global->__pyx_tuple__166
+#define __pyx_tuple__168 __pyx_mstate_global->__pyx_tuple__168
+#define __pyx_tuple__170 __pyx_mstate_global->__pyx_tuple__170
+#define __pyx_tuple__172 __pyx_mstate_global->__pyx_tuple__172
+#define __pyx_tuple__174 __pyx_mstate_global->__pyx_tuple__174
+#define __pyx_tuple__176 __pyx_mstate_global->__pyx_tuple__176
+#define __pyx_tuple__178 __pyx_mstate_global->__pyx_tuple__178
+#define __pyx_tuple__180 __pyx_mstate_global->__pyx_tuple__180
+#define __pyx_tuple__182 __pyx_mstate_global->__pyx_tuple__182
+#define __pyx_tuple__184 __pyx_mstate_global->__pyx_tuple__184
+#define __pyx_tuple__186 __pyx_mstate_global->__pyx_tuple__186
+#define __pyx_tuple__194 __pyx_mstate_global->__pyx_tuple__194
+#define __pyx_tuple__209 __pyx_mstate_global->__pyx_tuple__209
+#define __pyx_tuple__211 __pyx_mstate_global->__pyx_tuple__211
+#define __pyx_tuple__213 __pyx_mstate_global->__pyx_tuple__213
+#define __pyx_tuple__217 __pyx_mstate_global->__pyx_tuple__217
+#define __pyx_tuple__222 __pyx_mstate_global->__pyx_tuple__222
+#define __pyx_tuple__224 __pyx_mstate_global->__pyx_tuple__224
+#define __pyx_tuple__226 __pyx_mstate_global->__pyx_tuple__226
+#define __pyx_tuple__230 __pyx_mstate_global->__pyx_tuple__230
+#define __pyx_tuple__232 __pyx_mstate_global->__pyx_tuple__232
+#define __pyx_tuple__236 __pyx_mstate_global->__pyx_tuple__236
+#define __pyx_tuple__238 __pyx_mstate_global->__pyx_tuple__238
+#define __pyx_tuple__241 __pyx_mstate_global->__pyx_tuple__241
+#define __pyx_tuple__254 __pyx_mstate_global->__pyx_tuple__254
+#define __pyx_tuple__255 __pyx_mstate_global->__pyx_tuple__255
+#define __pyx_tuple__293 __pyx_mstate_global->__pyx_tuple__293
+#define __pyx_tuple__296 __pyx_mstate_global->__pyx_tuple__296
+#define __pyx_tuple__301 __pyx_mstate_global->__pyx_tuple__301
+#define __pyx_tuple__304 __pyx_mstate_global->__pyx_tuple__304
+#define __pyx_tuple__306 __pyx_mstate_global->__pyx_tuple__306
+#define __pyx_tuple__308 __pyx_mstate_global->__pyx_tuple__308
+#define __pyx_tuple__310 __pyx_mstate_global->__pyx_tuple__310
+#define __pyx_tuple__312 __pyx_mstate_global->__pyx_tuple__312
+#define __pyx_tuple__314 __pyx_mstate_global->__pyx_tuple__314
+#define __pyx_tuple__316 __pyx_mstate_global->__pyx_tuple__316
+#define __pyx_tuple__317 __pyx_mstate_global->__pyx_tuple__317
+#define __pyx_tuple__319 __pyx_mstate_global->__pyx_tuple__319
+#define __pyx_tuple__335 __pyx_mstate_global->__pyx_tuple__335
+#define __pyx_tuple__342 __pyx_mstate_global->__pyx_tuple__342
+#define __pyx_tuple__346 __pyx_mstate_global->__pyx_tuple__346
+#define __pyx_tuple__349 __pyx_mstate_global->__pyx_tuple__349
+#define __pyx_tuple__353 __pyx_mstate_global->__pyx_tuple__353
+#define __pyx_tuple__356 __pyx_mstate_global->__pyx_tuple__356
+#define __pyx_tuple__358 __pyx_mstate_global->__pyx_tuple__358
+#define __pyx_tuple__360 __pyx_mstate_global->__pyx_tuple__360
+#define __pyx_tuple__362 __pyx_mstate_global->__pyx_tuple__362
+#define __pyx_tuple__364 __pyx_mstate_global->__pyx_tuple__364
+#define __pyx_tuple__366 __pyx_mstate_global->__pyx_tuple__366
+#define __pyx_tuple__368 __pyx_mstate_global->__pyx_tuple__368
+#define __pyx_tuple__370 __pyx_mstate_global->__pyx_tuple__370
+#define __pyx_tuple__371 __pyx_mstate_global->__pyx_tuple__371
+#define __pyx_tuple__372 __pyx_mstate_global->__pyx_tuple__372
+#define __pyx_tuple__374 __pyx_mstate_global->__pyx_tuple__374
+#define __pyx_tuple__375 __pyx_mstate_global->__pyx_tuple__375
+#define __pyx_tuple__379 __pyx_mstate_global->__pyx_tuple__379
+#define __pyx_tuple__385 __pyx_mstate_global->__pyx_tuple__385
+#define __pyx_tuple__388 __pyx_mstate_global->__pyx_tuple__388
+#define __pyx_tuple__389 __pyx_mstate_global->__pyx_tuple__389
+#define __pyx_tuple__393 __pyx_mstate_global->__pyx_tuple__393
+#define __pyx_tuple__395 __pyx_mstate_global->__pyx_tuple__395
+#define __pyx_tuple__396 __pyx_mstate_global->__pyx_tuple__396
+#define __pyx_tuple__403 __pyx_mstate_global->__pyx_tuple__403
+#define __pyx_tuple__405 __pyx_mstate_global->__pyx_tuple__405
+#define __pyx_tuple__406 __pyx_mstate_global->__pyx_tuple__406
+#define __pyx_tuple__409 __pyx_mstate_global->__pyx_tuple__409
+#define __pyx_tuple__417 __pyx_mstate_global->__pyx_tuple__417
+#define __pyx_tuple__424 __pyx_mstate_global->__pyx_tuple__424
+#define __pyx_tuple__427 __pyx_mstate_global->__pyx_tuple__427
+#define __pyx_tuple__435 __pyx_mstate_global->__pyx_tuple__435
+#define __pyx_tuple__436 __pyx_mstate_global->__pyx_tuple__436
+#define __pyx_tuple__437 __pyx_mstate_global->__pyx_tuple__437
+#define __pyx_tuple__438 __pyx_mstate_global->__pyx_tuple__438
+#define __pyx_tuple__439 __pyx_mstate_global->__pyx_tuple__439
+#define __pyx_tuple__440 __pyx_mstate_global->__pyx_tuple__440
+#define __pyx_tuple__441 __pyx_mstate_global->__pyx_tuple__441
+#define __pyx_tuple__444 __pyx_mstate_global->__pyx_tuple__444
+#define __pyx_tuple__448 __pyx_mstate_global->__pyx_tuple__448
+#define __pyx_tuple__450 __pyx_mstate_global->__pyx_tuple__450
+#define __pyx_tuple__453 __pyx_mstate_global->__pyx_tuple__453
+#define __pyx_tuple__457 __pyx_mstate_global->__pyx_tuple__457
+#define __pyx_tuple__460 __pyx_mstate_global->__pyx_tuple__460
+#define __pyx_tuple__462 __pyx_mstate_global->__pyx_tuple__462
+#define __pyx_tuple__463 __pyx_mstate_global->__pyx_tuple__463
+#define __pyx_tuple__464 __pyx_mstate_global->__pyx_tuple__464
+#define __pyx_tuple__465 __pyx_mstate_global->__pyx_tuple__465
+#define __pyx_tuple__466 __pyx_mstate_global->__pyx_tuple__466
+#define __pyx_tuple__467 __pyx_mstate_global->__pyx_tuple__467
+#define __pyx_tuple__468 __pyx_mstate_global->__pyx_tuple__468
+#define __pyx_tuple__472 __pyx_mstate_global->__pyx_tuple__472
+#define __pyx_tuple__476 __pyx_mstate_global->__pyx_tuple__476
+#define __pyx_tuple__484 __pyx_mstate_global->__pyx_tuple__484
+#define __pyx_tuple__485 __pyx_mstate_global->__pyx_tuple__485
+#define __pyx_tuple__486 __pyx_mstate_global->__pyx_tuple__486
+#define __pyx_tuple__487 __pyx_mstate_global->__pyx_tuple__487
+#define __pyx_tuple__491 __pyx_mstate_global->__pyx_tuple__491
+#define __pyx_tuple__494 __pyx_mstate_global->__pyx_tuple__494
+#define __pyx_tuple__497 __pyx_mstate_global->__pyx_tuple__497
+#define __pyx_tuple__500 __pyx_mstate_global->__pyx_tuple__500
+#define __pyx_tuple__502 __pyx_mstate_global->__pyx_tuple__502
+#define __pyx_tuple__504 __pyx_mstate_global->__pyx_tuple__504
+#define __pyx_tuple__506 __pyx_mstate_global->__pyx_tuple__506
+#define __pyx_tuple__509 __pyx_mstate_global->__pyx_tuple__509
+#define __pyx_tuple__515 __pyx_mstate_global->__pyx_tuple__515
+#define __pyx_tuple__517 __pyx_mstate_global->__pyx_tuple__517
+#define __pyx_tuple__533 __pyx_mstate_global->__pyx_tuple__533
+#define __pyx_tuple__534 __pyx_mstate_global->__pyx_tuple__534
+#define __pyx_tuple__536 __pyx_mstate_global->__pyx_tuple__536
+#define __pyx_tuple__537 __pyx_mstate_global->__pyx_tuple__537
+#define __pyx_tuple__538 __pyx_mstate_global->__pyx_tuple__538
+#define __pyx_tuple__539 __pyx_mstate_global->__pyx_tuple__539
+#define __pyx_tuple__542 __pyx_mstate_global->__pyx_tuple__542
+#define __pyx_tuple__543 __pyx_mstate_global->__pyx_tuple__543
+#define __pyx_tuple__544 __pyx_mstate_global->__pyx_tuple__544
+#define __pyx_tuple__545 __pyx_mstate_global->__pyx_tuple__545
+#define __pyx_tuple__546 __pyx_mstate_global->__pyx_tuple__546
+#define __pyx_tuple__548 __pyx_mstate_global->__pyx_tuple__548
+#define __pyx_tuple__550 __pyx_mstate_global->__pyx_tuple__550
+#define __pyx_tuple__554 __pyx_mstate_global->__pyx_tuple__554
+#define __pyx_tuple__556 __pyx_mstate_global->__pyx_tuple__556
+#define __pyx_tuple__558 __pyx_mstate_global->__pyx_tuple__558
+#define __pyx_tuple__560 __pyx_mstate_global->__pyx_tuple__560
+#define __pyx_tuple__561 __pyx_mstate_global->__pyx_tuple__561
+#define __pyx_tuple__562 __pyx_mstate_global->__pyx_tuple__562
+#define __pyx_tuple__564 __pyx_mstate_global->__pyx_tuple__564
+#define __pyx_tuple__565 __pyx_mstate_global->__pyx_tuple__565
+#define __pyx_tuple__566 __pyx_mstate_global->__pyx_tuple__566
+#define __pyx_tuple__570 __pyx_mstate_global->__pyx_tuple__570
+#define __pyx_codeobj__13 __pyx_mstate_global->__pyx_codeobj__13
+#define __pyx_codeobj__15 __pyx_mstate_global->__pyx_codeobj__15
+#define __pyx_codeobj__16 __pyx_mstate_global->__pyx_codeobj__16
+#define __pyx_codeobj__18 __pyx_mstate_global->__pyx_codeobj__18
+#define __pyx_codeobj__20 __pyx_mstate_global->__pyx_codeobj__20
+#define __pyx_codeobj__22 __pyx_mstate_global->__pyx_codeobj__22
+#define __pyx_codeobj__41 __pyx_mstate_global->__pyx_codeobj__41
+#define __pyx_codeobj__42 __pyx_mstate_global->__pyx_codeobj__42
+#define __pyx_codeobj__43 __pyx_mstate_global->__pyx_codeobj__43
+#define __pyx_codeobj__44 __pyx_mstate_global->__pyx_codeobj__44
+#define __pyx_codeobj__45 __pyx_mstate_global->__pyx_codeobj__45
+#define __pyx_codeobj__47 __pyx_mstate_global->__pyx_codeobj__47
+#define __pyx_codeobj__51 __pyx_mstate_global->__pyx_codeobj__51
+#define __pyx_codeobj__52 __pyx_mstate_global->__pyx_codeobj__52
+#define __pyx_codeobj__53 __pyx_mstate_global->__pyx_codeobj__53
+#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__59 __pyx_mstate_global->__pyx_codeobj__59
+#define __pyx_codeobj__60 __pyx_mstate_global->__pyx_codeobj__60
+#define __pyx_codeobj__61 __pyx_mstate_global->__pyx_codeobj__61
+#define __pyx_codeobj__62 __pyx_mstate_global->__pyx_codeobj__62
+#define __pyx_codeobj__63 __pyx_mstate_global->__pyx_codeobj__63
+#define __pyx_codeobj__64 __pyx_mstate_global->__pyx_codeobj__64
+#define __pyx_codeobj__65 __pyx_mstate_global->__pyx_codeobj__65
+#define __pyx_codeobj__66 __pyx_mstate_global->__pyx_codeobj__66
+#define __pyx_codeobj__67 __pyx_mstate_global->__pyx_codeobj__67
+#define __pyx_codeobj__68 __pyx_mstate_global->__pyx_codeobj__68
+#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__78 __pyx_mstate_global->__pyx_codeobj__78
+#define __pyx_codeobj__81 __pyx_mstate_global->__pyx_codeobj__81
+#define __pyx_codeobj__82 __pyx_mstate_global->__pyx_codeobj__82
+#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__90 __pyx_mstate_global->__pyx_codeobj__90
+#define __pyx_codeobj__91 __pyx_mstate_global->__pyx_codeobj__91
+#define __pyx_codeobj__92 __pyx_mstate_global->__pyx_codeobj__92
+#define __pyx_codeobj__94 __pyx_mstate_global->__pyx_codeobj__94
+#define __pyx_codeobj__95 __pyx_mstate_global->__pyx_codeobj__95
+#define __pyx_codeobj__96 __pyx_mstate_global->__pyx_codeobj__96
+#define __pyx_codeobj__97 __pyx_mstate_global->__pyx_codeobj__97
+#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__109 __pyx_mstate_global->__pyx_codeobj__109
+#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__117 __pyx_mstate_global->__pyx_codeobj__117
+#define __pyx_codeobj__119 __pyx_mstate_global->__pyx_codeobj__119
+#define __pyx_codeobj__120 __pyx_mstate_global->__pyx_codeobj__120
+#define __pyx_codeobj__122 __pyx_mstate_global->__pyx_codeobj__122
+#define __pyx_codeobj__124 __pyx_mstate_global->__pyx_codeobj__124
+#define __pyx_codeobj__126 __pyx_mstate_global->__pyx_codeobj__126
+#define __pyx_codeobj__128 __pyx_mstate_global->__pyx_codeobj__128
+#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__134 __pyx_mstate_global->__pyx_codeobj__134
+#define __pyx_codeobj__135 __pyx_mstate_global->__pyx_codeobj__135
+#define __pyx_codeobj__136 __pyx_mstate_global->__pyx_codeobj__136
+#define __pyx_codeobj__137 __pyx_mstate_global->__pyx_codeobj__137
+#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__145 __pyx_mstate_global->__pyx_codeobj__145
+#define __pyx_codeobj__146 __pyx_mstate_global->__pyx_codeobj__146
+#define __pyx_codeobj__147 __pyx_mstate_global->__pyx_codeobj__147
+#define __pyx_codeobj__149 __pyx_mstate_global->__pyx_codeobj__149
+#define __pyx_codeobj__151 __pyx_mstate_global->__pyx_codeobj__151
+#define __pyx_codeobj__154 __pyx_mstate_global->__pyx_codeobj__154
+#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__163 __pyx_mstate_global->__pyx_codeobj__163
+#define __pyx_codeobj__164 __pyx_mstate_global->__pyx_codeobj__164
+#define __pyx_codeobj__165 __pyx_mstate_global->__pyx_codeobj__165
+#define __pyx_codeobj__167 __pyx_mstate_global->__pyx_codeobj__167
+#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__175 __pyx_mstate_global->__pyx_codeobj__175
+#define __pyx_codeobj__177 __pyx_mstate_global->__pyx_codeobj__177
+#define __pyx_codeobj__179 __pyx_mstate_global->__pyx_codeobj__179
+#define __pyx_codeobj__181 __pyx_mstate_global->__pyx_codeobj__181
+#define __pyx_codeobj__183 __pyx_mstate_global->__pyx_codeobj__183
+#define __pyx_codeobj__185 __pyx_mstate_global->__pyx_codeobj__185
+#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__192 __pyx_mstate_global->__pyx_codeobj__192
+#define __pyx_codeobj__193 __pyx_mstate_global->__pyx_codeobj__193
+#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__205 __pyx_mstate_global->__pyx_codeobj__205
+#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__210 __pyx_mstate_global->__pyx_codeobj__210
+#define __pyx_codeobj__212 __pyx_mstate_global->__pyx_codeobj__212
+#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__218 __pyx_mstate_global->__pyx_codeobj__218
+#define __pyx_codeobj__219 __pyx_mstate_global->__pyx_codeobj__219
+#define __pyx_codeobj__220 __pyx_mstate_global->__pyx_codeobj__220
+#define __pyx_codeobj__221 __pyx_mstate_global->__pyx_codeobj__221
+#define __pyx_codeobj__223 __pyx_mstate_global->__pyx_codeobj__223
+#define __pyx_codeobj__225 __pyx_mstate_global->__pyx_codeobj__225
+#define __pyx_codeobj__227 __pyx_mstate_global->__pyx_codeobj__227
+#define __pyx_codeobj__228 __pyx_mstate_global->__pyx_codeobj__228
+#define __pyx_codeobj__229 __pyx_mstate_global->__pyx_codeobj__229
+#define __pyx_codeobj__231 __pyx_mstate_global->__pyx_codeobj__231
+#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__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__242 __pyx_mstate_global->__pyx_codeobj__242
+#define __pyx_codeobj__243 __pyx_mstate_global->__pyx_codeobj__243
+#define __pyx_codeobj__244 __pyx_mstate_global->__pyx_codeobj__244
+#define __pyx_codeobj__245 __pyx_mstate_global->__pyx_codeobj__245
+#define __pyx_codeobj__246 __pyx_mstate_global->__pyx_codeobj__246
+#define __pyx_codeobj__247 __pyx_mstate_global->__pyx_codeobj__247
+#define __pyx_codeobj__248 __pyx_mstate_global->__pyx_codeobj__248
+#define __pyx_codeobj__249 __pyx_mstate_global->__pyx_codeobj__249
+#define __pyx_codeobj__250 __pyx_mstate_global->__pyx_codeobj__250
+#define __pyx_codeobj__251 __pyx_mstate_global->__pyx_codeobj__251
+#define __pyx_codeobj__252 __pyx_mstate_global->__pyx_codeobj__252
+#define __pyx_codeobj__253 __pyx_mstate_global->__pyx_codeobj__253
+#define __pyx_codeobj__256 __pyx_mstate_global->__pyx_codeobj__256
+#define __pyx_codeobj__257 __pyx_mstate_global->__pyx_codeobj__257
+#define __pyx_codeobj__258 __pyx_mstate_global->__pyx_codeobj__258
+#define __pyx_codeobj__259 __pyx_mstate_global->__pyx_codeobj__259
+#define __pyx_codeobj__260 __pyx_mstate_global->__pyx_codeobj__260
+#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__264 __pyx_mstate_global->__pyx_codeobj__264
+#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__269 __pyx_mstate_global->__pyx_codeobj__269
+#define __pyx_codeobj__270 __pyx_mstate_global->__pyx_codeobj__270
+#define __pyx_codeobj__271 __pyx_mstate_global->__pyx_codeobj__271
+#define __pyx_codeobj__272 __pyx_mstate_global->__pyx_codeobj__272
+#define __pyx_codeobj__273 __pyx_mstate_global->__pyx_codeobj__273
+#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__277 __pyx_mstate_global->__pyx_codeobj__277
+#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__286 __pyx_mstate_global->__pyx_codeobj__286
+#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__298 __pyx_mstate_global->__pyx_codeobj__298
+#define __pyx_codeobj__299 __pyx_mstate_global->__pyx_codeobj__299
+#define __pyx_codeobj__300 __pyx_mstate_global->__pyx_codeobj__300
+#define __pyx_codeobj__302 __pyx_mstate_global->__pyx_codeobj__302
+#define __pyx_codeobj__303 __pyx_mstate_global->__pyx_codeobj__303
+#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__311 __pyx_mstate_global->__pyx_codeobj__311
+#define __pyx_codeobj__313 __pyx_mstate_global->__pyx_codeobj__313
+#define __pyx_codeobj__315 __pyx_mstate_global->__pyx_codeobj__315
+#define __pyx_codeobj__318 __pyx_mstate_global->__pyx_codeobj__318
+#define __pyx_codeobj__320 __pyx_mstate_global->__pyx_codeobj__320
+#define __pyx_codeobj__321 __pyx_mstate_global->__pyx_codeobj__321
+#define __pyx_codeobj__322 __pyx_mstate_global->__pyx_codeobj__322
+#define __pyx_codeobj__323 __pyx_mstate_global->__pyx_codeobj__323
+#define __pyx_codeobj__324 __pyx_mstate_global->__pyx_codeobj__324
+#define __pyx_codeobj__325 __pyx_mstate_global->__pyx_codeobj__325
+#define __pyx_codeobj__326 __pyx_mstate_global->__pyx_codeobj__326
+#define __pyx_codeobj__327 __pyx_mstate_global->__pyx_codeobj__327
+#define __pyx_codeobj__328 __pyx_mstate_global->__pyx_codeobj__328
+#define __pyx_codeobj__329 __pyx_mstate_global->__pyx_codeobj__329
+#define __pyx_codeobj__330 __pyx_mstate_global->__pyx_codeobj__330
+#define __pyx_codeobj__331 __pyx_mstate_global->__pyx_codeobj__331
+#define __pyx_codeobj__332 __pyx_mstate_global->__pyx_codeobj__332
+#define __pyx_codeobj__333 __pyx_mstate_global->__pyx_codeobj__333
+#define __pyx_codeobj__334 __pyx_mstate_global->__pyx_codeobj__334
+#define __pyx_codeobj__336 __pyx_mstate_global->__pyx_codeobj__336
+#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__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__347 __pyx_mstate_global->__pyx_codeobj__347
+#define __pyx_codeobj__348 __pyx_mstate_global->__pyx_codeobj__348
+#define __pyx_codeobj__350 __pyx_mstate_global->__pyx_codeobj__350
+#define __pyx_codeobj__351 __pyx_mstate_global->__pyx_codeobj__351
+#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__359 __pyx_mstate_global->__pyx_codeobj__359
+#define __pyx_codeobj__361 __pyx_mstate_global->__pyx_codeobj__361
+#define __pyx_codeobj__363 __pyx_mstate_global->__pyx_codeobj__363
+#define __pyx_codeobj__365 __pyx_mstate_global->__pyx_codeobj__365
+#define __pyx_codeobj__367 __pyx_mstate_global->__pyx_codeobj__367
+#define __pyx_codeobj__369 __pyx_mstate_global->__pyx_codeobj__369
+#define __pyx_codeobj__373 __pyx_mstate_global->__pyx_codeobj__373
+#define __pyx_codeobj__376 __pyx_mstate_global->__pyx_codeobj__376
+#define __pyx_codeobj__377 __pyx_mstate_global->__pyx_codeobj__377
+#define __pyx_codeobj__378 __pyx_mstate_global->__pyx_codeobj__378
+#define __pyx_codeobj__380 __pyx_mstate_global->__pyx_codeobj__380
+#define __pyx_codeobj__381 __pyx_mstate_global->__pyx_codeobj__381
+#define __pyx_codeobj__382 __pyx_mstate_global->__pyx_codeobj__382
+#define __pyx_codeobj__383 __pyx_mstate_global->__pyx_codeobj__383
+#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__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__394 __pyx_mstate_global->__pyx_codeobj__394
+#define __pyx_codeobj__397 __pyx_mstate_global->__pyx_codeobj__397
+#define __pyx_codeobj__398 __pyx_mstate_global->__pyx_codeobj__398
+#define __pyx_codeobj__399 __pyx_mstate_global->__pyx_codeobj__399
+#define __pyx_codeobj__400 __pyx_mstate_global->__pyx_codeobj__400
+#define __pyx_codeobj__401 __pyx_mstate_global->__pyx_codeobj__401
+#define __pyx_codeobj__402 __pyx_mstate_global->__pyx_codeobj__402
+#define __pyx_codeobj__404 __pyx_mstate_global->__pyx_codeobj__404
+#define __pyx_codeobj__407 __pyx_mstate_global->__pyx_codeobj__407
+#define __pyx_codeobj__408 __pyx_mstate_global->__pyx_codeobj__408
+#define __pyx_codeobj__410 __pyx_mstate_global->__pyx_codeobj__410
+#define __pyx_codeobj__411 __pyx_mstate_global->__pyx_codeobj__411
+#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__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__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__432 __pyx_mstate_global->__pyx_codeobj__432
+#define __pyx_codeobj__433 __pyx_mstate_global->__pyx_codeobj__433
+#define __pyx_codeobj__434 __pyx_mstate_global->__pyx_codeobj__434
+#define __pyx_codeobj__442 __pyx_mstate_global->__pyx_codeobj__442
+#define __pyx_codeobj__443 __pyx_mstate_global->__pyx_codeobj__443
+#define __pyx_codeobj__445 __pyx_mstate_global->__pyx_codeobj__445
+#define __pyx_codeobj__446 __pyx_mstate_global->__pyx_codeobj__446
+#define __pyx_codeobj__447 __pyx_mstate_global->__pyx_codeobj__447
+#define __pyx_codeobj__449 __pyx_mstate_global->__pyx_codeobj__449
+#define __pyx_codeobj__451 __pyx_mstate_global->__pyx_codeobj__451
+#define __pyx_codeobj__452 __pyx_mstate_global->__pyx_codeobj__452
+#define __pyx_codeobj__454 __pyx_mstate_global->__pyx_codeobj__454
+#define __pyx_codeobj__455 __pyx_mstate_global->__pyx_codeobj__455
+#define __pyx_codeobj__456 __pyx_mstate_global->__pyx_codeobj__456
+#define __pyx_codeobj__458 __pyx_mstate_global->__pyx_codeobj__458
+#define __pyx_codeobj__459 __pyx_mstate_global->__pyx_codeobj__459
+#define __pyx_codeobj__461 __pyx_mstate_global->__pyx_codeobj__461
+#define __pyx_codeobj__469 __pyx_mstate_global->__pyx_codeobj__469
+#define __pyx_codeobj__470 __pyx_mstate_global->__pyx_codeobj__470
+#define __pyx_codeobj__471 __pyx_mstate_global->__pyx_codeobj__471
+#define __pyx_codeobj__473 __pyx_mstate_global->__pyx_codeobj__473
+#define __pyx_codeobj__474 __pyx_mstate_global->__pyx_codeobj__474
+#define __pyx_codeobj__475 __pyx_mstate_global->__pyx_codeobj__475
+#define __pyx_codeobj__477 __pyx_mstate_global->__pyx_codeobj__477
+#define __pyx_codeobj__478 __pyx_mstate_global->__pyx_codeobj__478
+#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__482 __pyx_mstate_global->__pyx_codeobj__482
+#define __pyx_codeobj__483 __pyx_mstate_global->__pyx_codeobj__483
+#define __pyx_codeobj__488 __pyx_mstate_global->__pyx_codeobj__488
+#define __pyx_codeobj__489 __pyx_mstate_global->__pyx_codeobj__489
+#define __pyx_codeobj__490 __pyx_mstate_global->__pyx_codeobj__490
+#define __pyx_codeobj__492 __pyx_mstate_global->__pyx_codeobj__492
+#define __pyx_codeobj__493 __pyx_mstate_global->__pyx_codeobj__493
+#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__499 __pyx_mstate_global->__pyx_codeobj__499
+#define __pyx_codeobj__501 __pyx_mstate_global->__pyx_codeobj__501
+#define __pyx_codeobj__503 __pyx_mstate_global->__pyx_codeobj__503
+#define __pyx_codeobj__505 __pyx_mstate_global->__pyx_codeobj__505
+#define __pyx_codeobj__507 __pyx_mstate_global->__pyx_codeobj__507
+#define __pyx_codeobj__508 __pyx_mstate_global->__pyx_codeobj__508
+#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
+#define __pyx_codeobj__516 __pyx_mstate_global->__pyx_codeobj__516
+#define __pyx_codeobj__518 __pyx_mstate_global->__pyx_codeobj__518
+#define __pyx_codeobj__519 __pyx_mstate_global->__pyx_codeobj__519
+#define __pyx_codeobj__520 __pyx_mstate_global->__pyx_codeobj__520
+#define __pyx_codeobj__521 __pyx_mstate_global->__pyx_codeobj__521
+#define __pyx_codeobj__522 __pyx_mstate_global->__pyx_codeobj__522
+#define __pyx_codeobj__523 __pyx_mstate_global->__pyx_codeobj__523
+#define __pyx_codeobj__524 __pyx_mstate_global->__pyx_codeobj__524
+#define __pyx_codeobj__525 __pyx_mstate_global->__pyx_codeobj__525
+#define __pyx_codeobj__526 __pyx_mstate_global->__pyx_codeobj__526
+#define __pyx_codeobj__527 __pyx_mstate_global->__pyx_codeobj__527
+#define __pyx_codeobj__528 __pyx_mstate_global->__pyx_codeobj__528
+#define __pyx_codeobj__529 __pyx_mstate_global->__pyx_codeobj__529
+#define __pyx_codeobj__530 __pyx_mstate_global->__pyx_codeobj__530
+#define __pyx_codeobj__531 __pyx_mstate_global->__pyx_codeobj__531
+#define __pyx_codeobj__532 __pyx_mstate_global->__pyx_codeobj__532
+#define __pyx_codeobj__535 __pyx_mstate_global->__pyx_codeobj__535
+#define __pyx_codeobj__540 __pyx_mstate_global->__pyx_codeobj__540
+#define __pyx_codeobj__541 __pyx_mstate_global->__pyx_codeobj__541
+#define __pyx_codeobj__547 __pyx_mstate_global->__pyx_codeobj__547
+#define __pyx_codeobj__549 __pyx_mstate_global->__pyx_codeobj__549
+#define __pyx_codeobj__551 __pyx_mstate_global->__pyx_codeobj__551
+#define __pyx_codeobj__552 __pyx_mstate_global->__pyx_codeobj__552
+#define __pyx_codeobj__553 __pyx_mstate_global->__pyx_codeobj__553
+#define __pyx_codeobj__555 __pyx_mstate_global->__pyx_codeobj__555
+#define __pyx_codeobj__557 __pyx_mstate_global->__pyx_codeobj__557
+#define __pyx_codeobj__559 __pyx_mstate_global->__pyx_codeobj__559
+#define __pyx_codeobj__563 __pyx_mstate_global->__pyx_codeobj__563
+#define __pyx_codeobj__567 __pyx_mstate_global->__pyx_codeobj__567
+#define __pyx_codeobj__568 __pyx_mstate_global->__pyx_codeobj__568
+#define __pyx_codeobj__569 __pyx_mstate_global->__pyx_codeobj__569
+#define __pyx_codeobj__571 __pyx_mstate_global->__pyx_codeobj__571
+#define __pyx_codeobj__572 __pyx_mstate_global->__pyx_codeobj__572
+#define __pyx_codeobj__573 __pyx_mstate_global->__pyx_codeobj__573
+#define __pyx_codeobj__574 __pyx_mstate_global->__pyx_codeobj__574
+#define __pyx_codeobj__575 __pyx_mstate_global->__pyx_codeobj__575
+/* #### Code section: module_code ### */
+
+/* "cfunc.to_py":67
+ * @cname("__Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg")
+ * cdef object __Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg(object (*f)(_LatentEventArg) ):
+ *     def wrap(_LatentEventArg latent_event_arg):             # <<<<<<<<<<<<<<
+ *         """wrap(latent_event_arg: '_LatentEventArg')"""
+ *         return f(latent_event_arg)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_11cfunc_dot_to_py_91__Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg_1wrap(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_11cfunc_dot_to_py_91__Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg_wrap, "wrap(latent_event_arg: '_LatentEventArg')");
+static PyMethodDef __pyx_mdef_11cfunc_dot_to_py_91__Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg_1wrap = {"wrap", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_11cfunc_dot_to_py_91__Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg_1wrap, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_11cfunc_dot_to_py_91__Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg_wrap};
+static PyObject *__pyx_pw_11cfunc_dot_to_py_91__Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg_1wrap(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
+) {
+  struct __pyx_obj_7_cython_6cygrpc__LatentEventArg *__pyx_v_latent_event_arg = 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("wrap (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_latent_event_arg,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_latent_event_arg)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(10, 67, __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, "wrap") < 0)) __PYX_ERR(10, 67, __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_latent_event_arg = ((struct __pyx_obj_7_cython_6cygrpc__LatentEventArg *)values[0]);
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("wrap", 1, 1, 1, __pyx_nargs); __PYX_ERR(10, 67, __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("cfunc.to_py.__Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg.wrap", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_latent_event_arg), __pyx_ptype_7_cython_6cygrpc__LatentEventArg, 1, "latent_event_arg", 0))) __PYX_ERR(10, 67, __pyx_L1_error)
+  __pyx_r = __pyx_pf_11cfunc_dot_to_py_91__Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg_wrap(__pyx_self, __pyx_v_latent_event_arg);
+
+  /* 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_11cfunc_dot_to_py_91__Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg_wrap(PyObject *__pyx_self, struct __pyx_obj_7_cython_6cygrpc__LatentEventArg *__pyx_v_latent_event_arg) {
+  struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg *__pyx_cur_scope;
+  struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg *__pyx_outer_scope;
+  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("wrap", 1);
+  __pyx_outer_scope = (struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg *) __Pyx_CyFunction_GetClosure(__pyx_self);
+  __pyx_cur_scope = __pyx_outer_scope;
+
+  /* "cfunc.to_py":69
+ *     def wrap(_LatentEventArg latent_event_arg):
+ *         """wrap(latent_event_arg: '_LatentEventArg')"""
+ *         return f(latent_event_arg)             # <<<<<<<<<<<<<<
+ *     return wrap
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_cur_scope->__pyx_v_f(__pyx_v_latent_event_arg); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 69, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "cfunc.to_py":67
+ * @cname("__Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg")
+ * cdef object __Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg(object (*f)(_LatentEventArg) ):
+ *     def wrap(_LatentEventArg latent_event_arg):             # <<<<<<<<<<<<<<
+ *         """wrap(latent_event_arg: '_LatentEventArg')"""
+ *         return f(latent_event_arg)
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("cfunc.to_py.__Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg.wrap", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "cfunc.to_py":66
+ * 
+ * @cname("__Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg")
+ * cdef object __Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg(object (*f)(_LatentEventArg) ):             # <<<<<<<<<<<<<<
+ *     def wrap(_LatentEventArg latent_event_arg):
+ *         """wrap(latent_event_arg: '_LatentEventArg')"""
+ */
+
+static PyObject *__Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg(PyObject *(*__pyx_v_f)(struct __pyx_obj_7_cython_6cygrpc__LatentEventArg *)) {
+  struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg *__pyx_cur_scope;
+  PyObject *__pyx_v_wrap = 0;
+  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_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg", 0);
+  __pyx_cur_scope = (struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg *)__pyx_tp_new___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg(__pyx_ptype___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg, __pyx_empty_tuple, NULL);
+  if (unlikely(!__pyx_cur_scope)) {
+    __pyx_cur_scope = ((struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg *)Py_None);
+    __Pyx_INCREF(Py_None);
+    __PYX_ERR(10, 66, __pyx_L1_error)
+  } else {
+    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+  }
+  __pyx_cur_scope->__pyx_v_f = __pyx_v_f;
+
+  /* "cfunc.to_py":67
+ * @cname("__Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg")
+ * cdef object __Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg(object (*f)(_LatentEventArg) ):
+ *     def wrap(_LatentEventArg latent_event_arg):             # <<<<<<<<<<<<<<
+ *         """wrap(latent_event_arg: '_LatentEventArg')"""
+ *         return f(latent_event_arg)
+ */
+  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_11cfunc_dot_to_py_91__Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg_1wrap, 0, __pyx_n_s_Pyx_CFunc_7_cython_6cygrpc_obj, ((PyObject*)__pyx_cur_scope), __pyx_n_s_cfunc_to_py, __pyx_d, ((PyObject *)__pyx_codeobj__2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 67, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_wrap = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "cfunc.to_py":70
+ *         """wrap(latent_event_arg: '_LatentEventArg')"""
+ *         return f(latent_event_arg)
+ *     return wrap             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_wrap);
+  __pyx_r = __pyx_v_wrap;
+  goto __pyx_L0;
+
+  /* "cfunc.to_py":66
+ * 
+ * @cname("__Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg")
+ * cdef object __Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg(object (*f)(_LatentEventArg) ):             # <<<<<<<<<<<<<<
+ *     def wrap(_LatentEventArg latent_event_arg):
+ *         """wrap(latent_event_arg: '_LatentEventArg')"""
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("cfunc.to_py.__Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_wrap);
+  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+  __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(10, 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(10, 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(10, 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(10, 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(10, 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;
+}
+
+/* "cfunc.to_py":67
+ * @cname("__Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_")
+ * cdef object __Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_(object (*f)() ):
+ *     def wrap():             # <<<<<<<<<<<<<<
+ *         """wrap()"""
+ *         return f()
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_11cfunc_dot_to_py_58__Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py__1wrap(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+PyDoc_STRVAR(__pyx_doc_11cfunc_dot_to_py_58__Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py__wrap, "wrap()");
+static PyMethodDef __pyx_mdef_11cfunc_dot_to_py_58__Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py__1wrap = {"wrap", (PyCFunction)__pyx_pw_11cfunc_dot_to_py_58__Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py__1wrap, METH_NOARGS, __pyx_doc_11cfunc_dot_to_py_58__Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py__wrap};
+static PyObject *__pyx_pw_11cfunc_dot_to_py_58__Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py__1wrap(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("wrap (wrapper)", 0);
+  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+  __pyx_r = __pyx_pf_11cfunc_dot_to_py_58__Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py__wrap(__pyx_self);
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_11cfunc_dot_to_py_58__Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py__wrap(PyObject *__pyx_self) {
+  struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_ *__pyx_cur_scope;
+  struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_ *__pyx_outer_scope;
+  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("wrap", 1);
+  __pyx_outer_scope = (struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_ *) __Pyx_CyFunction_GetClosure(__pyx_self);
+  __pyx_cur_scope = __pyx_outer_scope;
+
+  /* "cfunc.to_py":69
+ *     def wrap():
+ *         """wrap()"""
+ *         return f()             # <<<<<<<<<<<<<<
+ *     return wrap
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_cur_scope->__pyx_v_f(); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 69, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "cfunc.to_py":67
+ * @cname("__Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_")
+ * cdef object __Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_(object (*f)() ):
+ *     def wrap():             # <<<<<<<<<<<<<<
+ *         """wrap()"""
+ *         return f()
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("cfunc.to_py.__Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_.wrap", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "cfunc.to_py":66
+ * 
+ * @cname("__Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_")
+ * cdef object __Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_(object (*f)() ):             # <<<<<<<<<<<<<<
+ *     def wrap():
+ *         """wrap()"""
+ */
+
+static PyObject *__Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_(PyObject *(*__pyx_v_f)(void)) {
+  struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_ *__pyx_cur_scope;
+  PyObject *__pyx_v_wrap = 0;
+  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_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_", 0);
+  __pyx_cur_scope = (struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_ *)__pyx_tp_new___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_(__pyx_ptype___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_, __pyx_empty_tuple, NULL);
+  if (unlikely(!__pyx_cur_scope)) {
+    __pyx_cur_scope = ((struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_ *)Py_None);
+    __Pyx_INCREF(Py_None);
+    __PYX_ERR(10, 66, __pyx_L1_error)
+  } else {
+    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+  }
+  __pyx_cur_scope->__pyx_v_f = __pyx_v_f;
+
+  /* "cfunc.to_py":67
+ * @cname("__Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_")
+ * cdef object __Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_(object (*f)() ):
+ *     def wrap():             # <<<<<<<<<<<<<<
+ *         """wrap()"""
+ *         return f()
+ */
+  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_11cfunc_dot_to_py_58__Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py__1wrap, 0, __pyx_n_s_Pyx_CFunc_7_cython_6cygrpc_obj_2, ((PyObject*)__pyx_cur_scope), __pyx_n_s_cfunc_to_py, __pyx_d, ((PyObject *)__pyx_codeobj__3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 67, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_wrap = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "cfunc.to_py":70
+ *         """wrap()"""
+ *         return f()
+ *     return wrap             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_wrap);
+  __pyx_r = __pyx_v_wrap;
+  goto __pyx_L0;
+
+  /* "cfunc.to_py":66
+ * 
+ * @cname("__Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_")
+ * cdef object __Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_(object (*f)() ):             # <<<<<<<<<<<<<<
+ *     def wrap():
+ *         """wrap()"""
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("cfunc.to_py.__Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_wrap);
+  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "cfunc.to_py":67
+ * @cname("__Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args")
+ * cdef object __Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args(object (*f)(object, tuple) ):
+ *     def wrap(object cb, tuple args):             # <<<<<<<<<<<<<<
+ *         """wrap(cb, args: tuple)"""
+ *         return f(cb, args)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_11cfunc_dot_to_py_86__Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args_1wrap(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_11cfunc_dot_to_py_86__Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args_wrap, "wrap(cb, args: tuple)");
+static PyMethodDef __pyx_mdef_11cfunc_dot_to_py_86__Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args_1wrap = {"wrap", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_11cfunc_dot_to_py_86__Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args_1wrap, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_11cfunc_dot_to_py_86__Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args_wrap};
+static PyObject *__pyx_pw_11cfunc_dot_to_py_86__Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args_1wrap(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_cb = 0;
+  PyObject *__pyx_v_args = 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("wrap (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_cb,&__pyx_n_s_args,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_cb)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(10, 67, __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_args)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(10, 67, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("wrap", 1, 2, 2, 1); __PYX_ERR(10, 67, __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, "wrap") < 0)) __PYX_ERR(10, 67, __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_cb = values[0];
+    __pyx_v_args = ((PyObject*)values[1]);
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("wrap", 1, 2, 2, __pyx_nargs); __PYX_ERR(10, 67, __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("cfunc.to_py.__Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args.wrap", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_args), (&PyTuple_Type), 1, "args", 1))) __PYX_ERR(10, 67, __pyx_L1_error)
+  __pyx_r = __pyx_pf_11cfunc_dot_to_py_86__Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args_wrap(__pyx_self, __pyx_v_cb, __pyx_v_args);
+
+  /* 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_11cfunc_dot_to_py_86__Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args_wrap(PyObject *__pyx_self, PyObject *__pyx_v_cb, PyObject *__pyx_v_args) {
+  struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args *__pyx_cur_scope;
+  struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args *__pyx_outer_scope;
+  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("wrap", 1);
+  __pyx_outer_scope = (struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args *) __Pyx_CyFunction_GetClosure(__pyx_self);
+  __pyx_cur_scope = __pyx_outer_scope;
+
+  /* "cfunc.to_py":69
+ *     def wrap(object cb, tuple args):
+ *         """wrap(cb, args: tuple)"""
+ *         return f(cb, args)             # <<<<<<<<<<<<<<
+ *     return wrap
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_cur_scope->__pyx_v_f(__pyx_v_cb, __pyx_v_args); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 69, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "cfunc.to_py":67
+ * @cname("__Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args")
+ * cdef object __Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args(object (*f)(object, tuple) ):
+ *     def wrap(object cb, tuple args):             # <<<<<<<<<<<<<<
+ *         """wrap(cb, args: tuple)"""
+ *         return f(cb, args)
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("cfunc.to_py.__Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args.wrap", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "cfunc.to_py":66
+ * 
+ * @cname("__Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args")
+ * cdef object __Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args(object (*f)(object, tuple) ):             # <<<<<<<<<<<<<<
+ *     def wrap(object cb, tuple args):
+ *         """wrap(cb, args: tuple)"""
+ */
+
+static PyObject *__Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args(PyObject *(*__pyx_v_f)(PyObject *, PyObject *)) {
+  struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args *__pyx_cur_scope;
+  PyObject *__pyx_v_wrap = 0;
+  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_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args", 0);
+  __pyx_cur_scope = (struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args *)__pyx_tp_new___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args(__pyx_ptype___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args, __pyx_empty_tuple, NULL);
+  if (unlikely(!__pyx_cur_scope)) {
+    __pyx_cur_scope = ((struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args *)Py_None);
+    __Pyx_INCREF(Py_None);
+    __PYX_ERR(10, 66, __pyx_L1_error)
+  } else {
+    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+  }
+  __pyx_cur_scope->__pyx_v_f = __pyx_v_f;
+
+  /* "cfunc.to_py":67
+ * @cname("__Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args")
+ * cdef object __Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args(object (*f)(object, tuple) ):
+ *     def wrap(object cb, tuple args):             # <<<<<<<<<<<<<<
+ *         """wrap(cb, args: tuple)"""
+ *         return f(cb, args)
+ */
+  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_11cfunc_dot_to_py_86__Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args_1wrap, 0, __pyx_n_s_Pyx_CFunc_7_cython_6cygrpc_obj_3, ((PyObject*)__pyx_cur_scope), __pyx_n_s_cfunc_to_py, __pyx_d, ((PyObject *)__pyx_codeobj__5)); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 67, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_wrap = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "cfunc.to_py":70
+ *         """wrap(cb, args: tuple)"""
+ *         return f(cb, args)
+ *     return wrap             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_wrap);
+  __pyx_r = __pyx_v_wrap;
+  goto __pyx_L0;
+
+  /* "cfunc.to_py":66
+ * 
+ * @cname("__Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args")
+ * cdef object __Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args(object (*f)(object, tuple) ):             # <<<<<<<<<<<<<<
+ *     def wrap(object cb, tuple args):
+ *         """wrap(cb, args: tuple)"""
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("cfunc.to_py.__Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_wrap);
+  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "cfunc.to_py":67
+ * @cname("__Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_")
+ * cdef object __Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_(void (*f)() except *):
+ *     def wrap():             # <<<<<<<<<<<<<<
+ *         """wrap() -> 'void'"""
+ *         f()
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_11cfunc_dot_to_py_77__Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py__1wrap(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+PyDoc_STRVAR(__pyx_doc_11cfunc_dot_to_py_77__Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py__wrap, "wrap() -> 'void'");
+static PyMethodDef __pyx_mdef_11cfunc_dot_to_py_77__Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py__1wrap = {"wrap", (PyCFunction)__pyx_pw_11cfunc_dot_to_py_77__Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py__1wrap, METH_NOARGS, __pyx_doc_11cfunc_dot_to_py_77__Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py__wrap};
+static PyObject *__pyx_pw_11cfunc_dot_to_py_77__Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py__1wrap(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("wrap (wrapper)", 0);
+  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+  __pyx_r = __pyx_pf_11cfunc_dot_to_py_77__Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py__wrap(__pyx_self);
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_11cfunc_dot_to_py_77__Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py__wrap(PyObject *__pyx_self) {
+  struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_ *__pyx_cur_scope;
+  struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_ *__pyx_outer_scope;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("wrap", 1);
+  __pyx_outer_scope = (struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_ *) __Pyx_CyFunction_GetClosure(__pyx_self);
+  __pyx_cur_scope = __pyx_outer_scope;
+
+  /* "cfunc.to_py":69
+ *     def wrap():
+ *         """wrap() -> 'void'"""
+ *         f()             # <<<<<<<<<<<<<<
+ *     return wrap
+ * 
+ */
+  __pyx_cur_scope->__pyx_v_f(); if (unlikely(PyErr_Occurred())) __PYX_ERR(10, 69, __pyx_L1_error)
+
+  /* "cfunc.to_py":67
+ * @cname("__Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_")
+ * cdef object __Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_(void (*f)() except *):
+ *     def wrap():             # <<<<<<<<<<<<<<
+ *         """wrap() -> 'void'"""
+ *         f()
+ */
+
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("cfunc.to_py.__Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_.wrap", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "cfunc.to_py":66
+ * 
+ * @cname("__Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_")
+ * cdef object __Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_(void (*f)() except *):             # <<<<<<<<<<<<<<
+ *     def wrap():
+ *         """wrap() -> 'void'"""
+ */
+
+static PyObject *__Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_(void (*__pyx_v_f)(void)) {
+  struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_ *__pyx_cur_scope;
+  PyObject *__pyx_v_wrap = 0;
+  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_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_", 0);
+  __pyx_cur_scope = (struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_ *)__pyx_tp_new___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_(__pyx_ptype___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_, __pyx_empty_tuple, NULL);
+  if (unlikely(!__pyx_cur_scope)) {
+    __pyx_cur_scope = ((struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_ *)Py_None);
+    __Pyx_INCREF(Py_None);
+    __PYX_ERR(10, 66, __pyx_L1_error)
+  } else {
+    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+  }
+  __pyx_cur_scope->__pyx_v_f = __pyx_v_f;
+
+  /* "cfunc.to_py":67
+ * @cname("__Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_")
+ * cdef object __Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_(void (*f)() except *):
+ *     def wrap():             # <<<<<<<<<<<<<<
+ *         """wrap() -> 'void'"""
+ *         f()
+ */
+  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_11cfunc_dot_to_py_77__Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py__1wrap, 0, __pyx_n_s_Pyx_CFunc_7_cython_6cygrpc_voi, ((PyObject*)__pyx_cur_scope), __pyx_n_s_cfunc_to_py, __pyx_d, ((PyObject *)__pyx_codeobj__6)); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 67, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_wrap = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "cfunc.to_py":70
+ *         """wrap() -> 'void'"""
+ *         f()
+ *     return wrap             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_wrap);
+  __pyx_r = __pyx_v_wrap;
+  goto __pyx_L0;
+
+  /* "cfunc.to_py":66
+ * 
+ * @cname("__Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_")
+ * cdef object __Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_(void (*f)() except *):             # <<<<<<<<<<<<<<
+ *     def wrap():
+ *         """wrap() -> 'void'"""
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("cfunc.to_py.__Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_wrap);
+  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+  __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(11, 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(11, 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/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":18
+ * # This function will ascii encode unicode string inputs if necessary.
+ * # In Python3, unicode strings are the default str type.
+ * cdef bytes str_to_bytes(object s):             # <<<<<<<<<<<<<<
+ *   if s is None or isinstance(s, bytes):
+ *     return s
+ */
+
+static PyObject *__pyx_f_7_cython_6cygrpc_str_to_bytes(PyObject *__pyx_v_s) {
+  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;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("str_to_bytes", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":19
+ * # In Python3, unicode strings are the default str type.
+ * cdef bytes str_to_bytes(object s):
+ *   if s is None or isinstance(s, bytes):             # <<<<<<<<<<<<<<
+ *     return s
+ *   elif isinstance(s, unicode):
+ */
+  __pyx_t_2 = (__pyx_v_s == Py_None);
+  if (!__pyx_t_2) {
+  } else {
+    __pyx_t_1 = __pyx_t_2;
+    goto __pyx_L4_bool_binop_done;
+  }
+  __pyx_t_2 = PyBytes_Check(__pyx_v_s); 
+  __pyx_t_1 = __pyx_t_2;
+  __pyx_L4_bool_binop_done:;
+  if (__pyx_t_1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":20
+ * cdef bytes str_to_bytes(object s):
+ *   if s is None or isinstance(s, bytes):
+ *     return s             # <<<<<<<<<<<<<<
+ *   elif isinstance(s, unicode):
+ *     return s.encode('ascii')
+ */
+    __Pyx_XDECREF(__pyx_r);
+    if (!(likely(PyBytes_CheckExact(__pyx_v_s))||((__pyx_v_s) == Py_None) || __Pyx_RaiseUnexpectedTypeError("bytes", __pyx_v_s))) __PYX_ERR(2, 20, __pyx_L1_error)
+    __Pyx_INCREF(__pyx_v_s);
+    __pyx_r = ((PyObject*)__pyx_v_s);
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":19
+ * # In Python3, unicode strings are the default str type.
+ * cdef bytes str_to_bytes(object s):
+ *   if s is None or isinstance(s, bytes):             # <<<<<<<<<<<<<<
+ *     return s
+ *   elif isinstance(s, unicode):
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":21
+ *   if s is None or isinstance(s, bytes):
+ *     return s
+ *   elif isinstance(s, unicode):             # <<<<<<<<<<<<<<
+ *     return s.encode('ascii')
+ *   else:
+ */
+  __pyx_t_1 = PyUnicode_Check(__pyx_v_s); 
+  if (likely(__pyx_t_1)) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":22
+ *     return s
+ *   elif isinstance(s, unicode):
+ *     return s.encode('ascii')             # <<<<<<<<<<<<<<
+ *   else:
+ *     raise TypeError('Expected bytes, str, or unicode, not {}'.format(type(s)))
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_s, __pyx_n_s_encode); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 22, __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_n_s_ascii};
+      __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(2, 22, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    }
+    if (!(likely(PyBytes_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None) || __Pyx_RaiseUnexpectedTypeError("bytes", __pyx_t_3))) __PYX_ERR(2, 22, __pyx_L1_error)
+    __pyx_r = ((PyObject*)__pyx_t_3);
+    __pyx_t_3 = 0;
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":21
+ *   if s is None or isinstance(s, bytes):
+ *     return s
+ *   elif isinstance(s, unicode):             # <<<<<<<<<<<<<<
+ *     return s.encode('ascii')
+ *   else:
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":24
+ *     return s.encode('ascii')
+ *   else:
+ *     raise TypeError('Expected bytes, str, or unicode, not {}'.format(type(s)))             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  /*else*/ {
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_Expected_bytes_str_or_unicode_no, __pyx_n_s_format); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 24, __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_s))};
+      __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(2, 24, __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(2, 24, __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(2, 24, __pyx_L1_error)
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":18
+ * # This function will ascii encode unicode string inputs if necessary.
+ * # In Python3, unicode strings are the default str type.
+ * cdef bytes str_to_bytes(object s):             # <<<<<<<<<<<<<<
+ *   if s is None or isinstance(s, bytes):
+ *     return s
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_AddTraceback("_cython.cygrpc.str_to_bytes", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":32
+ * # parameter rather than "object"), but would it be nice for our users? Right
+ * # now we haven't yet heard from enough users to know one way or another.
+ * cdef bytes _encode(object string_or_none):             # <<<<<<<<<<<<<<
+ *   if string_or_none is None:
+ *     return b''
+ */
+
+static PyObject *__pyx_f_7_cython_6cygrpc__encode(PyObject *__pyx_v_string_or_none) {
+  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;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_encode", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":33
+ * # now we haven't yet heard from enough users to know one way or another.
+ * cdef bytes _encode(object string_or_none):
+ *   if string_or_none is None:             # <<<<<<<<<<<<<<
+ *     return b''
+ *   elif isinstance(string_or_none, (bytes,)):
+ */
+  __pyx_t_1 = (__pyx_v_string_or_none == Py_None);
+  if (__pyx_t_1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":34
+ * cdef bytes _encode(object string_or_none):
+ *   if string_or_none is None:
+ *     return b''             # <<<<<<<<<<<<<<
+ *   elif isinstance(string_or_none, (bytes,)):
+ *     return <bytes>string_or_none
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_INCREF(__pyx_kp_b__7);
+    __pyx_r = __pyx_kp_b__7;
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":33
+ * # now we haven't yet heard from enough users to know one way or another.
+ * cdef bytes _encode(object string_or_none):
+ *   if string_or_none is None:             # <<<<<<<<<<<<<<
+ *     return b''
+ *   elif isinstance(string_or_none, (bytes,)):
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":35
+ *   if string_or_none is None:
+ *     return b''
+ *   elif isinstance(string_or_none, (bytes,)):             # <<<<<<<<<<<<<<
+ *     return <bytes>string_or_none
+ *   elif isinstance(string_or_none, (unicode,)):
+ */
+  __pyx_t_1 = PyBytes_Check(__pyx_v_string_or_none); 
+  if (__pyx_t_1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":36
+ *     return b''
+ *   elif isinstance(string_or_none, (bytes,)):
+ *     return <bytes>string_or_none             # <<<<<<<<<<<<<<
+ *   elif isinstance(string_or_none, (unicode,)):
+ *     return string_or_none.encode('utf8')
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_INCREF(((PyObject*)__pyx_v_string_or_none));
+    __pyx_r = ((PyObject*)__pyx_v_string_or_none);
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":35
+ *   if string_or_none is None:
+ *     return b''
+ *   elif isinstance(string_or_none, (bytes,)):             # <<<<<<<<<<<<<<
+ *     return <bytes>string_or_none
+ *   elif isinstance(string_or_none, (unicode,)):
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":37
+ *   elif isinstance(string_or_none, (bytes,)):
+ *     return <bytes>string_or_none
+ *   elif isinstance(string_or_none, (unicode,)):             # <<<<<<<<<<<<<<
+ *     return string_or_none.encode('utf8')
+ *   else:
+ */
+  __pyx_t_1 = PyUnicode_Check(__pyx_v_string_or_none); 
+  if (likely(__pyx_t_1)) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":38
+ *     return <bytes>string_or_none
+ *   elif isinstance(string_or_none, (unicode,)):
+ *     return string_or_none.encode('utf8')             # <<<<<<<<<<<<<<
+ *   else:
+ *     raise TypeError('Expected str, not {}'.format(type(string_or_none)))
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_string_or_none, __pyx_n_s_encode); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 38, __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_n_s_utf8};
+      __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, 38, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    }
+    if (!(likely(PyBytes_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("bytes", __pyx_t_2))) __PYX_ERR(2, 38, __pyx_L1_error)
+    __pyx_r = ((PyObject*)__pyx_t_2);
+    __pyx_t_2 = 0;
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":37
+ *   elif isinstance(string_or_none, (bytes,)):
+ *     return <bytes>string_or_none
+ *   elif isinstance(string_or_none, (unicode,)):             # <<<<<<<<<<<<<<
+ *     return string_or_none.encode('utf8')
+ *   else:
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":40
+ *     return string_or_none.encode('utf8')
+ *   else:
+ *     raise TypeError('Expected str, not {}'.format(type(string_or_none)))             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  /*else*/ {
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_Expected_str_not, __pyx_n_s_format); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 40, __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, ((PyObject *)Py_TYPE(__pyx_v_string_or_none))};
+      __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, 40, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    }
+    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 40, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __PYX_ERR(2, 40, __pyx_L1_error)
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":32
+ * # parameter rather than "object"), but would it be nice for our users? Right
+ * # now we haven't yet heard from enough users to know one way or another.
+ * cdef bytes _encode(object string_or_none):             # <<<<<<<<<<<<<<
+ *   if string_or_none is None:
+ *     return b''
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("_cython.cygrpc._encode", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":43
+ * 
+ * 
+ * cdef str _decode(bytes bytestring):             # <<<<<<<<<<<<<<
+ *     if isinstance(bytestring, (str,)):
+ *         return <str>bytestring
+ */
+
+static PyObject *__pyx_f_7_cython_6cygrpc__decode(PyObject *__pyx_v_bytestring) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  int __pyx_t_6;
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
+  PyObject *__pyx_t_9 = NULL;
+  PyObject *__pyx_t_10 = NULL;
+  PyObject *__pyx_t_11 = NULL;
+  unsigned int __pyx_t_12;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_decode", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":44
+ * 
+ * cdef str _decode(bytes bytestring):
+ *     if isinstance(bytestring, (str,)):             # <<<<<<<<<<<<<<
+ *         return <str>bytestring
+ *     else:
+ */
+  __pyx_t_1 = PyString_Check(__pyx_v_bytestring); 
+  if (__pyx_t_1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":45
+ * cdef str _decode(bytes bytestring):
+ *     if isinstance(bytestring, (str,)):
+ *         return <str>bytestring             # <<<<<<<<<<<<<<
+ *     else:
+ *         try:
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_INCREF(((PyObject*)__pyx_v_bytestring));
+    __pyx_r = ((PyObject*)__pyx_v_bytestring);
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":44
+ * 
+ * cdef str _decode(bytes bytestring):
+ *     if isinstance(bytestring, (str,)):             # <<<<<<<<<<<<<<
+ *         return <str>bytestring
+ *     else:
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":47
+ *         return <str>bytestring
+ *     else:
+ *         try:             # <<<<<<<<<<<<<<
+ *             return bytestring.decode('utf8')
+ *         except UnicodeDecodeError:
+ */
+  /*else*/ {
+    {
+      __Pyx_PyThreadState_declare
+      __Pyx_PyThreadState_assign
+      __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
+      __Pyx_XGOTREF(__pyx_t_2);
+      __Pyx_XGOTREF(__pyx_t_3);
+      __Pyx_XGOTREF(__pyx_t_4);
+      /*try:*/ {
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":48
+ *     else:
+ *         try:
+ *             return bytestring.decode('utf8')             # <<<<<<<<<<<<<<
+ *         except UnicodeDecodeError:
+ *             _LOGGER.exception('Invalid encoding on %s', bytestring)
+ */
+        __Pyx_XDECREF(__pyx_r);
+        if (unlikely(__pyx_v_bytestring == Py_None)) {
+          PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "decode");
+          __PYX_ERR(2, 48, __pyx_L4_error)
+        }
+        __pyx_t_5 = __Pyx_decode_bytes(__pyx_v_bytestring, 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 48, __pyx_L4_error)
+        __Pyx_GOTREF(__pyx_t_5);
+        if (!(likely(PyString_CheckExact(__pyx_t_5)) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_5))) __PYX_ERR(2, 48, __pyx_L4_error)
+        __pyx_r = ((PyObject*)__pyx_t_5);
+        __pyx_t_5 = 0;
+        goto __pyx_L8_try_return;
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":47
+ *         return <str>bytestring
+ *     else:
+ *         try:             # <<<<<<<<<<<<<<
+ *             return bytestring.decode('utf8')
+ *         except UnicodeDecodeError:
+ */
+      }
+      __pyx_L4_error:;
+      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":49
+ *         try:
+ *             return bytestring.decode('utf8')
+ *         except UnicodeDecodeError:             # <<<<<<<<<<<<<<
+ *             _LOGGER.exception('Invalid encoding on %s', bytestring)
+ *             return bytestring.decode('latin1')
+ */
+      __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_UnicodeDecodeError);
+      if (__pyx_t_6) {
+        __Pyx_AddTraceback("_cython.cygrpc._decode", __pyx_clineno, __pyx_lineno, __pyx_filename);
+        if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_7, &__pyx_t_8) < 0) __PYX_ERR(2, 49, __pyx_L6_except_error)
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_8);
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":50
+ *             return bytestring.decode('utf8')
+ *         except UnicodeDecodeError:
+ *             _LOGGER.exception('Invalid encoding on %s', bytestring)             # <<<<<<<<<<<<<<
+ *             return bytestring.decode('latin1')
+ */
+        __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_LOGGER); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 50, __pyx_L6_except_error)
+        __Pyx_GOTREF(__pyx_t_10);
+        __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_exception); if (unlikely(!__pyx_t_11)) __PYX_ERR(2, 50, __pyx_L6_except_error)
+        __Pyx_GOTREF(__pyx_t_11);
+        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+        __pyx_t_10 = NULL;
+        __pyx_t_12 = 0;
+        #if CYTHON_UNPACK_METHODS
+        if (unlikely(PyMethod_Check(__pyx_t_11))) {
+          __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_11);
+          if (likely(__pyx_t_10)) {
+            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
+            __Pyx_INCREF(__pyx_t_10);
+            __Pyx_INCREF(function);
+            __Pyx_DECREF_SET(__pyx_t_11, function);
+            __pyx_t_12 = 1;
+          }
+        }
+        #endif
+        {
+          PyObject *__pyx_callargs[3] = {__pyx_t_10, __pyx_kp_s_Invalid_encoding_on_s, __pyx_v_bytestring};
+          __pyx_t_9 = __Pyx_PyObject_FastCall(__pyx_t_11, __pyx_callargs+1-__pyx_t_12, 2+__pyx_t_12);
+          __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+          if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 50, __pyx_L6_except_error)
+          __Pyx_GOTREF(__pyx_t_9);
+          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+        }
+        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":51
+ *         except UnicodeDecodeError:
+ *             _LOGGER.exception('Invalid encoding on %s', bytestring)
+ *             return bytestring.decode('latin1')             # <<<<<<<<<<<<<<
+ */
+        __Pyx_XDECREF(__pyx_r);
+        if (unlikely(__pyx_v_bytestring == Py_None)) {
+          PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "decode");
+          __PYX_ERR(2, 51, __pyx_L6_except_error)
+        }
+        __pyx_t_9 = __Pyx_decode_bytes(__pyx_v_bytestring, 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeLatin1); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 51, __pyx_L6_except_error)
+        __Pyx_GOTREF(__pyx_t_9);
+        if (!(likely(PyString_CheckExact(__pyx_t_9)) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_9))) __PYX_ERR(2, 51, __pyx_L6_except_error)
+        __pyx_r = ((PyObject*)__pyx_t_9);
+        __pyx_t_9 = 0;
+        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+        goto __pyx_L7_except_return;
+      }
+      goto __pyx_L6_except_error;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":47
+ *         return <str>bytestring
+ *     else:
+ *         try:             # <<<<<<<<<<<<<<
+ *             return bytestring.decode('utf8')
+ *         except UnicodeDecodeError:
+ */
+      __pyx_L6_except_error:;
+      __Pyx_XGIVEREF(__pyx_t_2);
+      __Pyx_XGIVEREF(__pyx_t_3);
+      __Pyx_XGIVEREF(__pyx_t_4);
+      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
+      goto __pyx_L1_error;
+      __pyx_L8_try_return:;
+      __Pyx_XGIVEREF(__pyx_t_2);
+      __Pyx_XGIVEREF(__pyx_t_3);
+      __Pyx_XGIVEREF(__pyx_t_4);
+      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
+      goto __pyx_L0;
+      __pyx_L7_except_return:;
+      __Pyx_XGIVEREF(__pyx_t_2);
+      __Pyx_XGIVEREF(__pyx_t_3);
+      __Pyx_XGIVEREF(__pyx_t_4);
+      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
+      goto __pyx_L0;
+    }
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":43
+ * 
+ * 
+ * cdef str _decode(bytes bytestring):             # <<<<<<<<<<<<<<
+ *     if isinstance(bytestring, (str,)):
+ *         return <str>bytestring
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("_cython.cygrpc._decode", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "(tree fragment)":1
+ * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
+ *     raise TypeError, "self.arg cannot be converted to a Python object for pickling"
+ * def __setstate_cython__(self, __pyx_state):
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_15_GrpcArgWrapper_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_15_GrpcArgWrapper_1__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_15_GrpcArgWrapper_1__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_15_GrpcArgWrapper_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_7_cython_6cygrpc_15_GrpcArgWrapper___reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc__GrpcArgWrapper *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_15_GrpcArgWrapper___reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__GrpcArgWrapper *__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.arg cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
+ * def __setstate_cython__(self, __pyx_state):
+ *     raise TypeError, "self.arg cannot be converted to a Python object for pickling"
+ */
+  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self_arg_cannot_be_converted_to, 0, 0);
+  __PYX_ERR(10, 2, __pyx_L1_error)
+
+  /* "(tree fragment)":1
+ * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
+ *     raise TypeError, "self.arg cannot be converted to a Python object for pickling"
+ * def __setstate_cython__(self, __pyx_state):
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc._GrpcArgWrapper.__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.arg cannot be converted to a Python object for pickling"
+ * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
+ *     raise TypeError, "self.arg cannot be converted to a Python object for pickling"
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_15_GrpcArgWrapper_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_15_GrpcArgWrapper_3__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_15_GrpcArgWrapper_3__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_15_GrpcArgWrapper_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
+) {
+  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(10, 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(10, 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(10, 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("_cython.cygrpc._GrpcArgWrapper.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_15_GrpcArgWrapper_2__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc__GrpcArgWrapper *)__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_7_cython_6cygrpc_15_GrpcArgWrapper_2__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__GrpcArgWrapper *__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.arg cannot be converted to a Python object for pickling"
+ * def __setstate_cython__(self, __pyx_state):
+ *     raise TypeError, "self.arg cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
+ */
+  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self_arg_cannot_be_converted_to, 0, 0);
+  __PYX_ERR(10, 4, __pyx_L1_error)
+
+  /* "(tree fragment)":3
+ * def __reduce_cython__(self):
+ *     raise TypeError, "self.arg cannot be converted to a Python object for pickling"
+ * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
+ *     raise TypeError, "self.arg cannot be converted to a Python object for pickling"
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc._GrpcArgWrapper.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":21
+ * 
+ * 
+ * cdef tuple _wrap_grpc_arg(grpc_arg arg):             # <<<<<<<<<<<<<<
+ *   wrapped = _GrpcArgWrapper()
+ *   wrapped.arg = arg
+ */
+
+static PyObject *__pyx_f_7_cython_6cygrpc__wrap_grpc_arg(grpc_arg __pyx_v_arg) {
+  struct __pyx_obj_7_cython_6cygrpc__GrpcArgWrapper *__pyx_v_wrapped = 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("_wrap_grpc_arg", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":22
+ * 
+ * cdef tuple _wrap_grpc_arg(grpc_arg arg):
+ *   wrapped = _GrpcArgWrapper()             # <<<<<<<<<<<<<<
+ *   wrapped.arg = arg
+ *   return ("grpc.python._cygrpc._GrpcArgWrapper", wrapped)
+ */
+  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_7_cython_6cygrpc__GrpcArgWrapper)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 22, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_wrapped = ((struct __pyx_obj_7_cython_6cygrpc__GrpcArgWrapper *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":23
+ * cdef tuple _wrap_grpc_arg(grpc_arg arg):
+ *   wrapped = _GrpcArgWrapper()
+ *   wrapped.arg = arg             # <<<<<<<<<<<<<<
+ *   return ("grpc.python._cygrpc._GrpcArgWrapper", wrapped)
+ * 
+ */
+  __pyx_v_wrapped->arg = __pyx_v_arg;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":24
+ *   wrapped = _GrpcArgWrapper()
+ *   wrapped.arg = arg
+ *   return ("grpc.python._cygrpc._GrpcArgWrapper", wrapped)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 24, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(__pyx_kp_s_grpc_python__cygrpc__GrpcArgWrap);
+  __Pyx_GIVEREF(__pyx_kp_s_grpc_python__cygrpc__GrpcArgWrap);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_s_grpc_python__cygrpc__GrpcArgWrap)) __PYX_ERR(3, 24, __pyx_L1_error);
+  __Pyx_INCREF((PyObject *)__pyx_v_wrapped);
+  __Pyx_GIVEREF((PyObject *)__pyx_v_wrapped);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_wrapped))) __PYX_ERR(3, 24, __pyx_L1_error);
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":21
+ * 
+ * 
+ * cdef tuple _wrap_grpc_arg(grpc_arg arg):             # <<<<<<<<<<<<<<
+ *   wrapped = _GrpcArgWrapper()
+ *   wrapped.arg = arg
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc._wrap_grpc_arg", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_wrapped);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":27
+ * 
+ * 
+ * cdef grpc_arg _unwrap_grpc_arg(tuple wrapped_arg):             # <<<<<<<<<<<<<<
+ *   cdef _GrpcArgWrapper wrapped = wrapped_arg[1]
+ *   return wrapped.arg
+ */
+
+static grpc_arg __pyx_f_7_cython_6cygrpc__unwrap_grpc_arg(PyObject *__pyx_v_wrapped_arg) {
+  struct __pyx_obj_7_cython_6cygrpc__GrpcArgWrapper *__pyx_v_wrapped = 0;
+  grpc_arg __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_unwrap_grpc_arg", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":28
+ * 
+ * cdef grpc_arg _unwrap_grpc_arg(tuple wrapped_arg):
+ *   cdef _GrpcArgWrapper wrapped = wrapped_arg[1]             # <<<<<<<<<<<<<<
+ *   return wrapped.arg
+ * 
+ */
+  if (unlikely(__pyx_v_wrapped_arg == Py_None)) {
+    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+    __PYX_ERR(3, 28, __pyx_L1_error)
+  }
+  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v_wrapped_arg, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 28, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_7_cython_6cygrpc__GrpcArgWrapper))))) __PYX_ERR(3, 28, __pyx_L1_error)
+  __pyx_v_wrapped = ((struct __pyx_obj_7_cython_6cygrpc__GrpcArgWrapper *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":29
+ * cdef grpc_arg _unwrap_grpc_arg(tuple wrapped_arg):
+ *   cdef _GrpcArgWrapper wrapped = wrapped_arg[1]
+ *   return wrapped.arg             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_r = __pyx_v_wrapped->arg;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":27
+ * 
+ * 
+ * cdef grpc_arg _unwrap_grpc_arg(tuple wrapped_arg):             # <<<<<<<<<<<<<<
+ *   cdef _GrpcArgWrapper wrapped = wrapped_arg[1]
+ *   return wrapped.arg
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc._unwrap_grpc_arg", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_pretend_to_initialize(&__pyx_r);
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_wrapped);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":34
+ * cdef class _ChannelArg:
+ * 
+ *   cdef void c(self, argument, references) except *:             # <<<<<<<<<<<<<<
+ *     key, value = argument
+ *     cdef bytes encoded_key = _encode(key)
+ */
+
+static void __pyx_f_7_cython_6cygrpc_11_ChannelArg_c(struct __pyx_obj_7_cython_6cygrpc__ChannelArg *__pyx_v_self, PyObject *__pyx_v_argument, PyObject *__pyx_v_references) {
+  PyObject *__pyx_v_key = NULL;
+  PyObject *__pyx_v_value = NULL;
+  PyObject *__pyx_v_encoded_key = 0;
+  PyObject *__pyx_v_encoded_value = NULL;
+  __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;
+  char *__pyx_t_7;
+  int __pyx_t_8;
+  int __pyx_t_9;
+  grpc_arg __pyx_t_10;
+  __pyx_t_7_cython_6cygrpc_intptr_t __pyx_t_11;
+  unsigned int __pyx_t_12;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("c", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":35
+ * 
+ *   cdef void c(self, argument, references) except *:
+ *     key, value = argument             # <<<<<<<<<<<<<<
+ *     cdef bytes encoded_key = _encode(key)
+ *     if encoded_key is not key:
+ */
+  if ((likely(PyTuple_CheckExact(__pyx_v_argument))) || (PyList_CheckExact(__pyx_v_argument))) {
+    PyObject* sequence = __pyx_v_argument;
+    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(3, 35, __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(3, 35, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 35, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    #endif
+  } else {
+    Py_ssize_t index = -1;
+    __pyx_t_3 = PyObject_GetIter(__pyx_v_argument); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 35, __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(3, 35, __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(3, 35, __pyx_L1_error)
+    __pyx_L4_unpacking_done:;
+  }
+  __pyx_v_key = __pyx_t_1;
+  __pyx_t_1 = 0;
+  __pyx_v_value = __pyx_t_2;
+  __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":36
+ *   cdef void c(self, argument, references) except *:
+ *     key, value = argument
+ *     cdef bytes encoded_key = _encode(key)             # <<<<<<<<<<<<<<
+ *     if encoded_key is not key:
+ *       references.append(encoded_key)
+ */
+  __pyx_t_2 = __pyx_f_7_cython_6cygrpc__encode(__pyx_v_key); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 36, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_v_encoded_key = ((PyObject*)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":37
+ *     key, value = argument
+ *     cdef bytes encoded_key = _encode(key)
+ *     if encoded_key is not key:             # <<<<<<<<<<<<<<
+ *       references.append(encoded_key)
+ *     self.c_argument.key = encoded_key
+ */
+  __pyx_t_5 = (__pyx_v_encoded_key != ((PyObject*)__pyx_v_key));
+  if (__pyx_t_5) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":38
+ *     cdef bytes encoded_key = _encode(key)
+ *     if encoded_key is not key:
+ *       references.append(encoded_key)             # <<<<<<<<<<<<<<
+ *     self.c_argument.key = encoded_key
+ *     if isinstance(value, int):
+ */
+    __pyx_t_6 = __Pyx_PyObject_Append(__pyx_v_references, __pyx_v_encoded_key); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(3, 38, __pyx_L1_error)
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":37
+ *     key, value = argument
+ *     cdef bytes encoded_key = _encode(key)
+ *     if encoded_key is not key:             # <<<<<<<<<<<<<<
+ *       references.append(encoded_key)
+ *     self.c_argument.key = encoded_key
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":39
+ *     if encoded_key is not key:
+ *       references.append(encoded_key)
+ *     self.c_argument.key = encoded_key             # <<<<<<<<<<<<<<
+ *     if isinstance(value, int):
+ *       self.c_argument.type = GRPC_ARG_INTEGER
+ */
+  if (unlikely(__pyx_v_encoded_key == Py_None)) {
+    PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
+    __PYX_ERR(3, 39, __pyx_L1_error)
+  }
+  __pyx_t_7 = __Pyx_PyBytes_AsWritableString(__pyx_v_encoded_key); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(3, 39, __pyx_L1_error)
+  __pyx_v_self->c_argument.key = __pyx_t_7;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":40
+ *       references.append(encoded_key)
+ *     self.c_argument.key = encoded_key
+ *     if isinstance(value, int):             # <<<<<<<<<<<<<<
+ *       self.c_argument.type = GRPC_ARG_INTEGER
+ *       self.c_argument.value.integer = value
+ */
+  __pyx_t_5 = PyInt_Check(__pyx_v_value); 
+  if (__pyx_t_5) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":41
+ *     self.c_argument.key = encoded_key
+ *     if isinstance(value, int):
+ *       self.c_argument.type = GRPC_ARG_INTEGER             # <<<<<<<<<<<<<<
+ *       self.c_argument.value.integer = value
+ *     elif isinstance(value, (bytes, str, unicode,)):
+ */
+    __pyx_v_self->c_argument.type = GRPC_ARG_INTEGER;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":42
+ *     if isinstance(value, int):
+ *       self.c_argument.type = GRPC_ARG_INTEGER
+ *       self.c_argument.value.integer = value             # <<<<<<<<<<<<<<
+ *     elif isinstance(value, (bytes, str, unicode,)):
+ *       self.c_argument.type = GRPC_ARG_STRING
+ */
+    __pyx_t_8 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 42, __pyx_L1_error)
+    __pyx_v_self->c_argument.value.integer = __pyx_t_8;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":40
+ *       references.append(encoded_key)
+ *     self.c_argument.key = encoded_key
+ *     if isinstance(value, int):             # <<<<<<<<<<<<<<
+ *       self.c_argument.type = GRPC_ARG_INTEGER
+ *       self.c_argument.value.integer = value
+ */
+    goto __pyx_L6;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":43
+ *       self.c_argument.type = GRPC_ARG_INTEGER
+ *       self.c_argument.value.integer = value
+ *     elif isinstance(value, (bytes, str, unicode,)):             # <<<<<<<<<<<<<<
+ *       self.c_argument.type = GRPC_ARG_STRING
+ *       encoded_value = _encode(value)
+ */
+  __pyx_t_9 = PyBytes_Check(__pyx_v_value); 
+  if (!__pyx_t_9) {
+  } else {
+    __pyx_t_5 = __pyx_t_9;
+    goto __pyx_L7_bool_binop_done;
+  }
+  __pyx_t_9 = PyString_Check(__pyx_v_value); 
+  if (!__pyx_t_9) {
+  } else {
+    __pyx_t_5 = __pyx_t_9;
+    goto __pyx_L7_bool_binop_done;
+  }
+  __pyx_t_9 = PyUnicode_Check(__pyx_v_value); 
+  __pyx_t_5 = __pyx_t_9;
+  __pyx_L7_bool_binop_done:;
+  if (__pyx_t_5) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":44
+ *       self.c_argument.value.integer = value
+ *     elif isinstance(value, (bytes, str, unicode,)):
+ *       self.c_argument.type = GRPC_ARG_STRING             # <<<<<<<<<<<<<<
+ *       encoded_value = _encode(value)
+ *       if encoded_value is not value:
+ */
+    __pyx_v_self->c_argument.type = GRPC_ARG_STRING;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":45
+ *     elif isinstance(value, (bytes, str, unicode,)):
+ *       self.c_argument.type = GRPC_ARG_STRING
+ *       encoded_value = _encode(value)             # <<<<<<<<<<<<<<
+ *       if encoded_value is not value:
+ *         references.append(encoded_value)
+ */
+    __pyx_t_2 = __pyx_f_7_cython_6cygrpc__encode(__pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 45, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_v_encoded_value = ((PyObject*)__pyx_t_2);
+    __pyx_t_2 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":46
+ *       self.c_argument.type = GRPC_ARG_STRING
+ *       encoded_value = _encode(value)
+ *       if encoded_value is not value:             # <<<<<<<<<<<<<<
+ *         references.append(encoded_value)
+ *       self.c_argument.value.string = encoded_value
+ */
+    __pyx_t_5 = (__pyx_v_encoded_value != ((PyObject*)__pyx_v_value));
+    if (__pyx_t_5) {
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":47
+ *       encoded_value = _encode(value)
+ *       if encoded_value is not value:
+ *         references.append(encoded_value)             # <<<<<<<<<<<<<<
+ *       self.c_argument.value.string = encoded_value
+ *     elif isinstance(value, _GrpcArgWrapper):
+ */
+      __pyx_t_6 = __Pyx_PyObject_Append(__pyx_v_references, __pyx_v_encoded_value); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(3, 47, __pyx_L1_error)
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":46
+ *       self.c_argument.type = GRPC_ARG_STRING
+ *       encoded_value = _encode(value)
+ *       if encoded_value is not value:             # <<<<<<<<<<<<<<
+ *         references.append(encoded_value)
+ *       self.c_argument.value.string = encoded_value
+ */
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":48
+ *       if encoded_value is not value:
+ *         references.append(encoded_value)
+ *       self.c_argument.value.string = encoded_value             # <<<<<<<<<<<<<<
+ *     elif isinstance(value, _GrpcArgWrapper):
+ *       self.c_argument = (<_GrpcArgWrapper>value).arg
+ */
+    if (unlikely(__pyx_v_encoded_value == Py_None)) {
+      PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
+      __PYX_ERR(3, 48, __pyx_L1_error)
+    }
+    __pyx_t_7 = __Pyx_PyBytes_AsWritableString(__pyx_v_encoded_value); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(3, 48, __pyx_L1_error)
+    __pyx_v_self->c_argument.value.string = __pyx_t_7;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":43
+ *       self.c_argument.type = GRPC_ARG_INTEGER
+ *       self.c_argument.value.integer = value
+ *     elif isinstance(value, (bytes, str, unicode,)):             # <<<<<<<<<<<<<<
+ *       self.c_argument.type = GRPC_ARG_STRING
+ *       encoded_value = _encode(value)
+ */
+    goto __pyx_L6;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":49
+ *         references.append(encoded_value)
+ *       self.c_argument.value.string = encoded_value
+ *     elif isinstance(value, _GrpcArgWrapper):             # <<<<<<<<<<<<<<
+ *       self.c_argument = (<_GrpcArgWrapper>value).arg
+ *     elif hasattr(value, '__int__'):
+ */
+  __pyx_t_5 = __Pyx_TypeCheck(__pyx_v_value, __pyx_ptype_7_cython_6cygrpc__GrpcArgWrapper); 
+  if (__pyx_t_5) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":50
+ *       self.c_argument.value.string = encoded_value
+ *     elif isinstance(value, _GrpcArgWrapper):
+ *       self.c_argument = (<_GrpcArgWrapper>value).arg             # <<<<<<<<<<<<<<
+ *     elif hasattr(value, '__int__'):
+ *       # Pointer objects must override __int__() to return
+ */
+    __pyx_t_10 = ((struct __pyx_obj_7_cython_6cygrpc__GrpcArgWrapper *)__pyx_v_value)->arg;
+    __pyx_v_self->c_argument = __pyx_t_10;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":49
+ *         references.append(encoded_value)
+ *       self.c_argument.value.string = encoded_value
+ *     elif isinstance(value, _GrpcArgWrapper):             # <<<<<<<<<<<<<<
+ *       self.c_argument = (<_GrpcArgWrapper>value).arg
+ *     elif hasattr(value, '__int__'):
+ */
+    goto __pyx_L6;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":51
+ *     elif isinstance(value, _GrpcArgWrapper):
+ *       self.c_argument = (<_GrpcArgWrapper>value).arg
+ *     elif hasattr(value, '__int__'):             # <<<<<<<<<<<<<<
+ *       # Pointer objects must override __int__() to return
+ *       # the underlying C address (Python ints are word size). The
+ */
+  __pyx_t_5 = __Pyx_HasAttr(__pyx_v_value, __pyx_n_s_int); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(3, 51, __pyx_L1_error)
+  if (likely(__pyx_t_5)) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":56
+ *       # lifecycle of the pointer is fixed to the lifecycle of the
+ *       # python object wrapping it.
+ *       self.c_argument.type = GRPC_ARG_POINTER             # <<<<<<<<<<<<<<
+ *       self.c_argument.value.pointer.vtable = &default_vtable
+ *       self.c_argument.value.pointer.address = <void*>(<intptr_t>int(value))
+ */
+    __pyx_v_self->c_argument.type = GRPC_ARG_POINTER;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":57
+ *       # python object wrapping it.
+ *       self.c_argument.type = GRPC_ARG_POINTER
+ *       self.c_argument.value.pointer.vtable = &default_vtable             # <<<<<<<<<<<<<<
+ *       self.c_argument.value.pointer.address = <void*>(<intptr_t>int(value))
+ *     else:
+ */
+    __pyx_v_self->c_argument.value.pointer.vtable = (&__pyx_v_7_cython_6cygrpc_default_vtable);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":58
+ *       self.c_argument.type = GRPC_ARG_POINTER
+ *       self.c_argument.value.pointer.vtable = &default_vtable
+ *       self.c_argument.value.pointer.address = <void*>(<intptr_t>int(value))             # <<<<<<<<<<<<<<
+ *     else:
+ *       raise TypeError(
+ */
+    __pyx_t_2 = __Pyx_PyNumber_Int(__pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 58, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_11 = PyInt_AsSsize_t(__pyx_t_2); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(3, 58, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_v_self->c_argument.value.pointer.p = ((void *)((__pyx_t_7_cython_6cygrpc_intptr_t)__pyx_t_11));
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":51
+ *     elif isinstance(value, _GrpcArgWrapper):
+ *       self.c_argument = (<_GrpcArgWrapper>value).arg
+ *     elif hasattr(value, '__int__'):             # <<<<<<<<<<<<<<
+ *       # Pointer objects must override __int__() to return
+ *       # the underlying C address (Python ints are word size). The
+ */
+    goto __pyx_L6;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":60
+ *       self.c_argument.value.pointer.address = <void*>(<intptr_t>int(value))
+ *     else:
+ *       raise TypeError(             # <<<<<<<<<<<<<<
+ *           'Expected int, bytes, or behavior, got {}'.format(type(value)))
+ * 
+ */
+  /*else*/ {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":61
+ *     else:
+ *       raise TypeError(
+ *           'Expected int, bytes, or behavior, got {}'.format(type(value)))             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_Expected_int_bytes_or_behavior_g, __pyx_n_s_format); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 61, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_3 = NULL;
+    __pyx_t_12 = 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_12 = 1;
+      }
+    }
+    #endif
+    {
+      PyObject *__pyx_callargs[2] = {__pyx_t_3, ((PyObject *)Py_TYPE(__pyx_v_value))};
+      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_12, 1+__pyx_t_12);
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 61, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":60
+ *       self.c_argument.value.pointer.address = <void*>(<intptr_t>int(value))
+ *     else:
+ *       raise TypeError(             # <<<<<<<<<<<<<<
+ *           'Expected int, bytes, or behavior, got {}'.format(type(value)))
+ * 
+ */
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 60, __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(3, 60, __pyx_L1_error)
+  }
+  __pyx_L6:;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":34
+ * cdef class _ChannelArg:
+ * 
+ *   cdef void c(self, argument, references) except *:             # <<<<<<<<<<<<<<
+ *     key, value = argument
+ *     cdef bytes encoded_key = _encode(key)
+ */
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("_cython.cygrpc._ChannelArg.c", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_key);
+  __Pyx_XDECREF(__pyx_v_value);
+  __Pyx_XDECREF(__pyx_v_encoded_key);
+  __Pyx_XDECREF(__pyx_v_encoded_value);
+  __Pyx_RefNannyFinishContext();
+}
+
+/* "(tree fragment)":1
+ * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
+ *     raise TypeError, "self.c_argument cannot be converted to a Python object for pickling"
+ * def __setstate_cython__(self, __pyx_state):
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_11_ChannelArg_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_11_ChannelArg_1__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_11_ChannelArg_1__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_11_ChannelArg_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_7_cython_6cygrpc_11_ChannelArg___reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc__ChannelArg *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_11_ChannelArg___reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__ChannelArg *__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.c_argument cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
+ * def __setstate_cython__(self, __pyx_state):
+ *     raise TypeError, "self.c_argument cannot be converted to a Python object for pickling"
+ */
+  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self_c_argument_cannot_be_conver, 0, 0);
+  __PYX_ERR(10, 2, __pyx_L1_error)
+
+  /* "(tree fragment)":1
+ * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
+ *     raise TypeError, "self.c_argument cannot be converted to a Python object for pickling"
+ * def __setstate_cython__(self, __pyx_state):
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc._ChannelArg.__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.c_argument cannot be converted to a Python object for pickling"
+ * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
+ *     raise TypeError, "self.c_argument cannot be converted to a Python object for pickling"
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_11_ChannelArg_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_11_ChannelArg_3__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_11_ChannelArg_3__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_11_ChannelArg_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
+) {
+  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(10, 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(10, 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(10, 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("_cython.cygrpc._ChannelArg.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_11_ChannelArg_2__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc__ChannelArg *)__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_7_cython_6cygrpc_11_ChannelArg_2__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__ChannelArg *__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.c_argument cannot be converted to a Python object for pickling"
+ * def __setstate_cython__(self, __pyx_state):
+ *     raise TypeError, "self.c_argument cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
+ */
+  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self_c_argument_cannot_be_conver, 0, 0);
+  __PYX_ERR(10, 4, __pyx_L1_error)
+
+  /* "(tree fragment)":3
+ * def __reduce_cython__(self):
+ *     raise TypeError, "self.c_argument cannot be converted to a Python object for pickling"
+ * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
+ *     raise TypeError, "self.c_argument cannot be converted to a Python object for pickling"
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc._ChannelArg.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":66
+ * cdef class _ChannelArgs:
+ * 
+ *   def __cinit__(self, arguments):             # <<<<<<<<<<<<<<
+ *     self._arguments = () if arguments is None else tuple(arguments)
+ *     self._channel_args = []
+ */
+
+/* Python wrapper */
+static int __pyx_pw_7_cython_6cygrpc_12_ChannelArgs_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_7_cython_6cygrpc_12_ChannelArgs_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_arguments = 0;
+  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject* values[1] = {0};
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  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);
+  {
+    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_arguments,0};
+    if (__pyx_kwds) {
+      Py_ssize_t kw_args;
+      switch (__pyx_nargs) {
+        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
+      switch (__pyx_nargs) {
+        case  0:
+        if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_arguments)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 66, __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, "__cinit__") < 0)) __PYX_ERR(3, 66, __pyx_L3_error)
+      }
+    } else if (unlikely(__pyx_nargs != 1)) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+    }
+    __pyx_v_arguments = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, __pyx_nargs); __PYX_ERR(3, 66, __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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_AddTraceback("_cython.cygrpc._ChannelArgs.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_12_ChannelArgs___cinit__(((struct __pyx_obj_7_cython_6cygrpc__ChannelArgs *)__pyx_v_self), __pyx_v_arguments);
+
+  /* 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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_7_cython_6cygrpc_12_ChannelArgs___cinit__(struct __pyx_obj_7_cython_6cygrpc__ChannelArgs *__pyx_v_self, PyObject *__pyx_v_arguments) {
+  PyObject *__pyx_v_index = NULL;
+  PyObject *__pyx_v_argument = NULL;
+  struct __pyx_obj_7_cython_6cygrpc__ChannelArg *__pyx_v_channel_arg = NULL;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  Py_ssize_t __pyx_t_4;
+  PyObject *__pyx_t_5 = NULL;
+  grpc_arg __pyx_t_6;
+  Py_ssize_t __pyx_t_7;
+  int __pyx_t_8;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__cinit__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":67
+ * 
+ *   def __cinit__(self, arguments):
+ *     self._arguments = () if arguments is None else tuple(arguments)             # <<<<<<<<<<<<<<
+ *     self._channel_args = []
+ *     self._references = []
+ */
+  __pyx_t_2 = (__pyx_v_arguments == Py_None);
+  if (__pyx_t_2) {
+    __Pyx_INCREF(__pyx_empty_tuple);
+    __pyx_t_1 = __pyx_empty_tuple;
+  } else {
+    __pyx_t_3 = __Pyx_PySequence_Tuple(__pyx_v_arguments); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 67, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_1 = __pyx_t_3;
+    __pyx_t_3 = 0;
+  }
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->_arguments);
+  __Pyx_DECREF(__pyx_v_self->_arguments);
+  __pyx_v_self->_arguments = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":68
+ *   def __cinit__(self, arguments):
+ *     self._arguments = () if arguments is None else tuple(arguments)
+ *     self._channel_args = []             # <<<<<<<<<<<<<<
+ *     self._references = []
+ *     self._c_arguments.arguments_length = len(self._arguments)
+ */
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 68, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->_channel_args);
+  __Pyx_DECREF(__pyx_v_self->_channel_args);
+  __pyx_v_self->_channel_args = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":69
+ *     self._arguments = () if arguments is None else tuple(arguments)
+ *     self._channel_args = []
+ *     self._references = []             # <<<<<<<<<<<<<<
+ *     self._c_arguments.arguments_length = len(self._arguments)
+ *     if self._c_arguments.arguments_length != 0:
+ */
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 69, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->_references);
+  __Pyx_DECREF(__pyx_v_self->_references);
+  __pyx_v_self->_references = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":70
+ *     self._channel_args = []
+ *     self._references = []
+ *     self._c_arguments.arguments_length = len(self._arguments)             # <<<<<<<<<<<<<<
+ *     if self._c_arguments.arguments_length != 0:
+ *       self._c_arguments.arguments = <grpc_arg *>gpr_malloc(
+ */
+  __pyx_t_1 = __pyx_v_self->_arguments;
+  __Pyx_INCREF(__pyx_t_1);
+  if (unlikely(__pyx_t_1 == Py_None)) {
+    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
+    __PYX_ERR(3, 70, __pyx_L1_error)
+  }
+  __pyx_t_4 = __Pyx_PyTuple_GET_SIZE(__pyx_t_1); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(3, 70, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_v_self->_c_arguments.num_args = __pyx_t_4;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":71
+ *     self._references = []
+ *     self._c_arguments.arguments_length = len(self._arguments)
+ *     if self._c_arguments.arguments_length != 0:             # <<<<<<<<<<<<<<
+ *       self._c_arguments.arguments = <grpc_arg *>gpr_malloc(
+ *           self._c_arguments.arguments_length * sizeof(grpc_arg))
+ */
+  __pyx_t_2 = (__pyx_v_self->_c_arguments.num_args != 0);
+  if (__pyx_t_2) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":72
+ *     self._c_arguments.arguments_length = len(self._arguments)
+ *     if self._c_arguments.arguments_length != 0:
+ *       self._c_arguments.arguments = <grpc_arg *>gpr_malloc(             # <<<<<<<<<<<<<<
+ *           self._c_arguments.arguments_length * sizeof(grpc_arg))
+ *       for index, argument in enumerate(self._arguments):
+ */
+    __pyx_v_self->_c_arguments.args = ((grpc_arg *)gpr_malloc((__pyx_v_self->_c_arguments.num_args * (sizeof(grpc_arg)))));
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":74
+ *       self._c_arguments.arguments = <grpc_arg *>gpr_malloc(
+ *           self._c_arguments.arguments_length * sizeof(grpc_arg))
+ *       for index, argument in enumerate(self._arguments):             # <<<<<<<<<<<<<<
+ *         channel_arg = _ChannelArg()
+ *         channel_arg.c(argument, self._references)
+ */
+    __Pyx_INCREF(__pyx_int_0);
+    __pyx_t_1 = __pyx_int_0;
+    __pyx_t_3 = __pyx_v_self->_arguments; __Pyx_INCREF(__pyx_t_3);
+    __pyx_t_4 = 0;
+    for (;;) {
+      {
+        Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_3);
+        #if !CYTHON_ASSUME_SAFE_MACROS
+        if (unlikely((__pyx_temp < 0))) __PYX_ERR(3, 74, __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(3, 74, __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(3, 74, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_5);
+      #endif
+      __Pyx_XDECREF_SET(__pyx_v_argument, __pyx_t_5);
+      __pyx_t_5 = 0;
+      __Pyx_INCREF(__pyx_t_1);
+      __Pyx_XDECREF_SET(__pyx_v_index, __pyx_t_1);
+      __pyx_t_5 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 74, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_5);
+      __Pyx_DECREF(__pyx_t_1);
+      __pyx_t_1 = __pyx_t_5;
+      __pyx_t_5 = 0;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":75
+ *           self._c_arguments.arguments_length * sizeof(grpc_arg))
+ *       for index, argument in enumerate(self._arguments):
+ *         channel_arg = _ChannelArg()             # <<<<<<<<<<<<<<
+ *         channel_arg.c(argument, self._references)
+ *         self._c_arguments.arguments[index] = channel_arg.c_argument
+ */
+      __pyx_t_5 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_7_cython_6cygrpc__ChannelArg)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 75, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_5);
+      __Pyx_XDECREF_SET(__pyx_v_channel_arg, ((struct __pyx_obj_7_cython_6cygrpc__ChannelArg *)__pyx_t_5));
+      __pyx_t_5 = 0;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":76
+ *       for index, argument in enumerate(self._arguments):
+ *         channel_arg = _ChannelArg()
+ *         channel_arg.c(argument, self._references)             # <<<<<<<<<<<<<<
+ *         self._c_arguments.arguments[index] = channel_arg.c_argument
+ *         self._channel_args.append(channel_arg)
+ */
+      __pyx_t_5 = __pyx_v_self->_references;
+      __Pyx_INCREF(__pyx_t_5);
+      ((struct __pyx_vtabstruct_7_cython_6cygrpc__ChannelArg *)__pyx_v_channel_arg->__pyx_vtab)->c(__pyx_v_channel_arg, __pyx_v_argument, __pyx_t_5); if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 76, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":77
+ *         channel_arg = _ChannelArg()
+ *         channel_arg.c(argument, self._references)
+ *         self._c_arguments.arguments[index] = channel_arg.c_argument             # <<<<<<<<<<<<<<
+ *         self._channel_args.append(channel_arg)
+ * 
+ */
+      __pyx_t_6 = __pyx_v_channel_arg->c_argument;
+      __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_v_index); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(3, 77, __pyx_L1_error)
+      (__pyx_v_self->_c_arguments.args[__pyx_t_7]) = __pyx_t_6;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":78
+ *         channel_arg.c(argument, self._references)
+ *         self._c_arguments.arguments[index] = channel_arg.c_argument
+ *         self._channel_args.append(channel_arg)             # <<<<<<<<<<<<<<
+ * 
+ *   cdef grpc_channel_args *c_args(self) except *:
+ */
+      if (unlikely(__pyx_v_self->_channel_args == Py_None)) {
+        PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
+        __PYX_ERR(3, 78, __pyx_L1_error)
+      }
+      __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_self->_channel_args, ((PyObject *)__pyx_v_channel_arg)); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(3, 78, __pyx_L1_error)
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":74
+ *       self._c_arguments.arguments = <grpc_arg *>gpr_malloc(
+ *           self._c_arguments.arguments_length * sizeof(grpc_arg))
+ *       for index, argument in enumerate(self._arguments):             # <<<<<<<<<<<<<<
+ *         channel_arg = _ChannelArg()
+ *         channel_arg.c(argument, self._references)
+ */
+    }
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":71
+ *     self._references = []
+ *     self._c_arguments.arguments_length = len(self._arguments)
+ *     if self._c_arguments.arguments_length != 0:             # <<<<<<<<<<<<<<
+ *       self._c_arguments.arguments = <grpc_arg *>gpr_malloc(
+ *           self._c_arguments.arguments_length * sizeof(grpc_arg))
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":66
+ * cdef class _ChannelArgs:
+ * 
+ *   def __cinit__(self, arguments):             # <<<<<<<<<<<<<<
+ *     self._arguments = () if arguments is None else tuple(arguments)
+ *     self._channel_args = []
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_AddTraceback("_cython.cygrpc._ChannelArgs.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_index);
+  __Pyx_XDECREF(__pyx_v_argument);
+  __Pyx_XDECREF((PyObject *)__pyx_v_channel_arg);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":80
+ *         self._channel_args.append(channel_arg)
+ * 
+ *   cdef grpc_channel_args *c_args(self) except *:             # <<<<<<<<<<<<<<
+ *     return &self._c_arguments
+ * 
+ */
+
+static grpc_channel_args *__pyx_f_7_cython_6cygrpc_12_ChannelArgs_c_args(struct __pyx_obj_7_cython_6cygrpc__ChannelArgs *__pyx_v_self) {
+  grpc_channel_args *__pyx_r;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":81
+ * 
+ *   cdef grpc_channel_args *c_args(self) except *:
+ *     return &self._c_arguments             # <<<<<<<<<<<<<<
+ * 
+ *   def __dealloc__(self):
+ */
+  __pyx_r = (&__pyx_v_self->_c_arguments);
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":80
+ *         self._channel_args.append(channel_arg)
+ * 
+ *   cdef grpc_channel_args *c_args(self) except *:             # <<<<<<<<<<<<<<
+ *     return &self._c_arguments
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L0:;
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":83
+ *     return &self._c_arguments
+ * 
+ *   def __dealloc__(self):             # <<<<<<<<<<<<<<
+ *     if self._c_arguments.arguments != NULL:
+ *       gpr_free(self._c_arguments.arguments)
+ */
+
+/* Python wrapper */
+static void __pyx_pw_7_cython_6cygrpc_12_ChannelArgs_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
+static void __pyx_pw_7_cython_6cygrpc_12_ChannelArgs_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_7_cython_6cygrpc_12_ChannelArgs_2__dealloc__(((struct __pyx_obj_7_cython_6cygrpc__ChannelArgs *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+}
+
+static void __pyx_pf_7_cython_6cygrpc_12_ChannelArgs_2__dealloc__(struct __pyx_obj_7_cython_6cygrpc__ChannelArgs *__pyx_v_self) {
+  int __pyx_t_1;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":84
+ * 
+ *   def __dealloc__(self):
+ *     if self._c_arguments.arguments != NULL:             # <<<<<<<<<<<<<<
+ *       gpr_free(self._c_arguments.arguments)
+ */
+  __pyx_t_1 = (__pyx_v_self->_c_arguments.args != NULL);
+  if (__pyx_t_1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":85
+ *   def __dealloc__(self):
+ *     if self._c_arguments.arguments != NULL:
+ *       gpr_free(self._c_arguments.arguments)             # <<<<<<<<<<<<<<
+ */
+    gpr_free(__pyx_v_self->_c_arguments.args);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":84
+ * 
+ *   def __dealloc__(self):
+ *     if self._c_arguments.arguments != NULL:             # <<<<<<<<<<<<<<
+ *       gpr_free(self._c_arguments.arguments)
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":83
+ *     return &self._c_arguments
+ * 
+ *   def __dealloc__(self):             # <<<<<<<<<<<<<<
+ *     if self._c_arguments.arguments != NULL:
+ *       gpr_free(self._c_arguments.arguments)
+ */
+
+  /* function exit code */
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pxd.pxi":31
+ * cdef class _ChannelArgs:
+ * 
+ *   cdef readonly tuple _arguments             # <<<<<<<<<<<<<<
+ *   cdef list _channel_args
+ *   cdef readonly list _references
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_12_ChannelArgs_10_arguments_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_12_ChannelArgs_10_arguments_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_7_cython_6cygrpc_12_ChannelArgs_10_arguments___get__(((struct __pyx_obj_7_cython_6cygrpc__ChannelArgs *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_12_ChannelArgs_10_arguments___get__(struct __pyx_obj_7_cython_6cygrpc__ChannelArgs *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->_arguments);
+  __pyx_r = __pyx_v_self->_arguments;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pxd.pxi":33
+ *   cdef readonly tuple _arguments
+ *   cdef list _channel_args
+ *   cdef readonly list _references             # <<<<<<<<<<<<<<
+ *   cdef grpc_channel_args _c_arguments
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_12_ChannelArgs_11_references_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_12_ChannelArgs_11_references_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_7_cython_6cygrpc_12_ChannelArgs_11_references___get__(((struct __pyx_obj_7_cython_6cygrpc__ChannelArgs *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_12_ChannelArgs_11_references___get__(struct __pyx_obj_7_cython_6cygrpc__ChannelArgs *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->_references);
+  __pyx_r = __pyx_v_self->_references;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __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_7_cython_6cygrpc_12_ChannelArgs_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_12_ChannelArgs_5__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_12_ChannelArgs_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_12_ChannelArgs_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_7_cython_6cygrpc_12_ChannelArgs_4__reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc__ChannelArgs *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_12_ChannelArgs_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__ChannelArgs *__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(10, 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("_cython.cygrpc._ChannelArgs.__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_7_cython_6cygrpc_12_ChannelArgs_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_12_ChannelArgs_7__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_12_ChannelArgs_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_12_ChannelArgs_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(10, 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(10, 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(10, 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("_cython.cygrpc._ChannelArgs.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_12_ChannelArgs_6__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc__ChannelArgs *)__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_7_cython_6cygrpc_12_ChannelArgs_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__ChannelArgs *__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(10, 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("_cython.cygrpc._ChannelArgs.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":18
+ * cdef class Call:
+ * 
+ *   def __cinit__(self):             # <<<<<<<<<<<<<<
+ *     # Create an *empty* call
+ *     fork_handlers_and_grpc_init()
+ */
+
+/* Python wrapper */
+static int __pyx_pw_7_cython_6cygrpc_4Call_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_7_cython_6cygrpc_4Call_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_7_cython_6cygrpc_4Call___cinit__(((struct __pyx_obj_7_cython_6cygrpc_Call *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_7_cython_6cygrpc_4Call___cinit__(struct __pyx_obj_7_cython_6cygrpc_Call *__pyx_v_self) {
+  int __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;
+  __Pyx_RefNannySetupContext("__cinit__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":20
+ *   def __cinit__(self):
+ *     # Create an *empty* call
+ *     fork_handlers_and_grpc_init()             # <<<<<<<<<<<<<<
+ *     self.c_call = NULL
+ *     self.references = []
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_fork_handlers_and_grpc_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 20, __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, 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, 20, __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/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":21
+ *     # Create an *empty* call
+ *     fork_handlers_and_grpc_init()
+ *     self.c_call = NULL             # <<<<<<<<<<<<<<
+ *     self.references = []
+ * 
+ */
+  __pyx_v_self->c_call = NULL;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":22
+ *     fork_handlers_and_grpc_init()
+ *     self.c_call = NULL
+ *     self.references = []             # <<<<<<<<<<<<<<
+ * 
+ *   def _start_batch(self, operations, tag, retain_self):
+ */
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 22, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->references);
+  __Pyx_DECREF(__pyx_v_self->references);
+  __pyx_v_self->references = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":18
+ * cdef class Call:
+ * 
+ *   def __cinit__(self):             # <<<<<<<<<<<<<<
+ *     # Create an *empty* call
+ *     fork_handlers_and_grpc_init()
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("_cython.cygrpc.Call.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":24
+ *     self.references = []
+ * 
+ *   def _start_batch(self, operations, tag, retain_self):             # <<<<<<<<<<<<<<
+ *     if not self.is_valid:
+ *       raise ValueError("invalid call object cannot be used from Python")
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_4Call_3_start_batch(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_4Call_3_start_batch = {"_start_batch", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_4Call_3_start_batch, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_4Call_3_start_batch(PyObject *__pyx_v_self, 
+#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_operations = 0;
+  PyObject *__pyx_v_tag = 0;
+  PyObject *__pyx_v_retain_self = 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("_start_batch (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_operations,&__pyx_n_s_tag,&__pyx_n_s_retain_self,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_operations)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 24, __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_tag)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 24, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("_start_batch", 1, 3, 3, 1); __PYX_ERR(4, 24, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_retain_self)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 24, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("_start_batch", 1, 3, 3, 2); __PYX_ERR(4, 24, __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, "_start_batch") < 0)) __PYX_ERR(4, 24, __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_operations = values[0];
+    __pyx_v_tag = values[1];
+    __pyx_v_retain_self = values[2];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("_start_batch", 1, 3, 3, __pyx_nargs); __PYX_ERR(4, 24, __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("_cython.cygrpc.Call._start_batch", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_4Call_2_start_batch(((struct __pyx_obj_7_cython_6cygrpc_Call *)__pyx_v_self), __pyx_v_operations, __pyx_v_tag, __pyx_v_retain_self);
+
+  /* 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_7_cython_6cygrpc_4Call_2_start_batch(struct __pyx_obj_7_cython_6cygrpc_Call *__pyx_v_self, PyObject *__pyx_v_operations, PyObject *__pyx_v_tag, PyObject *__pyx_v_retain_self) {
+  struct __pyx_obj_7_cython_6cygrpc__BatchOperationTag *__pyx_v_batch_operation_tag = 0;
+  grpc_call_error __pyx_v_error;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_t_2;
+  int __pyx_t_3;
+  PyObject *__pyx_t_4 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_start_batch", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":25
+ * 
+ *   def _start_batch(self, operations, tag, retain_self):
+ *     if not self.is_valid:             # <<<<<<<<<<<<<<
+ *       raise ValueError("invalid call object cannot be used from Python")
+ *     cdef _BatchOperationTag batch_operation_tag = _BatchOperationTag(
+ */
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_is_valid); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 25, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(4, 25, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_3 = (!__pyx_t_2);
+  if (unlikely(__pyx_t_3)) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":26
+ *   def _start_batch(self, operations, tag, retain_self):
+ *     if not self.is_valid:
+ *       raise ValueError("invalid call object cannot be used from Python")             # <<<<<<<<<<<<<<
+ *     cdef _BatchOperationTag batch_operation_tag = _BatchOperationTag(
+ *         tag, operations, self if retain_self else None)
+ */
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 26, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __PYX_ERR(4, 26, __pyx_L1_error)
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":25
+ * 
+ *   def _start_batch(self, operations, tag, retain_self):
+ *     if not self.is_valid:             # <<<<<<<<<<<<<<
+ *       raise ValueError("invalid call object cannot be used from Python")
+ *     cdef _BatchOperationTag batch_operation_tag = _BatchOperationTag(
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":28
+ *       raise ValueError("invalid call object cannot be used from Python")
+ *     cdef _BatchOperationTag batch_operation_tag = _BatchOperationTag(
+ *         tag, operations, self if retain_self else None)             # <<<<<<<<<<<<<<
+ *     batch_operation_tag.prepare()
+ *     cpython.Py_INCREF(batch_operation_tag)
+ */
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_retain_self); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(4, 28, __pyx_L1_error)
+  if (__pyx_t_3) {
+    __Pyx_INCREF((PyObject *)__pyx_v_self);
+    __pyx_t_1 = ((PyObject *)__pyx_v_self);
+  } else {
+    __Pyx_INCREF(Py_None);
+    __pyx_t_1 = Py_None;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":27
+ *     if not self.is_valid:
+ *       raise ValueError("invalid call object cannot be used from Python")
+ *     cdef _BatchOperationTag batch_operation_tag = _BatchOperationTag(             # <<<<<<<<<<<<<<
+ *         tag, operations, self if retain_self else None)
+ *     batch_operation_tag.prepare()
+ */
+  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 27, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_INCREF(__pyx_v_tag);
+  __Pyx_GIVEREF(__pyx_v_tag);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_tag)) __PYX_ERR(4, 27, __pyx_L1_error);
+  __Pyx_INCREF(__pyx_v_operations);
+  __Pyx_GIVEREF(__pyx_v_operations);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_operations)) __PYX_ERR(4, 27, __pyx_L1_error);
+  __Pyx_GIVEREF(__pyx_t_1);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_1)) __PYX_ERR(4, 27, __pyx_L1_error);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_7_cython_6cygrpc__BatchOperationTag), __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 27, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_v_batch_operation_tag = ((struct __pyx_obj_7_cython_6cygrpc__BatchOperationTag *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":29
+ *     cdef _BatchOperationTag batch_operation_tag = _BatchOperationTag(
+ *         tag, operations, self if retain_self else None)
+ *     batch_operation_tag.prepare()             # <<<<<<<<<<<<<<
+ *     cpython.Py_INCREF(batch_operation_tag)
+ *     cdef grpc_call_error error
+ */
+  ((struct __pyx_vtabstruct_7_cython_6cygrpc__BatchOperationTag *)__pyx_v_batch_operation_tag->__pyx_base.__pyx_vtab)->prepare(__pyx_v_batch_operation_tag); if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 29, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":30
+ *         tag, operations, self if retain_self else None)
+ *     batch_operation_tag.prepare()
+ *     cpython.Py_INCREF(batch_operation_tag)             # <<<<<<<<<<<<<<
+ *     cdef grpc_call_error error
+ *     with nogil:
+ */
+  Py_INCREF(((PyObject *)__pyx_v_batch_operation_tag));
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":32
+ *     cpython.Py_INCREF(batch_operation_tag)
+ *     cdef grpc_call_error error
+ *     with nogil:             # <<<<<<<<<<<<<<
+ *       error = grpc_call_start_batch(
+ *           self.c_call, batch_operation_tag.c_ops, batch_operation_tag.c_nops,
+ */
+  {
+      #ifdef WITH_THREAD
+      PyThreadState *_save;
+      _save = NULL;
+      Py_UNBLOCK_THREADS
+      __Pyx_FastGIL_Remember();
+      #endif
+      /*try:*/ {
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":33
+ *     cdef grpc_call_error error
+ *     with nogil:
+ *       error = grpc_call_start_batch(             # <<<<<<<<<<<<<<
+ *           self.c_call, batch_operation_tag.c_ops, batch_operation_tag.c_nops,
+ *           <cpython.PyObject *>batch_operation_tag, NULL)
+ */
+        __pyx_v_error = grpc_call_start_batch(__pyx_v_self->c_call, __pyx_v_batch_operation_tag->c_ops, __pyx_v_batch_operation_tag->c_nops, ((PyObject *)__pyx_v_batch_operation_tag), NULL);
+      }
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":32
+ *     cpython.Py_INCREF(batch_operation_tag)
+ *     cdef grpc_call_error error
+ *     with nogil:             # <<<<<<<<<<<<<<
+ *       error = grpc_call_start_batch(
+ *           self.c_call, batch_operation_tag.c_ops, batch_operation_tag.c_nops,
+ */
+      /*finally:*/ {
+        /*normal exit:*/{
+          #ifdef WITH_THREAD
+          __Pyx_FastGIL_Forget();
+          Py_BLOCK_THREADS
+          #endif
+          goto __pyx_L6;
+        }
+        __pyx_L6:;
+      }
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":36
+ *           self.c_call, batch_operation_tag.c_ops, batch_operation_tag.c_nops,
+ *           <cpython.PyObject *>batch_operation_tag, NULL)
+ *     return error             # <<<<<<<<<<<<<<
+ * 
+ *   def start_client_batch(self, operations, tag):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_grpc_call_error(__pyx_v_error); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 36, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":24
+ *     self.references = []
+ * 
+ *   def _start_batch(self, operations, tag, retain_self):             # <<<<<<<<<<<<<<
+ *     if not self.is_valid:
+ *       raise ValueError("invalid call object cannot be used from Python")
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("_cython.cygrpc.Call._start_batch", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_batch_operation_tag);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":38
+ *     return error
+ * 
+ *   def start_client_batch(self, operations, tag):             # <<<<<<<<<<<<<<
+ *     # We don't reference this call in the operations tag because
+ *     # it should be cancelled when it goes out of scope
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_4Call_5start_client_batch(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_4Call_5start_client_batch = {"start_client_batch", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_4Call_5start_client_batch, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_4Call_5start_client_batch(PyObject *__pyx_v_self, 
+#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_operations = 0;
+  PyObject *__pyx_v_tag = 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("start_client_batch (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_operations,&__pyx_n_s_tag,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_operations)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 38, __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_tag)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 38, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("start_client_batch", 1, 2, 2, 1); __PYX_ERR(4, 38, __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, "start_client_batch") < 0)) __PYX_ERR(4, 38, __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_operations = values[0];
+    __pyx_v_tag = values[1];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("start_client_batch", 1, 2, 2, __pyx_nargs); __PYX_ERR(4, 38, __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("_cython.cygrpc.Call.start_client_batch", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_4Call_4start_client_batch(((struct __pyx_obj_7_cython_6cygrpc_Call *)__pyx_v_self), __pyx_v_operations, __pyx_v_tag);
+
+  /* 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_7_cython_6cygrpc_4Call_4start_client_batch(struct __pyx_obj_7_cython_6cygrpc_Call *__pyx_v_self, PyObject *__pyx_v_operations, PyObject *__pyx_v_tag) {
+  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("start_client_batch", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":41
+ *     # We don't reference this call in the operations tag because
+ *     # it should be cancelled when it goes out of scope
+ *     return self._start_batch(operations, tag, False)             # <<<<<<<<<<<<<<
+ * 
+ *   def start_server_batch(self, operations, tag):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_start_batch); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 41, __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[4] = {__pyx_t_3, __pyx_v_operations, __pyx_v_tag, Py_False};
+    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 3+__pyx_t_4);
+    __Pyx_XDECREF(__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_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":38
+ *     return error
+ * 
+ *   def start_client_batch(self, operations, tag):             # <<<<<<<<<<<<<<
+ *     # We don't reference this call in the operations tag because
+ *     # it should be cancelled when it goes out of scope
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("_cython.cygrpc.Call.start_client_batch", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":43
+ *     return self._start_batch(operations, tag, False)
+ * 
+ *   def start_server_batch(self, operations, tag):             # <<<<<<<<<<<<<<
+ *     return self._start_batch(operations, tag, True)
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_4Call_7start_server_batch(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_4Call_7start_server_batch = {"start_server_batch", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_4Call_7start_server_batch, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_4Call_7start_server_batch(PyObject *__pyx_v_self, 
+#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_operations = 0;
+  PyObject *__pyx_v_tag = 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("start_server_batch (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_operations,&__pyx_n_s_tag,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_operations)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 43, __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_tag)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 43, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("start_server_batch", 1, 2, 2, 1); __PYX_ERR(4, 43, __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, "start_server_batch") < 0)) __PYX_ERR(4, 43, __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_operations = values[0];
+    __pyx_v_tag = values[1];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("start_server_batch", 1, 2, 2, __pyx_nargs); __PYX_ERR(4, 43, __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("_cython.cygrpc.Call.start_server_batch", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_4Call_6start_server_batch(((struct __pyx_obj_7_cython_6cygrpc_Call *)__pyx_v_self), __pyx_v_operations, __pyx_v_tag);
+
+  /* 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_7_cython_6cygrpc_4Call_6start_server_batch(struct __pyx_obj_7_cython_6cygrpc_Call *__pyx_v_self, PyObject *__pyx_v_operations, PyObject *__pyx_v_tag) {
+  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("start_server_batch", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":44
+ * 
+ *   def start_server_batch(self, operations, tag):
+ *     return self._start_batch(operations, tag, True)             # <<<<<<<<<<<<<<
+ * 
+ *   def cancel(
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_start_batch); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 44, __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[4] = {__pyx_t_3, __pyx_v_operations, __pyx_v_tag, Py_True};
+    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 3+__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 44, __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/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":43
+ *     return self._start_batch(operations, tag, False)
+ * 
+ *   def start_server_batch(self, operations, tag):             # <<<<<<<<<<<<<<
+ *     return self._start_batch(operations, tag, True)
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("_cython.cygrpc.Call.start_server_batch", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":46
+ *     return self._start_batch(operations, tag, True)
+ * 
+ *   def cancel(             # <<<<<<<<<<<<<<
+ *       self, grpc_status_code error_code=GRPC_STATUS__DO_NOT_USE,
+ *       details=None):
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_4Call_9cancel(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_4Call_9cancel = {"cancel", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_4Call_9cancel, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_4Call_9cancel(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+  grpc_status_code __pyx_v_error_code;
+  PyObject *__pyx_v_details = 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("cancel (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_error_code,&__pyx_n_s_details,0};
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":48
+ *   def cancel(
+ *       self, grpc_status_code error_code=GRPC_STATUS__DO_NOT_USE,
+ *       details=None):             # <<<<<<<<<<<<<<
+ *     details = str_to_bytes(details)
+ *     if not self.is_valid:
+ */
+    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
+    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 (kw_args > 0) {
+          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_error_code);
+          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
+          else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 46, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (kw_args > 0) {
+          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_details);
+          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
+          else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 46, __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, "cancel") < 0)) __PYX_ERR(4, 46, __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);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    if (values[0]) {
+      __pyx_v_error_code = ((grpc_status_code)__Pyx_PyInt_As_grpc_status_code(values[0])); if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 47, __pyx_L3_error)
+    } else {
+      __pyx_v_error_code = __pyx_k__9;
+    }
+    __pyx_v_details = values[1];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("cancel", 0, 0, 2, __pyx_nargs); __PYX_ERR(4, 46, __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("_cython.cygrpc.Call.cancel", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_4Call_8cancel(((struct __pyx_obj_7_cython_6cygrpc_Call *)__pyx_v_self), __pyx_v_error_code, __pyx_v_details);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":46
+ *     return self._start_batch(operations, tag, True)
+ * 
+ *   def cancel(             # <<<<<<<<<<<<<<
+ *       self, grpc_status_code error_code=GRPC_STATUS__DO_NOT_USE,
+ *       details=None):
+ */
+
+  /* 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_7_cython_6cygrpc_4Call_8cancel(struct __pyx_obj_7_cython_6cygrpc_Call *__pyx_v_self, grpc_status_code __pyx_v_error_code, PyObject *__pyx_v_details) {
+  grpc_call_error __pyx_v_result;
+  char *__pyx_v_c_details;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_t_2;
+  int __pyx_t_3;
+  int __pyx_t_4;
+  char *__pyx_t_5;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("cancel", 0);
+  __Pyx_INCREF(__pyx_v_details);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":49
+ *       self, grpc_status_code error_code=GRPC_STATUS__DO_NOT_USE,
+ *       details=None):
+ *     details = str_to_bytes(details)             # <<<<<<<<<<<<<<
+ *     if not self.is_valid:
+ *       raise ValueError("invalid call object cannot be used from Python")
+ */
+  __pyx_t_1 = __pyx_f_7_cython_6cygrpc_str_to_bytes(__pyx_v_details); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 49, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF_SET(__pyx_v_details, __pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":50
+ *       details=None):
+ *     details = str_to_bytes(details)
+ *     if not self.is_valid:             # <<<<<<<<<<<<<<
+ *       raise ValueError("invalid call object cannot be used from Python")
+ *     if (details is None) != (error_code == GRPC_STATUS__DO_NOT_USE):
+ */
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_is_valid); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 50, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(4, 50, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_3 = (!__pyx_t_2);
+  if (unlikely(__pyx_t_3)) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":51
+ *     details = str_to_bytes(details)
+ *     if not self.is_valid:
+ *       raise ValueError("invalid call object cannot be used from Python")             # <<<<<<<<<<<<<<
+ *     if (details is None) != (error_code == GRPC_STATUS__DO_NOT_USE):
+ *       raise ValueError("if error_code is specified, so must details "
+ */
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 51, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __PYX_ERR(4, 51, __pyx_L1_error)
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":50
+ *       details=None):
+ *     details = str_to_bytes(details)
+ *     if not self.is_valid:             # <<<<<<<<<<<<<<
+ *       raise ValueError("invalid call object cannot be used from Python")
+ *     if (details is None) != (error_code == GRPC_STATUS__DO_NOT_USE):
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":52
+ *     if not self.is_valid:
+ *       raise ValueError("invalid call object cannot be used from Python")
+ *     if (details is None) != (error_code == GRPC_STATUS__DO_NOT_USE):             # <<<<<<<<<<<<<<
+ *       raise ValueError("if error_code is specified, so must details "
+ *                        "(and vice-versa)")
+ */
+  __pyx_t_3 = (__pyx_v_details == Py_None);
+  __pyx_t_2 = (__pyx_t_3 != (__pyx_v_error_code == GRPC_STATUS__DO_NOT_USE));
+  if (unlikely(__pyx_t_2)) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":53
+ *       raise ValueError("invalid call object cannot be used from Python")
+ *     if (details is None) != (error_code == GRPC_STATUS__DO_NOT_USE):
+ *       raise ValueError("if error_code is specified, so must details "             # <<<<<<<<<<<<<<
+ *                        "(and vice-versa)")
+ *     cdef grpc_call_error result
+ */
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 53, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __PYX_ERR(4, 53, __pyx_L1_error)
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":52
+ *     if not self.is_valid:
+ *       raise ValueError("invalid call object cannot be used from Python")
+ *     if (details is None) != (error_code == GRPC_STATUS__DO_NOT_USE):             # <<<<<<<<<<<<<<
+ *       raise ValueError("if error_code is specified, so must details "
+ *                        "(and vice-versa)")
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":56
+ *                        "(and vice-versa)")
+ *     cdef grpc_call_error result
+ *     cdef char *c_details = NULL             # <<<<<<<<<<<<<<
+ *     if error_code != GRPC_STATUS__DO_NOT_USE:
+ *       self.references.append(details)
+ */
+  __pyx_v_c_details = NULL;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":57
+ *     cdef grpc_call_error result
+ *     cdef char *c_details = NULL
+ *     if error_code != GRPC_STATUS__DO_NOT_USE:             # <<<<<<<<<<<<<<
+ *       self.references.append(details)
+ *       c_details = details
+ */
+  __pyx_t_2 = (__pyx_v_error_code != GRPC_STATUS__DO_NOT_USE);
+  if (__pyx_t_2) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":58
+ *     cdef char *c_details = NULL
+ *     if error_code != GRPC_STATUS__DO_NOT_USE:
+ *       self.references.append(details)             # <<<<<<<<<<<<<<
+ *       c_details = details
+ *       with nogil:
+ */
+    if (unlikely(__pyx_v_self->references == Py_None)) {
+      PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
+      __PYX_ERR(4, 58, __pyx_L1_error)
+    }
+    __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_self->references, __pyx_v_details); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(4, 58, __pyx_L1_error)
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":59
+ *     if error_code != GRPC_STATUS__DO_NOT_USE:
+ *       self.references.append(details)
+ *       c_details = details             # <<<<<<<<<<<<<<
+ *       with nogil:
+ *         result = grpc_call_cancel_with_status(
+ */
+    __pyx_t_5 = __Pyx_PyObject_AsWritableString(__pyx_v_details); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(4, 59, __pyx_L1_error)
+    __pyx_v_c_details = __pyx_t_5;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":60
+ *       self.references.append(details)
+ *       c_details = details
+ *       with nogil:             # <<<<<<<<<<<<<<
+ *         result = grpc_call_cancel_with_status(
+ *             self.c_call, error_code, c_details, NULL)
+ */
+    {
+        #ifdef WITH_THREAD
+        PyThreadState *_save;
+        _save = NULL;
+        Py_UNBLOCK_THREADS
+        __Pyx_FastGIL_Remember();
+        #endif
+        /*try:*/ {
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":61
+ *       c_details = details
+ *       with nogil:
+ *         result = grpc_call_cancel_with_status(             # <<<<<<<<<<<<<<
+ *             self.c_call, error_code, c_details, NULL)
+ *       return result
+ */
+          __pyx_v_result = grpc_call_cancel_with_status(__pyx_v_self->c_call, __pyx_v_error_code, __pyx_v_c_details, NULL);
+        }
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":60
+ *       self.references.append(details)
+ *       c_details = details
+ *       with nogil:             # <<<<<<<<<<<<<<
+ *         result = grpc_call_cancel_with_status(
+ *             self.c_call, error_code, c_details, NULL)
+ */
+        /*finally:*/ {
+          /*normal exit:*/{
+            #ifdef WITH_THREAD
+            __Pyx_FastGIL_Forget();
+            Py_BLOCK_THREADS
+            #endif
+            goto __pyx_L8;
+          }
+          __pyx_L8:;
+        }
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":63
+ *         result = grpc_call_cancel_with_status(
+ *             self.c_call, error_code, c_details, NULL)
+ *       return result             # <<<<<<<<<<<<<<
+ *     else:
+ *       with nogil:
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_1 = __Pyx_PyInt_From_grpc_call_error(__pyx_v_result); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 63, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_r = __pyx_t_1;
+    __pyx_t_1 = 0;
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":57
+ *     cdef grpc_call_error result
+ *     cdef char *c_details = NULL
+ *     if error_code != GRPC_STATUS__DO_NOT_USE:             # <<<<<<<<<<<<<<
+ *       self.references.append(details)
+ *       c_details = details
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":65
+ *       return result
+ *     else:
+ *       with nogil:             # <<<<<<<<<<<<<<
+ *         result = grpc_call_cancel(self.c_call, NULL)
+ *       return result
+ */
+  /*else*/ {
+    {
+        #ifdef WITH_THREAD
+        PyThreadState *_save;
+        _save = NULL;
+        Py_UNBLOCK_THREADS
+        __Pyx_FastGIL_Remember();
+        #endif
+        /*try:*/ {
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":66
+ *     else:
+ *       with nogil:
+ *         result = grpc_call_cancel(self.c_call, NULL)             # <<<<<<<<<<<<<<
+ *       return result
+ * 
+ */
+          __pyx_v_result = grpc_call_cancel(__pyx_v_self->c_call, NULL);
+        }
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":65
+ *       return result
+ *     else:
+ *       with nogil:             # <<<<<<<<<<<<<<
+ *         result = grpc_call_cancel(self.c_call, NULL)
+ *       return result
+ */
+        /*finally:*/ {
+          /*normal exit:*/{
+            #ifdef WITH_THREAD
+            __Pyx_FastGIL_Forget();
+            Py_BLOCK_THREADS
+            #endif
+            goto __pyx_L11;
+          }
+          __pyx_L11:;
+        }
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":67
+ *       with nogil:
+ *         result = grpc_call_cancel(self.c_call, NULL)
+ *       return result             # <<<<<<<<<<<<<<
+ * 
+ *   def set_credentials(self, CallCredentials call_credentials not None):
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_1 = __Pyx_PyInt_From_grpc_call_error(__pyx_v_result); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 67, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_r = __pyx_t_1;
+    __pyx_t_1 = 0;
+    goto __pyx_L0;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":46
+ *     return self._start_batch(operations, tag, True)
+ * 
+ *   def cancel(             # <<<<<<<<<<<<<<
+ *       self, grpc_status_code error_code=GRPC_STATUS__DO_NOT_USE,
+ *       details=None):
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.Call.cancel", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_details);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":69
+ *       return result
+ * 
+ *   def set_credentials(self, CallCredentials call_credentials not None):             # <<<<<<<<<<<<<<
+ *     cdef grpc_call_credentials *c_call_credentials = call_credentials.c()
+ *     cdef grpc_call_error call_error = grpc_call_set_credentials(
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_4Call_11set_credentials(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_4Call_11set_credentials = {"set_credentials", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_4Call_11set_credentials, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_4Call_11set_credentials(PyObject *__pyx_v_self, 
+#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_7_cython_6cygrpc_CallCredentials *__pyx_v_call_credentials = 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("set_credentials (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_call_credentials,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_call_credentials)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 69, __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, "set_credentials") < 0)) __PYX_ERR(4, 69, __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_call_credentials = ((struct __pyx_obj_7_cython_6cygrpc_CallCredentials *)values[0]);
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("set_credentials", 1, 1, 1, __pyx_nargs); __PYX_ERR(4, 69, __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("_cython.cygrpc.Call.set_credentials", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_call_credentials), __pyx_ptype_7_cython_6cygrpc_CallCredentials, 0, "call_credentials", 0))) __PYX_ERR(4, 69, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_4Call_10set_credentials(((struct __pyx_obj_7_cython_6cygrpc_Call *)__pyx_v_self), __pyx_v_call_credentials);
+
+  /* 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_7_cython_6cygrpc_4Call_10set_credentials(struct __pyx_obj_7_cython_6cygrpc_Call *__pyx_v_self, struct __pyx_obj_7_cython_6cygrpc_CallCredentials *__pyx_v_call_credentials) {
+  grpc_call_credentials *__pyx_v_c_call_credentials;
+  grpc_call_error __pyx_v_call_error;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  grpc_call_credentials *__pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_credentials", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":70
+ * 
+ *   def set_credentials(self, CallCredentials call_credentials not None):
+ *     cdef grpc_call_credentials *c_call_credentials = call_credentials.c()             # <<<<<<<<<<<<<<
+ *     cdef grpc_call_error call_error = grpc_call_set_credentials(
+ *         self.c_call, c_call_credentials)
+ */
+  __pyx_t_1 = ((struct __pyx_vtabstruct_7_cython_6cygrpc_CallCredentials *)__pyx_v_call_credentials->__pyx_vtab)->c(__pyx_v_call_credentials); if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 70, __pyx_L1_error)
+  __pyx_v_c_call_credentials = __pyx_t_1;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":71
+ *   def set_credentials(self, CallCredentials call_credentials not None):
+ *     cdef grpc_call_credentials *c_call_credentials = call_credentials.c()
+ *     cdef grpc_call_error call_error = grpc_call_set_credentials(             # <<<<<<<<<<<<<<
+ *         self.c_call, c_call_credentials)
+ *     grpc_call_credentials_release(c_call_credentials)
+ */
+  __pyx_v_call_error = grpc_call_set_credentials(__pyx_v_self->c_call, __pyx_v_c_call_credentials);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":73
+ *     cdef grpc_call_error call_error = grpc_call_set_credentials(
+ *         self.c_call, c_call_credentials)
+ *     grpc_call_credentials_release(c_call_credentials)             # <<<<<<<<<<<<<<
+ *     return call_error
+ * 
+ */
+  grpc_call_credentials_release(__pyx_v_c_call_credentials);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":74
+ *         self.c_call, c_call_credentials)
+ *     grpc_call_credentials_release(c_call_credentials)
+ *     return call_error             # <<<<<<<<<<<<<<
+ * 
+ *   def peer(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = __Pyx_PyInt_From_grpc_call_error(__pyx_v_call_error); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 74, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":69
+ *       return result
+ * 
+ *   def set_credentials(self, CallCredentials call_credentials not None):             # <<<<<<<<<<<<<<
+ *     cdef grpc_call_credentials *c_call_credentials = call_credentials.c()
+ *     cdef grpc_call_error call_error = grpc_call_set_credentials(
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("_cython.cygrpc.Call.set_credentials", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":76
+ *     return call_error
+ * 
+ *   def peer(self):             # <<<<<<<<<<<<<<
+ *     cdef char *peer = NULL
+ *     with nogil:
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_4Call_13peer(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_4Call_13peer = {"peer", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_4Call_13peer, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_4Call_13peer(PyObject *__pyx_v_self, 
+#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("peer (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("peer", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "peer", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_4Call_12peer(((struct __pyx_obj_7_cython_6cygrpc_Call *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_4Call_12peer(struct __pyx_obj_7_cython_6cygrpc_Call *__pyx_v_self) {
+  char *__pyx_v_peer;
+  PyObject *__pyx_v_result = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("peer", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":77
+ * 
+ *   def peer(self):
+ *     cdef char *peer = NULL             # <<<<<<<<<<<<<<
+ *     with nogil:
+ *       peer = grpc_call_get_peer(self.c_call)
+ */
+  __pyx_v_peer = NULL;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":78
+ *   def peer(self):
+ *     cdef char *peer = NULL
+ *     with nogil:             # <<<<<<<<<<<<<<
+ *       peer = grpc_call_get_peer(self.c_call)
+ *     result = <bytes>peer
+ */
+  {
+      #ifdef WITH_THREAD
+      PyThreadState *_save;
+      _save = NULL;
+      Py_UNBLOCK_THREADS
+      __Pyx_FastGIL_Remember();
+      #endif
+      /*try:*/ {
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":79
+ *     cdef char *peer = NULL
+ *     with nogil:
+ *       peer = grpc_call_get_peer(self.c_call)             # <<<<<<<<<<<<<<
+ *     result = <bytes>peer
+ *     with nogil:
+ */
+        __pyx_v_peer = grpc_call_get_peer(__pyx_v_self->c_call);
+      }
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":78
+ *   def peer(self):
+ *     cdef char *peer = NULL
+ *     with nogil:             # <<<<<<<<<<<<<<
+ *       peer = grpc_call_get_peer(self.c_call)
+ *     result = <bytes>peer
+ */
+      /*finally:*/ {
+        /*normal exit:*/{
+          #ifdef WITH_THREAD
+          __Pyx_FastGIL_Forget();
+          Py_BLOCK_THREADS
+          #endif
+          goto __pyx_L5;
+        }
+        __pyx_L5:;
+      }
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":80
+ *     with nogil:
+ *       peer = grpc_call_get_peer(self.c_call)
+ *     result = <bytes>peer             # <<<<<<<<<<<<<<
+ *     with nogil:
+ *       gpr_free(peer)
+ */
+  __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_peer); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 80, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __pyx_t_1;
+  __Pyx_INCREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_v_result = ((PyObject*)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":81
+ *       peer = grpc_call_get_peer(self.c_call)
+ *     result = <bytes>peer
+ *     with nogil:             # <<<<<<<<<<<<<<
+ *       gpr_free(peer)
+ *     return result
+ */
+  {
+      #ifdef WITH_THREAD
+      PyThreadState *_save;
+      _save = NULL;
+      Py_UNBLOCK_THREADS
+      __Pyx_FastGIL_Remember();
+      #endif
+      /*try:*/ {
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":82
+ *     result = <bytes>peer
+ *     with nogil:
+ *       gpr_free(peer)             # <<<<<<<<<<<<<<
+ *     return result
+ * 
+ */
+        gpr_free(__pyx_v_peer);
+      }
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":81
+ *       peer = grpc_call_get_peer(self.c_call)
+ *     result = <bytes>peer
+ *     with nogil:             # <<<<<<<<<<<<<<
+ *       gpr_free(peer)
+ *     return result
+ */
+      /*finally:*/ {
+        /*normal exit:*/{
+          #ifdef WITH_THREAD
+          __Pyx_FastGIL_Forget();
+          Py_BLOCK_THREADS
+          #endif
+          goto __pyx_L8;
+        }
+        __pyx_L8:;
+      }
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":83
+ *     with nogil:
+ *       gpr_free(peer)
+ *     return result             # <<<<<<<<<<<<<<
+ * 
+ *   def __dealloc__(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_result);
+  __pyx_r = __pyx_v_result;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":76
+ *     return call_error
+ * 
+ *   def peer(self):             # <<<<<<<<<<<<<<
+ *     cdef char *peer = NULL
+ *     with nogil:
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("_cython.cygrpc.Call.peer", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_result);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":85
+ *     return result
+ * 
+ *   def __dealloc__(self):             # <<<<<<<<<<<<<<
+ *     with nogil:
+ *       if self.c_call != NULL:
+ */
+
+/* Python wrapper */
+static void __pyx_pw_7_cython_6cygrpc_4Call_15__dealloc__(PyObject *__pyx_v_self); /*proto*/
+static void __pyx_pw_7_cython_6cygrpc_4Call_15__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_7_cython_6cygrpc_4Call_14__dealloc__(((struct __pyx_obj_7_cython_6cygrpc_Call *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+}
+
+static void __pyx_pf_7_cython_6cygrpc_4Call_14__dealloc__(struct __pyx_obj_7_cython_6cygrpc_Call *__pyx_v_self) {
+  int __pyx_t_1;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":86
+ * 
+ *   def __dealloc__(self):
+ *     with nogil:             # <<<<<<<<<<<<<<
+ *       if self.c_call != NULL:
+ *         grpc_call_unref(self.c_call)
+ */
+  {
+      #ifdef WITH_THREAD
+      PyThreadState *_save;
+      _save = NULL;
+      Py_UNBLOCK_THREADS
+      __Pyx_FastGIL_Remember();
+      #endif
+      /*try:*/ {
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":87
+ *   def __dealloc__(self):
+ *     with nogil:
+ *       if self.c_call != NULL:             # <<<<<<<<<<<<<<
+ *         grpc_call_unref(self.c_call)
+ *       grpc_shutdown()
+ */
+        __pyx_t_1 = (__pyx_v_self->c_call != NULL);
+        if (__pyx_t_1) {
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":88
+ *     with nogil:
+ *       if self.c_call != NULL:
+ *         grpc_call_unref(self.c_call)             # <<<<<<<<<<<<<<
+ *       grpc_shutdown()
+ * 
+ */
+          grpc_call_unref(__pyx_v_self->c_call);
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":87
+ *   def __dealloc__(self):
+ *     with nogil:
+ *       if self.c_call != NULL:             # <<<<<<<<<<<<<<
+ *         grpc_call_unref(self.c_call)
+ *       grpc_shutdown()
+ */
+        }
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":89
+ *       if self.c_call != NULL:
+ *         grpc_call_unref(self.c_call)
+ *       grpc_shutdown()             # <<<<<<<<<<<<<<
+ * 
+ *   # The object *should* always be valid from Python. Used for debugging.
+ */
+        grpc_shutdown();
+      }
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":86
+ * 
+ *   def __dealloc__(self):
+ *     with nogil:             # <<<<<<<<<<<<<<
+ *       if self.c_call != NULL:
+ *         grpc_call_unref(self.c_call)
+ */
+      /*finally:*/ {
+        /*normal exit:*/{
+          #ifdef WITH_THREAD
+          __Pyx_FastGIL_Forget();
+          Py_BLOCK_THREADS
+          #endif
+          goto __pyx_L5;
+        }
+        __pyx_L5:;
+      }
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":85
+ *     return result
+ * 
+ *   def __dealloc__(self):             # <<<<<<<<<<<<<<
+ *     with nogil:
+ *       if self.c_call != NULL:
+ */
+
+  /* function exit code */
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":92
+ * 
+ *   # The object *should* always be valid from Python. Used for debugging.
+ *   @property             # <<<<<<<<<<<<<<
+ *   def is_valid(self):
+ *     return self.c_call != NULL
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_4Call_8is_valid_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_4Call_8is_valid_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_7_cython_6cygrpc_4Call_8is_valid___get__(((struct __pyx_obj_7_cython_6cygrpc_Call *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_4Call_8is_valid___get__(struct __pyx_obj_7_cython_6cygrpc_Call *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":94
+ *   @property
+ *   def is_valid(self):
+ *     return self.c_call != NULL             # <<<<<<<<<<<<<<
+ * 
+ *   def _custom_op_on_c_call(self, int op):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_self->c_call != NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 94, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":92
+ * 
+ *   # The object *should* always be valid from Python. Used for debugging.
+ *   @property             # <<<<<<<<<<<<<<
+ *   def is_valid(self):
+ *     return self.c_call != NULL
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.Call.is_valid.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":96
+ *     return self.c_call != NULL
+ * 
+ *   def _custom_op_on_c_call(self, int op):             # <<<<<<<<<<<<<<
+ *     return _custom_op_on_c_call(op, self.c_call)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_4Call_17_custom_op_on_c_call(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_4Call_17_custom_op_on_c_call = {"_custom_op_on_c_call", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_4Call_17_custom_op_on_c_call, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_4Call_17_custom_op_on_c_call(PyObject *__pyx_v_self, 
+#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_op;
+  #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("_custom_op_on_c_call (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_op,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_op)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 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, "_custom_op_on_c_call") < 0)) __PYX_ERR(4, 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_op = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_op == (int)-1) && PyErr_Occurred())) __PYX_ERR(4, 96, __pyx_L3_error)
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("_custom_op_on_c_call", 1, 1, 1, __pyx_nargs); __PYX_ERR(4, 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("_cython.cygrpc.Call._custom_op_on_c_call", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_4Call_16_custom_op_on_c_call(((struct __pyx_obj_7_cython_6cygrpc_Call *)__pyx_v_self), __pyx_v_op);
+
+  /* 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_7_cython_6cygrpc_4Call_16_custom_op_on_c_call(struct __pyx_obj_7_cython_6cygrpc_Call *__pyx_v_self, int __pyx_v_op) {
+  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("_custom_op_on_c_call", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":97
+ * 
+ *   def _custom_op_on_c_call(self, int op):
+ *     return _custom_op_on_c_call(op, self.c_call)             # <<<<<<<<<<<<<<
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_7_cython_6cygrpc__custom_op_on_c_call(__pyx_v_op, __pyx_v_self->c_call); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 97, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":96
+ *     return self.c_call != NULL
+ * 
+ *   def _custom_op_on_c_call(self, int op):             # <<<<<<<<<<<<<<
+ *     return _custom_op_on_c_call(op, self.c_call)
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.Call._custom_op_on_c_call", __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, "no default __reduce__ due to non-trivial __cinit__"
+ * def __setstate_cython__(self, __pyx_state):
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_4Call_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_4Call_19__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_4Call_19__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_4Call_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_7_cython_6cygrpc_4Call_18__reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc_Call *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_4Call_18__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_Call *__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(10, 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("_cython.cygrpc.Call.__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_7_cython_6cygrpc_4Call_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_4Call_21__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_4Call_21__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_4Call_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
+) {
+  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(10, 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(10, 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(10, 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("_cython.cygrpc.Call.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_4Call_20__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc_Call *)__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_7_cython_6cygrpc_4Call_20__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_Call *__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(10, 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("_cython.cygrpc.Call.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":22
+ * 
+ * 
+ * cdef str _call_error_metadata(metadata):             # <<<<<<<<<<<<<<
+ *   return 'metadata was invalid: %s' % metadata
+ * 
+ */
+
+static PyObject *__pyx_f_7_cython_6cygrpc__call_error_metadata(PyObject *__pyx_v_metadata) {
+  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("_call_error_metadata", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":23
+ * 
+ * cdef str _call_error_metadata(metadata):
+ *   return 'metadata was invalid: %s' % metadata             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyString_FormatSafe(__pyx_kp_s_metadata_was_invalid_s, __pyx_v_metadata); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 23, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  if (!(likely(PyString_CheckExact(__pyx_t_1)) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_1))) __PYX_ERR(12, 23, __pyx_L1_error)
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":22
+ * 
+ * 
+ * cdef str _call_error_metadata(metadata):             # <<<<<<<<<<<<<<
+ *   return 'metadata was invalid: %s' % metadata
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc._call_error_metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":26
+ * 
+ * 
+ * cdef str _call_error_no_metadata(c_call_error):             # <<<<<<<<<<<<<<
+ *   return _INTERNAL_CALL_ERROR_MESSAGE_FORMAT % c_call_error
+ * 
+ */
+
+static PyObject *__pyx_f_7_cython_6cygrpc__call_error_no_metadata(PyObject *__pyx_v_c_call_error) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_call_error_no_metadata", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":27
+ * 
+ * cdef str _call_error_no_metadata(c_call_error):
+ *   return _INTERNAL_CALL_ERROR_MESSAGE_FORMAT % c_call_error             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_INTERNAL_CALL_ERROR_MESSAGE_FOR); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 27, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyNumber_Remainder(__pyx_t_1, __pyx_v_c_call_error); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 27, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(12, 27, __pyx_L1_error)
+  __pyx_r = ((PyObject*)__pyx_t_2);
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":26
+ * 
+ * 
+ * cdef str _call_error_no_metadata(c_call_error):             # <<<<<<<<<<<<<<
+ *   return _INTERNAL_CALL_ERROR_MESSAGE_FORMAT % c_call_error
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("_cython.cygrpc._call_error_no_metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":30
+ * 
+ * 
+ * cdef str _call_error(c_call_error, metadata):             # <<<<<<<<<<<<<<
+ *   if c_call_error == GRPC_CALL_ERROR_INVALID_METADATA:
+ *     return _call_error_metadata(metadata)
+ */
+
+static PyObject *__pyx_f_7_cython_6cygrpc__call_error(PyObject *__pyx_v_c_call_error, PyObject *__pyx_v_metadata) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_t_3;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_call_error", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":31
+ * 
+ * cdef str _call_error(c_call_error, metadata):
+ *   if c_call_error == GRPC_CALL_ERROR_INVALID_METADATA:             # <<<<<<<<<<<<<<
+ *     return _call_error_metadata(metadata)
+ *   else:
+ */
+  __pyx_t_1 = __Pyx_PyInt_From_grpc_call_error(GRPC_CALL_ERROR_INVALID_METADATA); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 31, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyObject_RichCompare(__pyx_v_c_call_error, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 31, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(12, 31, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (__pyx_t_3) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":32
+ * cdef str _call_error(c_call_error, metadata):
+ *   if c_call_error == GRPC_CALL_ERROR_INVALID_METADATA:
+ *     return _call_error_metadata(metadata)             # <<<<<<<<<<<<<<
+ *   else:
+ *     return _call_error_no_metadata(c_call_error)
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_2 = __pyx_f_7_cython_6cygrpc__call_error_metadata(__pyx_v_metadata); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 32, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_r = ((PyObject*)__pyx_t_2);
+    __pyx_t_2 = 0;
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":31
+ * 
+ * cdef str _call_error(c_call_error, metadata):
+ *   if c_call_error == GRPC_CALL_ERROR_INVALID_METADATA:             # <<<<<<<<<<<<<<
+ *     return _call_error_metadata(metadata)
+ *   else:
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":34
+ *     return _call_error_metadata(metadata)
+ *   else:
+ *     return _call_error_no_metadata(c_call_error)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  /*else*/ {
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_2 = __pyx_f_7_cython_6cygrpc__call_error_no_metadata(__pyx_v_c_call_error); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 34, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_r = ((PyObject*)__pyx_t_2);
+    __pyx_t_2 = 0;
+    goto __pyx_L0;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":30
+ * 
+ * 
+ * cdef str _call_error(c_call_error, metadata):             # <<<<<<<<<<<<<<
+ *   if c_call_error == GRPC_CALL_ERROR_INVALID_METADATA:
+ *     return _call_error_metadata(metadata)
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("_cython.cygrpc._call_error", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":37
+ * 
+ * 
+ * cdef _check_call_error_no_metadata(c_call_error):             # <<<<<<<<<<<<<<
+ *   if c_call_error != GRPC_CALL_OK:
+ *     return _INTERNAL_CALL_ERROR_MESSAGE_FORMAT % c_call_error
+ */
+
+static PyObject *__pyx_f_7_cython_6cygrpc__check_call_error_no_metadata(PyObject *__pyx_v_c_call_error) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_t_3;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_check_call_error_no_metadata", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":38
+ * 
+ * cdef _check_call_error_no_metadata(c_call_error):
+ *   if c_call_error != GRPC_CALL_OK:             # <<<<<<<<<<<<<<
+ *     return _INTERNAL_CALL_ERROR_MESSAGE_FORMAT % c_call_error
+ *   else:
+ */
+  __pyx_t_1 = __Pyx_PyInt_From_grpc_call_error(GRPC_CALL_OK); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 38, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyObject_RichCompare(__pyx_v_c_call_error, __pyx_t_1, Py_NE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 38, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(12, 38, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (__pyx_t_3) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":39
+ * cdef _check_call_error_no_metadata(c_call_error):
+ *   if c_call_error != GRPC_CALL_OK:
+ *     return _INTERNAL_CALL_ERROR_MESSAGE_FORMAT % c_call_error             # <<<<<<<<<<<<<<
+ *   else:
+ *     return None
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_INTERNAL_CALL_ERROR_MESSAGE_FOR); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 39, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_1 = PyNumber_Remainder(__pyx_t_2, __pyx_v_c_call_error); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 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/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":38
+ * 
+ * cdef _check_call_error_no_metadata(c_call_error):
+ *   if c_call_error != GRPC_CALL_OK:             # <<<<<<<<<<<<<<
+ *     return _INTERNAL_CALL_ERROR_MESSAGE_FORMAT % c_call_error
+ *   else:
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":41
+ *     return _INTERNAL_CALL_ERROR_MESSAGE_FORMAT % c_call_error
+ *   else:
+ *     return None             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  /*else*/ {
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+    goto __pyx_L0;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":37
+ * 
+ * 
+ * cdef _check_call_error_no_metadata(c_call_error):             # <<<<<<<<<<<<<<
+ *   if c_call_error != GRPC_CALL_OK:
+ *     return _INTERNAL_CALL_ERROR_MESSAGE_FORMAT % c_call_error
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("_cython.cygrpc._check_call_error_no_metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":44
+ * 
+ * 
+ * cdef _check_and_raise_call_error_no_metadata(c_call_error):             # <<<<<<<<<<<<<<
+ *   error = _check_call_error_no_metadata(c_call_error)
+ *   if error is not None:
+ */
+
+static PyObject *__pyx_f_7_cython_6cygrpc__check_and_raise_call_error_no_metadata(PyObject *__pyx_v_c_call_error) {
+  PyObject *__pyx_v_error = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_t_2;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_check_and_raise_call_error_no_metadata", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":45
+ * 
+ * cdef _check_and_raise_call_error_no_metadata(c_call_error):
+ *   error = _check_call_error_no_metadata(c_call_error)             # <<<<<<<<<<<<<<
+ *   if error is not None:
+ *     raise ValueError(error)
+ */
+  __pyx_t_1 = __pyx_f_7_cython_6cygrpc__check_call_error_no_metadata(__pyx_v_c_call_error); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 45, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_error = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":46
+ * cdef _check_and_raise_call_error_no_metadata(c_call_error):
+ *   error = _check_call_error_no_metadata(c_call_error)
+ *   if error is not None:             # <<<<<<<<<<<<<<
+ *     raise ValueError(error)
+ * 
+ */
+  __pyx_t_2 = (__pyx_v_error != Py_None);
+  if (unlikely(__pyx_t_2)) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":47
+ *   error = _check_call_error_no_metadata(c_call_error)
+ *   if error is not None:
+ *     raise ValueError(error)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_v_error); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 47, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __PYX_ERR(12, 47, __pyx_L1_error)
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":46
+ * cdef _check_and_raise_call_error_no_metadata(c_call_error):
+ *   error = _check_call_error_no_metadata(c_call_error)
+ *   if error is not None:             # <<<<<<<<<<<<<<
+ *     raise ValueError(error)
+ * 
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":44
+ * 
+ * 
+ * cdef _check_and_raise_call_error_no_metadata(c_call_error):             # <<<<<<<<<<<<<<
+ *   error = _check_call_error_no_metadata(c_call_error)
+ *   if error is not None:
+ */
+
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc._check_and_raise_call_error_no_metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_error);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":50
+ * 
+ * 
+ * cdef _check_call_error(c_call_error, metadata):             # <<<<<<<<<<<<<<
+ *   if c_call_error == GRPC_CALL_ERROR_INVALID_METADATA:
+ *     return _call_error_metadata(metadata)
+ */
+
+static PyObject *__pyx_f_7_cython_6cygrpc__check_call_error(PyObject *__pyx_v_c_call_error, PyObject *__pyx_v_metadata) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_t_3;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_check_call_error", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":51
+ * 
+ * cdef _check_call_error(c_call_error, metadata):
+ *   if c_call_error == GRPC_CALL_ERROR_INVALID_METADATA:             # <<<<<<<<<<<<<<
+ *     return _call_error_metadata(metadata)
+ *   else:
+ */
+  __pyx_t_1 = __Pyx_PyInt_From_grpc_call_error(GRPC_CALL_ERROR_INVALID_METADATA); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 51, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyObject_RichCompare(__pyx_v_c_call_error, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 51, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(12, 51, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (__pyx_t_3) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":52
+ * cdef _check_call_error(c_call_error, metadata):
+ *   if c_call_error == GRPC_CALL_ERROR_INVALID_METADATA:
+ *     return _call_error_metadata(metadata)             # <<<<<<<<<<<<<<
+ *   else:
+ *     return _check_call_error_no_metadata(c_call_error)
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_2 = __pyx_f_7_cython_6cygrpc__call_error_metadata(__pyx_v_metadata); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 52, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_r = __pyx_t_2;
+    __pyx_t_2 = 0;
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":51
+ * 
+ * cdef _check_call_error(c_call_error, metadata):
+ *   if c_call_error == GRPC_CALL_ERROR_INVALID_METADATA:             # <<<<<<<<<<<<<<
+ *     return _call_error_metadata(metadata)
+ *   else:
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":54
+ *     return _call_error_metadata(metadata)
+ *   else:
+ *     return _check_call_error_no_metadata(c_call_error)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  /*else*/ {
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_2 = __pyx_f_7_cython_6cygrpc__check_call_error_no_metadata(__pyx_v_c_call_error); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 54, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_r = __pyx_t_2;
+    __pyx_t_2 = 0;
+    goto __pyx_L0;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":50
+ * 
+ * 
+ * cdef _check_call_error(c_call_error, metadata):             # <<<<<<<<<<<<<<
+ *   if c_call_error == GRPC_CALL_ERROR_INVALID_METADATA:
+ *     return _call_error_metadata(metadata)
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("_cython.cygrpc._check_call_error", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":57
+ * 
+ * 
+ * cdef void _raise_call_error_no_metadata(c_call_error) except *:             # <<<<<<<<<<<<<<
+ *   raise ValueError(_call_error_no_metadata(c_call_error))
+ * 
+ */
+
+static void __pyx_f_7_cython_6cygrpc__raise_call_error_no_metadata(PyObject *__pyx_v_c_call_error) {
+  __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("_raise_call_error_no_metadata", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":58
+ * 
+ * cdef void _raise_call_error_no_metadata(c_call_error) except *:
+ *   raise ValueError(_call_error_no_metadata(c_call_error))             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = __pyx_f_7_cython_6cygrpc__call_error_no_metadata(__pyx_v_c_call_error); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 58, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 58, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_Raise(__pyx_t_2, 0, 0, 0);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __PYX_ERR(12, 58, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":57
+ * 
+ * 
+ * cdef void _raise_call_error_no_metadata(c_call_error) except *:             # <<<<<<<<<<<<<<
+ *   raise ValueError(_call_error_no_metadata(c_call_error))
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("_cython.cygrpc._raise_call_error_no_metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":61
+ * 
+ * 
+ * cdef void _raise_call_error(c_call_error, metadata) except *:             # <<<<<<<<<<<<<<
+ *   raise ValueError(_call_error(c_call_error, metadata))
+ * 
+ */
+
+static void __pyx_f_7_cython_6cygrpc__raise_call_error(PyObject *__pyx_v_c_call_error, PyObject *__pyx_v_metadata) {
+  __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("_raise_call_error", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":62
+ * 
+ * cdef void _raise_call_error(c_call_error, metadata) except *:
+ *   raise ValueError(_call_error(c_call_error, metadata))             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = __pyx_f_7_cython_6cygrpc__call_error(__pyx_v_c_call_error, __pyx_v_metadata); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 62, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 62, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_Raise(__pyx_t_2, 0, 0, 0);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __PYX_ERR(12, 62, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":61
+ * 
+ * 
+ * cdef void _raise_call_error(c_call_error, metadata) except *:             # <<<<<<<<<<<<<<
+ *   raise ValueError(_call_error(c_call_error, metadata))
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("_cython.cygrpc._raise_call_error", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":65
+ * 
+ * 
+ * cdef _destroy_c_completion_queue(grpc_completion_queue *c_completion_queue):             # <<<<<<<<<<<<<<
+ *   grpc_completion_queue_shutdown(c_completion_queue)
+ *   grpc_completion_queue_destroy(c_completion_queue)
+ */
+
+static PyObject *__pyx_f_7_cython_6cygrpc__destroy_c_completion_queue(grpc_completion_queue *__pyx_v_c_completion_queue) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("_destroy_c_completion_queue", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":66
+ * 
+ * cdef _destroy_c_completion_queue(grpc_completion_queue *c_completion_queue):
+ *   grpc_completion_queue_shutdown(c_completion_queue)             # <<<<<<<<<<<<<<
+ *   grpc_completion_queue_destroy(c_completion_queue)
+ * 
+ */
+  grpc_completion_queue_shutdown(__pyx_v_c_completion_queue);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":67
+ * cdef _destroy_c_completion_queue(grpc_completion_queue *c_completion_queue):
+ *   grpc_completion_queue_shutdown(c_completion_queue)
+ *   grpc_completion_queue_destroy(c_completion_queue)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  grpc_completion_queue_destroy(__pyx_v_c_completion_queue);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":65
+ * 
+ * 
+ * cdef _destroy_c_completion_queue(grpc_completion_queue *c_completion_queue):             # <<<<<<<<<<<<<<
+ *   grpc_completion_queue_shutdown(c_completion_queue)
+ *   grpc_completion_queue_destroy(c_completion_queue)
+ */
+
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":72
+ * cdef class _CallState:
+ * 
+ *   def __cinit__(self):             # <<<<<<<<<<<<<<
+ *     self.due = set()
+ * 
+ */
+
+/* Python wrapper */
+static int __pyx_pw_7_cython_6cygrpc_10_CallState_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_7_cython_6cygrpc_10_CallState_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_7_cython_6cygrpc_10_CallState___cinit__(((struct __pyx_obj_7_cython_6cygrpc__CallState *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_7_cython_6cygrpc_10_CallState___cinit__(struct __pyx_obj_7_cython_6cygrpc__CallState *__pyx_v_self) {
+  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("__cinit__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":73
+ * 
+ *   def __cinit__(self):
+ *     self.due = set()             # <<<<<<<<<<<<<<
+ * 
+ *   cdef void maybe_delete_call_tracer(self) except *:
+ */
+  __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 73, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->due);
+  __Pyx_DECREF(__pyx_v_self->due);
+  __pyx_v_self->due = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":72
+ * cdef class _CallState:
+ * 
+ *   def __cinit__(self):             # <<<<<<<<<<<<<<
+ *     self.due = set()
+ * 
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc._CallState.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":75
+ *     self.due = set()
+ * 
+ *   cdef void maybe_delete_call_tracer(self) except *:             # <<<<<<<<<<<<<<
+ *     if not self.call_tracer_capsule:
+ *       return
+ */
+
+static void __pyx_f_7_cython_6cygrpc_10_CallState_maybe_delete_call_tracer(struct __pyx_obj_7_cython_6cygrpc__CallState *__pyx_v_self) {
+  __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;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("maybe_delete_call_tracer", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":76
+ * 
+ *   cdef void maybe_delete_call_tracer(self) except *:
+ *     if not self.call_tracer_capsule:             # <<<<<<<<<<<<<<
+ *       return
+ *     _observability.delete_call_tracer(self.call_tracer_capsule)
+ */
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->call_tracer_capsule); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(12, 76, __pyx_L1_error)
+  __pyx_t_2 = (!__pyx_t_1);
+  if (__pyx_t_2) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":77
+ *   cdef void maybe_delete_call_tracer(self) except *:
+ *     if not self.call_tracer_capsule:
+ *       return             # <<<<<<<<<<<<<<
+ *     _observability.delete_call_tracer(self.call_tracer_capsule)
+ * 
+ */
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":76
+ * 
+ *   cdef void maybe_delete_call_tracer(self) except *:
+ *     if not self.call_tracer_capsule:             # <<<<<<<<<<<<<<
+ *       return
+ *     _observability.delete_call_tracer(self.call_tracer_capsule)
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":78
+ *     if not self.call_tracer_capsule:
+ *       return
+ *     _observability.delete_call_tracer(self.call_tracer_capsule)             # <<<<<<<<<<<<<<
+ * 
+ *   cdef void maybe_set_client_call_tracer_on_call(self, bytes method_name, bytes target) except *:
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_observability); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 78, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_delete_call_tracer); if (unlikely(!__pyx_t_5)) __PYX_ERR(12, 78, __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, __pyx_v_self->call_tracer_capsule};
+    __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(12, 78, __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/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":75
+ *     self.due = set()
+ * 
+ *   cdef void maybe_delete_call_tracer(self) except *:             # <<<<<<<<<<<<<<
+ *     if not self.call_tracer_capsule:
+ *       return
+ */
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_AddTraceback("_cython.cygrpc._CallState.maybe_delete_call_tracer", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":80
+ *     _observability.delete_call_tracer(self.call_tracer_capsule)
+ * 
+ *   cdef void maybe_set_client_call_tracer_on_call(self, bytes method_name, bytes target) except *:             # <<<<<<<<<<<<<<
+ *     # TODO(xuanwn): use channel args to exclude those metrics.
+ *     for exclude_prefix in _observability._SERVICES_TO_EXCLUDE:
+ */
+
+static void __pyx_f_7_cython_6cygrpc_10_CallState_maybe_set_client_call_tracer_on_call(struct __pyx_obj_7_cython_6cygrpc__CallState *__pyx_v_self, PyObject *__pyx_v_method_name, PyObject *__pyx_v_target) {
+  PyObject *__pyx_v_exclude_prefix = NULL;
+  PyObject *__pyx_v_plugin = NULL;
+  PyObject *__pyx_v_capsule = NULL;
+  void *__pyx_v_capsule_ptr;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  Py_ssize_t __pyx_t_3;
+  PyObject *(*__pyx_t_4)(PyObject *);
+  int __pyx_t_5;
+  PyObject *__pyx_t_6 = NULL;
+  unsigned int __pyx_t_7;
+  PyObject *__pyx_t_8 = NULL;
+  PyObject *__pyx_t_9 = NULL;
+  PyObject *__pyx_t_10 = NULL;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  void *__pyx_t_14;
+  PyObject *__pyx_t_15 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("maybe_set_client_call_tracer_on_call", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":82
+ *   cdef void maybe_set_client_call_tracer_on_call(self, bytes method_name, bytes target) except *:
+ *     # TODO(xuanwn): use channel args to exclude those metrics.
+ *     for exclude_prefix in _observability._SERVICES_TO_EXCLUDE:             # <<<<<<<<<<<<<<
+ *       if exclude_prefix in method_name:
+ *         return
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_observability); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 82, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_SERVICES_TO_EXCLUDE); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 82, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
+    __pyx_t_1 = __pyx_t_2; __Pyx_INCREF(__pyx_t_1);
+    __pyx_t_3 = 0;
+    __pyx_t_4 = NULL;
+  } else {
+    __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 82, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_4 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 82, __pyx_L1_error)
+  }
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  for (;;) {
+    if (likely(!__pyx_t_4)) {
+      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(12, 82, __pyx_L1_error)
+          #endif
+          if (__pyx_t_3 >= __pyx_temp) break;
+        }
+        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+        __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(12, 82, __pyx_L1_error)
+        #else
+        __pyx_t_2 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 82, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_2);
+        #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(12, 82, __pyx_L1_error)
+          #endif
+          if (__pyx_t_3 >= __pyx_temp) break;
+        }
+        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(12, 82, __pyx_L1_error)
+        #else
+        __pyx_t_2 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 82, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_2);
+        #endif
+      }
+    } else {
+      __pyx_t_2 = __pyx_t_4(__pyx_t_1);
+      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(12, 82, __pyx_L1_error)
+        }
+        break;
+      }
+      __Pyx_GOTREF(__pyx_t_2);
+    }
+    __Pyx_XDECREF_SET(__pyx_v_exclude_prefix, __pyx_t_2);
+    __pyx_t_2 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":83
+ *     # TODO(xuanwn): use channel args to exclude those metrics.
+ *     for exclude_prefix in _observability._SERVICES_TO_EXCLUDE:
+ *       if exclude_prefix in method_name:             # <<<<<<<<<<<<<<
+ *         return
+ *     with _observability.get_plugin() as plugin:
+ */
+    __pyx_t_5 = (__Pyx_PySequence_ContainsTF(__pyx_v_exclude_prefix, __pyx_v_method_name, Py_EQ)); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(12, 83, __pyx_L1_error)
+    if (__pyx_t_5) {
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":84
+ *     for exclude_prefix in _observability._SERVICES_TO_EXCLUDE:
+ *       if exclude_prefix in method_name:
+ *         return             # <<<<<<<<<<<<<<
+ *     with _observability.get_plugin() as plugin:
+ *       if not (plugin and plugin.observability_enabled):
+ */
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      goto __pyx_L0;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":83
+ *     # TODO(xuanwn): use channel args to exclude those metrics.
+ *     for exclude_prefix in _observability._SERVICES_TO_EXCLUDE:
+ *       if exclude_prefix in method_name:             # <<<<<<<<<<<<<<
+ *         return
+ *     with _observability.get_plugin() as plugin:
+ */
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":82
+ *   cdef void maybe_set_client_call_tracer_on_call(self, bytes method_name, bytes target) except *:
+ *     # TODO(xuanwn): use channel args to exclude those metrics.
+ *     for exclude_prefix in _observability._SERVICES_TO_EXCLUDE:             # <<<<<<<<<<<<<<
+ *       if exclude_prefix in method_name:
+ *         return
+ */
+  }
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":85
+ *       if exclude_prefix in method_name:
+ *         return
+ *     with _observability.get_plugin() as plugin:             # <<<<<<<<<<<<<<
+ *       if not (plugin and plugin.observability_enabled):
+ *         return
+ */
+  /*with:*/ {
+    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_observability); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 85, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_get_plugin); if (unlikely(!__pyx_t_6)) __PYX_ERR(12, 85, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_6);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_t_2 = NULL;
+    __pyx_t_7 = 0;
+    #if CYTHON_UNPACK_METHODS
+    if (unlikely(PyMethod_Check(__pyx_t_6))) {
+      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_6);
+      if (likely(__pyx_t_2)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+        __Pyx_INCREF(__pyx_t_2);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_6, function);
+        __pyx_t_7 = 1;
+      }
+    }
+    #endif
+    {
+      PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
+      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
+      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+      if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 85, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+    }
+    __pyx_t_8 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_exit); if (unlikely(!__pyx_t_8)) __PYX_ERR(12, 85, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_8);
+    __pyx_t_2 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_enter); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 85, __pyx_L7_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_9 = NULL;
+    __pyx_t_7 = 0;
+    #if CYTHON_UNPACK_METHODS
+    if (likely(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_7 = 1;
+      }
+    }
+    #endif
+    {
+      PyObject *__pyx_callargs[2] = {__pyx_t_9, NULL};
+      __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
+      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+      if (unlikely(!__pyx_t_6)) __PYX_ERR(12, 85, __pyx_L7_error)
+      __Pyx_GOTREF(__pyx_t_6);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    }
+    __pyx_t_2 = __pyx_t_6;
+    __pyx_t_6 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_PyThreadState_declare
+        __Pyx_PyThreadState_assign
+        __Pyx_ExceptionSave(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
+        __Pyx_XGOTREF(__pyx_t_10);
+        __Pyx_XGOTREF(__pyx_t_11);
+        __Pyx_XGOTREF(__pyx_t_12);
+        /*try:*/ {
+          __pyx_v_plugin = __pyx_t_2;
+          __pyx_t_2 = 0;
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":86
+ *         return
+ *     with _observability.get_plugin() as plugin:
+ *       if not (plugin and plugin.observability_enabled):             # <<<<<<<<<<<<<<
+ *         return
+ *       capsule = plugin.create_client_call_tracer(method_name, target)
+ */
+          __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_v_plugin); if (unlikely((__pyx_t_13 < 0))) __PYX_ERR(12, 86, __pyx_L11_error)
+          if (__pyx_t_13) {
+          } else {
+            __pyx_t_5 = __pyx_t_13;
+            goto __pyx_L18_bool_binop_done;
+          }
+          __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_plugin, __pyx_n_s_observability_enabled); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 86, __pyx_L11_error)
+          __Pyx_GOTREF(__pyx_t_2);
+          __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_13 < 0))) __PYX_ERR(12, 86, __pyx_L11_error)
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          __pyx_t_5 = __pyx_t_13;
+          __pyx_L18_bool_binop_done:;
+          __pyx_t_13 = (!__pyx_t_5);
+          if (__pyx_t_13) {
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":87
+ *     with _observability.get_plugin() as plugin:
+ *       if not (plugin and plugin.observability_enabled):
+ *         return             # <<<<<<<<<<<<<<
+ *       capsule = plugin.create_client_call_tracer(method_name, target)
+ *       capsule_ptr = cpython.PyCapsule_GetPointer(capsule, CLIENT_CALL_TRACER)
+ */
+            goto __pyx_L15_try_return;
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":86
+ *         return
+ *     with _observability.get_plugin() as plugin:
+ *       if not (plugin and plugin.observability_enabled):             # <<<<<<<<<<<<<<
+ *         return
+ *       capsule = plugin.create_client_call_tracer(method_name, target)
+ */
+          }
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":88
+ *       if not (plugin and plugin.observability_enabled):
+ *         return
+ *       capsule = plugin.create_client_call_tracer(method_name, target)             # <<<<<<<<<<<<<<
+ *       capsule_ptr = cpython.PyCapsule_GetPointer(capsule, CLIENT_CALL_TRACER)
+ *       _set_call_tracer(self.c_call, capsule_ptr)
+ */
+          __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_plugin, __pyx_n_s_create_client_call_tracer); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 88, __pyx_L11_error)
+          __Pyx_GOTREF(__pyx_t_1);
+          __pyx_t_6 = NULL;
+          __pyx_t_7 = 0;
+          #if CYTHON_UNPACK_METHODS
+          if (likely(PyMethod_Check(__pyx_t_1))) {
+            __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
+            if (likely(__pyx_t_6)) {
+              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+              __Pyx_INCREF(__pyx_t_6);
+              __Pyx_INCREF(function);
+              __Pyx_DECREF_SET(__pyx_t_1, function);
+              __pyx_t_7 = 1;
+            }
+          }
+          #endif
+          {
+            PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_v_method_name, __pyx_v_target};
+            __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_7, 2+__pyx_t_7);
+            __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+            if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 88, __pyx_L11_error)
+            __Pyx_GOTREF(__pyx_t_2);
+            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          }
+          __pyx_v_capsule = __pyx_t_2;
+          __pyx_t_2 = 0;
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":89
+ *         return
+ *       capsule = plugin.create_client_call_tracer(method_name, target)
+ *       capsule_ptr = cpython.PyCapsule_GetPointer(capsule, CLIENT_CALL_TRACER)             # <<<<<<<<<<<<<<
+ *       _set_call_tracer(self.c_call, capsule_ptr)
+ *       self.call_tracer_capsule = capsule
+ */
+          __pyx_t_14 = PyCapsule_GetPointer(__pyx_v_capsule, __pyx_v_7_cython_6cygrpc_CLIENT_CALL_TRACER); if (unlikely(__pyx_t_14 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(12, 89, __pyx_L11_error)
+          __pyx_v_capsule_ptr = __pyx_t_14;
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":90
+ *       capsule = plugin.create_client_call_tracer(method_name, target)
+ *       capsule_ptr = cpython.PyCapsule_GetPointer(capsule, CLIENT_CALL_TRACER)
+ *       _set_call_tracer(self.c_call, capsule_ptr)             # <<<<<<<<<<<<<<
+ *       self.call_tracer_capsule = capsule
+ * 
+ */
+          __pyx_f_7_cython_6cygrpc__set_call_tracer(__pyx_v_self->c_call, __pyx_v_capsule_ptr); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 90, __pyx_L11_error)
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":91
+ *       capsule_ptr = cpython.PyCapsule_GetPointer(capsule, CLIENT_CALL_TRACER)
+ *       _set_call_tracer(self.c_call, capsule_ptr)
+ *       self.call_tracer_capsule = capsule             # <<<<<<<<<<<<<<
+ * 
+ * cdef class _ChannelState:
+ */
+          __Pyx_INCREF(__pyx_v_capsule);
+          __Pyx_GIVEREF(__pyx_v_capsule);
+          __Pyx_GOTREF(__pyx_v_self->call_tracer_capsule);
+          __Pyx_DECREF(__pyx_v_self->call_tracer_capsule);
+          __pyx_v_self->call_tracer_capsule = __pyx_v_capsule;
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":85
+ *       if exclude_prefix in method_name:
+ *         return
+ *     with _observability.get_plugin() as plugin:             # <<<<<<<<<<<<<<
+ *       if not (plugin and plugin.observability_enabled):
+ *         return
+ */
+        }
+        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
+        __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
+        goto __pyx_L16_try_end;
+        __pyx_L11_error:;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+        /*except:*/ {
+          __Pyx_AddTraceback("_cython.cygrpc._CallState.maybe_set_client_call_tracer_on_call", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_1, &__pyx_t_6) < 0) __PYX_ERR(12, 85, __pyx_L13_except_error)
+          __Pyx_XGOTREF(__pyx_t_2);
+          __Pyx_XGOTREF(__pyx_t_1);
+          __Pyx_XGOTREF(__pyx_t_6);
+          __pyx_t_9 = PyTuple_Pack(3, __pyx_t_2, __pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_9)) __PYX_ERR(12, 85, __pyx_L13_except_error)
+          __Pyx_GOTREF(__pyx_t_9);
+          __pyx_t_15 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_9, NULL);
+          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+          if (unlikely(!__pyx_t_15)) __PYX_ERR(12, 85, __pyx_L13_except_error)
+          __Pyx_GOTREF(__pyx_t_15);
+          __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_15);
+          __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+          if (__pyx_t_13 < 0) __PYX_ERR(12, 85, __pyx_L13_except_error)
+          __pyx_t_5 = (!__pyx_t_13);
+          if (unlikely(__pyx_t_5)) {
+            __Pyx_GIVEREF(__pyx_t_2);
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_XGIVEREF(__pyx_t_6);
+            __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_1, __pyx_t_6);
+            __pyx_t_2 = 0; __pyx_t_1 = 0; __pyx_t_6 = 0; 
+            __PYX_ERR(12, 85, __pyx_L13_except_error)
+          }
+          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+          goto __pyx_L12_exception_handled;
+        }
+        __pyx_L13_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_10);
+        __Pyx_XGIVEREF(__pyx_t_11);
+        __Pyx_XGIVEREF(__pyx_t_12);
+        __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
+        goto __pyx_L1_error;
+        __pyx_L15_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_10);
+        __Pyx_XGIVEREF(__pyx_t_11);
+        __Pyx_XGIVEREF(__pyx_t_12);
+        __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
+        goto __pyx_L8_return;
+        __pyx_L12_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_10);
+        __Pyx_XGIVEREF(__pyx_t_11);
+        __Pyx_XGIVEREF(__pyx_t_12);
+        __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
+        __pyx_L16_try_end:;
+      }
+    }
+    /*finally:*/ {
+      /*normal exit:*/{
+        if (__pyx_t_8) {
+          __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__11, NULL);
+          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+          if (unlikely(!__pyx_t_12)) __PYX_ERR(12, 85, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+        }
+        goto __pyx_L10;
+      }
+      __pyx_L8_return: {
+        if (__pyx_t_8) {
+          __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__11, NULL);
+          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+          if (unlikely(!__pyx_t_12)) __PYX_ERR(12, 85, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+        }
+        goto __pyx_L0;
+      }
+      __pyx_L10:;
+    }
+    goto __pyx_L23;
+    __pyx_L7_error:;
+    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+    goto __pyx_L1_error;
+    __pyx_L23:;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":80
+ *     _observability.delete_call_tracer(self.call_tracer_capsule)
+ * 
+ *   cdef void maybe_set_client_call_tracer_on_call(self, bytes method_name, bytes target) except *:             # <<<<<<<<<<<<<<
+ *     # TODO(xuanwn): use channel args to exclude those metrics.
+ *     for exclude_prefix in _observability._SERVICES_TO_EXCLUDE:
+ */
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_AddTraceback("_cython.cygrpc._CallState.maybe_set_client_call_tracer_on_call", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_exclude_prefix);
+  __Pyx_XDECREF(__pyx_v_plugin);
+  __Pyx_XDECREF(__pyx_v_capsule);
+  __Pyx_RefNannyFinishContext();
+}
+
+/* "(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_7_cython_6cygrpc_10_CallState_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_10_CallState_3__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_10_CallState_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_10_CallState_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_7_cython_6cygrpc_10_CallState_2__reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc__CallState *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_10_CallState_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__CallState *__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(10, 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("_cython.cygrpc._CallState.__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_7_cython_6cygrpc_10_CallState_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_10_CallState_5__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_10_CallState_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_10_CallState_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(10, 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(10, 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(10, 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("_cython.cygrpc._CallState.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_10_CallState_4__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc__CallState *)__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_7_cython_6cygrpc_10_CallState_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__CallState *__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(10, 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("_cython.cygrpc._CallState.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":95
+ * cdef class _ChannelState:
+ * 
+ *   def __cinit__(self, target):             # <<<<<<<<<<<<<<
+ *     self.target = target
+ *     self.condition = threading.Condition()
+ */
+
+/* Python wrapper */
+static int __pyx_pw_7_cython_6cygrpc_13_ChannelState_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_7_cython_6cygrpc_13_ChannelState_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_target = 0;
+  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject* values[1] = {0};
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  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);
+  {
+    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_target,0};
+    if (__pyx_kwds) {
+      Py_ssize_t kw_args;
+      switch (__pyx_nargs) {
+        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
+      switch (__pyx_nargs) {
+        case  0:
+        if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_target)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 95, __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, "__cinit__") < 0)) __PYX_ERR(12, 95, __pyx_L3_error)
+      }
+    } else if (unlikely(__pyx_nargs != 1)) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+    }
+    __pyx_v_target = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, __pyx_nargs); __PYX_ERR(12, 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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_AddTraceback("_cython.cygrpc._ChannelState.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_13_ChannelState___cinit__(((struct __pyx_obj_7_cython_6cygrpc__ChannelState *)__pyx_v_self), __pyx_v_target);
+
+  /* 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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_7_cython_6cygrpc_13_ChannelState___cinit__(struct __pyx_obj_7_cython_6cygrpc__ChannelState *__pyx_v_self, PyObject *__pyx_v_target) {
+  int __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;
+  __Pyx_RefNannySetupContext("__cinit__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":96
+ * 
+ *   def __cinit__(self, target):
+ *     self.target = target             # <<<<<<<<<<<<<<
+ *     self.condition = threading.Condition()
+ *     self.open = True
+ */
+  if (!(likely(PyBytes_CheckExact(__pyx_v_target))||((__pyx_v_target) == Py_None) || __Pyx_RaiseUnexpectedTypeError("bytes", __pyx_v_target))) __PYX_ERR(12, 96, __pyx_L1_error)
+  __pyx_t_1 = __pyx_v_target;
+  __Pyx_INCREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->target);
+  __Pyx_DECREF(__pyx_v_self->target);
+  __pyx_v_self->target = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":97
+ *   def __cinit__(self, target):
+ *     self.target = target
+ *     self.condition = threading.Condition()             # <<<<<<<<<<<<<<
+ *     self.open = True
+ *     self.integrated_call_states = {}
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_threading); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 97, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Condition); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 97, __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(12, 97, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  }
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->condition);
+  __Pyx_DECREF(__pyx_v_self->condition);
+  __pyx_v_self->condition = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":98
+ *     self.target = target
+ *     self.condition = threading.Condition()
+ *     self.open = True             # <<<<<<<<<<<<<<
+ *     self.integrated_call_states = {}
+ *     self.segregated_call_states = set()
+ */
+  __Pyx_INCREF(Py_True);
+  __Pyx_GIVEREF(Py_True);
+  __Pyx_GOTREF(__pyx_v_self->open);
+  __Pyx_DECREF(__pyx_v_self->open);
+  __pyx_v_self->open = Py_True;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":99
+ *     self.condition = threading.Condition()
+ *     self.open = True
+ *     self.integrated_call_states = {}             # <<<<<<<<<<<<<<
+ *     self.segregated_call_states = set()
+ *     self.connectivity_due = set()
+ */
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 99, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->integrated_call_states);
+  __Pyx_DECREF(__pyx_v_self->integrated_call_states);
+  __pyx_v_self->integrated_call_states = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":100
+ *     self.open = True
+ *     self.integrated_call_states = {}
+ *     self.segregated_call_states = set()             # <<<<<<<<<<<<<<
+ *     self.connectivity_due = set()
+ *     self.closed_reason = None
+ */
+  __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 100, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->segregated_call_states);
+  __Pyx_DECREF(__pyx_v_self->segregated_call_states);
+  __pyx_v_self->segregated_call_states = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":101
+ *     self.integrated_call_states = {}
+ *     self.segregated_call_states = set()
+ *     self.connectivity_due = set()             # <<<<<<<<<<<<<<
+ *     self.closed_reason = None
+ * 
+ */
+  __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 101, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->connectivity_due);
+  __Pyx_DECREF(__pyx_v_self->connectivity_due);
+  __pyx_v_self->connectivity_due = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":102
+ *     self.segregated_call_states = set()
+ *     self.connectivity_due = set()
+ *     self.closed_reason = None             # <<<<<<<<<<<<<<
+ * 
+ * cdef class CallHandle:
+ */
+  __Pyx_INCREF(Py_None);
+  __Pyx_GIVEREF(Py_None);
+  __Pyx_GOTREF(__pyx_v_self->closed_reason);
+  __Pyx_DECREF(__pyx_v_self->closed_reason);
+  __pyx_v_self->closed_reason = Py_None;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":95
+ * cdef class _ChannelState:
+ * 
+ *   def __cinit__(self, target):             # <<<<<<<<<<<<<<
+ *     self.target = target
+ *     self.condition = threading.Condition()
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("_cython.cygrpc._ChannelState.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __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_7_cython_6cygrpc_13_ChannelState_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_13_ChannelState_3__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_13_ChannelState_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_13_ChannelState_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_7_cython_6cygrpc_13_ChannelState_2__reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc__ChannelState *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_13_ChannelState_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__ChannelState *__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(10, 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("_cython.cygrpc._ChannelState.__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_7_cython_6cygrpc_13_ChannelState_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_13_ChannelState_5__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_13_ChannelState_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_13_ChannelState_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(10, 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(10, 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(10, 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("_cython.cygrpc._ChannelState.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_13_ChannelState_4__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc__ChannelState *)__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_7_cython_6cygrpc_13_ChannelState_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__ChannelState *__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(10, 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("_cython.cygrpc._ChannelState.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":106
+ * cdef class CallHandle:
+ * 
+ *   def __cinit__(self, _ChannelState channel_state, object method):             # <<<<<<<<<<<<<<
+ *     self.method = method
+ *     cpython.Py_INCREF(method)
+ */
+
+/* Python wrapper */
+static int __pyx_pw_7_cython_6cygrpc_10CallHandle_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_7_cython_6cygrpc_10CallHandle_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct __pyx_obj_7_cython_6cygrpc__ChannelState *__pyx_v_channel_state = 0;
+  PyObject *__pyx_v_method = 0;
+  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject* values[2] = {0,0};
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  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);
+  {
+    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_channel_state,&__pyx_n_s_method,0};
+    if (__pyx_kwds) {
+      Py_ssize_t kw_args;
+      switch (__pyx_nargs) {
+        case  2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
+      switch (__pyx_nargs) {
+        case  0:
+        if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_channel_state)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 106, __pyx_L3_error)
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_method)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 106, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, 1); __PYX_ERR(12, 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, "__cinit__") < 0)) __PYX_ERR(12, 106, __pyx_L3_error)
+      }
+    } else if (unlikely(__pyx_nargs != 2)) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+      values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
+    }
+    __pyx_v_channel_state = ((struct __pyx_obj_7_cython_6cygrpc__ChannelState *)values[0]);
+    __pyx_v_method = values[1];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, __pyx_nargs); __PYX_ERR(12, 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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_AddTraceback("_cython.cygrpc.CallHandle.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_channel_state), __pyx_ptype_7_cython_6cygrpc__ChannelState, 1, "channel_state", 0))) __PYX_ERR(12, 106, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_10CallHandle___cinit__(((struct __pyx_obj_7_cython_6cygrpc_CallHandle *)__pyx_v_self), __pyx_v_channel_state, __pyx_v_method);
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = -1;
+  __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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_7_cython_6cygrpc_10CallHandle___cinit__(struct __pyx_obj_7_cython_6cygrpc_CallHandle *__pyx_v_self, struct __pyx_obj_7_cython_6cygrpc__ChannelState *__pyx_v_channel_state, PyObject *__pyx_v_method) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  char const *__pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__cinit__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":107
+ * 
+ *   def __cinit__(self, _ChannelState channel_state, object method):
+ *     self.method = method             # <<<<<<<<<<<<<<
+ *     cpython.Py_INCREF(method)
+ *     # Note that since we always pass None for host, we set the
+ */
+  __Pyx_INCREF(__pyx_v_method);
+  __Pyx_GIVEREF(__pyx_v_method);
+  __Pyx_GOTREF(__pyx_v_self->method);
+  __Pyx_DECREF(__pyx_v_self->method);
+  __pyx_v_self->method = __pyx_v_method;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":108
+ *   def __cinit__(self, _ChannelState channel_state, object method):
+ *     self.method = method
+ *     cpython.Py_INCREF(method)             # <<<<<<<<<<<<<<
+ *     # Note that since we always pass None for host, we set the
+ *     # second-to-last parameter of grpc_channel_register_call to a fixed
+ */
+  Py_INCREF(__pyx_v_method);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":113
+ *     # NULL value.
+ *     self.c_call_handle = grpc_channel_register_call(
+ *       channel_state.c_channel, <const char *>method, NULL, NULL)             # <<<<<<<<<<<<<<
+ * 
+ *   def __dealloc__(self):
+ */
+  __pyx_t_1 = __Pyx_PyObject_AsString(__pyx_v_method); if (unlikely((!__pyx_t_1) && PyErr_Occurred())) __PYX_ERR(12, 113, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":112
+ *     # second-to-last parameter of grpc_channel_register_call to a fixed
+ *     # NULL value.
+ *     self.c_call_handle = grpc_channel_register_call(             # <<<<<<<<<<<<<<
+ *       channel_state.c_channel, <const char *>method, NULL, NULL)
+ * 
+ */
+  __pyx_v_self->c_call_handle = grpc_channel_register_call(__pyx_v_channel_state->c_channel, ((char const *)__pyx_t_1), NULL, NULL);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":106
+ * cdef class CallHandle:
+ * 
+ *   def __cinit__(self, _ChannelState channel_state, object method):             # <<<<<<<<<<<<<<
+ *     self.method = method
+ *     cpython.Py_INCREF(method)
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc.CallHandle.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":115
+ *       channel_state.c_channel, <const char *>method, NULL, NULL)
+ * 
+ *   def __dealloc__(self):             # <<<<<<<<<<<<<<
+ *     cpython.Py_DECREF(self.method)
+ * 
+ */
+
+/* Python wrapper */
+static void __pyx_pw_7_cython_6cygrpc_10CallHandle_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
+static void __pyx_pw_7_cython_6cygrpc_10CallHandle_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_7_cython_6cygrpc_10CallHandle_2__dealloc__(((struct __pyx_obj_7_cython_6cygrpc_CallHandle *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+}
+
+static void __pyx_pf_7_cython_6cygrpc_10CallHandle_2__dealloc__(struct __pyx_obj_7_cython_6cygrpc_CallHandle *__pyx_v_self) {
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannySetupContext("__dealloc__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":116
+ * 
+ *   def __dealloc__(self):
+ *     cpython.Py_DECREF(self.method)             # <<<<<<<<<<<<<<
+ * 
+ *   @property
+ */
+  __pyx_t_1 = __pyx_v_self->method;
+  __Pyx_INCREF(__pyx_t_1);
+  Py_DECREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":115
+ *       channel_state.c_channel, <const char *>method, NULL, NULL)
+ * 
+ *   def __dealloc__(self):             # <<<<<<<<<<<<<<
+ *     cpython.Py_DECREF(self.method)
+ * 
+ */
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":118
+ *     cpython.Py_DECREF(self.method)
+ * 
+ *   @property             # <<<<<<<<<<<<<<
+ *   def call_handle(self):
+ *     return cpython.PyLong_FromVoidPtr(self.c_call_handle)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_10CallHandle_11call_handle_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_10CallHandle_11call_handle_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_7_cython_6cygrpc_10CallHandle_11call_handle___get__(((struct __pyx_obj_7_cython_6cygrpc_CallHandle *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_10CallHandle_11call_handle___get__(struct __pyx_obj_7_cython_6cygrpc_CallHandle *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":120
+ *   @property
+ *   def call_handle(self):
+ *     return cpython.PyLong_FromVoidPtr(self.c_call_handle)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyLong_FromVoidPtr(__pyx_v_self->c_call_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 120, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":118
+ *     cpython.Py_DECREF(self.method)
+ * 
+ *   @property             # <<<<<<<<<<<<<<
+ *   def call_handle(self):
+ *     return cpython.PyLong_FromVoidPtr(self.c_call_handle)
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.CallHandle.call_handle.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "(tree fragment)":1
+ * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
+ *     raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
+ * def __setstate_cython__(self, __pyx_state):
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_10CallHandle_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_10CallHandle_5__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_10CallHandle_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_10CallHandle_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_7_cython_6cygrpc_10CallHandle_4__reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc_CallHandle *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_10CallHandle_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_CallHandle *__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(10, 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("_cython.cygrpc.CallHandle.__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_7_cython_6cygrpc_10CallHandle_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_10CallHandle_7__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_10CallHandle_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_10CallHandle_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(10, 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(10, 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(10, 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("_cython.cygrpc.CallHandle.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_10CallHandle_6__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc_CallHandle *)__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_7_cython_6cygrpc_10CallHandle_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_CallHandle *__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(10, 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("_cython.cygrpc.CallHandle.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":124
+ * 
+ * 
+ * cdef tuple _operate(grpc_call *c_call, object operations, object user_tag):             # <<<<<<<<<<<<<<
+ *   cdef grpc_call_error c_call_error
+ *   cdef _BatchOperationTag tag = _BatchOperationTag(user_tag, operations, None)
+ */
+
+static PyObject *__pyx_f_7_cython_6cygrpc__operate(grpc_call *__pyx_v_c_call, PyObject *__pyx_v_operations, PyObject *__pyx_v_user_tag) {
+  grpc_call_error __pyx_v_c_call_error;
+  struct __pyx_obj_7_cython_6cygrpc__BatchOperationTag *__pyx_v_tag = 0;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_operate", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":126
+ * cdef tuple _operate(grpc_call *c_call, object operations, object user_tag):
+ *   cdef grpc_call_error c_call_error
+ *   cdef _BatchOperationTag tag = _BatchOperationTag(user_tag, operations, None)             # <<<<<<<<<<<<<<
+ *   tag.prepare()
+ *   cpython.Py_INCREF(tag)
+ */
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 126, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(__pyx_v_user_tag);
+  __Pyx_GIVEREF(__pyx_v_user_tag);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_user_tag)) __PYX_ERR(12, 126, __pyx_L1_error);
+  __Pyx_INCREF(__pyx_v_operations);
+  __Pyx_GIVEREF(__pyx_v_operations);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_operations)) __PYX_ERR(12, 126, __pyx_L1_error);
+  __Pyx_INCREF(Py_None);
+  __Pyx_GIVEREF(Py_None);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None)) __PYX_ERR(12, 126, __pyx_L1_error);
+  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_7_cython_6cygrpc__BatchOperationTag), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 126, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_v_tag = ((struct __pyx_obj_7_cython_6cygrpc__BatchOperationTag *)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":127
+ *   cdef grpc_call_error c_call_error
+ *   cdef _BatchOperationTag tag = _BatchOperationTag(user_tag, operations, None)
+ *   tag.prepare()             # <<<<<<<<<<<<<<
+ *   cpython.Py_INCREF(tag)
+ *   with nogil:
+ */
+  ((struct __pyx_vtabstruct_7_cython_6cygrpc__BatchOperationTag *)__pyx_v_tag->__pyx_base.__pyx_vtab)->prepare(__pyx_v_tag); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 127, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":128
+ *   cdef _BatchOperationTag tag = _BatchOperationTag(user_tag, operations, None)
+ *   tag.prepare()
+ *   cpython.Py_INCREF(tag)             # <<<<<<<<<<<<<<
+ *   with nogil:
+ *     c_call_error = grpc_call_start_batch(
+ */
+  Py_INCREF(((PyObject *)__pyx_v_tag));
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":129
+ *   tag.prepare()
+ *   cpython.Py_INCREF(tag)
+ *   with nogil:             # <<<<<<<<<<<<<<
+ *     c_call_error = grpc_call_start_batch(
+ *         c_call, tag.c_ops, tag.c_nops, <cpython.PyObject *>tag, NULL)
+ */
+  {
+      #ifdef WITH_THREAD
+      PyThreadState *_save;
+      _save = NULL;
+      Py_UNBLOCK_THREADS
+      __Pyx_FastGIL_Remember();
+      #endif
+      /*try:*/ {
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":130
+ *   cpython.Py_INCREF(tag)
+ *   with nogil:
+ *     c_call_error = grpc_call_start_batch(             # <<<<<<<<<<<<<<
+ *         c_call, tag.c_ops, tag.c_nops, <cpython.PyObject *>tag, NULL)
+ *   return c_call_error, tag
+ */
+        __pyx_v_c_call_error = grpc_call_start_batch(__pyx_v_c_call, __pyx_v_tag->c_ops, __pyx_v_tag->c_nops, ((PyObject *)__pyx_v_tag), NULL);
+      }
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":129
+ *   tag.prepare()
+ *   cpython.Py_INCREF(tag)
+ *   with nogil:             # <<<<<<<<<<<<<<
+ *     c_call_error = grpc_call_start_batch(
+ *         c_call, tag.c_ops, tag.c_nops, <cpython.PyObject *>tag, NULL)
+ */
+      /*finally:*/ {
+        /*normal exit:*/{
+          #ifdef WITH_THREAD
+          __Pyx_FastGIL_Forget();
+          Py_BLOCK_THREADS
+          #endif
+          goto __pyx_L5;
+        }
+        __pyx_L5:;
+      }
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":132
+ *     c_call_error = grpc_call_start_batch(
+ *         c_call, tag.c_ops, tag.c_nops, <cpython.PyObject *>tag, NULL)
+ *   return c_call_error, tag             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = __Pyx_PyInt_From_grpc_call_error(__pyx_v_c_call_error); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 132, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 132, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_2);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2)) __PYX_ERR(12, 132, __pyx_L1_error);
+  __Pyx_INCREF((PyObject *)__pyx_v_tag);
+  __Pyx_GIVEREF((PyObject *)__pyx_v_tag);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_tag))) __PYX_ERR(12, 132, __pyx_L1_error);
+  __pyx_t_2 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":124
+ * 
+ * 
+ * cdef tuple _operate(grpc_call *c_call, object operations, object user_tag):             # <<<<<<<<<<<<<<
+ *   cdef grpc_call_error c_call_error
+ *   cdef _BatchOperationTag tag = _BatchOperationTag(user_tag, operations, None)
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("_cython.cygrpc._operate", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_tag);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":135
+ * 
+ * 
+ * cdef object _operate_from_integrated_call(             # <<<<<<<<<<<<<<
+ *     _ChannelState channel_state, _CallState call_state, object operations,
+ *     object user_tag):
+ */
+
+static PyObject *__pyx_f_7_cython_6cygrpc__operate_from_integrated_call(struct __pyx_obj_7_cython_6cygrpc__ChannelState *__pyx_v_channel_state, struct __pyx_obj_7_cython_6cygrpc__CallState *__pyx_v_call_state, PyObject *__pyx_v_operations, PyObject *__pyx_v_user_tag) {
+  grpc_call_error __pyx_v_c_call_error;
+  struct __pyx_obj_7_cython_6cygrpc__BatchOperationTag *__pyx_v_tag = 0;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  unsigned int __pyx_t_5;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
+  int __pyx_t_9;
+  grpc_call_error __pyx_t_10;
+  int __pyx_t_11;
+  PyObject *__pyx_t_12 = NULL;
+  PyObject *__pyx_t_13 = NULL;
+  int __pyx_t_14;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_operate_from_integrated_call", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":140
+ *   cdef grpc_call_error c_call_error
+ *   cdef _BatchOperationTag tag
+ *   with channel_state.condition:             # <<<<<<<<<<<<<<
+ *     if call_state.due:
+ *       c_call_error, tag = _operate(call_state.c_call, operations, user_tag)
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_v_channel_state->condition, __pyx_n_s_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 140, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_v_channel_state->condition, __pyx_n_s_enter); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 140, __pyx_L3_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(12, 140, __pyx_L3_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    /*try:*/ {
+      {
+        __Pyx_PyThreadState_declare
+        __Pyx_PyThreadState_assign
+        __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_8);
+        /*try:*/ {
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":141
+ *   cdef _BatchOperationTag tag
+ *   with channel_state.condition:
+ *     if call_state.due:             # <<<<<<<<<<<<<<
+ *       c_call_error, tag = _operate(call_state.c_call, operations, user_tag)
+ *       if c_call_error == GRPC_CALL_OK:
+ */
+          __pyx_t_9 = (__pyx_v_call_state->due != Py_None)&&(PySet_GET_SIZE(__pyx_v_call_state->due) != 0);
+          if (__pyx_t_9) {
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":142
+ *   with channel_state.condition:
+ *     if call_state.due:
+ *       c_call_error, tag = _operate(call_state.c_call, operations, user_tag)             # <<<<<<<<<<<<<<
+ *       if c_call_error == GRPC_CALL_OK:
+ *         call_state.due.add(tag)
+ */
+            __pyx_t_2 = __pyx_f_7_cython_6cygrpc__operate(__pyx_v_call_state->c_call, __pyx_v_operations, __pyx_v_user_tag); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 142, __pyx_L7_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(12, 142, __pyx_L7_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(12, 142, __pyx_L7_error)
+              __Pyx_GOTREF(__pyx_t_3);
+              __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 142, __pyx_L7_error)
+              __Pyx_GOTREF(__pyx_t_4);
+              #endif
+              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+            } else {
+              __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(12, 142, __pyx_L7_error)
+            }
+            __pyx_t_10 = ((grpc_call_error)__Pyx_PyInt_As_grpc_call_error(__pyx_t_3)); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 142, __pyx_L7_error)
+            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+            if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_7_cython_6cygrpc__BatchOperationTag))))) __PYX_ERR(12, 142, __pyx_L7_error)
+            __pyx_v_c_call_error = __pyx_t_10;
+            __pyx_v_tag = ((struct __pyx_obj_7_cython_6cygrpc__BatchOperationTag *)__pyx_t_4);
+            __pyx_t_4 = 0;
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":143
+ *     if call_state.due:
+ *       c_call_error, tag = _operate(call_state.c_call, operations, user_tag)
+ *       if c_call_error == GRPC_CALL_OK:             # <<<<<<<<<<<<<<
+ *         call_state.due.add(tag)
+ *         channel_state.integrated_call_states[tag] = call_state
+ */
+            __pyx_t_9 = (__pyx_v_c_call_error == GRPC_CALL_OK);
+            if (__pyx_t_9) {
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":144
+ *       c_call_error, tag = _operate(call_state.c_call, operations, user_tag)
+ *       if c_call_error == GRPC_CALL_OK:
+ *         call_state.due.add(tag)             # <<<<<<<<<<<<<<
+ *         channel_state.integrated_call_states[tag] = call_state
+ *         return True
+ */
+              if (unlikely(__pyx_v_call_state->due == Py_None)) {
+                PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "add");
+                __PYX_ERR(12, 144, __pyx_L7_error)
+              }
+              __pyx_t_11 = PySet_Add(__pyx_v_call_state->due, ((PyObject *)__pyx_v_tag)); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(12, 144, __pyx_L7_error)
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":145
+ *       if c_call_error == GRPC_CALL_OK:
+ *         call_state.due.add(tag)
+ *         channel_state.integrated_call_states[tag] = call_state             # <<<<<<<<<<<<<<
+ *         return True
+ *       else:
+ */
+              if (unlikely(__pyx_v_channel_state->integrated_call_states == Py_None)) {
+                PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+                __PYX_ERR(12, 145, __pyx_L7_error)
+              }
+              if (unlikely((PyDict_SetItem(__pyx_v_channel_state->integrated_call_states, ((PyObject *)__pyx_v_tag), ((PyObject *)__pyx_v_call_state)) < 0))) __PYX_ERR(12, 145, __pyx_L7_error)
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":146
+ *         call_state.due.add(tag)
+ *         channel_state.integrated_call_states[tag] = call_state
+ *         return True             # <<<<<<<<<<<<<<
+ *       else:
+ *         _raise_call_error_no_metadata(c_call_error)
+ */
+              __Pyx_XDECREF(__pyx_r);
+              __Pyx_INCREF(Py_True);
+              __pyx_r = Py_True;
+              goto __pyx_L11_try_return;
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":143
+ *     if call_state.due:
+ *       c_call_error, tag = _operate(call_state.c_call, operations, user_tag)
+ *       if c_call_error == GRPC_CALL_OK:             # <<<<<<<<<<<<<<
+ *         call_state.due.add(tag)
+ *         channel_state.integrated_call_states[tag] = call_state
+ */
+            }
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":148
+ *         return True
+ *       else:
+ *         _raise_call_error_no_metadata(c_call_error)             # <<<<<<<<<<<<<<
+ *     else:
+ *       return False
+ */
+            /*else*/ {
+              __pyx_t_2 = __Pyx_PyInt_From_grpc_call_error(__pyx_v_c_call_error); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 148, __pyx_L7_error)
+              __Pyx_GOTREF(__pyx_t_2);
+              __pyx_f_7_cython_6cygrpc__raise_call_error_no_metadata(__pyx_t_2); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 148, __pyx_L7_error)
+              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+            }
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":141
+ *   cdef _BatchOperationTag tag
+ *   with channel_state.condition:
+ *     if call_state.due:             # <<<<<<<<<<<<<<
+ *       c_call_error, tag = _operate(call_state.c_call, operations, user_tag)
+ *       if c_call_error == GRPC_CALL_OK:
+ */
+            goto __pyx_L13;
+          }
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":150
+ *         _raise_call_error_no_metadata(c_call_error)
+ *     else:
+ *       return False             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+          /*else*/ {
+            __Pyx_XDECREF(__pyx_r);
+            __Pyx_INCREF(Py_False);
+            __pyx_r = Py_False;
+            goto __pyx_L11_try_return;
+          }
+          __pyx_L13:;
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":140
+ *   cdef grpc_call_error c_call_error
+ *   cdef _BatchOperationTag tag
+ *   with channel_state.condition:             # <<<<<<<<<<<<<<
+ *     if call_state.due:
+ *       c_call_error, tag = _operate(call_state.c_call, operations, user_tag)
+ */
+        }
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+        goto __pyx_L12_try_end;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        /*except:*/ {
+          __Pyx_AddTraceback("_cython.cygrpc._operate_from_integrated_call", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_4, &__pyx_t_3) < 0) __PYX_ERR(12, 140, __pyx_L9_except_error)
+          __Pyx_XGOTREF(__pyx_t_2);
+          __Pyx_XGOTREF(__pyx_t_4);
+          __Pyx_XGOTREF(__pyx_t_3);
+          __pyx_t_12 = PyTuple_Pack(3, __pyx_t_2, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_12)) __PYX_ERR(12, 140, __pyx_L9_except_error)
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_12, NULL);
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(!__pyx_t_13)) __PYX_ERR(12, 140, __pyx_L9_except_error)
+          __Pyx_GOTREF(__pyx_t_13);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_13);
+          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+          if (__pyx_t_9 < 0) __PYX_ERR(12, 140, __pyx_L9_except_error)
+          __pyx_t_14 = (!__pyx_t_9);
+          if (unlikely(__pyx_t_14)) {
+            __Pyx_GIVEREF(__pyx_t_2);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_XGIVEREF(__pyx_t_3);
+            __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_4, __pyx_t_3);
+            __pyx_t_2 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            __PYX_ERR(12, 140, __pyx_L9_except_error)
+          }
+          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_XGIVEREF(__pyx_t_8);
+        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
+        goto __pyx_L1_error;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_XGIVEREF(__pyx_t_8);
+        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
+        goto __pyx_L4_return;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_XGIVEREF(__pyx_t_8);
+        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
+        __pyx_L12_try_end:;
+      }
+    }
+    /*finally:*/ {
+      /*normal exit:*/{
+        if (__pyx_t_1) {
+          __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__11, NULL);
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          if (unlikely(!__pyx_t_8)) __PYX_ERR(12, 140, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_8);
+          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+        }
+        goto __pyx_L6;
+      }
+      __pyx_L4_return: {
+        __pyx_t_8 = __pyx_r;
+        __pyx_r = 0;
+        if (__pyx_t_1) {
+          __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__11, NULL);
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          if (unlikely(!__pyx_t_7)) __PYX_ERR(12, 140, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_7);
+          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        }
+        __pyx_r = __pyx_t_8;
+        __pyx_t_8 = 0;
+        goto __pyx_L0;
+      }
+      __pyx_L6:;
+    }
+    goto __pyx_L18;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    goto __pyx_L1_error;
+    __pyx_L18:;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":135
+ * 
+ * 
+ * cdef object _operate_from_integrated_call(             # <<<<<<<<<<<<<<
+ *     _ChannelState channel_state, _CallState call_state, object operations,
+ *     object user_tag):
+ */
+
+  /* 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_12);
+  __Pyx_AddTraceback("_cython.cygrpc._operate_from_integrated_call", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_tag);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":153
+ * 
+ * 
+ * cdef object _operate_from_segregated_call(             # <<<<<<<<<<<<<<
+ *     _ChannelState channel_state, _CallState call_state, object operations,
+ *     object user_tag):
+ */
+
+static PyObject *__pyx_f_7_cython_6cygrpc__operate_from_segregated_call(struct __pyx_obj_7_cython_6cygrpc__ChannelState *__pyx_v_channel_state, struct __pyx_obj_7_cython_6cygrpc__CallState *__pyx_v_call_state, PyObject *__pyx_v_operations, PyObject *__pyx_v_user_tag) {
+  grpc_call_error __pyx_v_c_call_error;
+  struct __pyx_obj_7_cython_6cygrpc__BatchOperationTag *__pyx_v_tag = 0;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  unsigned int __pyx_t_5;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
+  int __pyx_t_9;
+  grpc_call_error __pyx_t_10;
+  int __pyx_t_11;
+  PyObject *__pyx_t_12 = NULL;
+  PyObject *__pyx_t_13 = NULL;
+  int __pyx_t_14;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_operate_from_segregated_call", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":158
+ *   cdef grpc_call_error c_call_error
+ *   cdef _BatchOperationTag tag
+ *   with channel_state.condition:             # <<<<<<<<<<<<<<
+ *     if call_state.due:
+ *       c_call_error, tag = _operate(call_state.c_call, operations, user_tag)
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_v_channel_state->condition, __pyx_n_s_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 158, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_v_channel_state->condition, __pyx_n_s_enter); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 158, __pyx_L3_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(12, 158, __pyx_L3_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    /*try:*/ {
+      {
+        __Pyx_PyThreadState_declare
+        __Pyx_PyThreadState_assign
+        __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_8);
+        /*try:*/ {
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":159
+ *   cdef _BatchOperationTag tag
+ *   with channel_state.condition:
+ *     if call_state.due:             # <<<<<<<<<<<<<<
+ *       c_call_error, tag = _operate(call_state.c_call, operations, user_tag)
+ *       if c_call_error == GRPC_CALL_OK:
+ */
+          __pyx_t_9 = (__pyx_v_call_state->due != Py_None)&&(PySet_GET_SIZE(__pyx_v_call_state->due) != 0);
+          if (__pyx_t_9) {
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":160
+ *   with channel_state.condition:
+ *     if call_state.due:
+ *       c_call_error, tag = _operate(call_state.c_call, operations, user_tag)             # <<<<<<<<<<<<<<
+ *       if c_call_error == GRPC_CALL_OK:
+ *         call_state.due.add(tag)
+ */
+            __pyx_t_2 = __pyx_f_7_cython_6cygrpc__operate(__pyx_v_call_state->c_call, __pyx_v_operations, __pyx_v_user_tag); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 160, __pyx_L7_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(12, 160, __pyx_L7_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(12, 160, __pyx_L7_error)
+              __Pyx_GOTREF(__pyx_t_3);
+              __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 160, __pyx_L7_error)
+              __Pyx_GOTREF(__pyx_t_4);
+              #endif
+              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+            } else {
+              __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(12, 160, __pyx_L7_error)
+            }
+            __pyx_t_10 = ((grpc_call_error)__Pyx_PyInt_As_grpc_call_error(__pyx_t_3)); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 160, __pyx_L7_error)
+            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+            if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_7_cython_6cygrpc__BatchOperationTag))))) __PYX_ERR(12, 160, __pyx_L7_error)
+            __pyx_v_c_call_error = __pyx_t_10;
+            __pyx_v_tag = ((struct __pyx_obj_7_cython_6cygrpc__BatchOperationTag *)__pyx_t_4);
+            __pyx_t_4 = 0;
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":161
+ *     if call_state.due:
+ *       c_call_error, tag = _operate(call_state.c_call, operations, user_tag)
+ *       if c_call_error == GRPC_CALL_OK:             # <<<<<<<<<<<<<<
+ *         call_state.due.add(tag)
+ *         return True
+ */
+            __pyx_t_9 = (__pyx_v_c_call_error == GRPC_CALL_OK);
+            if (__pyx_t_9) {
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":162
+ *       c_call_error, tag = _operate(call_state.c_call, operations, user_tag)
+ *       if c_call_error == GRPC_CALL_OK:
+ *         call_state.due.add(tag)             # <<<<<<<<<<<<<<
+ *         return True
+ *       else:
+ */
+              if (unlikely(__pyx_v_call_state->due == Py_None)) {
+                PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "add");
+                __PYX_ERR(12, 162, __pyx_L7_error)
+              }
+              __pyx_t_11 = PySet_Add(__pyx_v_call_state->due, ((PyObject *)__pyx_v_tag)); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(12, 162, __pyx_L7_error)
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":163
+ *       if c_call_error == GRPC_CALL_OK:
+ *         call_state.due.add(tag)
+ *         return True             # <<<<<<<<<<<<<<
+ *       else:
+ *         _raise_call_error_no_metadata(c_call_error)
+ */
+              __Pyx_XDECREF(__pyx_r);
+              __Pyx_INCREF(Py_True);
+              __pyx_r = Py_True;
+              goto __pyx_L11_try_return;
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":161
+ *     if call_state.due:
+ *       c_call_error, tag = _operate(call_state.c_call, operations, user_tag)
+ *       if c_call_error == GRPC_CALL_OK:             # <<<<<<<<<<<<<<
+ *         call_state.due.add(tag)
+ *         return True
+ */
+            }
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":165
+ *         return True
+ *       else:
+ *         _raise_call_error_no_metadata(c_call_error)             # <<<<<<<<<<<<<<
+ *     else:
+ *       return False
+ */
+            /*else*/ {
+              __pyx_t_2 = __Pyx_PyInt_From_grpc_call_error(__pyx_v_c_call_error); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 165, __pyx_L7_error)
+              __Pyx_GOTREF(__pyx_t_2);
+              __pyx_f_7_cython_6cygrpc__raise_call_error_no_metadata(__pyx_t_2); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 165, __pyx_L7_error)
+              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+            }
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":159
+ *   cdef _BatchOperationTag tag
+ *   with channel_state.condition:
+ *     if call_state.due:             # <<<<<<<<<<<<<<
+ *       c_call_error, tag = _operate(call_state.c_call, operations, user_tag)
+ *       if c_call_error == GRPC_CALL_OK:
+ */
+            goto __pyx_L13;
+          }
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":167
+ *         _raise_call_error_no_metadata(c_call_error)
+ *     else:
+ *       return False             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+          /*else*/ {
+            __Pyx_XDECREF(__pyx_r);
+            __Pyx_INCREF(Py_False);
+            __pyx_r = Py_False;
+            goto __pyx_L11_try_return;
+          }
+          __pyx_L13:;
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":158
+ *   cdef grpc_call_error c_call_error
+ *   cdef _BatchOperationTag tag
+ *   with channel_state.condition:             # <<<<<<<<<<<<<<
+ *     if call_state.due:
+ *       c_call_error, tag = _operate(call_state.c_call, operations, user_tag)
+ */
+        }
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+        goto __pyx_L12_try_end;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        /*except:*/ {
+          __Pyx_AddTraceback("_cython.cygrpc._operate_from_segregated_call", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_4, &__pyx_t_3) < 0) __PYX_ERR(12, 158, __pyx_L9_except_error)
+          __Pyx_XGOTREF(__pyx_t_2);
+          __Pyx_XGOTREF(__pyx_t_4);
+          __Pyx_XGOTREF(__pyx_t_3);
+          __pyx_t_12 = PyTuple_Pack(3, __pyx_t_2, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_12)) __PYX_ERR(12, 158, __pyx_L9_except_error)
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_12, NULL);
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(!__pyx_t_13)) __PYX_ERR(12, 158, __pyx_L9_except_error)
+          __Pyx_GOTREF(__pyx_t_13);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_13);
+          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+          if (__pyx_t_9 < 0) __PYX_ERR(12, 158, __pyx_L9_except_error)
+          __pyx_t_14 = (!__pyx_t_9);
+          if (unlikely(__pyx_t_14)) {
+            __Pyx_GIVEREF(__pyx_t_2);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_XGIVEREF(__pyx_t_3);
+            __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_4, __pyx_t_3);
+            __pyx_t_2 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            __PYX_ERR(12, 158, __pyx_L9_except_error)
+          }
+          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_XGIVEREF(__pyx_t_8);
+        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
+        goto __pyx_L1_error;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_XGIVEREF(__pyx_t_8);
+        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
+        goto __pyx_L4_return;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_XGIVEREF(__pyx_t_8);
+        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
+        __pyx_L12_try_end:;
+      }
+    }
+    /*finally:*/ {
+      /*normal exit:*/{
+        if (__pyx_t_1) {
+          __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__11, NULL);
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          if (unlikely(!__pyx_t_8)) __PYX_ERR(12, 158, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_8);
+          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+        }
+        goto __pyx_L6;
+      }
+      __pyx_L4_return: {
+        __pyx_t_8 = __pyx_r;
+        __pyx_r = 0;
+        if (__pyx_t_1) {
+          __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__11, NULL);
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          if (unlikely(!__pyx_t_7)) __PYX_ERR(12, 158, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_7);
+          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        }
+        __pyx_r = __pyx_t_8;
+        __pyx_t_8 = 0;
+        goto __pyx_L0;
+      }
+      __pyx_L6:;
+    }
+    goto __pyx_L18;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    goto __pyx_L1_error;
+    __pyx_L18:;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":153
+ * 
+ * 
+ * cdef object _operate_from_segregated_call(             # <<<<<<<<<<<<<<
+ *     _ChannelState channel_state, _CallState call_state, object operations,
+ *     object user_tag):
+ */
+
+  /* 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_12);
+  __Pyx_AddTraceback("_cython.cygrpc._operate_from_segregated_call", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_tag);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":170
+ * 
+ * 
+ * cdef _cancel(             # <<<<<<<<<<<<<<
+ *     _ChannelState channel_state, _CallState call_state, grpc_status_code code,
+ *     str details):
+ */
+
+static PyObject *__pyx_f_7_cython_6cygrpc__cancel(struct __pyx_obj_7_cython_6cygrpc__ChannelState *__pyx_v_channel_state, struct __pyx_obj_7_cython_6cygrpc__CallState *__pyx_v_call_state, grpc_status_code __pyx_v_code, PyObject *__pyx_v_details) {
+  grpc_call_error __pyx_v_c_call_error;
+  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;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
+  int __pyx_t_9;
+  char const *__pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_cancel", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":174
+ *     str details):
+ *   cdef grpc_call_error c_call_error
+ *   with channel_state.condition:             # <<<<<<<<<<<<<<
+ *     if call_state.due:
+ *       c_call_error = grpc_call_cancel_with_status(
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_v_channel_state->condition, __pyx_n_s_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 174, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_v_channel_state->condition, __pyx_n_s_enter); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 174, __pyx_L3_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(12, 174, __pyx_L3_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    /*try:*/ {
+      {
+        __Pyx_PyThreadState_declare
+        __Pyx_PyThreadState_assign
+        __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_8);
+        /*try:*/ {
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":175
+ *   cdef grpc_call_error c_call_error
+ *   with channel_state.condition:
+ *     if call_state.due:             # <<<<<<<<<<<<<<
+ *       c_call_error = grpc_call_cancel_with_status(
+ *           call_state.c_call, code, _encode(details), NULL)
+ */
+          __pyx_t_9 = (__pyx_v_call_state->due != Py_None)&&(PySet_GET_SIZE(__pyx_v_call_state->due) != 0);
+          if (__pyx_t_9) {
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":177
+ *     if call_state.due:
+ *       c_call_error = grpc_call_cancel_with_status(
+ *           call_state.c_call, code, _encode(details), NULL)             # <<<<<<<<<<<<<<
+ *       _check_and_raise_call_error_no_metadata(c_call_error)
+ * 
+ */
+            __pyx_t_2 = __pyx_f_7_cython_6cygrpc__encode(__pyx_v_details); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 177, __pyx_L7_error)
+            __Pyx_GOTREF(__pyx_t_2);
+            if (unlikely(__pyx_t_2 == Py_None)) {
+              PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
+              __PYX_ERR(12, 177, __pyx_L7_error)
+            }
+            __pyx_t_10 = __Pyx_PyBytes_AsString(__pyx_t_2); if (unlikely((!__pyx_t_10) && PyErr_Occurred())) __PYX_ERR(12, 177, __pyx_L7_error)
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":176
+ *   with channel_state.condition:
+ *     if call_state.due:
+ *       c_call_error = grpc_call_cancel_with_status(             # <<<<<<<<<<<<<<
+ *           call_state.c_call, code, _encode(details), NULL)
+ *       _check_and_raise_call_error_no_metadata(c_call_error)
+ */
+            __pyx_v_c_call_error = grpc_call_cancel_with_status(__pyx_v_call_state->c_call, __pyx_v_code, __pyx_t_10, NULL);
+            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":178
+ *       c_call_error = grpc_call_cancel_with_status(
+ *           call_state.c_call, code, _encode(details), NULL)
+ *       _check_and_raise_call_error_no_metadata(c_call_error)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+            __pyx_t_2 = __Pyx_PyInt_From_grpc_call_error(__pyx_v_c_call_error); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 178, __pyx_L7_error)
+            __Pyx_GOTREF(__pyx_t_2);
+            __pyx_t_3 = __pyx_f_7_cython_6cygrpc__check_and_raise_call_error_no_metadata(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 178, __pyx_L7_error)
+            __Pyx_GOTREF(__pyx_t_3);
+            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":175
+ *   cdef grpc_call_error c_call_error
+ *   with channel_state.condition:
+ *     if call_state.due:             # <<<<<<<<<<<<<<
+ *       c_call_error = grpc_call_cancel_with_status(
+ *           call_state.c_call, code, _encode(details), NULL)
+ */
+          }
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":174
+ *     str details):
+ *   cdef grpc_call_error c_call_error
+ *   with channel_state.condition:             # <<<<<<<<<<<<<<
+ *     if call_state.due:
+ *       c_call_error = grpc_call_cancel_with_status(
+ */
+        }
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+        goto __pyx_L12_try_end;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        /*except:*/ {
+          __Pyx_AddTraceback("_cython.cygrpc._cancel", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_4) < 0) __PYX_ERR(12, 174, __pyx_L9_except_error)
+          __Pyx_XGOTREF(__pyx_t_3);
+          __Pyx_XGOTREF(__pyx_t_2);
+          __Pyx_XGOTREF(__pyx_t_4);
+          __pyx_t_11 = PyTuple_Pack(3, __pyx_t_3, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_11)) __PYX_ERR(12, 174, __pyx_L9_except_error)
+          __Pyx_GOTREF(__pyx_t_11);
+          __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+          if (unlikely(!__pyx_t_12)) __PYX_ERR(12, 174, __pyx_L9_except_error)
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (__pyx_t_9 < 0) __PYX_ERR(12, 174, __pyx_L9_except_error)
+          __pyx_t_13 = (!__pyx_t_9);
+          if (unlikely(__pyx_t_13)) {
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_GIVEREF(__pyx_t_2);
+            __Pyx_XGIVEREF(__pyx_t_4);
+            __Pyx_ErrRestoreWithState(__pyx_t_3, __pyx_t_2, __pyx_t_4);
+            __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_4 = 0; 
+            __PYX_ERR(12, 174, __pyx_L9_except_error)
+          }
+          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_XGIVEREF(__pyx_t_8);
+        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_XGIVEREF(__pyx_t_8);
+        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
+        __pyx_L12_try_end:;
+      }
+    }
+    /*finally:*/ {
+      /*normal exit:*/{
+        if (__pyx_t_1) {
+          __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__11, NULL);
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          if (unlikely(!__pyx_t_8)) __PYX_ERR(12, 174, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_8);
+          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+        }
+        goto __pyx_L6;
+      }
+      __pyx_L6:;
+    }
+    goto __pyx_L17;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    goto __pyx_L1_error;
+    __pyx_L17:;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":170
+ * 
+ * 
+ * cdef _cancel(             # <<<<<<<<<<<<<<
+ *     _ChannelState channel_state, _CallState call_state, grpc_status_code code,
+ *     str details):
+ */
+
+  /* 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_11);
+  __Pyx_AddTraceback("_cython.cygrpc._cancel", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":181
+ * 
+ * 
+ * cdef _next_call_event(             # <<<<<<<<<<<<<<
+ *     _ChannelState channel_state, grpc_completion_queue *c_completion_queue,
+ *     on_success, on_failure, deadline):
+ */
+
+static PyObject *__pyx_f_7_cython_6cygrpc__next_call_event(struct __pyx_obj_7_cython_6cygrpc__ChannelState *__pyx_v_channel_state, grpc_completion_queue *__pyx_v_c_completion_queue, PyObject *__pyx_v_on_success, PyObject *__pyx_v_on_failure, PyObject *__pyx_v_deadline) {
+  PyObject *__pyx_v_tag = NULL;
+  PyObject *__pyx_v_event = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *(*__pyx_t_8)(PyObject *);
+  PyObject *__pyx_t_9 = NULL;
+  unsigned int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  PyObject *__pyx_t_13 = NULL;
+  PyObject *__pyx_t_14 = NULL;
+  int __pyx_t_15;
+  int __pyx_t_16;
+  PyObject *__pyx_t_17 = NULL;
+  PyObject *__pyx_t_18 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_next_call_event", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":200
+ *     deadline: The point after which the RPC will time out.
+ *   """
+ *   try:             # <<<<<<<<<<<<<<
+ *     tag, event = _latent_event(c_completion_queue, deadline)
+ *   # NOTE(rbellevi): This broad except enables us to clean up resources before
+ */
+  {
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
+    __Pyx_XGOTREF(__pyx_t_1);
+    __Pyx_XGOTREF(__pyx_t_2);
+    __Pyx_XGOTREF(__pyx_t_3);
+    /*try:*/ {
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":201
+ *   """
+ *   try:
+ *     tag, event = _latent_event(c_completion_queue, deadline)             # <<<<<<<<<<<<<<
+ *   # NOTE(rbellevi): This broad except enables us to clean up resources before
+ *   # propagating any exceptions raised by signal handlers to the application.
+ */
+      __pyx_t_4 = __pyx_f_7_cython_6cygrpc__latent_event(__pyx_v_c_completion_queue, __pyx_v_deadline); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 201, __pyx_L3_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
+        PyObject* sequence = __pyx_t_4;
+        Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
+        if (unlikely(size != 2)) {
+          if (size > 2) __Pyx_RaiseTooManyValuesError(2);
+          else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
+          __PYX_ERR(12, 201, __pyx_L3_error)
+        }
+        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+        if (likely(PyTuple_CheckExact(sequence))) {
+          __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); 
+          __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); 
+        } else {
+          __pyx_t_5 = PyList_GET_ITEM(sequence, 0); 
+          __pyx_t_6 = PyList_GET_ITEM(sequence, 1); 
+        }
+        __Pyx_INCREF(__pyx_t_5);
+        __Pyx_INCREF(__pyx_t_6);
+        #else
+        __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(12, 201, __pyx_L3_error)
+        __Pyx_GOTREF(__pyx_t_5);
+        __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(12, 201, __pyx_L3_error)
+        __Pyx_GOTREF(__pyx_t_6);
+        #endif
+        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      } else {
+        Py_ssize_t index = -1;
+        __pyx_t_7 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(12, 201, __pyx_L3_error)
+        __Pyx_GOTREF(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __pyx_t_8 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_7);
+        index = 0; __pyx_t_5 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_5)) goto __pyx_L9_unpacking_failed;
+        __Pyx_GOTREF(__pyx_t_5);
+        index = 1; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L9_unpacking_failed;
+        __Pyx_GOTREF(__pyx_t_6);
+        if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) __PYX_ERR(12, 201, __pyx_L3_error)
+        __pyx_t_8 = NULL;
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L10_unpacking_done;
+        __pyx_L9_unpacking_failed:;
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        __pyx_t_8 = NULL;
+        if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
+        __PYX_ERR(12, 201, __pyx_L3_error)
+        __pyx_L10_unpacking_done:;
+      }
+      __pyx_v_tag = __pyx_t_5;
+      __pyx_t_5 = 0;
+      __pyx_v_event = __pyx_t_6;
+      __pyx_t_6 = 0;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":200
+ *     deadline: The point after which the RPC will time out.
+ *   """
+ *   try:             # <<<<<<<<<<<<<<
+ *     tag, event = _latent_event(c_completion_queue, deadline)
+ *   # NOTE(rbellevi): This broad except enables us to clean up resources before
+ */
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":209
+ *     raise
+ *   else:
+ *     with channel_state.condition:             # <<<<<<<<<<<<<<
+ *       on_success(tag)
+ *       channel_state.condition.notify_all()
+ */
+    /*else:*/ {
+      /*with:*/ {
+        __pyx_t_9 = __Pyx_PyObject_LookupSpecial(__pyx_v_channel_state->condition, __pyx_n_s_exit); if (unlikely(!__pyx_t_9)) __PYX_ERR(12, 209, __pyx_L5_except_error)
+        __Pyx_GOTREF(__pyx_t_9);
+        __pyx_t_6 = __Pyx_PyObject_LookupSpecial(__pyx_v_channel_state->condition, __pyx_n_s_enter); if (unlikely(!__pyx_t_6)) __PYX_ERR(12, 209, __pyx_L11_error)
+        __Pyx_GOTREF(__pyx_t_6);
+        __pyx_t_5 = NULL;
+        __pyx_t_10 = 0;
+        #if CYTHON_UNPACK_METHODS
+        if (likely(PyMethod_Check(__pyx_t_6))) {
+          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
+          if (likely(__pyx_t_5)) {
+            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+            __Pyx_INCREF(__pyx_t_5);
+            __Pyx_INCREF(function);
+            __Pyx_DECREF_SET(__pyx_t_6, function);
+            __pyx_t_10 = 1;
+          }
+        }
+        #endif
+        {
+          PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
+          __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_10, 0+__pyx_t_10);
+          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+          if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 209, __pyx_L11_error)
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+        }
+        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 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:*/ {
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":210
+ *   else:
+ *     with channel_state.condition:
+ *       on_success(tag)             # <<<<<<<<<<<<<<
+ *       channel_state.condition.notify_all()
+ *     return event
+ */
+              __Pyx_INCREF(__pyx_v_on_success);
+              __pyx_t_6 = __pyx_v_on_success; __pyx_t_5 = NULL;
+              __pyx_t_10 = 0;
+              #if CYTHON_UNPACK_METHODS
+              if (unlikely(PyMethod_Check(__pyx_t_6))) {
+                __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
+                if (likely(__pyx_t_5)) {
+                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+                  __Pyx_INCREF(__pyx_t_5);
+                  __Pyx_INCREF(function);
+                  __Pyx_DECREF_SET(__pyx_t_6, function);
+                  __pyx_t_10 = 1;
+                }
+              }
+              #endif
+              {
+                PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_tag};
+                __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_10, 1+__pyx_t_10);
+                __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+                if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 210, __pyx_L15_error)
+                __Pyx_GOTREF(__pyx_t_4);
+                __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+              }
+              __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":211
+ *     with channel_state.condition:
+ *       on_success(tag)
+ *       channel_state.condition.notify_all()             # <<<<<<<<<<<<<<
+ *     return event
+ * 
+ */
+              __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_channel_state->condition, __pyx_n_s_notify_all); if (unlikely(!__pyx_t_6)) __PYX_ERR(12, 211, __pyx_L15_error)
+              __Pyx_GOTREF(__pyx_t_6);
+              __pyx_t_5 = NULL;
+              __pyx_t_10 = 0;
+              #if CYTHON_UNPACK_METHODS
+              if (likely(PyMethod_Check(__pyx_t_6))) {
+                __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
+                if (likely(__pyx_t_5)) {
+                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+                  __Pyx_INCREF(__pyx_t_5);
+                  __Pyx_INCREF(function);
+                  __Pyx_DECREF_SET(__pyx_t_6, function);
+                  __pyx_t_10 = 1;
+                }
+              }
+              #endif
+              {
+                PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
+                __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_10, 0+__pyx_t_10);
+                __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+                if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 211, __pyx_L15_error)
+                __Pyx_GOTREF(__pyx_t_4);
+                __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+              }
+              __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":209
+ *     raise
+ *   else:
+ *     with channel_state.condition:             # <<<<<<<<<<<<<<
+ *       on_success(tag)
+ *       channel_state.condition.notify_all()
+ */
+            }
+            __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_L20_try_end;
+            __pyx_L15_error:;
+            __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+            __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+            __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+            __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+            /*except:*/ {
+              __Pyx_AddTraceback("_cython.cygrpc._next_call_event", __pyx_clineno, __pyx_lineno, __pyx_filename);
+              if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_6, &__pyx_t_5) < 0) __PYX_ERR(12, 209, __pyx_L17_except_error)
+              __Pyx_XGOTREF(__pyx_t_4);
+              __Pyx_XGOTREF(__pyx_t_6);
+              __Pyx_XGOTREF(__pyx_t_5);
+              __pyx_t_7 = PyTuple_Pack(3, __pyx_t_4, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(12, 209, __pyx_L17_except_error)
+              __Pyx_GOTREF(__pyx_t_7);
+              __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_7, NULL);
+              __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+              __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+              if (unlikely(!__pyx_t_14)) __PYX_ERR(12, 209, __pyx_L17_except_error)
+              __Pyx_GOTREF(__pyx_t_14);
+              __pyx_t_15 = __Pyx_PyObject_IsTrue(__pyx_t_14);
+              __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+              if (__pyx_t_15 < 0) __PYX_ERR(12, 209, __pyx_L17_except_error)
+              __pyx_t_16 = (!__pyx_t_15);
+              if (unlikely(__pyx_t_16)) {
+                __Pyx_GIVEREF(__pyx_t_4);
+                __Pyx_GIVEREF(__pyx_t_6);
+                __Pyx_XGIVEREF(__pyx_t_5);
+                __Pyx_ErrRestoreWithState(__pyx_t_4, __pyx_t_6, __pyx_t_5);
+                __pyx_t_4 = 0; __pyx_t_6 = 0; __pyx_t_5 = 0; 
+                __PYX_ERR(12, 209, __pyx_L17_except_error)
+              }
+              __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+              __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+              __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+              goto __pyx_L16_exception_handled;
+            }
+            __pyx_L17_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_L5_except_error;
+            __pyx_L16_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_L20_try_end:;
+          }
+        }
+        /*finally:*/ {
+          /*normal exit:*/{
+            if (__pyx_t_9) {
+              __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_tuple__11, NULL);
+              __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+              if (unlikely(!__pyx_t_13)) __PYX_ERR(12, 209, __pyx_L5_except_error)
+              __Pyx_GOTREF(__pyx_t_13);
+              __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+            }
+            goto __pyx_L14;
+          }
+          __pyx_L14:;
+        }
+        goto __pyx_L24;
+        __pyx_L11_error:;
+        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+        goto __pyx_L5_except_error;
+        __pyx_L24:;
+      }
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":212
+ *       on_success(tag)
+ *       channel_state.condition.notify_all()
+ *     return event             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+      __Pyx_XDECREF(__pyx_r);
+      __Pyx_INCREF(__pyx_v_event);
+      __pyx_r = __pyx_v_event;
+      goto __pyx_L6_except_return;
+    }
+    __pyx_L3_error:;
+    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":204
+ *   # NOTE(rbellevi): This broad except enables us to clean up resources before
+ *   # propagating any exceptions raised by signal handlers to the application.
+ *   except:             # <<<<<<<<<<<<<<
+ *     if on_failure is not None:
+ *       on_failure()
+ */
+    /*except:*/ {
+      __Pyx_AddTraceback("_cython.cygrpc._next_call_event", __pyx_clineno, __pyx_lineno, __pyx_filename);
+      if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_4) < 0) __PYX_ERR(12, 204, __pyx_L5_except_error)
+      __Pyx_XGOTREF(__pyx_t_5);
+      __Pyx_XGOTREF(__pyx_t_6);
+      __Pyx_XGOTREF(__pyx_t_4);
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":205
+ *   # propagating any exceptions raised by signal handlers to the application.
+ *   except:
+ *     if on_failure is not None:             # <<<<<<<<<<<<<<
+ *       on_failure()
+ *     raise
+ */
+      __pyx_t_16 = (__pyx_v_on_failure != Py_None);
+      if (__pyx_t_16) {
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":206
+ *   except:
+ *     if on_failure is not None:
+ *       on_failure()             # <<<<<<<<<<<<<<
+ *     raise
+ *   else:
+ */
+        __Pyx_INCREF(__pyx_v_on_failure);
+        __pyx_t_17 = __pyx_v_on_failure; __pyx_t_18 = NULL;
+        __pyx_t_10 = 0;
+        #if CYTHON_UNPACK_METHODS
+        if (unlikely(PyMethod_Check(__pyx_t_17))) {
+          __pyx_t_18 = PyMethod_GET_SELF(__pyx_t_17);
+          if (likely(__pyx_t_18)) {
+            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_17);
+            __Pyx_INCREF(__pyx_t_18);
+            __Pyx_INCREF(function);
+            __Pyx_DECREF_SET(__pyx_t_17, function);
+            __pyx_t_10 = 1;
+          }
+        }
+        #endif
+        {
+          PyObject *__pyx_callargs[2] = {__pyx_t_18, NULL};
+          __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_17, __pyx_callargs+1-__pyx_t_10, 0+__pyx_t_10);
+          __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
+          if (unlikely(!__pyx_t_7)) __PYX_ERR(12, 206, __pyx_L5_except_error)
+          __Pyx_GOTREF(__pyx_t_7);
+          __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
+        }
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":205
+ *   # propagating any exceptions raised by signal handlers to the application.
+ *   except:
+ *     if on_failure is not None:             # <<<<<<<<<<<<<<
+ *       on_failure()
+ *     raise
+ */
+      }
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":207
+ *     if on_failure is not None:
+ *       on_failure()
+ *     raise             # <<<<<<<<<<<<<<
+ *   else:
+ *     with channel_state.condition:
+ */
+      __Pyx_GIVEREF(__pyx_t_5);
+      __Pyx_GIVEREF(__pyx_t_6);
+      __Pyx_XGIVEREF(__pyx_t_4);
+      __Pyx_ErrRestoreWithState(__pyx_t_5, __pyx_t_6, __pyx_t_4);
+      __pyx_t_5 = 0; __pyx_t_6 = 0; __pyx_t_4 = 0; 
+      __PYX_ERR(12, 207, __pyx_L5_except_error)
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":200
+ *     deadline: The point after which the RPC will time out.
+ *   """
+ *   try:             # <<<<<<<<<<<<<<
+ *     tag, event = _latent_event(c_completion_queue, deadline)
+ *   # NOTE(rbellevi): This broad except enables us to clean up resources before
+ */
+    __pyx_L5_except_error:;
+    __Pyx_XGIVEREF(__pyx_t_1);
+    __Pyx_XGIVEREF(__pyx_t_2);
+    __Pyx_XGIVEREF(__pyx_t_3);
+    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+    goto __pyx_L1_error;
+    __pyx_L6_except_return:;
+    __Pyx_XGIVEREF(__pyx_t_1);
+    __Pyx_XGIVEREF(__pyx_t_2);
+    __Pyx_XGIVEREF(__pyx_t_3);
+    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+    goto __pyx_L0;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":181
+ * 
+ * 
+ * cdef _next_call_event(             # <<<<<<<<<<<<<<
+ *     _ChannelState channel_state, grpc_completion_queue *c_completion_queue,
+ *     on_success, on_failure, deadline):
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_17);
+  __Pyx_XDECREF(__pyx_t_18);
+  __Pyx_AddTraceback("_cython.cygrpc._next_call_event", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_tag);
+  __Pyx_XDECREF(__pyx_v_event);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":216
+ * 
+ * # TODO(https://github.com/grpc/grpc/issues/14569): This could be a lot simpler.
+ * cdef void _call(             # <<<<<<<<<<<<<<
+ *     _ChannelState channel_state, _CallState call_state,
+ *     grpc_completion_queue *c_completion_queue, on_success, int flags, method,
+ */
+
+static void __pyx_f_7_cython_6cygrpc__call(struct __pyx_obj_7_cython_6cygrpc__ChannelState *__pyx_v_channel_state, struct __pyx_obj_7_cython_6cygrpc__CallState *__pyx_v_call_state, grpc_completion_queue *__pyx_v_c_completion_queue, PyObject *__pyx_v_on_success, int __pyx_v_flags, PyObject *__pyx_v_method, PyObject *__pyx_v_host, PyObject *__pyx_v_deadline, struct __pyx_obj_7_cython_6cygrpc_CallCredentials *__pyx_v_credentials, PyObject *__pyx_v_operationses_and_user_tags, PyObject *__pyx_v_metadata, PyObject *__pyx_v_context, PyObject *__pyx_v_registered_call_handle) {
+  grpc_slice __pyx_v_method_slice;
+  grpc_slice __pyx_v_host_slice;
+  grpc_slice *__pyx_v_host_slice_ptr;
+  grpc_call_credentials *__pyx_v_c_call_credentials;
+  grpc_call_error __pyx_v_c_call_error;
+  PyObject *__pyx_v_started_tags = NULL;
+  PyObject *__pyx_v_operations = NULL;
+  PyObject *__pyx_v_user_tag = NULL;
+  PyObject *__pyx_v_tag = 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;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
+  int __pyx_t_9;
+  grpc_slice __pyx_t_10;
+  void *__pyx_t_11;
+  gpr_timespec __pyx_t_12;
+  grpc_call_credentials *__pyx_t_13;
+  Py_ssize_t __pyx_t_14;
+  PyObject *(*__pyx_t_15)(PyObject *);
+  PyObject *__pyx_t_16 = NULL;
+  PyObject *__pyx_t_17 = NULL;
+  PyObject *(*__pyx_t_18)(PyObject *);
+  grpc_call_error __pyx_t_19;
+  int __pyx_t_20;
+  PyObject *__pyx_t_21 = NULL;
+  int __pyx_t_22;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_call", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":258
+ *   cdef tuple error_and_wrapper_tag
+ *   cdef _BatchOperationTag wrapper_tag
+ *   with channel_state.condition:             # <<<<<<<<<<<<<<
+ *     if channel_state.open:
+ *       method_slice = _slice_from_bytes(method)
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_v_channel_state->condition, __pyx_n_s_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 258, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_v_channel_state->condition, __pyx_n_s_enter); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 258, __pyx_L3_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(12, 258, __pyx_L3_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    /*try:*/ {
+      {
+        __Pyx_PyThreadState_declare
+        __Pyx_PyThreadState_assign
+        __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_8);
+        /*try:*/ {
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":259
+ *   cdef _BatchOperationTag wrapper_tag
+ *   with channel_state.condition:
+ *     if channel_state.open:             # <<<<<<<<<<<<<<
+ *       method_slice = _slice_from_bytes(method)
+ *       if host is None:
+ */
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_channel_state->open); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(12, 259, __pyx_L7_error)
+          if (likely(__pyx_t_9)) {
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":260
+ *   with channel_state.condition:
+ *     if channel_state.open:
+ *       method_slice = _slice_from_bytes(method)             # <<<<<<<<<<<<<<
+ *       if host is None:
+ *         host_slice_ptr = NULL
+ */
+            if (!(likely(PyBytes_CheckExact(__pyx_v_method))||((__pyx_v_method) == Py_None) || __Pyx_RaiseUnexpectedTypeError("bytes", __pyx_v_method))) __PYX_ERR(12, 260, __pyx_L7_error)
+            __pyx_t_10 = __pyx_f_7_cython_6cygrpc__slice_from_bytes(((PyObject*)__pyx_v_method)); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 260, __pyx_L7_error)
+            __pyx_v_method_slice = __pyx_t_10;
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":261
+ *     if channel_state.open:
+ *       method_slice = _slice_from_bytes(method)
+ *       if host is None:             # <<<<<<<<<<<<<<
+ *         host_slice_ptr = NULL
+ *       else:
+ */
+            __pyx_t_9 = (__pyx_v_host == Py_None);
+            if (__pyx_t_9) {
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":262
+ *       method_slice = _slice_from_bytes(method)
+ *       if host is None:
+ *         host_slice_ptr = NULL             # <<<<<<<<<<<<<<
+ *       else:
+ *         host_slice = _slice_from_bytes(host)
+ */
+              __pyx_v_host_slice_ptr = NULL;
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":261
+ *     if channel_state.open:
+ *       method_slice = _slice_from_bytes(method)
+ *       if host is None:             # <<<<<<<<<<<<<<
+ *         host_slice_ptr = NULL
+ *       else:
+ */
+              goto __pyx_L14;
+            }
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":264
+ *         host_slice_ptr = NULL
+ *       else:
+ *         host_slice = _slice_from_bytes(host)             # <<<<<<<<<<<<<<
+ *         host_slice_ptr = &host_slice
+ *       if registered_call_handle:
+ */
+            /*else*/ {
+              if (!(likely(PyBytes_CheckExact(__pyx_v_host))||((__pyx_v_host) == Py_None) || __Pyx_RaiseUnexpectedTypeError("bytes", __pyx_v_host))) __PYX_ERR(12, 264, __pyx_L7_error)
+              __pyx_t_10 = __pyx_f_7_cython_6cygrpc__slice_from_bytes(((PyObject*)__pyx_v_host)); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 264, __pyx_L7_error)
+              __pyx_v_host_slice = __pyx_t_10;
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":265
+ *       else:
+ *         host_slice = _slice_from_bytes(host)
+ *         host_slice_ptr = &host_slice             # <<<<<<<<<<<<<<
+ *       if registered_call_handle:
+ *         call_state.c_call = grpc_channel_create_registered_call(
+ */
+              __pyx_v_host_slice_ptr = (&__pyx_v_host_slice);
+            }
+            __pyx_L14:;
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":266
+ *         host_slice = _slice_from_bytes(host)
+ *         host_slice_ptr = &host_slice
+ *       if registered_call_handle:             # <<<<<<<<<<<<<<
+ *         call_state.c_call = grpc_channel_create_registered_call(
+ *             channel_state.c_channel, NULL, flags,
+ */
+            __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_registered_call_handle); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(12, 266, __pyx_L7_error)
+            if (__pyx_t_9) {
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":269
+ *         call_state.c_call = grpc_channel_create_registered_call(
+ *             channel_state.c_channel, NULL, flags,
+ *             c_completion_queue, cpython.PyLong_AsVoidPtr(registered_call_handle),             # <<<<<<<<<<<<<<
+ *             _timespec_from_time(deadline), NULL)
+ *       else:
+ */
+              __pyx_t_11 = PyLong_AsVoidPtr(__pyx_v_registered_call_handle); if (unlikely(__pyx_t_11 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(12, 269, __pyx_L7_error)
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":270
+ *             channel_state.c_channel, NULL, flags,
+ *             c_completion_queue, cpython.PyLong_AsVoidPtr(registered_call_handle),
+ *             _timespec_from_time(deadline), NULL)             # <<<<<<<<<<<<<<
+ *       else:
+ *         call_state.c_call = grpc_channel_create_call(
+ */
+              __pyx_t_12 = __pyx_f_7_cython_6cygrpc__timespec_from_time(__pyx_v_deadline); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 270, __pyx_L7_error)
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":267
+ *         host_slice_ptr = &host_slice
+ *       if registered_call_handle:
+ *         call_state.c_call = grpc_channel_create_registered_call(             # <<<<<<<<<<<<<<
+ *             channel_state.c_channel, NULL, flags,
+ *             c_completion_queue, cpython.PyLong_AsVoidPtr(registered_call_handle),
+ */
+              __pyx_v_call_state->c_call = grpc_channel_create_registered_call(__pyx_v_channel_state->c_channel, NULL, __pyx_v_flags, __pyx_v_c_completion_queue, __pyx_t_11, __pyx_t_12, NULL);
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":266
+ *         host_slice = _slice_from_bytes(host)
+ *         host_slice_ptr = &host_slice
+ *       if registered_call_handle:             # <<<<<<<<<<<<<<
+ *         call_state.c_call = grpc_channel_create_registered_call(
+ *             channel_state.c_channel, NULL, flags,
+ */
+              goto __pyx_L15;
+            }
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":272
+ *             _timespec_from_time(deadline), NULL)
+ *       else:
+ *         call_state.c_call = grpc_channel_create_call(             # <<<<<<<<<<<<<<
+ *             channel_state.c_channel, NULL, flags,
+ *             c_completion_queue, method_slice, host_slice_ptr,
+ */
+            /*else*/ {
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":275
+ *             channel_state.c_channel, NULL, flags,
+ *             c_completion_queue, method_slice, host_slice_ptr,
+ *             _timespec_from_time(deadline), NULL)             # <<<<<<<<<<<<<<
+ *       grpc_slice_unref(method_slice)
+ *       if host_slice_ptr:
+ */
+              __pyx_t_12 = __pyx_f_7_cython_6cygrpc__timespec_from_time(__pyx_v_deadline); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 275, __pyx_L7_error)
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":272
+ *             _timespec_from_time(deadline), NULL)
+ *       else:
+ *         call_state.c_call = grpc_channel_create_call(             # <<<<<<<<<<<<<<
+ *             channel_state.c_channel, NULL, flags,
+ *             c_completion_queue, method_slice, host_slice_ptr,
+ */
+              __pyx_v_call_state->c_call = grpc_channel_create_call(__pyx_v_channel_state->c_channel, NULL, __pyx_v_flags, __pyx_v_c_completion_queue, __pyx_v_method_slice, __pyx_v_host_slice_ptr, __pyx_t_12, NULL);
+            }
+            __pyx_L15:;
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":276
+ *             c_completion_queue, method_slice, host_slice_ptr,
+ *             _timespec_from_time(deadline), NULL)
+ *       grpc_slice_unref(method_slice)             # <<<<<<<<<<<<<<
+ *       if host_slice_ptr:
+ *         grpc_slice_unref(host_slice)
+ */
+            grpc_slice_unref(__pyx_v_method_slice);
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":277
+ *             _timespec_from_time(deadline), NULL)
+ *       grpc_slice_unref(method_slice)
+ *       if host_slice_ptr:             # <<<<<<<<<<<<<<
+ *         grpc_slice_unref(host_slice)
+ *       call_state.maybe_set_client_call_tracer_on_call(method, channel_state.target)
+ */
+            __pyx_t_9 = (__pyx_v_host_slice_ptr != 0);
+            if (__pyx_t_9) {
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":278
+ *       grpc_slice_unref(method_slice)
+ *       if host_slice_ptr:
+ *         grpc_slice_unref(host_slice)             # <<<<<<<<<<<<<<
+ *       call_state.maybe_set_client_call_tracer_on_call(method, channel_state.target)
+ *       if context is not None:
+ */
+              grpc_slice_unref(__pyx_v_host_slice);
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":277
+ *             _timespec_from_time(deadline), NULL)
+ *       grpc_slice_unref(method_slice)
+ *       if host_slice_ptr:             # <<<<<<<<<<<<<<
+ *         grpc_slice_unref(host_slice)
+ *       call_state.maybe_set_client_call_tracer_on_call(method, channel_state.target)
+ */
+            }
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":279
+ *       if host_slice_ptr:
+ *         grpc_slice_unref(host_slice)
+ *       call_state.maybe_set_client_call_tracer_on_call(method, channel_state.target)             # <<<<<<<<<<<<<<
+ *       if context is not None:
+ *         set_census_context_on_call(call_state, context)
+ */
+            if (!(likely(PyBytes_CheckExact(__pyx_v_method))||((__pyx_v_method) == Py_None) || __Pyx_RaiseUnexpectedTypeError("bytes", __pyx_v_method))) __PYX_ERR(12, 279, __pyx_L7_error)
+            __pyx_t_2 = __pyx_v_channel_state->target;
+            __Pyx_INCREF(__pyx_t_2);
+            ((struct __pyx_vtabstruct_7_cython_6cygrpc__CallState *)__pyx_v_call_state->__pyx_vtab)->maybe_set_client_call_tracer_on_call(__pyx_v_call_state, ((PyObject*)__pyx_v_method), ((PyObject*)__pyx_t_2)); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 279, __pyx_L7_error)
+            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":280
+ *         grpc_slice_unref(host_slice)
+ *       call_state.maybe_set_client_call_tracer_on_call(method, channel_state.target)
+ *       if context is not None:             # <<<<<<<<<<<<<<
+ *         set_census_context_on_call(call_state, context)
+ *       if credentials is not None:
+ */
+            __pyx_t_9 = (__pyx_v_context != Py_None);
+            if (__pyx_t_9) {
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":281
+ *       call_state.maybe_set_client_call_tracer_on_call(method, channel_state.target)
+ *       if context is not None:
+ *         set_census_context_on_call(call_state, context)             # <<<<<<<<<<<<<<
+ *       if credentials is not None:
+ *         c_call_credentials = credentials.c()
+ */
+              __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_set_census_context_on_call); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 281, __pyx_L7_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[3] = {__pyx_t_4, ((PyObject *)__pyx_v_call_state), __pyx_v_context};
+                __pyx_t_2 = __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_2)) __PYX_ERR(12, 281, __pyx_L7_error)
+                __Pyx_GOTREF(__pyx_t_2);
+                __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+              }
+              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":280
+ *         grpc_slice_unref(host_slice)
+ *       call_state.maybe_set_client_call_tracer_on_call(method, channel_state.target)
+ *       if context is not None:             # <<<<<<<<<<<<<<
+ *         set_census_context_on_call(call_state, context)
+ *       if credentials is not None:
+ */
+            }
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":282
+ *       if context is not None:
+ *         set_census_context_on_call(call_state, context)
+ *       if credentials is not None:             # <<<<<<<<<<<<<<
+ *         c_call_credentials = credentials.c()
+ *         c_call_error = grpc_call_set_credentials(
+ */
+            __pyx_t_9 = (((PyObject *)__pyx_v_credentials) != Py_None);
+            if (__pyx_t_9) {
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":283
+ *         set_census_context_on_call(call_state, context)
+ *       if credentials is not None:
+ *         c_call_credentials = credentials.c()             # <<<<<<<<<<<<<<
+ *         c_call_error = grpc_call_set_credentials(
+ *             call_state.c_call, c_call_credentials)
+ */
+              __pyx_t_13 = ((struct __pyx_vtabstruct_7_cython_6cygrpc_CallCredentials *)__pyx_v_credentials->__pyx_vtab)->c(__pyx_v_credentials); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 283, __pyx_L7_error)
+              __pyx_v_c_call_credentials = __pyx_t_13;
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":284
+ *       if credentials is not None:
+ *         c_call_credentials = credentials.c()
+ *         c_call_error = grpc_call_set_credentials(             # <<<<<<<<<<<<<<
+ *             call_state.c_call, c_call_credentials)
+ *         grpc_call_credentials_release(c_call_credentials)
+ */
+              __pyx_v_c_call_error = grpc_call_set_credentials(__pyx_v_call_state->c_call, __pyx_v_c_call_credentials);
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":286
+ *         c_call_error = grpc_call_set_credentials(
+ *             call_state.c_call, c_call_credentials)
+ *         grpc_call_credentials_release(c_call_credentials)             # <<<<<<<<<<<<<<
+ *         if c_call_error != GRPC_CALL_OK:
+ *           #TODO(xuanwn): Expand the scope of nogil
+ */
+              grpc_call_credentials_release(__pyx_v_c_call_credentials);
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":287
+ *             call_state.c_call, c_call_credentials)
+ *         grpc_call_credentials_release(c_call_credentials)
+ *         if c_call_error != GRPC_CALL_OK:             # <<<<<<<<<<<<<<
+ *           #TODO(xuanwn): Expand the scope of nogil
+ *           with nogil:
+ */
+              __pyx_t_9 = (__pyx_v_c_call_error != GRPC_CALL_OK);
+              if (__pyx_t_9) {
+
+                /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":289
+ *         if c_call_error != GRPC_CALL_OK:
+ *           #TODO(xuanwn): Expand the scope of nogil
+ *           with nogil:             # <<<<<<<<<<<<<<
+ *             grpc_call_unref(call_state.c_call)
+ *           call_state.c_call = NULL
+ */
+                {
+                    #ifdef WITH_THREAD
+                    PyThreadState *_save;
+                    _save = NULL;
+                    Py_UNBLOCK_THREADS
+                    __Pyx_FastGIL_Remember();
+                    #endif
+                    /*try:*/ {
+
+                      /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":290
+ *           #TODO(xuanwn): Expand the scope of nogil
+ *           with nogil:
+ *             grpc_call_unref(call_state.c_call)             # <<<<<<<<<<<<<<
+ *           call_state.c_call = NULL
+ *           _raise_call_error_no_metadata(c_call_error)
+ */
+                      grpc_call_unref(__pyx_v_call_state->c_call);
+                    }
+
+                    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":289
+ *         if c_call_error != GRPC_CALL_OK:
+ *           #TODO(xuanwn): Expand the scope of nogil
+ *           with nogil:             # <<<<<<<<<<<<<<
+ *             grpc_call_unref(call_state.c_call)
+ *           call_state.c_call = NULL
+ */
+                    /*finally:*/ {
+                      /*normal exit:*/{
+                        #ifdef WITH_THREAD
+                        __Pyx_FastGIL_Forget();
+                        Py_BLOCK_THREADS
+                        #endif
+                        goto __pyx_L22;
+                      }
+                      __pyx_L22:;
+                    }
+                }
+
+                /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":291
+ *           with nogil:
+ *             grpc_call_unref(call_state.c_call)
+ *           call_state.c_call = NULL             # <<<<<<<<<<<<<<
+ *           _raise_call_error_no_metadata(c_call_error)
+ *       started_tags = set()
+ */
+                __pyx_v_call_state->c_call = NULL;
+
+                /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":292
+ *             grpc_call_unref(call_state.c_call)
+ *           call_state.c_call = NULL
+ *           _raise_call_error_no_metadata(c_call_error)             # <<<<<<<<<<<<<<
+ *       started_tags = set()
+ *       for operations, user_tag in operationses_and_user_tags:
+ */
+                __pyx_t_2 = __Pyx_PyInt_From_grpc_call_error(__pyx_v_c_call_error); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 292, __pyx_L7_error)
+                __Pyx_GOTREF(__pyx_t_2);
+                __pyx_f_7_cython_6cygrpc__raise_call_error_no_metadata(__pyx_t_2); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 292, __pyx_L7_error)
+                __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+                /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":287
+ *             call_state.c_call, c_call_credentials)
+ *         grpc_call_credentials_release(c_call_credentials)
+ *         if c_call_error != GRPC_CALL_OK:             # <<<<<<<<<<<<<<
+ *           #TODO(xuanwn): Expand the scope of nogil
+ *           with nogil:
+ */
+              }
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":282
+ *       if context is not None:
+ *         set_census_context_on_call(call_state, context)
+ *       if credentials is not None:             # <<<<<<<<<<<<<<
+ *         c_call_credentials = credentials.c()
+ *         c_call_error = grpc_call_set_credentials(
+ */
+            }
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":293
+ *           call_state.c_call = NULL
+ *           _raise_call_error_no_metadata(c_call_error)
+ *       started_tags = set()             # <<<<<<<<<<<<<<
+ *       for operations, user_tag in operationses_and_user_tags:
+ *         c_call_error, tag = _operate(call_state.c_call, operations, user_tag)
+ */
+            __pyx_t_2 = PySet_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 293, __pyx_L7_error)
+            __Pyx_GOTREF(__pyx_t_2);
+            __pyx_v_started_tags = ((PyObject*)__pyx_t_2);
+            __pyx_t_2 = 0;
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":294
+ *           _raise_call_error_no_metadata(c_call_error)
+ *       started_tags = set()
+ *       for operations, user_tag in operationses_and_user_tags:             # <<<<<<<<<<<<<<
+ *         c_call_error, tag = _operate(call_state.c_call, operations, user_tag)
+ *         if c_call_error == GRPC_CALL_OK:
+ */
+            if (likely(PyList_CheckExact(__pyx_v_operationses_and_user_tags)) || PyTuple_CheckExact(__pyx_v_operationses_and_user_tags)) {
+              __pyx_t_2 = __pyx_v_operationses_and_user_tags; __Pyx_INCREF(__pyx_t_2);
+              __pyx_t_14 = 0;
+              __pyx_t_15 = NULL;
+            } else {
+              __pyx_t_14 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_operationses_and_user_tags); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 294, __pyx_L7_error)
+              __Pyx_GOTREF(__pyx_t_2);
+              __pyx_t_15 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_15)) __PYX_ERR(12, 294, __pyx_L7_error)
+            }
+            for (;;) {
+              if (likely(!__pyx_t_15)) {
+                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(12, 294, __pyx_L7_error)
+                    #endif
+                    if (__pyx_t_14 >= __pyx_temp) break;
+                  }
+                  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+                  __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_14); __Pyx_INCREF(__pyx_t_3); __pyx_t_14++; if (unlikely((0 < 0))) __PYX_ERR(12, 294, __pyx_L7_error)
+                  #else
+                  __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_14); __pyx_t_14++; if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 294, __pyx_L7_error)
+                  __Pyx_GOTREF(__pyx_t_3);
+                  #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(12, 294, __pyx_L7_error)
+                    #endif
+                    if (__pyx_t_14 >= __pyx_temp) break;
+                  }
+                  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+                  __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_14); __Pyx_INCREF(__pyx_t_3); __pyx_t_14++; if (unlikely((0 < 0))) __PYX_ERR(12, 294, __pyx_L7_error)
+                  #else
+                  __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_14); __pyx_t_14++; if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 294, __pyx_L7_error)
+                  __Pyx_GOTREF(__pyx_t_3);
+                  #endif
+                }
+              } else {
+                __pyx_t_3 = __pyx_t_15(__pyx_t_2);
+                if (unlikely(!__pyx_t_3)) {
+                  PyObject* exc_type = PyErr_Occurred();
+                  if (exc_type) {
+                    if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
+                    else __PYX_ERR(12, 294, __pyx_L7_error)
+                  }
+                  break;
+                }
+                __Pyx_GOTREF(__pyx_t_3);
+              }
+              if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) {
+                PyObject* sequence = __pyx_t_3;
+                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(12, 294, __pyx_L7_error)
+                }
+                #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+                if (likely(PyTuple_CheckExact(sequence))) {
+                  __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); 
+                  __pyx_t_16 = PyTuple_GET_ITEM(sequence, 1); 
+                } else {
+                  __pyx_t_4 = PyList_GET_ITEM(sequence, 0); 
+                  __pyx_t_16 = PyList_GET_ITEM(sequence, 1); 
+                }
+                __Pyx_INCREF(__pyx_t_4);
+                __Pyx_INCREF(__pyx_t_16);
+                #else
+                __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 294, __pyx_L7_error)
+                __Pyx_GOTREF(__pyx_t_4);
+                __pyx_t_16 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_16)) __PYX_ERR(12, 294, __pyx_L7_error)
+                __Pyx_GOTREF(__pyx_t_16);
+                #endif
+                __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+              } else {
+                Py_ssize_t index = -1;
+                __pyx_t_17 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_17)) __PYX_ERR(12, 294, __pyx_L7_error)
+                __Pyx_GOTREF(__pyx_t_17);
+                __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+                __pyx_t_18 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_17);
+                index = 0; __pyx_t_4 = __pyx_t_18(__pyx_t_17); if (unlikely(!__pyx_t_4)) goto __pyx_L25_unpacking_failed;
+                __Pyx_GOTREF(__pyx_t_4);
+                index = 1; __pyx_t_16 = __pyx_t_18(__pyx_t_17); if (unlikely(!__pyx_t_16)) goto __pyx_L25_unpacking_failed;
+                __Pyx_GOTREF(__pyx_t_16);
+                if (__Pyx_IternextUnpackEndCheck(__pyx_t_18(__pyx_t_17), 2) < 0) __PYX_ERR(12, 294, __pyx_L7_error)
+                __pyx_t_18 = NULL;
+                __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
+                goto __pyx_L26_unpacking_done;
+                __pyx_L25_unpacking_failed:;
+                __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
+                __pyx_t_18 = NULL;
+                if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
+                __PYX_ERR(12, 294, __pyx_L7_error)
+                __pyx_L26_unpacking_done:;
+              }
+              __Pyx_XDECREF_SET(__pyx_v_operations, __pyx_t_4);
+              __pyx_t_4 = 0;
+              __Pyx_XDECREF_SET(__pyx_v_user_tag, __pyx_t_16);
+              __pyx_t_16 = 0;
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":295
+ *       started_tags = set()
+ *       for operations, user_tag in operationses_and_user_tags:
+ *         c_call_error, tag = _operate(call_state.c_call, operations, user_tag)             # <<<<<<<<<<<<<<
+ *         if c_call_error == GRPC_CALL_OK:
+ *           started_tags.add(tag)
+ */
+              __pyx_t_3 = __pyx_f_7_cython_6cygrpc__operate(__pyx_v_call_state->c_call, __pyx_v_operations, __pyx_v_user_tag); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 295, __pyx_L7_error)
+              __Pyx_GOTREF(__pyx_t_3);
+              if (likely(__pyx_t_3 != Py_None)) {
+                PyObject* sequence = __pyx_t_3;
+                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(12, 295, __pyx_L7_error)
+                }
+                #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+                __pyx_t_16 = PyTuple_GET_ITEM(sequence, 0); 
+                __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); 
+                __Pyx_INCREF(__pyx_t_16);
+                __Pyx_INCREF(__pyx_t_4);
+                #else
+                __pyx_t_16 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_16)) __PYX_ERR(12, 295, __pyx_L7_error)
+                __Pyx_GOTREF(__pyx_t_16);
+                __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 295, __pyx_L7_error)
+                __Pyx_GOTREF(__pyx_t_4);
+                #endif
+                __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+              } else {
+                __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(12, 295, __pyx_L7_error)
+              }
+              __pyx_t_19 = ((grpc_call_error)__Pyx_PyInt_As_grpc_call_error(__pyx_t_16)); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 295, __pyx_L7_error)
+              __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
+              __pyx_v_c_call_error = __pyx_t_19;
+              __Pyx_XDECREF_SET(__pyx_v_tag, __pyx_t_4);
+              __pyx_t_4 = 0;
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":296
+ *       for operations, user_tag in operationses_and_user_tags:
+ *         c_call_error, tag = _operate(call_state.c_call, operations, user_tag)
+ *         if c_call_error == GRPC_CALL_OK:             # <<<<<<<<<<<<<<
+ *           started_tags.add(tag)
+ *         else:
+ */
+              __pyx_t_9 = (__pyx_v_c_call_error == GRPC_CALL_OK);
+              if (__pyx_t_9) {
+
+                /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":297
+ *         c_call_error, tag = _operate(call_state.c_call, operations, user_tag)
+ *         if c_call_error == GRPC_CALL_OK:
+ *           started_tags.add(tag)             # <<<<<<<<<<<<<<
+ *         else:
+ *           grpc_call_cancel(call_state.c_call, NULL)
+ */
+                __pyx_t_20 = PySet_Add(__pyx_v_started_tags, __pyx_v_tag); if (unlikely(__pyx_t_20 == ((int)-1))) __PYX_ERR(12, 297, __pyx_L7_error)
+
+                /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":296
+ *       for operations, user_tag in operationses_and_user_tags:
+ *         c_call_error, tag = _operate(call_state.c_call, operations, user_tag)
+ *         if c_call_error == GRPC_CALL_OK:             # <<<<<<<<<<<<<<
+ *           started_tags.add(tag)
+ *         else:
+ */
+                goto __pyx_L27;
+              }
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":299
+ *           started_tags.add(tag)
+ *         else:
+ *           grpc_call_cancel(call_state.c_call, NULL)             # <<<<<<<<<<<<<<
+ *           #TODO(xuanwn): Expand the scope of nogil
+ *           with nogil:
+ */
+              /*else*/ {
+                (void)(grpc_call_cancel(__pyx_v_call_state->c_call, NULL));
+
+                /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":301
+ *           grpc_call_cancel(call_state.c_call, NULL)
+ *           #TODO(xuanwn): Expand the scope of nogil
+ *           with nogil:             # <<<<<<<<<<<<<<
+ *             grpc_call_unref(call_state.c_call)
+ *           call_state.c_call = NULL
+ */
+                {
+                    #ifdef WITH_THREAD
+                    PyThreadState *_save;
+                    _save = NULL;
+                    Py_UNBLOCK_THREADS
+                    __Pyx_FastGIL_Remember();
+                    #endif
+                    /*try:*/ {
+
+                      /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":302
+ *           #TODO(xuanwn): Expand the scope of nogil
+ *           with nogil:
+ *             grpc_call_unref(call_state.c_call)             # <<<<<<<<<<<<<<
+ *           call_state.c_call = NULL
+ *           _raise_call_error(c_call_error, metadata)
+ */
+                      grpc_call_unref(__pyx_v_call_state->c_call);
+                    }
+
+                    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":301
+ *           grpc_call_cancel(call_state.c_call, NULL)
+ *           #TODO(xuanwn): Expand the scope of nogil
+ *           with nogil:             # <<<<<<<<<<<<<<
+ *             grpc_call_unref(call_state.c_call)
+ *           call_state.c_call = NULL
+ */
+                    /*finally:*/ {
+                      /*normal exit:*/{
+                        #ifdef WITH_THREAD
+                        __Pyx_FastGIL_Forget();
+                        Py_BLOCK_THREADS
+                        #endif
+                        goto __pyx_L32;
+                      }
+                      __pyx_L32:;
+                    }
+                }
+
+                /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":303
+ *           with nogil:
+ *             grpc_call_unref(call_state.c_call)
+ *           call_state.c_call = NULL             # <<<<<<<<<<<<<<
+ *           _raise_call_error(c_call_error, metadata)
+ *       else:
+ */
+                __pyx_v_call_state->c_call = NULL;
+
+                /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":304
+ *             grpc_call_unref(call_state.c_call)
+ *           call_state.c_call = NULL
+ *           _raise_call_error(c_call_error, metadata)             # <<<<<<<<<<<<<<
+ *       else:
+ *         call_state.due.update(started_tags)
+ */
+                __pyx_t_3 = __Pyx_PyInt_From_grpc_call_error(__pyx_v_c_call_error); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 304, __pyx_L7_error)
+                __Pyx_GOTREF(__pyx_t_3);
+                __pyx_f_7_cython_6cygrpc__raise_call_error(__pyx_t_3, __pyx_v_metadata); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 304, __pyx_L7_error)
+                __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+              }
+              __pyx_L27:;
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":294
+ *           _raise_call_error_no_metadata(c_call_error)
+ *       started_tags = set()
+ *       for operations, user_tag in operationses_and_user_tags:             # <<<<<<<<<<<<<<
+ *         c_call_error, tag = _operate(call_state.c_call, operations, user_tag)
+ *         if c_call_error == GRPC_CALL_OK:
+ */
+            }
+            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+            /*else*/ {
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":306
+ *           _raise_call_error(c_call_error, metadata)
+ *       else:
+ *         call_state.due.update(started_tags)             # <<<<<<<<<<<<<<
+ *         on_success(started_tags)
+ *     else:
+ */
+              __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_call_state->due, __pyx_n_s_update); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 306, __pyx_L7_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_started_tags};
+                __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(12, 306, __pyx_L7_error)
+                __Pyx_GOTREF(__pyx_t_2);
+                __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+              }
+              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":307
+ *       else:
+ *         call_state.due.update(started_tags)
+ *         on_success(started_tags)             # <<<<<<<<<<<<<<
+ *     else:
+ *       raise ValueError('Cannot invoke RPC: %s' % channel_state.closed_reason)
+ */
+              __Pyx_INCREF(__pyx_v_on_success);
+              __pyx_t_3 = __pyx_v_on_success; __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_started_tags};
+                __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(12, 307, __pyx_L7_error)
+                __Pyx_GOTREF(__pyx_t_2);
+                __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+              }
+              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+            }
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":259
+ *   cdef _BatchOperationTag wrapper_tag
+ *   with channel_state.condition:
+ *     if channel_state.open:             # <<<<<<<<<<<<<<
+ *       method_slice = _slice_from_bytes(method)
+ *       if host is None:
+ */
+            goto __pyx_L13;
+          }
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":309
+ *         on_success(started_tags)
+ *     else:
+ *       raise ValueError('Cannot invoke RPC: %s' % channel_state.closed_reason)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+          /*else*/ {
+            __pyx_t_2 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Cannot_invoke_RPC_s, __pyx_v_channel_state->closed_reason); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 309, __pyx_L7_error)
+            __Pyx_GOTREF(__pyx_t_2);
+            __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 309, __pyx_L7_error)
+            __Pyx_GOTREF(__pyx_t_3);
+            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+            __Pyx_Raise(__pyx_t_3, 0, 0, 0);
+            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+            __PYX_ERR(12, 309, __pyx_L7_error)
+          }
+          __pyx_L13:;
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":258
+ *   cdef tuple error_and_wrapper_tag
+ *   cdef _BatchOperationTag wrapper_tag
+ *   with channel_state.condition:             # <<<<<<<<<<<<<<
+ *     if channel_state.open:
+ *       method_slice = _slice_from_bytes(method)
+ */
+        }
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+        goto __pyx_L12_try_end;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
+        __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
+        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        /*except:*/ {
+          __Pyx_AddTraceback("_cython.cygrpc._call", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_4) < 0) __PYX_ERR(12, 258, __pyx_L9_except_error)
+          __Pyx_XGOTREF(__pyx_t_3);
+          __Pyx_XGOTREF(__pyx_t_2);
+          __Pyx_XGOTREF(__pyx_t_4);
+          __pyx_t_16 = PyTuple_Pack(3, __pyx_t_3, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_16)) __PYX_ERR(12, 258, __pyx_L9_except_error)
+          __Pyx_GOTREF(__pyx_t_16);
+          __pyx_t_21 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_16, NULL);
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
+          if (unlikely(!__pyx_t_21)) __PYX_ERR(12, 258, __pyx_L9_except_error)
+          __Pyx_GOTREF(__pyx_t_21);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_21);
+          __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
+          if (__pyx_t_9 < 0) __PYX_ERR(12, 258, __pyx_L9_except_error)
+          __pyx_t_22 = (!__pyx_t_9);
+          if (unlikely(__pyx_t_22)) {
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_GIVEREF(__pyx_t_2);
+            __Pyx_XGIVEREF(__pyx_t_4);
+            __Pyx_ErrRestoreWithState(__pyx_t_3, __pyx_t_2, __pyx_t_4);
+            __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_4 = 0; 
+            __PYX_ERR(12, 258, __pyx_L9_except_error)
+          }
+          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_XGIVEREF(__pyx_t_8);
+        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_XGIVEREF(__pyx_t_8);
+        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
+        __pyx_L12_try_end:;
+      }
+    }
+    /*finally:*/ {
+      /*normal exit:*/{
+        if (__pyx_t_1) {
+          __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__11, NULL);
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          if (unlikely(!__pyx_t_8)) __PYX_ERR(12, 258, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_8);
+          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+        }
+        goto __pyx_L6;
+      }
+      __pyx_L6:;
+    }
+    goto __pyx_L38;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    goto __pyx_L1_error;
+    __pyx_L38:;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":216
+ * 
+ * # TODO(https://github.com/grpc/grpc/issues/14569): This could be a lot simpler.
+ * cdef void _call(             # <<<<<<<<<<<<<<
+ *     _ChannelState channel_state, _CallState call_state,
+ *     grpc_completion_queue *c_completion_queue, on_success, int flags, method,
+ */
+
+  /* function exit code */
+  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_16);
+  __Pyx_XDECREF(__pyx_t_17);
+  __Pyx_AddTraceback("_cython.cygrpc._call", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_started_tags);
+  __Pyx_XDECREF(__pyx_v_operations);
+  __Pyx_XDECREF(__pyx_v_user_tag);
+  __Pyx_XDECREF(__pyx_v_tag);
+  __Pyx_RefNannyFinishContext();
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":312
+ * 
+ * 
+ * cdef void _process_integrated_call_tag(             # <<<<<<<<<<<<<<
+ *     _ChannelState state, _BatchOperationTag tag) except *:
+ *   cdef _CallState call_state = state.integrated_call_states.pop(tag)
+ */
+
+static void __pyx_f_7_cython_6cygrpc__process_integrated_call_tag(struct __pyx_obj_7_cython_6cygrpc__ChannelState *__pyx_v_state, struct __pyx_obj_7_cython_6cygrpc__BatchOperationTag *__pyx_v_tag) {
+  struct __pyx_obj_7_cython_6cygrpc__CallState *__pyx_v_call_state = 0;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_t_2;
+  int __pyx_t_3;
+  int __pyx_t_4;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_process_integrated_call_tag", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":314
+ * cdef void _process_integrated_call_tag(
+ *     _ChannelState state, _BatchOperationTag tag) except *:
+ *   cdef _CallState call_state = state.integrated_call_states.pop(tag)             # <<<<<<<<<<<<<<
+ *   call_state.due.remove(tag)
+ *   if not call_state.due:
+ */
+  if (unlikely(__pyx_v_state->integrated_call_states == Py_None)) {
+    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "pop");
+    __PYX_ERR(12, 314, __pyx_L1_error)
+  }
+  __pyx_t_1 = __Pyx_PyDict_Pop(__pyx_v_state->integrated_call_states, ((PyObject *)__pyx_v_tag), ((PyObject *)NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 314, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_7_cython_6cygrpc__CallState))))) __PYX_ERR(12, 314, __pyx_L1_error)
+  __pyx_v_call_state = ((struct __pyx_obj_7_cython_6cygrpc__CallState *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":315
+ *     _ChannelState state, _BatchOperationTag tag) except *:
+ *   cdef _CallState call_state = state.integrated_call_states.pop(tag)
+ *   call_state.due.remove(tag)             # <<<<<<<<<<<<<<
+ *   if not call_state.due:
+ *     with nogil:
+ */
+  if (unlikely(__pyx_v_call_state->due == Py_None)) {
+    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "remove");
+    __PYX_ERR(12, 315, __pyx_L1_error)
+  }
+  __pyx_t_2 = __Pyx_PySet_Remove(__pyx_v_call_state->due, ((PyObject *)__pyx_v_tag)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(12, 315, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":316
+ *   cdef _CallState call_state = state.integrated_call_states.pop(tag)
+ *   call_state.due.remove(tag)
+ *   if not call_state.due:             # <<<<<<<<<<<<<<
+ *     with nogil:
+ *       grpc_call_unref(call_state.c_call)
+ */
+  __pyx_t_3 = (__pyx_v_call_state->due != Py_None)&&(PySet_GET_SIZE(__pyx_v_call_state->due) != 0);
+  __pyx_t_4 = (!__pyx_t_3);
+  if (__pyx_t_4) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":317
+ *   call_state.due.remove(tag)
+ *   if not call_state.due:
+ *     with nogil:             # <<<<<<<<<<<<<<
+ *       grpc_call_unref(call_state.c_call)
+ *     call_state.c_call = NULL
+ */
+    {
+        #ifdef WITH_THREAD
+        PyThreadState *_save;
+        _save = NULL;
+        Py_UNBLOCK_THREADS
+        __Pyx_FastGIL_Remember();
+        #endif
+        /*try:*/ {
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":318
+ *   if not call_state.due:
+ *     with nogil:
+ *       grpc_call_unref(call_state.c_call)             # <<<<<<<<<<<<<<
+ *     call_state.c_call = NULL
+ *     call_state.maybe_delete_call_tracer()
+ */
+          grpc_call_unref(__pyx_v_call_state->c_call);
+        }
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":317
+ *   call_state.due.remove(tag)
+ *   if not call_state.due:
+ *     with nogil:             # <<<<<<<<<<<<<<
+ *       grpc_call_unref(call_state.c_call)
+ *     call_state.c_call = NULL
+ */
+        /*finally:*/ {
+          /*normal exit:*/{
+            #ifdef WITH_THREAD
+            __Pyx_FastGIL_Forget();
+            Py_BLOCK_THREADS
+            #endif
+            goto __pyx_L6;
+          }
+          __pyx_L6:;
+        }
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":319
+ *     with nogil:
+ *       grpc_call_unref(call_state.c_call)
+ *     call_state.c_call = NULL             # <<<<<<<<<<<<<<
+ *     call_state.maybe_delete_call_tracer()
+ * 
+ */
+    __pyx_v_call_state->c_call = NULL;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":320
+ *       grpc_call_unref(call_state.c_call)
+ *     call_state.c_call = NULL
+ *     call_state.maybe_delete_call_tracer()             # <<<<<<<<<<<<<<
+ * 
+ * cdef class IntegratedCall:
+ */
+    ((struct __pyx_vtabstruct_7_cython_6cygrpc__CallState *)__pyx_v_call_state->__pyx_vtab)->maybe_delete_call_tracer(__pyx_v_call_state); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 320, __pyx_L1_error)
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":316
+ *   cdef _CallState call_state = state.integrated_call_states.pop(tag)
+ *   call_state.due.remove(tag)
+ *   if not call_state.due:             # <<<<<<<<<<<<<<
+ *     with nogil:
+ *       grpc_call_unref(call_state.c_call)
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":312
+ * 
+ * 
+ * cdef void _process_integrated_call_tag(             # <<<<<<<<<<<<<<
+ *     _ChannelState state, _BatchOperationTag tag) except *:
+ *   cdef _CallState call_state = state.integrated_call_states.pop(tag)
+ */
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc._process_integrated_call_tag", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_call_state);
+  __Pyx_RefNannyFinishContext();
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":324
+ * cdef class IntegratedCall:
+ * 
+ *   def __cinit__(self, _ChannelState channel_state, _CallState call_state):             # <<<<<<<<<<<<<<
+ *     self._channel_state = channel_state
+ *     self._call_state = call_state
+ */
+
+/* Python wrapper */
+static int __pyx_pw_7_cython_6cygrpc_14IntegratedCall_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_7_cython_6cygrpc_14IntegratedCall_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct __pyx_obj_7_cython_6cygrpc__ChannelState *__pyx_v_channel_state = 0;
+  struct __pyx_obj_7_cython_6cygrpc__CallState *__pyx_v_call_state = 0;
+  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject* values[2] = {0,0};
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  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);
+  {
+    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_channel_state,&__pyx_n_s_call_state,0};
+    if (__pyx_kwds) {
+      Py_ssize_t kw_args;
+      switch (__pyx_nargs) {
+        case  2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
+      switch (__pyx_nargs) {
+        case  0:
+        if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_channel_state)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 324, __pyx_L3_error)
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_call_state)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 324, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, 1); __PYX_ERR(12, 324, __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, "__cinit__") < 0)) __PYX_ERR(12, 324, __pyx_L3_error)
+      }
+    } else if (unlikely(__pyx_nargs != 2)) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+      values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
+    }
+    __pyx_v_channel_state = ((struct __pyx_obj_7_cython_6cygrpc__ChannelState *)values[0]);
+    __pyx_v_call_state = ((struct __pyx_obj_7_cython_6cygrpc__CallState *)values[1]);
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, __pyx_nargs); __PYX_ERR(12, 324, __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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_AddTraceback("_cython.cygrpc.IntegratedCall.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_channel_state), __pyx_ptype_7_cython_6cygrpc__ChannelState, 1, "channel_state", 0))) __PYX_ERR(12, 324, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_call_state), __pyx_ptype_7_cython_6cygrpc__CallState, 1, "call_state", 0))) __PYX_ERR(12, 324, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_14IntegratedCall___cinit__(((struct __pyx_obj_7_cython_6cygrpc_IntegratedCall *)__pyx_v_self), __pyx_v_channel_state, __pyx_v_call_state);
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = -1;
+  __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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_7_cython_6cygrpc_14IntegratedCall___cinit__(struct __pyx_obj_7_cython_6cygrpc_IntegratedCall *__pyx_v_self, struct __pyx_obj_7_cython_6cygrpc__ChannelState *__pyx_v_channel_state, struct __pyx_obj_7_cython_6cygrpc__CallState *__pyx_v_call_state) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__cinit__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":325
+ * 
+ *   def __cinit__(self, _ChannelState channel_state, _CallState call_state):
+ *     self._channel_state = channel_state             # <<<<<<<<<<<<<<
+ *     self._call_state = call_state
+ * 
+ */
+  __Pyx_INCREF((PyObject *)__pyx_v_channel_state);
+  __Pyx_GIVEREF((PyObject *)__pyx_v_channel_state);
+  __Pyx_GOTREF((PyObject *)__pyx_v_self->_channel_state);
+  __Pyx_DECREF((PyObject *)__pyx_v_self->_channel_state);
+  __pyx_v_self->_channel_state = __pyx_v_channel_state;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":326
+ *   def __cinit__(self, _ChannelState channel_state, _CallState call_state):
+ *     self._channel_state = channel_state
+ *     self._call_state = call_state             # <<<<<<<<<<<<<<
+ * 
+ *   def operate(self, operations, tag):
+ */
+  __Pyx_INCREF((PyObject *)__pyx_v_call_state);
+  __Pyx_GIVEREF((PyObject *)__pyx_v_call_state);
+  __Pyx_GOTREF((PyObject *)__pyx_v_self->_call_state);
+  __Pyx_DECREF((PyObject *)__pyx_v_self->_call_state);
+  __pyx_v_self->_call_state = __pyx_v_call_state;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":324
+ * cdef class IntegratedCall:
+ * 
+ *   def __cinit__(self, _ChannelState channel_state, _CallState call_state):             # <<<<<<<<<<<<<<
+ *     self._channel_state = channel_state
+ *     self._call_state = call_state
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":328
+ *     self._call_state = call_state
+ * 
+ *   def operate(self, operations, tag):             # <<<<<<<<<<<<<<
+ *     return _operate_from_integrated_call(
+ *         self._channel_state, self._call_state, operations, tag)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_14IntegratedCall_3operate(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_14IntegratedCall_3operate = {"operate", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_14IntegratedCall_3operate, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_14IntegratedCall_3operate(PyObject *__pyx_v_self, 
+#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_operations = 0;
+  PyObject *__pyx_v_tag = 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("operate (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_operations,&__pyx_n_s_tag,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_operations)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 328, __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_tag)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 328, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("operate", 1, 2, 2, 1); __PYX_ERR(12, 328, __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, "operate") < 0)) __PYX_ERR(12, 328, __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_operations = values[0];
+    __pyx_v_tag = values[1];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("operate", 1, 2, 2, __pyx_nargs); __PYX_ERR(12, 328, __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("_cython.cygrpc.IntegratedCall.operate", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_14IntegratedCall_2operate(((struct __pyx_obj_7_cython_6cygrpc_IntegratedCall *)__pyx_v_self), __pyx_v_operations, __pyx_v_tag);
+
+  /* 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_7_cython_6cygrpc_14IntegratedCall_2operate(struct __pyx_obj_7_cython_6cygrpc_IntegratedCall *__pyx_v_self, PyObject *__pyx_v_operations, PyObject *__pyx_v_tag) {
+  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("operate", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":329
+ * 
+ *   def operate(self, operations, tag):
+ *     return _operate_from_integrated_call(             # <<<<<<<<<<<<<<
+ *         self._channel_state, self._call_state, operations, tag)
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":330
+ *   def operate(self, operations, tag):
+ *     return _operate_from_integrated_call(
+ *         self._channel_state, self._call_state, operations, tag)             # <<<<<<<<<<<<<<
+ * 
+ *   def cancel(self, code, details):
+ */
+  __pyx_t_1 = ((PyObject *)__pyx_v_self->_channel_state);
+  __Pyx_INCREF(__pyx_t_1);
+  __pyx_t_2 = ((PyObject *)__pyx_v_self->_call_state);
+  __Pyx_INCREF(__pyx_t_2);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":329
+ * 
+ *   def operate(self, operations, tag):
+ *     return _operate_from_integrated_call(             # <<<<<<<<<<<<<<
+ *         self._channel_state, self._call_state, operations, tag)
+ * 
+ */
+  __pyx_t_3 = __pyx_f_7_cython_6cygrpc__operate_from_integrated_call(((struct __pyx_obj_7_cython_6cygrpc__ChannelState *)__pyx_t_1), ((struct __pyx_obj_7_cython_6cygrpc__CallState *)__pyx_t_2), __pyx_v_operations, __pyx_v_tag); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 329, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_r = __pyx_t_3;
+  __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":328
+ *     self._call_state = call_state
+ * 
+ *   def operate(self, operations, tag):             # <<<<<<<<<<<<<<
+ *     return _operate_from_integrated_call(
+ *         self._channel_state, self._call_state, operations, tag)
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("_cython.cygrpc.IntegratedCall.operate", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":332
+ *         self._channel_state, self._call_state, operations, tag)
+ * 
+ *   def cancel(self, code, details):             # <<<<<<<<<<<<<<
+ *     _cancel(self._channel_state, self._call_state, code, details)
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_14IntegratedCall_5cancel(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_14IntegratedCall_5cancel = {"cancel", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_14IntegratedCall_5cancel, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_14IntegratedCall_5cancel(PyObject *__pyx_v_self, 
+#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_code = 0;
+  PyObject *__pyx_v_details = 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("cancel (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_code,&__pyx_n_s_details,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_code)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 332, __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_details)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 332, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("cancel", 1, 2, 2, 1); __PYX_ERR(12, 332, __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, "cancel") < 0)) __PYX_ERR(12, 332, __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_code = values[0];
+    __pyx_v_details = values[1];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("cancel", 1, 2, 2, __pyx_nargs); __PYX_ERR(12, 332, __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("_cython.cygrpc.IntegratedCall.cancel", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_14IntegratedCall_4cancel(((struct __pyx_obj_7_cython_6cygrpc_IntegratedCall *)__pyx_v_self), __pyx_v_code, __pyx_v_details);
+
+  /* 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_7_cython_6cygrpc_14IntegratedCall_4cancel(struct __pyx_obj_7_cython_6cygrpc_IntegratedCall *__pyx_v_self, PyObject *__pyx_v_code, PyObject *__pyx_v_details) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  grpc_status_code __pyx_t_3;
+  PyObject *__pyx_t_4 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("cancel", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":333
+ * 
+ *   def cancel(self, code, details):
+ *     _cancel(self._channel_state, self._call_state, code, details)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = ((PyObject *)__pyx_v_self->_channel_state);
+  __Pyx_INCREF(__pyx_t_1);
+  __pyx_t_2 = ((PyObject *)__pyx_v_self->_call_state);
+  __Pyx_INCREF(__pyx_t_2);
+  __pyx_t_3 = ((grpc_status_code)__Pyx_PyInt_As_grpc_status_code(__pyx_v_code)); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 333, __pyx_L1_error)
+  if (!(likely(PyString_CheckExact(__pyx_v_details))||((__pyx_v_details) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_v_details))) __PYX_ERR(12, 333, __pyx_L1_error)
+  __pyx_t_4 = __pyx_f_7_cython_6cygrpc__cancel(((struct __pyx_obj_7_cython_6cygrpc__ChannelState *)__pyx_t_1), ((struct __pyx_obj_7_cython_6cygrpc__CallState *)__pyx_t_2), __pyx_t_3, ((PyObject*)__pyx_v_details)); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 333, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":332
+ *         self._channel_state, self._call_state, operations, tag)
+ * 
+ *   def cancel(self, code, details):             # <<<<<<<<<<<<<<
+ *     _cancel(self._channel_state, self._call_state, code, details)
+ * 
+ */
+
+  /* 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_AddTraceback("_cython.cygrpc.IntegratedCall.cancel", __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, "no default __reduce__ due to non-trivial __cinit__"
+ * def __setstate_cython__(self, __pyx_state):
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_14IntegratedCall_7__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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_14IntegratedCall_7__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_14IntegratedCall_7__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_14IntegratedCall_7__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_7_cython_6cygrpc_14IntegratedCall_6__reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc_IntegratedCall *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_14IntegratedCall_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_IntegratedCall *__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(10, 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("_cython.cygrpc.IntegratedCall.__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_7_cython_6cygrpc_14IntegratedCall_9__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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_14IntegratedCall_9__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_14IntegratedCall_9__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_14IntegratedCall_9__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(10, 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(10, 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(10, 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("_cython.cygrpc.IntegratedCall.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_14IntegratedCall_8__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc_IntegratedCall *)__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_7_cython_6cygrpc_14IntegratedCall_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_IntegratedCall *__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(10, 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("_cython.cygrpc.IntegratedCall.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":342
+ *   call_state = _CallState()
+ * 
+ *   def on_success(started_tags):             # <<<<<<<<<<<<<<
+ *     for started_tag in started_tags:
+ *       state.integrated_call_states[started_tag] = call_state
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_integrated_call_1on_success(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_16_integrated_call_1on_success = {"on_success", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16_integrated_call_1on_success, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_integrated_call_1on_success(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_started_tags = 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("on_success (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_started_tags,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_started_tags)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 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, "on_success") < 0)) __PYX_ERR(12, 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_started_tags = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("on_success", 1, 1, 1, __pyx_nargs); __PYX_ERR(12, 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("_cython.cygrpc._integrated_call.on_success", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_16_integrated_call_on_success(__pyx_self, __pyx_v_started_tags);
+
+  /* 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_7_cython_6cygrpc_16_integrated_call_on_success(PyObject *__pyx_self, PyObject *__pyx_v_started_tags) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call *__pyx_cur_scope;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call *__pyx_outer_scope;
+  PyObject *__pyx_v_started_tag = NULL;
+  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("on_success", 1);
+  __pyx_outer_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call *) __Pyx_CyFunction_GetClosure(__pyx_self);
+  __pyx_cur_scope = __pyx_outer_scope;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":343
+ * 
+ *   def on_success(started_tags):
+ *     for started_tag in started_tags:             # <<<<<<<<<<<<<<
+ *       state.integrated_call_states[started_tag] = call_state
+ * 
+ */
+  if (likely(PyList_CheckExact(__pyx_v_started_tags)) || PyTuple_CheckExact(__pyx_v_started_tags)) {
+    __pyx_t_1 = __pyx_v_started_tags; __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_started_tags); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 343, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 343, __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(12, 343, __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(12, 343, __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(12, 343, __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(12, 343, __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(12, 343, __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(12, 343, __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(12, 343, __pyx_L1_error)
+        }
+        break;
+      }
+      __Pyx_GOTREF(__pyx_t_4);
+    }
+    __Pyx_XDECREF_SET(__pyx_v_started_tag, __pyx_t_4);
+    __pyx_t_4 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":344
+ *   def on_success(started_tags):
+ *     for started_tag in started_tags:
+ *       state.integrated_call_states[started_tag] = call_state             # <<<<<<<<<<<<<<
+ * 
+ *   _call(
+ */
+    if (unlikely(!__pyx_cur_scope->__pyx_v_call_state)) { __Pyx_RaiseClosureNameError("call_state"); __PYX_ERR(12, 344, __pyx_L1_error) }
+    if (unlikely(!__pyx_cur_scope->__pyx_v_state)) { __Pyx_RaiseClosureNameError("state"); __PYX_ERR(12, 344, __pyx_L1_error) }
+    if (unlikely(__pyx_cur_scope->__pyx_v_state->integrated_call_states == Py_None)) {
+      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+      __PYX_ERR(12, 344, __pyx_L1_error)
+    }
+    if (unlikely((PyDict_SetItem(__pyx_cur_scope->__pyx_v_state->integrated_call_states, __pyx_v_started_tag, ((PyObject *)__pyx_cur_scope->__pyx_v_call_state)) < 0))) __PYX_ERR(12, 344, __pyx_L1_error)
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":343
+ * 
+ *   def on_success(started_tags):
+ *     for started_tag in started_tags:             # <<<<<<<<<<<<<<
+ *       state.integrated_call_states[started_tag] = call_state
+ * 
+ */
+  }
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":342
+ *   call_state = _CallState()
+ * 
+ *   def on_success(started_tags):             # <<<<<<<<<<<<<<
+ *     for started_tag in started_tags:
+ *       state.integrated_call_states[started_tag] = call_state
+ */
+
+  /* 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("_cython.cygrpc._integrated_call.on_success", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_started_tag);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":336
+ * 
+ * 
+ * cdef IntegratedCall _integrated_call(             # <<<<<<<<<<<<<<
+ *     _ChannelState state, int flags, method, host, object deadline,
+ *     object metadata, CallCredentials credentials, operationses_and_user_tags,
+ */
+
+static struct __pyx_obj_7_cython_6cygrpc_IntegratedCall *__pyx_f_7_cython_6cygrpc__integrated_call(struct __pyx_obj_7_cython_6cygrpc__ChannelState *__pyx_v_state, int __pyx_v_flags, PyObject *__pyx_v_method, PyObject *__pyx_v_host, PyObject *__pyx_v_deadline, PyObject *__pyx_v_metadata, struct __pyx_obj_7_cython_6cygrpc_CallCredentials *__pyx_v_credentials, PyObject *__pyx_v_operationses_and_user_tags, PyObject *__pyx_v_context, PyObject *__pyx_v_registered_call_handle) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call *__pyx_cur_scope;
+  PyObject *__pyx_v_on_success = 0;
+  struct __pyx_obj_7_cython_6cygrpc_IntegratedCall *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_integrated_call", 0);
+  __pyx_cur_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call, __pyx_empty_tuple, NULL);
+  if (unlikely(!__pyx_cur_scope)) {
+    __pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call *)Py_None);
+    __Pyx_INCREF(Py_None);
+    __PYX_ERR(12, 336, __pyx_L1_error)
+  } else {
+    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+  }
+  __pyx_cur_scope->__pyx_v_state = __pyx_v_state;
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_state);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_state);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":340
+ *     object metadata, CallCredentials credentials, operationses_and_user_tags,
+ *     object context, object registered_call_handle):
+ *   call_state = _CallState()             # <<<<<<<<<<<<<<
+ * 
+ *   def on_success(started_tags):
+ */
+  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_7_cython_6cygrpc__CallState)); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 340, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __pyx_cur_scope->__pyx_v_call_state = ((struct __pyx_obj_7_cython_6cygrpc__CallState *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":342
+ *   call_state = _CallState()
+ * 
+ *   def on_success(started_tags):             # <<<<<<<<<<<<<<
+ *     for started_tag in started_tags:
+ *       state.integrated_call_states[started_tag] = call_state
+ */
+  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_16_integrated_call_1on_success, 0, __pyx_n_s_integrated_call_locals_on_succe, ((PyObject*)__pyx_cur_scope), __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__13)); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 342, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_on_success = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":347
+ * 
+ *   _call(
+ *       state, call_state, state.c_call_completion_queue, on_success, flags,             # <<<<<<<<<<<<<<
+ *       method, host, deadline, credentials, operationses_and_user_tags,
+ *       metadata, context, registered_call_handle)
+ */
+  __pyx_t_1 = ((PyObject *)__pyx_cur_scope->__pyx_v_state);
+  __Pyx_INCREF(__pyx_t_1);
+  __pyx_t_2 = ((PyObject *)__pyx_cur_scope->__pyx_v_call_state);
+  __Pyx_INCREF(__pyx_t_2);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":346
+ *       state.integrated_call_states[started_tag] = call_state
+ * 
+ *   _call(             # <<<<<<<<<<<<<<
+ *       state, call_state, state.c_call_completion_queue, on_success, flags,
+ *       method, host, deadline, credentials, operationses_and_user_tags,
+ */
+  __pyx_f_7_cython_6cygrpc__call(((struct __pyx_obj_7_cython_6cygrpc__ChannelState *)__pyx_t_1), ((struct __pyx_obj_7_cython_6cygrpc__CallState *)__pyx_t_2), __pyx_cur_scope->__pyx_v_state->c_call_completion_queue, __pyx_v_on_success, __pyx_v_flags, __pyx_v_method, __pyx_v_host, __pyx_v_deadline, __pyx_v_credentials, __pyx_v_operationses_and_user_tags, __pyx_v_metadata, __pyx_v_context, __pyx_v_registered_call_handle); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 346, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":351
+ *       metadata, context, registered_call_handle)
+ * 
+ *   return IntegratedCall(state, call_state)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF((PyObject *)__pyx_r);
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 351, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_state);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_state);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_state))) __PYX_ERR(12, 351, __pyx_L1_error);
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_call_state);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_call_state);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_cur_scope->__pyx_v_call_state))) __PYX_ERR(12, 351, __pyx_L1_error);
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_7_cython_6cygrpc_IntegratedCall), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 351, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_r = ((struct __pyx_obj_7_cython_6cygrpc_IntegratedCall *)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":336
+ * 
+ * 
+ * cdef IntegratedCall _integrated_call(             # <<<<<<<<<<<<<<
+ *     _ChannelState state, int flags, method, host, object deadline,
+ *     object metadata, CallCredentials credentials, operationses_and_user_tags,
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("_cython.cygrpc._integrated_call", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_on_success);
+  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+  __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":354
+ * 
+ * 
+ * cdef object _process_segregated_call_tag(             # <<<<<<<<<<<<<<
+ *     _ChannelState state, _CallState call_state,
+ *     grpc_completion_queue *c_completion_queue, _BatchOperationTag tag):
+ */
+
+static PyObject *__pyx_f_7_cython_6cygrpc__process_segregated_call_tag(struct __pyx_obj_7_cython_6cygrpc__ChannelState *__pyx_v_state, struct __pyx_obj_7_cython_6cygrpc__CallState *__pyx_v_call_state, grpc_completion_queue *__pyx_v_c_completion_queue, struct __pyx_obj_7_cython_6cygrpc__BatchOperationTag *__pyx_v_tag) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  int __pyx_t_2;
+  int __pyx_t_3;
+  PyObject *__pyx_t_4 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_process_segregated_call_tag", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":357
+ *     _ChannelState state, _CallState call_state,
+ *     grpc_completion_queue *c_completion_queue, _BatchOperationTag tag):
+ *   call_state.due.remove(tag)             # <<<<<<<<<<<<<<
+ *   if not call_state.due:
+ *     #TODO(xuanwn): Expand the scope of nogil
+ */
+  if (unlikely(__pyx_v_call_state->due == Py_None)) {
+    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "remove");
+    __PYX_ERR(12, 357, __pyx_L1_error)
+  }
+  __pyx_t_1 = __Pyx_PySet_Remove(__pyx_v_call_state->due, ((PyObject *)__pyx_v_tag)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(12, 357, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":358
+ *     grpc_completion_queue *c_completion_queue, _BatchOperationTag tag):
+ *   call_state.due.remove(tag)
+ *   if not call_state.due:             # <<<<<<<<<<<<<<
+ *     #TODO(xuanwn): Expand the scope of nogil
+ *     with nogil:
+ */
+  __pyx_t_2 = (__pyx_v_call_state->due != Py_None)&&(PySet_GET_SIZE(__pyx_v_call_state->due) != 0);
+  __pyx_t_3 = (!__pyx_t_2);
+  if (__pyx_t_3) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":360
+ *   if not call_state.due:
+ *     #TODO(xuanwn): Expand the scope of nogil
+ *     with nogil:             # <<<<<<<<<<<<<<
+ *       grpc_call_unref(call_state.c_call)
+ *     call_state.c_call = NULL
+ */
+    {
+        #ifdef WITH_THREAD
+        PyThreadState *_save;
+        _save = NULL;
+        Py_UNBLOCK_THREADS
+        __Pyx_FastGIL_Remember();
+        #endif
+        /*try:*/ {
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":361
+ *     #TODO(xuanwn): Expand the scope of nogil
+ *     with nogil:
+ *       grpc_call_unref(call_state.c_call)             # <<<<<<<<<<<<<<
+ *     call_state.c_call = NULL
+ *     call_state.maybe_delete_call_tracer()
+ */
+          grpc_call_unref(__pyx_v_call_state->c_call);
+        }
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":360
+ *   if not call_state.due:
+ *     #TODO(xuanwn): Expand the scope of nogil
+ *     with nogil:             # <<<<<<<<<<<<<<
+ *       grpc_call_unref(call_state.c_call)
+ *     call_state.c_call = NULL
+ */
+        /*finally:*/ {
+          /*normal exit:*/{
+            #ifdef WITH_THREAD
+            __Pyx_FastGIL_Forget();
+            Py_BLOCK_THREADS
+            #endif
+            goto __pyx_L6;
+          }
+          __pyx_L6:;
+        }
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":362
+ *     with nogil:
+ *       grpc_call_unref(call_state.c_call)
+ *     call_state.c_call = NULL             # <<<<<<<<<<<<<<
+ *     call_state.maybe_delete_call_tracer()
+ *     state.segregated_call_states.remove(call_state)
+ */
+    __pyx_v_call_state->c_call = NULL;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":363
+ *       grpc_call_unref(call_state.c_call)
+ *     call_state.c_call = NULL
+ *     call_state.maybe_delete_call_tracer()             # <<<<<<<<<<<<<<
+ *     state.segregated_call_states.remove(call_state)
+ *     _destroy_c_completion_queue(c_completion_queue)
+ */
+    ((struct __pyx_vtabstruct_7_cython_6cygrpc__CallState *)__pyx_v_call_state->__pyx_vtab)->maybe_delete_call_tracer(__pyx_v_call_state); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 363, __pyx_L1_error)
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":364
+ *     call_state.c_call = NULL
+ *     call_state.maybe_delete_call_tracer()
+ *     state.segregated_call_states.remove(call_state)             # <<<<<<<<<<<<<<
+ *     _destroy_c_completion_queue(c_completion_queue)
+ *     return True
+ */
+    if (unlikely(__pyx_v_state->segregated_call_states == Py_None)) {
+      PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "remove");
+      __PYX_ERR(12, 364, __pyx_L1_error)
+    }
+    __pyx_t_1 = __Pyx_PySet_Remove(__pyx_v_state->segregated_call_states, ((PyObject *)__pyx_v_call_state)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(12, 364, __pyx_L1_error)
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":365
+ *     call_state.maybe_delete_call_tracer()
+ *     state.segregated_call_states.remove(call_state)
+ *     _destroy_c_completion_queue(c_completion_queue)             # <<<<<<<<<<<<<<
+ *     return True
+ *   else:
+ */
+    __pyx_t_4 = __pyx_f_7_cython_6cygrpc__destroy_c_completion_queue(__pyx_v_c_completion_queue); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 365, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":366
+ *     state.segregated_call_states.remove(call_state)
+ *     _destroy_c_completion_queue(c_completion_queue)
+ *     return True             # <<<<<<<<<<<<<<
+ *   else:
+ *     return False
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_INCREF(Py_True);
+    __pyx_r = Py_True;
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":358
+ *     grpc_completion_queue *c_completion_queue, _BatchOperationTag tag):
+ *   call_state.due.remove(tag)
+ *   if not call_state.due:             # <<<<<<<<<<<<<<
+ *     #TODO(xuanwn): Expand the scope of nogil
+ *     with nogil:
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":368
+ *     return True
+ *   else:
+ *     return False             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  /*else*/ {
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_INCREF(Py_False);
+    __pyx_r = Py_False;
+    goto __pyx_L0;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":354
+ * 
+ * 
+ * cdef object _process_segregated_call_tag(             # <<<<<<<<<<<<<<
+ *     _ChannelState state, _CallState call_state,
+ *     grpc_completion_queue *c_completion_queue, _BatchOperationTag tag):
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("_cython.cygrpc._process_segregated_call_tag", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":373
+ * cdef class SegregatedCall:
+ * 
+ *   def __cinit__(self, _ChannelState channel_state, _CallState call_state):             # <<<<<<<<<<<<<<
+ *     self._channel_state = channel_state
+ *     self._call_state = call_state
+ */
+
+/* Python wrapper */
+static int __pyx_pw_7_cython_6cygrpc_14SegregatedCall_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_7_cython_6cygrpc_14SegregatedCall_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct __pyx_obj_7_cython_6cygrpc__ChannelState *__pyx_v_channel_state = 0;
+  struct __pyx_obj_7_cython_6cygrpc__CallState *__pyx_v_call_state = 0;
+  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject* values[2] = {0,0};
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  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);
+  {
+    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_channel_state,&__pyx_n_s_call_state,0};
+    if (__pyx_kwds) {
+      Py_ssize_t kw_args;
+      switch (__pyx_nargs) {
+        case  2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
+      switch (__pyx_nargs) {
+        case  0:
+        if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_channel_state)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 373, __pyx_L3_error)
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_call_state)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 373, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, 1); __PYX_ERR(12, 373, __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, "__cinit__") < 0)) __PYX_ERR(12, 373, __pyx_L3_error)
+      }
+    } else if (unlikely(__pyx_nargs != 2)) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+      values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
+    }
+    __pyx_v_channel_state = ((struct __pyx_obj_7_cython_6cygrpc__ChannelState *)values[0]);
+    __pyx_v_call_state = ((struct __pyx_obj_7_cython_6cygrpc__CallState *)values[1]);
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, __pyx_nargs); __PYX_ERR(12, 373, __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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_AddTraceback("_cython.cygrpc.SegregatedCall.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_channel_state), __pyx_ptype_7_cython_6cygrpc__ChannelState, 1, "channel_state", 0))) __PYX_ERR(12, 373, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_call_state), __pyx_ptype_7_cython_6cygrpc__CallState, 1, "call_state", 0))) __PYX_ERR(12, 373, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_14SegregatedCall___cinit__(((struct __pyx_obj_7_cython_6cygrpc_SegregatedCall *)__pyx_v_self), __pyx_v_channel_state, __pyx_v_call_state);
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = -1;
+  __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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_7_cython_6cygrpc_14SegregatedCall___cinit__(struct __pyx_obj_7_cython_6cygrpc_SegregatedCall *__pyx_v_self, struct __pyx_obj_7_cython_6cygrpc__ChannelState *__pyx_v_channel_state, struct __pyx_obj_7_cython_6cygrpc__CallState *__pyx_v_call_state) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__cinit__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":374
+ * 
+ *   def __cinit__(self, _ChannelState channel_state, _CallState call_state):
+ *     self._channel_state = channel_state             # <<<<<<<<<<<<<<
+ *     self._call_state = call_state
+ * 
+ */
+  __Pyx_INCREF((PyObject *)__pyx_v_channel_state);
+  __Pyx_GIVEREF((PyObject *)__pyx_v_channel_state);
+  __Pyx_GOTREF((PyObject *)__pyx_v_self->_channel_state);
+  __Pyx_DECREF((PyObject *)__pyx_v_self->_channel_state);
+  __pyx_v_self->_channel_state = __pyx_v_channel_state;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":375
+ *   def __cinit__(self, _ChannelState channel_state, _CallState call_state):
+ *     self._channel_state = channel_state
+ *     self._call_state = call_state             # <<<<<<<<<<<<<<
+ * 
+ *   def operate(self, operations, tag):
+ */
+  __Pyx_INCREF((PyObject *)__pyx_v_call_state);
+  __Pyx_GIVEREF((PyObject *)__pyx_v_call_state);
+  __Pyx_GOTREF((PyObject *)__pyx_v_self->_call_state);
+  __Pyx_DECREF((PyObject *)__pyx_v_self->_call_state);
+  __pyx_v_self->_call_state = __pyx_v_call_state;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":373
+ * cdef class SegregatedCall:
+ * 
+ *   def __cinit__(self, _ChannelState channel_state, _CallState call_state):             # <<<<<<<<<<<<<<
+ *     self._channel_state = channel_state
+ *     self._call_state = call_state
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":377
+ *     self._call_state = call_state
+ * 
+ *   def operate(self, operations, tag):             # <<<<<<<<<<<<<<
+ *     return _operate_from_segregated_call(
+ *         self._channel_state, self._call_state, operations, tag)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_14SegregatedCall_3operate(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_14SegregatedCall_3operate = {"operate", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_14SegregatedCall_3operate, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_14SegregatedCall_3operate(PyObject *__pyx_v_self, 
+#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_operations = 0;
+  PyObject *__pyx_v_tag = 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("operate (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_operations,&__pyx_n_s_tag,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_operations)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 377, __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_tag)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 377, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("operate", 1, 2, 2, 1); __PYX_ERR(12, 377, __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, "operate") < 0)) __PYX_ERR(12, 377, __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_operations = values[0];
+    __pyx_v_tag = values[1];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("operate", 1, 2, 2, __pyx_nargs); __PYX_ERR(12, 377, __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("_cython.cygrpc.SegregatedCall.operate", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_14SegregatedCall_2operate(((struct __pyx_obj_7_cython_6cygrpc_SegregatedCall *)__pyx_v_self), __pyx_v_operations, __pyx_v_tag);
+
+  /* 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_7_cython_6cygrpc_14SegregatedCall_2operate(struct __pyx_obj_7_cython_6cygrpc_SegregatedCall *__pyx_v_self, PyObject *__pyx_v_operations, PyObject *__pyx_v_tag) {
+  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("operate", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":378
+ * 
+ *   def operate(self, operations, tag):
+ *     return _operate_from_segregated_call(             # <<<<<<<<<<<<<<
+ *         self._channel_state, self._call_state, operations, tag)
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":379
+ *   def operate(self, operations, tag):
+ *     return _operate_from_segregated_call(
+ *         self._channel_state, self._call_state, operations, tag)             # <<<<<<<<<<<<<<
+ * 
+ *   def cancel(self, code, details):
+ */
+  __pyx_t_1 = ((PyObject *)__pyx_v_self->_channel_state);
+  __Pyx_INCREF(__pyx_t_1);
+  __pyx_t_2 = ((PyObject *)__pyx_v_self->_call_state);
+  __Pyx_INCREF(__pyx_t_2);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":378
+ * 
+ *   def operate(self, operations, tag):
+ *     return _operate_from_segregated_call(             # <<<<<<<<<<<<<<
+ *         self._channel_state, self._call_state, operations, tag)
+ * 
+ */
+  __pyx_t_3 = __pyx_f_7_cython_6cygrpc__operate_from_segregated_call(((struct __pyx_obj_7_cython_6cygrpc__ChannelState *)__pyx_t_1), ((struct __pyx_obj_7_cython_6cygrpc__CallState *)__pyx_t_2), __pyx_v_operations, __pyx_v_tag); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 378, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_r = __pyx_t_3;
+  __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":377
+ *     self._call_state = call_state
+ * 
+ *   def operate(self, operations, tag):             # <<<<<<<<<<<<<<
+ *     return _operate_from_segregated_call(
+ *         self._channel_state, self._call_state, operations, tag)
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("_cython.cygrpc.SegregatedCall.operate", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":381
+ *         self._channel_state, self._call_state, operations, tag)
+ * 
+ *   def cancel(self, code, details):             # <<<<<<<<<<<<<<
+ *     _cancel(self._channel_state, self._call_state, code, details)
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_14SegregatedCall_5cancel(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_14SegregatedCall_5cancel = {"cancel", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_14SegregatedCall_5cancel, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_14SegregatedCall_5cancel(PyObject *__pyx_v_self, 
+#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_code = 0;
+  PyObject *__pyx_v_details = 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("cancel (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_code,&__pyx_n_s_details,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_code)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 381, __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_details)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 381, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("cancel", 1, 2, 2, 1); __PYX_ERR(12, 381, __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, "cancel") < 0)) __PYX_ERR(12, 381, __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_code = values[0];
+    __pyx_v_details = values[1];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("cancel", 1, 2, 2, __pyx_nargs); __PYX_ERR(12, 381, __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("_cython.cygrpc.SegregatedCall.cancel", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_14SegregatedCall_4cancel(((struct __pyx_obj_7_cython_6cygrpc_SegregatedCall *)__pyx_v_self), __pyx_v_code, __pyx_v_details);
+
+  /* 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_7_cython_6cygrpc_14SegregatedCall_4cancel(struct __pyx_obj_7_cython_6cygrpc_SegregatedCall *__pyx_v_self, PyObject *__pyx_v_code, PyObject *__pyx_v_details) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  grpc_status_code __pyx_t_3;
+  PyObject *__pyx_t_4 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("cancel", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":382
+ * 
+ *   def cancel(self, code, details):
+ *     _cancel(self._channel_state, self._call_state, code, details)             # <<<<<<<<<<<<<<
+ * 
+ *   def next_event(self):
+ */
+  __pyx_t_1 = ((PyObject *)__pyx_v_self->_channel_state);
+  __Pyx_INCREF(__pyx_t_1);
+  __pyx_t_2 = ((PyObject *)__pyx_v_self->_call_state);
+  __Pyx_INCREF(__pyx_t_2);
+  __pyx_t_3 = ((grpc_status_code)__Pyx_PyInt_As_grpc_status_code(__pyx_v_code)); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 382, __pyx_L1_error)
+  if (!(likely(PyString_CheckExact(__pyx_v_details))||((__pyx_v_details) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_v_details))) __PYX_ERR(12, 382, __pyx_L1_error)
+  __pyx_t_4 = __pyx_f_7_cython_6cygrpc__cancel(((struct __pyx_obj_7_cython_6cygrpc__ChannelState *)__pyx_t_1), ((struct __pyx_obj_7_cython_6cygrpc__CallState *)__pyx_t_2), __pyx_t_3, ((PyObject*)__pyx_v_details)); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 382, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":381
+ *         self._channel_state, self._call_state, operations, tag)
+ * 
+ *   def cancel(self, code, details):             # <<<<<<<<<<<<<<
+ *     _cancel(self._channel_state, self._call_state, code, details)
+ * 
+ */
+
+  /* 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_AddTraceback("_cython.cygrpc.SegregatedCall.cancel", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":384
+ *     _cancel(self._channel_state, self._call_state, code, details)
+ * 
+ *   def next_event(self):             # <<<<<<<<<<<<<<
+ *     def on_success(tag):
+ *       _process_segregated_call_tag(
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_14SegregatedCall_7next_event(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_14SegregatedCall_7next_event = {"next_event", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_14SegregatedCall_7next_event, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_14SegregatedCall_7next_event(PyObject *__pyx_v_self, 
+#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("next_event (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("next_event", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "next_event", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_14SegregatedCall_6next_event(((struct __pyx_obj_7_cython_6cygrpc_SegregatedCall *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":385
+ * 
+ *   def next_event(self):
+ *     def on_success(tag):             # <<<<<<<<<<<<<<
+ *       _process_segregated_call_tag(
+ *         self._channel_state, self._call_state, self._c_completion_queue, tag)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_14SegregatedCall_10next_event_1on_success(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_14SegregatedCall_10next_event_1on_success = {"on_success", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_14SegregatedCall_10next_event_1on_success, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_14SegregatedCall_10next_event_1on_success(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_tag = 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("on_success (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_tag,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_tag)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 385, __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, "on_success") < 0)) __PYX_ERR(12, 385, __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_tag = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("on_success", 1, 1, 1, __pyx_nargs); __PYX_ERR(12, 385, __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("_cython.cygrpc.SegregatedCall.next_event.on_success", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_14SegregatedCall_10next_event_on_success(__pyx_self, __pyx_v_tag);
+
+  /* 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_7_cython_6cygrpc_14SegregatedCall_10next_event_on_success(PyObject *__pyx_self, PyObject *__pyx_v_tag) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_1_next_event *__pyx_cur_scope;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_1_next_event *__pyx_outer_scope;
+  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("on_success", 1);
+  __pyx_outer_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_1_next_event *) __Pyx_CyFunction_GetClosure(__pyx_self);
+  __pyx_cur_scope = __pyx_outer_scope;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":387
+ *     def on_success(tag):
+ *       _process_segregated_call_tag(
+ *         self._channel_state, self._call_state, self._c_completion_queue, tag)             # <<<<<<<<<<<<<<
+ *     def on_failure():
+ *       self._call_state.due.clear()
+ */
+  if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(12, 387, __pyx_L1_error) }
+  __pyx_t_1 = ((PyObject *)__pyx_cur_scope->__pyx_v_self->_channel_state);
+  __Pyx_INCREF(__pyx_t_1);
+  if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(12, 387, __pyx_L1_error) }
+  __pyx_t_2 = ((PyObject *)__pyx_cur_scope->__pyx_v_self->_call_state);
+  __Pyx_INCREF(__pyx_t_2);
+  if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(12, 387, __pyx_L1_error) }
+  if (!(likely(((__pyx_v_tag) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_tag, __pyx_ptype_7_cython_6cygrpc__BatchOperationTag))))) __PYX_ERR(12, 387, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":386
+ *   def next_event(self):
+ *     def on_success(tag):
+ *       _process_segregated_call_tag(             # <<<<<<<<<<<<<<
+ *         self._channel_state, self._call_state, self._c_completion_queue, tag)
+ *     def on_failure():
+ */
+  __pyx_t_3 = __pyx_f_7_cython_6cygrpc__process_segregated_call_tag(((struct __pyx_obj_7_cython_6cygrpc__ChannelState *)__pyx_t_1), ((struct __pyx_obj_7_cython_6cygrpc__CallState *)__pyx_t_2), __pyx_cur_scope->__pyx_v_self->_c_completion_queue, ((struct __pyx_obj_7_cython_6cygrpc__BatchOperationTag *)__pyx_v_tag)); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 386, __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_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":385
+ * 
+ *   def next_event(self):
+ *     def on_success(tag):             # <<<<<<<<<<<<<<
+ *       _process_segregated_call_tag(
+ *         self._channel_state, self._call_state, self._c_completion_queue, tag)
+ */
+
+  /* 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("_cython.cygrpc.SegregatedCall.next_event.on_success", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":388
+ *       _process_segregated_call_tag(
+ *         self._channel_state, self._call_state, self._c_completion_queue, tag)
+ *     def on_failure():             # <<<<<<<<<<<<<<
+ *       self._call_state.due.clear()
+ *       with nogil:
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_14SegregatedCall_10next_event_3on_failure(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_14SegregatedCall_10next_event_3on_failure = {"on_failure", (PyCFunction)__pyx_pw_7_cython_6cygrpc_14SegregatedCall_10next_event_3on_failure, METH_NOARGS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_14SegregatedCall_10next_event_3on_failure(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("on_failure (wrapper)", 0);
+  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_14SegregatedCall_10next_event_2on_failure(__pyx_self);
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_14SegregatedCall_10next_event_2on_failure(PyObject *__pyx_self) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_1_next_event *__pyx_cur_scope;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_1_next_event *__pyx_outer_scope;
+  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("on_failure", 1);
+  __pyx_outer_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_1_next_event *) __Pyx_CyFunction_GetClosure(__pyx_self);
+  __pyx_cur_scope = __pyx_outer_scope;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":389
+ *         self._channel_state, self._call_state, self._c_completion_queue, tag)
+ *     def on_failure():
+ *       self._call_state.due.clear()             # <<<<<<<<<<<<<<
+ *       with nogil:
+ *         grpc_call_unref(self._call_state.c_call)
+ */
+  if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(12, 389, __pyx_L1_error) }
+  if (unlikely(__pyx_cur_scope->__pyx_v_self->_call_state->due == Py_None)) {
+    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "clear");
+    __PYX_ERR(12, 389, __pyx_L1_error)
+  }
+  __pyx_t_1 = PySet_Clear(__pyx_cur_scope->__pyx_v_self->_call_state->due); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(12, 389, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":390
+ *     def on_failure():
+ *       self._call_state.due.clear()
+ *       with nogil:             # <<<<<<<<<<<<<<
+ *         grpc_call_unref(self._call_state.c_call)
+ *       self._call_state.c_call = NULL
+ */
+  {
+      #ifdef WITH_THREAD
+      PyThreadState *_save;
+      _save = NULL;
+      Py_UNBLOCK_THREADS
+      __Pyx_FastGIL_Remember();
+      #endif
+      /*try:*/ {
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":391
+ *       self._call_state.due.clear()
+ *       with nogil:
+ *         grpc_call_unref(self._call_state.c_call)             # <<<<<<<<<<<<<<
+ *       self._call_state.c_call = NULL
+ *       self._channel_state.segregated_call_states.remove(self._call_state)
+ */
+        if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(12, 391, __pyx_L4_error) }
+        grpc_call_unref(__pyx_cur_scope->__pyx_v_self->_call_state->c_call);
+      }
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":390
+ *     def on_failure():
+ *       self._call_state.due.clear()
+ *       with nogil:             # <<<<<<<<<<<<<<
+ *         grpc_call_unref(self._call_state.c_call)
+ *       self._call_state.c_call = NULL
+ */
+      /*finally:*/ {
+        /*normal exit:*/{
+          #ifdef WITH_THREAD
+          __Pyx_FastGIL_Forget();
+          Py_BLOCK_THREADS
+          #endif
+          goto __pyx_L5;
+        }
+        __pyx_L4_error: {
+          #ifdef WITH_THREAD
+          __Pyx_FastGIL_Forget();
+          Py_BLOCK_THREADS
+          #endif
+          goto __pyx_L1_error;
+        }
+        __pyx_L5:;
+      }
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":392
+ *       with nogil:
+ *         grpc_call_unref(self._call_state.c_call)
+ *       self._call_state.c_call = NULL             # <<<<<<<<<<<<<<
+ *       self._channel_state.segregated_call_states.remove(self._call_state)
+ *       _destroy_c_completion_queue(self._c_completion_queue)
+ */
+  if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(12, 392, __pyx_L1_error) }
+  __pyx_cur_scope->__pyx_v_self->_call_state->c_call = NULL;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":393
+ *         grpc_call_unref(self._call_state.c_call)
+ *       self._call_state.c_call = NULL
+ *       self._channel_state.segregated_call_states.remove(self._call_state)             # <<<<<<<<<<<<<<
+ *       _destroy_c_completion_queue(self._c_completion_queue)
+ *     return _next_call_event(
+ */
+  if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(12, 393, __pyx_L1_error) }
+  if (unlikely(__pyx_cur_scope->__pyx_v_self->_channel_state->segregated_call_states == Py_None)) {
+    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "remove");
+    __PYX_ERR(12, 393, __pyx_L1_error)
+  }
+  if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(12, 393, __pyx_L1_error) }
+  __pyx_t_2 = ((PyObject *)__pyx_cur_scope->__pyx_v_self->_call_state);
+  __Pyx_INCREF(__pyx_t_2);
+  __pyx_t_1 = __Pyx_PySet_Remove(__pyx_cur_scope->__pyx_v_self->_channel_state->segregated_call_states, __pyx_t_2); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(12, 393, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":394
+ *       self._call_state.c_call = NULL
+ *       self._channel_state.segregated_call_states.remove(self._call_state)
+ *       _destroy_c_completion_queue(self._c_completion_queue)             # <<<<<<<<<<<<<<
+ *     return _next_call_event(
+ *         self._channel_state, self._c_completion_queue, on_success, on_failure, None)
+ */
+  if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(12, 394, __pyx_L1_error) }
+  __pyx_t_2 = __pyx_f_7_cython_6cygrpc__destroy_c_completion_queue(__pyx_cur_scope->__pyx_v_self->_c_completion_queue); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 394, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":388
+ *       _process_segregated_call_tag(
+ *         self._channel_state, self._call_state, self._c_completion_queue, tag)
+ *     def on_failure():             # <<<<<<<<<<<<<<
+ *       self._call_state.due.clear()
+ *       with nogil:
+ */
+
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("_cython.cygrpc.SegregatedCall.next_event.on_failure", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":384
+ *     _cancel(self._channel_state, self._call_state, code, details)
+ * 
+ *   def next_event(self):             # <<<<<<<<<<<<<<
+ *     def on_success(tag):
+ *       _process_segregated_call_tag(
+ */
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_14SegregatedCall_6next_event(struct __pyx_obj_7_cython_6cygrpc_SegregatedCall *__pyx_v_self) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_1_next_event *__pyx_cur_scope;
+  PyObject *__pyx_v_on_success = 0;
+  PyObject *__pyx_v_on_failure = 0;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("next_event", 0);
+  __pyx_cur_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_1_next_event *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_1_next_event(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_1_next_event, __pyx_empty_tuple, NULL);
+  if (unlikely(!__pyx_cur_scope)) {
+    __pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_1_next_event *)Py_None);
+    __Pyx_INCREF(Py_None);
+    __PYX_ERR(12, 384, __pyx_L1_error)
+  } else {
+    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+  }
+  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":385
+ * 
+ *   def next_event(self):
+ *     def on_success(tag):             # <<<<<<<<<<<<<<
+ *       _process_segregated_call_tag(
+ *         self._channel_state, self._call_state, self._c_completion_queue, tag)
+ */
+  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_14SegregatedCall_10next_event_1on_success, 0, __pyx_n_s_next_event_locals_on_success, ((PyObject*)__pyx_cur_scope), __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__15)); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 385, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_on_success = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":388
+ *       _process_segregated_call_tag(
+ *         self._channel_state, self._call_state, self._c_completion_queue, tag)
+ *     def on_failure():             # <<<<<<<<<<<<<<
+ *       self._call_state.due.clear()
+ *       with nogil:
+ */
+  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_14SegregatedCall_10next_event_3on_failure, 0, __pyx_n_s_next_event_locals_on_failure, ((PyObject*)__pyx_cur_scope), __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__16)); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 388, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_on_failure = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":395
+ *       self._channel_state.segregated_call_states.remove(self._call_state)
+ *       _destroy_c_completion_queue(self._c_completion_queue)
+ *     return _next_call_event(             # <<<<<<<<<<<<<<
+ *         self._channel_state, self._c_completion_queue, on_success, on_failure, None)
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":396
+ *       _destroy_c_completion_queue(self._c_completion_queue)
+ *     return _next_call_event(
+ *         self._channel_state, self._c_completion_queue, on_success, on_failure, None)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = ((PyObject *)__pyx_cur_scope->__pyx_v_self->_channel_state);
+  __Pyx_INCREF(__pyx_t_1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":395
+ *       self._channel_state.segregated_call_states.remove(self._call_state)
+ *       _destroy_c_completion_queue(self._c_completion_queue)
+ *     return _next_call_event(             # <<<<<<<<<<<<<<
+ *         self._channel_state, self._c_completion_queue, on_success, on_failure, None)
+ * 
+ */
+  __pyx_t_2 = __pyx_f_7_cython_6cygrpc__next_call_event(((struct __pyx_obj_7_cython_6cygrpc__ChannelState *)__pyx_t_1), __pyx_cur_scope->__pyx_v_self->_c_completion_queue, __pyx_v_on_success, __pyx_v_on_failure, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 395, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":384
+ *     _cancel(self._channel_state, self._call_state, code, details)
+ * 
+ *   def next_event(self):             # <<<<<<<<<<<<<<
+ *     def on_success(tag):
+ *       _process_segregated_call_tag(
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("_cython.cygrpc.SegregatedCall.next_event", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_on_success);
+  __Pyx_XDECREF(__pyx_v_on_failure);
+  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+  __Pyx_XGIVEREF(__pyx_r);
+  __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_7_cython_6cygrpc_14SegregatedCall_9__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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_14SegregatedCall_9__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_14SegregatedCall_9__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_14SegregatedCall_9__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_7_cython_6cygrpc_14SegregatedCall_8__reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc_SegregatedCall *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_14SegregatedCall_8__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_SegregatedCall *__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(10, 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("_cython.cygrpc.SegregatedCall.__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_7_cython_6cygrpc_14SegregatedCall_11__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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_14SegregatedCall_11__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_14SegregatedCall_11__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_14SegregatedCall_11__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(10, 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(10, 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(10, 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("_cython.cygrpc.SegregatedCall.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_14SegregatedCall_10__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc_SegregatedCall *)__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_7_cython_6cygrpc_14SegregatedCall_10__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_SegregatedCall *__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(10, 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("_cython.cygrpc.SegregatedCall.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":407
+ *   cdef grpc_completion_queue *c_completion_queue
+ * 
+ *   def on_success(started_tags):             # <<<<<<<<<<<<<<
+ *     state.segregated_call_states.add(call_state)
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_segregated_call_1on_success(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_16_segregated_call_1on_success = {"on_success", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16_segregated_call_1on_success, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_segregated_call_1on_success(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
+) {
+  CYTHON_UNUSED PyObject *__pyx_v_started_tags = 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("on_success (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_started_tags,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_started_tags)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 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, "on_success") < 0)) __PYX_ERR(12, 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_started_tags = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("on_success", 1, 1, 1, __pyx_nargs); __PYX_ERR(12, 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("_cython.cygrpc._segregated_call.on_success", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_16_segregated_call_on_success(__pyx_self, __pyx_v_started_tags);
+
+  /* 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_7_cython_6cygrpc_16_segregated_call_on_success(PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_started_tags) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call *__pyx_cur_scope;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call *__pyx_outer_scope;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_t_2;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("on_success", 1);
+  __pyx_outer_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call *) __Pyx_CyFunction_GetClosure(__pyx_self);
+  __pyx_cur_scope = __pyx_outer_scope;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":408
+ * 
+ *   def on_success(started_tags):
+ *     state.segregated_call_states.add(call_state)             # <<<<<<<<<<<<<<
+ * 
+ *   with state.condition:
+ */
+  if (unlikely(!__pyx_cur_scope->__pyx_v_state)) { __Pyx_RaiseClosureNameError("state"); __PYX_ERR(12, 408, __pyx_L1_error) }
+  if (unlikely(__pyx_cur_scope->__pyx_v_state->segregated_call_states == Py_None)) {
+    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "add");
+    __PYX_ERR(12, 408, __pyx_L1_error)
+  }
+  if (unlikely(!__pyx_cur_scope->__pyx_v_call_state)) { __Pyx_RaiseClosureNameError("call_state"); __PYX_ERR(12, 408, __pyx_L1_error) }
+  __pyx_t_1 = ((PyObject *)__pyx_cur_scope->__pyx_v_call_state);
+  __Pyx_INCREF(__pyx_t_1);
+  __pyx_t_2 = PySet_Add(__pyx_cur_scope->__pyx_v_state->segregated_call_states, __pyx_t_1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(12, 408, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":407
+ *   cdef grpc_completion_queue *c_completion_queue
+ * 
+ *   def on_success(started_tags):             # <<<<<<<<<<<<<<
+ *     state.segregated_call_states.add(call_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("_cython.cygrpc._segregated_call.on_success", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":399
+ * 
+ * 
+ * cdef SegregatedCall _segregated_call(             # <<<<<<<<<<<<<<
+ *     _ChannelState state, int flags, method, host, object deadline,
+ *     object metadata, CallCredentials credentials, operationses_and_user_tags,
+ */
+
+static struct __pyx_obj_7_cython_6cygrpc_SegregatedCall *__pyx_f_7_cython_6cygrpc__segregated_call(struct __pyx_obj_7_cython_6cygrpc__ChannelState *__pyx_v_state, int __pyx_v_flags, PyObject *__pyx_v_method, PyObject *__pyx_v_host, PyObject *__pyx_v_deadline, PyObject *__pyx_v_metadata, struct __pyx_obj_7_cython_6cygrpc_CallCredentials *__pyx_v_credentials, PyObject *__pyx_v_operationses_and_user_tags, PyObject *__pyx_v_context, PyObject *__pyx_v_registered_call_handle) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call *__pyx_cur_scope;
+  struct __pyx_obj_7_cython_6cygrpc_SegregatedCall *__pyx_v_segregated_call = 0;
+  grpc_completion_queue *__pyx_v_c_completion_queue;
+  PyObject *__pyx_v_on_success = 0;
+  struct __pyx_obj_7_cython_6cygrpc_SegregatedCall *__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;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
+  int __pyx_t_9;
+  PyObject *__pyx_t_10 = NULL;
+  PyObject *__pyx_t_11 = NULL;
+  int __pyx_t_12;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_segregated_call", 0);
+  __pyx_cur_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call, __pyx_empty_tuple, NULL);
+  if (unlikely(!__pyx_cur_scope)) {
+    __pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call *)Py_None);
+    __Pyx_INCREF(Py_None);
+    __PYX_ERR(12, 399, __pyx_L1_error)
+  } else {
+    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+  }
+  __pyx_cur_scope->__pyx_v_state = __pyx_v_state;
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_state);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_state);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":403
+ *     object metadata, CallCredentials credentials, operationses_and_user_tags,
+ *     object context, object registered_call_handle):
+ *   cdef _CallState call_state = _CallState()             # <<<<<<<<<<<<<<
+ *   cdef SegregatedCall segregated_call
+ *   cdef grpc_completion_queue *c_completion_queue
+ */
+  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_7_cython_6cygrpc__CallState)); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 403, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __pyx_cur_scope->__pyx_v_call_state = ((struct __pyx_obj_7_cython_6cygrpc__CallState *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":407
+ *   cdef grpc_completion_queue *c_completion_queue
+ * 
+ *   def on_success(started_tags):             # <<<<<<<<<<<<<<
+ *     state.segregated_call_states.add(call_state)
+ * 
+ */
+  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_16_segregated_call_1on_success, 0, __pyx_n_s_segregated_call_locals_on_succe, ((PyObject*)__pyx_cur_scope), __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__18)); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 407, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_on_success = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":410
+ *     state.segregated_call_states.add(call_state)
+ * 
+ *   with state.condition:             # <<<<<<<<<<<<<<
+ *     if state.open:
+ *       c_completion_queue = (grpc_completion_queue_create_for_next(NULL))
+ */
+  /*with:*/ {
+    __pyx_t_2 = __Pyx_PyObject_LookupSpecial(__pyx_cur_scope->__pyx_v_state->condition, __pyx_n_s_exit); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 410, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_cur_scope->__pyx_v_state->condition, __pyx_n_s_enter); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 410, __pyx_L3_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(12, 410, __pyx_L3_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__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_6, &__pyx_t_7, &__pyx_t_8);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_8);
+        /*try:*/ {
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":411
+ * 
+ *   with state.condition:
+ *     if state.open:             # <<<<<<<<<<<<<<
+ *       c_completion_queue = (grpc_completion_queue_create_for_next(NULL))
+ *     else:
+ */
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_state->open); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(12, 411, __pyx_L7_error)
+          if (likely(__pyx_t_9)) {
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":412
+ *   with state.condition:
+ *     if state.open:
+ *       c_completion_queue = (grpc_completion_queue_create_for_next(NULL))             # <<<<<<<<<<<<<<
+ *     else:
+ *       raise ValueError('Cannot invoke RPC on closed channel!')
+ */
+            __pyx_v_c_completion_queue = grpc_completion_queue_create_for_next(NULL);
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":411
+ * 
+ *   with state.condition:
+ *     if state.open:             # <<<<<<<<<<<<<<
+ *       c_completion_queue = (grpc_completion_queue_create_for_next(NULL))
+ *     else:
+ */
+            goto __pyx_L13;
+          }
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":414
+ *       c_completion_queue = (grpc_completion_queue_create_for_next(NULL))
+ *     else:
+ *       raise ValueError('Cannot invoke RPC on closed channel!')             # <<<<<<<<<<<<<<
+ * 
+ *   try:
+ */
+          /*else*/ {
+            __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 414, __pyx_L7_error)
+            __Pyx_GOTREF(__pyx_t_1);
+            __Pyx_Raise(__pyx_t_1, 0, 0, 0);
+            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+            __PYX_ERR(12, 414, __pyx_L7_error)
+          }
+          __pyx_L13:;
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":410
+ *     state.segregated_call_states.add(call_state)
+ * 
+ *   with state.condition:             # <<<<<<<<<<<<<<
+ *     if state.open:
+ *       c_completion_queue = (grpc_completion_queue_create_for_next(NULL))
+ */
+        }
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+        goto __pyx_L12_try_end;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        /*except:*/ {
+          __Pyx_AddTraceback("_cython.cygrpc._segregated_call", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_3, &__pyx_t_4) < 0) __PYX_ERR(12, 410, __pyx_L9_except_error)
+          __Pyx_XGOTREF(__pyx_t_1);
+          __Pyx_XGOTREF(__pyx_t_3);
+          __Pyx_XGOTREF(__pyx_t_4);
+          __pyx_t_10 = PyTuple_Pack(3, __pyx_t_1, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(12, 410, __pyx_L9_except_error)
+          __Pyx_GOTREF(__pyx_t_10);
+          __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_10, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+          if (unlikely(!__pyx_t_11)) __PYX_ERR(12, 410, __pyx_L9_except_error)
+          __Pyx_GOTREF(__pyx_t_11);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_11);
+          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+          if (__pyx_t_9 < 0) __PYX_ERR(12, 410, __pyx_L9_except_error)
+          __pyx_t_12 = (!__pyx_t_9);
+          if (unlikely(__pyx_t_12)) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_XGIVEREF(__pyx_t_4);
+            __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_3, __pyx_t_4);
+            __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0; 
+            __PYX_ERR(12, 410, __pyx_L9_except_error)
+          }
+          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_XGIVEREF(__pyx_t_8);
+        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_XGIVEREF(__pyx_t_8);
+        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
+        __pyx_L12_try_end:;
+      }
+    }
+    /*finally:*/ {
+      /*normal exit:*/{
+        if (__pyx_t_2) {
+          __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_8)) __PYX_ERR(12, 410, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_8);
+          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+        }
+        goto __pyx_L6;
+      }
+      __pyx_L6:;
+    }
+    goto __pyx_L17;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L17:;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":416
+ *       raise ValueError('Cannot invoke RPC on closed channel!')
+ * 
+ *   try:             # <<<<<<<<<<<<<<
+ *     _call(
+ *         state, call_state, c_completion_queue, on_success, flags, method, host,
+ */
+  {
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_8, &__pyx_t_7);
+    __Pyx_XGOTREF(__pyx_t_2);
+    __Pyx_XGOTREF(__pyx_t_8);
+    __Pyx_XGOTREF(__pyx_t_7);
+    /*try:*/ {
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":418
+ *   try:
+ *     _call(
+ *         state, call_state, c_completion_queue, on_success, flags, method, host,             # <<<<<<<<<<<<<<
+ *         deadline, credentials, operationses_and_user_tags, metadata,
+ *         context, registered_call_handle)
+ */
+      __pyx_t_4 = ((PyObject *)__pyx_cur_scope->__pyx_v_state);
+      __Pyx_INCREF(__pyx_t_4);
+      __pyx_t_3 = ((PyObject *)__pyx_cur_scope->__pyx_v_call_state);
+      __Pyx_INCREF(__pyx_t_3);
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":417
+ * 
+ *   try:
+ *     _call(             # <<<<<<<<<<<<<<
+ *         state, call_state, c_completion_queue, on_success, flags, method, host,
+ *         deadline, credentials, operationses_and_user_tags, metadata,
+ */
+      __pyx_f_7_cython_6cygrpc__call(((struct __pyx_obj_7_cython_6cygrpc__ChannelState *)__pyx_t_4), ((struct __pyx_obj_7_cython_6cygrpc__CallState *)__pyx_t_3), __pyx_v_c_completion_queue, __pyx_v_on_success, __pyx_v_flags, __pyx_v_method, __pyx_v_host, __pyx_v_deadline, __pyx_v_credentials, __pyx_v_operationses_and_user_tags, __pyx_v_metadata, __pyx_v_context, __pyx_v_registered_call_handle); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 417, __pyx_L18_error)
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":416
+ *       raise ValueError('Cannot invoke RPC on closed channel!')
+ * 
+ *   try:             # <<<<<<<<<<<<<<
+ *     _call(
+ *         state, call_state, c_completion_queue, on_success, flags, method, host,
+ */
+    }
+    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+    goto __pyx_L23_try_end;
+    __pyx_L18_error:;
+    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":421
+ *         deadline, credentials, operationses_and_user_tags, metadata,
+ *         context, registered_call_handle)
+ *   except:             # <<<<<<<<<<<<<<
+ *     _destroy_c_completion_queue(c_completion_queue)
+ *     raise
+ */
+    /*except:*/ {
+      __Pyx_AddTraceback("_cython.cygrpc._segregated_call", __pyx_clineno, __pyx_lineno, __pyx_filename);
+      if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_4, &__pyx_t_1) < 0) __PYX_ERR(12, 421, __pyx_L20_except_error)
+      __Pyx_XGOTREF(__pyx_t_3);
+      __Pyx_XGOTREF(__pyx_t_4);
+      __Pyx_XGOTREF(__pyx_t_1);
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":422
+ *         context, registered_call_handle)
+ *   except:
+ *     _destroy_c_completion_queue(c_completion_queue)             # <<<<<<<<<<<<<<
+ *     raise
+ * 
+ */
+      __pyx_t_10 = __pyx_f_7_cython_6cygrpc__destroy_c_completion_queue(__pyx_v_c_completion_queue); if (unlikely(!__pyx_t_10)) __PYX_ERR(12, 422, __pyx_L20_except_error)
+      __Pyx_GOTREF(__pyx_t_10);
+      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":423
+ *   except:
+ *     _destroy_c_completion_queue(c_completion_queue)
+ *     raise             # <<<<<<<<<<<<<<
+ * 
+ *   segregated_call = SegregatedCall(state, call_state)
+ */
+      __Pyx_GIVEREF(__pyx_t_3);
+      __Pyx_GIVEREF(__pyx_t_4);
+      __Pyx_XGIVEREF(__pyx_t_1);
+      __Pyx_ErrRestoreWithState(__pyx_t_3, __pyx_t_4, __pyx_t_1);
+      __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_1 = 0; 
+      __PYX_ERR(12, 423, __pyx_L20_except_error)
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":416
+ *       raise ValueError('Cannot invoke RPC on closed channel!')
+ * 
+ *   try:             # <<<<<<<<<<<<<<
+ *     _call(
+ *         state, call_state, c_completion_queue, on_success, flags, method, host,
+ */
+    __pyx_L20_except_error:;
+    __Pyx_XGIVEREF(__pyx_t_2);
+    __Pyx_XGIVEREF(__pyx_t_8);
+    __Pyx_XGIVEREF(__pyx_t_7);
+    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_8, __pyx_t_7);
+    goto __pyx_L1_error;
+    __pyx_L23_try_end:;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":425
+ *     raise
+ * 
+ *   segregated_call = SegregatedCall(state, call_state)             # <<<<<<<<<<<<<<
+ *   segregated_call._c_completion_queue = c_completion_queue
+ *   return segregated_call
+ */
+  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 425, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_state);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_state);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_state))) __PYX_ERR(12, 425, __pyx_L1_error);
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_call_state);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_call_state);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_cur_scope->__pyx_v_call_state))) __PYX_ERR(12, 425, __pyx_L1_error);
+  __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_7_cython_6cygrpc_SegregatedCall), __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 425, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_v_segregated_call = ((struct __pyx_obj_7_cython_6cygrpc_SegregatedCall *)__pyx_t_4);
+  __pyx_t_4 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":426
+ * 
+ *   segregated_call = SegregatedCall(state, call_state)
+ *   segregated_call._c_completion_queue = c_completion_queue             # <<<<<<<<<<<<<<
+ *   return segregated_call
+ * 
+ */
+  __pyx_v_segregated_call->_c_completion_queue = __pyx_v_c_completion_queue;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":427
+ *   segregated_call = SegregatedCall(state, call_state)
+ *   segregated_call._c_completion_queue = c_completion_queue
+ *   return segregated_call             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF((PyObject *)__pyx_r);
+  __Pyx_INCREF((PyObject *)__pyx_v_segregated_call);
+  __pyx_r = __pyx_v_segregated_call;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":399
+ * 
+ * 
+ * cdef SegregatedCall _segregated_call(             # <<<<<<<<<<<<<<
+ *     _ChannelState state, int flags, method, host, object deadline,
+ *     object metadata, CallCredentials credentials, operationses_and_user_tags,
+ */
+
+  /* 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_10);
+  __Pyx_AddTraceback("_cython.cygrpc._segregated_call", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_segregated_call);
+  __Pyx_XDECREF(__pyx_v_on_success);
+  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+  __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":430
+ * 
+ * 
+ * cdef object _watch_connectivity_state(             # <<<<<<<<<<<<<<
+ *     _ChannelState state, grpc_connectivity_state last_observed_state,
+ *     object deadline):
+ */
+
+static PyObject *__pyx_f_7_cython_6cygrpc__watch_connectivity_state(struct __pyx_obj_7_cython_6cygrpc__ChannelState *__pyx_v_state, grpc_connectivity_state __pyx_v_last_observed_state, PyObject *__pyx_v_deadline) {
+  struct __pyx_obj_7_cython_6cygrpc__ConnectivityTag *__pyx_v_tag = 0;
+  PyObject *__pyx_v_completed_tag = NULL;
+  PyObject *__pyx_v_event = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  unsigned int __pyx_t_5;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
+  int __pyx_t_9;
+  gpr_timespec __pyx_t_10;
+  int __pyx_t_11;
+  PyObject *__pyx_t_12 = NULL;
+  PyObject *__pyx_t_13 = NULL;
+  int __pyx_t_14;
+  PyObject *(*__pyx_t_15)(PyObject *);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_watch_connectivity_state", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":433
+ *     _ChannelState state, grpc_connectivity_state last_observed_state,
+ *     object deadline):
+ *   cdef _ConnectivityTag tag = _ConnectivityTag(object())             # <<<<<<<<<<<<<<
+ *   with state.condition:
+ *     if state.open:
+ */
+  __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_builtin_object); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 433, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_7_cython_6cygrpc__ConnectivityTag), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 433, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_v_tag = ((struct __pyx_obj_7_cython_6cygrpc__ConnectivityTag *)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":434
+ *     object deadline):
+ *   cdef _ConnectivityTag tag = _ConnectivityTag(object())
+ *   with state.condition:             # <<<<<<<<<<<<<<
+ *     if state.open:
+ *       cpython.Py_INCREF(tag)
+ */
+  /*with:*/ {
+    __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_v_state->condition, __pyx_n_s_exit); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 434, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_v_state->condition, __pyx_n_s_enter); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 434, __pyx_L3_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_4 = NULL;
+    __pyx_t_5 = 0;
+    #if CYTHON_UNPACK_METHODS
+    if (likely(PyMethod_Check(__pyx_t_1))) {
+      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
+      if (likely(__pyx_t_4)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+        __Pyx_INCREF(__pyx_t_4);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_1, function);
+        __pyx_t_5 = 1;
+      }
+    }
+    #endif
+    {
+      PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
+      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __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(12, 434, __pyx_L3_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    /*try:*/ {
+      {
+        __Pyx_PyThreadState_declare
+        __Pyx_PyThreadState_assign
+        __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_8);
+        /*try:*/ {
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":435
+ *   cdef _ConnectivityTag tag = _ConnectivityTag(object())
+ *   with state.condition:
+ *     if state.open:             # <<<<<<<<<<<<<<
+ *       cpython.Py_INCREF(tag)
+ *       grpc_channel_watch_connectivity_state(
+ */
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_state->open); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(12, 435, __pyx_L7_error)
+          if (likely(__pyx_t_9)) {
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":436
+ *   with state.condition:
+ *     if state.open:
+ *       cpython.Py_INCREF(tag)             # <<<<<<<<<<<<<<
+ *       grpc_channel_watch_connectivity_state(
+ *           state.c_channel, last_observed_state, _timespec_from_time(deadline),
+ */
+            Py_INCREF(((PyObject *)__pyx_v_tag));
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":438
+ *       cpython.Py_INCREF(tag)
+ *       grpc_channel_watch_connectivity_state(
+ *           state.c_channel, last_observed_state, _timespec_from_time(deadline),             # <<<<<<<<<<<<<<
+ *           state.c_connectivity_completion_queue, <cpython.PyObject *>tag)
+ *       state.connectivity_due.add(tag)
+ */
+            __pyx_t_10 = __pyx_f_7_cython_6cygrpc__timespec_from_time(__pyx_v_deadline); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 438, __pyx_L7_error)
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":437
+ *     if state.open:
+ *       cpython.Py_INCREF(tag)
+ *       grpc_channel_watch_connectivity_state(             # <<<<<<<<<<<<<<
+ *           state.c_channel, last_observed_state, _timespec_from_time(deadline),
+ *           state.c_connectivity_completion_queue, <cpython.PyObject *>tag)
+ */
+            grpc_channel_watch_connectivity_state(__pyx_v_state->c_channel, __pyx_v_last_observed_state, __pyx_t_10, __pyx_v_state->c_connectivity_completion_queue, ((PyObject *)__pyx_v_tag));
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":440
+ *           state.c_channel, last_observed_state, _timespec_from_time(deadline),
+ *           state.c_connectivity_completion_queue, <cpython.PyObject *>tag)
+ *       state.connectivity_due.add(tag)             # <<<<<<<<<<<<<<
+ *     else:
+ *       raise ValueError('Cannot monitor channel state: %s' % state.closed_reason)
+ */
+            if (unlikely(__pyx_v_state->connectivity_due == Py_None)) {
+              PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "add");
+              __PYX_ERR(12, 440, __pyx_L7_error)
+            }
+            __pyx_t_11 = PySet_Add(__pyx_v_state->connectivity_due, ((PyObject *)__pyx_v_tag)); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(12, 440, __pyx_L7_error)
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":435
+ *   cdef _ConnectivityTag tag = _ConnectivityTag(object())
+ *   with state.condition:
+ *     if state.open:             # <<<<<<<<<<<<<<
+ *       cpython.Py_INCREF(tag)
+ *       grpc_channel_watch_connectivity_state(
+ */
+            goto __pyx_L13;
+          }
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":442
+ *       state.connectivity_due.add(tag)
+ *     else:
+ *       raise ValueError('Cannot monitor channel state: %s' % state.closed_reason)             # <<<<<<<<<<<<<<
+ *   completed_tag, event = _latent_event(
+ *       state.c_connectivity_completion_queue, None)
+ */
+          /*else*/ {
+            __pyx_t_2 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Cannot_monitor_channel_state_s, __pyx_v_state->closed_reason); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 442, __pyx_L7_error)
+            __Pyx_GOTREF(__pyx_t_2);
+            __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 442, __pyx_L7_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(12, 442, __pyx_L7_error)
+          }
+          __pyx_L13:;
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":434
+ *     object deadline):
+ *   cdef _ConnectivityTag tag = _ConnectivityTag(object())
+ *   with state.condition:             # <<<<<<<<<<<<<<
+ *     if state.open:
+ *       cpython.Py_INCREF(tag)
+ */
+        }
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+        goto __pyx_L12_try_end;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        /*except:*/ {
+          __Pyx_AddTraceback("_cython.cygrpc._watch_connectivity_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_4) < 0) __PYX_ERR(12, 434, __pyx_L9_except_error)
+          __Pyx_XGOTREF(__pyx_t_1);
+          __Pyx_XGOTREF(__pyx_t_2);
+          __Pyx_XGOTREF(__pyx_t_4);
+          __pyx_t_12 = PyTuple_Pack(3, __pyx_t_1, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_12)) __PYX_ERR(12, 434, __pyx_L9_except_error)
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_12, NULL);
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(!__pyx_t_13)) __PYX_ERR(12, 434, __pyx_L9_except_error)
+          __Pyx_GOTREF(__pyx_t_13);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_13);
+          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+          if (__pyx_t_9 < 0) __PYX_ERR(12, 434, __pyx_L9_except_error)
+          __pyx_t_14 = (!__pyx_t_9);
+          if (unlikely(__pyx_t_14)) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_2);
+            __Pyx_XGIVEREF(__pyx_t_4);
+            __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_2, __pyx_t_4);
+            __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_4 = 0; 
+            __PYX_ERR(12, 434, __pyx_L9_except_error)
+          }
+          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_XGIVEREF(__pyx_t_8);
+        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_XGIVEREF(__pyx_t_8);
+        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
+        __pyx_L12_try_end:;
+      }
+    }
+    /*finally:*/ {
+      /*normal exit:*/{
+        if (__pyx_t_3) {
+          __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__11, NULL);
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          if (unlikely(!__pyx_t_8)) __PYX_ERR(12, 434, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_8);
+          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+        }
+        goto __pyx_L6;
+      }
+      __pyx_L6:;
+    }
+    goto __pyx_L17;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    goto __pyx_L1_error;
+    __pyx_L17:;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":443
+ *     else:
+ *       raise ValueError('Cannot monitor channel state: %s' % state.closed_reason)
+ *   completed_tag, event = _latent_event(             # <<<<<<<<<<<<<<
+ *       state.c_connectivity_completion_queue, None)
+ *   with state.condition:
+ */
+  __pyx_t_4 = __pyx_f_7_cython_6cygrpc__latent_event(__pyx_v_state->c_connectivity_completion_queue, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 443, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
+    PyObject* sequence = __pyx_t_4;
+    Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
+    if (unlikely(size != 2)) {
+      if (size > 2) __Pyx_RaiseTooManyValuesError(2);
+      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
+      __PYX_ERR(12, 443, __pyx_L1_error)
+    }
+    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+    if (likely(PyTuple_CheckExact(sequence))) {
+      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
+      __pyx_t_1 = PyTuple_GET_ITEM(sequence, 1); 
+    } else {
+      __pyx_t_2 = PyList_GET_ITEM(sequence, 0); 
+      __pyx_t_1 = PyList_GET_ITEM(sequence, 1); 
+    }
+    __Pyx_INCREF(__pyx_t_2);
+    __Pyx_INCREF(__pyx_t_1);
+    #else
+    __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 443, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_1 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 443, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    #endif
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  } else {
+    Py_ssize_t index = -1;
+    __pyx_t_12 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_12)) __PYX_ERR(12, 443, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_12);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_t_15 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_12);
+    index = 0; __pyx_t_2 = __pyx_t_15(__pyx_t_12); if (unlikely(!__pyx_t_2)) goto __pyx_L18_unpacking_failed;
+    __Pyx_GOTREF(__pyx_t_2);
+    index = 1; __pyx_t_1 = __pyx_t_15(__pyx_t_12); if (unlikely(!__pyx_t_1)) goto __pyx_L18_unpacking_failed;
+    __Pyx_GOTREF(__pyx_t_1);
+    if (__Pyx_IternextUnpackEndCheck(__pyx_t_15(__pyx_t_12), 2) < 0) __PYX_ERR(12, 443, __pyx_L1_error)
+    __pyx_t_15 = NULL;
+    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+    goto __pyx_L19_unpacking_done;
+    __pyx_L18_unpacking_failed:;
+    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+    __pyx_t_15 = NULL;
+    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
+    __PYX_ERR(12, 443, __pyx_L1_error)
+    __pyx_L19_unpacking_done:;
+  }
+  __pyx_v_completed_tag = __pyx_t_2;
+  __pyx_t_2 = 0;
+  __pyx_v_event = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":445
+ *   completed_tag, event = _latent_event(
+ *       state.c_connectivity_completion_queue, None)
+ *   with state.condition:             # <<<<<<<<<<<<<<
+ *     state.connectivity_due.remove(completed_tag)
+ *     state.condition.notify_all()
+ */
+  /*with:*/ {
+    __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_v_state->condition, __pyx_n_s_exit); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 445, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_v_state->condition, __pyx_n_s_enter); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 445, __pyx_L20_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = NULL;
+    __pyx_t_5 = 0;
+    #if CYTHON_UNPACK_METHODS
+    if (likely(PyMethod_Check(__pyx_t_1))) {
+      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
+      if (likely(__pyx_t_2)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+        __Pyx_INCREF(__pyx_t_2);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_1, function);
+        __pyx_t_5 = 1;
+      }
+    }
+    #endif
+    {
+      PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
+      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
+      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+      if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 445, __pyx_L20_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    /*try:*/ {
+      {
+        __Pyx_PyThreadState_declare
+        __Pyx_PyThreadState_assign
+        __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_7, &__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_8);
+        __Pyx_XGOTREF(__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_6);
+        /*try:*/ {
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":446
+ *       state.c_connectivity_completion_queue, None)
+ *   with state.condition:
+ *     state.connectivity_due.remove(completed_tag)             # <<<<<<<<<<<<<<
+ *     state.condition.notify_all()
+ *   return event
+ */
+          if (unlikely(__pyx_v_state->connectivity_due == Py_None)) {
+            PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "remove");
+            __PYX_ERR(12, 446, __pyx_L24_error)
+          }
+          __pyx_t_11 = __Pyx_PySet_Remove(__pyx_v_state->connectivity_due, __pyx_v_completed_tag); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(12, 446, __pyx_L24_error)
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":447
+ *   with state.condition:
+ *     state.connectivity_due.remove(completed_tag)
+ *     state.condition.notify_all()             # <<<<<<<<<<<<<<
+ *   return event
+ * 
+ */
+          __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_state->condition, __pyx_n_s_notify_all); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 447, __pyx_L24_error)
+          __Pyx_GOTREF(__pyx_t_1);
+          __pyx_t_2 = NULL;
+          __pyx_t_5 = 0;
+          #if CYTHON_UNPACK_METHODS
+          if (likely(PyMethod_Check(__pyx_t_1))) {
+            __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
+            if (likely(__pyx_t_2)) {
+              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+              __Pyx_INCREF(__pyx_t_2);
+              __Pyx_INCREF(function);
+              __Pyx_DECREF_SET(__pyx_t_1, function);
+              __pyx_t_5 = 1;
+            }
+          }
+          #endif
+          {
+            PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
+            __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
+            __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+            if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 447, __pyx_L24_error)
+            __Pyx_GOTREF(__pyx_t_4);
+            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          }
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":445
+ *   completed_tag, event = _latent_event(
+ *       state.c_connectivity_completion_queue, None)
+ *   with state.condition:             # <<<<<<<<<<<<<<
+ *     state.connectivity_due.remove(completed_tag)
+ *     state.condition.notify_all()
+ */
+        }
+        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        goto __pyx_L29_try_end;
+        __pyx_L24_error:;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+        __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
+        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        /*except:*/ {
+          __Pyx_AddTraceback("_cython.cygrpc._watch_connectivity_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_1, &__pyx_t_2) < 0) __PYX_ERR(12, 445, __pyx_L26_except_error)
+          __Pyx_XGOTREF(__pyx_t_4);
+          __Pyx_XGOTREF(__pyx_t_1);
+          __Pyx_XGOTREF(__pyx_t_2);
+          __pyx_t_12 = PyTuple_Pack(3, __pyx_t_4, __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_12)) __PYX_ERR(12, 445, __pyx_L26_except_error)
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_12, NULL);
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(!__pyx_t_13)) __PYX_ERR(12, 445, __pyx_L26_except_error)
+          __Pyx_GOTREF(__pyx_t_13);
+          __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_13);
+          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+          if (__pyx_t_14 < 0) __PYX_ERR(12, 445, __pyx_L26_except_error)
+          __pyx_t_9 = (!__pyx_t_14);
+          if (unlikely(__pyx_t_9)) {
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_XGIVEREF(__pyx_t_2);
+            __Pyx_ErrRestoreWithState(__pyx_t_4, __pyx_t_1, __pyx_t_2);
+            __pyx_t_4 = 0; __pyx_t_1 = 0; __pyx_t_2 = 0; 
+            __PYX_ERR(12, 445, __pyx_L26_except_error)
+          }
+          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+          goto __pyx_L25_exception_handled;
+        }
+        __pyx_L26_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_8);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_7, __pyx_t_6);
+        goto __pyx_L1_error;
+        __pyx_L25_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_8);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_7, __pyx_t_6);
+        __pyx_L29_try_end:;
+      }
+    }
+    /*finally:*/ {
+      /*normal exit:*/{
+        if (__pyx_t_3) {
+          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__11, NULL);
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          if (unlikely(!__pyx_t_6)) __PYX_ERR(12, 445, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_6);
+          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+        }
+        goto __pyx_L23;
+      }
+      __pyx_L23:;
+    }
+    goto __pyx_L33;
+    __pyx_L20_error:;
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    goto __pyx_L1_error;
+    __pyx_L33:;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":448
+ *     state.connectivity_due.remove(completed_tag)
+ *     state.condition.notify_all()
+ *   return event             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_event);
+  __pyx_r = __pyx_v_event;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":430
+ * 
+ * 
+ * cdef object _watch_connectivity_state(             # <<<<<<<<<<<<<<
+ *     _ChannelState state, grpc_connectivity_state last_observed_state,
+ *     object deadline):
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_12);
+  __Pyx_AddTraceback("_cython.cygrpc._watch_connectivity_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_tag);
+  __Pyx_XDECREF(__pyx_v_completed_tag);
+  __Pyx_XDECREF(__pyx_v_event);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":451
+ * 
+ * 
+ * cdef _close(Channel channel, grpc_status_code code, object details,             # <<<<<<<<<<<<<<
+ *     drain_calls):
+ *   cdef _ChannelState state = channel._state
+ */
+
+static PyObject *__pyx_f_7_cython_6cygrpc__close(struct __pyx_obj_7_cython_6cygrpc_Channel *__pyx_v_channel, grpc_status_code __pyx_v_code, PyObject *__pyx_v_details, PyObject *__pyx_v_drain_calls) {
+  struct __pyx_obj_7_cython_6cygrpc__ChannelState *__pyx_v_state = 0;
+  struct __pyx_obj_7_cython_6cygrpc__CallState *__pyx_v_call_state = 0;
+  PyObject *__pyx_v_encoded_details = NULL;
+  PyObject *__pyx_v_event = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  unsigned int __pyx_t_5;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
+  int __pyx_t_9;
+  Py_ssize_t __pyx_t_10;
+  Py_ssize_t __pyx_t_11;
+  int __pyx_t_12;
+  int __pyx_t_13;
+  char const *__pyx_t_14;
+  int __pyx_t_15;
+  PyObject *__pyx_t_16 = NULL;
+  PyObject *__pyx_t_17 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_close", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":453
+ * cdef _close(Channel channel, grpc_status_code code, object details,
+ *     drain_calls):
+ *   cdef _ChannelState state = channel._state             # <<<<<<<<<<<<<<
+ *   cdef _CallState call_state
+ *   encoded_details = _encode(details)
+ */
+  __pyx_t_1 = ((PyObject *)__pyx_v_channel->_state);
+  __Pyx_INCREF(__pyx_t_1);
+  __pyx_v_state = ((struct __pyx_obj_7_cython_6cygrpc__ChannelState *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":455
+ *   cdef _ChannelState state = channel._state
+ *   cdef _CallState call_state
+ *   encoded_details = _encode(details)             # <<<<<<<<<<<<<<
+ *   with state.condition:
+ *     if state.open:
+ */
+  __pyx_t_1 = __pyx_f_7_cython_6cygrpc__encode(__pyx_v_details); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 455, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_encoded_details = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":456
+ *   cdef _CallState call_state
+ *   encoded_details = _encode(details)
+ *   with state.condition:             # <<<<<<<<<<<<<<
+ *     if state.open:
+ *       state.open = False
+ */
+  /*with:*/ {
+    __pyx_t_2 = __Pyx_PyObject_LookupSpecial(__pyx_v_state->condition, __pyx_n_s_exit); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 456, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_v_state->condition, __pyx_n_s_enter); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 456, __pyx_L3_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(12, 456, __pyx_L3_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__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_6, &__pyx_t_7, &__pyx_t_8);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_8);
+        /*try:*/ {
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":457
+ *   encoded_details = _encode(details)
+ *   with state.condition:
+ *     if state.open:             # <<<<<<<<<<<<<<
+ *       state.open = False
+ *       state.closed_reason = details
+ */
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_state->open); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(12, 457, __pyx_L7_error)
+          if (__pyx_t_9) {
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":458
+ *   with state.condition:
+ *     if state.open:
+ *       state.open = False             # <<<<<<<<<<<<<<
+ *       state.closed_reason = details
+ *       for call_state in set(state.integrated_call_states.values()):
+ */
+            __Pyx_INCREF(Py_False);
+            __Pyx_GIVEREF(Py_False);
+            __Pyx_GOTREF(__pyx_v_state->open);
+            __Pyx_DECREF(__pyx_v_state->open);
+            __pyx_v_state->open = Py_False;
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":459
+ *     if state.open:
+ *       state.open = False
+ *       state.closed_reason = details             # <<<<<<<<<<<<<<
+ *       for call_state in set(state.integrated_call_states.values()):
+ *         grpc_call_cancel_with_status(
+ */
+            __Pyx_INCREF(__pyx_v_details);
+            __Pyx_GIVEREF(__pyx_v_details);
+            __Pyx_GOTREF(__pyx_v_state->closed_reason);
+            __Pyx_DECREF(__pyx_v_state->closed_reason);
+            __pyx_v_state->closed_reason = __pyx_v_details;
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":460
+ *       state.open = False
+ *       state.closed_reason = details
+ *       for call_state in set(state.integrated_call_states.values()):             # <<<<<<<<<<<<<<
+ *         grpc_call_cancel_with_status(
+ *             call_state.c_call, code, encoded_details, NULL)
+ */
+            __pyx_t_10 = 0;
+            if (unlikely(__pyx_v_state->integrated_call_states == Py_None)) {
+              PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "values");
+              __PYX_ERR(12, 460, __pyx_L7_error)
+            }
+            __pyx_t_3 = __Pyx_PyDict_Values(__pyx_v_state->integrated_call_states); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 460, __pyx_L7_error)
+            __Pyx_GOTREF(__pyx_t_3);
+            __pyx_t_4 = PySet_New(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 460, __pyx_L7_error)
+            __Pyx_GOTREF(__pyx_t_4);
+            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+            __pyx_t_3 = __Pyx_set_iterator(__pyx_t_4, 1, (&__pyx_t_11), (&__pyx_t_12)); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 460, __pyx_L7_error)
+            __Pyx_GOTREF(__pyx_t_3);
+            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+            __Pyx_XDECREF(__pyx_t_1);
+            __pyx_t_1 = __pyx_t_3;
+            __pyx_t_3 = 0;
+            while (1) {
+              __pyx_t_13 = __Pyx_set_iter_next(__pyx_t_1, __pyx_t_11, &__pyx_t_10, &__pyx_t_3, __pyx_t_12);
+              if (unlikely(__pyx_t_13 == 0)) break;
+              if (unlikely(__pyx_t_13 == -1)) __PYX_ERR(12, 460, __pyx_L7_error)
+              __Pyx_GOTREF(__pyx_t_3);
+              if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_7_cython_6cygrpc__CallState))))) __PYX_ERR(12, 460, __pyx_L7_error)
+              __Pyx_XDECREF_SET(__pyx_v_call_state, ((struct __pyx_obj_7_cython_6cygrpc__CallState *)__pyx_t_3));
+              __pyx_t_3 = 0;
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":462
+ *       for call_state in set(state.integrated_call_states.values()):
+ *         grpc_call_cancel_with_status(
+ *             call_state.c_call, code, encoded_details, NULL)             # <<<<<<<<<<<<<<
+ *       for call_state in state.segregated_call_states:
+ *         grpc_call_cancel_with_status(
+ */
+              if (unlikely(__pyx_v_encoded_details == Py_None)) {
+                PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
+                __PYX_ERR(12, 462, __pyx_L7_error)
+              }
+              __pyx_t_14 = __Pyx_PyBytes_AsString(__pyx_v_encoded_details); if (unlikely((!__pyx_t_14) && PyErr_Occurred())) __PYX_ERR(12, 462, __pyx_L7_error)
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":461
+ *       state.closed_reason = details
+ *       for call_state in set(state.integrated_call_states.values()):
+ *         grpc_call_cancel_with_status(             # <<<<<<<<<<<<<<
+ *             call_state.c_call, code, encoded_details, NULL)
+ *       for call_state in state.segregated_call_states:
+ */
+              (void)(grpc_call_cancel_with_status(__pyx_v_call_state->c_call, __pyx_v_code, __pyx_t_14, NULL));
+            }
+            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":463
+ *         grpc_call_cancel_with_status(
+ *             call_state.c_call, code, encoded_details, NULL)
+ *       for call_state in state.segregated_call_states:             # <<<<<<<<<<<<<<
+ *         grpc_call_cancel_with_status(
+ *             call_state.c_call, code, encoded_details, NULL)
+ */
+            __pyx_t_11 = 0;
+            __pyx_t_3 = __Pyx_set_iterator(__pyx_v_state->segregated_call_states, 1, (&__pyx_t_10), (&__pyx_t_12)); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 463, __pyx_L7_error)
+            __Pyx_GOTREF(__pyx_t_3);
+            __Pyx_XDECREF(__pyx_t_1);
+            __pyx_t_1 = __pyx_t_3;
+            __pyx_t_3 = 0;
+            while (1) {
+              __pyx_t_13 = __Pyx_set_iter_next(__pyx_t_1, __pyx_t_10, &__pyx_t_11, &__pyx_t_3, __pyx_t_12);
+              if (unlikely(__pyx_t_13 == 0)) break;
+              if (unlikely(__pyx_t_13 == -1)) __PYX_ERR(12, 463, __pyx_L7_error)
+              __Pyx_GOTREF(__pyx_t_3);
+              if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_7_cython_6cygrpc__CallState))))) __PYX_ERR(12, 463, __pyx_L7_error)
+              __Pyx_XDECREF_SET(__pyx_v_call_state, ((struct __pyx_obj_7_cython_6cygrpc__CallState *)__pyx_t_3));
+              __pyx_t_3 = 0;
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":465
+ *       for call_state in state.segregated_call_states:
+ *         grpc_call_cancel_with_status(
+ *             call_state.c_call, code, encoded_details, NULL)             # <<<<<<<<<<<<<<
+ *       # TODO(https://github.com/grpc/grpc/issues/3064): Cancel connectivity
+ *       # watching.
+ */
+              if (unlikely(__pyx_v_encoded_details == Py_None)) {
+                PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
+                __PYX_ERR(12, 465, __pyx_L7_error)
+              }
+              __pyx_t_14 = __Pyx_PyBytes_AsString(__pyx_v_encoded_details); if (unlikely((!__pyx_t_14) && PyErr_Occurred())) __PYX_ERR(12, 465, __pyx_L7_error)
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":464
+ *             call_state.c_call, code, encoded_details, NULL)
+ *       for call_state in state.segregated_call_states:
+ *         grpc_call_cancel_with_status(             # <<<<<<<<<<<<<<
+ *             call_state.c_call, code, encoded_details, NULL)
+ *       # TODO(https://github.com/grpc/grpc/issues/3064): Cancel connectivity
+ */
+              (void)(grpc_call_cancel_with_status(__pyx_v_call_state->c_call, __pyx_v_code, __pyx_t_14, NULL));
+            }
+            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":469
+ *       # watching.
+ * 
+ *       if drain_calls:             # <<<<<<<<<<<<<<
+ *         while not _calls_drained(state):
+ *           event = channel.next_call_event()
+ */
+            __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_drain_calls); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(12, 469, __pyx_L7_error)
+            if (__pyx_t_9) {
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":470
+ * 
+ *       if drain_calls:
+ *         while not _calls_drained(state):             # <<<<<<<<<<<<<<
+ *           event = channel.next_call_event()
+ *           if event.completion_type == CompletionType.queue_timeout:
+ */
+              while (1) {
+                __pyx_t_1 = __pyx_f_7_cython_6cygrpc__calls_drained(__pyx_v_state); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 470, __pyx_L7_error)
+                __Pyx_GOTREF(__pyx_t_1);
+                __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(12, 470, __pyx_L7_error)
+                __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+                __pyx_t_15 = (!__pyx_t_9);
+                if (!__pyx_t_15) break;
+
+                /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":471
+ *       if drain_calls:
+ *         while not _calls_drained(state):
+ *           event = channel.next_call_event()             # <<<<<<<<<<<<<<
+ *           if event.completion_type == CompletionType.queue_timeout:
+ *               continue
+ */
+                __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_channel), __pyx_n_s_next_call_event); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 471, __pyx_L7_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(12, 471, __pyx_L7_error)
+                  __Pyx_GOTREF(__pyx_t_1);
+                  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+                }
+                __Pyx_XDECREF_SET(__pyx_v_event, __pyx_t_1);
+                __pyx_t_1 = 0;
+
+                /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":472
+ *         while not _calls_drained(state):
+ *           event = channel.next_call_event()
+ *           if event.completion_type == CompletionType.queue_timeout:             # <<<<<<<<<<<<<<
+ *               continue
+ *           event.tag(event)
+ */
+                __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_event, __pyx_n_s_completion_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 472, __pyx_L7_error)
+                __Pyx_GOTREF(__pyx_t_1);
+                __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_CompletionType); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 472, __pyx_L7_error)
+                __Pyx_GOTREF(__pyx_t_3);
+                __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_queue_timeout); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 472, __pyx_L7_error)
+                __Pyx_GOTREF(__pyx_t_4);
+                __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+                __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 472, __pyx_L7_error)
+                __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+                __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+                __pyx_t_15 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_15 < 0))) __PYX_ERR(12, 472, __pyx_L7_error)
+                __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+                if (__pyx_t_15) {
+
+                  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":473
+ *           event = channel.next_call_event()
+ *           if event.completion_type == CompletionType.queue_timeout:
+ *               continue             # <<<<<<<<<<<<<<
+ *           event.tag(event)
+ *       else:
+ */
+                  goto __pyx_L19_continue;
+
+                  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":472
+ *         while not _calls_drained(state):
+ *           event = channel.next_call_event()
+ *           if event.completion_type == CompletionType.queue_timeout:             # <<<<<<<<<<<<<<
+ *               continue
+ *           event.tag(event)
+ */
+                }
+
+                /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":474
+ *           if event.completion_type == CompletionType.queue_timeout:
+ *               continue
+ *           event.tag(event)             # <<<<<<<<<<<<<<
+ *       else:
+ *         while state.integrated_call_states:
+ */
+                __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_event, __pyx_n_s_tag); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 474, __pyx_L7_error)
+                __Pyx_GOTREF(__pyx_t_4);
+                __pyx_t_1 = NULL;
+                __pyx_t_5 = 0;
+                #if CYTHON_UNPACK_METHODS
+                if (likely(PyMethod_Check(__pyx_t_4))) {
+                  __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4);
+                  if (likely(__pyx_t_1)) {
+                    PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+                    __Pyx_INCREF(__pyx_t_1);
+                    __Pyx_INCREF(function);
+                    __Pyx_DECREF_SET(__pyx_t_4, function);
+                    __pyx_t_5 = 1;
+                  }
+                }
+                #endif
+                {
+                  PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_v_event};
+                  __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
+                  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+                  if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 474, __pyx_L7_error)
+                  __Pyx_GOTREF(__pyx_t_3);
+                  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+                }
+                __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+                __pyx_L19_continue:;
+              }
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":469
+ *       # watching.
+ * 
+ *       if drain_calls:             # <<<<<<<<<<<<<<
+ *         while not _calls_drained(state):
+ *           event = channel.next_call_event()
+ */
+              goto __pyx_L18;
+            }
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":476
+ *           event.tag(event)
+ *       else:
+ *         while state.integrated_call_states:             # <<<<<<<<<<<<<<
+ *           state.condition.wait()
+ *         while state.connectivity_due:
+ */
+            /*else*/ {
+              while (1) {
+                __pyx_t_15 = __Pyx_PyObject_IsTrue(__pyx_v_state->integrated_call_states); if (unlikely((__pyx_t_15 < 0))) __PYX_ERR(12, 476, __pyx_L7_error)
+                if (!__pyx_t_15) break;
+
+                /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":477
+ *       else:
+ *         while state.integrated_call_states:
+ *           state.condition.wait()             # <<<<<<<<<<<<<<
+ *         while state.connectivity_due:
+ *           state.condition.wait()
+ */
+                __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_state->condition, __pyx_n_s_wait); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 477, __pyx_L7_error)
+                __Pyx_GOTREF(__pyx_t_4);
+                __pyx_t_1 = NULL;
+                __pyx_t_5 = 0;
+                #if CYTHON_UNPACK_METHODS
+                if (likely(PyMethod_Check(__pyx_t_4))) {
+                  __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4);
+                  if (likely(__pyx_t_1)) {
+                    PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+                    __Pyx_INCREF(__pyx_t_1);
+                    __Pyx_INCREF(function);
+                    __Pyx_DECREF_SET(__pyx_t_4, function);
+                    __pyx_t_5 = 1;
+                  }
+                }
+                #endif
+                {
+                  PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL};
+                  __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
+                  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+                  if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 477, __pyx_L7_error)
+                  __Pyx_GOTREF(__pyx_t_3);
+                  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+                }
+                __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+              }
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":478
+ *         while state.integrated_call_states:
+ *           state.condition.wait()
+ *         while state.connectivity_due:             # <<<<<<<<<<<<<<
+ *           state.condition.wait()
+ * 
+ */
+              while (1) {
+                __pyx_t_15 = (__pyx_v_state->connectivity_due != Py_None)&&(PySet_GET_SIZE(__pyx_v_state->connectivity_due) != 0);
+                if (!__pyx_t_15) break;
+
+                /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":479
+ *           state.condition.wait()
+ *         while state.connectivity_due:
+ *           state.condition.wait()             # <<<<<<<<<<<<<<
+ * 
+ *       _destroy_c_completion_queue(state.c_call_completion_queue)
+ */
+                __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_state->condition, __pyx_n_s_wait); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 479, __pyx_L7_error)
+                __Pyx_GOTREF(__pyx_t_4);
+                __pyx_t_1 = NULL;
+                __pyx_t_5 = 0;
+                #if CYTHON_UNPACK_METHODS
+                if (likely(PyMethod_Check(__pyx_t_4))) {
+                  __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4);
+                  if (likely(__pyx_t_1)) {
+                    PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+                    __Pyx_INCREF(__pyx_t_1);
+                    __Pyx_INCREF(function);
+                    __Pyx_DECREF_SET(__pyx_t_4, function);
+                    __pyx_t_5 = 1;
+                  }
+                }
+                #endif
+                {
+                  PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL};
+                  __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
+                  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+                  if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 479, __pyx_L7_error)
+                  __Pyx_GOTREF(__pyx_t_3);
+                  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+                }
+                __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+              }
+            }
+            __pyx_L18:;
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":481
+ *           state.condition.wait()
+ * 
+ *       _destroy_c_completion_queue(state.c_call_completion_queue)             # <<<<<<<<<<<<<<
+ *       _destroy_c_completion_queue(state.c_connectivity_completion_queue)
+ *       grpc_channel_destroy(state.c_channel)
+ */
+            __pyx_t_3 = __pyx_f_7_cython_6cygrpc__destroy_c_completion_queue(__pyx_v_state->c_call_completion_queue); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 481, __pyx_L7_error)
+            __Pyx_GOTREF(__pyx_t_3);
+            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":482
+ * 
+ *       _destroy_c_completion_queue(state.c_call_completion_queue)
+ *       _destroy_c_completion_queue(state.c_connectivity_completion_queue)             # <<<<<<<<<<<<<<
+ *       grpc_channel_destroy(state.c_channel)
+ *       state.c_channel = NULL
+ */
+            __pyx_t_3 = __pyx_f_7_cython_6cygrpc__destroy_c_completion_queue(__pyx_v_state->c_connectivity_completion_queue); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 482, __pyx_L7_error)
+            __Pyx_GOTREF(__pyx_t_3);
+            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":483
+ *       _destroy_c_completion_queue(state.c_call_completion_queue)
+ *       _destroy_c_completion_queue(state.c_connectivity_completion_queue)
+ *       grpc_channel_destroy(state.c_channel)             # <<<<<<<<<<<<<<
+ *       state.c_channel = NULL
+ *       grpc_shutdown()
+ */
+            grpc_channel_destroy(__pyx_v_state->c_channel);
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":484
+ *       _destroy_c_completion_queue(state.c_connectivity_completion_queue)
+ *       grpc_channel_destroy(state.c_channel)
+ *       state.c_channel = NULL             # <<<<<<<<<<<<<<
+ *       grpc_shutdown()
+ *       state.condition.notify_all()
+ */
+            __pyx_v_state->c_channel = NULL;
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":485
+ *       grpc_channel_destroy(state.c_channel)
+ *       state.c_channel = NULL
+ *       grpc_shutdown()             # <<<<<<<<<<<<<<
+ *       state.condition.notify_all()
+ *     else:
+ */
+            grpc_shutdown();
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":486
+ *       state.c_channel = NULL
+ *       grpc_shutdown()
+ *       state.condition.notify_all()             # <<<<<<<<<<<<<<
+ *     else:
+ *       # Another call to close already completed in the past or is currently
+ */
+            __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_state->condition, __pyx_n_s_notify_all); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 486, __pyx_L7_error)
+            __Pyx_GOTREF(__pyx_t_4);
+            __pyx_t_1 = NULL;
+            __pyx_t_5 = 0;
+            #if CYTHON_UNPACK_METHODS
+            if (likely(PyMethod_Check(__pyx_t_4))) {
+              __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4);
+              if (likely(__pyx_t_1)) {
+                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+                __Pyx_INCREF(__pyx_t_1);
+                __Pyx_INCREF(function);
+                __Pyx_DECREF_SET(__pyx_t_4, function);
+                __pyx_t_5 = 1;
+              }
+            }
+            #endif
+            {
+              PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL};
+              __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
+              __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+              if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 486, __pyx_L7_error)
+              __Pyx_GOTREF(__pyx_t_3);
+              __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+            }
+            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":457
+ *   encoded_details = _encode(details)
+ *   with state.condition:
+ *     if state.open:             # <<<<<<<<<<<<<<
+ *       state.open = False
+ *       state.closed_reason = details
+ */
+            goto __pyx_L13;
+          }
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":490
+ *       # Another call to close already completed in the past or is currently
+ *       # being executed in another thread.
+ *       while state.c_channel != NULL:             # <<<<<<<<<<<<<<
+ *         state.condition.wait()
+ * 
+ */
+          /*else*/ {
+            while (1) {
+              __pyx_t_15 = (__pyx_v_state->c_channel != NULL);
+              if (!__pyx_t_15) break;
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":491
+ *       # being executed in another thread.
+ *       while state.c_channel != NULL:
+ *         state.condition.wait()             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+              __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_state->condition, __pyx_n_s_wait); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 491, __pyx_L7_error)
+              __Pyx_GOTREF(__pyx_t_4);
+              __pyx_t_1 = NULL;
+              __pyx_t_5 = 0;
+              #if CYTHON_UNPACK_METHODS
+              if (likely(PyMethod_Check(__pyx_t_4))) {
+                __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4);
+                if (likely(__pyx_t_1)) {
+                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+                  __Pyx_INCREF(__pyx_t_1);
+                  __Pyx_INCREF(function);
+                  __Pyx_DECREF_SET(__pyx_t_4, function);
+                  __pyx_t_5 = 1;
+                }
+              }
+              #endif
+              {
+                PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL};
+                __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
+                __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+                if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 491, __pyx_L7_error)
+                __Pyx_GOTREF(__pyx_t_3);
+                __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+              }
+              __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+            }
+          }
+          __pyx_L13:;
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":456
+ *   cdef _CallState call_state
+ *   encoded_details = _encode(details)
+ *   with state.condition:             # <<<<<<<<<<<<<<
+ *     if state.open:
+ *       state.open = False
+ */
+        }
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+        goto __pyx_L12_try_end;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        /*except:*/ {
+          __Pyx_AddTraceback("_cython.cygrpc._close", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_4, &__pyx_t_1) < 0) __PYX_ERR(12, 456, __pyx_L9_except_error)
+          __Pyx_XGOTREF(__pyx_t_3);
+          __Pyx_XGOTREF(__pyx_t_4);
+          __Pyx_XGOTREF(__pyx_t_1);
+          __pyx_t_16 = PyTuple_Pack(3, __pyx_t_3, __pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_16)) __PYX_ERR(12, 456, __pyx_L9_except_error)
+          __Pyx_GOTREF(__pyx_t_16);
+          __pyx_t_17 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_16, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
+          if (unlikely(!__pyx_t_17)) __PYX_ERR(12, 456, __pyx_L9_except_error)
+          __Pyx_GOTREF(__pyx_t_17);
+          __pyx_t_15 = __Pyx_PyObject_IsTrue(__pyx_t_17);
+          __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
+          if (__pyx_t_15 < 0) __PYX_ERR(12, 456, __pyx_L9_except_error)
+          __pyx_t_9 = (!__pyx_t_15);
+          if (unlikely(__pyx_t_9)) {
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_XGIVEREF(__pyx_t_1);
+            __Pyx_ErrRestoreWithState(__pyx_t_3, __pyx_t_4, __pyx_t_1);
+            __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_1 = 0; 
+            __PYX_ERR(12, 456, __pyx_L9_except_error)
+          }
+          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_XGIVEREF(__pyx_t_8);
+        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_XGIVEREF(__pyx_t_8);
+        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
+        __pyx_L12_try_end:;
+      }
+    }
+    /*finally:*/ {
+      /*normal exit:*/{
+        if (__pyx_t_2) {
+          __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_8)) __PYX_ERR(12, 456, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_8);
+          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+        }
+        goto __pyx_L6;
+      }
+      __pyx_L6:;
+    }
+    goto __pyx_L31;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L31:;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":451
+ * 
+ * 
+ * cdef _close(Channel channel, grpc_status_code code, object details,             # <<<<<<<<<<<<<<
+ *     drain_calls):
+ *   cdef _ChannelState state = channel._state
+ */
+
+  /* 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_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_16);
+  __Pyx_AddTraceback("_cython.cygrpc._close", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_state);
+  __Pyx_XDECREF((PyObject *)__pyx_v_call_state);
+  __Pyx_XDECREF(__pyx_v_encoded_details);
+  __Pyx_XDECREF(__pyx_v_event);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":494
+ * 
+ * 
+ * cdef _calls_drained(_ChannelState state):             # <<<<<<<<<<<<<<
+ *   return not (state.integrated_call_states or state.segregated_call_states or
+ *               state.connectivity_due)
+ */
+
+static PyObject *__pyx_f_7_cython_6cygrpc__calls_drained(struct __pyx_obj_7_cython_6cygrpc__ChannelState *__pyx_v_state) {
+  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("_calls_drained", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":495
+ * 
+ * cdef _calls_drained(_ChannelState state):
+ *   return not (state.integrated_call_states or state.segregated_call_states or             # <<<<<<<<<<<<<<
+ *               state.connectivity_due)
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_state->integrated_call_states); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(12, 495, __pyx_L1_error)
+  if (!__pyx_t_2) {
+  } else {
+    __pyx_t_1 = __pyx_t_2;
+    goto __pyx_L3_bool_binop_done;
+  }
+  __pyx_t_2 = (__pyx_v_state->segregated_call_states != Py_None)&&(PySet_GET_SIZE(__pyx_v_state->segregated_call_states) != 0);
+  if (!__pyx_t_2) {
+  } else {
+    __pyx_t_1 = __pyx_t_2;
+    goto __pyx_L3_bool_binop_done;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":496
+ * cdef _calls_drained(_ChannelState state):
+ *   return not (state.integrated_call_states or state.segregated_call_states or
+ *               state.connectivity_due)             # <<<<<<<<<<<<<<
+ * 
+ * cdef class Channel:
+ */
+  __pyx_t_2 = (__pyx_v_state->connectivity_due != Py_None)&&(PySet_GET_SIZE(__pyx_v_state->connectivity_due) != 0);
+  __pyx_t_1 = __pyx_t_2;
+  __pyx_L3_bool_binop_done:;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":495
+ * 
+ * cdef _calls_drained(_ChannelState state):
+ *   return not (state.integrated_call_states or state.segregated_call_states or             # <<<<<<<<<<<<<<
+ *               state.connectivity_due)
+ * 
+ */
+  __pyx_t_3 = __Pyx_PyBool_FromLong((!__pyx_t_1)); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 495, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_r = __pyx_t_3;
+  __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":494
+ * 
+ * 
+ * cdef _calls_drained(_ChannelState state):             # <<<<<<<<<<<<<<
+ *   return not (state.integrated_call_states or state.segregated_call_states or
+ *               state.connectivity_due)
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("_cython.cygrpc._calls_drained", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":500
+ * cdef class Channel:
+ * 
+ *   def __cinit__(             # <<<<<<<<<<<<<<
+ *       self, bytes target, object arguments,
+ *       ChannelCredentials channel_credentials):
+ */
+
+/* Python wrapper */
+static int __pyx_pw_7_cython_6cygrpc_7Channel_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_7_cython_6cygrpc_7Channel_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_target = 0;
+  PyObject *__pyx_v_arguments = 0;
+  struct __pyx_obj_7_cython_6cygrpc_ChannelCredentials *__pyx_v_channel_credentials = 0;
+  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+  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;
+  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);
+  {
+    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_target,&__pyx_n_s_arguments,&__pyx_n_s_channel_credentials,0};
+    if (__pyx_kwds) {
+      Py_ssize_t kw_args;
+      switch (__pyx_nargs) {
+        case  3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
+      switch (__pyx_nargs) {
+        case  0:
+        if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_target)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 500, __pyx_L3_error)
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_arguments)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 500, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 1); __PYX_ERR(12, 500, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_channel_credentials)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[2]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 500, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 2); __PYX_ERR(12, 500, __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, "__cinit__") < 0)) __PYX_ERR(12, 500, __pyx_L3_error)
+      }
+    } else if (unlikely(__pyx_nargs != 3)) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+      values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
+      values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
+    }
+    __pyx_v_target = ((PyObject*)values[0]);
+    __pyx_v_arguments = values[1];
+    __pyx_v_channel_credentials = ((struct __pyx_obj_7_cython_6cygrpc_ChannelCredentials *)values[2]);
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, __pyx_nargs); __PYX_ERR(12, 500, __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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_AddTraceback("_cython.cygrpc.Channel.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_target), (&PyBytes_Type), 1, "target", 1))) __PYX_ERR(12, 501, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_channel_credentials), __pyx_ptype_7_cython_6cygrpc_ChannelCredentials, 1, "channel_credentials", 0))) __PYX_ERR(12, 502, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_7Channel___cinit__(((struct __pyx_obj_7_cython_6cygrpc_Channel *)__pyx_v_self), __pyx_v_target, __pyx_v_arguments, __pyx_v_channel_credentials);
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = -1;
+  __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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_7_cython_6cygrpc_7Channel___cinit__(struct __pyx_obj_7_cython_6cygrpc_Channel *__pyx_v_self, PyObject *__pyx_v_target, PyObject *__pyx_v_arguments, struct __pyx_obj_7_cython_6cygrpc_ChannelCredentials *__pyx_v_channel_credentials) {
+  struct __pyx_obj_7_cython_6cygrpc__ChannelArgs *__pyx_v_channel_args = 0;
+  grpc_channel_credentials *__pyx_v_c_channel_credentials;
+  int __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;
+  grpc_channel_credentials *__pyx_t_6;
+  grpc_channel_credentials *__pyx_t_7;
+  char *__pyx_t_8;
+  grpc_channel_args *__pyx_t_9;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__cinit__", 0);
+  __Pyx_INCREF(__pyx_v_arguments);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":503
+ *       self, bytes target, object arguments,
+ *       ChannelCredentials channel_credentials):
+ *     arguments = () if arguments is None else tuple(arguments)             # <<<<<<<<<<<<<<
+ *     fork_handlers_and_grpc_init()
+ *     self._state = _ChannelState(target)
+ */
+  __pyx_t_2 = (__pyx_v_arguments == Py_None);
+  if (__pyx_t_2) {
+    __Pyx_INCREF(__pyx_empty_tuple);
+    __pyx_t_1 = __pyx_empty_tuple;
+  } else {
+    __pyx_t_3 = __Pyx_PySequence_Tuple(__pyx_v_arguments); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 503, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_1 = __pyx_t_3;
+    __pyx_t_3 = 0;
+  }
+  __Pyx_DECREF_SET(__pyx_v_arguments, __pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":504
+ *       ChannelCredentials channel_credentials):
+ *     arguments = () if arguments is None else tuple(arguments)
+ *     fork_handlers_and_grpc_init()             # <<<<<<<<<<<<<<
+ *     self._state = _ChannelState(target)
+ *     self._state.c_call_completion_queue = (
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_fork_handlers_and_grpc_init); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 504, __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, 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(12, 504, __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/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":505
+ *     arguments = () if arguments is None else tuple(arguments)
+ *     fork_handlers_and_grpc_init()
+ *     self._state = _ChannelState(target)             # <<<<<<<<<<<<<<
+ *     self._state.c_call_completion_queue = (
+ *         grpc_completion_queue_create_for_next(NULL))
+ */
+  __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_7_cython_6cygrpc__ChannelState), __pyx_v_target); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 505, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF((PyObject *)__pyx_v_self->_state);
+  __Pyx_DECREF((PyObject *)__pyx_v_self->_state);
+  __pyx_v_self->_state = ((struct __pyx_obj_7_cython_6cygrpc__ChannelState *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":506
+ *     fork_handlers_and_grpc_init()
+ *     self._state = _ChannelState(target)
+ *     self._state.c_call_completion_queue = (             # <<<<<<<<<<<<<<
+ *         grpc_completion_queue_create_for_next(NULL))
+ *     self._state.c_connectivity_completion_queue = (
+ */
+  __pyx_v_self->_state->c_call_completion_queue = grpc_completion_queue_create_for_next(NULL);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":508
+ *     self._state.c_call_completion_queue = (
+ *         grpc_completion_queue_create_for_next(NULL))
+ *     self._state.c_connectivity_completion_queue = (             # <<<<<<<<<<<<<<
+ *         grpc_completion_queue_create_for_next(NULL))
+ *     self._arguments = arguments
+ */
+  __pyx_v_self->_state->c_connectivity_completion_queue = grpc_completion_queue_create_for_next(NULL);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":510
+ *     self._state.c_connectivity_completion_queue = (
+ *         grpc_completion_queue_create_for_next(NULL))
+ *     self._arguments = arguments             # <<<<<<<<<<<<<<
+ *     cdef _ChannelArgs channel_args = _ChannelArgs(arguments)
+ *     c_channel_credentials = (
+ */
+  if (!(likely(PyTuple_CheckExact(__pyx_v_arguments))||((__pyx_v_arguments) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v_arguments))) __PYX_ERR(12, 510, __pyx_L1_error)
+  __pyx_t_1 = __pyx_v_arguments;
+  __Pyx_INCREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->_arguments);
+  __Pyx_DECREF(__pyx_v_self->_arguments);
+  __pyx_v_self->_arguments = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":511
+ *         grpc_completion_queue_create_for_next(NULL))
+ *     self._arguments = arguments
+ *     cdef _ChannelArgs channel_args = _ChannelArgs(arguments)             # <<<<<<<<<<<<<<
+ *     c_channel_credentials = (
+ *         channel_credentials.c() if channel_credentials is not None
+ */
+  __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_7_cython_6cygrpc__ChannelArgs), __pyx_v_arguments); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 511, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_channel_args = ((struct __pyx_obj_7_cython_6cygrpc__ChannelArgs *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":513
+ *     cdef _ChannelArgs channel_args = _ChannelArgs(arguments)
+ *     c_channel_credentials = (
+ *         channel_credentials.c() if channel_credentials is not None             # <<<<<<<<<<<<<<
+ *         else grpc_insecure_credentials_create())
+ *     self._state.c_channel = grpc_channel_create(
+ */
+  __pyx_t_2 = (((PyObject *)__pyx_v_channel_credentials) != Py_None);
+  if (__pyx_t_2) {
+    __pyx_t_7 = ((struct __pyx_vtabstruct_7_cython_6cygrpc_ChannelCredentials *)__pyx_v_channel_credentials->__pyx_vtab)->c(__pyx_v_channel_credentials); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 513, __pyx_L1_error)
+    __pyx_t_6 = __pyx_t_7;
+  } else {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":514
+ *     c_channel_credentials = (
+ *         channel_credentials.c() if channel_credentials is not None
+ *         else grpc_insecure_credentials_create())             # <<<<<<<<<<<<<<
+ *     self._state.c_channel = grpc_channel_create(
+ *         <char *>target, c_channel_credentials, channel_args.c_args())
+ */
+    __pyx_t_6 = grpc_insecure_credentials_create();
+  }
+  __pyx_v_c_channel_credentials = __pyx_t_6;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":516
+ *         else grpc_insecure_credentials_create())
+ *     self._state.c_channel = grpc_channel_create(
+ *         <char *>target, c_channel_credentials, channel_args.c_args())             # <<<<<<<<<<<<<<
+ *     self._registered_call_handles = {}
+ *     grpc_channel_credentials_release(c_channel_credentials)
+ */
+  if (unlikely(__pyx_v_target == Py_None)) {
+    PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
+    __PYX_ERR(12, 516, __pyx_L1_error)
+  }
+  __pyx_t_8 = __Pyx_PyBytes_AsWritableString(__pyx_v_target); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(12, 516, __pyx_L1_error)
+  __pyx_t_9 = ((struct __pyx_vtabstruct_7_cython_6cygrpc__ChannelArgs *)__pyx_v_channel_args->__pyx_vtab)->c_args(__pyx_v_channel_args); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 516, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":515
+ *         channel_credentials.c() if channel_credentials is not None
+ *         else grpc_insecure_credentials_create())
+ *     self._state.c_channel = grpc_channel_create(             # <<<<<<<<<<<<<<
+ *         <char *>target, c_channel_credentials, channel_args.c_args())
+ *     self._registered_call_handles = {}
+ */
+  __pyx_v_self->_state->c_channel = grpc_channel_create(((char *)__pyx_t_8), __pyx_v_c_channel_credentials, __pyx_t_9);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":517
+ *     self._state.c_channel = grpc_channel_create(
+ *         <char *>target, c_channel_credentials, channel_args.c_args())
+ *     self._registered_call_handles = {}             # <<<<<<<<<<<<<<
+ *     grpc_channel_credentials_release(c_channel_credentials)
+ * 
+ */
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 517, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->_registered_call_handles);
+  __Pyx_DECREF(__pyx_v_self->_registered_call_handles);
+  __pyx_v_self->_registered_call_handles = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":518
+ *         <char *>target, c_channel_credentials, channel_args.c_args())
+ *     self._registered_call_handles = {}
+ *     grpc_channel_credentials_release(c_channel_credentials)             # <<<<<<<<<<<<<<
+ * 
+ *   def target(self):
+ */
+  grpc_channel_credentials_release(__pyx_v_c_channel_credentials);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":500
+ * cdef class Channel:
+ * 
+ *   def __cinit__(             # <<<<<<<<<<<<<<
+ *       self, bytes target, object arguments,
+ *       ChannelCredentials channel_credentials):
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("_cython.cygrpc.Channel.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_channel_args);
+  __Pyx_XDECREF(__pyx_v_arguments);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":520
+ *     grpc_channel_credentials_release(c_channel_credentials)
+ * 
+ *   def target(self):             # <<<<<<<<<<<<<<
+ *     cdef char *c_target
+ *     with self._state.condition:
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_7Channel_3target(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_7Channel_3target = {"target", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_7Channel_3target, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_7Channel_3target(PyObject *__pyx_v_self, 
+#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("target (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("target", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "target", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_7Channel_2target(((struct __pyx_obj_7_cython_6cygrpc_Channel *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_7Channel_2target(struct __pyx_obj_7_cython_6cygrpc_Channel *__pyx_v_self) {
+  char *__pyx_v_c_target;
+  PyObject *__pyx_v_target = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  unsigned int __pyx_t_5;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
+  PyObject *__pyx_t_9 = NULL;
+  PyObject *__pyx_t_10 = NULL;
+  int __pyx_t_11;
+  int __pyx_t_12;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("target", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":522
+ *   def target(self):
+ *     cdef char *c_target
+ *     with self._state.condition:             # <<<<<<<<<<<<<<
+ *       c_target = grpc_channel_get_target(self._state.c_channel)
+ *       target = <bytes>c_target
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_state->condition, __pyx_n_s_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 522, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_state->condition, __pyx_n_s_enter); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 522, __pyx_L3_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(12, 522, __pyx_L3_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    /*try:*/ {
+      {
+        __Pyx_PyThreadState_declare
+        __Pyx_PyThreadState_assign
+        __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_8);
+        /*try:*/ {
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":523
+ *     cdef char *c_target
+ *     with self._state.condition:
+ *       c_target = grpc_channel_get_target(self._state.c_channel)             # <<<<<<<<<<<<<<
+ *       target = <bytes>c_target
+ *       gpr_free(c_target)
+ */
+          __pyx_v_c_target = grpc_channel_get_target(__pyx_v_self->_state->c_channel);
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":524
+ *     with self._state.condition:
+ *       c_target = grpc_channel_get_target(self._state.c_channel)
+ *       target = <bytes>c_target             # <<<<<<<<<<<<<<
+ *       gpr_free(c_target)
+ *       return target
+ */
+          __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_c_target); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 524, __pyx_L7_error)
+          __Pyx_GOTREF(__pyx_t_2);
+          __pyx_t_3 = __pyx_t_2;
+          __Pyx_INCREF(__pyx_t_3);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          __pyx_v_target = ((PyObject*)__pyx_t_3);
+          __pyx_t_3 = 0;
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":525
+ *       c_target = grpc_channel_get_target(self._state.c_channel)
+ *       target = <bytes>c_target
+ *       gpr_free(c_target)             # <<<<<<<<<<<<<<
+ *       return target
+ * 
+ */
+          gpr_free(__pyx_v_c_target);
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":526
+ *       target = <bytes>c_target
+ *       gpr_free(c_target)
+ *       return target             # <<<<<<<<<<<<<<
+ * 
+ *   def integrated_call(
+ */
+          __Pyx_XDECREF(__pyx_r);
+          __Pyx_INCREF(__pyx_v_target);
+          __pyx_r = __pyx_v_target;
+          goto __pyx_L11_try_return;
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":522
+ *   def target(self):
+ *     cdef char *c_target
+ *     with self._state.condition:             # <<<<<<<<<<<<<<
+ *       c_target = grpc_channel_get_target(self._state.c_channel)
+ *       target = <bytes>c_target
+ */
+        }
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        /*except:*/ {
+          __Pyx_AddTraceback("_cython.cygrpc.Channel.target", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_4) < 0) __PYX_ERR(12, 522, __pyx_L9_except_error)
+          __Pyx_XGOTREF(__pyx_t_3);
+          __Pyx_XGOTREF(__pyx_t_2);
+          __Pyx_XGOTREF(__pyx_t_4);
+          __pyx_t_9 = PyTuple_Pack(3, __pyx_t_3, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(12, 522, __pyx_L9_except_error)
+          __Pyx_GOTREF(__pyx_t_9);
+          __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_9, NULL);
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+          if (unlikely(!__pyx_t_10)) __PYX_ERR(12, 522, __pyx_L9_except_error)
+          __Pyx_GOTREF(__pyx_t_10);
+          __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_10);
+          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+          if (__pyx_t_11 < 0) __PYX_ERR(12, 522, __pyx_L9_except_error)
+          __pyx_t_12 = (!__pyx_t_11);
+          if (unlikely(__pyx_t_12)) {
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_GIVEREF(__pyx_t_2);
+            __Pyx_XGIVEREF(__pyx_t_4);
+            __Pyx_ErrRestoreWithState(__pyx_t_3, __pyx_t_2, __pyx_t_4);
+            __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_4 = 0; 
+            __PYX_ERR(12, 522, __pyx_L9_except_error)
+          }
+          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_XGIVEREF(__pyx_t_8);
+        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
+        goto __pyx_L1_error;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_XGIVEREF(__pyx_t_8);
+        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
+        goto __pyx_L4_return;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_XGIVEREF(__pyx_t_8);
+        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
+      }
+    }
+    /*finally:*/ {
+      /*normal exit:*/{
+        if (__pyx_t_1) {
+          __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__11, NULL);
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          if (unlikely(!__pyx_t_8)) __PYX_ERR(12, 522, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_8);
+          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+        }
+        goto __pyx_L6;
+      }
+      __pyx_L4_return: {
+        __pyx_t_8 = __pyx_r;
+        __pyx_r = 0;
+        if (__pyx_t_1) {
+          __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__11, NULL);
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          if (unlikely(!__pyx_t_7)) __PYX_ERR(12, 522, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_7);
+          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        }
+        __pyx_r = __pyx_t_8;
+        __pyx_t_8 = 0;
+        goto __pyx_L0;
+      }
+      __pyx_L6:;
+    }
+    goto __pyx_L16;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    goto __pyx_L1_error;
+    __pyx_L16:;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":520
+ *     grpc_channel_credentials_release(c_channel_credentials)
+ * 
+ *   def target(self):             # <<<<<<<<<<<<<<
+ *     cdef char *c_target
+ *     with self._state.condition:
+ */
+
+  /* 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_9);
+  __Pyx_AddTraceback("_cython.cygrpc.Channel.target", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_target);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":528
+ *       return target
+ * 
+ *   def integrated_call(             # <<<<<<<<<<<<<<
+ *       self, int flags, method, host, object deadline, object metadata,
+ *       CallCredentials credentials, operationses_and_tags,
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_7Channel_5integrated_call(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_7Channel_5integrated_call = {"integrated_call", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_7Channel_5integrated_call, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_7Channel_5integrated_call(PyObject *__pyx_v_self, 
+#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_flags;
+  PyObject *__pyx_v_method = 0;
+  PyObject *__pyx_v_host = 0;
+  PyObject *__pyx_v_deadline = 0;
+  PyObject *__pyx_v_metadata = 0;
+  struct __pyx_obj_7_cython_6cygrpc_CallCredentials *__pyx_v_credentials = 0;
+  PyObject *__pyx_v_operationses_and_tags = 0;
+  PyObject *__pyx_v_context = 0;
+  PyObject *__pyx_v_registered_call_handle = 0;
+  #if !CYTHON_METH_FASTCALL
+  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+  #endif
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject* values[9] = {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("integrated_call (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_flags,&__pyx_n_s_method,&__pyx_n_s_host,&__pyx_n_s_deadline,&__pyx_n_s_metadata,&__pyx_n_s_credentials,&__pyx_n_s_operationses_and_tags,&__pyx_n_s_context,&__pyx_n_s_registered_call_handle,0};
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":531
+ *       self, int flags, method, host, object deadline, object metadata,
+ *       CallCredentials credentials, operationses_and_tags,
+ *       object context = None, object registered_call_handle = None):             # <<<<<<<<<<<<<<
+ *     return _integrated_call(
+ *         self._state, flags, method, host, deadline, metadata, credentials,
+ */
+    values[7] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
+    values[8] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
+    if (__pyx_kwds) {
+      Py_ssize_t kw_args;
+      switch (__pyx_nargs) {
+        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_flags)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 528, __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_method)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 528, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("integrated_call", 0, 7, 9, 1); __PYX_ERR(12, 528, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_host)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 528, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("integrated_call", 0, 7, 9, 2); __PYX_ERR(12, 528, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  3:
+        if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_deadline)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 528, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("integrated_call", 0, 7, 9, 3); __PYX_ERR(12, 528, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  4:
+        if (likely((values[4] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_metadata)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[4]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 528, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("integrated_call", 0, 7, 9, 4); __PYX_ERR(12, 528, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  5:
+        if (likely((values[5] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_credentials)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[5]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 528, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("integrated_call", 0, 7, 9, 5); __PYX_ERR(12, 528, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  6:
+        if (likely((values[6] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_operationses_and_tags)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[6]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 528, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("integrated_call", 0, 7, 9, 6); __PYX_ERR(12, 528, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  7:
+        if (kw_args > 0) {
+          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_context);
+          if (value) { values[7] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
+          else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 528, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  8:
+        if (kw_args > 0) {
+          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_registered_call_handle);
+          if (value) { values[8] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
+          else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 528, __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, "integrated_call") < 0)) __PYX_ERR(12, 528, __pyx_L3_error)
+      }
+    } else {
+      switch (__pyx_nargs) {
+        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);
+        values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
+        values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 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_flags = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_flags == (int)-1) && PyErr_Occurred())) __PYX_ERR(12, 529, __pyx_L3_error)
+    __pyx_v_method = values[1];
+    __pyx_v_host = values[2];
+    __pyx_v_deadline = values[3];
+    __pyx_v_metadata = values[4];
+    __pyx_v_credentials = ((struct __pyx_obj_7_cython_6cygrpc_CallCredentials *)values[5]);
+    __pyx_v_operationses_and_tags = values[6];
+    __pyx_v_context = values[7];
+    __pyx_v_registered_call_handle = values[8];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("integrated_call", 0, 7, 9, __pyx_nargs); __PYX_ERR(12, 528, __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("_cython.cygrpc.Channel.integrated_call", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_credentials), __pyx_ptype_7_cython_6cygrpc_CallCredentials, 1, "credentials", 0))) __PYX_ERR(12, 530, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_7Channel_4integrated_call(((struct __pyx_obj_7_cython_6cygrpc_Channel *)__pyx_v_self), __pyx_v_flags, __pyx_v_method, __pyx_v_host, __pyx_v_deadline, __pyx_v_metadata, __pyx_v_credentials, __pyx_v_operationses_and_tags, __pyx_v_context, __pyx_v_registered_call_handle);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":528
+ *       return target
+ * 
+ *   def integrated_call(             # <<<<<<<<<<<<<<
+ *       self, int flags, method, host, object deadline, object metadata,
+ *       CallCredentials credentials, operationses_and_tags,
+ */
+
+  /* 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_7_cython_6cygrpc_7Channel_4integrated_call(struct __pyx_obj_7_cython_6cygrpc_Channel *__pyx_v_self, int __pyx_v_flags, PyObject *__pyx_v_method, PyObject *__pyx_v_host, PyObject *__pyx_v_deadline, PyObject *__pyx_v_metadata, struct __pyx_obj_7_cython_6cygrpc_CallCredentials *__pyx_v_credentials, PyObject *__pyx_v_operationses_and_tags, PyObject *__pyx_v_context, PyObject *__pyx_v_registered_call_handle) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("integrated_call", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":532
+ *       CallCredentials credentials, operationses_and_tags,
+ *       object context = None, object registered_call_handle = None):
+ *     return _integrated_call(             # <<<<<<<<<<<<<<
+ *         self._state, flags, method, host, deadline, metadata, credentials,
+ *         operationses_and_tags, context, registered_call_handle)
+ */
+  __Pyx_XDECREF(__pyx_r);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":533
+ *       object context = None, object registered_call_handle = None):
+ *     return _integrated_call(
+ *         self._state, flags, method, host, deadline, metadata, credentials,             # <<<<<<<<<<<<<<
+ *         operationses_and_tags, context, registered_call_handle)
+ * 
+ */
+  __pyx_t_1 = ((PyObject *)__pyx_v_self->_state);
+  __Pyx_INCREF(__pyx_t_1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":532
+ *       CallCredentials credentials, operationses_and_tags,
+ *       object context = None, object registered_call_handle = None):
+ *     return _integrated_call(             # <<<<<<<<<<<<<<
+ *         self._state, flags, method, host, deadline, metadata, credentials,
+ *         operationses_and_tags, context, registered_call_handle)
+ */
+  __pyx_t_2 = ((PyObject *)__pyx_f_7_cython_6cygrpc__integrated_call(((struct __pyx_obj_7_cython_6cygrpc__ChannelState *)__pyx_t_1), __pyx_v_flags, __pyx_v_method, __pyx_v_host, __pyx_v_deadline, __pyx_v_metadata, __pyx_v_credentials, __pyx_v_operationses_and_tags, __pyx_v_context, __pyx_v_registered_call_handle)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 532, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":528
+ *       return target
+ * 
+ *   def integrated_call(             # <<<<<<<<<<<<<<
+ *       self, int flags, method, host, object deadline, object metadata,
+ *       CallCredentials credentials, operationses_and_tags,
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("_cython.cygrpc.Channel.integrated_call", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":536
+ *         operationses_and_tags, context, registered_call_handle)
+ * 
+ *   def next_call_event(self):             # <<<<<<<<<<<<<<
+ *     def on_success(tag):
+ *       if tag is not None:
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_7Channel_7next_call_event(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_7Channel_7next_call_event = {"next_call_event", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_7Channel_7next_call_event, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_7Channel_7next_call_event(PyObject *__pyx_v_self, 
+#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("next_call_event (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("next_call_event", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "next_call_event", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_7Channel_6next_call_event(((struct __pyx_obj_7_cython_6cygrpc_Channel *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":537
+ * 
+ *   def next_call_event(self):
+ *     def on_success(tag):             # <<<<<<<<<<<<<<
+ *       if tag is not None:
+ *         _process_integrated_call_tag(self._state, tag)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_7Channel_15next_call_event_1on_success(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_7Channel_15next_call_event_1on_success = {"on_success", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_7Channel_15next_call_event_1on_success, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_7Channel_15next_call_event_1on_success(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_tag = 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("on_success (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_tag,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_tag)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 537, __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, "on_success") < 0)) __PYX_ERR(12, 537, __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_tag = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("on_success", 1, 1, 1, __pyx_nargs); __PYX_ERR(12, 537, __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("_cython.cygrpc.Channel.next_call_event.on_success", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_7Channel_15next_call_event_on_success(__pyx_self, __pyx_v_tag);
+
+  /* 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_7_cython_6cygrpc_7Channel_15next_call_event_on_success(PyObject *__pyx_self, PyObject *__pyx_v_tag) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event *__pyx_cur_scope;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event *__pyx_outer_scope;
+  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("on_success", 1);
+  __pyx_outer_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event *) __Pyx_CyFunction_GetClosure(__pyx_self);
+  __pyx_cur_scope = __pyx_outer_scope;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":538
+ *   def next_call_event(self):
+ *     def on_success(tag):
+ *       if tag is not None:             # <<<<<<<<<<<<<<
+ *         _process_integrated_call_tag(self._state, tag)
+ *     if is_fork_support_enabled():
+ */
+  __pyx_t_1 = (__pyx_v_tag != Py_None);
+  if (__pyx_t_1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":539
+ *     def on_success(tag):
+ *       if tag is not None:
+ *         _process_integrated_call_tag(self._state, tag)             # <<<<<<<<<<<<<<
+ *     if is_fork_support_enabled():
+ *       queue_deadline = time.time() + 1.0
+ */
+    if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(12, 539, __pyx_L1_error) }
+    __pyx_t_2 = ((PyObject *)__pyx_cur_scope->__pyx_v_self->_state);
+    __Pyx_INCREF(__pyx_t_2);
+    if (!(likely(((__pyx_v_tag) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_tag, __pyx_ptype_7_cython_6cygrpc__BatchOperationTag))))) __PYX_ERR(12, 539, __pyx_L1_error)
+    __pyx_f_7_cython_6cygrpc__process_integrated_call_tag(((struct __pyx_obj_7_cython_6cygrpc__ChannelState *)__pyx_t_2), ((struct __pyx_obj_7_cython_6cygrpc__BatchOperationTag *)__pyx_v_tag)); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 539, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":538
+ *   def next_call_event(self):
+ *     def on_success(tag):
+ *       if tag is not None:             # <<<<<<<<<<<<<<
+ *         _process_integrated_call_tag(self._state, tag)
+ *     if is_fork_support_enabled():
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":537
+ * 
+ *   def next_call_event(self):
+ *     def on_success(tag):             # <<<<<<<<<<<<<<
+ *       if tag is not None:
+ *         _process_integrated_call_tag(self._state, tag)
+ */
+
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("_cython.cygrpc.Channel.next_call_event.on_success", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":536
+ *         operationses_and_tags, context, registered_call_handle)
+ * 
+ *   def next_call_event(self):             # <<<<<<<<<<<<<<
+ *     def on_success(tag):
+ *       if tag is not None:
+ */
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_7Channel_6next_call_event(struct __pyx_obj_7_cython_6cygrpc_Channel *__pyx_v_self) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event *__pyx_cur_scope;
+  PyObject *__pyx_v_on_success = 0;
+  PyObject *__pyx_v_queue_deadline = 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_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("next_call_event", 0);
+  __pyx_cur_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event, __pyx_empty_tuple, NULL);
+  if (unlikely(!__pyx_cur_scope)) {
+    __pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event *)Py_None);
+    __Pyx_INCREF(Py_None);
+    __PYX_ERR(12, 536, __pyx_L1_error)
+  } else {
+    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+  }
+  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":537
+ * 
+ *   def next_call_event(self):
+ *     def on_success(tag):             # <<<<<<<<<<<<<<
+ *       if tag is not None:
+ *         _process_integrated_call_tag(self._state, tag)
+ */
+  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_7Channel_15next_call_event_1on_success, 0, __pyx_n_s_next_call_event_locals_on_succes, ((PyObject*)__pyx_cur_scope), __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__20)); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 537, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_on_success = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":540
+ *       if tag is not None:
+ *         _process_integrated_call_tag(self._state, tag)
+ *     if is_fork_support_enabled():             # <<<<<<<<<<<<<<
+ *       queue_deadline = time.time() + 1.0
+ *     else:
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_is_fork_support_enabled); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 540, __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, 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(12, 540, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  }
+  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(12, 540, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (__pyx_t_5) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":541
+ *         _process_integrated_call_tag(self._state, tag)
+ *     if is_fork_support_enabled():
+ *       queue_deadline = time.time() + 1.0             # <<<<<<<<<<<<<<
+ *     else:
+ *       queue_deadline = None
+ */
+    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_time); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 541, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_time); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 541, __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(12, 541, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    }
+    __pyx_t_3 = __Pyx_PyFloat_AddObjC(__pyx_t_1, __pyx_float_1_0, 1.0, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 541, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __pyx_v_queue_deadline = __pyx_t_3;
+    __pyx_t_3 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":540
+ *       if tag is not None:
+ *         _process_integrated_call_tag(self._state, tag)
+ *     if is_fork_support_enabled():             # <<<<<<<<<<<<<<
+ *       queue_deadline = time.time() + 1.0
+ *     else:
+ */
+    goto __pyx_L3;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":543
+ *       queue_deadline = time.time() + 1.0
+ *     else:
+ *       queue_deadline = None             # <<<<<<<<<<<<<<
+ *     # NOTE(gnossen): It is acceptable for on_failure to be None here because
+ *     # failure conditions can only ever happen on the main thread and this
+ */
+  /*else*/ {
+    __Pyx_INCREF(Py_None);
+    __pyx_v_queue_deadline = Py_None;
+  }
+  __pyx_L3:;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":547
+ *     # failure conditions can only ever happen on the main thread and this
+ *     # method is only ever invoked on the channel spin thread.
+ *     return _next_call_event(self._state, self._state.c_call_completion_queue,             # <<<<<<<<<<<<<<
+ *                             on_success, None, queue_deadline)
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_3 = ((PyObject *)__pyx_cur_scope->__pyx_v_self->_state);
+  __Pyx_INCREF(__pyx_t_3);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":548
+ *     # method is only ever invoked on the channel spin thread.
+ *     return _next_call_event(self._state, self._state.c_call_completion_queue,
+ *                             on_success, None, queue_deadline)             # <<<<<<<<<<<<<<
+ * 
+ *   def segregated_call(
+ */
+  __pyx_t_1 = __pyx_f_7_cython_6cygrpc__next_call_event(((struct __pyx_obj_7_cython_6cygrpc__ChannelState *)__pyx_t_3), __pyx_cur_scope->__pyx_v_self->_state->c_call_completion_queue, __pyx_v_on_success, Py_None, __pyx_v_queue_deadline); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 547, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":536
+ *         operationses_and_tags, context, registered_call_handle)
+ * 
+ *   def next_call_event(self):             # <<<<<<<<<<<<<<
+ *     def on_success(tag):
+ *       if tag is not None:
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("_cython.cygrpc.Channel.next_call_event", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_on_success);
+  __Pyx_XDECREF(__pyx_v_queue_deadline);
+  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":550
+ *                             on_success, None, queue_deadline)
+ * 
+ *   def segregated_call(             # <<<<<<<<<<<<<<
+ *       self, int flags, method, host, object deadline, object metadata,
+ *       CallCredentials credentials, operationses_and_tags,
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_7Channel_9segregated_call(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_7Channel_9segregated_call = {"segregated_call", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_7Channel_9segregated_call, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_7Channel_9segregated_call(PyObject *__pyx_v_self, 
+#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_flags;
+  PyObject *__pyx_v_method = 0;
+  PyObject *__pyx_v_host = 0;
+  PyObject *__pyx_v_deadline = 0;
+  PyObject *__pyx_v_metadata = 0;
+  struct __pyx_obj_7_cython_6cygrpc_CallCredentials *__pyx_v_credentials = 0;
+  PyObject *__pyx_v_operationses_and_tags = 0;
+  PyObject *__pyx_v_context = 0;
+  PyObject *__pyx_v_registered_call_handle = 0;
+  #if !CYTHON_METH_FASTCALL
+  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+  #endif
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject* values[9] = {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("segregated_call (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_flags,&__pyx_n_s_method,&__pyx_n_s_host,&__pyx_n_s_deadline,&__pyx_n_s_metadata,&__pyx_n_s_credentials,&__pyx_n_s_operationses_and_tags,&__pyx_n_s_context,&__pyx_n_s_registered_call_handle,0};
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":553
+ *       self, int flags, method, host, object deadline, object metadata,
+ *       CallCredentials credentials, operationses_and_tags,
+ *       object context = None, object registered_call_handle = None):             # <<<<<<<<<<<<<<
+ *     return _segregated_call(
+ *         self._state, flags, method, host, deadline, metadata, credentials,
+ */
+    values[7] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
+    values[8] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
+    if (__pyx_kwds) {
+      Py_ssize_t kw_args;
+      switch (__pyx_nargs) {
+        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_flags)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 550, __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_method)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 550, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("segregated_call", 0, 7, 9, 1); __PYX_ERR(12, 550, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_host)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 550, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("segregated_call", 0, 7, 9, 2); __PYX_ERR(12, 550, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  3:
+        if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_deadline)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 550, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("segregated_call", 0, 7, 9, 3); __PYX_ERR(12, 550, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  4:
+        if (likely((values[4] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_metadata)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[4]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 550, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("segregated_call", 0, 7, 9, 4); __PYX_ERR(12, 550, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  5:
+        if (likely((values[5] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_credentials)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[5]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 550, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("segregated_call", 0, 7, 9, 5); __PYX_ERR(12, 550, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  6:
+        if (likely((values[6] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_operationses_and_tags)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[6]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 550, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("segregated_call", 0, 7, 9, 6); __PYX_ERR(12, 550, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  7:
+        if (kw_args > 0) {
+          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_context);
+          if (value) { values[7] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
+          else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 550, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  8:
+        if (kw_args > 0) {
+          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_registered_call_handle);
+          if (value) { values[8] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
+          else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 550, __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, "segregated_call") < 0)) __PYX_ERR(12, 550, __pyx_L3_error)
+      }
+    } else {
+      switch (__pyx_nargs) {
+        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);
+        values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
+        values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 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_flags = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_flags == (int)-1) && PyErr_Occurred())) __PYX_ERR(12, 551, __pyx_L3_error)
+    __pyx_v_method = values[1];
+    __pyx_v_host = values[2];
+    __pyx_v_deadline = values[3];
+    __pyx_v_metadata = values[4];
+    __pyx_v_credentials = ((struct __pyx_obj_7_cython_6cygrpc_CallCredentials *)values[5]);
+    __pyx_v_operationses_and_tags = values[6];
+    __pyx_v_context = values[7];
+    __pyx_v_registered_call_handle = values[8];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("segregated_call", 0, 7, 9, __pyx_nargs); __PYX_ERR(12, 550, __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("_cython.cygrpc.Channel.segregated_call", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_credentials), __pyx_ptype_7_cython_6cygrpc_CallCredentials, 1, "credentials", 0))) __PYX_ERR(12, 552, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_7Channel_8segregated_call(((struct __pyx_obj_7_cython_6cygrpc_Channel *)__pyx_v_self), __pyx_v_flags, __pyx_v_method, __pyx_v_host, __pyx_v_deadline, __pyx_v_metadata, __pyx_v_credentials, __pyx_v_operationses_and_tags, __pyx_v_context, __pyx_v_registered_call_handle);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":550
+ *                             on_success, None, queue_deadline)
+ * 
+ *   def segregated_call(             # <<<<<<<<<<<<<<
+ *       self, int flags, method, host, object deadline, object metadata,
+ *       CallCredentials credentials, operationses_and_tags,
+ */
+
+  /* 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_7_cython_6cygrpc_7Channel_8segregated_call(struct __pyx_obj_7_cython_6cygrpc_Channel *__pyx_v_self, int __pyx_v_flags, PyObject *__pyx_v_method, PyObject *__pyx_v_host, PyObject *__pyx_v_deadline, PyObject *__pyx_v_metadata, struct __pyx_obj_7_cython_6cygrpc_CallCredentials *__pyx_v_credentials, PyObject *__pyx_v_operationses_and_tags, PyObject *__pyx_v_context, PyObject *__pyx_v_registered_call_handle) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("segregated_call", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":554
+ *       CallCredentials credentials, operationses_and_tags,
+ *       object context = None, object registered_call_handle = None):
+ *     return _segregated_call(             # <<<<<<<<<<<<<<
+ *         self._state, flags, method, host, deadline, metadata, credentials,
+ *         operationses_and_tags, context, registered_call_handle)
+ */
+  __Pyx_XDECREF(__pyx_r);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":555
+ *       object context = None, object registered_call_handle = None):
+ *     return _segregated_call(
+ *         self._state, flags, method, host, deadline, metadata, credentials,             # <<<<<<<<<<<<<<
+ *         operationses_and_tags, context, registered_call_handle)
+ * 
+ */
+  __pyx_t_1 = ((PyObject *)__pyx_v_self->_state);
+  __Pyx_INCREF(__pyx_t_1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":554
+ *       CallCredentials credentials, operationses_and_tags,
+ *       object context = None, object registered_call_handle = None):
+ *     return _segregated_call(             # <<<<<<<<<<<<<<
+ *         self._state, flags, method, host, deadline, metadata, credentials,
+ *         operationses_and_tags, context, registered_call_handle)
+ */
+  __pyx_t_2 = ((PyObject *)__pyx_f_7_cython_6cygrpc__segregated_call(((struct __pyx_obj_7_cython_6cygrpc__ChannelState *)__pyx_t_1), __pyx_v_flags, __pyx_v_method, __pyx_v_host, __pyx_v_deadline, __pyx_v_metadata, __pyx_v_credentials, __pyx_v_operationses_and_tags, __pyx_v_context, __pyx_v_registered_call_handle)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 554, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":550
+ *                             on_success, None, queue_deadline)
+ * 
+ *   def segregated_call(             # <<<<<<<<<<<<<<
+ *       self, int flags, method, host, object deadline, object metadata,
+ *       CallCredentials credentials, operationses_and_tags,
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("_cython.cygrpc.Channel.segregated_call", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":558
+ *         operationses_and_tags, context, registered_call_handle)
+ * 
+ *   def check_connectivity_state(self, bint try_to_connect):             # <<<<<<<<<<<<<<
+ *     with self._state.condition:
+ *       if self._state.open:
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_7Channel_11check_connectivity_state(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_7Channel_11check_connectivity_state = {"check_connectivity_state", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_7Channel_11check_connectivity_state, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_7Channel_11check_connectivity_state(PyObject *__pyx_v_self, 
+#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_try_to_connect;
+  #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("check_connectivity_state (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_try_to_connect,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_try_to_connect)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 558, __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, "check_connectivity_state") < 0)) __PYX_ERR(12, 558, __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_try_to_connect = __Pyx_PyObject_IsTrue(values[0]); if (unlikely((__pyx_v_try_to_connect == (int)-1) && PyErr_Occurred())) __PYX_ERR(12, 558, __pyx_L3_error)
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("check_connectivity_state", 1, 1, 1, __pyx_nargs); __PYX_ERR(12, 558, __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("_cython.cygrpc.Channel.check_connectivity_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_7Channel_10check_connectivity_state(((struct __pyx_obj_7_cython_6cygrpc_Channel *)__pyx_v_self), __pyx_v_try_to_connect);
+
+  /* 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_7_cython_6cygrpc_7Channel_10check_connectivity_state(struct __pyx_obj_7_cython_6cygrpc_Channel *__pyx_v_self, int __pyx_v_try_to_connect) {
+  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;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
+  int __pyx_t_9;
+  PyObject *__pyx_t_10 = NULL;
+  PyObject *__pyx_t_11 = NULL;
+  int __pyx_t_12;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("check_connectivity_state", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":559
+ * 
+ *   def check_connectivity_state(self, bint try_to_connect):
+ *     with self._state.condition:             # <<<<<<<<<<<<<<
+ *       if self._state.open:
+ *         return grpc_channel_check_connectivity_state(
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_state->condition, __pyx_n_s_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 559, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_state->condition, __pyx_n_s_enter); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 559, __pyx_L3_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(12, 559, __pyx_L3_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    /*try:*/ {
+      {
+        __Pyx_PyThreadState_declare
+        __Pyx_PyThreadState_assign
+        __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_8);
+        /*try:*/ {
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":560
+ *   def check_connectivity_state(self, bint try_to_connect):
+ *     with self._state.condition:
+ *       if self._state.open:             # <<<<<<<<<<<<<<
+ *         return grpc_channel_check_connectivity_state(
+ *             self._state.c_channel, try_to_connect)
+ */
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_self->_state->open); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(12, 560, __pyx_L7_error)
+          if (likely(__pyx_t_9)) {
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":561
+ *     with self._state.condition:
+ *       if self._state.open:
+ *         return grpc_channel_check_connectivity_state(             # <<<<<<<<<<<<<<
+ *             self._state.c_channel, try_to_connect)
+ *       else:
+ */
+            __Pyx_XDECREF(__pyx_r);
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":562
+ *       if self._state.open:
+ *         return grpc_channel_check_connectivity_state(
+ *             self._state.c_channel, try_to_connect)             # <<<<<<<<<<<<<<
+ *       else:
+ *         raise ValueError('Cannot invoke RPC: %s' % self._state.closed_reason)
+ */
+            __pyx_t_2 = __Pyx_PyInt_From_grpc_connectivity_state(grpc_channel_check_connectivity_state(__pyx_v_self->_state->c_channel, __pyx_v_try_to_connect)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 561, __pyx_L7_error)
+            __Pyx_GOTREF(__pyx_t_2);
+            __pyx_r = __pyx_t_2;
+            __pyx_t_2 = 0;
+            goto __pyx_L11_try_return;
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":560
+ *   def check_connectivity_state(self, bint try_to_connect):
+ *     with self._state.condition:
+ *       if self._state.open:             # <<<<<<<<<<<<<<
+ *         return grpc_channel_check_connectivity_state(
+ *             self._state.c_channel, try_to_connect)
+ */
+          }
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":564
+ *             self._state.c_channel, try_to_connect)
+ *       else:
+ *         raise ValueError('Cannot invoke RPC: %s' % self._state.closed_reason)             # <<<<<<<<<<<<<<
+ * 
+ *   def watch_connectivity_state(
+ */
+          /*else*/ {
+            __pyx_t_2 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Cannot_invoke_RPC_s, __pyx_v_self->_state->closed_reason); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 564, __pyx_L7_error)
+            __Pyx_GOTREF(__pyx_t_2);
+            __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 564, __pyx_L7_error)
+            __Pyx_GOTREF(__pyx_t_3);
+            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+            __Pyx_Raise(__pyx_t_3, 0, 0, 0);
+            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+            __PYX_ERR(12, 564, __pyx_L7_error)
+          }
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":559
+ * 
+ *   def check_connectivity_state(self, bint try_to_connect):
+ *     with self._state.condition:             # <<<<<<<<<<<<<<
+ *       if self._state.open:
+ *         return grpc_channel_check_connectivity_state(
+ */
+        }
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        /*except:*/ {
+          __Pyx_AddTraceback("_cython.cygrpc.Channel.check_connectivity_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_4) < 0) __PYX_ERR(12, 559, __pyx_L9_except_error)
+          __Pyx_XGOTREF(__pyx_t_3);
+          __Pyx_XGOTREF(__pyx_t_2);
+          __Pyx_XGOTREF(__pyx_t_4);
+          __pyx_t_10 = PyTuple_Pack(3, __pyx_t_3, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(12, 559, __pyx_L9_except_error)
+          __Pyx_GOTREF(__pyx_t_10);
+          __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_10, NULL);
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+          if (unlikely(!__pyx_t_11)) __PYX_ERR(12, 559, __pyx_L9_except_error)
+          __Pyx_GOTREF(__pyx_t_11);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_11);
+          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+          if (__pyx_t_9 < 0) __PYX_ERR(12, 559, __pyx_L9_except_error)
+          __pyx_t_12 = (!__pyx_t_9);
+          if (unlikely(__pyx_t_12)) {
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_GIVEREF(__pyx_t_2);
+            __Pyx_XGIVEREF(__pyx_t_4);
+            __Pyx_ErrRestoreWithState(__pyx_t_3, __pyx_t_2, __pyx_t_4);
+            __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_4 = 0; 
+            __PYX_ERR(12, 559, __pyx_L9_except_error)
+          }
+          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_XGIVEREF(__pyx_t_8);
+        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
+        goto __pyx_L1_error;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_XGIVEREF(__pyx_t_8);
+        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
+        goto __pyx_L4_return;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_XGIVEREF(__pyx_t_8);
+        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
+      }
+    }
+    /*finally:*/ {
+      /*normal exit:*/{
+        if (__pyx_t_1) {
+          __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__11, NULL);
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          if (unlikely(!__pyx_t_8)) __PYX_ERR(12, 559, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_8);
+          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+        }
+        goto __pyx_L6;
+      }
+      __pyx_L4_return: {
+        __pyx_t_8 = __pyx_r;
+        __pyx_r = 0;
+        if (__pyx_t_1) {
+          __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__11, NULL);
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          if (unlikely(!__pyx_t_7)) __PYX_ERR(12, 559, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_7);
+          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        }
+        __pyx_r = __pyx_t_8;
+        __pyx_t_8 = 0;
+        goto __pyx_L0;
+      }
+      __pyx_L6:;
+    }
+    goto __pyx_L17;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    goto __pyx_L1_error;
+    __pyx_L17:;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":558
+ *         operationses_and_tags, context, registered_call_handle)
+ * 
+ *   def check_connectivity_state(self, bint try_to_connect):             # <<<<<<<<<<<<<<
+ *     with self._state.condition:
+ *       if self._state.open:
+ */
+
+  /* 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_10);
+  __Pyx_AddTraceback("_cython.cygrpc.Channel.check_connectivity_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":566
+ *         raise ValueError('Cannot invoke RPC: %s' % self._state.closed_reason)
+ * 
+ *   def watch_connectivity_state(             # <<<<<<<<<<<<<<
+ *       self, grpc_connectivity_state last_observed_state, object deadline):
+ *     return _watch_connectivity_state(self._state, last_observed_state, deadline)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_7Channel_13watch_connectivity_state(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_7Channel_13watch_connectivity_state = {"watch_connectivity_state", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_7Channel_13watch_connectivity_state, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_7Channel_13watch_connectivity_state(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+  grpc_connectivity_state __pyx_v_last_observed_state;
+  PyObject *__pyx_v_deadline = 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("watch_connectivity_state (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_last_observed_state,&__pyx_n_s_deadline,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_last_observed_state)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 566, __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_deadline)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 566, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("watch_connectivity_state", 1, 2, 2, 1); __PYX_ERR(12, 566, __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, "watch_connectivity_state") < 0)) __PYX_ERR(12, 566, __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_last_observed_state = ((grpc_connectivity_state)__Pyx_PyInt_As_grpc_connectivity_state(values[0])); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 567, __pyx_L3_error)
+    __pyx_v_deadline = values[1];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("watch_connectivity_state", 1, 2, 2, __pyx_nargs); __PYX_ERR(12, 566, __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("_cython.cygrpc.Channel.watch_connectivity_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_7Channel_12watch_connectivity_state(((struct __pyx_obj_7_cython_6cygrpc_Channel *)__pyx_v_self), __pyx_v_last_observed_state, __pyx_v_deadline);
+
+  /* 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_7_cython_6cygrpc_7Channel_12watch_connectivity_state(struct __pyx_obj_7_cython_6cygrpc_Channel *__pyx_v_self, grpc_connectivity_state __pyx_v_last_observed_state, PyObject *__pyx_v_deadline) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("watch_connectivity_state", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":568
+ *   def watch_connectivity_state(
+ *       self, grpc_connectivity_state last_observed_state, object deadline):
+ *     return _watch_connectivity_state(self._state, last_observed_state, deadline)             # <<<<<<<<<<<<<<
+ * 
+ *   def close(self, code, details):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = ((PyObject *)__pyx_v_self->_state);
+  __Pyx_INCREF(__pyx_t_1);
+  __pyx_t_2 = __pyx_f_7_cython_6cygrpc__watch_connectivity_state(((struct __pyx_obj_7_cython_6cygrpc__ChannelState *)__pyx_t_1), __pyx_v_last_observed_state, __pyx_v_deadline); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 568, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":566
+ *         raise ValueError('Cannot invoke RPC: %s' % self._state.closed_reason)
+ * 
+ *   def watch_connectivity_state(             # <<<<<<<<<<<<<<
+ *       self, grpc_connectivity_state last_observed_state, object deadline):
+ *     return _watch_connectivity_state(self._state, last_observed_state, deadline)
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("_cython.cygrpc.Channel.watch_connectivity_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":570
+ *     return _watch_connectivity_state(self._state, last_observed_state, deadline)
+ * 
+ *   def close(self, code, details):             # <<<<<<<<<<<<<<
+ *     _close(self, code, details, False)
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_7Channel_15close(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_7Channel_15close = {"close", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_7Channel_15close, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_7Channel_15close(PyObject *__pyx_v_self, 
+#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_code = 0;
+  PyObject *__pyx_v_details = 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("close (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_code,&__pyx_n_s_details,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_code)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 570, __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_details)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 570, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("close", 1, 2, 2, 1); __PYX_ERR(12, 570, __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, "close") < 0)) __PYX_ERR(12, 570, __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_code = values[0];
+    __pyx_v_details = values[1];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("close", 1, 2, 2, __pyx_nargs); __PYX_ERR(12, 570, __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("_cython.cygrpc.Channel.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_7Channel_14close(((struct __pyx_obj_7_cython_6cygrpc_Channel *)__pyx_v_self), __pyx_v_code, __pyx_v_details);
+
+  /* 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_7_cython_6cygrpc_7Channel_14close(struct __pyx_obj_7_cython_6cygrpc_Channel *__pyx_v_self, PyObject *__pyx_v_code, PyObject *__pyx_v_details) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  grpc_status_code __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("close", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":571
+ * 
+ *   def close(self, code, details):
+ *     _close(self, code, details, False)             # <<<<<<<<<<<<<<
+ * 
+ *   def close_on_fork(self, code, details):
+ */
+  __pyx_t_1 = ((grpc_status_code)__Pyx_PyInt_As_grpc_status_code(__pyx_v_code)); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 571, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_7_cython_6cygrpc__close(__pyx_v_self, __pyx_t_1, __pyx_v_details, Py_False); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 571, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":570
+ *     return _watch_connectivity_state(self._state, last_observed_state, deadline)
+ * 
+ *   def close(self, code, details):             # <<<<<<<<<<<<<<
+ *     _close(self, code, details, False)
+ * 
+ */
+
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("_cython.cygrpc.Channel.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":573
+ *     _close(self, code, details, False)
+ * 
+ *   def close_on_fork(self, code, details):             # <<<<<<<<<<<<<<
+ *     _close(self, code, details, True)
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_7Channel_17close_on_fork(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_7Channel_17close_on_fork = {"close_on_fork", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_7Channel_17close_on_fork, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_7Channel_17close_on_fork(PyObject *__pyx_v_self, 
+#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_code = 0;
+  PyObject *__pyx_v_details = 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("close_on_fork (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_code,&__pyx_n_s_details,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_code)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 573, __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_details)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 573, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("close_on_fork", 1, 2, 2, 1); __PYX_ERR(12, 573, __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, "close_on_fork") < 0)) __PYX_ERR(12, 573, __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_code = values[0];
+    __pyx_v_details = values[1];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("close_on_fork", 1, 2, 2, __pyx_nargs); __PYX_ERR(12, 573, __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("_cython.cygrpc.Channel.close_on_fork", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_7Channel_16close_on_fork(((struct __pyx_obj_7_cython_6cygrpc_Channel *)__pyx_v_self), __pyx_v_code, __pyx_v_details);
+
+  /* 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_7_cython_6cygrpc_7Channel_16close_on_fork(struct __pyx_obj_7_cython_6cygrpc_Channel *__pyx_v_self, PyObject *__pyx_v_code, PyObject *__pyx_v_details) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  grpc_status_code __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("close_on_fork", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":574
+ * 
+ *   def close_on_fork(self, code, details):
+ *     _close(self, code, details, True)             # <<<<<<<<<<<<<<
+ * 
+ *   def get_registered_call_handle(self, method):
+ */
+  __pyx_t_1 = ((grpc_status_code)__Pyx_PyInt_As_grpc_status_code(__pyx_v_code)); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 574, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_7_cython_6cygrpc__close(__pyx_v_self, __pyx_t_1, __pyx_v_details, Py_True); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 574, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":573
+ *     _close(self, code, details, False)
+ * 
+ *   def close_on_fork(self, code, details):             # <<<<<<<<<<<<<<
+ *     _close(self, code, details, True)
+ * 
+ */
+
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("_cython.cygrpc.Channel.close_on_fork", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":576
+ *     _close(self, code, details, True)
+ * 
+ *   def get_registered_call_handle(self, method):             # <<<<<<<<<<<<<<
+ *     """
+ *     Get or registers a call handler for a method.
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_7Channel_19get_registered_call_handle(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+PyDoc_STRVAR(__pyx_doc_7_cython_6cygrpc_7Channel_18get_registered_call_handle, "\n    Get or registers a call handler for a method.\n\n    This method is not thread-safe.\n\n    Args:\n      method: Required, the method name for the RPC.\n\n    Returns:\n      The registered call handle pointer in the form of a Python Long. \n    ");
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_7Channel_19get_registered_call_handle = {"get_registered_call_handle", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_7Channel_19get_registered_call_handle, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7_cython_6cygrpc_7Channel_18get_registered_call_handle};
+static PyObject *__pyx_pw_7_cython_6cygrpc_7Channel_19get_registered_call_handle(PyObject *__pyx_v_self, 
+#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_method = 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("get_registered_call_handle (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_method,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_method)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 576, __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, "get_registered_call_handle") < 0)) __PYX_ERR(12, 576, __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_method = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("get_registered_call_handle", 1, 1, 1, __pyx_nargs); __PYX_ERR(12, 576, __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("_cython.cygrpc.Channel.get_registered_call_handle", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_7Channel_18get_registered_call_handle(((struct __pyx_obj_7_cython_6cygrpc_Channel *)__pyx_v_self), __pyx_v_method);
+
+  /* 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_7_cython_6cygrpc_7Channel_18get_registered_call_handle(struct __pyx_obj_7_cython_6cygrpc_Channel *__pyx_v_self, PyObject *__pyx_v_method) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  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_registered_call_handle", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":588
+ *       The registered call handle pointer in the form of a Python Long.
+ *     """
+ *     if method not in self._registered_call_handles.keys():             # <<<<<<<<<<<<<<
+ *       self._registered_call_handles[method] = CallHandle(self._state, method)
+ *     return self._registered_call_handles[method].call_handle
+ */
+  if (unlikely(__pyx_v_self->_registered_call_handles == Py_None)) {
+    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "keys");
+    __PYX_ERR(12, 588, __pyx_L1_error)
+  }
+  __pyx_t_1 = __Pyx_PyDict_Keys(__pyx_v_self->_registered_call_handles); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 588, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_v_method, __pyx_t_1, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(12, 588, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (__pyx_t_2) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":589
+ *     """
+ *     if method not in self._registered_call_handles.keys():
+ *       self._registered_call_handles[method] = CallHandle(self._state, method)             # <<<<<<<<<<<<<<
+ *     return self._registered_call_handles[method].call_handle
+ */
+    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 589, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_INCREF((PyObject *)__pyx_v_self->_state);
+    __Pyx_GIVEREF((PyObject *)__pyx_v_self->_state);
+    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self->_state))) __PYX_ERR(12, 589, __pyx_L1_error);
+    __Pyx_INCREF(__pyx_v_method);
+    __Pyx_GIVEREF(__pyx_v_method);
+    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_method)) __PYX_ERR(12, 589, __pyx_L1_error);
+    __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_7_cython_6cygrpc_CallHandle), __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 589, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    if (unlikely(__pyx_v_self->_registered_call_handles == Py_None)) {
+      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+      __PYX_ERR(12, 589, __pyx_L1_error)
+    }
+    if (unlikely((PyDict_SetItem(__pyx_v_self->_registered_call_handles, __pyx_v_method, __pyx_t_3) < 0))) __PYX_ERR(12, 589, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":588
+ *       The registered call handle pointer in the form of a Python Long.
+ *     """
+ *     if method not in self._registered_call_handles.keys():             # <<<<<<<<<<<<<<
+ *       self._registered_call_handles[method] = CallHandle(self._state, method)
+ *     return self._registered_call_handles[method].call_handle
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":590
+ *     if method not in self._registered_call_handles.keys():
+ *       self._registered_call_handles[method] = CallHandle(self._state, method)
+ *     return self._registered_call_handles[method].call_handle             # <<<<<<<<<<<<<<
+ */
+  __Pyx_XDECREF(__pyx_r);
+  if (unlikely(__pyx_v_self->_registered_call_handles == Py_None)) {
+    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+    __PYX_ERR(12, 590, __pyx_L1_error)
+  }
+  __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_self->_registered_call_handles, __pyx_v_method); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 590, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_call_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 590, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":576
+ *     _close(self, code, details, True)
+ * 
+ *   def get_registered_call_handle(self, method):             # <<<<<<<<<<<<<<
+ *     """
+ *     Get or registers a call handler for a method.
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("_cython.cygrpc.Channel.get_registered_call_handle", __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, "no default __reduce__ due to non-trivial __cinit__"
+ * def __setstate_cython__(self, __pyx_state):
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_7Channel_21__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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_7Channel_21__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_7Channel_21__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_7Channel_21__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_7_cython_6cygrpc_7Channel_20__reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc_Channel *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_7Channel_20__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_Channel *__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(10, 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("_cython.cygrpc.Channel.__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_7_cython_6cygrpc_7Channel_23__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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_7Channel_23__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_7Channel_23__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_7Channel_23__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(10, 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(10, 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(10, 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("_cython.cygrpc.Channel.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_7Channel_22__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc_Channel *)__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_7_cython_6cygrpc_7Channel_22__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_Channel *__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(10, 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("_cython.cygrpc.Channel.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":16
+ * 
+ * 
+ * def channelz_get_top_channels(start_channel_id):             # <<<<<<<<<<<<<<
+ *     cdef char *c_returned_str = grpc_channelz_get_top_channels(
+ *         start_channel_id,
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_1channelz_get_top_channels(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_1channelz_get_top_channels = {"channelz_get_top_channels", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_1channelz_get_top_channels, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_1channelz_get_top_channels(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_start_channel_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("channelz_get_top_channels (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_start_channel_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_start_channel_id)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 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, "channelz_get_top_channels") < 0)) __PYX_ERR(13, 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_start_channel_id = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("channelz_get_top_channels", 1, 1, 1, __pyx_nargs); __PYX_ERR(13, 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("_cython.cygrpc.channelz_get_top_channels", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_channelz_get_top_channels(__pyx_self, __pyx_v_start_channel_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_7_cython_6cygrpc_channelz_get_top_channels(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_start_channel_id) {
+  char *__pyx_v_c_returned_str;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __pyx_t_7_cython_6cygrpc_intptr_t __pyx_t_1;
+  int __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("channelz_get_top_channels", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":18
+ * def channelz_get_top_channels(start_channel_id):
+ *     cdef char *c_returned_str = grpc_channelz_get_top_channels(
+ *         start_channel_id,             # <<<<<<<<<<<<<<
+ *     )
+ *     if c_returned_str == NULL:
+ */
+  __pyx_t_1 = PyInt_AsSsize_t(__pyx_v_start_channel_id); if (unlikely((__pyx_t_1 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(13, 18, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":17
+ * 
+ * def channelz_get_top_channels(start_channel_id):
+ *     cdef char *c_returned_str = grpc_channelz_get_top_channels(             # <<<<<<<<<<<<<<
+ *         start_channel_id,
+ *     )
+ */
+  __pyx_v_c_returned_str = grpc_channelz_get_top_channels(__pyx_t_1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":20
+ *         start_channel_id,
+ *     )
+ *     if c_returned_str == NULL:             # <<<<<<<<<<<<<<
+ *         raise ValueError('Failed to get top channels, please ensure your' \
+ *                          ' start_channel_id==%s is valid' % start_channel_id)
+ */
+  __pyx_t_2 = (__pyx_v_c_returned_str == NULL);
+  if (unlikely(__pyx_t_2)) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":22
+ *     if c_returned_str == NULL:
+ *         raise ValueError('Failed to get top channels, please ensure your' \
+ *                          ' start_channel_id==%s is valid' % start_channel_id)             # <<<<<<<<<<<<<<
+ *     return c_returned_str
+ * 
+ */
+    __pyx_t_3 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Failed_to_get_top_channels_pleas, __pyx_v_start_channel_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 22, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":21
+ *     )
+ *     if c_returned_str == NULL:
+ *         raise ValueError('Failed to get top channels, please ensure your' \             # <<<<<<<<<<<<<<
+ *                          ' start_channel_id==%s is valid' % start_channel_id)
+ *     return c_returned_str
+ */
+    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 21, __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(13, 21, __pyx_L1_error)
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":20
+ *         start_channel_id,
+ *     )
+ *     if c_returned_str == NULL:             # <<<<<<<<<<<<<<
+ *         raise ValueError('Failed to get top channels, please ensure your' \
+ *                          ' start_channel_id==%s is valid' % start_channel_id)
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":23
+ *         raise ValueError('Failed to get top channels, please ensure your' \
+ *                          ' start_channel_id==%s is valid' % start_channel_id)
+ *     return c_returned_str             # <<<<<<<<<<<<<<
+ * 
+ * def channelz_get_servers(start_server_id):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_4 = __Pyx_PyBytes_FromString(__pyx_v_c_returned_str); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 23, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_r = __pyx_t_4;
+  __pyx_t_4 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":16
+ * 
+ * 
+ * def channelz_get_top_channels(start_channel_id):             # <<<<<<<<<<<<<<
+ *     cdef char *c_returned_str = grpc_channelz_get_top_channels(
+ *         start_channel_id,
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("_cython.cygrpc.channelz_get_top_channels", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":25
+ *     return c_returned_str
+ * 
+ * def channelz_get_servers(start_server_id):             # <<<<<<<<<<<<<<
+ *     cdef char *c_returned_str = grpc_channelz_get_servers(start_server_id)
+ *     if c_returned_str == NULL:
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_3channelz_get_servers(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_3channelz_get_servers = {"channelz_get_servers", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_3channelz_get_servers, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_3channelz_get_servers(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_start_server_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("channelz_get_servers (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_start_server_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_start_server_id)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 25, __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, "channelz_get_servers") < 0)) __PYX_ERR(13, 25, __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_start_server_id = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("channelz_get_servers", 1, 1, 1, __pyx_nargs); __PYX_ERR(13, 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("_cython.cygrpc.channelz_get_servers", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_2channelz_get_servers(__pyx_self, __pyx_v_start_server_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_7_cython_6cygrpc_2channelz_get_servers(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_start_server_id) {
+  char *__pyx_v_c_returned_str;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __pyx_t_7_cython_6cygrpc_intptr_t __pyx_t_1;
+  int __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("channelz_get_servers", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":26
+ * 
+ * def channelz_get_servers(start_server_id):
+ *     cdef char *c_returned_str = grpc_channelz_get_servers(start_server_id)             # <<<<<<<<<<<<<<
+ *     if c_returned_str == NULL:
+ *         raise ValueError('Failed to get servers, please ensure your' \
+ */
+  __pyx_t_1 = PyInt_AsSsize_t(__pyx_v_start_server_id); if (unlikely((__pyx_t_1 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(13, 26, __pyx_L1_error)
+  __pyx_v_c_returned_str = grpc_channelz_get_servers(__pyx_t_1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":27
+ * def channelz_get_servers(start_server_id):
+ *     cdef char *c_returned_str = grpc_channelz_get_servers(start_server_id)
+ *     if c_returned_str == NULL:             # <<<<<<<<<<<<<<
+ *         raise ValueError('Failed to get servers, please ensure your' \
+ *                          ' start_server_id==%s is valid' % start_server_id)
+ */
+  __pyx_t_2 = (__pyx_v_c_returned_str == NULL);
+  if (unlikely(__pyx_t_2)) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":29
+ *     if c_returned_str == NULL:
+ *         raise ValueError('Failed to get servers, please ensure your' \
+ *                          ' start_server_id==%s is valid' % start_server_id)             # <<<<<<<<<<<<<<
+ *     return c_returned_str
+ * 
+ */
+    __pyx_t_3 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Failed_to_get_servers_please_ens, __pyx_v_start_server_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 29, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":28
+ *     cdef char *c_returned_str = grpc_channelz_get_servers(start_server_id)
+ *     if c_returned_str == NULL:
+ *         raise ValueError('Failed to get servers, please ensure your' \             # <<<<<<<<<<<<<<
+ *                          ' start_server_id==%s is valid' % start_server_id)
+ *     return c_returned_str
+ */
+    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 28, __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(13, 28, __pyx_L1_error)
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":27
+ * def channelz_get_servers(start_server_id):
+ *     cdef char *c_returned_str = grpc_channelz_get_servers(start_server_id)
+ *     if c_returned_str == NULL:             # <<<<<<<<<<<<<<
+ *         raise ValueError('Failed to get servers, please ensure your' \
+ *                          ' start_server_id==%s is valid' % start_server_id)
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":30
+ *         raise ValueError('Failed to get servers, please ensure your' \
+ *                          ' start_server_id==%s is valid' % start_server_id)
+ *     return c_returned_str             # <<<<<<<<<<<<<<
+ * 
+ * def channelz_get_server(server_id):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_4 = __Pyx_PyBytes_FromString(__pyx_v_c_returned_str); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 30, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_r = __pyx_t_4;
+  __pyx_t_4 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":25
+ *     return c_returned_str
+ * 
+ * def channelz_get_servers(start_server_id):             # <<<<<<<<<<<<<<
+ *     cdef char *c_returned_str = grpc_channelz_get_servers(start_server_id)
+ *     if c_returned_str == NULL:
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("_cython.cygrpc.channelz_get_servers", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":32
+ *     return c_returned_str
+ * 
+ * def channelz_get_server(server_id):             # <<<<<<<<<<<<<<
+ *     cdef char *c_returned_str = grpc_channelz_get_server(server_id)
+ *     if c_returned_str == NULL:
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_5channelz_get_server(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_5channelz_get_server = {"channelz_get_server", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_5channelz_get_server, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_5channelz_get_server(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_server_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("channelz_get_server (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_server_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_server_id)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 32, __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, "channelz_get_server") < 0)) __PYX_ERR(13, 32, __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_server_id = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("channelz_get_server", 1, 1, 1, __pyx_nargs); __PYX_ERR(13, 32, __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("_cython.cygrpc.channelz_get_server", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_4channelz_get_server(__pyx_self, __pyx_v_server_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_7_cython_6cygrpc_4channelz_get_server(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_server_id) {
+  char *__pyx_v_c_returned_str;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __pyx_t_7_cython_6cygrpc_intptr_t __pyx_t_1;
+  int __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("channelz_get_server", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":33
+ * 
+ * def channelz_get_server(server_id):
+ *     cdef char *c_returned_str = grpc_channelz_get_server(server_id)             # <<<<<<<<<<<<<<
+ *     if c_returned_str == NULL:
+ *         raise ValueError('Failed to get the server, please ensure your' \
+ */
+  __pyx_t_1 = PyInt_AsSsize_t(__pyx_v_server_id); if (unlikely((__pyx_t_1 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(13, 33, __pyx_L1_error)
+  __pyx_v_c_returned_str = grpc_channelz_get_server(__pyx_t_1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":34
+ * def channelz_get_server(server_id):
+ *     cdef char *c_returned_str = grpc_channelz_get_server(server_id)
+ *     if c_returned_str == NULL:             # <<<<<<<<<<<<<<
+ *         raise ValueError('Failed to get the server, please ensure your' \
+ *                          ' server_id==%s is valid' % server_id)
+ */
+  __pyx_t_2 = (__pyx_v_c_returned_str == NULL);
+  if (unlikely(__pyx_t_2)) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":36
+ *     if c_returned_str == NULL:
+ *         raise ValueError('Failed to get the server, please ensure your' \
+ *                          ' server_id==%s is valid' % server_id)             # <<<<<<<<<<<<<<
+ *     return c_returned_str
+ * 
+ */
+    __pyx_t_3 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Failed_to_get_the_server_please, __pyx_v_server_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 36, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":35
+ *     cdef char *c_returned_str = grpc_channelz_get_server(server_id)
+ *     if c_returned_str == NULL:
+ *         raise ValueError('Failed to get the server, please ensure your' \             # <<<<<<<<<<<<<<
+ *                          ' server_id==%s is valid' % server_id)
+ *     return c_returned_str
+ */
+    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 35, __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(13, 35, __pyx_L1_error)
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":34
+ * def channelz_get_server(server_id):
+ *     cdef char *c_returned_str = grpc_channelz_get_server(server_id)
+ *     if c_returned_str == NULL:             # <<<<<<<<<<<<<<
+ *         raise ValueError('Failed to get the server, please ensure your' \
+ *                          ' server_id==%s is valid' % server_id)
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":37
+ *         raise ValueError('Failed to get the server, please ensure your' \
+ *                          ' server_id==%s is valid' % server_id)
+ *     return c_returned_str             # <<<<<<<<<<<<<<
+ * 
+ * def channelz_get_server_sockets(server_id, start_socket_id, max_results):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_4 = __Pyx_PyBytes_FromString(__pyx_v_c_returned_str); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 37, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_r = __pyx_t_4;
+  __pyx_t_4 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":32
+ *     return c_returned_str
+ * 
+ * def channelz_get_server(server_id):             # <<<<<<<<<<<<<<
+ *     cdef char *c_returned_str = grpc_channelz_get_server(server_id)
+ *     if c_returned_str == NULL:
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("_cython.cygrpc.channelz_get_server", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":39
+ *     return c_returned_str
+ * 
+ * def channelz_get_server_sockets(server_id, start_socket_id, max_results):             # <<<<<<<<<<<<<<
+ *     cdef char *c_returned_str = grpc_channelz_get_server_sockets(
+ *         server_id,
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_7channelz_get_server_sockets(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_7channelz_get_server_sockets = {"channelz_get_server_sockets", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_7channelz_get_server_sockets, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_7channelz_get_server_sockets(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_server_id = 0;
+  PyObject *__pyx_v_start_socket_id = 0;
+  PyObject *__pyx_v_max_results = 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("channelz_get_server_sockets (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_server_id,&__pyx_n_s_start_socket_id,&__pyx_n_s_max_results,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_server_id)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 39, __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_start_socket_id)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 39, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("channelz_get_server_sockets", 1, 3, 3, 1); __PYX_ERR(13, 39, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_max_results)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 39, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("channelz_get_server_sockets", 1, 3, 3, 2); __PYX_ERR(13, 39, __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, "channelz_get_server_sockets") < 0)) __PYX_ERR(13, 39, __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_server_id = values[0];
+    __pyx_v_start_socket_id = values[1];
+    __pyx_v_max_results = values[2];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("channelz_get_server_sockets", 1, 3, 3, __pyx_nargs); __PYX_ERR(13, 39, __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("_cython.cygrpc.channelz_get_server_sockets", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_6channelz_get_server_sockets(__pyx_self, __pyx_v_server_id, __pyx_v_start_socket_id, __pyx_v_max_results);
+
+  /* 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_7_cython_6cygrpc_6channelz_get_server_sockets(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_server_id, PyObject *__pyx_v_start_socket_id, PyObject *__pyx_v_max_results) {
+  char *__pyx_v_c_returned_str;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __pyx_t_7_cython_6cygrpc_intptr_t __pyx_t_1;
+  __pyx_t_7_cython_6cygrpc_intptr_t __pyx_t_2;
+  __pyx_t_7_cython_6cygrpc_intptr_t __pyx_t_3;
+  int __pyx_t_4;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("channelz_get_server_sockets", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":41
+ * def channelz_get_server_sockets(server_id, start_socket_id, max_results):
+ *     cdef char *c_returned_str = grpc_channelz_get_server_sockets(
+ *         server_id,             # <<<<<<<<<<<<<<
+ *         start_socket_id,
+ *         max_results,
+ */
+  __pyx_t_1 = PyInt_AsSsize_t(__pyx_v_server_id); if (unlikely((__pyx_t_1 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(13, 41, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":42
+ *     cdef char *c_returned_str = grpc_channelz_get_server_sockets(
+ *         server_id,
+ *         start_socket_id,             # <<<<<<<<<<<<<<
+ *         max_results,
+ *     )
+ */
+  __pyx_t_2 = PyInt_AsSsize_t(__pyx_v_start_socket_id); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(13, 42, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":43
+ *         server_id,
+ *         start_socket_id,
+ *         max_results,             # <<<<<<<<<<<<<<
+ *     )
+ *     if c_returned_str == NULL:
+ */
+  __pyx_t_3 = PyInt_AsSsize_t(__pyx_v_max_results); if (unlikely((__pyx_t_3 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(13, 43, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":40
+ * 
+ * def channelz_get_server_sockets(server_id, start_socket_id, max_results):
+ *     cdef char *c_returned_str = grpc_channelz_get_server_sockets(             # <<<<<<<<<<<<<<
+ *         server_id,
+ *         start_socket_id,
+ */
+  __pyx_v_c_returned_str = grpc_channelz_get_server_sockets(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":45
+ *         max_results,
+ *     )
+ *     if c_returned_str == NULL:             # <<<<<<<<<<<<<<
+ *         raise ValueError('Failed to get server sockets, please ensure your' \
+ *                          ' server_id==%s and start_socket_id==%s and' \
+ */
+  __pyx_t_4 = (__pyx_v_c_returned_str == NULL);
+  if (unlikely(__pyx_t_4)) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":49
+ *                          ' server_id==%s and start_socket_id==%s and' \
+ *                          ' max_results==%s is valid' %
+ *                          (server_id, start_socket_id, max_results))             # <<<<<<<<<<<<<<
+ *     return c_returned_str
+ * 
+ */
+    __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 49, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_INCREF(__pyx_v_server_id);
+    __Pyx_GIVEREF(__pyx_v_server_id);
+    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_server_id)) __PYX_ERR(13, 49, __pyx_L1_error);
+    __Pyx_INCREF(__pyx_v_start_socket_id);
+    __Pyx_GIVEREF(__pyx_v_start_socket_id);
+    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_start_socket_id)) __PYX_ERR(13, 49, __pyx_L1_error);
+    __Pyx_INCREF(__pyx_v_max_results);
+    __Pyx_GIVEREF(__pyx_v_max_results);
+    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_max_results)) __PYX_ERR(13, 49, __pyx_L1_error);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":48
+ *         raise ValueError('Failed to get server sockets, please ensure your' \
+ *                          ' server_id==%s and start_socket_id==%s and' \
+ *                          ' max_results==%s is valid' %             # <<<<<<<<<<<<<<
+ *                          (server_id, start_socket_id, max_results))
+ *     return c_returned_str
+ */
+    __pyx_t_6 = __Pyx_PyString_Format(__pyx_kp_s_Failed_to_get_server_sockets_ple, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(13, 48, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_6);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":46
+ *     )
+ *     if c_returned_str == NULL:
+ *         raise ValueError('Failed to get server sockets, please ensure your' \             # <<<<<<<<<<<<<<
+ *                          ' server_id==%s and start_socket_id==%s and' \
+ *                          ' max_results==%s is valid' %
+ */
+    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 46, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+    __Pyx_Raise(__pyx_t_5, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __PYX_ERR(13, 46, __pyx_L1_error)
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":45
+ *         max_results,
+ *     )
+ *     if c_returned_str == NULL:             # <<<<<<<<<<<<<<
+ *         raise ValueError('Failed to get server sockets, please ensure your' \
+ *                          ' server_id==%s and start_socket_id==%s and' \
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":50
+ *                          ' max_results==%s is valid' %
+ *                          (server_id, start_socket_id, max_results))
+ *     return c_returned_str             # <<<<<<<<<<<<<<
+ * 
+ * def channelz_get_channel(channel_id):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = __Pyx_PyBytes_FromString(__pyx_v_c_returned_str); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 50, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_r = __pyx_t_5;
+  __pyx_t_5 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":39
+ *     return c_returned_str
+ * 
+ * def channelz_get_server_sockets(server_id, start_socket_id, max_results):             # <<<<<<<<<<<<<<
+ *     cdef char *c_returned_str = grpc_channelz_get_server_sockets(
+ *         server_id,
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("_cython.cygrpc.channelz_get_server_sockets", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":52
+ *     return c_returned_str
+ * 
+ * def channelz_get_channel(channel_id):             # <<<<<<<<<<<<<<
+ *     cdef char *c_returned_str = grpc_channelz_get_channel(channel_id)
+ *     if c_returned_str == NULL:
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_9channelz_get_channel(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_9channelz_get_channel = {"channelz_get_channel", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_9channelz_get_channel, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_9channelz_get_channel(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_channel_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("channelz_get_channel (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_channel_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_channel_id)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 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, "channelz_get_channel") < 0)) __PYX_ERR(13, 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_channel_id = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("channelz_get_channel", 1, 1, 1, __pyx_nargs); __PYX_ERR(13, 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("_cython.cygrpc.channelz_get_channel", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_8channelz_get_channel(__pyx_self, __pyx_v_channel_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_7_cython_6cygrpc_8channelz_get_channel(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_channel_id) {
+  char *__pyx_v_c_returned_str;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __pyx_t_7_cython_6cygrpc_intptr_t __pyx_t_1;
+  int __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("channelz_get_channel", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":53
+ * 
+ * def channelz_get_channel(channel_id):
+ *     cdef char *c_returned_str = grpc_channelz_get_channel(channel_id)             # <<<<<<<<<<<<<<
+ *     if c_returned_str == NULL:
+ *         raise ValueError('Failed to get the channel, please ensure your' \
+ */
+  __pyx_t_1 = PyInt_AsSsize_t(__pyx_v_channel_id); if (unlikely((__pyx_t_1 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(13, 53, __pyx_L1_error)
+  __pyx_v_c_returned_str = grpc_channelz_get_channel(__pyx_t_1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":54
+ * def channelz_get_channel(channel_id):
+ *     cdef char *c_returned_str = grpc_channelz_get_channel(channel_id)
+ *     if c_returned_str == NULL:             # <<<<<<<<<<<<<<
+ *         raise ValueError('Failed to get the channel, please ensure your' \
+ *                          ' channel_id==%s is valid' % (channel_id))
+ */
+  __pyx_t_2 = (__pyx_v_c_returned_str == NULL);
+  if (unlikely(__pyx_t_2)) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":56
+ *     if c_returned_str == NULL:
+ *         raise ValueError('Failed to get the channel, please ensure your' \
+ *                          ' channel_id==%s is valid' % (channel_id))             # <<<<<<<<<<<<<<
+ *     return c_returned_str
+ * 
+ */
+    __pyx_t_3 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Failed_to_get_the_channel_please, __pyx_v_channel_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 56, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":55
+ *     cdef char *c_returned_str = grpc_channelz_get_channel(channel_id)
+ *     if c_returned_str == NULL:
+ *         raise ValueError('Failed to get the channel, please ensure your' \             # <<<<<<<<<<<<<<
+ *                          ' channel_id==%s is valid' % (channel_id))
+ *     return c_returned_str
+ */
+    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 55, __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(13, 55, __pyx_L1_error)
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":54
+ * def channelz_get_channel(channel_id):
+ *     cdef char *c_returned_str = grpc_channelz_get_channel(channel_id)
+ *     if c_returned_str == NULL:             # <<<<<<<<<<<<<<
+ *         raise ValueError('Failed to get the channel, please ensure your' \
+ *                          ' channel_id==%s is valid' % (channel_id))
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":57
+ *         raise ValueError('Failed to get the channel, please ensure your' \
+ *                          ' channel_id==%s is valid' % (channel_id))
+ *     return c_returned_str             # <<<<<<<<<<<<<<
+ * 
+ * def channelz_get_subchannel(subchannel_id):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_4 = __Pyx_PyBytes_FromString(__pyx_v_c_returned_str); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 57, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_r = __pyx_t_4;
+  __pyx_t_4 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":52
+ *     return c_returned_str
+ * 
+ * def channelz_get_channel(channel_id):             # <<<<<<<<<<<<<<
+ *     cdef char *c_returned_str = grpc_channelz_get_channel(channel_id)
+ *     if c_returned_str == NULL:
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("_cython.cygrpc.channelz_get_channel", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":59
+ *     return c_returned_str
+ * 
+ * def channelz_get_subchannel(subchannel_id):             # <<<<<<<<<<<<<<
+ *     cdef char *c_returned_str = grpc_channelz_get_subchannel(subchannel_id)
+ *     if c_returned_str == NULL:
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_11channelz_get_subchannel(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_11channelz_get_subchannel = {"channelz_get_subchannel", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_11channelz_get_subchannel, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_11channelz_get_subchannel(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_subchannel_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("channelz_get_subchannel (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_subchannel_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_subchannel_id)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 59, __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, "channelz_get_subchannel") < 0)) __PYX_ERR(13, 59, __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_subchannel_id = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("channelz_get_subchannel", 1, 1, 1, __pyx_nargs); __PYX_ERR(13, 59, __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("_cython.cygrpc.channelz_get_subchannel", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_10channelz_get_subchannel(__pyx_self, __pyx_v_subchannel_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_7_cython_6cygrpc_10channelz_get_subchannel(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_subchannel_id) {
+  char *__pyx_v_c_returned_str;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __pyx_t_7_cython_6cygrpc_intptr_t __pyx_t_1;
+  int __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("channelz_get_subchannel", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":60
+ * 
+ * def channelz_get_subchannel(subchannel_id):
+ *     cdef char *c_returned_str = grpc_channelz_get_subchannel(subchannel_id)             # <<<<<<<<<<<<<<
+ *     if c_returned_str == NULL:
+ *         raise ValueError('Failed to get the subchannel, please ensure your' \
+ */
+  __pyx_t_1 = PyInt_AsSsize_t(__pyx_v_subchannel_id); if (unlikely((__pyx_t_1 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(13, 60, __pyx_L1_error)
+  __pyx_v_c_returned_str = grpc_channelz_get_subchannel(__pyx_t_1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":61
+ * def channelz_get_subchannel(subchannel_id):
+ *     cdef char *c_returned_str = grpc_channelz_get_subchannel(subchannel_id)
+ *     if c_returned_str == NULL:             # <<<<<<<<<<<<<<
+ *         raise ValueError('Failed to get the subchannel, please ensure your' \
+ *                          ' subchannel_id==%s is valid' % (subchannel_id))
+ */
+  __pyx_t_2 = (__pyx_v_c_returned_str == NULL);
+  if (unlikely(__pyx_t_2)) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":63
+ *     if c_returned_str == NULL:
+ *         raise ValueError('Failed to get the subchannel, please ensure your' \
+ *                          ' subchannel_id==%s is valid' % (subchannel_id))             # <<<<<<<<<<<<<<
+ *     return c_returned_str
+ * 
+ */
+    __pyx_t_3 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Failed_to_get_the_subchannel_ple, __pyx_v_subchannel_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 63, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":62
+ *     cdef char *c_returned_str = grpc_channelz_get_subchannel(subchannel_id)
+ *     if c_returned_str == NULL:
+ *         raise ValueError('Failed to get the subchannel, please ensure your' \             # <<<<<<<<<<<<<<
+ *                          ' subchannel_id==%s is valid' % (subchannel_id))
+ *     return c_returned_str
+ */
+    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 62, __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(13, 62, __pyx_L1_error)
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":61
+ * def channelz_get_subchannel(subchannel_id):
+ *     cdef char *c_returned_str = grpc_channelz_get_subchannel(subchannel_id)
+ *     if c_returned_str == NULL:             # <<<<<<<<<<<<<<
+ *         raise ValueError('Failed to get the subchannel, please ensure your' \
+ *                          ' subchannel_id==%s is valid' % (subchannel_id))
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":64
+ *         raise ValueError('Failed to get the subchannel, please ensure your' \
+ *                          ' subchannel_id==%s is valid' % (subchannel_id))
+ *     return c_returned_str             # <<<<<<<<<<<<<<
+ * 
+ * def channelz_get_socket(socket_id):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_4 = __Pyx_PyBytes_FromString(__pyx_v_c_returned_str); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 64, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_r = __pyx_t_4;
+  __pyx_t_4 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":59
+ *     return c_returned_str
+ * 
+ * def channelz_get_subchannel(subchannel_id):             # <<<<<<<<<<<<<<
+ *     cdef char *c_returned_str = grpc_channelz_get_subchannel(subchannel_id)
+ *     if c_returned_str == NULL:
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("_cython.cygrpc.channelz_get_subchannel", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":66
+ *     return c_returned_str
+ * 
+ * def channelz_get_socket(socket_id):             # <<<<<<<<<<<<<<
+ *     cdef char *c_returned_str = grpc_channelz_get_socket(socket_id)
+ *     if c_returned_str == NULL:
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_13channelz_get_socket(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_13channelz_get_socket = {"channelz_get_socket", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_13channelz_get_socket, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_13channelz_get_socket(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_socket_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("channelz_get_socket (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_socket_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_socket_id)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 66, __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, "channelz_get_socket") < 0)) __PYX_ERR(13, 66, __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_socket_id = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("channelz_get_socket", 1, 1, 1, __pyx_nargs); __PYX_ERR(13, 66, __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("_cython.cygrpc.channelz_get_socket", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_12channelz_get_socket(__pyx_self, __pyx_v_socket_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_7_cython_6cygrpc_12channelz_get_socket(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_socket_id) {
+  char *__pyx_v_c_returned_str;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __pyx_t_7_cython_6cygrpc_intptr_t __pyx_t_1;
+  int __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("channelz_get_socket", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":67
+ * 
+ * def channelz_get_socket(socket_id):
+ *     cdef char *c_returned_str = grpc_channelz_get_socket(socket_id)             # <<<<<<<<<<<<<<
+ *     if c_returned_str == NULL:
+ *         raise ValueError('Failed to get the socket, please ensure your' \
+ */
+  __pyx_t_1 = PyInt_AsSsize_t(__pyx_v_socket_id); if (unlikely((__pyx_t_1 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(13, 67, __pyx_L1_error)
+  __pyx_v_c_returned_str = grpc_channelz_get_socket(__pyx_t_1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":68
+ * def channelz_get_socket(socket_id):
+ *     cdef char *c_returned_str = grpc_channelz_get_socket(socket_id)
+ *     if c_returned_str == NULL:             # <<<<<<<<<<<<<<
+ *         raise ValueError('Failed to get the socket, please ensure your' \
+ *                          ' socket_id==%s is valid' % (socket_id))
+ */
+  __pyx_t_2 = (__pyx_v_c_returned_str == NULL);
+  if (unlikely(__pyx_t_2)) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":70
+ *     if c_returned_str == NULL:
+ *         raise ValueError('Failed to get the socket, please ensure your' \
+ *                          ' socket_id==%s is valid' % (socket_id))             # <<<<<<<<<<<<<<
+ *     return c_returned_str
+ */
+    __pyx_t_3 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Failed_to_get_the_socket_please, __pyx_v_socket_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 70, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":69
+ *     cdef char *c_returned_str = grpc_channelz_get_socket(socket_id)
+ *     if c_returned_str == NULL:
+ *         raise ValueError('Failed to get the socket, please ensure your' \             # <<<<<<<<<<<<<<
+ *                          ' socket_id==%s is valid' % (socket_id))
+ *     return c_returned_str
+ */
+    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 69, __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(13, 69, __pyx_L1_error)
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":68
+ * def channelz_get_socket(socket_id):
+ *     cdef char *c_returned_str = grpc_channelz_get_socket(socket_id)
+ *     if c_returned_str == NULL:             # <<<<<<<<<<<<<<
+ *         raise ValueError('Failed to get the socket, please ensure your' \
+ *                          ' socket_id==%s is valid' % (socket_id))
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":71
+ *         raise ValueError('Failed to get the socket, please ensure your' \
+ *                          ' socket_id==%s is valid' % (socket_id))
+ *     return c_returned_str             # <<<<<<<<<<<<<<
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_4 = __Pyx_PyBytes_FromString(__pyx_v_c_returned_str); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 71, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_r = __pyx_t_4;
+  __pyx_t_4 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":66
+ *     return c_returned_str
+ * 
+ * def channelz_get_socket(socket_id):             # <<<<<<<<<<<<<<
+ *     cdef char *c_returned_str = grpc_channelz_get_socket(socket_id)
+ *     if c_returned_str == NULL:
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("_cython.cygrpc.channelz_get_socket", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/csds.pyx.pxi":16
+ * 
+ * 
+ * def dump_xds_configs():             # <<<<<<<<<<<<<<
+ *     cdef grpc_slice client_config_in_slice
+ *     with nogil:
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_15dump_xds_configs(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_15dump_xds_configs = {"dump_xds_configs", (PyCFunction)__pyx_pw_7_cython_6cygrpc_15dump_xds_configs, METH_NOARGS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_15dump_xds_configs(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("dump_xds_configs (wrapper)", 0);
+  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_14dump_xds_configs(__pyx_self);
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_14dump_xds_configs(CYTHON_UNUSED PyObject *__pyx_self) {
+  grpc_slice __pyx_v_client_config_in_slice;
+  PyObject *__pyx_v_result = 0;
+  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("dump_xds_configs", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/csds.pyx.pxi":18
+ * def dump_xds_configs():
+ *     cdef grpc_slice client_config_in_slice
+ *     with nogil:             # <<<<<<<<<<<<<<
+ *         client_config_in_slice = grpc_dump_xds_configs()
+ *     cdef bytes result = _slice_bytes(client_config_in_slice)
+ */
+  {
+      #ifdef WITH_THREAD
+      PyThreadState *_save;
+      _save = NULL;
+      Py_UNBLOCK_THREADS
+      __Pyx_FastGIL_Remember();
+      #endif
+      /*try:*/ {
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/csds.pyx.pxi":19
+ *     cdef grpc_slice client_config_in_slice
+ *     with nogil:
+ *         client_config_in_slice = grpc_dump_xds_configs()             # <<<<<<<<<<<<<<
+ *     cdef bytes result = _slice_bytes(client_config_in_slice)
+ *     return result
+ */
+        __pyx_v_client_config_in_slice = grpc_dump_xds_configs();
+      }
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/csds.pyx.pxi":18
+ * def dump_xds_configs():
+ *     cdef grpc_slice client_config_in_slice
+ *     with nogil:             # <<<<<<<<<<<<<<
+ *         client_config_in_slice = grpc_dump_xds_configs()
+ *     cdef bytes result = _slice_bytes(client_config_in_slice)
+ */
+      /*finally:*/ {
+        /*normal exit:*/{
+          #ifdef WITH_THREAD
+          __Pyx_FastGIL_Forget();
+          Py_BLOCK_THREADS
+          #endif
+          goto __pyx_L5;
+        }
+        __pyx_L5:;
+      }
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/csds.pyx.pxi":20
+ *     with nogil:
+ *         client_config_in_slice = grpc_dump_xds_configs()
+ *     cdef bytes result = _slice_bytes(client_config_in_slice)             # <<<<<<<<<<<<<<
+ *     return result
+ */
+  __pyx_t_1 = __pyx_f_7_cython_6cygrpc__slice_bytes(__pyx_v_client_config_in_slice); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 20, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_result = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/csds.pyx.pxi":21
+ *         client_config_in_slice = grpc_dump_xds_configs()
+ *     cdef bytes result = _slice_bytes(client_config_in_slice)
+ *     return result             # <<<<<<<<<<<<<<
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_result);
+  __pyx_r = __pyx_v_result;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/csds.pyx.pxi":16
+ * 
+ * 
+ * def dump_xds_configs():             # <<<<<<<<<<<<<<
+ *     cdef grpc_slice client_config_in_slice
+ *     with nogil:
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.dump_xds_configs", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_result);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":16
+ * 
+ * 
+ * def _spawn_callback_in_thread(cb_func, args):             # <<<<<<<<<<<<<<
+ *   t = ForkManagedThread(target=cb_func, args=args)
+ *   t.setDaemon(True)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_17_spawn_callback_in_thread(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_17_spawn_callback_in_thread = {"_spawn_callback_in_thread", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_17_spawn_callback_in_thread, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_17_spawn_callback_in_thread(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_cb_func = 0;
+  PyObject *__pyx_v_args = 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("_spawn_callback_in_thread (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_cb_func,&__pyx_n_s_args,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_cb_func)) != 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;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_args)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 16, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("_spawn_callback_in_thread", 1, 2, 2, 1); __PYX_ERR(5, 16, __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, "_spawn_callback_in_thread") < 0)) __PYX_ERR(5, 16, __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_cb_func = values[0];
+    __pyx_v_args = values[1];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("_spawn_callback_in_thread", 1, 2, 2, __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("_cython.cygrpc._spawn_callback_in_thread", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_16_spawn_callback_in_thread(__pyx_self, __pyx_v_cb_func, __pyx_v_args);
+
+  /* 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_7_cython_6cygrpc_16_spawn_callback_in_thread(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_cb_func, PyObject *__pyx_v_args) {
+  PyObject *__pyx_v_t = 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_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_spawn_callback_in_thread", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":17
+ * 
+ * def _spawn_callback_in_thread(cb_func, args):
+ *   t = ForkManagedThread(target=cb_func, args=args)             # <<<<<<<<<<<<<<
+ *   t.setDaemon(True)
+ *   t.start()
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_ForkManagedThread); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 17, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 17, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_target, __pyx_v_cb_func) < 0) __PYX_ERR(5, 17, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_args, __pyx_v_args) < 0) __PYX_ERR(5, 17, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 17, __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_v_t = __pyx_t_3;
+  __pyx_t_3 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":18
+ * def _spawn_callback_in_thread(cb_func, args):
+ *   t = ForkManagedThread(target=cb_func, args=args)
+ *   t.setDaemon(True)             # <<<<<<<<<<<<<<
+ *   t.start()
+ * 
+ */
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_t, __pyx_n_s_setDaemon); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 18, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_1 = NULL;
+  __pyx_t_4 = 0;
+  #if CYTHON_UNPACK_METHODS
+  if (likely(PyMethod_Check(__pyx_t_2))) {
+    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
+    if (likely(__pyx_t_1)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_1);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
+      __pyx_t_4 = 1;
+    }
+  }
+  #endif
+  {
+    PyObject *__pyx_callargs[2] = {__pyx_t_1, Py_True};
+    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+    if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 18, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  }
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":19
+ *   t = ForkManagedThread(target=cb_func, args=args)
+ *   t.setDaemon(True)
+ *   t.start()             # <<<<<<<<<<<<<<
+ * 
+ * async_callback_func = _spawn_callback_in_thread
+ */
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_t, __pyx_n_s_start); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 19, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_1 = NULL;
+  __pyx_t_4 = 0;
+  #if CYTHON_UNPACK_METHODS
+  if (likely(PyMethod_Check(__pyx_t_2))) {
+    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
+    if (likely(__pyx_t_1)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_1);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
+      __pyx_t_4 = 1;
+    }
+  }
+  #endif
+  {
+    PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL};
+    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+    if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 19, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  }
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":16
+ * 
+ * 
+ * def _spawn_callback_in_thread(cb_func, args):             # <<<<<<<<<<<<<<
+ *   t = ForkManagedThread(target=cb_func, args=args)
+ *   t.setDaemon(True)
+ */
+
+  /* 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("_cython.cygrpc._spawn_callback_in_thread", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_t);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":23
+ * async_callback_func = _spawn_callback_in_thread
+ * 
+ * def set_async_callback_func(callback_func):             # <<<<<<<<<<<<<<
+ *   global async_callback_func
+ *   async_callback_func = callback_func
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_19set_async_callback_func(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_19set_async_callback_func = {"set_async_callback_func", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_19set_async_callback_func, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_19set_async_callback_func(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_callback_func = 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("set_async_callback_func (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_callback_func,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_callback_func)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 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, "set_async_callback_func") < 0)) __PYX_ERR(5, 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_callback_func = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("set_async_callback_func", 1, 1, 1, __pyx_nargs); __PYX_ERR(5, 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("_cython.cygrpc.set_async_callback_func", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_18set_async_callback_func(__pyx_self, __pyx_v_callback_func);
+
+  /* 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_7_cython_6cygrpc_18set_async_callback_func(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_callback_func) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_async_callback_func", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":25
+ * def set_async_callback_func(callback_func):
+ *   global async_callback_func
+ *   async_callback_func = callback_func             # <<<<<<<<<<<<<<
+ * 
+ * def _spawn_callback_async(callback, args):
+ */
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_async_callback_func, __pyx_v_callback_func) < 0) __PYX_ERR(5, 25, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":23
+ * async_callback_func = _spawn_callback_in_thread
+ * 
+ * def set_async_callback_func(callback_func):             # <<<<<<<<<<<<<<
+ *   global async_callback_func
+ *   async_callback_func = callback_func
+ */
+
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc.set_async_callback_func", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":27
+ *   async_callback_func = callback_func
+ * 
+ * def _spawn_callback_async(callback, args):             # <<<<<<<<<<<<<<
+ *   async_callback_func(callback, args)
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_21_spawn_callback_async(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_21_spawn_callback_async = {"_spawn_callback_async", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_21_spawn_callback_async, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_21_spawn_callback_async(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_callback = 0;
+  PyObject *__pyx_v_args = 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("_spawn_callback_async (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_callback,&__pyx_n_s_args,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_callback)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 27, __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_args)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 27, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("_spawn_callback_async", 1, 2, 2, 1); __PYX_ERR(5, 27, __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, "_spawn_callback_async") < 0)) __PYX_ERR(5, 27, __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_callback = values[0];
+    __pyx_v_args = values[1];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("_spawn_callback_async", 1, 2, 2, __pyx_nargs); __PYX_ERR(5, 27, __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("_cython.cygrpc._spawn_callback_async", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_20_spawn_callback_async(__pyx_self, __pyx_v_callback, __pyx_v_args);
+
+  /* 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_7_cython_6cygrpc_20_spawn_callback_async(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_callback, PyObject *__pyx_v_args) {
+  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("_spawn_callback_async", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":28
+ * 
+ * def _spawn_callback_async(callback, args):
+ *   async_callback_func(callback, args)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_async_callback_func); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 28, __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[3] = {__pyx_t_3, __pyx_v_callback, __pyx_v_args};
+    __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(5, 28, __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/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":27
+ *   async_callback_func = callback_func
+ * 
+ * def _spawn_callback_async(callback, args):             # <<<<<<<<<<<<<<
+ *   async_callback_func(callback, args)
+ * 
+ */
+
+  /* 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("_cython.cygrpc._spawn_callback_async", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":33
+ * cdef class CallCredentials:
+ * 
+ *   cdef grpc_call_credentials *c(self) except *:             # <<<<<<<<<<<<<<
+ *     raise NotImplementedError()
+ * 
+ */
+
+static grpc_call_credentials *__pyx_f_7_cython_6cygrpc_15CallCredentials_c(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_CallCredentials *__pyx_v_self) {
+  grpc_call_credentials *__pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("c", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":34
+ * 
+ *   cdef grpc_call_credentials *c(self) except *:
+ *     raise NotImplementedError()             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_builtin_NotImplementedError); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 34, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __PYX_ERR(5, 34, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":33
+ * cdef class CallCredentials:
+ * 
+ *   cdef grpc_call_credentials *c(self) except *:             # <<<<<<<<<<<<<<
+ *     raise NotImplementedError()
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.CallCredentials.c", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "(tree fragment)":1
+ * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
+ *     raise TypeError, "self.c_credentials cannot be converted to a Python object for pickling"
+ * def __setstate_cython__(self, __pyx_state):
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_15CallCredentials_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_15CallCredentials_1__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_15CallCredentials_1__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_15CallCredentials_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_7_cython_6cygrpc_15CallCredentials___reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc_CallCredentials *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_15CallCredentials___reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_CallCredentials *__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.c_credentials cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
+ * def __setstate_cython__(self, __pyx_state):
+ *     raise TypeError, "self.c_credentials cannot be converted to a Python object for pickling"
+ */
+  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self_c_credentials_cannot_be_con, 0, 0);
+  __PYX_ERR(10, 2, __pyx_L1_error)
+
+  /* "(tree fragment)":1
+ * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
+ *     raise TypeError, "self.c_credentials cannot be converted to a Python object for pickling"
+ * def __setstate_cython__(self, __pyx_state):
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc.CallCredentials.__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.c_credentials cannot be converted to a Python object for pickling"
+ * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
+ *     raise TypeError, "self.c_credentials cannot be converted to a Python object for pickling"
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_15CallCredentials_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_15CallCredentials_3__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_15CallCredentials_3__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_15CallCredentials_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
+) {
+  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(10, 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(10, 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(10, 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("_cython.cygrpc.CallCredentials.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_15CallCredentials_2__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc_CallCredentials *)__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_7_cython_6cygrpc_15CallCredentials_2__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_CallCredentials *__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.c_credentials cannot be converted to a Python object for pickling"
+ * def __setstate_cython__(self, __pyx_state):
+ *     raise TypeError, "self.c_credentials cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
+ */
+  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self_c_credentials_cannot_be_con, 0, 0);
+  __PYX_ERR(10, 4, __pyx_L1_error)
+
+  /* "(tree fragment)":3
+ * def __reduce_cython__(self):
+ *     raise TypeError, "self.c_credentials cannot be converted to a Python object for pickling"
+ * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
+ *     raise TypeError, "self.c_credentials cannot be converted to a Python object for pickling"
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc.CallCredentials.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":47
+ *   cdef size_t metadata_count
+ *   cdef grpc_metadata *c_metadata
+ *   def callback(metadata, grpc_status_code status, bytes error_details):             # <<<<<<<<<<<<<<
+ *     cdef char* c_error_details = NULL
+ *     if error_details is not None:
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_13_get_metadata_1callback(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_13_get_metadata_1callback = {"callback", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_13_get_metadata_1callback, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_13_get_metadata_1callback(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_metadata = 0;
+  grpc_status_code __pyx_v_status;
+  PyObject *__pyx_v_error_details = 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("callback (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_metadata,&__pyx_n_s_status,&__pyx_n_s_error_details,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_metadata)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 47, __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_status)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 47, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("callback", 1, 3, 3, 1); __PYX_ERR(5, 47, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_error_details)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 47, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("callback", 1, 3, 3, 2); __PYX_ERR(5, 47, __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, "callback") < 0)) __PYX_ERR(5, 47, __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_metadata = values[0];
+    __pyx_v_status = ((grpc_status_code)__Pyx_PyInt_As_grpc_status_code(values[1])); if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 47, __pyx_L3_error)
+    __pyx_v_error_details = ((PyObject*)values[2]);
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("callback", 1, 3, 3, __pyx_nargs); __PYX_ERR(5, 47, __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("_cython.cygrpc._get_metadata.callback", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_error_details), (&PyBytes_Type), 1, "error_details", 1))) __PYX_ERR(5, 47, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_13_get_metadata_callback(__pyx_self, __pyx_v_metadata, __pyx_v_status, __pyx_v_error_details);
+
+  /* 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_7_cython_6cygrpc_13_get_metadata_callback(PyObject *__pyx_self, PyObject *__pyx_v_metadata, grpc_status_code __pyx_v_status, PyObject *__pyx_v_error_details) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata *__pyx_cur_scope;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata *__pyx_outer_scope;
+  char *__pyx_v_c_error_details;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  char *__pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("callback", 1);
+  __pyx_outer_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata *) __Pyx_CyFunction_GetClosure(__pyx_self);
+  __pyx_cur_scope = __pyx_outer_scope;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":48
+ *   cdef grpc_metadata *c_metadata
+ *   def callback(metadata, grpc_status_code status, bytes error_details):
+ *     cdef char* c_error_details = NULL             # <<<<<<<<<<<<<<
+ *     if error_details is not None:
+ *       c_error_details = <char*> error_details
+ */
+  __pyx_v_c_error_details = NULL;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":49
+ *   def callback(metadata, grpc_status_code status, bytes error_details):
+ *     cdef char* c_error_details = NULL
+ *     if error_details is not None:             # <<<<<<<<<<<<<<
+ *       c_error_details = <char*> error_details
+ *     if status == StatusCode.ok:
+ */
+  __pyx_t_1 = (__pyx_v_error_details != ((PyObject*)Py_None));
+  if (__pyx_t_1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":50
+ *     cdef char* c_error_details = NULL
+ *     if error_details is not None:
+ *       c_error_details = <char*> error_details             # <<<<<<<<<<<<<<
+ *     if status == StatusCode.ok:
+ *       _store_c_metadata(metadata, &c_metadata, &metadata_count)
+ */
+    if (unlikely(__pyx_v_error_details == Py_None)) {
+      PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
+      __PYX_ERR(5, 50, __pyx_L1_error)
+    }
+    __pyx_t_2 = __Pyx_PyBytes_AsWritableString(__pyx_v_error_details); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(5, 50, __pyx_L1_error)
+    __pyx_v_c_error_details = ((char *)__pyx_t_2);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":49
+ *   def callback(metadata, grpc_status_code status, bytes error_details):
+ *     cdef char* c_error_details = NULL
+ *     if error_details is not None:             # <<<<<<<<<<<<<<
+ *       c_error_details = <char*> error_details
+ *     if status == StatusCode.ok:
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":51
+ *     if error_details is not None:
+ *       c_error_details = <char*> error_details
+ *     if status == StatusCode.ok:             # <<<<<<<<<<<<<<
+ *       _store_c_metadata(metadata, &c_metadata, &metadata_count)
+ *       with nogil:
+ */
+  __pyx_t_3 = __Pyx_PyInt_From_grpc_status_code(__pyx_v_status); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 51, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_StatusCode); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 51, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_ok); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 51, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 51, __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_4); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(5, 51, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (__pyx_t_1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":52
+ *       c_error_details = <char*> error_details
+ *     if status == StatusCode.ok:
+ *       _store_c_metadata(metadata, &c_metadata, &metadata_count)             # <<<<<<<<<<<<<<
+ *       with nogil:
+ *         cb(user_data, c_metadata, metadata_count, status, NULL)
+ */
+    __pyx_f_7_cython_6cygrpc__store_c_metadata(__pyx_v_metadata, (&__pyx_cur_scope->__pyx_v_c_metadata), (&__pyx_cur_scope->__pyx_v_metadata_count)); if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 52, __pyx_L1_error)
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":53
+ *     if status == StatusCode.ok:
+ *       _store_c_metadata(metadata, &c_metadata, &metadata_count)
+ *       with nogil:             # <<<<<<<<<<<<<<
+ *         cb(user_data, c_metadata, metadata_count, status, NULL)
+ *       _release_c_metadata(c_metadata, metadata_count)
+ */
+    {
+        #ifdef WITH_THREAD
+        PyThreadState *_save;
+        _save = NULL;
+        Py_UNBLOCK_THREADS
+        __Pyx_FastGIL_Remember();
+        #endif
+        /*try:*/ {
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":54
+ *       _store_c_metadata(metadata, &c_metadata, &metadata_count)
+ *       with nogil:
+ *         cb(user_data, c_metadata, metadata_count, status, NULL)             # <<<<<<<<<<<<<<
+ *       _release_c_metadata(c_metadata, metadata_count)
+ *     else:
+ */
+          __pyx_cur_scope->__pyx_v_cb(__pyx_cur_scope->__pyx_v_user_data, __pyx_cur_scope->__pyx_v_c_metadata, __pyx_cur_scope->__pyx_v_metadata_count, __pyx_v_status, NULL);
+        }
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":53
+ *     if status == StatusCode.ok:
+ *       _store_c_metadata(metadata, &c_metadata, &metadata_count)
+ *       with nogil:             # <<<<<<<<<<<<<<
+ *         cb(user_data, c_metadata, metadata_count, status, NULL)
+ *       _release_c_metadata(c_metadata, metadata_count)
+ */
+        /*finally:*/ {
+          /*normal exit:*/{
+            #ifdef WITH_THREAD
+            __Pyx_FastGIL_Forget();
+            Py_BLOCK_THREADS
+            #endif
+            goto __pyx_L7;
+          }
+          __pyx_L7:;
+        }
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":55
+ *       with nogil:
+ *         cb(user_data, c_metadata, metadata_count, status, NULL)
+ *       _release_c_metadata(c_metadata, metadata_count)             # <<<<<<<<<<<<<<
+ *     else:
+ *       with nogil:
+ */
+    __pyx_f_7_cython_6cygrpc__release_c_metadata(__pyx_cur_scope->__pyx_v_c_metadata, __pyx_cur_scope->__pyx_v_metadata_count); if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 55, __pyx_L1_error)
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":51
+ *     if error_details is not None:
+ *       c_error_details = <char*> error_details
+ *     if status == StatusCode.ok:             # <<<<<<<<<<<<<<
+ *       _store_c_metadata(metadata, &c_metadata, &metadata_count)
+ *       with nogil:
+ */
+    goto __pyx_L4;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":57
+ *       _release_c_metadata(c_metadata, metadata_count)
+ *     else:
+ *       with nogil:             # <<<<<<<<<<<<<<
+ *         cb(user_data, NULL, 0, status, c_error_details)
+ *   args = context.service_url, context.method_name, callback,
+ */
+  /*else*/ {
+    {
+        #ifdef WITH_THREAD
+        PyThreadState *_save;
+        _save = NULL;
+        Py_UNBLOCK_THREADS
+        __Pyx_FastGIL_Remember();
+        #endif
+        /*try:*/ {
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":58
+ *     else:
+ *       with nogil:
+ *         cb(user_data, NULL, 0, status, c_error_details)             # <<<<<<<<<<<<<<
+ *   args = context.service_url, context.method_name, callback,
+ *   plugin = <object>state
+ */
+          __pyx_cur_scope->__pyx_v_cb(__pyx_cur_scope->__pyx_v_user_data, NULL, 0, __pyx_v_status, __pyx_v_c_error_details);
+        }
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":57
+ *       _release_c_metadata(c_metadata, metadata_count)
+ *     else:
+ *       with nogil:             # <<<<<<<<<<<<<<
+ *         cb(user_data, NULL, 0, status, c_error_details)
+ *   args = context.service_url, context.method_name, callback,
+ */
+        /*finally:*/ {
+          /*normal exit:*/{
+            #ifdef WITH_THREAD
+            __Pyx_FastGIL_Forget();
+            Py_BLOCK_THREADS
+            #endif
+            goto __pyx_L10;
+          }
+          __pyx_L10:;
+        }
+    }
+  }
+  __pyx_L4:;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":47
+ *   cdef size_t metadata_count
+ *   cdef grpc_metadata *c_metadata
+ *   def callback(metadata, grpc_status_code status, bytes error_details):             # <<<<<<<<<<<<<<
+ *     cdef char* c_error_details = NULL
+ *     if error_details is not None:
+ */
+
+  /* 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_AddTraceback("_cython.cygrpc._get_metadata.callback", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":37
+ * 
+ * 
+ * cdef int _get_metadata(void *state,             # <<<<<<<<<<<<<<
+ *                        grpc_auth_metadata_context context,
+ *                        grpc_credentials_plugin_metadata_cb cb,
+ */
+
+static int __pyx_f_7_cython_6cygrpc__get_metadata(void *__pyx_v_state, grpc_auth_metadata_context __pyx_v_context, grpc_credentials_plugin_metadata_cb __pyx_v_cb, void *__pyx_v_user_data, CYTHON_UNUSED grpc_metadata *__pyx_v_creds_md, CYTHON_UNUSED size_t *__pyx_v_num_creds_md, CYTHON_UNUSED grpc_status_code *__pyx_v_status, CYTHON_UNUSED char const **__pyx_v_error_details) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata *__pyx_cur_scope;
+  PyObject *__pyx_v_callback = 0;
+  PyObject *__pyx_v_args = NULL;
+  PyObject *__pyx_v_plugin = NULL;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  int __pyx_t_4;
+  PyObject *__pyx_t_5 = NULL;
+  unsigned int __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("_get_metadata", 0);
+  __pyx_cur_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata, __pyx_empty_tuple, NULL);
+  if (unlikely(!__pyx_cur_scope)) {
+    __pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata *)Py_None);
+    __Pyx_INCREF(Py_None);
+    __PYX_ERR(5, 37, __pyx_L1_error)
+  } else {
+    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+  }
+  __pyx_cur_scope->__pyx_v_cb = __pyx_v_cb;
+  __pyx_cur_scope->__pyx_v_user_data = __pyx_v_user_data;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":47
+ *   cdef size_t metadata_count
+ *   cdef grpc_metadata *c_metadata
+ *   def callback(metadata, grpc_status_code status, bytes error_details):             # <<<<<<<<<<<<<<
+ *     cdef char* c_error_details = NULL
+ *     if error_details is not None:
+ */
+  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_13_get_metadata_1callback, 0, __pyx_n_s_get_metadata_locals_callback, ((PyObject*)__pyx_cur_scope), __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__22)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 47, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_callback = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":59
+ *       with nogil:
+ *         cb(user_data, NULL, 0, status, c_error_details)
+ *   args = context.service_url, context.method_name, callback,             # <<<<<<<<<<<<<<
+ *   plugin = <object>state
+ *   if plugin._stored_ctx is not None:
+ */
+  __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_context.service_url); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 59, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_context.method_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 59, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 59, __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, 59, __pyx_L1_error);
+  __Pyx_GIVEREF(__pyx_t_2);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2)) __PYX_ERR(5, 59, __pyx_L1_error);
+  __Pyx_INCREF(__pyx_v_callback);
+  __Pyx_GIVEREF(__pyx_v_callback);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_callback)) __PYX_ERR(5, 59, __pyx_L1_error);
+  __pyx_t_1 = 0;
+  __pyx_t_2 = 0;
+  __pyx_v_args = ((PyObject*)__pyx_t_3);
+  __pyx_t_3 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":60
+ *         cb(user_data, NULL, 0, status, c_error_details)
+ *   args = context.service_url, context.method_name, callback,
+ *   plugin = <object>state             # <<<<<<<<<<<<<<
+ *   if plugin._stored_ctx is not None:
+ *     plugin._stored_ctx.copy().run(_spawn_callback_async, plugin, args)
+ */
+  __pyx_t_3 = ((PyObject *)__pyx_v_state);
+  __Pyx_INCREF(__pyx_t_3);
+  __pyx_v_plugin = __pyx_t_3;
+  __pyx_t_3 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":61
+ *   args = context.service_url, context.method_name, callback,
+ *   plugin = <object>state
+ *   if plugin._stored_ctx is not None:             # <<<<<<<<<<<<<<
+ *     plugin._stored_ctx.copy().run(_spawn_callback_async, plugin, args)
+ *   else:
+ */
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_plugin, __pyx_n_s_stored_ctx); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 61, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = (__pyx_t_3 != Py_None);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  if (__pyx_t_4) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":62
+ *   plugin = <object>state
+ *   if plugin._stored_ctx is not None:
+ *     plugin._stored_ctx.copy().run(_spawn_callback_async, plugin, args)             # <<<<<<<<<<<<<<
+ *   else:
+ *     _spawn_callback_async(<object>state, args)
+ */
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_plugin, __pyx_n_s_stored_ctx); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 62, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_copy); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 62, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __pyx_t_1 = NULL;
+    __pyx_t_6 = 0;
+    #if CYTHON_UNPACK_METHODS
+    if (likely(PyMethod_Check(__pyx_t_5))) {
+      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5);
+      if (likely(__pyx_t_1)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+        __Pyx_INCREF(__pyx_t_1);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_5, function);
+        __pyx_t_6 = 1;
+      }
+    }
+    #endif
+    {
+      PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL};
+      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
+      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+      if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 62, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    }
+    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_run); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 62, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_spawn_callback_async); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 62, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_1 = NULL;
+    __pyx_t_6 = 0;
+    #if CYTHON_UNPACK_METHODS
+    if (likely(PyMethod_Check(__pyx_t_5))) {
+      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5);
+      if (likely(__pyx_t_1)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+        __Pyx_INCREF(__pyx_t_1);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_5, function);
+        __pyx_t_6 = 1;
+      }
+    }
+    #endif
+    {
+      PyObject *__pyx_callargs[4] = {__pyx_t_1, __pyx_t_2, __pyx_v_plugin, __pyx_v_args};
+      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 3+__pyx_t_6);
+      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 62, __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/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":61
+ *   args = context.service_url, context.method_name, callback,
+ *   plugin = <object>state
+ *   if plugin._stored_ctx is not None:             # <<<<<<<<<<<<<<
+ *     plugin._stored_ctx.copy().run(_spawn_callback_async, plugin, args)
+ *   else:
+ */
+    goto __pyx_L3;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":64
+ *     plugin._stored_ctx.copy().run(_spawn_callback_async, plugin, args)
+ *   else:
+ *     _spawn_callback_async(<object>state, args)             # <<<<<<<<<<<<<<
+ *   return 0  # Asynchronous return
+ * 
+ */
+  /*else*/ {
+    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_spawn_callback_async); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 64, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_2 = NULL;
+    __pyx_t_6 = 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_6 = 1;
+      }
+    }
+    #endif
+    {
+      PyObject *__pyx_callargs[3] = {__pyx_t_2, ((PyObject *)__pyx_v_state), __pyx_v_args};
+      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
+      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+      if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 64, __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;
+  }
+  __pyx_L3:;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":65
+ *   else:
+ *     _spawn_callback_async(<object>state, args)
+ *   return 0  # Asynchronous return             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_r = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":37
+ * 
+ * 
+ * cdef int _get_metadata(void *state,             # <<<<<<<<<<<<<<
+ *                        grpc_auth_metadata_context context,
+ *                        grpc_credentials_plugin_metadata_cb cb,
+ */
+
+  /* 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_5);
+  __Pyx_AddTraceback("_cython.cygrpc._get_metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_callback);
+  __Pyx_XDECREF(__pyx_v_args);
+  __Pyx_XDECREF(__pyx_v_plugin);
+  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+  __Pyx_RefNannyFinishContext();
+  #ifdef WITH_THREAD
+  __Pyx_PyGILState_Release(__pyx_gilstate_save);
+  #endif
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":68
+ * 
+ * 
+ * cdef void _destroy(void *state) except * with gil:             # <<<<<<<<<<<<<<
+ *   cpython.Py_DECREF(<object>state)
+ *   grpc_shutdown()
+ */
+
+static void __pyx_f_7_cython_6cygrpc__destroy(void *__pyx_v_state) {
+  #ifdef WITH_THREAD
+  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
+  #endif
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":69
+ * 
+ * cdef void _destroy(void *state) except * with gil:
+ *   cpython.Py_DECREF(<object>state)             # <<<<<<<<<<<<<<
+ *   grpc_shutdown()
+ * 
+ */
+  Py_DECREF(((PyObject *)__pyx_v_state));
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":70
+ * cdef void _destroy(void *state) except * with gil:
+ *   cpython.Py_DECREF(<object>state)
+ *   grpc_shutdown()             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  grpc_shutdown();
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":68
+ * 
+ * 
+ * cdef void _destroy(void *state) except * with gil:             # <<<<<<<<<<<<<<
+ *   cpython.Py_DECREF(<object>state)
+ *   grpc_shutdown()
+ */
+
+  /* function exit code */
+  #ifdef WITH_THREAD
+  __Pyx_PyGILState_Release(__pyx_gilstate_save);
+  #endif
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":75
+ * cdef class MetadataPluginCallCredentials(CallCredentials):
+ * 
+ *   def __cinit__(self, metadata_plugin, name):             # <<<<<<<<<<<<<<
+ *     self._metadata_plugin = metadata_plugin
+ *     self._name = name
+ */
+
+/* Python wrapper */
+static int __pyx_pw_7_cython_6cygrpc_29MetadataPluginCallCredentials_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_7_cython_6cygrpc_29MetadataPluginCallCredentials_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_metadata_plugin = 0;
+  PyObject *__pyx_v_name = 0;
+  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject* values[2] = {0,0};
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  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);
+  {
+    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_metadata_plugin,&__pyx_n_s_name,0};
+    if (__pyx_kwds) {
+      Py_ssize_t kw_args;
+      switch (__pyx_nargs) {
+        case  2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
+      switch (__pyx_nargs) {
+        case  0:
+        if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_metadata_plugin)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 75, __pyx_L3_error)
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_name)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 75, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, 1); __PYX_ERR(5, 75, __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, "__cinit__") < 0)) __PYX_ERR(5, 75, __pyx_L3_error)
+      }
+    } else if (unlikely(__pyx_nargs != 2)) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+      values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
+    }
+    __pyx_v_metadata_plugin = values[0];
+    __pyx_v_name = values[1];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, __pyx_nargs); __PYX_ERR(5, 75, __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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_AddTraceback("_cython.cygrpc.MetadataPluginCallCredentials.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_29MetadataPluginCallCredentials___cinit__(((struct __pyx_obj_7_cython_6cygrpc_MetadataPluginCallCredentials *)__pyx_v_self), __pyx_v_metadata_plugin, __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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_7_cython_6cygrpc_29MetadataPluginCallCredentials___cinit__(struct __pyx_obj_7_cython_6cygrpc_MetadataPluginCallCredentials *__pyx_v_self, PyObject *__pyx_v_metadata_plugin, PyObject *__pyx_v_name) {
+  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("__cinit__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":76
+ * 
+ *   def __cinit__(self, metadata_plugin, name):
+ *     self._metadata_plugin = metadata_plugin             # <<<<<<<<<<<<<<
+ *     self._name = name
+ * 
+ */
+  __Pyx_INCREF(__pyx_v_metadata_plugin);
+  __Pyx_GIVEREF(__pyx_v_metadata_plugin);
+  __Pyx_GOTREF(__pyx_v_self->_metadata_plugin);
+  __Pyx_DECREF(__pyx_v_self->_metadata_plugin);
+  __pyx_v_self->_metadata_plugin = __pyx_v_metadata_plugin;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":77
+ *   def __cinit__(self, metadata_plugin, name):
+ *     self._metadata_plugin = metadata_plugin
+ *     self._name = name             # <<<<<<<<<<<<<<
+ * 
+ *   cdef grpc_call_credentials *c(self) except *:
+ */
+  if (!(likely(PyBytes_CheckExact(__pyx_v_name))||((__pyx_v_name) == Py_None) || __Pyx_RaiseUnexpectedTypeError("bytes", __pyx_v_name))) __PYX_ERR(5, 77, __pyx_L1_error)
+  __pyx_t_1 = __pyx_v_name;
+  __Pyx_INCREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->_name);
+  __Pyx_DECREF(__pyx_v_self->_name);
+  __pyx_v_self->_name = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":75
+ * cdef class MetadataPluginCallCredentials(CallCredentials):
+ * 
+ *   def __cinit__(self, metadata_plugin, name):             # <<<<<<<<<<<<<<
+ *     self._metadata_plugin = metadata_plugin
+ *     self._name = name
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.MetadataPluginCallCredentials.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":79
+ *     self._name = name
+ * 
+ *   cdef grpc_call_credentials *c(self) except *:             # <<<<<<<<<<<<<<
+ *     cdef grpc_metadata_credentials_plugin c_metadata_plugin
+ *     c_metadata_plugin.get_metadata = _get_metadata
+ */
+
+static grpc_call_credentials *__pyx_f_7_cython_6cygrpc_29MetadataPluginCallCredentials_c(struct __pyx_obj_7_cython_6cygrpc_MetadataPluginCallCredentials *__pyx_v_self) {
+  grpc_metadata_credentials_plugin __pyx_v_c_metadata_plugin;
+  grpc_call_credentials *__pyx_r;
+  __Pyx_RefNannyDeclarations
+  char const *__pyx_t_1;
+  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("c", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":81
+ *   cdef grpc_call_credentials *c(self) except *:
+ *     cdef grpc_metadata_credentials_plugin c_metadata_plugin
+ *     c_metadata_plugin.get_metadata = _get_metadata             # <<<<<<<<<<<<<<
+ *     c_metadata_plugin.destroy = _destroy
+ *     c_metadata_plugin.state = <void *>self._metadata_plugin
+ */
+  __pyx_v_c_metadata_plugin.get_metadata = __pyx_f_7_cython_6cygrpc__get_metadata;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":82
+ *     cdef grpc_metadata_credentials_plugin c_metadata_plugin
+ *     c_metadata_plugin.get_metadata = _get_metadata
+ *     c_metadata_plugin.destroy = _destroy             # <<<<<<<<<<<<<<
+ *     c_metadata_plugin.state = <void *>self._metadata_plugin
+ *     c_metadata_plugin.type = self._name
+ */
+  __pyx_v_c_metadata_plugin.destroy = __pyx_f_7_cython_6cygrpc__destroy;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":83
+ *     c_metadata_plugin.get_metadata = _get_metadata
+ *     c_metadata_plugin.destroy = _destroy
+ *     c_metadata_plugin.state = <void *>self._metadata_plugin             # <<<<<<<<<<<<<<
+ *     c_metadata_plugin.type = self._name
+ *     cpython.Py_INCREF(self._metadata_plugin)
+ */
+  __pyx_v_c_metadata_plugin.state = ((void *)__pyx_v_self->_metadata_plugin);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":84
+ *     c_metadata_plugin.destroy = _destroy
+ *     c_metadata_plugin.state = <void *>self._metadata_plugin
+ *     c_metadata_plugin.type = self._name             # <<<<<<<<<<<<<<
+ *     cpython.Py_INCREF(self._metadata_plugin)
+ *     fork_handlers_and_grpc_init()
+ */
+  if (unlikely(__pyx_v_self->_name == Py_None)) {
+    PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
+    __PYX_ERR(5, 84, __pyx_L1_error)
+  }
+  __pyx_t_1 = __Pyx_PyBytes_AsString(__pyx_v_self->_name); if (unlikely((!__pyx_t_1) && PyErr_Occurred())) __PYX_ERR(5, 84, __pyx_L1_error)
+  __pyx_v_c_metadata_plugin.type = __pyx_t_1;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":85
+ *     c_metadata_plugin.state = <void *>self._metadata_plugin
+ *     c_metadata_plugin.type = self._name
+ *     cpython.Py_INCREF(self._metadata_plugin)             # <<<<<<<<<<<<<<
+ *     fork_handlers_and_grpc_init()
+ *     # TODO(yihuazhang): Expose min_security_level via the Python API so that
+ */
+  __pyx_t_2 = __pyx_v_self->_metadata_plugin;
+  __Pyx_INCREF(__pyx_t_2);
+  Py_INCREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":86
+ *     c_metadata_plugin.type = self._name
+ *     cpython.Py_INCREF(self._metadata_plugin)
+ *     fork_handlers_and_grpc_init()             # <<<<<<<<<<<<<<
+ *     # TODO(yihuazhang): Expose min_security_level via the Python API so that
+ *     # applications can decide what minimum security level their plugins require.
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_fork_handlers_and_grpc_init); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 86, __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, 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(5, 86, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  }
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":89
+ *     # TODO(yihuazhang): Expose min_security_level via the Python API so that
+ *     # applications can decide what minimum security level their plugins require.
+ *     return grpc_metadata_credentials_create_from_plugin(c_metadata_plugin, GRPC_PRIVACY_AND_INTEGRITY, NULL)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_r = grpc_metadata_credentials_create_from_plugin(__pyx_v_c_metadata_plugin, GRPC_PRIVACY_AND_INTEGRITY, NULL);
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":79
+ *     self._name = name
+ * 
+ *   cdef grpc_call_credentials *c(self) except *:             # <<<<<<<<<<<<<<
+ *     cdef grpc_metadata_credentials_plugin c_metadata_plugin
+ *     c_metadata_plugin.get_metadata = _get_metadata
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("_cython.cygrpc.MetadataPluginCallCredentials.c", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pxd.pxi":36
+ * cdef class MetadataPluginCallCredentials(CallCredentials):
+ * 
+ *   cdef readonly object _metadata_plugin             # <<<<<<<<<<<<<<
+ *   cdef readonly bytes _name
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_29MetadataPluginCallCredentials_16_metadata_plugin_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_29MetadataPluginCallCredentials_16_metadata_plugin_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_7_cython_6cygrpc_29MetadataPluginCallCredentials_16_metadata_plugin___get__(((struct __pyx_obj_7_cython_6cygrpc_MetadataPluginCallCredentials *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_29MetadataPluginCallCredentials_16_metadata_plugin___get__(struct __pyx_obj_7_cython_6cygrpc_MetadataPluginCallCredentials *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->_metadata_plugin);
+  __pyx_r = __pyx_v_self->_metadata_plugin;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pxd.pxi":37
+ * 
+ *   cdef readonly object _metadata_plugin
+ *   cdef readonly bytes _name             # <<<<<<<<<<<<<<
+ * 
+ *   cdef grpc_call_credentials *c(self) except *
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_29MetadataPluginCallCredentials_5_name_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_29MetadataPluginCallCredentials_5_name_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_7_cython_6cygrpc_29MetadataPluginCallCredentials_5_name___get__(((struct __pyx_obj_7_cython_6cygrpc_MetadataPluginCallCredentials *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_29MetadataPluginCallCredentials_5_name___get__(struct __pyx_obj_7_cython_6cygrpc_MetadataPluginCallCredentials *__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;
+}
+
+/* "(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_7_cython_6cygrpc_29MetadataPluginCallCredentials_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_29MetadataPluginCallCredentials_3__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_29MetadataPluginCallCredentials_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_29MetadataPluginCallCredentials_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_7_cython_6cygrpc_29MetadataPluginCallCredentials_2__reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc_MetadataPluginCallCredentials *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_29MetadataPluginCallCredentials_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_MetadataPluginCallCredentials *__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(10, 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("_cython.cygrpc.MetadataPluginCallCredentials.__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_7_cython_6cygrpc_29MetadataPluginCallCredentials_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_29MetadataPluginCallCredentials_5__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_29MetadataPluginCallCredentials_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_29MetadataPluginCallCredentials_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(10, 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(10, 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(10, 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("_cython.cygrpc.MetadataPluginCallCredentials.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_29MetadataPluginCallCredentials_4__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc_MetadataPluginCallCredentials *)__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_7_cython_6cygrpc_29MetadataPluginCallCredentials_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_MetadataPluginCallCredentials *__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(10, 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("_cython.cygrpc.MetadataPluginCallCredentials.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":92
+ * 
+ * 
+ * cdef grpc_call_credentials *_composition(call_credentialses):             # <<<<<<<<<<<<<<
+ *   call_credentials_iterator = iter(call_credentialses)
+ *   cdef CallCredentials composition = next(call_credentials_iterator)
+ */
+
+static grpc_call_credentials *__pyx_f_7_cython_6cygrpc__composition(PyObject *__pyx_v_call_credentialses) {
+  PyObject *__pyx_v_call_credentials_iterator = NULL;
+  struct __pyx_obj_7_cython_6cygrpc_CallCredentials *__pyx_v_composition = 0;
+  grpc_call_credentials *__pyx_v_c_composition;
+  struct __pyx_obj_7_cython_6cygrpc_CallCredentials *__pyx_v_additional_call_credentials = 0;
+  grpc_call_credentials *__pyx_v_c_additional_call_credentials;
+  grpc_call_credentials *__pyx_v_c_next_composition;
+  grpc_call_credentials *__pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  grpc_call_credentials *__pyx_t_2;
+  Py_ssize_t __pyx_t_3;
+  PyObject *(*__pyx_t_4)(PyObject *);
+  PyObject *__pyx_t_5 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_composition", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":93
+ * 
+ * cdef grpc_call_credentials *_composition(call_credentialses):
+ *   call_credentials_iterator = iter(call_credentialses)             # <<<<<<<<<<<<<<
+ *   cdef CallCredentials composition = next(call_credentials_iterator)
+ *   cdef grpc_call_credentials *c_composition = composition.c()
+ */
+  __pyx_t_1 = PyObject_GetIter(__pyx_v_call_credentialses); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 93, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_call_credentials_iterator = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":94
+ * cdef grpc_call_credentials *_composition(call_credentialses):
+ *   call_credentials_iterator = iter(call_credentialses)
+ *   cdef CallCredentials composition = next(call_credentials_iterator)             # <<<<<<<<<<<<<<
+ *   cdef grpc_call_credentials *c_composition = composition.c()
+ *   cdef CallCredentials additional_call_credentials
+ */
+  __pyx_t_1 = __Pyx_PyIter_Next(__pyx_v_call_credentials_iterator); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 94, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_7_cython_6cygrpc_CallCredentials))))) __PYX_ERR(5, 94, __pyx_L1_error)
+  __pyx_v_composition = ((struct __pyx_obj_7_cython_6cygrpc_CallCredentials *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":95
+ *   call_credentials_iterator = iter(call_credentialses)
+ *   cdef CallCredentials composition = next(call_credentials_iterator)
+ *   cdef grpc_call_credentials *c_composition = composition.c()             # <<<<<<<<<<<<<<
+ *   cdef CallCredentials additional_call_credentials
+ *   cdef grpc_call_credentials *c_additional_call_credentials
+ */
+  __pyx_t_2 = ((struct __pyx_vtabstruct_7_cython_6cygrpc_CallCredentials *)__pyx_v_composition->__pyx_vtab)->c(__pyx_v_composition); if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 95, __pyx_L1_error)
+  __pyx_v_c_composition = __pyx_t_2;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":99
+ *   cdef grpc_call_credentials *c_additional_call_credentials
+ *   cdef grpc_call_credentials *c_next_composition
+ *   for additional_call_credentials in call_credentials_iterator:             # <<<<<<<<<<<<<<
+ *     c_additional_call_credentials = additional_call_credentials.c()
+ *     c_next_composition = grpc_composite_call_credentials_create(
+ */
+  if (likely(PyList_CheckExact(__pyx_v_call_credentials_iterator)) || PyTuple_CheckExact(__pyx_v_call_credentials_iterator)) {
+    __pyx_t_1 = __pyx_v_call_credentials_iterator; __Pyx_INCREF(__pyx_t_1);
+    __pyx_t_3 = 0;
+    __pyx_t_4 = NULL;
+  } else {
+    __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_call_credentials_iterator); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 99, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_4 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 99, __pyx_L1_error)
+  }
+  for (;;) {
+    if (likely(!__pyx_t_4)) {
+      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, 99, __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_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(5, 99, __pyx_L1_error)
+        #else
+        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 99, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_5);
+        #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, 99, __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_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(5, 99, __pyx_L1_error)
+        #else
+        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 99, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_5);
+        #endif
+      }
+    } else {
+      __pyx_t_5 = __pyx_t_4(__pyx_t_1);
+      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(5, 99, __pyx_L1_error)
+        }
+        break;
+      }
+      __Pyx_GOTREF(__pyx_t_5);
+    }
+    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_7_cython_6cygrpc_CallCredentials))))) __PYX_ERR(5, 99, __pyx_L1_error)
+    __Pyx_XDECREF_SET(__pyx_v_additional_call_credentials, ((struct __pyx_obj_7_cython_6cygrpc_CallCredentials *)__pyx_t_5));
+    __pyx_t_5 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":100
+ *   cdef grpc_call_credentials *c_next_composition
+ *   for additional_call_credentials in call_credentials_iterator:
+ *     c_additional_call_credentials = additional_call_credentials.c()             # <<<<<<<<<<<<<<
+ *     c_next_composition = grpc_composite_call_credentials_create(
+ *         c_composition, c_additional_call_credentials, NULL)
+ */
+    __pyx_t_2 = ((struct __pyx_vtabstruct_7_cython_6cygrpc_CallCredentials *)__pyx_v_additional_call_credentials->__pyx_vtab)->c(__pyx_v_additional_call_credentials); if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 100, __pyx_L1_error)
+    __pyx_v_c_additional_call_credentials = __pyx_t_2;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":101
+ *   for additional_call_credentials in call_credentials_iterator:
+ *     c_additional_call_credentials = additional_call_credentials.c()
+ *     c_next_composition = grpc_composite_call_credentials_create(             # <<<<<<<<<<<<<<
+ *         c_composition, c_additional_call_credentials, NULL)
+ *     grpc_call_credentials_release(c_composition)
+ */
+    __pyx_v_c_next_composition = grpc_composite_call_credentials_create(__pyx_v_c_composition, __pyx_v_c_additional_call_credentials, NULL);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":103
+ *     c_next_composition = grpc_composite_call_credentials_create(
+ *         c_composition, c_additional_call_credentials, NULL)
+ *     grpc_call_credentials_release(c_composition)             # <<<<<<<<<<<<<<
+ *     grpc_call_credentials_release(c_additional_call_credentials)
+ *     c_composition = c_next_composition
+ */
+    grpc_call_credentials_release(__pyx_v_c_composition);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":104
+ *         c_composition, c_additional_call_credentials, NULL)
+ *     grpc_call_credentials_release(c_composition)
+ *     grpc_call_credentials_release(c_additional_call_credentials)             # <<<<<<<<<<<<<<
+ *     c_composition = c_next_composition
+ *   return c_composition
+ */
+    grpc_call_credentials_release(__pyx_v_c_additional_call_credentials);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":105
+ *     grpc_call_credentials_release(c_composition)
+ *     grpc_call_credentials_release(c_additional_call_credentials)
+ *     c_composition = c_next_composition             # <<<<<<<<<<<<<<
+ *   return c_composition
+ * 
+ */
+    __pyx_v_c_composition = __pyx_v_c_next_composition;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":99
+ *   cdef grpc_call_credentials *c_additional_call_credentials
+ *   cdef grpc_call_credentials *c_next_composition
+ *   for additional_call_credentials in call_credentials_iterator:             # <<<<<<<<<<<<<<
+ *     c_additional_call_credentials = additional_call_credentials.c()
+ *     c_next_composition = grpc_composite_call_credentials_create(
+ */
+  }
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":106
+ *     grpc_call_credentials_release(c_additional_call_credentials)
+ *     c_composition = c_next_composition
+ *   return c_composition             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_r = __pyx_v_c_composition;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":92
+ * 
+ * 
+ * cdef grpc_call_credentials *_composition(call_credentialses):             # <<<<<<<<<<<<<<
+ *   call_credentials_iterator = iter(call_credentialses)
+ *   cdef CallCredentials composition = next(call_credentials_iterator)
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_AddTraceback("_cython.cygrpc._composition", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_call_credentials_iterator);
+  __Pyx_XDECREF((PyObject *)__pyx_v_composition);
+  __Pyx_XDECREF((PyObject *)__pyx_v_additional_call_credentials);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":111
+ * cdef class CompositeCallCredentials(CallCredentials):
+ * 
+ *   def __cinit__(self, call_credentialses):             # <<<<<<<<<<<<<<
+ *     self._call_credentialses = call_credentialses
+ * 
+ */
+
+/* Python wrapper */
+static int __pyx_pw_7_cython_6cygrpc_24CompositeCallCredentials_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_7_cython_6cygrpc_24CompositeCallCredentials_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_call_credentialses = 0;
+  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject* values[1] = {0};
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  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);
+  {
+    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_call_credentialses,0};
+    if (__pyx_kwds) {
+      Py_ssize_t kw_args;
+      switch (__pyx_nargs) {
+        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
+      switch (__pyx_nargs) {
+        case  0:
+        if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_call_credentialses)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 111, __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, "__cinit__") < 0)) __PYX_ERR(5, 111, __pyx_L3_error)
+      }
+    } else if (unlikely(__pyx_nargs != 1)) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+    }
+    __pyx_v_call_credentialses = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, __pyx_nargs); __PYX_ERR(5, 111, __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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_AddTraceback("_cython.cygrpc.CompositeCallCredentials.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_24CompositeCallCredentials___cinit__(((struct __pyx_obj_7_cython_6cygrpc_CompositeCallCredentials *)__pyx_v_self), __pyx_v_call_credentialses);
+
+  /* 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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_7_cython_6cygrpc_24CompositeCallCredentials___cinit__(struct __pyx_obj_7_cython_6cygrpc_CompositeCallCredentials *__pyx_v_self, PyObject *__pyx_v_call_credentialses) {
+  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("__cinit__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":112
+ * 
+ *   def __cinit__(self, call_credentialses):
+ *     self._call_credentialses = call_credentialses             # <<<<<<<<<<<<<<
+ * 
+ *   cdef grpc_call_credentials *c(self) except *:
+ */
+  if (!(likely(PyTuple_CheckExact(__pyx_v_call_credentialses))||((__pyx_v_call_credentialses) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v_call_credentialses))) __PYX_ERR(5, 112, __pyx_L1_error)
+  __pyx_t_1 = __pyx_v_call_credentialses;
+  __Pyx_INCREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->_call_credentialses);
+  __Pyx_DECREF(__pyx_v_self->_call_credentialses);
+  __pyx_v_self->_call_credentialses = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":111
+ * cdef class CompositeCallCredentials(CallCredentials):
+ * 
+ *   def __cinit__(self, call_credentialses):             # <<<<<<<<<<<<<<
+ *     self._call_credentialses = call_credentialses
+ * 
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.CompositeCallCredentials.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":114
+ *     self._call_credentialses = call_credentialses
+ * 
+ *   cdef grpc_call_credentials *c(self) except *:             # <<<<<<<<<<<<<<
+ *     return _composition(self._call_credentialses)
+ * 
+ */
+
+static grpc_call_credentials *__pyx_f_7_cython_6cygrpc_24CompositeCallCredentials_c(struct __pyx_obj_7_cython_6cygrpc_CompositeCallCredentials *__pyx_v_self) {
+  grpc_call_credentials *__pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  grpc_call_credentials *__pyx_t_2;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("c", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":115
+ * 
+ *   cdef grpc_call_credentials *c(self) except *:
+ *     return _composition(self._call_credentialses)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = __pyx_v_self->_call_credentialses;
+  __Pyx_INCREF(__pyx_t_1);
+  __pyx_t_2 = __pyx_f_7_cython_6cygrpc__composition(__pyx_t_1); if (unlikely(__pyx_t_2 == ((grpc_call_credentials *)NULL) && PyErr_Occurred())) __PYX_ERR(5, 115, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_r = __pyx_t_2;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":114
+ *     self._call_credentialses = call_credentialses
+ * 
+ *   cdef grpc_call_credentials *c(self) except *:             # <<<<<<<<<<<<<<
+ *     return _composition(self._call_credentialses)
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.CompositeCallCredentials.c", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pxd.pxi":47
+ * cdef class CompositeCallCredentials(CallCredentials):
+ * 
+ *   cdef readonly tuple _call_credentialses             # <<<<<<<<<<<<<<
+ * 
+ *   cdef grpc_call_credentials *c(self) except *
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_24CompositeCallCredentials_19_call_credentialses_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_24CompositeCallCredentials_19_call_credentialses_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_7_cython_6cygrpc_24CompositeCallCredentials_19_call_credentialses___get__(((struct __pyx_obj_7_cython_6cygrpc_CompositeCallCredentials *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_24CompositeCallCredentials_19_call_credentialses___get__(struct __pyx_obj_7_cython_6cygrpc_CompositeCallCredentials *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->_call_credentialses);
+  __pyx_r = __pyx_v_self->_call_credentialses;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __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_7_cython_6cygrpc_24CompositeCallCredentials_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_24CompositeCallCredentials_3__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_24CompositeCallCredentials_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_24CompositeCallCredentials_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_7_cython_6cygrpc_24CompositeCallCredentials_2__reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc_CompositeCallCredentials *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_24CompositeCallCredentials_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_CompositeCallCredentials *__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(10, 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("_cython.cygrpc.CompositeCallCredentials.__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_7_cython_6cygrpc_24CompositeCallCredentials_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_24CompositeCallCredentials_5__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_24CompositeCallCredentials_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_24CompositeCallCredentials_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(10, 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(10, 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(10, 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("_cython.cygrpc.CompositeCallCredentials.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_24CompositeCallCredentials_4__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc_CompositeCallCredentials *)__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_7_cython_6cygrpc_24CompositeCallCredentials_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_CompositeCallCredentials *__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(10, 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("_cython.cygrpc.CompositeCallCredentials.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":120
+ * cdef class ChannelCredentials:
+ * 
+ *   cdef grpc_channel_credentials *c(self) except *:             # <<<<<<<<<<<<<<
+ *     raise NotImplementedError()
+ * 
+ */
+
+static grpc_channel_credentials *__pyx_f_7_cython_6cygrpc_18ChannelCredentials_c(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_ChannelCredentials *__pyx_v_self) {
+  grpc_channel_credentials *__pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("c", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":121
+ * 
+ *   cdef grpc_channel_credentials *c(self) except *:
+ *     raise NotImplementedError()             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_builtin_NotImplementedError); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 121, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __PYX_ERR(5, 121, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":120
+ * cdef class ChannelCredentials:
+ * 
+ *   cdef grpc_channel_credentials *c(self) except *:             # <<<<<<<<<<<<<<
+ *     raise NotImplementedError()
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.ChannelCredentials.c", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __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_7_cython_6cygrpc_18ChannelCredentials_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_18ChannelCredentials_1__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_18ChannelCredentials_1__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_18ChannelCredentials_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_7_cython_6cygrpc_18ChannelCredentials___reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc_ChannelCredentials *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_18ChannelCredentials___reduce_cython__(struct __pyx_obj_7_cython_6cygrpc_ChannelCredentials *__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(10, 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(10, 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(10, 8, __pyx_L1_error);
+    __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 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_ChannelCredentials, (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_ChannelCredentials, (type(self), 0xe3b0c44, None), state
+ *     else:
+ */
+  if (__pyx_v_use_setstate) {
+
+    /* "(tree fragment)":13
+ *         use_setstate = False
+ *     if use_setstate:
+ *         return __pyx_unpickle_ChannelCredentials, (type(self), 0xe3b0c44, None), state             # <<<<<<<<<<<<<<
+ *     else:
+ *         return __pyx_unpickle_ChannelCredentials, (type(self), 0xe3b0c44, state)
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_pyx_unpickle_ChannelCredential); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 13, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 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(10, 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(10, 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(10, 13, __pyx_L1_error);
+    __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 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(10, 13, __pyx_L1_error);
+    __Pyx_GIVEREF(__pyx_t_1);
+    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1)) __PYX_ERR(10, 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(10, 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_ChannelCredentials, (type(self), 0xe3b0c44, None), state
+ *     else:
+ */
+  }
+
+  /* "(tree fragment)":15
+ *         return __pyx_unpickle_ChannelCredentials, (type(self), 0xe3b0c44, None), state
+ *     else:
+ *         return __pyx_unpickle_ChannelCredentials, (type(self), 0xe3b0c44, state)             # <<<<<<<<<<<<<<
+ * def __setstate_cython__(self, __pyx_state):
+ *     __pyx_unpickle_ChannelCredentials__set_state(self, __pyx_state)
+ */
+  /*else*/ {
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_ChannelCredential); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 15, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 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(10, 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(10, 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(10, 15, __pyx_L1_error);
+    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 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(10, 15, __pyx_L1_error);
+    __Pyx_GIVEREF(__pyx_t_1);
+    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1)) __PYX_ERR(10, 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("_cython.cygrpc.ChannelCredentials.__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_ChannelCredentials, (type(self), 0xe3b0c44, state)
+ * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
+ *     __pyx_unpickle_ChannelCredentials__set_state(self, __pyx_state)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_18ChannelCredentials_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_18ChannelCredentials_3__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_18ChannelCredentials_3__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_18ChannelCredentials_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(10, 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(10, 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(10, 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("_cython.cygrpc.ChannelCredentials.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_18ChannelCredentials_2__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc_ChannelCredentials *)__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_7_cython_6cygrpc_18ChannelCredentials_2__setstate_cython__(struct __pyx_obj_7_cython_6cygrpc_ChannelCredentials *__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_ChannelCredentials, (type(self), 0xe3b0c44, state)
+ * def __setstate_cython__(self, __pyx_state):
+ *     __pyx_unpickle_ChannelCredentials__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(10, 17, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_7_cython_6cygrpc___pyx_unpickle_ChannelCredentials__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 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_ChannelCredentials, (type(self), 0xe3b0c44, state)
+ * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
+ *     __pyx_unpickle_ChannelCredentials__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("_cython.cygrpc.ChannelCredentials.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":126
+ * cdef class SSLSessionCacheLRU:
+ * 
+ *   def __cinit__(self, capacity):             # <<<<<<<<<<<<<<
+ *     fork_handlers_and_grpc_init()
+ *     self._cache = grpc_ssl_session_cache_create_lru(capacity)
+ */
+
+/* Python wrapper */
+static int __pyx_pw_7_cython_6cygrpc_18SSLSessionCacheLRU_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_7_cython_6cygrpc_18SSLSessionCacheLRU_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_capacity = 0;
+  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject* values[1] = {0};
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  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);
+  {
+    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_capacity,0};
+    if (__pyx_kwds) {
+      Py_ssize_t kw_args;
+      switch (__pyx_nargs) {
+        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
+      switch (__pyx_nargs) {
+        case  0:
+        if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_capacity)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 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, "__cinit__") < 0)) __PYX_ERR(5, 126, __pyx_L3_error)
+      }
+    } else if (unlikely(__pyx_nargs != 1)) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+    }
+    __pyx_v_capacity = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, __pyx_nargs); __PYX_ERR(5, 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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_AddTraceback("_cython.cygrpc.SSLSessionCacheLRU.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_18SSLSessionCacheLRU___cinit__(((struct __pyx_obj_7_cython_6cygrpc_SSLSessionCacheLRU *)__pyx_v_self), __pyx_v_capacity);
+
+  /* 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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_7_cython_6cygrpc_18SSLSessionCacheLRU___cinit__(struct __pyx_obj_7_cython_6cygrpc_SSLSessionCacheLRU *__pyx_v_self, PyObject *__pyx_v_capacity) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  unsigned int __pyx_t_4;
+  size_t __pyx_t_5;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__cinit__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":127
+ * 
+ *   def __cinit__(self, capacity):
+ *     fork_handlers_and_grpc_init()             # <<<<<<<<<<<<<<
+ *     self._cache = grpc_ssl_session_cache_create_lru(capacity)
+ * 
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_fork_handlers_and_grpc_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 127, __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, 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(5, 127, __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/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":128
+ *   def __cinit__(self, capacity):
+ *     fork_handlers_and_grpc_init()
+ *     self._cache = grpc_ssl_session_cache_create_lru(capacity)             # <<<<<<<<<<<<<<
+ * 
+ *   def __int__(self):
+ */
+  __pyx_t_5 = __Pyx_PyInt_As_size_t(__pyx_v_capacity); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(5, 128, __pyx_L1_error)
+  __pyx_v_self->_cache = grpc_ssl_session_cache_create_lru(__pyx_t_5);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":126
+ * cdef class SSLSessionCacheLRU:
+ * 
+ *   def __cinit__(self, capacity):             # <<<<<<<<<<<<<<
+ *     fork_handlers_and_grpc_init()
+ *     self._cache = grpc_ssl_session_cache_create_lru(capacity)
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("_cython.cygrpc.SSLSessionCacheLRU.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":130
+ *     self._cache = grpc_ssl_session_cache_create_lru(capacity)
+ * 
+ *   def __int__(self):             # <<<<<<<<<<<<<<
+ *     return <uintptr_t>self._cache
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_18SSLSessionCacheLRU_3__int__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_18SSLSessionCacheLRU_3__int__(PyObject *__pyx_v_self) {
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__int__ (wrapper)", 0);
+  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_18SSLSessionCacheLRU_2__int__(((struct __pyx_obj_7_cython_6cygrpc_SSLSessionCacheLRU *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_18SSLSessionCacheLRU_2__int__(struct __pyx_obj_7_cython_6cygrpc_SSLSessionCacheLRU *__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("__int__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":131
+ * 
+ *   def __int__(self):
+ *     return <uintptr_t>self._cache             # <<<<<<<<<<<<<<
+ * 
+ *   def __dealloc__(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_FromSize_t(((__pyx_t_7_cython_6cygrpc_uintptr_t)__pyx_v_self->_cache)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 131, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":130
+ *     self._cache = grpc_ssl_session_cache_create_lru(capacity)
+ * 
+ *   def __int__(self):             # <<<<<<<<<<<<<<
+ *     return <uintptr_t>self._cache
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.SSLSessionCacheLRU.__int__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":133
+ *     return <uintptr_t>self._cache
+ * 
+ *   def __dealloc__(self):             # <<<<<<<<<<<<<<
+ *     if self._cache != NULL:
+ *         grpc_ssl_session_cache_destroy(self._cache)
+ */
+
+/* Python wrapper */
+static void __pyx_pw_7_cython_6cygrpc_18SSLSessionCacheLRU_5__dealloc__(PyObject *__pyx_v_self); /*proto*/
+static void __pyx_pw_7_cython_6cygrpc_18SSLSessionCacheLRU_5__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_7_cython_6cygrpc_18SSLSessionCacheLRU_4__dealloc__(((struct __pyx_obj_7_cython_6cygrpc_SSLSessionCacheLRU *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+}
+
+static void __pyx_pf_7_cython_6cygrpc_18SSLSessionCacheLRU_4__dealloc__(struct __pyx_obj_7_cython_6cygrpc_SSLSessionCacheLRU *__pyx_v_self) {
+  int __pyx_t_1;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":134
+ * 
+ *   def __dealloc__(self):
+ *     if self._cache != NULL:             # <<<<<<<<<<<<<<
+ *         grpc_ssl_session_cache_destroy(self._cache)
+ *     grpc_shutdown()
+ */
+  __pyx_t_1 = (__pyx_v_self->_cache != NULL);
+  if (__pyx_t_1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":135
+ *   def __dealloc__(self):
+ *     if self._cache != NULL:
+ *         grpc_ssl_session_cache_destroy(self._cache)             # <<<<<<<<<<<<<<
+ *     grpc_shutdown()
+ * 
+ */
+    grpc_ssl_session_cache_destroy(__pyx_v_self->_cache);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":134
+ * 
+ *   def __dealloc__(self):
+ *     if self._cache != NULL:             # <<<<<<<<<<<<<<
+ *         grpc_ssl_session_cache_destroy(self._cache)
+ *     grpc_shutdown()
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":136
+ *     if self._cache != NULL:
+ *         grpc_ssl_session_cache_destroy(self._cache)
+ *     grpc_shutdown()             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  grpc_shutdown();
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":133
+ *     return <uintptr_t>self._cache
+ * 
+ *   def __dealloc__(self):             # <<<<<<<<<<<<<<
+ *     if self._cache != NULL:
+ *         grpc_ssl_session_cache_destroy(self._cache)
+ */
+
+  /* function exit code */
+}
+
+/* "(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_7_cython_6cygrpc_18SSLSessionCacheLRU_7__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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_18SSLSessionCacheLRU_7__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_18SSLSessionCacheLRU_7__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_18SSLSessionCacheLRU_7__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_7_cython_6cygrpc_18SSLSessionCacheLRU_6__reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc_SSLSessionCacheLRU *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_18SSLSessionCacheLRU_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_SSLSessionCacheLRU *__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(10, 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("_cython.cygrpc.SSLSessionCacheLRU.__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_7_cython_6cygrpc_18SSLSessionCacheLRU_9__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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_18SSLSessionCacheLRU_9__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_18SSLSessionCacheLRU_9__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_18SSLSessionCacheLRU_9__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(10, 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(10, 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(10, 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("_cython.cygrpc.SSLSessionCacheLRU.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_18SSLSessionCacheLRU_8__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc_SSLSessionCacheLRU *)__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_7_cython_6cygrpc_18SSLSessionCacheLRU_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_SSLSessionCacheLRU *__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(10, 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("_cython.cygrpc.SSLSessionCacheLRU.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":141
+ * cdef class SSLChannelCredentials(ChannelCredentials):
+ * 
+ *   def __cinit__(self, pem_root_certificates, private_key, certificate_chain):             # <<<<<<<<<<<<<<
+ *     if pem_root_certificates is not None and not isinstance(pem_root_certificates, bytes):
+ *       raise TypeError('expected certificate to be bytes, got %s' % (type(pem_root_certificates)))
+ */
+
+/* Python wrapper */
+static int __pyx_pw_7_cython_6cygrpc_21SSLChannelCredentials_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_7_cython_6cygrpc_21SSLChannelCredentials_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_pem_root_certificates = 0;
+  PyObject *__pyx_v_private_key = 0;
+  PyObject *__pyx_v_certificate_chain = 0;
+  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+  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;
+  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);
+  {
+    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pem_root_certificates,&__pyx_n_s_private_key,&__pyx_n_s_certificate_chain,0};
+    if (__pyx_kwds) {
+      Py_ssize_t kw_args;
+      switch (__pyx_nargs) {
+        case  3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
+      switch (__pyx_nargs) {
+        case  0:
+        if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pem_root_certificates)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 141, __pyx_L3_error)
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_private_key)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 141, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 1); __PYX_ERR(5, 141, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_certificate_chain)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[2]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 141, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 2); __PYX_ERR(5, 141, __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, "__cinit__") < 0)) __PYX_ERR(5, 141, __pyx_L3_error)
+      }
+    } else if (unlikely(__pyx_nargs != 3)) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+      values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
+      values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
+    }
+    __pyx_v_pem_root_certificates = values[0];
+    __pyx_v_private_key = values[1];
+    __pyx_v_certificate_chain = values[2];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, __pyx_nargs); __PYX_ERR(5, 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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_AddTraceback("_cython.cygrpc.SSLChannelCredentials.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_21SSLChannelCredentials___cinit__(((struct __pyx_obj_7_cython_6cygrpc_SSLChannelCredentials *)__pyx_v_self), __pyx_v_pem_root_certificates, __pyx_v_private_key, __pyx_v_certificate_chain);
+
+  /* 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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_7_cython_6cygrpc_21SSLChannelCredentials___cinit__(struct __pyx_obj_7_cython_6cygrpc_SSLChannelCredentials *__pyx_v_self, PyObject *__pyx_v_pem_root_certificates, PyObject *__pyx_v_private_key, PyObject *__pyx_v_certificate_chain) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  int __pyx_t_2;
+  int __pyx_t_3;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__cinit__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":142
+ * 
+ *   def __cinit__(self, pem_root_certificates, private_key, certificate_chain):
+ *     if pem_root_certificates is not None and not isinstance(pem_root_certificates, bytes):             # <<<<<<<<<<<<<<
+ *       raise TypeError('expected certificate to be bytes, got %s' % (type(pem_root_certificates)))
+ *     self._pem_root_certificates = pem_root_certificates
+ */
+  __pyx_t_2 = (__pyx_v_pem_root_certificates != Py_None);
+  if (__pyx_t_2) {
+  } else {
+    __pyx_t_1 = __pyx_t_2;
+    goto __pyx_L4_bool_binop_done;
+  }
+  __pyx_t_2 = PyBytes_Check(__pyx_v_pem_root_certificates); 
+  __pyx_t_3 = (!__pyx_t_2);
+  __pyx_t_1 = __pyx_t_3;
+  __pyx_L4_bool_binop_done:;
+  if (unlikely(__pyx_t_1)) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":143
+ *   def __cinit__(self, pem_root_certificates, private_key, certificate_chain):
+ *     if pem_root_certificates is not None and not isinstance(pem_root_certificates, bytes):
+ *       raise TypeError('expected certificate to be bytes, got %s' % (type(pem_root_certificates)))             # <<<<<<<<<<<<<<
+ *     self._pem_root_certificates = pem_root_certificates
+ *     self._private_key = private_key
+ */
+    __pyx_t_4 = __Pyx_PyString_FormatSafe(__pyx_kp_s_expected_certificate_to_be_bytes, ((PyObject *)Py_TYPE(__pyx_v_pem_root_certificates))); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 143, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 143, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_Raise(__pyx_t_5, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __PYX_ERR(5, 143, __pyx_L1_error)
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":142
+ * 
+ *   def __cinit__(self, pem_root_certificates, private_key, certificate_chain):
+ *     if pem_root_certificates is not None and not isinstance(pem_root_certificates, bytes):             # <<<<<<<<<<<<<<
+ *       raise TypeError('expected certificate to be bytes, got %s' % (type(pem_root_certificates)))
+ *     self._pem_root_certificates = pem_root_certificates
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":144
+ *     if pem_root_certificates is not None and not isinstance(pem_root_certificates, bytes):
+ *       raise TypeError('expected certificate to be bytes, got %s' % (type(pem_root_certificates)))
+ *     self._pem_root_certificates = pem_root_certificates             # <<<<<<<<<<<<<<
+ *     self._private_key = private_key
+ *     self._certificate_chain = certificate_chain
+ */
+  __Pyx_INCREF(__pyx_v_pem_root_certificates);
+  __Pyx_GIVEREF(__pyx_v_pem_root_certificates);
+  __Pyx_GOTREF(__pyx_v_self->_pem_root_certificates);
+  __Pyx_DECREF(__pyx_v_self->_pem_root_certificates);
+  __pyx_v_self->_pem_root_certificates = __pyx_v_pem_root_certificates;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":145
+ *       raise TypeError('expected certificate to be bytes, got %s' % (type(pem_root_certificates)))
+ *     self._pem_root_certificates = pem_root_certificates
+ *     self._private_key = private_key             # <<<<<<<<<<<<<<
+ *     self._certificate_chain = certificate_chain
+ * 
+ */
+  __Pyx_INCREF(__pyx_v_private_key);
+  __Pyx_GIVEREF(__pyx_v_private_key);
+  __Pyx_GOTREF(__pyx_v_self->_private_key);
+  __Pyx_DECREF(__pyx_v_self->_private_key);
+  __pyx_v_self->_private_key = __pyx_v_private_key;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":146
+ *     self._pem_root_certificates = pem_root_certificates
+ *     self._private_key = private_key
+ *     self._certificate_chain = certificate_chain             # <<<<<<<<<<<<<<
+ * 
+ *   cdef grpc_channel_credentials *c(self) except *:
+ */
+  __Pyx_INCREF(__pyx_v_certificate_chain);
+  __Pyx_GIVEREF(__pyx_v_certificate_chain);
+  __Pyx_GOTREF(__pyx_v_self->_certificate_chain);
+  __Pyx_DECREF(__pyx_v_self->_certificate_chain);
+  __pyx_v_self->_certificate_chain = __pyx_v_certificate_chain;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":141
+ * cdef class SSLChannelCredentials(ChannelCredentials):
+ * 
+ *   def __cinit__(self, pem_root_certificates, private_key, certificate_chain):             # <<<<<<<<<<<<<<
+ *     if pem_root_certificates is not None and not isinstance(pem_root_certificates, bytes):
+ *       raise TypeError('expected certificate to be bytes, got %s' % (type(pem_root_certificates)))
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_AddTraceback("_cython.cygrpc.SSLChannelCredentials.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":148
+ *     self._certificate_chain = certificate_chain
+ * 
+ *   cdef grpc_channel_credentials *c(self) except *:             # <<<<<<<<<<<<<<
+ *     cdef const char *c_pem_root_certificates
+ *     cdef grpc_ssl_pem_key_cert_pair c_pem_key_certificate_pair
+ */
+
+static grpc_channel_credentials *__pyx_f_7_cython_6cygrpc_21SSLChannelCredentials_c(struct __pyx_obj_7_cython_6cygrpc_SSLChannelCredentials *__pyx_v_self) {
+  char const *__pyx_v_c_pem_root_certificates;
+  grpc_ssl_pem_key_cert_pair __pyx_v_c_pem_key_certificate_pair;
+  grpc_channel_credentials *__pyx_r;
+  int __pyx_t_1;
+  char const *__pyx_t_2;
+  int __pyx_t_3;
+  char const *__pyx_t_4;
+  char const *__pyx_t_5;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":151
+ *     cdef const char *c_pem_root_certificates
+ *     cdef grpc_ssl_pem_key_cert_pair c_pem_key_certificate_pair
+ *     if self._pem_root_certificates is None:             # <<<<<<<<<<<<<<
+ *       c_pem_root_certificates = NULL
+ *     else:
+ */
+  __pyx_t_1 = (__pyx_v_self->_pem_root_certificates == Py_None);
+  if (__pyx_t_1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":152
+ *     cdef grpc_ssl_pem_key_cert_pair c_pem_key_certificate_pair
+ *     if self._pem_root_certificates is None:
+ *       c_pem_root_certificates = NULL             # <<<<<<<<<<<<<<
+ *     else:
+ *       c_pem_root_certificates = self._pem_root_certificates
+ */
+    __pyx_v_c_pem_root_certificates = NULL;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":151
+ *     cdef const char *c_pem_root_certificates
+ *     cdef grpc_ssl_pem_key_cert_pair c_pem_key_certificate_pair
+ *     if self._pem_root_certificates is None:             # <<<<<<<<<<<<<<
+ *       c_pem_root_certificates = NULL
+ *     else:
+ */
+    goto __pyx_L3;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":154
+ *       c_pem_root_certificates = NULL
+ *     else:
+ *       c_pem_root_certificates = self._pem_root_certificates             # <<<<<<<<<<<<<<
+ *     if self._private_key is None and self._certificate_chain is None:
+ *       with nogil:
+ */
+  /*else*/ {
+    __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_v_self->_pem_root_certificates); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(5, 154, __pyx_L1_error)
+    __pyx_v_c_pem_root_certificates = __pyx_t_2;
+  }
+  __pyx_L3:;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":155
+ *     else:
+ *       c_pem_root_certificates = self._pem_root_certificates
+ *     if self._private_key is None and self._certificate_chain is None:             # <<<<<<<<<<<<<<
+ *       with nogil:
+ *         return grpc_ssl_credentials_create(
+ */
+  __pyx_t_3 = (__pyx_v_self->_private_key == Py_None);
+  if (__pyx_t_3) {
+  } else {
+    __pyx_t_1 = __pyx_t_3;
+    goto __pyx_L5_bool_binop_done;
+  }
+  __pyx_t_3 = (__pyx_v_self->_certificate_chain == Py_None);
+  __pyx_t_1 = __pyx_t_3;
+  __pyx_L5_bool_binop_done:;
+  if (__pyx_t_1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":156
+ *       c_pem_root_certificates = self._pem_root_certificates
+ *     if self._private_key is None and self._certificate_chain is None:
+ *       with nogil:             # <<<<<<<<<<<<<<
+ *         return grpc_ssl_credentials_create(
+ *             c_pem_root_certificates, NULL, NULL, NULL)
+ */
+    {
+        #ifdef WITH_THREAD
+        PyThreadState *_save;
+        _save = NULL;
+        Py_UNBLOCK_THREADS
+        __Pyx_FastGIL_Remember();
+        #endif
+        /*try:*/ {
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":157
+ *     if self._private_key is None and self._certificate_chain is None:
+ *       with nogil:
+ *         return grpc_ssl_credentials_create(             # <<<<<<<<<<<<<<
+ *             c_pem_root_certificates, NULL, NULL, NULL)
+ *     else:
+ */
+          __pyx_r = grpc_ssl_credentials_create(__pyx_v_c_pem_root_certificates, NULL, NULL, NULL);
+          goto __pyx_L7_return;
+        }
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":156
+ *       c_pem_root_certificates = self._pem_root_certificates
+ *     if self._private_key is None and self._certificate_chain is None:
+ *       with nogil:             # <<<<<<<<<<<<<<
+ *         return grpc_ssl_credentials_create(
+ *             c_pem_root_certificates, NULL, NULL, NULL)
+ */
+        /*finally:*/ {
+          __pyx_L7_return: {
+            #ifdef WITH_THREAD
+            __Pyx_FastGIL_Forget();
+            Py_BLOCK_THREADS
+            #endif
+            goto __pyx_L0;
+          }
+        }
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":155
+ *     else:
+ *       c_pem_root_certificates = self._pem_root_certificates
+ *     if self._private_key is None and self._certificate_chain is None:             # <<<<<<<<<<<<<<
+ *       with nogil:
+ *         return grpc_ssl_credentials_create(
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":160
+ *             c_pem_root_certificates, NULL, NULL, NULL)
+ *     else:
+ *       if self._private_key:             # <<<<<<<<<<<<<<
+ *         c_pem_key_certificate_pair.private_key = self._private_key
+ *       else:
+ */
+  /*else*/ {
+    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->_private_key); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(5, 160, __pyx_L1_error)
+    if (__pyx_t_1) {
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":161
+ *     else:
+ *       if self._private_key:
+ *         c_pem_key_certificate_pair.private_key = self._private_key             # <<<<<<<<<<<<<<
+ *       else:
+ *         c_pem_key_certificate_pair.private_key = NULL
+ */
+      __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_v_self->_private_key); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(5, 161, __pyx_L1_error)
+      __pyx_v_c_pem_key_certificate_pair.private_key = __pyx_t_4;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":160
+ *             c_pem_root_certificates, NULL, NULL, NULL)
+ *     else:
+ *       if self._private_key:             # <<<<<<<<<<<<<<
+ *         c_pem_key_certificate_pair.private_key = self._private_key
+ *       else:
+ */
+      goto __pyx_L10;
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":163
+ *         c_pem_key_certificate_pair.private_key = self._private_key
+ *       else:
+ *         c_pem_key_certificate_pair.private_key = NULL             # <<<<<<<<<<<<<<
+ *       if self._certificate_chain:
+ *         c_pem_key_certificate_pair.certificate_chain = self._certificate_chain
+ */
+    /*else*/ {
+      __pyx_v_c_pem_key_certificate_pair.private_key = NULL;
+    }
+    __pyx_L10:;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":164
+ *       else:
+ *         c_pem_key_certificate_pair.private_key = NULL
+ *       if self._certificate_chain:             # <<<<<<<<<<<<<<
+ *         c_pem_key_certificate_pair.certificate_chain = self._certificate_chain
+ *       else:
+ */
+    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->_certificate_chain); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(5, 164, __pyx_L1_error)
+    if (__pyx_t_1) {
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":165
+ *         c_pem_key_certificate_pair.private_key = NULL
+ *       if self._certificate_chain:
+ *         c_pem_key_certificate_pair.certificate_chain = self._certificate_chain             # <<<<<<<<<<<<<<
+ *       else:
+ *         c_pem_key_certificate_pair.certificate_chain = NULL
+ */
+      __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_v_self->_certificate_chain); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(5, 165, __pyx_L1_error)
+      __pyx_v_c_pem_key_certificate_pair.cert_chain = __pyx_t_5;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":164
+ *       else:
+ *         c_pem_key_certificate_pair.private_key = NULL
+ *       if self._certificate_chain:             # <<<<<<<<<<<<<<
+ *         c_pem_key_certificate_pair.certificate_chain = self._certificate_chain
+ *       else:
+ */
+      goto __pyx_L11;
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":167
+ *         c_pem_key_certificate_pair.certificate_chain = self._certificate_chain
+ *       else:
+ *         c_pem_key_certificate_pair.certificate_chain = NULL             # <<<<<<<<<<<<<<
+ *       with nogil:
+ *         return grpc_ssl_credentials_create(
+ */
+    /*else*/ {
+      __pyx_v_c_pem_key_certificate_pair.cert_chain = NULL;
+    }
+    __pyx_L11:;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":168
+ *       else:
+ *         c_pem_key_certificate_pair.certificate_chain = NULL
+ *       with nogil:             # <<<<<<<<<<<<<<
+ *         return grpc_ssl_credentials_create(
+ *             c_pem_root_certificates, &c_pem_key_certificate_pair, NULL, NULL)
+ */
+    {
+        #ifdef WITH_THREAD
+        PyThreadState *_save;
+        _save = NULL;
+        Py_UNBLOCK_THREADS
+        __Pyx_FastGIL_Remember();
+        #endif
+        /*try:*/ {
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":169
+ *         c_pem_key_certificate_pair.certificate_chain = NULL
+ *       with nogil:
+ *         return grpc_ssl_credentials_create(             # <<<<<<<<<<<<<<
+ *             c_pem_root_certificates, &c_pem_key_certificate_pair, NULL, NULL)
+ * 
+ */
+          __pyx_r = grpc_ssl_credentials_create(__pyx_v_c_pem_root_certificates, (&__pyx_v_c_pem_key_certificate_pair), NULL, NULL);
+          goto __pyx_L12_return;
+        }
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":168
+ *       else:
+ *         c_pem_key_certificate_pair.certificate_chain = NULL
+ *       with nogil:             # <<<<<<<<<<<<<<
+ *         return grpc_ssl_credentials_create(
+ *             c_pem_root_certificates, &c_pem_key_certificate_pair, NULL, NULL)
+ */
+        /*finally:*/ {
+          __pyx_L12_return: {
+            #ifdef WITH_THREAD
+            __Pyx_FastGIL_Forget();
+            Py_BLOCK_THREADS
+            #endif
+            goto __pyx_L0;
+          }
+        }
+    }
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":148
+ *     self._certificate_chain = certificate_chain
+ * 
+ *   cdef grpc_channel_credentials *c(self) except *:             # <<<<<<<<<<<<<<
+ *     cdef const char *c_pem_root_certificates
+ *     cdef grpc_ssl_pem_key_cert_pair c_pem_key_certificate_pair
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc.SSLChannelCredentials.c", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pxd.pxi":64
+ * cdef class SSLChannelCredentials(ChannelCredentials):
+ * 
+ *   cdef readonly object _pem_root_certificates             # <<<<<<<<<<<<<<
+ *   cdef readonly object _private_key
+ *   cdef readonly object _certificate_chain
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_21SSLChannelCredentials_22_pem_root_certificates_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_21SSLChannelCredentials_22_pem_root_certificates_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_7_cython_6cygrpc_21SSLChannelCredentials_22_pem_root_certificates___get__(((struct __pyx_obj_7_cython_6cygrpc_SSLChannelCredentials *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_21SSLChannelCredentials_22_pem_root_certificates___get__(struct __pyx_obj_7_cython_6cygrpc_SSLChannelCredentials *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->_pem_root_certificates);
+  __pyx_r = __pyx_v_self->_pem_root_certificates;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pxd.pxi":65
+ * 
+ *   cdef readonly object _pem_root_certificates
+ *   cdef readonly object _private_key             # <<<<<<<<<<<<<<
+ *   cdef readonly object _certificate_chain
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_21SSLChannelCredentials_12_private_key_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_21SSLChannelCredentials_12_private_key_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_7_cython_6cygrpc_21SSLChannelCredentials_12_private_key___get__(((struct __pyx_obj_7_cython_6cygrpc_SSLChannelCredentials *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_21SSLChannelCredentials_12_private_key___get__(struct __pyx_obj_7_cython_6cygrpc_SSLChannelCredentials *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->_private_key);
+  __pyx_r = __pyx_v_self->_private_key;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pxd.pxi":66
+ *   cdef readonly object _pem_root_certificates
+ *   cdef readonly object _private_key
+ *   cdef readonly object _certificate_chain             # <<<<<<<<<<<<<<
+ * 
+ *   cdef grpc_channel_credentials *c(self) except *
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_21SSLChannelCredentials_18_certificate_chain_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_21SSLChannelCredentials_18_certificate_chain_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_7_cython_6cygrpc_21SSLChannelCredentials_18_certificate_chain___get__(((struct __pyx_obj_7_cython_6cygrpc_SSLChannelCredentials *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_21SSLChannelCredentials_18_certificate_chain___get__(struct __pyx_obj_7_cython_6cygrpc_SSLChannelCredentials *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->_certificate_chain);
+  __pyx_r = __pyx_v_self->_certificate_chain;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __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_7_cython_6cygrpc_21SSLChannelCredentials_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_21SSLChannelCredentials_3__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_21SSLChannelCredentials_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_21SSLChannelCredentials_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_7_cython_6cygrpc_21SSLChannelCredentials_2__reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc_SSLChannelCredentials *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_21SSLChannelCredentials_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_SSLChannelCredentials *__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(10, 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("_cython.cygrpc.SSLChannelCredentials.__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_7_cython_6cygrpc_21SSLChannelCredentials_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_21SSLChannelCredentials_5__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_21SSLChannelCredentials_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_21SSLChannelCredentials_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(10, 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(10, 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(10, 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("_cython.cygrpc.SSLChannelCredentials.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_21SSLChannelCredentials_4__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc_SSLChannelCredentials *)__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_7_cython_6cygrpc_21SSLChannelCredentials_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_SSLChannelCredentials *__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(10, 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("_cython.cygrpc.SSLChannelCredentials.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":175
+ * cdef class CompositeChannelCredentials(ChannelCredentials):
+ * 
+ *   def __cinit__(self, call_credentialses, channel_credentials):             # <<<<<<<<<<<<<<
+ *     self._call_credentialses = call_credentialses
+ *     self._channel_credentials = channel_credentials
+ */
+
+/* Python wrapper */
+static int __pyx_pw_7_cython_6cygrpc_27CompositeChannelCredentials_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_7_cython_6cygrpc_27CompositeChannelCredentials_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_call_credentialses = 0;
+  PyObject *__pyx_v_channel_credentials = 0;
+  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject* values[2] = {0,0};
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  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);
+  {
+    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_call_credentialses,&__pyx_n_s_channel_credentials,0};
+    if (__pyx_kwds) {
+      Py_ssize_t kw_args;
+      switch (__pyx_nargs) {
+        case  2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
+      switch (__pyx_nargs) {
+        case  0:
+        if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_call_credentialses)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 175, __pyx_L3_error)
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_channel_credentials)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 175, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, 1); __PYX_ERR(5, 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, "__cinit__") < 0)) __PYX_ERR(5, 175, __pyx_L3_error)
+      }
+    } else if (unlikely(__pyx_nargs != 2)) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+      values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
+    }
+    __pyx_v_call_credentialses = values[0];
+    __pyx_v_channel_credentials = values[1];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, __pyx_nargs); __PYX_ERR(5, 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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_AddTraceback("_cython.cygrpc.CompositeChannelCredentials.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_27CompositeChannelCredentials___cinit__(((struct __pyx_obj_7_cython_6cygrpc_CompositeChannelCredentials *)__pyx_v_self), __pyx_v_call_credentialses, __pyx_v_channel_credentials);
+
+  /* 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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_7_cython_6cygrpc_27CompositeChannelCredentials___cinit__(struct __pyx_obj_7_cython_6cygrpc_CompositeChannelCredentials *__pyx_v_self, PyObject *__pyx_v_call_credentialses, PyObject *__pyx_v_channel_credentials) {
+  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("__cinit__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":176
+ * 
+ *   def __cinit__(self, call_credentialses, channel_credentials):
+ *     self._call_credentialses = call_credentialses             # <<<<<<<<<<<<<<
+ *     self._channel_credentials = channel_credentials
+ * 
+ */
+  if (!(likely(PyTuple_CheckExact(__pyx_v_call_credentialses))||((__pyx_v_call_credentialses) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v_call_credentialses))) __PYX_ERR(5, 176, __pyx_L1_error)
+  __pyx_t_1 = __pyx_v_call_credentialses;
+  __Pyx_INCREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->_call_credentialses);
+  __Pyx_DECREF(__pyx_v_self->_call_credentialses);
+  __pyx_v_self->_call_credentialses = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":177
+ *   def __cinit__(self, call_credentialses, channel_credentials):
+ *     self._call_credentialses = call_credentialses
+ *     self._channel_credentials = channel_credentials             # <<<<<<<<<<<<<<
+ * 
+ *   cdef grpc_channel_credentials *c(self) except *:
+ */
+  if (!(likely(((__pyx_v_channel_credentials) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_channel_credentials, __pyx_ptype_7_cython_6cygrpc_ChannelCredentials))))) __PYX_ERR(5, 177, __pyx_L1_error)
+  __pyx_t_1 = __pyx_v_channel_credentials;
+  __Pyx_INCREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF((PyObject *)__pyx_v_self->_channel_credentials);
+  __Pyx_DECREF((PyObject *)__pyx_v_self->_channel_credentials);
+  __pyx_v_self->_channel_credentials = ((struct __pyx_obj_7_cython_6cygrpc_ChannelCredentials *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":175
+ * cdef class CompositeChannelCredentials(ChannelCredentials):
+ * 
+ *   def __cinit__(self, call_credentialses, channel_credentials):             # <<<<<<<<<<<<<<
+ *     self._call_credentialses = call_credentialses
+ *     self._channel_credentials = channel_credentials
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.CompositeChannelCredentials.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":179
+ *     self._channel_credentials = channel_credentials
+ * 
+ *   cdef grpc_channel_credentials *c(self) except *:             # <<<<<<<<<<<<<<
+ *     cdef grpc_channel_credentials *c_channel_credentials
+ *     c_channel_credentials = self._channel_credentials.c()
+ */
+
+static grpc_channel_credentials *__pyx_f_7_cython_6cygrpc_27CompositeChannelCredentials_c(struct __pyx_obj_7_cython_6cygrpc_CompositeChannelCredentials *__pyx_v_self) {
+  grpc_channel_credentials *__pyx_v_c_channel_credentials;
+  grpc_call_credentials *__pyx_v_c_call_credentials_composition;
+  grpc_channel_credentials *__pyx_v_c_composition;
+  grpc_channel_credentials *__pyx_r;
+  __Pyx_RefNannyDeclarations
+  grpc_channel_credentials *__pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  grpc_call_credentials *__pyx_t_3;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("c", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":181
+ *   cdef grpc_channel_credentials *c(self) except *:
+ *     cdef grpc_channel_credentials *c_channel_credentials
+ *     c_channel_credentials = self._channel_credentials.c()             # <<<<<<<<<<<<<<
+ *     cdef grpc_call_credentials *c_call_credentials_composition = _composition(
+ *         self._call_credentialses)
+ */
+  __pyx_t_1 = ((struct __pyx_vtabstruct_7_cython_6cygrpc_ChannelCredentials *)__pyx_v_self->_channel_credentials->__pyx_vtab)->c(__pyx_v_self->_channel_credentials); if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 181, __pyx_L1_error)
+  __pyx_v_c_channel_credentials = __pyx_t_1;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":183
+ *     c_channel_credentials = self._channel_credentials.c()
+ *     cdef grpc_call_credentials *c_call_credentials_composition = _composition(
+ *         self._call_credentialses)             # <<<<<<<<<<<<<<
+ *     cdef grpc_channel_credentials *composition
+ *     c_composition = grpc_composite_channel_credentials_create(
+ */
+  __pyx_t_2 = __pyx_v_self->_call_credentialses;
+  __Pyx_INCREF(__pyx_t_2);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":182
+ *     cdef grpc_channel_credentials *c_channel_credentials
+ *     c_channel_credentials = self._channel_credentials.c()
+ *     cdef grpc_call_credentials *c_call_credentials_composition = _composition(             # <<<<<<<<<<<<<<
+ *         self._call_credentialses)
+ *     cdef grpc_channel_credentials *composition
+ */
+  __pyx_t_3 = __pyx_f_7_cython_6cygrpc__composition(__pyx_t_2); if (unlikely(__pyx_t_3 == ((grpc_call_credentials *)NULL) && PyErr_Occurred())) __PYX_ERR(5, 182, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_v_c_call_credentials_composition = __pyx_t_3;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":185
+ *         self._call_credentialses)
+ *     cdef grpc_channel_credentials *composition
+ *     c_composition = grpc_composite_channel_credentials_create(             # <<<<<<<<<<<<<<
+ *         c_channel_credentials, c_call_credentials_composition, NULL)
+ *     grpc_channel_credentials_release(c_channel_credentials)
+ */
+  __pyx_v_c_composition = grpc_composite_channel_credentials_create(__pyx_v_c_channel_credentials, __pyx_v_c_call_credentials_composition, NULL);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":187
+ *     c_composition = grpc_composite_channel_credentials_create(
+ *         c_channel_credentials, c_call_credentials_composition, NULL)
+ *     grpc_channel_credentials_release(c_channel_credentials)             # <<<<<<<<<<<<<<
+ *     grpc_call_credentials_release(c_call_credentials_composition)
+ *     return c_composition
+ */
+  grpc_channel_credentials_release(__pyx_v_c_channel_credentials);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":188
+ *         c_channel_credentials, c_call_credentials_composition, NULL)
+ *     grpc_channel_credentials_release(c_channel_credentials)
+ *     grpc_call_credentials_release(c_call_credentials_composition)             # <<<<<<<<<<<<<<
+ *     return c_composition
+ * 
+ */
+  grpc_call_credentials_release(__pyx_v_c_call_credentials_composition);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":189
+ *     grpc_channel_credentials_release(c_channel_credentials)
+ *     grpc_call_credentials_release(c_call_credentials_composition)
+ *     return c_composition             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_r = __pyx_v_c_composition;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":179
+ *     self._channel_credentials = channel_credentials
+ * 
+ *   cdef grpc_channel_credentials *c(self) except *:             # <<<<<<<<<<<<<<
+ *     cdef grpc_channel_credentials *c_channel_credentials
+ *     c_channel_credentials = self._channel_credentials.c()
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("_cython.cygrpc.CompositeChannelCredentials.c", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pxd.pxi":73
+ * cdef class CompositeChannelCredentials(ChannelCredentials):
+ * 
+ *   cdef readonly tuple _call_credentialses             # <<<<<<<<<<<<<<
+ *   cdef readonly ChannelCredentials _channel_credentials
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_27CompositeChannelCredentials_19_call_credentialses_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_27CompositeChannelCredentials_19_call_credentialses_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_7_cython_6cygrpc_27CompositeChannelCredentials_19_call_credentialses___get__(((struct __pyx_obj_7_cython_6cygrpc_CompositeChannelCredentials *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_27CompositeChannelCredentials_19_call_credentialses___get__(struct __pyx_obj_7_cython_6cygrpc_CompositeChannelCredentials *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->_call_credentialses);
+  __pyx_r = __pyx_v_self->_call_credentialses;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pxd.pxi":74
+ * 
+ *   cdef readonly tuple _call_credentialses
+ *   cdef readonly ChannelCredentials _channel_credentials             # <<<<<<<<<<<<<<
+ * 
+ *   cdef grpc_channel_credentials *c(self) except *
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_27CompositeChannelCredentials_20_channel_credentials_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_27CompositeChannelCredentials_20_channel_credentials_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_7_cython_6cygrpc_27CompositeChannelCredentials_20_channel_credentials___get__(((struct __pyx_obj_7_cython_6cygrpc_CompositeChannelCredentials *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_27CompositeChannelCredentials_20_channel_credentials___get__(struct __pyx_obj_7_cython_6cygrpc_CompositeChannelCredentials *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF((PyObject *)__pyx_v_self->_channel_credentials);
+  __pyx_r = ((PyObject *)__pyx_v_self->_channel_credentials);
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __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_7_cython_6cygrpc_27CompositeChannelCredentials_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_27CompositeChannelCredentials_3__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_27CompositeChannelCredentials_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_27CompositeChannelCredentials_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_7_cython_6cygrpc_27CompositeChannelCredentials_2__reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc_CompositeChannelCredentials *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_27CompositeChannelCredentials_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_CompositeChannelCredentials *__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(10, 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("_cython.cygrpc.CompositeChannelCredentials.__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_7_cython_6cygrpc_27CompositeChannelCredentials_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_27CompositeChannelCredentials_5__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_27CompositeChannelCredentials_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_27CompositeChannelCredentials_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(10, 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(10, 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(10, 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("_cython.cygrpc.CompositeChannelCredentials.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_27CompositeChannelCredentials_4__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc_CompositeChannelCredentials *)__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_7_cython_6cygrpc_27CompositeChannelCredentials_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_CompositeChannelCredentials *__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(10, 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("_cython.cygrpc.CompositeChannelCredentials.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":194
+ * cdef class XDSChannelCredentials(ChannelCredentials):
+ * 
+ *     def __cinit__(self, fallback_credentials):             # <<<<<<<<<<<<<<
+ *         self._fallback_credentials = fallback_credentials
+ * 
+ */
+
+/* Python wrapper */
+static int __pyx_pw_7_cython_6cygrpc_21XDSChannelCredentials_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_7_cython_6cygrpc_21XDSChannelCredentials_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_fallback_credentials = 0;
+  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject* values[1] = {0};
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  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);
+  {
+    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fallback_credentials,0};
+    if (__pyx_kwds) {
+      Py_ssize_t kw_args;
+      switch (__pyx_nargs) {
+        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
+      switch (__pyx_nargs) {
+        case  0:
+        if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_fallback_credentials)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 194, __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, "__cinit__") < 0)) __PYX_ERR(5, 194, __pyx_L3_error)
+      }
+    } else if (unlikely(__pyx_nargs != 1)) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+    }
+    __pyx_v_fallback_credentials = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, __pyx_nargs); __PYX_ERR(5, 194, __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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_AddTraceback("_cython.cygrpc.XDSChannelCredentials.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_21XDSChannelCredentials___cinit__(((struct __pyx_obj_7_cython_6cygrpc_XDSChannelCredentials *)__pyx_v_self), __pyx_v_fallback_credentials);
+
+  /* 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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_7_cython_6cygrpc_21XDSChannelCredentials___cinit__(struct __pyx_obj_7_cython_6cygrpc_XDSChannelCredentials *__pyx_v_self, PyObject *__pyx_v_fallback_credentials) {
+  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("__cinit__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":195
+ * 
+ *     def __cinit__(self, fallback_credentials):
+ *         self._fallback_credentials = fallback_credentials             # <<<<<<<<<<<<<<
+ * 
+ *     cdef grpc_channel_credentials *c(self) except *:
+ */
+  if (!(likely(((__pyx_v_fallback_credentials) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_fallback_credentials, __pyx_ptype_7_cython_6cygrpc_ChannelCredentials))))) __PYX_ERR(5, 195, __pyx_L1_error)
+  __pyx_t_1 = __pyx_v_fallback_credentials;
+  __Pyx_INCREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF((PyObject *)__pyx_v_self->_fallback_credentials);
+  __Pyx_DECREF((PyObject *)__pyx_v_self->_fallback_credentials);
+  __pyx_v_self->_fallback_credentials = ((struct __pyx_obj_7_cython_6cygrpc_ChannelCredentials *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":194
+ * cdef class XDSChannelCredentials(ChannelCredentials):
+ * 
+ *     def __cinit__(self, fallback_credentials):             # <<<<<<<<<<<<<<
+ *         self._fallback_credentials = fallback_credentials
+ * 
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.XDSChannelCredentials.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":197
+ *         self._fallback_credentials = fallback_credentials
+ * 
+ *     cdef grpc_channel_credentials *c(self) except *:             # <<<<<<<<<<<<<<
+ *       cdef grpc_channel_credentials *c_fallback_creds = self._fallback_credentials.c()
+ *       cdef grpc_channel_credentials *xds_creds = grpc_xds_credentials_create(c_fallback_creds)
+ */
+
+static grpc_channel_credentials *__pyx_f_7_cython_6cygrpc_21XDSChannelCredentials_c(struct __pyx_obj_7_cython_6cygrpc_XDSChannelCredentials *__pyx_v_self) {
+  grpc_channel_credentials *__pyx_v_c_fallback_creds;
+  grpc_channel_credentials *__pyx_v_xds_creds;
+  grpc_channel_credentials *__pyx_r;
+  grpc_channel_credentials *__pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":198
+ * 
+ *     cdef grpc_channel_credentials *c(self) except *:
+ *       cdef grpc_channel_credentials *c_fallback_creds = self._fallback_credentials.c()             # <<<<<<<<<<<<<<
+ *       cdef grpc_channel_credentials *xds_creds = grpc_xds_credentials_create(c_fallback_creds)
+ *       grpc_channel_credentials_release(c_fallback_creds)
+ */
+  __pyx_t_1 = ((struct __pyx_vtabstruct_7_cython_6cygrpc_ChannelCredentials *)__pyx_v_self->_fallback_credentials->__pyx_vtab)->c(__pyx_v_self->_fallback_credentials); if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 198, __pyx_L1_error)
+  __pyx_v_c_fallback_creds = __pyx_t_1;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":199
+ *     cdef grpc_channel_credentials *c(self) except *:
+ *       cdef grpc_channel_credentials *c_fallback_creds = self._fallback_credentials.c()
+ *       cdef grpc_channel_credentials *xds_creds = grpc_xds_credentials_create(c_fallback_creds)             # <<<<<<<<<<<<<<
+ *       grpc_channel_credentials_release(c_fallback_creds)
+ *       return xds_creds
+ */
+  __pyx_v_xds_creds = grpc_xds_credentials_create(__pyx_v_c_fallback_creds);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":200
+ *       cdef grpc_channel_credentials *c_fallback_creds = self._fallback_credentials.c()
+ *       cdef grpc_channel_credentials *xds_creds = grpc_xds_credentials_create(c_fallback_creds)
+ *       grpc_channel_credentials_release(c_fallback_creds)             # <<<<<<<<<<<<<<
+ *       return xds_creds
+ * 
+ */
+  grpc_channel_credentials_release(__pyx_v_c_fallback_creds);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":201
+ *       cdef grpc_channel_credentials *xds_creds = grpc_xds_credentials_create(c_fallback_creds)
+ *       grpc_channel_credentials_release(c_fallback_creds)
+ *       return xds_creds             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_r = __pyx_v_xds_creds;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":197
+ *         self._fallback_credentials = fallback_credentials
+ * 
+ *     cdef grpc_channel_credentials *c(self) except *:             # <<<<<<<<<<<<<<
+ *       cdef grpc_channel_credentials *c_fallback_creds = self._fallback_credentials.c()
+ *       cdef grpc_channel_credentials *xds_creds = grpc_xds_credentials_create(c_fallback_creds)
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc.XDSChannelCredentials.c", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pxd.pxi":81
+ * cdef class XDSChannelCredentials(ChannelCredentials):
+ * 
+ *   cdef readonly ChannelCredentials _fallback_credentials             # <<<<<<<<<<<<<<
+ * 
+ *   cdef grpc_channel_credentials *c(self) except *
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_21XDSChannelCredentials_21_fallback_credentials_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_21XDSChannelCredentials_21_fallback_credentials_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_7_cython_6cygrpc_21XDSChannelCredentials_21_fallback_credentials___get__(((struct __pyx_obj_7_cython_6cygrpc_XDSChannelCredentials *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_21XDSChannelCredentials_21_fallback_credentials___get__(struct __pyx_obj_7_cython_6cygrpc_XDSChannelCredentials *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF((PyObject *)__pyx_v_self->_fallback_credentials);
+  __pyx_r = ((PyObject *)__pyx_v_self->_fallback_credentials);
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __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_7_cython_6cygrpc_21XDSChannelCredentials_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_21XDSChannelCredentials_3__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_21XDSChannelCredentials_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_21XDSChannelCredentials_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_7_cython_6cygrpc_21XDSChannelCredentials_2__reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc_XDSChannelCredentials *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_21XDSChannelCredentials_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_XDSChannelCredentials *__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(10, 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("_cython.cygrpc.XDSChannelCredentials.__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_7_cython_6cygrpc_21XDSChannelCredentials_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_21XDSChannelCredentials_5__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_21XDSChannelCredentials_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_21XDSChannelCredentials_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(10, 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(10, 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(10, 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("_cython.cygrpc.XDSChannelCredentials.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_21XDSChannelCredentials_4__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc_XDSChannelCredentials *)__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_7_cython_6cygrpc_21XDSChannelCredentials_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_XDSChannelCredentials *__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(10, 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("_cython.cygrpc.XDSChannelCredentials.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":206
+ * cdef class ServerCertificateConfig:
+ * 
+ *   def __cinit__(self):             # <<<<<<<<<<<<<<
+ *     fork_handlers_and_grpc_init()
+ *     self.c_cert_config = NULL
+ */
+
+/* Python wrapper */
+static int __pyx_pw_7_cython_6cygrpc_23ServerCertificateConfig_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_7_cython_6cygrpc_23ServerCertificateConfig_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_7_cython_6cygrpc_23ServerCertificateConfig___cinit__(((struct __pyx_obj_7_cython_6cygrpc_ServerCertificateConfig *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_7_cython_6cygrpc_23ServerCertificateConfig___cinit__(struct __pyx_obj_7_cython_6cygrpc_ServerCertificateConfig *__pyx_v_self) {
+  int __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;
+  __Pyx_RefNannySetupContext("__cinit__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":207
+ * 
+ *   def __cinit__(self):
+ *     fork_handlers_and_grpc_init()             # <<<<<<<<<<<<<<
+ *     self.c_cert_config = NULL
+ *     self.c_pem_root_certs = NULL
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_fork_handlers_and_grpc_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 207, __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, 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(5, 207, __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/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":208
+ *   def __cinit__(self):
+ *     fork_handlers_and_grpc_init()
+ *     self.c_cert_config = NULL             # <<<<<<<<<<<<<<
+ *     self.c_pem_root_certs = NULL
+ *     self.c_ssl_pem_key_cert_pairs = NULL
+ */
+  __pyx_v_self->c_cert_config = NULL;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":209
+ *     fork_handlers_and_grpc_init()
+ *     self.c_cert_config = NULL
+ *     self.c_pem_root_certs = NULL             # <<<<<<<<<<<<<<
+ *     self.c_ssl_pem_key_cert_pairs = NULL
+ *     self.references = []
+ */
+  __pyx_v_self->c_pem_root_certs = NULL;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":210
+ *     self.c_cert_config = NULL
+ *     self.c_pem_root_certs = NULL
+ *     self.c_ssl_pem_key_cert_pairs = NULL             # <<<<<<<<<<<<<<
+ *     self.references = []
+ * 
+ */
+  __pyx_v_self->c_ssl_pem_key_cert_pairs = NULL;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":211
+ *     self.c_pem_root_certs = NULL
+ *     self.c_ssl_pem_key_cert_pairs = NULL
+ *     self.references = []             # <<<<<<<<<<<<<<
+ * 
+ *   def __dealloc__(self):
+ */
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 211, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->references);
+  __Pyx_DECREF(__pyx_v_self->references);
+  __pyx_v_self->references = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":206
+ * cdef class ServerCertificateConfig:
+ * 
+ *   def __cinit__(self):             # <<<<<<<<<<<<<<
+ *     fork_handlers_and_grpc_init()
+ *     self.c_cert_config = NULL
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("_cython.cygrpc.ServerCertificateConfig.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":213
+ *     self.references = []
+ * 
+ *   def __dealloc__(self):             # <<<<<<<<<<<<<<
+ *     grpc_ssl_server_certificate_config_destroy(self.c_cert_config)
+ *     gpr_free(self.c_ssl_pem_key_cert_pairs)
+ */
+
+/* Python wrapper */
+static void __pyx_pw_7_cython_6cygrpc_23ServerCertificateConfig_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
+static void __pyx_pw_7_cython_6cygrpc_23ServerCertificateConfig_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_7_cython_6cygrpc_23ServerCertificateConfig_2__dealloc__(((struct __pyx_obj_7_cython_6cygrpc_ServerCertificateConfig *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+}
+
+static void __pyx_pf_7_cython_6cygrpc_23ServerCertificateConfig_2__dealloc__(struct __pyx_obj_7_cython_6cygrpc_ServerCertificateConfig *__pyx_v_self) {
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":214
+ * 
+ *   def __dealloc__(self):
+ *     grpc_ssl_server_certificate_config_destroy(self.c_cert_config)             # <<<<<<<<<<<<<<
+ *     gpr_free(self.c_ssl_pem_key_cert_pairs)
+ *     grpc_shutdown()
+ */
+  grpc_ssl_server_certificate_config_destroy(__pyx_v_self->c_cert_config);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":215
+ *   def __dealloc__(self):
+ *     grpc_ssl_server_certificate_config_destroy(self.c_cert_config)
+ *     gpr_free(self.c_ssl_pem_key_cert_pairs)             # <<<<<<<<<<<<<<
+ *     grpc_shutdown()
+ * 
+ */
+  gpr_free(__pyx_v_self->c_ssl_pem_key_cert_pairs);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":216
+ *     grpc_ssl_server_certificate_config_destroy(self.c_cert_config)
+ *     gpr_free(self.c_ssl_pem_key_cert_pairs)
+ *     grpc_shutdown()             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  grpc_shutdown();
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":213
+ *     self.references = []
+ * 
+ *   def __dealloc__(self):             # <<<<<<<<<<<<<<
+ *     grpc_ssl_server_certificate_config_destroy(self.c_cert_config)
+ *     gpr_free(self.c_ssl_pem_key_cert_pairs)
+ */
+
+  /* function exit code */
+}
+
+/* "(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_7_cython_6cygrpc_23ServerCertificateConfig_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_23ServerCertificateConfig_5__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_23ServerCertificateConfig_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_23ServerCertificateConfig_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_7_cython_6cygrpc_23ServerCertificateConfig_4__reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc_ServerCertificateConfig *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_23ServerCertificateConfig_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_ServerCertificateConfig *__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(10, 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("_cython.cygrpc.ServerCertificateConfig.__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_7_cython_6cygrpc_23ServerCertificateConfig_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_23ServerCertificateConfig_7__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_23ServerCertificateConfig_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_23ServerCertificateConfig_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(10, 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(10, 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(10, 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("_cython.cygrpc.ServerCertificateConfig.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_23ServerCertificateConfig_6__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc_ServerCertificateConfig *)__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_7_cython_6cygrpc_23ServerCertificateConfig_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_ServerCertificateConfig *__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(10, 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("_cython.cygrpc.ServerCertificateConfig.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":221
+ * cdef class ServerCredentials:
+ * 
+ *   def __cinit__(self):             # <<<<<<<<<<<<<<
+ *     fork_handlers_and_grpc_init()
+ *     self.c_credentials = NULL
+ */
+
+/* Python wrapper */
+static int __pyx_pw_7_cython_6cygrpc_17ServerCredentials_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_7_cython_6cygrpc_17ServerCredentials_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_7_cython_6cygrpc_17ServerCredentials___cinit__(((struct __pyx_obj_7_cython_6cygrpc_ServerCredentials *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_7_cython_6cygrpc_17ServerCredentials___cinit__(struct __pyx_obj_7_cython_6cygrpc_ServerCredentials *__pyx_v_self) {
+  int __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;
+  __Pyx_RefNannySetupContext("__cinit__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":222
+ * 
+ *   def __cinit__(self):
+ *     fork_handlers_and_grpc_init()             # <<<<<<<<<<<<<<
+ *     self.c_credentials = NULL
+ *     self.references = []
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_fork_handlers_and_grpc_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 222, __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, 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(5, 222, __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/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":223
+ *   def __cinit__(self):
+ *     fork_handlers_and_grpc_init()
+ *     self.c_credentials = NULL             # <<<<<<<<<<<<<<
+ *     self.references = []
+ *     self.initial_cert_config = None
+ */
+  __pyx_v_self->c_credentials = NULL;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":224
+ *     fork_handlers_and_grpc_init()
+ *     self.c_credentials = NULL
+ *     self.references = []             # <<<<<<<<<<<<<<
+ *     self.initial_cert_config = None
+ *     self.cert_config_fetcher = None
+ */
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 224, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->references);
+  __Pyx_DECREF(__pyx_v_self->references);
+  __pyx_v_self->references = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":225
+ *     self.c_credentials = NULL
+ *     self.references = []
+ *     self.initial_cert_config = None             # <<<<<<<<<<<<<<
+ *     self.cert_config_fetcher = None
+ *     self.initial_cert_config_fetched = False
+ */
+  __Pyx_INCREF(Py_None);
+  __Pyx_GIVEREF(Py_None);
+  __Pyx_GOTREF(__pyx_v_self->initial_cert_config);
+  __Pyx_DECREF(__pyx_v_self->initial_cert_config);
+  __pyx_v_self->initial_cert_config = Py_None;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":226
+ *     self.references = []
+ *     self.initial_cert_config = None
+ *     self.cert_config_fetcher = None             # <<<<<<<<<<<<<<
+ *     self.initial_cert_config_fetched = False
+ * 
+ */
+  __Pyx_INCREF(Py_None);
+  __Pyx_GIVEREF(Py_None);
+  __Pyx_GOTREF(__pyx_v_self->cert_config_fetcher);
+  __Pyx_DECREF(__pyx_v_self->cert_config_fetcher);
+  __pyx_v_self->cert_config_fetcher = Py_None;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":227
+ *     self.initial_cert_config = None
+ *     self.cert_config_fetcher = None
+ *     self.initial_cert_config_fetched = False             # <<<<<<<<<<<<<<
+ * 
+ *   def __dealloc__(self):
+ */
+  __pyx_v_self->initial_cert_config_fetched = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":221
+ * cdef class ServerCredentials:
+ * 
+ *   def __cinit__(self):             # <<<<<<<<<<<<<<
+ *     fork_handlers_and_grpc_init()
+ *     self.c_credentials = NULL
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("_cython.cygrpc.ServerCredentials.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":229
+ *     self.initial_cert_config_fetched = False
+ * 
+ *   def __dealloc__(self):             # <<<<<<<<<<<<<<
+ *     if self.c_credentials != NULL:
+ *       grpc_server_credentials_release(self.c_credentials)
+ */
+
+/* Python wrapper */
+static void __pyx_pw_7_cython_6cygrpc_17ServerCredentials_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
+static void __pyx_pw_7_cython_6cygrpc_17ServerCredentials_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_7_cython_6cygrpc_17ServerCredentials_2__dealloc__(((struct __pyx_obj_7_cython_6cygrpc_ServerCredentials *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+}
+
+static void __pyx_pf_7_cython_6cygrpc_17ServerCredentials_2__dealloc__(struct __pyx_obj_7_cython_6cygrpc_ServerCredentials *__pyx_v_self) {
+  int __pyx_t_1;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":230
+ * 
+ *   def __dealloc__(self):
+ *     if self.c_credentials != NULL:             # <<<<<<<<<<<<<<
+ *       grpc_server_credentials_release(self.c_credentials)
+ *     grpc_shutdown()
+ */
+  __pyx_t_1 = (__pyx_v_self->c_credentials != NULL);
+  if (__pyx_t_1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":231
+ *   def __dealloc__(self):
+ *     if self.c_credentials != NULL:
+ *       grpc_server_credentials_release(self.c_credentials)             # <<<<<<<<<<<<<<
+ *     grpc_shutdown()
+ * 
+ */
+    grpc_server_credentials_release(__pyx_v_self->c_credentials);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":230
+ * 
+ *   def __dealloc__(self):
+ *     if self.c_credentials != NULL:             # <<<<<<<<<<<<<<
+ *       grpc_server_credentials_release(self.c_credentials)
+ *     grpc_shutdown()
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":232
+ *     if self.c_credentials != NULL:
+ *       grpc_server_credentials_release(self.c_credentials)
+ *     grpc_shutdown()             # <<<<<<<<<<<<<<
+ * 
+ * cdef const char* _get_c_pem_root_certs(pem_root_certs):
+ */
+  grpc_shutdown();
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":229
+ *     self.initial_cert_config_fetched = False
+ * 
+ *   def __dealloc__(self):             # <<<<<<<<<<<<<<
+ *     if self.c_credentials != NULL:
+ *       grpc_server_credentials_release(self.c_credentials)
+ */
+
+  /* function exit code */
+}
+
+/* "(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_7_cython_6cygrpc_17ServerCredentials_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_17ServerCredentials_5__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_17ServerCredentials_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_17ServerCredentials_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_7_cython_6cygrpc_17ServerCredentials_4__reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc_ServerCredentials *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_17ServerCredentials_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_ServerCredentials *__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(10, 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("_cython.cygrpc.ServerCredentials.__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_7_cython_6cygrpc_17ServerCredentials_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_17ServerCredentials_7__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_17ServerCredentials_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_17ServerCredentials_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(10, 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(10, 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(10, 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("_cython.cygrpc.ServerCredentials.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_17ServerCredentials_6__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc_ServerCredentials *)__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_7_cython_6cygrpc_17ServerCredentials_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_ServerCredentials *__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(10, 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("_cython.cygrpc.ServerCredentials.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":234
+ *     grpc_shutdown()
+ * 
+ * cdef const char* _get_c_pem_root_certs(pem_root_certs):             # <<<<<<<<<<<<<<
+ *   if pem_root_certs is None:
+ *     return NULL
+ */
+
+static char const *__pyx_f_7_cython_6cygrpc__get_c_pem_root_certs(PyObject *__pyx_v_pem_root_certs) {
+  char const *__pyx_r;
+  int __pyx_t_1;
+  char const *__pyx_t_2;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":235
+ * 
+ * cdef const char* _get_c_pem_root_certs(pem_root_certs):
+ *   if pem_root_certs is None:             # <<<<<<<<<<<<<<
+ *     return NULL
+ *   else:
+ */
+  __pyx_t_1 = (__pyx_v_pem_root_certs == Py_None);
+  if (__pyx_t_1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":236
+ * cdef const char* _get_c_pem_root_certs(pem_root_certs):
+ *   if pem_root_certs is None:
+ *     return NULL             # <<<<<<<<<<<<<<
+ *   else:
+ *     return pem_root_certs
+ */
+    __pyx_r = NULL;
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":235
+ * 
+ * cdef const char* _get_c_pem_root_certs(pem_root_certs):
+ *   if pem_root_certs is None:             # <<<<<<<<<<<<<<
+ *     return NULL
+ *   else:
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":238
+ *     return NULL
+ *   else:
+ *     return pem_root_certs             # <<<<<<<<<<<<<<
+ * 
+ * cdef grpc_ssl_pem_key_cert_pair* _create_c_ssl_pem_key_cert_pairs(pem_key_cert_pairs):
+ */
+  /*else*/ {
+    __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_v_pem_root_certs); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(5, 238, __pyx_L1_error)
+    __pyx_r = __pyx_t_2;
+    goto __pyx_L0;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":234
+ *     grpc_shutdown()
+ * 
+ * cdef const char* _get_c_pem_root_certs(pem_root_certs):             # <<<<<<<<<<<<<<
+ *   if pem_root_certs is None:
+ *     return NULL
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc._get_c_pem_root_certs", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":240
+ *     return pem_root_certs
+ * 
+ * cdef grpc_ssl_pem_key_cert_pair* _create_c_ssl_pem_key_cert_pairs(pem_key_cert_pairs):             # <<<<<<<<<<<<<<
+ *   # return a malloc'ed grpc_ssl_pem_key_cert_pair from a _list_ of SslPemKeyCertPair
+ *   for pair in pem_key_cert_pairs:
+ */
+
+static grpc_ssl_pem_key_cert_pair *__pyx_f_7_cython_6cygrpc__create_c_ssl_pem_key_cert_pairs(PyObject *__pyx_v_pem_key_cert_pairs) {
+  PyObject *__pyx_v_pair = NULL;
+  size_t __pyx_v_c_ssl_pem_key_cert_pairs_count;
+  grpc_ssl_pem_key_cert_pair *__pyx_v_c_ssl_pem_key_cert_pairs;
+  size_t __pyx_v_i;
+  grpc_ssl_pem_key_cert_pair *__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_t_6;
+  size_t __pyx_t_7;
+  size_t __pyx_t_8;
+  size_t __pyx_t_9;
+  grpc_ssl_pem_key_cert_pair __pyx_t_10;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_create_c_ssl_pem_key_cert_pairs", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":242
+ * cdef grpc_ssl_pem_key_cert_pair* _create_c_ssl_pem_key_cert_pairs(pem_key_cert_pairs):
+ *   # return a malloc'ed grpc_ssl_pem_key_cert_pair from a _list_ of SslPemKeyCertPair
+ *   for pair in pem_key_cert_pairs:             # <<<<<<<<<<<<<<
+ *     if not isinstance(pair, SslPemKeyCertPair):
+ *       raise TypeError("expected pem_key_cert_pairs to be sequence of "
+ */
+  if (likely(PyList_CheckExact(__pyx_v_pem_key_cert_pairs)) || PyTuple_CheckExact(__pyx_v_pem_key_cert_pairs)) {
+    __pyx_t_1 = __pyx_v_pem_key_cert_pairs; __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_pem_key_cert_pairs); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 242, __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, 242, __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, 242, __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, 242, __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, 242, __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, 242, __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, 242, __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, 242, __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, 242, __pyx_L1_error)
+        }
+        break;
+      }
+      __Pyx_GOTREF(__pyx_t_4);
+    }
+    __Pyx_XDECREF_SET(__pyx_v_pair, __pyx_t_4);
+    __pyx_t_4 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":243
+ *   # return a malloc'ed grpc_ssl_pem_key_cert_pair from a _list_ of SslPemKeyCertPair
+ *   for pair in pem_key_cert_pairs:
+ *     if not isinstance(pair, SslPemKeyCertPair):             # <<<<<<<<<<<<<<
+ *       raise TypeError("expected pem_key_cert_pairs to be sequence of "
+ *                       "SslPemKeyCertPair")
+ */
+    __pyx_t_5 = __Pyx_TypeCheck(__pyx_v_pair, __pyx_ptype_7_cython_6cygrpc_SslPemKeyCertPair); 
+    __pyx_t_6 = (!__pyx_t_5);
+    if (unlikely(__pyx_t_6)) {
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":244
+ *   for pair in pem_key_cert_pairs:
+ *     if not isinstance(pair, SslPemKeyCertPair):
+ *       raise TypeError("expected pem_key_cert_pairs to be sequence of "             # <<<<<<<<<<<<<<
+ *                       "SslPemKeyCertPair")
+ *   cdef size_t c_ssl_pem_key_cert_pairs_count = len(pem_key_cert_pairs)
+ */
+      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__23, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 244, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      __Pyx_Raise(__pyx_t_4, 0, 0, 0);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __PYX_ERR(5, 244, __pyx_L1_error)
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":243
+ *   # return a malloc'ed grpc_ssl_pem_key_cert_pair from a _list_ of SslPemKeyCertPair
+ *   for pair in pem_key_cert_pairs:
+ *     if not isinstance(pair, SslPemKeyCertPair):             # <<<<<<<<<<<<<<
+ *       raise TypeError("expected pem_key_cert_pairs to be sequence of "
+ *                       "SslPemKeyCertPair")
+ */
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":242
+ * cdef grpc_ssl_pem_key_cert_pair* _create_c_ssl_pem_key_cert_pairs(pem_key_cert_pairs):
+ *   # return a malloc'ed grpc_ssl_pem_key_cert_pair from a _list_ of SslPemKeyCertPair
+ *   for pair in pem_key_cert_pairs:             # <<<<<<<<<<<<<<
+ *     if not isinstance(pair, SslPemKeyCertPair):
+ *       raise TypeError("expected pem_key_cert_pairs to be sequence of "
+ */
+  }
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":246
+ *       raise TypeError("expected pem_key_cert_pairs to be sequence of "
+ *                       "SslPemKeyCertPair")
+ *   cdef size_t c_ssl_pem_key_cert_pairs_count = len(pem_key_cert_pairs)             # <<<<<<<<<<<<<<
+ *   cdef grpc_ssl_pem_key_cert_pair* c_ssl_pem_key_cert_pairs = NULL
+ *   with nogil:
+ */
+  __pyx_t_2 = PyObject_Length(__pyx_v_pem_key_cert_pairs); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(5, 246, __pyx_L1_error)
+  __pyx_v_c_ssl_pem_key_cert_pairs_count = __pyx_t_2;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":247
+ *                       "SslPemKeyCertPair")
+ *   cdef size_t c_ssl_pem_key_cert_pairs_count = len(pem_key_cert_pairs)
+ *   cdef grpc_ssl_pem_key_cert_pair* c_ssl_pem_key_cert_pairs = NULL             # <<<<<<<<<<<<<<
+ *   with nogil:
+ *     c_ssl_pem_key_cert_pairs = (
+ */
+  __pyx_v_c_ssl_pem_key_cert_pairs = NULL;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":248
+ *   cdef size_t c_ssl_pem_key_cert_pairs_count = len(pem_key_cert_pairs)
+ *   cdef grpc_ssl_pem_key_cert_pair* c_ssl_pem_key_cert_pairs = NULL
+ *   with nogil:             # <<<<<<<<<<<<<<
+ *     c_ssl_pem_key_cert_pairs = (
+ *       <grpc_ssl_pem_key_cert_pair *>gpr_malloc(
+ */
+  {
+      #ifdef WITH_THREAD
+      PyThreadState *_save;
+      _save = NULL;
+      Py_UNBLOCK_THREADS
+      __Pyx_FastGIL_Remember();
+      #endif
+      /*try:*/ {
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":250
+ *   with nogil:
+ *     c_ssl_pem_key_cert_pairs = (
+ *       <grpc_ssl_pem_key_cert_pair *>gpr_malloc(             # <<<<<<<<<<<<<<
+ *         sizeof(grpc_ssl_pem_key_cert_pair) * c_ssl_pem_key_cert_pairs_count))
+ *   for i in range(c_ssl_pem_key_cert_pairs_count):
+ */
+        __pyx_v_c_ssl_pem_key_cert_pairs = ((grpc_ssl_pem_key_cert_pair *)gpr_malloc(((sizeof(grpc_ssl_pem_key_cert_pair)) * __pyx_v_c_ssl_pem_key_cert_pairs_count)));
+      }
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":248
+ *   cdef size_t c_ssl_pem_key_cert_pairs_count = len(pem_key_cert_pairs)
+ *   cdef grpc_ssl_pem_key_cert_pair* c_ssl_pem_key_cert_pairs = NULL
+ *   with nogil:             # <<<<<<<<<<<<<<
+ *     c_ssl_pem_key_cert_pairs = (
+ *       <grpc_ssl_pem_key_cert_pair *>gpr_malloc(
+ */
+      /*finally:*/ {
+        /*normal exit:*/{
+          #ifdef WITH_THREAD
+          __Pyx_FastGIL_Forget();
+          Py_BLOCK_THREADS
+          #endif
+          goto __pyx_L9;
+        }
+        __pyx_L9:;
+      }
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":252
+ *       <grpc_ssl_pem_key_cert_pair *>gpr_malloc(
+ *         sizeof(grpc_ssl_pem_key_cert_pair) * c_ssl_pem_key_cert_pairs_count))
+ *   for i in range(c_ssl_pem_key_cert_pairs_count):             # <<<<<<<<<<<<<<
+ *     c_ssl_pem_key_cert_pairs[i] = (
+ *       (<SslPemKeyCertPair>pem_key_cert_pairs[i]).c_pair)
+ */
+  __pyx_t_7 = __pyx_v_c_ssl_pem_key_cert_pairs_count;
+  __pyx_t_8 = __pyx_t_7;
+  for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) {
+    __pyx_v_i = __pyx_t_9;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":254
+ *   for i in range(c_ssl_pem_key_cert_pairs_count):
+ *     c_ssl_pem_key_cert_pairs[i] = (
+ *       (<SslPemKeyCertPair>pem_key_cert_pairs[i]).c_pair)             # <<<<<<<<<<<<<<
+ *   return c_ssl_pem_key_cert_pairs
+ * 
+ */
+    __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_pem_key_cert_pairs, __pyx_v_i, size_t, 0, __Pyx_PyInt_FromSize_t, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 254, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_10 = ((struct __pyx_obj_7_cython_6cygrpc_SslPemKeyCertPair *)__pyx_t_1)->c_pair;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":253
+ *         sizeof(grpc_ssl_pem_key_cert_pair) * c_ssl_pem_key_cert_pairs_count))
+ *   for i in range(c_ssl_pem_key_cert_pairs_count):
+ *     c_ssl_pem_key_cert_pairs[i] = (             # <<<<<<<<<<<<<<
+ *       (<SslPemKeyCertPair>pem_key_cert_pairs[i]).c_pair)
+ *   return c_ssl_pem_key_cert_pairs
+ */
+    (__pyx_v_c_ssl_pem_key_cert_pairs[__pyx_v_i]) = __pyx_t_10;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":255
+ *     c_ssl_pem_key_cert_pairs[i] = (
+ *       (<SslPemKeyCertPair>pem_key_cert_pairs[i]).c_pair)
+ *   return c_ssl_pem_key_cert_pairs             # <<<<<<<<<<<<<<
+ * 
+ * def server_credentials_ssl(pem_root_certs, pem_key_cert_pairs,
+ */
+  __pyx_r = __pyx_v_c_ssl_pem_key_cert_pairs;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":240
+ *     return pem_root_certs
+ * 
+ * cdef grpc_ssl_pem_key_cert_pair* _create_c_ssl_pem_key_cert_pairs(pem_key_cert_pairs):             # <<<<<<<<<<<<<<
+ *   # return a malloc'ed grpc_ssl_pem_key_cert_pair from a _list_ of SslPemKeyCertPair
+ *   for pair in pem_key_cert_pairs:
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("_cython.cygrpc._create_c_ssl_pem_key_cert_pairs", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_pair);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":257
+ *   return c_ssl_pem_key_cert_pairs
+ * 
+ * def server_credentials_ssl(pem_root_certs, pem_key_cert_pairs,             # <<<<<<<<<<<<<<
+ *                            bint force_client_auth):
+ *   pem_root_certs = str_to_bytes(pem_root_certs)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_23server_credentials_ssl(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_23server_credentials_ssl = {"server_credentials_ssl", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_23server_credentials_ssl, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_23server_credentials_ssl(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_pem_root_certs = 0;
+  PyObject *__pyx_v_pem_key_cert_pairs = 0;
+  int __pyx_v_force_client_auth;
+  #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("server_credentials_ssl (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_pem_root_certs,&__pyx_n_s_pem_key_cert_pairs,&__pyx_n_s_force_client_auth,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_pem_root_certs)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 257, __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_pem_key_cert_pairs)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 257, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("server_credentials_ssl", 1, 3, 3, 1); __PYX_ERR(5, 257, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_force_client_auth)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 257, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("server_credentials_ssl", 1, 3, 3, 2); __PYX_ERR(5, 257, __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, "server_credentials_ssl") < 0)) __PYX_ERR(5, 257, __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_pem_root_certs = values[0];
+    __pyx_v_pem_key_cert_pairs = values[1];
+    __pyx_v_force_client_auth = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_force_client_auth == (int)-1) && PyErr_Occurred())) __PYX_ERR(5, 258, __pyx_L3_error)
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("server_credentials_ssl", 1, 3, 3, __pyx_nargs); __PYX_ERR(5, 257, __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("_cython.cygrpc.server_credentials_ssl", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_22server_credentials_ssl(__pyx_self, __pyx_v_pem_root_certs, __pyx_v_pem_key_cert_pairs, __pyx_v_force_client_auth);
+
+  /* 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_7_cython_6cygrpc_22server_credentials_ssl(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_pem_root_certs, PyObject *__pyx_v_pem_key_cert_pairs, int __pyx_v_force_client_auth) {
+  struct __pyx_obj_7_cython_6cygrpc_ServerCredentials *__pyx_v_credentials = 0;
+  char const *__pyx_v_c_pem_root_certs;
+  grpc_ssl_server_certificate_config *__pyx_v_c_cert_config;
+  grpc_ssl_server_credentials_options *__pyx_v_c_options;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_t_2;
+  char const *__pyx_t_3;
+  Py_ssize_t __pyx_t_4;
+  grpc_ssl_pem_key_cert_pair *__pyx_t_5;
+  grpc_ssl_client_certificate_request_type __pyx_t_6;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("server_credentials_ssl", 0);
+  __Pyx_INCREF(__pyx_v_pem_root_certs);
+  __Pyx_INCREF(__pyx_v_pem_key_cert_pairs);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":259
+ * def server_credentials_ssl(pem_root_certs, pem_key_cert_pairs,
+ *                            bint force_client_auth):
+ *   pem_root_certs = str_to_bytes(pem_root_certs)             # <<<<<<<<<<<<<<
+ *   pem_key_cert_pairs = list(pem_key_cert_pairs)
+ *   cdef ServerCredentials credentials = ServerCredentials()
+ */
+  __pyx_t_1 = __pyx_f_7_cython_6cygrpc_str_to_bytes(__pyx_v_pem_root_certs); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 259, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF_SET(__pyx_v_pem_root_certs, __pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":260
+ *                            bint force_client_auth):
+ *   pem_root_certs = str_to_bytes(pem_root_certs)
+ *   pem_key_cert_pairs = list(pem_key_cert_pairs)             # <<<<<<<<<<<<<<
+ *   cdef ServerCredentials credentials = ServerCredentials()
+ *   credentials.references.append(pem_root_certs)
+ */
+  __pyx_t_1 = PySequence_List(__pyx_v_pem_key_cert_pairs); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 260, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF_SET(__pyx_v_pem_key_cert_pairs, __pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":261
+ *   pem_root_certs = str_to_bytes(pem_root_certs)
+ *   pem_key_cert_pairs = list(pem_key_cert_pairs)
+ *   cdef ServerCredentials credentials = ServerCredentials()             # <<<<<<<<<<<<<<
+ *   credentials.references.append(pem_root_certs)
+ *   credentials.references.append(pem_key_cert_pairs)
+ */
+  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_7_cython_6cygrpc_ServerCredentials)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 261, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_credentials = ((struct __pyx_obj_7_cython_6cygrpc_ServerCredentials *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":262
+ *   pem_key_cert_pairs = list(pem_key_cert_pairs)
+ *   cdef ServerCredentials credentials = ServerCredentials()
+ *   credentials.references.append(pem_root_certs)             # <<<<<<<<<<<<<<
+ *   credentials.references.append(pem_key_cert_pairs)
+ *   cdef const char * c_pem_root_certs = _get_c_pem_root_certs(pem_root_certs)
+ */
+  if (unlikely(__pyx_v_credentials->references == Py_None)) {
+    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
+    __PYX_ERR(5, 262, __pyx_L1_error)
+  }
+  __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_credentials->references, __pyx_v_pem_root_certs); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(5, 262, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":263
+ *   cdef ServerCredentials credentials = ServerCredentials()
+ *   credentials.references.append(pem_root_certs)
+ *   credentials.references.append(pem_key_cert_pairs)             # <<<<<<<<<<<<<<
+ *   cdef const char * c_pem_root_certs = _get_c_pem_root_certs(pem_root_certs)
+ *   credentials.c_ssl_pem_key_cert_pairs_count = len(pem_key_cert_pairs)
+ */
+  if (unlikely(__pyx_v_credentials->references == Py_None)) {
+    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
+    __PYX_ERR(5, 263, __pyx_L1_error)
+  }
+  __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_credentials->references, __pyx_v_pem_key_cert_pairs); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(5, 263, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":264
+ *   credentials.references.append(pem_root_certs)
+ *   credentials.references.append(pem_key_cert_pairs)
+ *   cdef const char * c_pem_root_certs = _get_c_pem_root_certs(pem_root_certs)             # <<<<<<<<<<<<<<
+ *   credentials.c_ssl_pem_key_cert_pairs_count = len(pem_key_cert_pairs)
+ *   credentials.c_ssl_pem_key_cert_pairs = _create_c_ssl_pem_key_cert_pairs(pem_key_cert_pairs)
+ */
+  __pyx_t_3 = __pyx_f_7_cython_6cygrpc__get_c_pem_root_certs(__pyx_v_pem_root_certs); if (unlikely(__pyx_t_3 == ((char const *)NULL) && PyErr_Occurred())) __PYX_ERR(5, 264, __pyx_L1_error)
+  __pyx_v_c_pem_root_certs = __pyx_t_3;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":265
+ *   credentials.references.append(pem_key_cert_pairs)
+ *   cdef const char * c_pem_root_certs = _get_c_pem_root_certs(pem_root_certs)
+ *   credentials.c_ssl_pem_key_cert_pairs_count = len(pem_key_cert_pairs)             # <<<<<<<<<<<<<<
+ *   credentials.c_ssl_pem_key_cert_pairs = _create_c_ssl_pem_key_cert_pairs(pem_key_cert_pairs)
+ *   cdef grpc_ssl_server_certificate_config *c_cert_config = NULL
+ */
+  __pyx_t_4 = PyObject_Length(__pyx_v_pem_key_cert_pairs); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(5, 265, __pyx_L1_error)
+  __pyx_v_credentials->c_ssl_pem_key_cert_pairs_count = __pyx_t_4;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":266
+ *   cdef const char * c_pem_root_certs = _get_c_pem_root_certs(pem_root_certs)
+ *   credentials.c_ssl_pem_key_cert_pairs_count = len(pem_key_cert_pairs)
+ *   credentials.c_ssl_pem_key_cert_pairs = _create_c_ssl_pem_key_cert_pairs(pem_key_cert_pairs)             # <<<<<<<<<<<<<<
+ *   cdef grpc_ssl_server_certificate_config *c_cert_config = NULL
+ *   c_cert_config = grpc_ssl_server_certificate_config_create(
+ */
+  __pyx_t_5 = __pyx_f_7_cython_6cygrpc__create_c_ssl_pem_key_cert_pairs(__pyx_v_pem_key_cert_pairs); if (unlikely(__pyx_t_5 == ((grpc_ssl_pem_key_cert_pair *)NULL) && PyErr_Occurred())) __PYX_ERR(5, 266, __pyx_L1_error)
+  __pyx_v_credentials->c_ssl_pem_key_cert_pairs = __pyx_t_5;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":267
+ *   credentials.c_ssl_pem_key_cert_pairs_count = len(pem_key_cert_pairs)
+ *   credentials.c_ssl_pem_key_cert_pairs = _create_c_ssl_pem_key_cert_pairs(pem_key_cert_pairs)
+ *   cdef grpc_ssl_server_certificate_config *c_cert_config = NULL             # <<<<<<<<<<<<<<
+ *   c_cert_config = grpc_ssl_server_certificate_config_create(
+ *     c_pem_root_certs, credentials.c_ssl_pem_key_cert_pairs,
+ */
+  __pyx_v_c_cert_config = NULL;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":268
+ *   credentials.c_ssl_pem_key_cert_pairs = _create_c_ssl_pem_key_cert_pairs(pem_key_cert_pairs)
+ *   cdef grpc_ssl_server_certificate_config *c_cert_config = NULL
+ *   c_cert_config = grpc_ssl_server_certificate_config_create(             # <<<<<<<<<<<<<<
+ *     c_pem_root_certs, credentials.c_ssl_pem_key_cert_pairs,
+ *     credentials.c_ssl_pem_key_cert_pairs_count)
+ */
+  __pyx_v_c_cert_config = grpc_ssl_server_certificate_config_create(__pyx_v_c_pem_root_certs, __pyx_v_credentials->c_ssl_pem_key_cert_pairs, __pyx_v_credentials->c_ssl_pem_key_cert_pairs_count);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":271
+ *     c_pem_root_certs, credentials.c_ssl_pem_key_cert_pairs,
+ *     credentials.c_ssl_pem_key_cert_pairs_count)
+ *   cdef grpc_ssl_server_credentials_options* c_options = NULL             # <<<<<<<<<<<<<<
+ *   # C-core assumes ownership of c_cert_config
+ *   c_options = grpc_ssl_server_credentials_create_options_using_config(
+ */
+  __pyx_v_c_options = NULL;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":275
+ *   c_options = grpc_ssl_server_credentials_create_options_using_config(
+ *     GRPC_SSL_REQUEST_AND_REQUIRE_CLIENT_CERTIFICATE_AND_VERIFY
+ *     if force_client_auth else             # <<<<<<<<<<<<<<
+ *     GRPC_SSL_DONT_REQUEST_CLIENT_CERTIFICATE,
+ *     c_cert_config)
+ */
+  if (__pyx_v_force_client_auth) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":274
+ *   # C-core assumes ownership of c_cert_config
+ *   c_options = grpc_ssl_server_credentials_create_options_using_config(
+ *     GRPC_SSL_REQUEST_AND_REQUIRE_CLIENT_CERTIFICATE_AND_VERIFY             # <<<<<<<<<<<<<<
+ *     if force_client_auth else
+ *     GRPC_SSL_DONT_REQUEST_CLIENT_CERTIFICATE,
+ */
+    __pyx_t_6 = GRPC_SSL_REQUEST_AND_REQUIRE_CLIENT_CERTIFICATE_AND_VERIFY;
+  } else {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":276
+ *     GRPC_SSL_REQUEST_AND_REQUIRE_CLIENT_CERTIFICATE_AND_VERIFY
+ *     if force_client_auth else
+ *     GRPC_SSL_DONT_REQUEST_CLIENT_CERTIFICATE,             # <<<<<<<<<<<<<<
+ *     c_cert_config)
+ *   # C-core assumes ownership of c_options
+ */
+    __pyx_t_6 = GRPC_SSL_DONT_REQUEST_CLIENT_CERTIFICATE;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":273
+ *   cdef grpc_ssl_server_credentials_options* c_options = NULL
+ *   # C-core assumes ownership of c_cert_config
+ *   c_options = grpc_ssl_server_credentials_create_options_using_config(             # <<<<<<<<<<<<<<
+ *     GRPC_SSL_REQUEST_AND_REQUIRE_CLIENT_CERTIFICATE_AND_VERIFY
+ *     if force_client_auth else
+ */
+  __pyx_v_c_options = grpc_ssl_server_credentials_create_options_using_config(__pyx_t_6, __pyx_v_c_cert_config);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":279
+ *     c_cert_config)
+ *   # C-core assumes ownership of c_options
+ *   credentials.c_credentials = grpc_ssl_server_credentials_create_with_options(c_options)             # <<<<<<<<<<<<<<
+ *   return credentials
+ * 
+ */
+  __pyx_v_credentials->c_credentials = grpc_ssl_server_credentials_create_with_options(__pyx_v_c_options);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":280
+ *   # C-core assumes ownership of c_options
+ *   credentials.c_credentials = grpc_ssl_server_credentials_create_with_options(c_options)
+ *   return credentials             # <<<<<<<<<<<<<<
+ * 
+ * def server_certificate_config_ssl(pem_root_certs, pem_key_cert_pairs):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF((PyObject *)__pyx_v_credentials);
+  __pyx_r = ((PyObject *)__pyx_v_credentials);
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":257
+ *   return c_ssl_pem_key_cert_pairs
+ * 
+ * def server_credentials_ssl(pem_root_certs, pem_key_cert_pairs,             # <<<<<<<<<<<<<<
+ *                            bint force_client_auth):
+ *   pem_root_certs = str_to_bytes(pem_root_certs)
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.server_credentials_ssl", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_credentials);
+  __Pyx_XDECREF(__pyx_v_pem_root_certs);
+  __Pyx_XDECREF(__pyx_v_pem_key_cert_pairs);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":282
+ *   return credentials
+ * 
+ * def server_certificate_config_ssl(pem_root_certs, pem_key_cert_pairs):             # <<<<<<<<<<<<<<
+ *   pem_root_certs = str_to_bytes(pem_root_certs)
+ *   pem_key_cert_pairs = list(pem_key_cert_pairs)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_25server_certificate_config_ssl(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_25server_certificate_config_ssl = {"server_certificate_config_ssl", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_25server_certificate_config_ssl, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_25server_certificate_config_ssl(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_pem_root_certs = 0;
+  PyObject *__pyx_v_pem_key_cert_pairs = 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("server_certificate_config_ssl (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_pem_root_certs,&__pyx_n_s_pem_key_cert_pairs,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_pem_root_certs)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 282, __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_pem_key_cert_pairs)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 282, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("server_certificate_config_ssl", 1, 2, 2, 1); __PYX_ERR(5, 282, __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, "server_certificate_config_ssl") < 0)) __PYX_ERR(5, 282, __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_pem_root_certs = values[0];
+    __pyx_v_pem_key_cert_pairs = values[1];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("server_certificate_config_ssl", 1, 2, 2, __pyx_nargs); __PYX_ERR(5, 282, __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("_cython.cygrpc.server_certificate_config_ssl", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_24server_certificate_config_ssl(__pyx_self, __pyx_v_pem_root_certs, __pyx_v_pem_key_cert_pairs);
+
+  /* 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_7_cython_6cygrpc_24server_certificate_config_ssl(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_pem_root_certs, PyObject *__pyx_v_pem_key_cert_pairs) {
+  struct __pyx_obj_7_cython_6cygrpc_ServerCertificateConfig *__pyx_v_cert_config = 0;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_t_2;
+  char const *__pyx_t_3;
+  Py_ssize_t __pyx_t_4;
+  grpc_ssl_pem_key_cert_pair *__pyx_t_5;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("server_certificate_config_ssl", 0);
+  __Pyx_INCREF(__pyx_v_pem_root_certs);
+  __Pyx_INCREF(__pyx_v_pem_key_cert_pairs);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":283
+ * 
+ * def server_certificate_config_ssl(pem_root_certs, pem_key_cert_pairs):
+ *   pem_root_certs = str_to_bytes(pem_root_certs)             # <<<<<<<<<<<<<<
+ *   pem_key_cert_pairs = list(pem_key_cert_pairs)
+ *   cdef ServerCertificateConfig cert_config = ServerCertificateConfig()
+ */
+  __pyx_t_1 = __pyx_f_7_cython_6cygrpc_str_to_bytes(__pyx_v_pem_root_certs); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 283, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF_SET(__pyx_v_pem_root_certs, __pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":284
+ * def server_certificate_config_ssl(pem_root_certs, pem_key_cert_pairs):
+ *   pem_root_certs = str_to_bytes(pem_root_certs)
+ *   pem_key_cert_pairs = list(pem_key_cert_pairs)             # <<<<<<<<<<<<<<
+ *   cdef ServerCertificateConfig cert_config = ServerCertificateConfig()
+ *   cert_config.references.append(pem_root_certs)
+ */
+  __pyx_t_1 = PySequence_List(__pyx_v_pem_key_cert_pairs); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 284, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF_SET(__pyx_v_pem_key_cert_pairs, __pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":285
+ *   pem_root_certs = str_to_bytes(pem_root_certs)
+ *   pem_key_cert_pairs = list(pem_key_cert_pairs)
+ *   cdef ServerCertificateConfig cert_config = ServerCertificateConfig()             # <<<<<<<<<<<<<<
+ *   cert_config.references.append(pem_root_certs)
+ *   cert_config.references.append(pem_key_cert_pairs)
+ */
+  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_7_cython_6cygrpc_ServerCertificateConfig)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 285, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_cert_config = ((struct __pyx_obj_7_cython_6cygrpc_ServerCertificateConfig *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":286
+ *   pem_key_cert_pairs = list(pem_key_cert_pairs)
+ *   cdef ServerCertificateConfig cert_config = ServerCertificateConfig()
+ *   cert_config.references.append(pem_root_certs)             # <<<<<<<<<<<<<<
+ *   cert_config.references.append(pem_key_cert_pairs)
+ *   cert_config.c_pem_root_certs = _get_c_pem_root_certs(pem_root_certs)
+ */
+  if (unlikely(__pyx_v_cert_config->references == Py_None)) {
+    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
+    __PYX_ERR(5, 286, __pyx_L1_error)
+  }
+  __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_cert_config->references, __pyx_v_pem_root_certs); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(5, 286, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":287
+ *   cdef ServerCertificateConfig cert_config = ServerCertificateConfig()
+ *   cert_config.references.append(pem_root_certs)
+ *   cert_config.references.append(pem_key_cert_pairs)             # <<<<<<<<<<<<<<
+ *   cert_config.c_pem_root_certs = _get_c_pem_root_certs(pem_root_certs)
+ *   cert_config.c_ssl_pem_key_cert_pairs_count = len(pem_key_cert_pairs)
+ */
+  if (unlikely(__pyx_v_cert_config->references == Py_None)) {
+    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
+    __PYX_ERR(5, 287, __pyx_L1_error)
+  }
+  __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_cert_config->references, __pyx_v_pem_key_cert_pairs); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(5, 287, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":288
+ *   cert_config.references.append(pem_root_certs)
+ *   cert_config.references.append(pem_key_cert_pairs)
+ *   cert_config.c_pem_root_certs = _get_c_pem_root_certs(pem_root_certs)             # <<<<<<<<<<<<<<
+ *   cert_config.c_ssl_pem_key_cert_pairs_count = len(pem_key_cert_pairs)
+ *   cert_config.c_ssl_pem_key_cert_pairs = _create_c_ssl_pem_key_cert_pairs(pem_key_cert_pairs)
+ */
+  __pyx_t_3 = __pyx_f_7_cython_6cygrpc__get_c_pem_root_certs(__pyx_v_pem_root_certs); if (unlikely(__pyx_t_3 == ((char const *)NULL) && PyErr_Occurred())) __PYX_ERR(5, 288, __pyx_L1_error)
+  __pyx_v_cert_config->c_pem_root_certs = __pyx_t_3;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":289
+ *   cert_config.references.append(pem_key_cert_pairs)
+ *   cert_config.c_pem_root_certs = _get_c_pem_root_certs(pem_root_certs)
+ *   cert_config.c_ssl_pem_key_cert_pairs_count = len(pem_key_cert_pairs)             # <<<<<<<<<<<<<<
+ *   cert_config.c_ssl_pem_key_cert_pairs = _create_c_ssl_pem_key_cert_pairs(pem_key_cert_pairs)
+ *   cert_config.c_cert_config = grpc_ssl_server_certificate_config_create(
+ */
+  __pyx_t_4 = PyObject_Length(__pyx_v_pem_key_cert_pairs); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(5, 289, __pyx_L1_error)
+  __pyx_v_cert_config->c_ssl_pem_key_cert_pairs_count = __pyx_t_4;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":290
+ *   cert_config.c_pem_root_certs = _get_c_pem_root_certs(pem_root_certs)
+ *   cert_config.c_ssl_pem_key_cert_pairs_count = len(pem_key_cert_pairs)
+ *   cert_config.c_ssl_pem_key_cert_pairs = _create_c_ssl_pem_key_cert_pairs(pem_key_cert_pairs)             # <<<<<<<<<<<<<<
+ *   cert_config.c_cert_config = grpc_ssl_server_certificate_config_create(
+ *     cert_config.c_pem_root_certs, cert_config.c_ssl_pem_key_cert_pairs,
+ */
+  __pyx_t_5 = __pyx_f_7_cython_6cygrpc__create_c_ssl_pem_key_cert_pairs(__pyx_v_pem_key_cert_pairs); if (unlikely(__pyx_t_5 == ((grpc_ssl_pem_key_cert_pair *)NULL) && PyErr_Occurred())) __PYX_ERR(5, 290, __pyx_L1_error)
+  __pyx_v_cert_config->c_ssl_pem_key_cert_pairs = __pyx_t_5;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":291
+ *   cert_config.c_ssl_pem_key_cert_pairs_count = len(pem_key_cert_pairs)
+ *   cert_config.c_ssl_pem_key_cert_pairs = _create_c_ssl_pem_key_cert_pairs(pem_key_cert_pairs)
+ *   cert_config.c_cert_config = grpc_ssl_server_certificate_config_create(             # <<<<<<<<<<<<<<
+ *     cert_config.c_pem_root_certs, cert_config.c_ssl_pem_key_cert_pairs,
+ *     cert_config.c_ssl_pem_key_cert_pairs_count)
+ */
+  __pyx_v_cert_config->c_cert_config = grpc_ssl_server_certificate_config_create(__pyx_v_cert_config->c_pem_root_certs, __pyx_v_cert_config->c_ssl_pem_key_cert_pairs, __pyx_v_cert_config->c_ssl_pem_key_cert_pairs_count);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":294
+ *     cert_config.c_pem_root_certs, cert_config.c_ssl_pem_key_cert_pairs,
+ *     cert_config.c_ssl_pem_key_cert_pairs_count)
+ *   return cert_config             # <<<<<<<<<<<<<<
+ * 
+ * def server_credentials_ssl_dynamic_cert_config(initial_cert_config,
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF((PyObject *)__pyx_v_cert_config);
+  __pyx_r = ((PyObject *)__pyx_v_cert_config);
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":282
+ *   return credentials
+ * 
+ * def server_certificate_config_ssl(pem_root_certs, pem_key_cert_pairs):             # <<<<<<<<<<<<<<
+ *   pem_root_certs = str_to_bytes(pem_root_certs)
+ *   pem_key_cert_pairs = list(pem_key_cert_pairs)
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.server_certificate_config_ssl", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_cert_config);
+  __Pyx_XDECREF(__pyx_v_pem_root_certs);
+  __Pyx_XDECREF(__pyx_v_pem_key_cert_pairs);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":296
+ *   return cert_config
+ * 
+ * def server_credentials_ssl_dynamic_cert_config(initial_cert_config,             # <<<<<<<<<<<<<<
+ *                                                cert_config_fetcher,
+ *                                                bint force_client_auth):
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_27server_credentials_ssl_dynamic_cert_config(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_27server_credentials_ssl_dynamic_cert_config = {"server_credentials_ssl_dynamic_cert_config", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_27server_credentials_ssl_dynamic_cert_config, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_27server_credentials_ssl_dynamic_cert_config(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_initial_cert_config = 0;
+  PyObject *__pyx_v_cert_config_fetcher = 0;
+  int __pyx_v_force_client_auth;
+  #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("server_credentials_ssl_dynamic_cert_config (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_initial_cert_config,&__pyx_n_s_cert_config_fetcher,&__pyx_n_s_force_client_auth,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_initial_cert_config)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 296, __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_cert_config_fetcher)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 296, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("server_credentials_ssl_dynamic_cert_config", 1, 3, 3, 1); __PYX_ERR(5, 296, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_force_client_auth)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 296, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("server_credentials_ssl_dynamic_cert_config", 1, 3, 3, 2); __PYX_ERR(5, 296, __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, "server_credentials_ssl_dynamic_cert_config") < 0)) __PYX_ERR(5, 296, __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_initial_cert_config = values[0];
+    __pyx_v_cert_config_fetcher = values[1];
+    __pyx_v_force_client_auth = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_force_client_auth == (int)-1) && PyErr_Occurred())) __PYX_ERR(5, 298, __pyx_L3_error)
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("server_credentials_ssl_dynamic_cert_config", 1, 3, 3, __pyx_nargs); __PYX_ERR(5, 296, __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("_cython.cygrpc.server_credentials_ssl_dynamic_cert_config", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_26server_credentials_ssl_dynamic_cert_config(__pyx_self, __pyx_v_initial_cert_config, __pyx_v_cert_config_fetcher, __pyx_v_force_client_auth);
+
+  /* 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_7_cython_6cygrpc_26server_credentials_ssl_dynamic_cert_config(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_initial_cert_config, PyObject *__pyx_v_cert_config_fetcher, int __pyx_v_force_client_auth) {
+  struct __pyx_obj_7_cython_6cygrpc_ServerCredentials *__pyx_v_credentials = 0;
+  grpc_ssl_server_credentials_options *__pyx_v_c_options;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_t_3;
+  int __pyx_t_4;
+  grpc_ssl_client_certificate_request_type __pyx_t_5;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("server_credentials_ssl_dynamic_cert_config", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":299
+ *                                                cert_config_fetcher,
+ *                                                bint force_client_auth):
+ *   if not isinstance(initial_cert_config, grpc.ServerCertificateConfiguration):             # <<<<<<<<<<<<<<
+ *     raise TypeError(
+ *         'initial_cert_config must be a grpc.ServerCertificateConfiguration')
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_grpc); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 299, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ServerCertificateConfiguration); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 299, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_3 = PyObject_IsInstance(__pyx_v_initial_cert_config, __pyx_t_2); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(5, 299, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_4 = (!__pyx_t_3);
+  if (unlikely(__pyx_t_4)) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":300
+ *                                                bint force_client_auth):
+ *   if not isinstance(initial_cert_config, grpc.ServerCertificateConfiguration):
+ *     raise TypeError(             # <<<<<<<<<<<<<<
+ *         'initial_cert_config must be a grpc.ServerCertificateConfiguration')
+ *   if not callable(cert_config_fetcher):
+ */
+    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 300, __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(5, 300, __pyx_L1_error)
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":299
+ *                                                cert_config_fetcher,
+ *                                                bint force_client_auth):
+ *   if not isinstance(initial_cert_config, grpc.ServerCertificateConfiguration):             # <<<<<<<<<<<<<<
+ *     raise TypeError(
+ *         'initial_cert_config must be a grpc.ServerCertificateConfiguration')
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":302
+ *     raise TypeError(
+ *         'initial_cert_config must be a grpc.ServerCertificateConfiguration')
+ *   if not callable(cert_config_fetcher):             # <<<<<<<<<<<<<<
+ *     raise TypeError('cert_config_fetcher must be callable')
+ *   cdef ServerCredentials credentials = ServerCredentials()
+ */
+  __pyx_t_4 = __Pyx_PyCallable_Check(__pyx_v_cert_config_fetcher); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(5, 302, __pyx_L1_error)
+  __pyx_t_3 = (!__pyx_t_4);
+  if (unlikely(__pyx_t_3)) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":303
+ *         'initial_cert_config must be a grpc.ServerCertificateConfiguration')
+ *   if not callable(cert_config_fetcher):
+ *     raise TypeError('cert_config_fetcher must be callable')             # <<<<<<<<<<<<<<
+ *   cdef ServerCredentials credentials = ServerCredentials()
+ *   credentials.initial_cert_config = initial_cert_config
+ */
+    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 303, __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(5, 303, __pyx_L1_error)
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":302
+ *     raise TypeError(
+ *         'initial_cert_config must be a grpc.ServerCertificateConfiguration')
+ *   if not callable(cert_config_fetcher):             # <<<<<<<<<<<<<<
+ *     raise TypeError('cert_config_fetcher must be callable')
+ *   cdef ServerCredentials credentials = ServerCredentials()
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":304
+ *   if not callable(cert_config_fetcher):
+ *     raise TypeError('cert_config_fetcher must be callable')
+ *   cdef ServerCredentials credentials = ServerCredentials()             # <<<<<<<<<<<<<<
+ *   credentials.initial_cert_config = initial_cert_config
+ *   credentials.cert_config_fetcher = cert_config_fetcher
+ */
+  __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_7_cython_6cygrpc_ServerCredentials)); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 304, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_v_credentials = ((struct __pyx_obj_7_cython_6cygrpc_ServerCredentials *)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":305
+ *     raise TypeError('cert_config_fetcher must be callable')
+ *   cdef ServerCredentials credentials = ServerCredentials()
+ *   credentials.initial_cert_config = initial_cert_config             # <<<<<<<<<<<<<<
+ *   credentials.cert_config_fetcher = cert_config_fetcher
+ *   cdef grpc_ssl_server_credentials_options* c_options = NULL
+ */
+  __Pyx_INCREF(__pyx_v_initial_cert_config);
+  __Pyx_GIVEREF(__pyx_v_initial_cert_config);
+  __Pyx_GOTREF(__pyx_v_credentials->initial_cert_config);
+  __Pyx_DECREF(__pyx_v_credentials->initial_cert_config);
+  __pyx_v_credentials->initial_cert_config = __pyx_v_initial_cert_config;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":306
+ *   cdef ServerCredentials credentials = ServerCredentials()
+ *   credentials.initial_cert_config = initial_cert_config
+ *   credentials.cert_config_fetcher = cert_config_fetcher             # <<<<<<<<<<<<<<
+ *   cdef grpc_ssl_server_credentials_options* c_options = NULL
+ *   c_options = grpc_ssl_server_credentials_create_options_using_config_fetcher(
+ */
+  __Pyx_INCREF(__pyx_v_cert_config_fetcher);
+  __Pyx_GIVEREF(__pyx_v_cert_config_fetcher);
+  __Pyx_GOTREF(__pyx_v_credentials->cert_config_fetcher);
+  __Pyx_DECREF(__pyx_v_credentials->cert_config_fetcher);
+  __pyx_v_credentials->cert_config_fetcher = __pyx_v_cert_config_fetcher;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":307
+ *   credentials.initial_cert_config = initial_cert_config
+ *   credentials.cert_config_fetcher = cert_config_fetcher
+ *   cdef grpc_ssl_server_credentials_options* c_options = NULL             # <<<<<<<<<<<<<<
+ *   c_options = grpc_ssl_server_credentials_create_options_using_config_fetcher(
+ *     GRPC_SSL_REQUEST_AND_REQUIRE_CLIENT_CERTIFICATE_AND_VERIFY
+ */
+  __pyx_v_c_options = NULL;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":310
+ *   c_options = grpc_ssl_server_credentials_create_options_using_config_fetcher(
+ *     GRPC_SSL_REQUEST_AND_REQUIRE_CLIENT_CERTIFICATE_AND_VERIFY
+ *     if force_client_auth else             # <<<<<<<<<<<<<<
+ *     GRPC_SSL_DONT_REQUEST_CLIENT_CERTIFICATE,
+ *     _server_cert_config_fetcher_wrapper,
+ */
+  if (__pyx_v_force_client_auth) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":309
+ *   cdef grpc_ssl_server_credentials_options* c_options = NULL
+ *   c_options = grpc_ssl_server_credentials_create_options_using_config_fetcher(
+ *     GRPC_SSL_REQUEST_AND_REQUIRE_CLIENT_CERTIFICATE_AND_VERIFY             # <<<<<<<<<<<<<<
+ *     if force_client_auth else
+ *     GRPC_SSL_DONT_REQUEST_CLIENT_CERTIFICATE,
+ */
+    __pyx_t_5 = GRPC_SSL_REQUEST_AND_REQUIRE_CLIENT_CERTIFICATE_AND_VERIFY;
+  } else {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":311
+ *     GRPC_SSL_REQUEST_AND_REQUIRE_CLIENT_CERTIFICATE_AND_VERIFY
+ *     if force_client_auth else
+ *     GRPC_SSL_DONT_REQUEST_CLIENT_CERTIFICATE,             # <<<<<<<<<<<<<<
+ *     _server_cert_config_fetcher_wrapper,
+ *     <void*>credentials)
+ */
+    __pyx_t_5 = GRPC_SSL_DONT_REQUEST_CLIENT_CERTIFICATE;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":308
+ *   credentials.cert_config_fetcher = cert_config_fetcher
+ *   cdef grpc_ssl_server_credentials_options* c_options = NULL
+ *   c_options = grpc_ssl_server_credentials_create_options_using_config_fetcher(             # <<<<<<<<<<<<<<
+ *     GRPC_SSL_REQUEST_AND_REQUIRE_CLIENT_CERTIFICATE_AND_VERIFY
+ *     if force_client_auth else
+ */
+  __pyx_v_c_options = grpc_ssl_server_credentials_create_options_using_config_fetcher(__pyx_t_5, __pyx_f_7_cython_6cygrpc__server_cert_config_fetcher_wrapper, ((void *)__pyx_v_credentials));
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":315
+ *     <void*>credentials)
+ *   # C-core assumes ownership of c_options
+ *   credentials.c_credentials = grpc_ssl_server_credentials_create_with_options(c_options)             # <<<<<<<<<<<<<<
+ *   return credentials
+ * 
+ */
+  __pyx_v_credentials->c_credentials = grpc_ssl_server_credentials_create_with_options(__pyx_v_c_options);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":316
+ *   # C-core assumes ownership of c_options
+ *   credentials.c_credentials = grpc_ssl_server_credentials_create_with_options(c_options)
+ *   return credentials             # <<<<<<<<<<<<<<
+ * 
+ * cdef grpc_ssl_certificate_config_reload_status _server_cert_config_fetcher_wrapper(
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF((PyObject *)__pyx_v_credentials);
+  __pyx_r = ((PyObject *)__pyx_v_credentials);
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":296
+ *   return cert_config
+ * 
+ * def server_credentials_ssl_dynamic_cert_config(initial_cert_config,             # <<<<<<<<<<<<<<
+ *                                                cert_config_fetcher,
+ *                                                bint force_client_auth):
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("_cython.cygrpc.server_credentials_ssl_dynamic_cert_config", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_credentials);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":318
+ *   return credentials
+ * 
+ * cdef grpc_ssl_certificate_config_reload_status _server_cert_config_fetcher_wrapper(             # <<<<<<<<<<<<<<
+ *         void* user_data, grpc_ssl_server_certificate_config **config) noexcept with gil:
+ *   # This is a credentials.ServerCertificateConfig
+ */
+
+static grpc_ssl_certificate_config_reload_status __pyx_f_7_cython_6cygrpc__server_cert_config_fetcher_wrapper(void *__pyx_v_user_data, grpc_ssl_server_certificate_config **__pyx_v_config) {
+  struct __pyx_obj_7_cython_6cygrpc_ServerCertificateConfig *__pyx_v_cert_config = 0;
+  struct __pyx_obj_7_cython_6cygrpc_ServerCredentials *__pyx_v_credentials = NULL;
+  PyObject *__pyx_v_user_cb = NULL;
+  PyObject *__pyx_v_cert_config_wrapper = NULL;
+  grpc_ssl_certificate_config_reload_status __pyx_r;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  unsigned int __pyx_t_8;
+  int __pyx_t_9;
+  PyObject *__pyx_t_10 = NULL;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  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("_server_cert_config_fetcher_wrapper", 0);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":321
+ *         void* user_data, grpc_ssl_server_certificate_config **config) noexcept with gil:
+ *   # This is a credentials.ServerCertificateConfig
+ *   cdef ServerCertificateConfig cert_config = None             # <<<<<<<<<<<<<<
+ *   if not user_data:
+ *     raise ValueError('internal error: user_data must be specified')
+ */
+  __Pyx_INCREF(Py_None);
+  __pyx_v_cert_config = ((struct __pyx_obj_7_cython_6cygrpc_ServerCertificateConfig *)Py_None);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":322
+ *   # This is a credentials.ServerCertificateConfig
+ *   cdef ServerCertificateConfig cert_config = None
+ *   if not user_data:             # <<<<<<<<<<<<<<
+ *     raise ValueError('internal error: user_data must be specified')
+ *   credentials = <ServerCredentials>user_data
+ */
+  __pyx_t_1 = (!(__pyx_v_user_data != 0));
+  if (unlikely(__pyx_t_1)) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":323
+ *   cdef ServerCertificateConfig cert_config = None
+ *   if not user_data:
+ *     raise ValueError('internal error: user_data must be specified')             # <<<<<<<<<<<<<<
+ *   credentials = <ServerCredentials>user_data
+ *   if not credentials.initial_cert_config_fetched:
+ */
+    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__26, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 323, __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(5, 323, __pyx_L1_error)
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":322
+ *   # This is a credentials.ServerCertificateConfig
+ *   cdef ServerCertificateConfig cert_config = None
+ *   if not user_data:             # <<<<<<<<<<<<<<
+ *     raise ValueError('internal error: user_data must be specified')
+ *   credentials = <ServerCredentials>user_data
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":324
+ *   if not user_data:
+ *     raise ValueError('internal error: user_data must be specified')
+ *   credentials = <ServerCredentials>user_data             # <<<<<<<<<<<<<<
+ *   if not credentials.initial_cert_config_fetched:
+ *     # C-core is asking for the initial cert config
+ */
+  __pyx_t_2 = ((PyObject *)__pyx_v_user_data);
+  __Pyx_INCREF(__pyx_t_2);
+  __pyx_v_credentials = ((struct __pyx_obj_7_cython_6cygrpc_ServerCredentials *)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":325
+ *     raise ValueError('internal error: user_data must be specified')
+ *   credentials = <ServerCredentials>user_data
+ *   if not credentials.initial_cert_config_fetched:             # <<<<<<<<<<<<<<
+ *     # C-core is asking for the initial cert config
+ *     credentials.initial_cert_config_fetched = True
+ */
+  __pyx_t_1 = (!__pyx_v_credentials->initial_cert_config_fetched);
+  if (__pyx_t_1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":327
+ *   if not credentials.initial_cert_config_fetched:
+ *     # C-core is asking for the initial cert config
+ *     credentials.initial_cert_config_fetched = True             # <<<<<<<<<<<<<<
+ *     cert_config = credentials.initial_cert_config._certificate_configuration
+ *   else:
+ */
+    __pyx_v_credentials->initial_cert_config_fetched = 1;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":328
+ *     # C-core is asking for the initial cert config
+ *     credentials.initial_cert_config_fetched = True
+ *     cert_config = credentials.initial_cert_config._certificate_configuration             # <<<<<<<<<<<<<<
+ *   else:
+ *     user_cb = credentials.cert_config_fetcher
+ */
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_credentials->initial_cert_config, __pyx_n_s_certificate_configuration); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 328, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_7_cython_6cygrpc_ServerCertificateConfig))))) __PYX_ERR(5, 328, __pyx_L1_error)
+    __Pyx_DECREF_SET(__pyx_v_cert_config, ((struct __pyx_obj_7_cython_6cygrpc_ServerCertificateConfig *)__pyx_t_2));
+    __pyx_t_2 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":325
+ *     raise ValueError('internal error: user_data must be specified')
+ *   credentials = <ServerCredentials>user_data
+ *   if not credentials.initial_cert_config_fetched:             # <<<<<<<<<<<<<<
+ *     # C-core is asking for the initial cert config
+ *     credentials.initial_cert_config_fetched = True
+ */
+    goto __pyx_L4;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":330
+ *     cert_config = credentials.initial_cert_config._certificate_configuration
+ *   else:
+ *     user_cb = credentials.cert_config_fetcher             # <<<<<<<<<<<<<<
+ *     try:
+ *       cert_config_wrapper = user_cb()
+ */
+  /*else*/ {
+    __pyx_t_2 = __pyx_v_credentials->cert_config_fetcher;
+    __Pyx_INCREF(__pyx_t_2);
+    __pyx_v_user_cb = __pyx_t_2;
+    __pyx_t_2 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":331
+ *   else:
+ *     user_cb = credentials.cert_config_fetcher
+ *     try:             # <<<<<<<<<<<<<<
+ *       cert_config_wrapper = user_cb()
+ *     except Exception:
+ */
+    {
+      __Pyx_PyThreadState_declare
+      __Pyx_PyThreadState_assign
+      __Pyx_ExceptionSave(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5);
+      __Pyx_XGOTREF(__pyx_t_3);
+      __Pyx_XGOTREF(__pyx_t_4);
+      __Pyx_XGOTREF(__pyx_t_5);
+      /*try:*/ {
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":332
+ *     user_cb = credentials.cert_config_fetcher
+ *     try:
+ *       cert_config_wrapper = user_cb()             # <<<<<<<<<<<<<<
+ *     except Exception:
+ *       _LOGGER.exception('Error fetching certificate config')
+ */
+        __Pyx_INCREF(__pyx_v_user_cb);
+        __pyx_t_6 = __pyx_v_user_cb; __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_2 = __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_2)) __PYX_ERR(5, 332, __pyx_L5_error)
+          __Pyx_GOTREF(__pyx_t_2);
+          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+        }
+        __pyx_v_cert_config_wrapper = __pyx_t_2;
+        __pyx_t_2 = 0;
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":331
+ *   else:
+ *     user_cb = credentials.cert_config_fetcher
+ *     try:             # <<<<<<<<<<<<<<
+ *       cert_config_wrapper = user_cb()
+ *     except Exception:
+ */
+      }
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+      goto __pyx_L10_try_end;
+      __pyx_L5_error:;
+      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":333
+ *     try:
+ *       cert_config_wrapper = user_cb()
+ *     except Exception:             # <<<<<<<<<<<<<<
+ *       _LOGGER.exception('Error fetching certificate config')
+ *       return GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_FAIL
+ */
+      __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
+      if (__pyx_t_9) {
+        __Pyx_AddTraceback("_cython.cygrpc._server_cert_config_fetcher_wrapper", __pyx_clineno, __pyx_lineno, __pyx_filename);
+        if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(5, 333, __pyx_L7_except_error)
+        __Pyx_XGOTREF(__pyx_t_2);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":334
+ *       cert_config_wrapper = user_cb()
+ *     except Exception:
+ *       _LOGGER.exception('Error fetching certificate config')             # <<<<<<<<<<<<<<
+ *       return GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_FAIL
+ *     if cert_config_wrapper is None:
+ */
+        __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_LOGGER); if (unlikely(!__pyx_t_11)) __PYX_ERR(5, 334, __pyx_L7_except_error)
+        __Pyx_GOTREF(__pyx_t_11);
+        __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_exception); if (unlikely(!__pyx_t_12)) __PYX_ERR(5, 334, __pyx_L7_except_error)
+        __Pyx_GOTREF(__pyx_t_12);
+        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+        __pyx_t_11 = NULL;
+        __pyx_t_8 = 0;
+        #if CYTHON_UNPACK_METHODS
+        if (unlikely(PyMethod_Check(__pyx_t_12))) {
+          __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_12);
+          if (likely(__pyx_t_11)) {
+            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
+            __Pyx_INCREF(__pyx_t_11);
+            __Pyx_INCREF(function);
+            __Pyx_DECREF_SET(__pyx_t_12, function);
+            __pyx_t_8 = 1;
+          }
+        }
+        #endif
+        {
+          PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_kp_s_Error_fetching_certificate_confi};
+          __pyx_t_10 = __Pyx_PyObject_FastCall(__pyx_t_12, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8);
+          __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
+          if (unlikely(!__pyx_t_10)) __PYX_ERR(5, 334, __pyx_L7_except_error)
+          __Pyx_GOTREF(__pyx_t_10);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+        }
+        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":335
+ *     except Exception:
+ *       _LOGGER.exception('Error fetching certificate config')
+ *       return GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_FAIL             # <<<<<<<<<<<<<<
+ *     if cert_config_wrapper is None:
+ *       return GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_UNCHANGED
+ */
+        __pyx_r = GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_FAIL;
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L8_except_return;
+      }
+      goto __pyx_L7_except_error;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":331
+ *   else:
+ *     user_cb = credentials.cert_config_fetcher
+ *     try:             # <<<<<<<<<<<<<<
+ *       cert_config_wrapper = user_cb()
+ *     except Exception:
+ */
+      __pyx_L7_except_error:;
+      __Pyx_XGIVEREF(__pyx_t_3);
+      __Pyx_XGIVEREF(__pyx_t_4);
+      __Pyx_XGIVEREF(__pyx_t_5);
+      __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
+      goto __pyx_L1_error;
+      __pyx_L8_except_return:;
+      __Pyx_XGIVEREF(__pyx_t_3);
+      __Pyx_XGIVEREF(__pyx_t_4);
+      __Pyx_XGIVEREF(__pyx_t_5);
+      __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
+      goto __pyx_L0;
+      __pyx_L10_try_end:;
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":336
+ *       _LOGGER.exception('Error fetching certificate config')
+ *       return GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_FAIL
+ *     if cert_config_wrapper is None:             # <<<<<<<<<<<<<<
+ *       return GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_UNCHANGED
+ *     elif not isinstance(
+ */
+    __pyx_t_1 = (__pyx_v_cert_config_wrapper == Py_None);
+    if (__pyx_t_1) {
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":337
+ *       return GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_FAIL
+ *     if cert_config_wrapper is None:
+ *       return GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_UNCHANGED             # <<<<<<<<<<<<<<
+ *     elif not isinstance(
+ *         cert_config_wrapper, grpc.ServerCertificateConfiguration):
+ */
+      __pyx_r = GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_UNCHANGED;
+      goto __pyx_L0;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":336
+ *       _LOGGER.exception('Error fetching certificate config')
+ *       return GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_FAIL
+ *     if cert_config_wrapper is None:             # <<<<<<<<<<<<<<
+ *       return GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_UNCHANGED
+ *     elif not isinstance(
+ */
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":339
+ *       return GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_UNCHANGED
+ *     elif not isinstance(
+ *         cert_config_wrapper, grpc.ServerCertificateConfiguration):             # <<<<<<<<<<<<<<
+ *       _LOGGER.error(
+ *           'Error fetching certificate configuration: certificate '
+ */
+    __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_grpc); if (unlikely(!__pyx_t_7)) __PYX_ERR(5, 339, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_7);
+    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_ServerCertificateConfiguration); if (unlikely(!__pyx_t_6)) __PYX_ERR(5, 339, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_6);
+    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":338
+ *     if cert_config_wrapper is None:
+ *       return GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_UNCHANGED
+ *     elif not isinstance(             # <<<<<<<<<<<<<<
+ *         cert_config_wrapper, grpc.ServerCertificateConfiguration):
+ *       _LOGGER.error(
+ */
+    __pyx_t_1 = PyObject_IsInstance(__pyx_v_cert_config_wrapper, __pyx_t_6); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(5, 338, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+    __pyx_t_13 = (!__pyx_t_1);
+    if (__pyx_t_13) {
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":340
+ *     elif not isinstance(
+ *         cert_config_wrapper, grpc.ServerCertificateConfiguration):
+ *       _LOGGER.error(             # <<<<<<<<<<<<<<
+ *           'Error fetching certificate configuration: certificate '
+ *           'configuration must be of type grpc.ServerCertificateConfiguration, '
+ */
+      __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_LOGGER); if (unlikely(!__pyx_t_7)) __PYX_ERR(5, 340, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_7);
+      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_error); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 340, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":343
+ *           'Error fetching certificate configuration: certificate '
+ *           'configuration must be of type grpc.ServerCertificateConfiguration, '
+ *           'not %s' % type(cert_config_wrapper).__name__)             # <<<<<<<<<<<<<<
+ *       return GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_FAIL
+ *     else:
+ */
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_cert_config_wrapper)), __pyx_n_s_name_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(5, 343, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_7);
+      __pyx_t_10 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Error_fetching_certificate_confi_2, __pyx_t_7); if (unlikely(!__pyx_t_10)) __PYX_ERR(5, 343, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_10);
+      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+      __pyx_t_7 = NULL;
+      __pyx_t_8 = 0;
+      #if CYTHON_UNPACK_METHODS
+      if (unlikely(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[2] = {__pyx_t_7, __pyx_t_10};
+        __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8);
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+        if (unlikely(!__pyx_t_6)) __PYX_ERR(5, 340, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_6);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      }
+      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":344
+ *           'configuration must be of type grpc.ServerCertificateConfiguration, '
+ *           'not %s' % type(cert_config_wrapper).__name__)
+ *       return GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_FAIL             # <<<<<<<<<<<<<<
+ *     else:
+ *       cert_config = cert_config_wrapper._certificate_configuration
+ */
+      __pyx_r = GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_FAIL;
+      goto __pyx_L0;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":338
+ *     if cert_config_wrapper is None:
+ *       return GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_UNCHANGED
+ *     elif not isinstance(             # <<<<<<<<<<<<<<
+ *         cert_config_wrapper, grpc.ServerCertificateConfiguration):
+ *       _LOGGER.error(
+ */
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":346
+ *       return GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_FAIL
+ *     else:
+ *       cert_config = cert_config_wrapper._certificate_configuration             # <<<<<<<<<<<<<<
+ *   config[0] = <grpc_ssl_server_certificate_config*>cert_config.c_cert_config
+ *   # our caller will assume ownership of memory, so we have to recreate
+ */
+    /*else*/ {
+      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_cert_config_wrapper, __pyx_n_s_certificate_configuration); if (unlikely(!__pyx_t_6)) __PYX_ERR(5, 346, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_6);
+      if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_7_cython_6cygrpc_ServerCertificateConfig))))) __PYX_ERR(5, 346, __pyx_L1_error)
+      __Pyx_DECREF_SET(__pyx_v_cert_config, ((struct __pyx_obj_7_cython_6cygrpc_ServerCertificateConfig *)__pyx_t_6));
+      __pyx_t_6 = 0;
+    }
+  }
+  __pyx_L4:;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":347
+ *     else:
+ *       cert_config = cert_config_wrapper._certificate_configuration
+ *   config[0] = <grpc_ssl_server_certificate_config*>cert_config.c_cert_config             # <<<<<<<<<<<<<<
+ *   # our caller will assume ownership of memory, so we have to recreate
+ *   # a copy of c_cert_config here
+ */
+  (__pyx_v_config[0]) = ((grpc_ssl_server_certificate_config *)__pyx_v_cert_config->c_cert_config);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":350
+ *   # our caller will assume ownership of memory, so we have to recreate
+ *   # a copy of c_cert_config here
+ *   cert_config.c_cert_config = grpc_ssl_server_certificate_config_create(             # <<<<<<<<<<<<<<
+ *       cert_config.c_pem_root_certs, cert_config.c_ssl_pem_key_cert_pairs,
+ *       cert_config.c_ssl_pem_key_cert_pairs_count)
+ */
+  __pyx_v_cert_config->c_cert_config = grpc_ssl_server_certificate_config_create(__pyx_v_cert_config->c_pem_root_certs, __pyx_v_cert_config->c_ssl_pem_key_cert_pairs, __pyx_v_cert_config->c_ssl_pem_key_cert_pairs_count);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":353
+ *       cert_config.c_pem_root_certs, cert_config.c_ssl_pem_key_cert_pairs,
+ *       cert_config.c_ssl_pem_key_cert_pairs_count)
+ *   return GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_NEW             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_r = GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_NEW;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":318
+ *   return credentials
+ * 
+ * cdef grpc_ssl_certificate_config_reload_status _server_cert_config_fetcher_wrapper(             # <<<<<<<<<<<<<<
+ *         void* user_data, grpc_ssl_server_certificate_config **config) noexcept with gil:
+ *   # This is a credentials.ServerCertificateConfig
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_XDECREF(__pyx_t_12);
+  __Pyx_WriteUnraisable("_cython.cygrpc._server_cert_config_fetcher_wrapper", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = (grpc_ssl_certificate_config_reload_status) 0;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_cert_config);
+  __Pyx_XDECREF((PyObject *)__pyx_v_credentials);
+  __Pyx_XDECREF(__pyx_v_user_cb);
+  __Pyx_XDECREF(__pyx_v_cert_config_wrapper);
+  __Pyx_RefNannyFinishContext();
+  #ifdef WITH_THREAD
+  __Pyx_PyGILState_Release(__pyx_gilstate_save);
+  #endif
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":362
+ * cdef class LocalChannelCredentials(ChannelCredentials):
+ * 
+ *   def __cinit__(self, grpc_local_connect_type local_connect_type):             # <<<<<<<<<<<<<<
+ *     self._local_connect_type = local_connect_type
+ * 
+ */
+
+/* Python wrapper */
+static int __pyx_pw_7_cython_6cygrpc_23LocalChannelCredentials_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_7_cython_6cygrpc_23LocalChannelCredentials_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  grpc_local_connect_type __pyx_v_local_connect_type;
+  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject* values[1] = {0};
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  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);
+  {
+    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_local_connect_type,0};
+    if (__pyx_kwds) {
+      Py_ssize_t kw_args;
+      switch (__pyx_nargs) {
+        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
+      switch (__pyx_nargs) {
+        case  0:
+        if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_local_connect_type)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 362, __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, "__cinit__") < 0)) __PYX_ERR(5, 362, __pyx_L3_error)
+      }
+    } else if (unlikely(__pyx_nargs != 1)) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+    }
+    __pyx_v_local_connect_type = ((grpc_local_connect_type)__Pyx_PyInt_As_grpc_local_connect_type(values[0])); if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 362, __pyx_L3_error)
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, __pyx_nargs); __PYX_ERR(5, 362, __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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_AddTraceback("_cython.cygrpc.LocalChannelCredentials.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_23LocalChannelCredentials___cinit__(((struct __pyx_obj_7_cython_6cygrpc_LocalChannelCredentials *)__pyx_v_self), __pyx_v_local_connect_type);
+
+  /* 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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_7_cython_6cygrpc_23LocalChannelCredentials___cinit__(struct __pyx_obj_7_cython_6cygrpc_LocalChannelCredentials *__pyx_v_self, grpc_local_connect_type __pyx_v_local_connect_type) {
+  int __pyx_r;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":363
+ * 
+ *   def __cinit__(self, grpc_local_connect_type local_connect_type):
+ *     self._local_connect_type = local_connect_type             # <<<<<<<<<<<<<<
+ * 
+ *   cdef grpc_channel_credentials *c(self) except *:
+ */
+  __pyx_v_self->_local_connect_type = __pyx_v_local_connect_type;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":362
+ * cdef class LocalChannelCredentials(ChannelCredentials):
+ * 
+ *   def __cinit__(self, grpc_local_connect_type local_connect_type):             # <<<<<<<<<<<<<<
+ *     self._local_connect_type = local_connect_type
+ * 
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":365
+ *     self._local_connect_type = local_connect_type
+ * 
+ *   cdef grpc_channel_credentials *c(self) except *:             # <<<<<<<<<<<<<<
+ *     cdef grpc_local_connect_type local_connect_type
+ *     local_connect_type = self._local_connect_type
+ */
+
+static grpc_channel_credentials *__pyx_f_7_cython_6cygrpc_23LocalChannelCredentials_c(struct __pyx_obj_7_cython_6cygrpc_LocalChannelCredentials *__pyx_v_self) {
+  grpc_local_connect_type __pyx_v_local_connect_type;
+  grpc_channel_credentials *__pyx_r;
+  grpc_local_connect_type __pyx_t_1;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":367
+ *   cdef grpc_channel_credentials *c(self) except *:
+ *     cdef grpc_local_connect_type local_connect_type
+ *     local_connect_type = self._local_connect_type             # <<<<<<<<<<<<<<
+ *     return grpc_local_credentials_create(local_connect_type)
+ * 
+ */
+  __pyx_t_1 = __pyx_v_self->_local_connect_type;
+  __pyx_v_local_connect_type = __pyx_t_1;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":368
+ *     cdef grpc_local_connect_type local_connect_type
+ *     local_connect_type = self._local_connect_type
+ *     return grpc_local_credentials_create(local_connect_type)             # <<<<<<<<<<<<<<
+ * 
+ * def channel_credentials_local(grpc_local_connect_type local_connect_type):
+ */
+  __pyx_r = grpc_local_credentials_create(__pyx_v_local_connect_type);
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":365
+ *     self._local_connect_type = local_connect_type
+ * 
+ *   cdef grpc_channel_credentials *c(self) except *:             # <<<<<<<<<<<<<<
+ *     cdef grpc_local_connect_type local_connect_type
+ *     local_connect_type = self._local_connect_type
+ */
+
+  /* function exit code */
+  __pyx_L0:;
+  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_7_cython_6cygrpc_23LocalChannelCredentials_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_23LocalChannelCredentials_3__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_23LocalChannelCredentials_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_23LocalChannelCredentials_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_7_cython_6cygrpc_23LocalChannelCredentials_2__reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc_LocalChannelCredentials *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_23LocalChannelCredentials_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_LocalChannelCredentials *__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(10, 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("_cython.cygrpc.LocalChannelCredentials.__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_7_cython_6cygrpc_23LocalChannelCredentials_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_23LocalChannelCredentials_5__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_23LocalChannelCredentials_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_23LocalChannelCredentials_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(10, 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(10, 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(10, 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("_cython.cygrpc.LocalChannelCredentials.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_23LocalChannelCredentials_4__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc_LocalChannelCredentials *)__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_7_cython_6cygrpc_23LocalChannelCredentials_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_LocalChannelCredentials *__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(10, 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("_cython.cygrpc.LocalChannelCredentials.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":370
+ *     return grpc_local_credentials_create(local_connect_type)
+ * 
+ * def channel_credentials_local(grpc_local_connect_type local_connect_type):             # <<<<<<<<<<<<<<
+ *   return LocalChannelCredentials(local_connect_type)
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_29channel_credentials_local(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_29channel_credentials_local = {"channel_credentials_local", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_29channel_credentials_local, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_29channel_credentials_local(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
+) {
+  grpc_local_connect_type __pyx_v_local_connect_type;
+  #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("channel_credentials_local (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_local_connect_type,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_local_connect_type)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 370, __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, "channel_credentials_local") < 0)) __PYX_ERR(5, 370, __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_local_connect_type = ((grpc_local_connect_type)__Pyx_PyInt_As_grpc_local_connect_type(values[0])); if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 370, __pyx_L3_error)
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("channel_credentials_local", 1, 1, 1, __pyx_nargs); __PYX_ERR(5, 370, __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("_cython.cygrpc.channel_credentials_local", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_28channel_credentials_local(__pyx_self, __pyx_v_local_connect_type);
+
+  /* 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_7_cython_6cygrpc_28channel_credentials_local(CYTHON_UNUSED PyObject *__pyx_self, grpc_local_connect_type __pyx_v_local_connect_type) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("channel_credentials_local", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":371
+ * 
+ * def channel_credentials_local(grpc_local_connect_type local_connect_type):
+ *   return LocalChannelCredentials(local_connect_type)             # <<<<<<<<<<<<<<
+ * 
+ * cdef class InsecureChannelCredentials(ChannelCredentials):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_grpc_local_connect_type(__pyx_v_local_connect_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 371, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_7_cython_6cygrpc_LocalChannelCredentials), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 371, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":370
+ *     return grpc_local_credentials_create(local_connect_type)
+ * 
+ * def channel_credentials_local(grpc_local_connect_type local_connect_type):             # <<<<<<<<<<<<<<
+ *   return LocalChannelCredentials(local_connect_type)
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("_cython.cygrpc.channel_credentials_local", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":375
+ * cdef class InsecureChannelCredentials(ChannelCredentials):
+ * 
+ *   cdef grpc_channel_credentials *c(self) except *:             # <<<<<<<<<<<<<<
+ *     return grpc_insecure_credentials_create()
+ * 
+ */
+
+static grpc_channel_credentials *__pyx_f_7_cython_6cygrpc_26InsecureChannelCredentials_c(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_InsecureChannelCredentials *__pyx_v_self) {
+  grpc_channel_credentials *__pyx_r;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":376
+ * 
+ *   cdef grpc_channel_credentials *c(self) except *:
+ *     return grpc_insecure_credentials_create()             # <<<<<<<<<<<<<<
+ * 
+ * def channel_credentials_insecure():
+ */
+  __pyx_r = grpc_insecure_credentials_create();
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":375
+ * cdef class InsecureChannelCredentials(ChannelCredentials):
+ * 
+ *   cdef grpc_channel_credentials *c(self) except *:             # <<<<<<<<<<<<<<
+ *     return grpc_insecure_credentials_create()
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L0:;
+  return __pyx_r;
+}
+
+/* "(tree fragment)":1
+ * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
+ *     cdef tuple state
+ *     cdef object _dict
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_26InsecureChannelCredentials_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_26InsecureChannelCredentials_1__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_26InsecureChannelCredentials_1__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_26InsecureChannelCredentials_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_7_cython_6cygrpc_26InsecureChannelCredentials___reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc_InsecureChannelCredentials *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_26InsecureChannelCredentials___reduce_cython__(struct __pyx_obj_7_cython_6cygrpc_InsecureChannelCredentials *__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(10, 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(10, 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(10, 8, __pyx_L1_error);
+    __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 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_InsecureChannelCredentials, (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_InsecureChannelCredentials, (type(self), 0xe3b0c44, None), state
+ *     else:
+ */
+  if (__pyx_v_use_setstate) {
+
+    /* "(tree fragment)":13
+ *         use_setstate = False
+ *     if use_setstate:
+ *         return __pyx_unpickle_InsecureChannelCredentials, (type(self), 0xe3b0c44, None), state             # <<<<<<<<<<<<<<
+ *     else:
+ *         return __pyx_unpickle_InsecureChannelCredentials, (type(self), 0xe3b0c44, state)
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_pyx_unpickle_InsecureChannelCr); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 13, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 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(10, 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(10, 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(10, 13, __pyx_L1_error);
+    __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 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(10, 13, __pyx_L1_error);
+    __Pyx_GIVEREF(__pyx_t_1);
+    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1)) __PYX_ERR(10, 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(10, 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_InsecureChannelCredentials, (type(self), 0xe3b0c44, None), state
+ *     else:
+ */
+  }
+
+  /* "(tree fragment)":15
+ *         return __pyx_unpickle_InsecureChannelCredentials, (type(self), 0xe3b0c44, None), state
+ *     else:
+ *         return __pyx_unpickle_InsecureChannelCredentials, (type(self), 0xe3b0c44, state)             # <<<<<<<<<<<<<<
+ * def __setstate_cython__(self, __pyx_state):
+ *     __pyx_unpickle_InsecureChannelCredentials__set_state(self, __pyx_state)
+ */
+  /*else*/ {
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_InsecureChannelCr); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 15, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 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(10, 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(10, 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(10, 15, __pyx_L1_error);
+    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 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(10, 15, __pyx_L1_error);
+    __Pyx_GIVEREF(__pyx_t_1);
+    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1)) __PYX_ERR(10, 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("_cython.cygrpc.InsecureChannelCredentials.__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_InsecureChannelCredentials, (type(self), 0xe3b0c44, state)
+ * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
+ *     __pyx_unpickle_InsecureChannelCredentials__set_state(self, __pyx_state)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_26InsecureChannelCredentials_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_26InsecureChannelCredentials_3__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_26InsecureChannelCredentials_3__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_26InsecureChannelCredentials_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(10, 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(10, 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(10, 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("_cython.cygrpc.InsecureChannelCredentials.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_26InsecureChannelCredentials_2__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc_InsecureChannelCredentials *)__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_7_cython_6cygrpc_26InsecureChannelCredentials_2__setstate_cython__(struct __pyx_obj_7_cython_6cygrpc_InsecureChannelCredentials *__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_InsecureChannelCredentials, (type(self), 0xe3b0c44, state)
+ * def __setstate_cython__(self, __pyx_state):
+ *     __pyx_unpickle_InsecureChannelCredentials__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(10, 17, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_7_cython_6cygrpc___pyx_unpickle_InsecureChannelCredentials__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 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_InsecureChannelCredentials, (type(self), 0xe3b0c44, state)
+ * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
+ *     __pyx_unpickle_InsecureChannelCredentials__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("_cython.cygrpc.InsecureChannelCredentials.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":378
+ *     return grpc_insecure_credentials_create()
+ * 
+ * def channel_credentials_insecure():             # <<<<<<<<<<<<<<
+ *   return InsecureChannelCredentials()
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_31channel_credentials_insecure(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_31channel_credentials_insecure = {"channel_credentials_insecure", (PyCFunction)__pyx_pw_7_cython_6cygrpc_31channel_credentials_insecure, METH_NOARGS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_31channel_credentials_insecure(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("channel_credentials_insecure (wrapper)", 0);
+  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_30channel_credentials_insecure(__pyx_self);
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_30channel_credentials_insecure(CYTHON_UNUSED PyObject *__pyx_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("channel_credentials_insecure", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":379
+ * 
+ * def channel_credentials_insecure():
+ *   return InsecureChannelCredentials()             # <<<<<<<<<<<<<<
+ * 
+ * def server_credentials_local(grpc_local_connect_type local_connect_type):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_7_cython_6cygrpc_InsecureChannelCredentials)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 379, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":378
+ *     return grpc_insecure_credentials_create()
+ * 
+ * def channel_credentials_insecure():             # <<<<<<<<<<<<<<
+ *   return InsecureChannelCredentials()
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.channel_credentials_insecure", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":381
+ *   return InsecureChannelCredentials()
+ * 
+ * def server_credentials_local(grpc_local_connect_type local_connect_type):             # <<<<<<<<<<<<<<
+ *   cdef ServerCredentials credentials = ServerCredentials()
+ *   credentials.c_credentials = grpc_local_server_credentials_create(local_connect_type)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_33server_credentials_local(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_33server_credentials_local = {"server_credentials_local", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_33server_credentials_local, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_33server_credentials_local(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
+) {
+  grpc_local_connect_type __pyx_v_local_connect_type;
+  #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("server_credentials_local (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_local_connect_type,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_local_connect_type)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 381, __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, "server_credentials_local") < 0)) __PYX_ERR(5, 381, __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_local_connect_type = ((grpc_local_connect_type)__Pyx_PyInt_As_grpc_local_connect_type(values[0])); if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 381, __pyx_L3_error)
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("server_credentials_local", 1, 1, 1, __pyx_nargs); __PYX_ERR(5, 381, __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("_cython.cygrpc.server_credentials_local", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_32server_credentials_local(__pyx_self, __pyx_v_local_connect_type);
+
+  /* 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_7_cython_6cygrpc_32server_credentials_local(CYTHON_UNUSED PyObject *__pyx_self, grpc_local_connect_type __pyx_v_local_connect_type) {
+  struct __pyx_obj_7_cython_6cygrpc_ServerCredentials *__pyx_v_credentials = 0;
+  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("server_credentials_local", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":382
+ * 
+ * def server_credentials_local(grpc_local_connect_type local_connect_type):
+ *   cdef ServerCredentials credentials = ServerCredentials()             # <<<<<<<<<<<<<<
+ *   credentials.c_credentials = grpc_local_server_credentials_create(local_connect_type)
+ *   return credentials
+ */
+  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_7_cython_6cygrpc_ServerCredentials)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 382, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_credentials = ((struct __pyx_obj_7_cython_6cygrpc_ServerCredentials *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":383
+ * def server_credentials_local(grpc_local_connect_type local_connect_type):
+ *   cdef ServerCredentials credentials = ServerCredentials()
+ *   credentials.c_credentials = grpc_local_server_credentials_create(local_connect_type)             # <<<<<<<<<<<<<<
+ *   return credentials
+ * 
+ */
+  __pyx_v_credentials->c_credentials = grpc_local_server_credentials_create(__pyx_v_local_connect_type);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":384
+ *   cdef ServerCredentials credentials = ServerCredentials()
+ *   credentials.c_credentials = grpc_local_server_credentials_create(local_connect_type)
+ *   return credentials             # <<<<<<<<<<<<<<
+ * 
+ * def xds_server_credentials(ServerCredentials fallback_credentials):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF((PyObject *)__pyx_v_credentials);
+  __pyx_r = ((PyObject *)__pyx_v_credentials);
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":381
+ *   return InsecureChannelCredentials()
+ * 
+ * def server_credentials_local(grpc_local_connect_type local_connect_type):             # <<<<<<<<<<<<<<
+ *   cdef ServerCredentials credentials = ServerCredentials()
+ *   credentials.c_credentials = grpc_local_server_credentials_create(local_connect_type)
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.server_credentials_local", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_credentials);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":386
+ *   return credentials
+ * 
+ * def xds_server_credentials(ServerCredentials fallback_credentials):             # <<<<<<<<<<<<<<
+ *   cdef ServerCredentials credentials = ServerCredentials()
+ *   credentials.c_credentials = grpc_xds_server_credentials_create(fallback_credentials.c_credentials)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_35xds_server_credentials(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_35xds_server_credentials = {"xds_server_credentials", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_35xds_server_credentials, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_35xds_server_credentials(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
+) {
+  struct __pyx_obj_7_cython_6cygrpc_ServerCredentials *__pyx_v_fallback_credentials = 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("xds_server_credentials (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_fallback_credentials,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_fallback_credentials)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 386, __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, "xds_server_credentials") < 0)) __PYX_ERR(5, 386, __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_fallback_credentials = ((struct __pyx_obj_7_cython_6cygrpc_ServerCredentials *)values[0]);
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("xds_server_credentials", 1, 1, 1, __pyx_nargs); __PYX_ERR(5, 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("_cython.cygrpc.xds_server_credentials", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fallback_credentials), __pyx_ptype_7_cython_6cygrpc_ServerCredentials, 1, "fallback_credentials", 0))) __PYX_ERR(5, 386, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_34xds_server_credentials(__pyx_self, __pyx_v_fallback_credentials);
+
+  /* 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_7_cython_6cygrpc_34xds_server_credentials(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7_cython_6cygrpc_ServerCredentials *__pyx_v_fallback_credentials) {
+  struct __pyx_obj_7_cython_6cygrpc_ServerCredentials *__pyx_v_credentials = 0;
+  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("xds_server_credentials", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":387
+ * 
+ * def xds_server_credentials(ServerCredentials fallback_credentials):
+ *   cdef ServerCredentials credentials = ServerCredentials()             # <<<<<<<<<<<<<<
+ *   credentials.c_credentials = grpc_xds_server_credentials_create(fallback_credentials.c_credentials)
+ *   # NOTE: We do not need to call grpc_server_credentials_release on the
+ */
+  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_7_cython_6cygrpc_ServerCredentials)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 387, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_credentials = ((struct __pyx_obj_7_cython_6cygrpc_ServerCredentials *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":388
+ * def xds_server_credentials(ServerCredentials fallback_credentials):
+ *   cdef ServerCredentials credentials = ServerCredentials()
+ *   credentials.c_credentials = grpc_xds_server_credentials_create(fallback_credentials.c_credentials)             # <<<<<<<<<<<<<<
+ *   # NOTE: We do not need to call grpc_server_credentials_release on the
+ *   # fallback credentials here because this will be done by the __dealloc__
+ */
+  __pyx_v_credentials->c_credentials = grpc_xds_server_credentials_create(__pyx_v_fallback_credentials->c_credentials);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":392
+ *   # fallback credentials here because this will be done by the __dealloc__
+ *   # method of its Cython wrapper.
+ *   return credentials             # <<<<<<<<<<<<<<
+ * 
+ * def insecure_server_credentials():
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF((PyObject *)__pyx_v_credentials);
+  __pyx_r = ((PyObject *)__pyx_v_credentials);
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":386
+ *   return credentials
+ * 
+ * def xds_server_credentials(ServerCredentials fallback_credentials):             # <<<<<<<<<<<<<<
+ *   cdef ServerCredentials credentials = ServerCredentials()
+ *   credentials.c_credentials = grpc_xds_server_credentials_create(fallback_credentials.c_credentials)
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.xds_server_credentials", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_credentials);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":394
+ *   return credentials
+ * 
+ * def insecure_server_credentials():             # <<<<<<<<<<<<<<
+ *   cdef ServerCredentials credentials = ServerCredentials()
+ *   credentials.c_credentials = grpc_insecure_server_credentials_create()
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_37insecure_server_credentials(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_37insecure_server_credentials = {"insecure_server_credentials", (PyCFunction)__pyx_pw_7_cython_6cygrpc_37insecure_server_credentials, METH_NOARGS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_37insecure_server_credentials(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("insecure_server_credentials (wrapper)", 0);
+  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_36insecure_server_credentials(__pyx_self);
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_36insecure_server_credentials(CYTHON_UNUSED PyObject *__pyx_self) {
+  struct __pyx_obj_7_cython_6cygrpc_ServerCredentials *__pyx_v_credentials = 0;
+  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("insecure_server_credentials", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":395
+ * 
+ * def insecure_server_credentials():
+ *   cdef ServerCredentials credentials = ServerCredentials()             # <<<<<<<<<<<<<<
+ *   credentials.c_credentials = grpc_insecure_server_credentials_create()
+ *   return credentials
+ */
+  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_7_cython_6cygrpc_ServerCredentials)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 395, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_credentials = ((struct __pyx_obj_7_cython_6cygrpc_ServerCredentials *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":396
+ * def insecure_server_credentials():
+ *   cdef ServerCredentials credentials = ServerCredentials()
+ *   credentials.c_credentials = grpc_insecure_server_credentials_create()             # <<<<<<<<<<<<<<
+ *   return credentials
+ * 
+ */
+  __pyx_v_credentials->c_credentials = grpc_insecure_server_credentials_create();
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":397
+ *   cdef ServerCredentials credentials = ServerCredentials()
+ *   credentials.c_credentials = grpc_insecure_server_credentials_create()
+ *   return credentials             # <<<<<<<<<<<<<<
+ * 
+ * cdef class ALTSChannelCredentials(ChannelCredentials):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF((PyObject *)__pyx_v_credentials);
+  __pyx_r = ((PyObject *)__pyx_v_credentials);
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":394
+ *   return credentials
+ * 
+ * def insecure_server_credentials():             # <<<<<<<<<<<<<<
+ *   cdef ServerCredentials credentials = ServerCredentials()
+ *   credentials.c_credentials = grpc_insecure_server_credentials_create()
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.insecure_server_credentials", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_credentials);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":401
+ * cdef class ALTSChannelCredentials(ChannelCredentials):
+ * 
+ *   def __cinit__(self, list service_accounts):             # <<<<<<<<<<<<<<
+ *     self.c_options = grpc_alts_credentials_client_options_create()
+ *     cdef str account
+ */
+
+/* Python wrapper */
+static int __pyx_pw_7_cython_6cygrpc_22ALTSChannelCredentials_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_7_cython_6cygrpc_22ALTSChannelCredentials_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_service_accounts = 0;
+  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject* values[1] = {0};
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  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);
+  {
+    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_service_accounts,0};
+    if (__pyx_kwds) {
+      Py_ssize_t kw_args;
+      switch (__pyx_nargs) {
+        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
+      switch (__pyx_nargs) {
+        case  0:
+        if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_service_accounts)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 401, __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, "__cinit__") < 0)) __PYX_ERR(5, 401, __pyx_L3_error)
+      }
+    } else if (unlikely(__pyx_nargs != 1)) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+    }
+    __pyx_v_service_accounts = ((PyObject*)values[0]);
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, __pyx_nargs); __PYX_ERR(5, 401, __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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_AddTraceback("_cython.cygrpc.ALTSChannelCredentials.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_service_accounts), (&PyList_Type), 1, "service_accounts", 1))) __PYX_ERR(5, 401, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_22ALTSChannelCredentials___cinit__(((struct __pyx_obj_7_cython_6cygrpc_ALTSChannelCredentials *)__pyx_v_self), __pyx_v_service_accounts);
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = -1;
+  __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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_7_cython_6cygrpc_22ALTSChannelCredentials___cinit__(struct __pyx_obj_7_cython_6cygrpc_ALTSChannelCredentials *__pyx_v_self, PyObject *__pyx_v_service_accounts) {
+  PyObject *__pyx_v_account = 0;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  Py_ssize_t __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  char const *__pyx_t_4;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__cinit__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":402
+ * 
+ *   def __cinit__(self, list service_accounts):
+ *     self.c_options = grpc_alts_credentials_client_options_create()             # <<<<<<<<<<<<<<
+ *     cdef str account
+ *     for account in service_accounts:
+ */
+  __pyx_v_self->c_options = grpc_alts_credentials_client_options_create();
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":404
+ *     self.c_options = grpc_alts_credentials_client_options_create()
+ *     cdef str account
+ *     for account in service_accounts:             # <<<<<<<<<<<<<<
+ *       grpc_alts_credentials_client_options_add_target_service_account(
+ *           self.c_options, str_to_bytes(account))
+ */
+  if (unlikely(__pyx_v_service_accounts == Py_None)) {
+    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
+    __PYX_ERR(5, 404, __pyx_L1_error)
+  }
+  __pyx_t_1 = __pyx_v_service_accounts; __Pyx_INCREF(__pyx_t_1);
+  __pyx_t_2 = 0;
+  for (;;) {
+    {
+      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, 404, __pyx_L1_error)
+      #endif
+      if (__pyx_t_2 >= __pyx_temp) break;
+    }
+    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+    __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(5, 404, __pyx_L1_error)
+    #else
+    __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 404, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    #endif
+    if (!(likely(PyString_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_3))) __PYX_ERR(5, 404, __pyx_L1_error)
+    __Pyx_XDECREF_SET(__pyx_v_account, ((PyObject*)__pyx_t_3));
+    __pyx_t_3 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":406
+ *     for account in service_accounts:
+ *       grpc_alts_credentials_client_options_add_target_service_account(
+ *           self.c_options, str_to_bytes(account))             # <<<<<<<<<<<<<<
+ * 
+ *   def __dealloc__(self):
+ */
+    __pyx_t_3 = __pyx_f_7_cython_6cygrpc_str_to_bytes(__pyx_v_account); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 406, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    if (unlikely(__pyx_t_3 == Py_None)) {
+      PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
+      __PYX_ERR(5, 406, __pyx_L1_error)
+    }
+    __pyx_t_4 = __Pyx_PyBytes_AsString(__pyx_t_3); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(5, 406, __pyx_L1_error)
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":405
+ *     cdef str account
+ *     for account in service_accounts:
+ *       grpc_alts_credentials_client_options_add_target_service_account(             # <<<<<<<<<<<<<<
+ *           self.c_options, str_to_bytes(account))
+ * 
+ */
+    grpc_alts_credentials_client_options_add_target_service_account(__pyx_v_self->c_options, __pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":404
+ *     self.c_options = grpc_alts_credentials_client_options_create()
+ *     cdef str account
+ *     for account in service_accounts:             # <<<<<<<<<<<<<<
+ *       grpc_alts_credentials_client_options_add_target_service_account(
+ *           self.c_options, str_to_bytes(account))
+ */
+  }
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":401
+ * cdef class ALTSChannelCredentials(ChannelCredentials):
+ * 
+ *   def __cinit__(self, list service_accounts):             # <<<<<<<<<<<<<<
+ *     self.c_options = grpc_alts_credentials_client_options_create()
+ *     cdef str account
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("_cython.cygrpc.ALTSChannelCredentials.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_account);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":408
+ *           self.c_options, str_to_bytes(account))
+ * 
+ *   def __dealloc__(self):             # <<<<<<<<<<<<<<
+ *     if self.c_options != NULL:
+ *       grpc_alts_credentials_options_destroy(self.c_options)
+ */
+
+/* Python wrapper */
+static void __pyx_pw_7_cython_6cygrpc_22ALTSChannelCredentials_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
+static void __pyx_pw_7_cython_6cygrpc_22ALTSChannelCredentials_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_7_cython_6cygrpc_22ALTSChannelCredentials_2__dealloc__(((struct __pyx_obj_7_cython_6cygrpc_ALTSChannelCredentials *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+}
+
+static void __pyx_pf_7_cython_6cygrpc_22ALTSChannelCredentials_2__dealloc__(struct __pyx_obj_7_cython_6cygrpc_ALTSChannelCredentials *__pyx_v_self) {
+  int __pyx_t_1;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":409
+ * 
+ *   def __dealloc__(self):
+ *     if self.c_options != NULL:             # <<<<<<<<<<<<<<
+ *       grpc_alts_credentials_options_destroy(self.c_options)
+ * 
+ */
+  __pyx_t_1 = (__pyx_v_self->c_options != NULL);
+  if (__pyx_t_1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":410
+ *   def __dealloc__(self):
+ *     if self.c_options != NULL:
+ *       grpc_alts_credentials_options_destroy(self.c_options)             # <<<<<<<<<<<<<<
+ * 
+ *   cdef grpc_channel_credentials *c(self) except *:
+ */
+    grpc_alts_credentials_options_destroy(__pyx_v_self->c_options);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":409
+ * 
+ *   def __dealloc__(self):
+ *     if self.c_options != NULL:             # <<<<<<<<<<<<<<
+ *       grpc_alts_credentials_options_destroy(self.c_options)
+ * 
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":408
+ *           self.c_options, str_to_bytes(account))
+ * 
+ *   def __dealloc__(self):             # <<<<<<<<<<<<<<
+ *     if self.c_options != NULL:
+ *       grpc_alts_credentials_options_destroy(self.c_options)
+ */
+
+  /* function exit code */
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":412
+ *       grpc_alts_credentials_options_destroy(self.c_options)
+ * 
+ *   cdef grpc_channel_credentials *c(self) except *:             # <<<<<<<<<<<<<<
+ *     return grpc_alts_credentials_create(self.c_options)
+ * 
+ */
+
+static grpc_channel_credentials *__pyx_f_7_cython_6cygrpc_22ALTSChannelCredentials_c(struct __pyx_obj_7_cython_6cygrpc_ALTSChannelCredentials *__pyx_v_self) {
+  grpc_channel_credentials *__pyx_r;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":413
+ * 
+ *   cdef grpc_channel_credentials *c(self) except *:
+ *     return grpc_alts_credentials_create(self.c_options)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_r = grpc_alts_credentials_create(__pyx_v_self->c_options);
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":412
+ *       grpc_alts_credentials_options_destroy(self.c_options)
+ * 
+ *   cdef grpc_channel_credentials *c(self) except *:             # <<<<<<<<<<<<<<
+ *     return grpc_alts_credentials_create(self.c_options)
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L0:;
+  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_7_cython_6cygrpc_22ALTSChannelCredentials_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_22ALTSChannelCredentials_5__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_22ALTSChannelCredentials_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_22ALTSChannelCredentials_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_7_cython_6cygrpc_22ALTSChannelCredentials_4__reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc_ALTSChannelCredentials *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_22ALTSChannelCredentials_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_ALTSChannelCredentials *__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(10, 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("_cython.cygrpc.ALTSChannelCredentials.__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_7_cython_6cygrpc_22ALTSChannelCredentials_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_22ALTSChannelCredentials_7__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_22ALTSChannelCredentials_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_22ALTSChannelCredentials_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(10, 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(10, 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(10, 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("_cython.cygrpc.ALTSChannelCredentials.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_22ALTSChannelCredentials_6__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc_ALTSChannelCredentials *)__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_7_cython_6cygrpc_22ALTSChannelCredentials_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_ALTSChannelCredentials *__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(10, 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("_cython.cygrpc.ALTSChannelCredentials.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":416
+ * 
+ * 
+ * def channel_credentials_alts(list service_accounts):             # <<<<<<<<<<<<<<
+ *   return ALTSChannelCredentials(service_accounts)
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_39channel_credentials_alts(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_39channel_credentials_alts = {"channel_credentials_alts", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_39channel_credentials_alts, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_39channel_credentials_alts(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_service_accounts = 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("channel_credentials_alts (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_service_accounts,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_service_accounts)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 416, __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, "channel_credentials_alts") < 0)) __PYX_ERR(5, 416, __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_service_accounts = ((PyObject*)values[0]);
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("channel_credentials_alts", 1, 1, 1, __pyx_nargs); __PYX_ERR(5, 416, __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("_cython.cygrpc.channel_credentials_alts", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_service_accounts), (&PyList_Type), 1, "service_accounts", 1))) __PYX_ERR(5, 416, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_38channel_credentials_alts(__pyx_self, __pyx_v_service_accounts);
+
+  /* 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_7_cython_6cygrpc_38channel_credentials_alts(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_service_accounts) {
+  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("channel_credentials_alts", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":417
+ * 
+ * def channel_credentials_alts(list service_accounts):
+ *   return ALTSChannelCredentials(service_accounts)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_7_cython_6cygrpc_ALTSChannelCredentials), __pyx_v_service_accounts); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 417, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":416
+ * 
+ * 
+ * def channel_credentials_alts(list service_accounts):             # <<<<<<<<<<<<<<
+ *   return ALTSChannelCredentials(service_accounts)
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.channel_credentials_alts", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":420
+ * 
+ * 
+ * def server_credentials_alts():             # <<<<<<<<<<<<<<
+ *   cdef ServerCredentials credentials = ServerCredentials()
+ *   cdef grpc_alts_credentials_options* c_options = grpc_alts_credentials_server_options_create()
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_41server_credentials_alts(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_41server_credentials_alts = {"server_credentials_alts", (PyCFunction)__pyx_pw_7_cython_6cygrpc_41server_credentials_alts, METH_NOARGS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_41server_credentials_alts(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("server_credentials_alts (wrapper)", 0);
+  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_40server_credentials_alts(__pyx_self);
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_40server_credentials_alts(CYTHON_UNUSED PyObject *__pyx_self) {
+  struct __pyx_obj_7_cython_6cygrpc_ServerCredentials *__pyx_v_credentials = 0;
+  grpc_alts_credentials_options *__pyx_v_c_options;
+  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("server_credentials_alts", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":421
+ * 
+ * def server_credentials_alts():
+ *   cdef ServerCredentials credentials = ServerCredentials()             # <<<<<<<<<<<<<<
+ *   cdef grpc_alts_credentials_options* c_options = grpc_alts_credentials_server_options_create()
+ *   credentials.c_credentials = grpc_alts_server_credentials_create(c_options)
+ */
+  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_7_cython_6cygrpc_ServerCredentials)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 421, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_credentials = ((struct __pyx_obj_7_cython_6cygrpc_ServerCredentials *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":422
+ * def server_credentials_alts():
+ *   cdef ServerCredentials credentials = ServerCredentials()
+ *   cdef grpc_alts_credentials_options* c_options = grpc_alts_credentials_server_options_create()             # <<<<<<<<<<<<<<
+ *   credentials.c_credentials = grpc_alts_server_credentials_create(c_options)
+ *   # Options can be destroyed as deep copy was performed.
+ */
+  __pyx_v_c_options = grpc_alts_credentials_server_options_create();
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":423
+ *   cdef ServerCredentials credentials = ServerCredentials()
+ *   cdef grpc_alts_credentials_options* c_options = grpc_alts_credentials_server_options_create()
+ *   credentials.c_credentials = grpc_alts_server_credentials_create(c_options)             # <<<<<<<<<<<<<<
+ *   # Options can be destroyed as deep copy was performed.
+ *   grpc_alts_credentials_options_destroy(c_options)
+ */
+  __pyx_v_credentials->c_credentials = grpc_alts_server_credentials_create(__pyx_v_c_options);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":425
+ *   credentials.c_credentials = grpc_alts_server_credentials_create(c_options)
+ *   # Options can be destroyed as deep copy was performed.
+ *   grpc_alts_credentials_options_destroy(c_options)             # <<<<<<<<<<<<<<
+ *   return credentials
+ * 
+ */
+  grpc_alts_credentials_options_destroy(__pyx_v_c_options);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":426
+ *   # Options can be destroyed as deep copy was performed.
+ *   grpc_alts_credentials_options_destroy(c_options)
+ *   return credentials             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF((PyObject *)__pyx_v_credentials);
+  __pyx_r = ((PyObject *)__pyx_v_credentials);
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":420
+ * 
+ * 
+ * def server_credentials_alts():             # <<<<<<<<<<<<<<
+ *   cdef ServerCredentials credentials = ServerCredentials()
+ *   cdef grpc_alts_credentials_options* c_options = grpc_alts_credentials_server_options_create()
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.server_credentials_alts", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_credentials);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":433
+ *   cdef grpc_call_credentials* _call_creds
+ * 
+ *   def __cinit__(self, CallCredentials call_creds):             # <<<<<<<<<<<<<<
+ *     self._c_creds = NULL
+ *     self._call_creds = call_creds.c()
+ */
+
+/* Python wrapper */
+static int __pyx_pw_7_cython_6cygrpc_31ComputeEngineChannelCredentials_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_7_cython_6cygrpc_31ComputeEngineChannelCredentials_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct __pyx_obj_7_cython_6cygrpc_CallCredentials *__pyx_v_call_creds = 0;
+  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject* values[1] = {0};
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  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);
+  {
+    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_call_creds,0};
+    if (__pyx_kwds) {
+      Py_ssize_t kw_args;
+      switch (__pyx_nargs) {
+        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
+      switch (__pyx_nargs) {
+        case  0:
+        if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_call_creds)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 433, __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, "__cinit__") < 0)) __PYX_ERR(5, 433, __pyx_L3_error)
+      }
+    } else if (unlikely(__pyx_nargs != 1)) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+    }
+    __pyx_v_call_creds = ((struct __pyx_obj_7_cython_6cygrpc_CallCredentials *)values[0]);
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, __pyx_nargs); __PYX_ERR(5, 433, __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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_AddTraceback("_cython.cygrpc.ComputeEngineChannelCredentials.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_call_creds), __pyx_ptype_7_cython_6cygrpc_CallCredentials, 1, "call_creds", 0))) __PYX_ERR(5, 433, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_31ComputeEngineChannelCredentials___cinit__(((struct __pyx_obj_7_cython_6cygrpc_ComputeEngineChannelCredentials *)__pyx_v_self), __pyx_v_call_creds);
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = -1;
+  __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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_7_cython_6cygrpc_31ComputeEngineChannelCredentials___cinit__(struct __pyx_obj_7_cython_6cygrpc_ComputeEngineChannelCredentials *__pyx_v_self, struct __pyx_obj_7_cython_6cygrpc_CallCredentials *__pyx_v_call_creds) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  grpc_call_credentials *__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("__cinit__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":434
+ * 
+ *   def __cinit__(self, CallCredentials call_creds):
+ *     self._c_creds = NULL             # <<<<<<<<<<<<<<
+ *     self._call_creds = call_creds.c()
+ *     if self._call_creds == NULL:
+ */
+  __pyx_v_self->_c_creds = NULL;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":435
+ *   def __cinit__(self, CallCredentials call_creds):
+ *     self._c_creds = NULL
+ *     self._call_creds = call_creds.c()             # <<<<<<<<<<<<<<
+ *     if self._call_creds == NULL:
+ *       raise ValueError("Call credentials may not be NULL.")
+ */
+  __pyx_t_1 = ((struct __pyx_vtabstruct_7_cython_6cygrpc_CallCredentials *)__pyx_v_call_creds->__pyx_vtab)->c(__pyx_v_call_creds); if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 435, __pyx_L1_error)
+  __pyx_v_self->_call_creds = __pyx_t_1;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":436
+ *     self._c_creds = NULL
+ *     self._call_creds = call_creds.c()
+ *     if self._call_creds == NULL:             # <<<<<<<<<<<<<<
+ *       raise ValueError("Call credentials may not be NULL.")
+ * 
+ */
+  __pyx_t_2 = (__pyx_v_self->_call_creds == NULL);
+  if (unlikely(__pyx_t_2)) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":437
+ *     self._call_creds = call_creds.c()
+ *     if self._call_creds == NULL:
+ *       raise ValueError("Call credentials may not be NULL.")             # <<<<<<<<<<<<<<
+ * 
+ *   cdef grpc_channel_credentials *c(self) except *:
+ */
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__27, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 437, __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(5, 437, __pyx_L1_error)
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":436
+ *     self._c_creds = NULL
+ *     self._call_creds = call_creds.c()
+ *     if self._call_creds == NULL:             # <<<<<<<<<<<<<<
+ *       raise ValueError("Call credentials may not be NULL.")
+ * 
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":433
+ *   cdef grpc_call_credentials* _call_creds
+ * 
+ *   def __cinit__(self, CallCredentials call_creds):             # <<<<<<<<<<<<<<
+ *     self._c_creds = NULL
+ *     self._call_creds = call_creds.c()
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("_cython.cygrpc.ComputeEngineChannelCredentials.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":439
+ *       raise ValueError("Call credentials may not be NULL.")
+ * 
+ *   cdef grpc_channel_credentials *c(self) except *:             # <<<<<<<<<<<<<<
+ *     with nogil:
+ *       self._c_creds = grpc_google_default_credentials_create(self._call_creds)
+ */
+
+static grpc_channel_credentials *__pyx_f_7_cython_6cygrpc_31ComputeEngineChannelCredentials_c(struct __pyx_obj_7_cython_6cygrpc_ComputeEngineChannelCredentials *__pyx_v_self) {
+  grpc_channel_credentials *__pyx_r;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":440
+ * 
+ *   cdef grpc_channel_credentials *c(self) except *:
+ *     with nogil:             # <<<<<<<<<<<<<<
+ *       self._c_creds = grpc_google_default_credentials_create(self._call_creds)
+ *       return self._c_creds
+ */
+  {
+      #ifdef WITH_THREAD
+      PyThreadState *_save;
+      _save = NULL;
+      Py_UNBLOCK_THREADS
+      __Pyx_FastGIL_Remember();
+      #endif
+      /*try:*/ {
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":441
+ *   cdef grpc_channel_credentials *c(self) except *:
+ *     with nogil:
+ *       self._c_creds = grpc_google_default_credentials_create(self._call_creds)             # <<<<<<<<<<<<<<
+ *       return self._c_creds
+ * 
+ */
+        __pyx_v_self->_c_creds = grpc_google_default_credentials_create(__pyx_v_self->_call_creds);
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":442
+ *     with nogil:
+ *       self._c_creds = grpc_google_default_credentials_create(self._call_creds)
+ *       return self._c_creds             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+        __pyx_r = __pyx_v_self->_c_creds;
+        goto __pyx_L3_return;
+      }
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":440
+ * 
+ *   cdef grpc_channel_credentials *c(self) except *:
+ *     with nogil:             # <<<<<<<<<<<<<<
+ *       self._c_creds = grpc_google_default_credentials_create(self._call_creds)
+ *       return self._c_creds
+ */
+      /*finally:*/ {
+        __pyx_L3_return: {
+          #ifdef WITH_THREAD
+          __Pyx_FastGIL_Forget();
+          Py_BLOCK_THREADS
+          #endif
+          goto __pyx_L0;
+        }
+      }
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":439
+ *       raise ValueError("Call credentials may not be NULL.")
+ * 
+ *   cdef grpc_channel_credentials *c(self) except *:             # <<<<<<<<<<<<<<
+ *     with nogil:
+ *       self._c_creds = grpc_google_default_credentials_create(self._call_creds)
+ */
+
+  /* function exit code */
+  __pyx_L0:;
+  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_7_cython_6cygrpc_31ComputeEngineChannelCredentials_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_31ComputeEngineChannelCredentials_3__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_31ComputeEngineChannelCredentials_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_31ComputeEngineChannelCredentials_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_7_cython_6cygrpc_31ComputeEngineChannelCredentials_2__reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc_ComputeEngineChannelCredentials *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_31ComputeEngineChannelCredentials_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_ComputeEngineChannelCredentials *__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(10, 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("_cython.cygrpc.ComputeEngineChannelCredentials.__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_7_cython_6cygrpc_31ComputeEngineChannelCredentials_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_31ComputeEngineChannelCredentials_5__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_31ComputeEngineChannelCredentials_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_31ComputeEngineChannelCredentials_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(10, 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(10, 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(10, 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("_cython.cygrpc.ComputeEngineChannelCredentials.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_31ComputeEngineChannelCredentials_4__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc_ComputeEngineChannelCredentials *)__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_7_cython_6cygrpc_31ComputeEngineChannelCredentials_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_ComputeEngineChannelCredentials *__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(10, 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("_cython.cygrpc.ComputeEngineChannelCredentials.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":445
+ * 
+ * 
+ * def channel_credentials_compute_engine(call_creds):             # <<<<<<<<<<<<<<
+ *   return ComputeEngineChannelCredentials(call_creds)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_43channel_credentials_compute_engine(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_43channel_credentials_compute_engine = {"channel_credentials_compute_engine", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_43channel_credentials_compute_engine, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_43channel_credentials_compute_engine(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_call_creds = 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("channel_credentials_compute_engine (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_call_creds,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_call_creds)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 445, __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, "channel_credentials_compute_engine") < 0)) __PYX_ERR(5, 445, __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_call_creds = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("channel_credentials_compute_engine", 1, 1, 1, __pyx_nargs); __PYX_ERR(5, 445, __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("_cython.cygrpc.channel_credentials_compute_engine", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_42channel_credentials_compute_engine(__pyx_self, __pyx_v_call_creds);
+
+  /* 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_7_cython_6cygrpc_42channel_credentials_compute_engine(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_call_creds) {
+  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("channel_credentials_compute_engine", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":446
+ * 
+ * def channel_credentials_compute_engine(call_creds):
+ *   return ComputeEngineChannelCredentials(call_creds)             # <<<<<<<<<<<<<<
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_7_cython_6cygrpc_ComputeEngineChannelCredentials), __pyx_v_call_creds); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 446, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":445
+ * 
+ * 
+ * def channel_credentials_compute_engine(call_creds):             # <<<<<<<<<<<<<<
+ *   return ComputeEngineChannelCredentials(call_creds)
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.channel_credentials_compute_engine", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":18
+ * g_interrupt_check_period_ms = 200
+ * 
+ * cdef grpc_event _next(grpc_completion_queue *c_completion_queue, deadline) except *:             # <<<<<<<<<<<<<<
+ *   global g_interrupt_check_period_ms
+ *   cdef gpr_timespec c_increment
+ */
+
+static grpc_event __pyx_f_7_cython_6cygrpc__next(grpc_completion_queue *__pyx_v_c_completion_queue, PyObject *__pyx_v_deadline) {
+  gpr_timespec __pyx_v_c_increment;
+  gpr_timespec __pyx_v_c_timeout;
+  gpr_timespec __pyx_v_c_deadline;
+  grpc_event __pyx_v_c_event;
+  grpc_event __pyx_r;
+  int __pyx_t_1;
+  gpr_timespec __pyx_t_2;
+  int __pyx_t_3;
+  int __pyx_t_4;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":23
+ *   cdef gpr_timespec c_timeout
+ *   cdef gpr_timespec c_deadline
+ *   c_increment = gpr_time_from_millis(g_interrupt_check_period_ms, GPR_TIMESPAN)             # <<<<<<<<<<<<<<
+ *   if deadline is None:
+ *     c_deadline = gpr_inf_future(GPR_CLOCK_REALTIME)
+ */
+  __pyx_v_c_increment = gpr_time_from_millis(__pyx_v_7_cython_6cygrpc_g_interrupt_check_period_ms, GPR_TIMESPAN);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":24
+ *   cdef gpr_timespec c_deadline
+ *   c_increment = gpr_time_from_millis(g_interrupt_check_period_ms, GPR_TIMESPAN)
+ *   if deadline is None:             # <<<<<<<<<<<<<<
+ *     c_deadline = gpr_inf_future(GPR_CLOCK_REALTIME)
+ *   else:
+ */
+  __pyx_t_1 = (__pyx_v_deadline == Py_None);
+  if (__pyx_t_1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":25
+ *   c_increment = gpr_time_from_millis(g_interrupt_check_period_ms, GPR_TIMESPAN)
+ *   if deadline is None:
+ *     c_deadline = gpr_inf_future(GPR_CLOCK_REALTIME)             # <<<<<<<<<<<<<<
+ *   else:
+ *     c_deadline = _timespec_from_time(deadline)
+ */
+    __pyx_v_c_deadline = gpr_inf_future(GPR_CLOCK_REALTIME);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":24
+ *   cdef gpr_timespec c_deadline
+ *   c_increment = gpr_time_from_millis(g_interrupt_check_period_ms, GPR_TIMESPAN)
+ *   if deadline is None:             # <<<<<<<<<<<<<<
+ *     c_deadline = gpr_inf_future(GPR_CLOCK_REALTIME)
+ *   else:
+ */
+    goto __pyx_L3;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":27
+ *     c_deadline = gpr_inf_future(GPR_CLOCK_REALTIME)
+ *   else:
+ *     c_deadline = _timespec_from_time(deadline)             # <<<<<<<<<<<<<<
+ * 
+ *   while True:
+ */
+  /*else*/ {
+    __pyx_t_2 = __pyx_f_7_cython_6cygrpc__timespec_from_time(__pyx_v_deadline); if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 27, __pyx_L1_error)
+    __pyx_v_c_deadline = __pyx_t_2;
+  }
+  __pyx_L3:;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":29
+ *     c_deadline = _timespec_from_time(deadline)
+ * 
+ *   while True:             # <<<<<<<<<<<<<<
+ *     with nogil:
+ *       c_timeout = gpr_time_add(gpr_now(GPR_CLOCK_REALTIME), c_increment)
+ */
+  while (1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":30
+ * 
+ *   while True:
+ *     with nogil:             # <<<<<<<<<<<<<<
+ *       c_timeout = gpr_time_add(gpr_now(GPR_CLOCK_REALTIME), c_increment)
+ *       if gpr_time_cmp(c_timeout, c_deadline) > 0:
+ */
+    {
+        #ifdef WITH_THREAD
+        PyThreadState *_save;
+        _save = NULL;
+        Py_UNBLOCK_THREADS
+        __Pyx_FastGIL_Remember();
+        #endif
+        /*try:*/ {
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":31
+ *   while True:
+ *     with nogil:
+ *       c_timeout = gpr_time_add(gpr_now(GPR_CLOCK_REALTIME), c_increment)             # <<<<<<<<<<<<<<
+ *       if gpr_time_cmp(c_timeout, c_deadline) > 0:
+ *         c_timeout = c_deadline
+ */
+          __pyx_v_c_timeout = gpr_time_add(gpr_now(GPR_CLOCK_REALTIME), __pyx_v_c_increment);
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":32
+ *     with nogil:
+ *       c_timeout = gpr_time_add(gpr_now(GPR_CLOCK_REALTIME), c_increment)
+ *       if gpr_time_cmp(c_timeout, c_deadline) > 0:             # <<<<<<<<<<<<<<
+ *         c_timeout = c_deadline
+ * 
+ */
+          __pyx_t_1 = (gpr_time_cmp(__pyx_v_c_timeout, __pyx_v_c_deadline) > 0);
+          if (__pyx_t_1) {
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":33
+ *       c_timeout = gpr_time_add(gpr_now(GPR_CLOCK_REALTIME), c_increment)
+ *       if gpr_time_cmp(c_timeout, c_deadline) > 0:
+ *         c_timeout = c_deadline             # <<<<<<<<<<<<<<
+ * 
+ *       c_event = grpc_completion_queue_next(c_completion_queue, c_timeout, NULL)
+ */
+            __pyx_v_c_timeout = __pyx_v_c_deadline;
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":32
+ *     with nogil:
+ *       c_timeout = gpr_time_add(gpr_now(GPR_CLOCK_REALTIME), c_increment)
+ *       if gpr_time_cmp(c_timeout, c_deadline) > 0:             # <<<<<<<<<<<<<<
+ *         c_timeout = c_deadline
+ * 
+ */
+          }
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":35
+ *         c_timeout = c_deadline
+ * 
+ *       c_event = grpc_completion_queue_next(c_completion_queue, c_timeout, NULL)             # <<<<<<<<<<<<<<
+ * 
+ *       if (c_event.type != GRPC_QUEUE_TIMEOUT or
+ */
+          __pyx_v_c_event = grpc_completion_queue_next(__pyx_v_c_completion_queue, __pyx_v_c_timeout, NULL);
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":37
+ *       c_event = grpc_completion_queue_next(c_completion_queue, c_timeout, NULL)
+ * 
+ *       if (c_event.type != GRPC_QUEUE_TIMEOUT or             # <<<<<<<<<<<<<<
+ *           gpr_time_cmp(c_timeout, c_deadline) == 0):
+ *         break
+ */
+          __pyx_t_3 = (__pyx_v_c_event.type != GRPC_QUEUE_TIMEOUT);
+          if (!__pyx_t_3) {
+          } else {
+            __pyx_t_1 = __pyx_t_3;
+            goto __pyx_L13_bool_binop_done;
+          }
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":38
+ * 
+ *       if (c_event.type != GRPC_QUEUE_TIMEOUT or
+ *           gpr_time_cmp(c_timeout, c_deadline) == 0):             # <<<<<<<<<<<<<<
+ *         break
+ * 
+ */
+          __pyx_t_3 = (gpr_time_cmp(__pyx_v_c_timeout, __pyx_v_c_deadline) == 0);
+          __pyx_t_1 = __pyx_t_3;
+          __pyx_L13_bool_binop_done:;
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":37
+ *       c_event = grpc_completion_queue_next(c_completion_queue, c_timeout, NULL)
+ * 
+ *       if (c_event.type != GRPC_QUEUE_TIMEOUT or             # <<<<<<<<<<<<<<
+ *           gpr_time_cmp(c_timeout, c_deadline) == 0):
+ *         break
+ */
+          if (__pyx_t_1) {
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":39
+ *       if (c_event.type != GRPC_QUEUE_TIMEOUT or
+ *           gpr_time_cmp(c_timeout, c_deadline) == 0):
+ *         break             # <<<<<<<<<<<<<<
+ * 
+ *     # Handle any signals
+ */
+            goto __pyx_L7_break;
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":37
+ *       c_event = grpc_completion_queue_next(c_completion_queue, c_timeout, NULL)
+ * 
+ *       if (c_event.type != GRPC_QUEUE_TIMEOUT or             # <<<<<<<<<<<<<<
+ *           gpr_time_cmp(c_timeout, c_deadline) == 0):
+ *         break
+ */
+          }
+        }
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":30
+ * 
+ *   while True:
+ *     with nogil:             # <<<<<<<<<<<<<<
+ *       c_timeout = gpr_time_add(gpr_now(GPR_CLOCK_REALTIME), c_increment)
+ *       if gpr_time_cmp(c_timeout, c_deadline) > 0:
+ */
+        /*finally:*/ {
+          /*normal exit:*/{
+            #ifdef WITH_THREAD
+            __Pyx_FastGIL_Forget();
+            Py_BLOCK_THREADS
+            #endif
+            goto __pyx_L10;
+          }
+          __pyx_L7_break: {
+            #ifdef WITH_THREAD
+            __Pyx_FastGIL_Forget();
+            Py_BLOCK_THREADS
+            #endif
+            goto __pyx_L5_break;
+          }
+          __pyx_L10:;
+        }
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":42
+ * 
+ *     # Handle any signals
+ *     cpython.PyErr_CheckSignals()             # <<<<<<<<<<<<<<
+ *   return c_event
+ * 
+ */
+    __pyx_t_4 = PyErr_CheckSignals(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(15, 42, __pyx_L1_error)
+  }
+  __pyx_L5_break:;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":43
+ *     # Handle any signals
+ *     cpython.PyErr_CheckSignals()
+ *   return c_event             # <<<<<<<<<<<<<<
+ * 
+ * cdef _interpret_event(grpc_event c_event):
+ */
+  __pyx_r = __pyx_v_c_event;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":18
+ * g_interrupt_check_period_ms = 200
+ * 
+ * cdef grpc_event _next(grpc_completion_queue *c_completion_queue, deadline) except *:             # <<<<<<<<<<<<<<
+ *   global g_interrupt_check_period_ms
+ *   cdef gpr_timespec c_increment
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc._next", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_pretend_to_initialize(&__pyx_r);
+  __pyx_L0:;
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":45
+ *   return c_event
+ * 
+ * cdef _interpret_event(grpc_event c_event):             # <<<<<<<<<<<<<<
+ *   cdef _Tag tag
+ *   if c_event.type == GRPC_QUEUE_TIMEOUT:
+ */
+
+static PyObject *__pyx_f_7_cython_6cygrpc__interpret_event(grpc_event __pyx_v_c_event) {
+  struct __pyx_obj_7_cython_6cygrpc__Tag *__pyx_v_tag = 0;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_interpret_event", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":47
+ * cdef _interpret_event(grpc_event c_event):
+ *   cdef _Tag tag
+ *   if c_event.type == GRPC_QUEUE_TIMEOUT:             # <<<<<<<<<<<<<<
+ *     # TODO(ericgribkoff) Do not coopt ConnectivityEvent here.
+ *     return None, ConnectivityEvent(GRPC_QUEUE_TIMEOUT, False, None)
+ */
+  switch (__pyx_v_c_event.type) {
+    case GRPC_QUEUE_TIMEOUT:
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":49
+ *   if c_event.type == GRPC_QUEUE_TIMEOUT:
+ *     # TODO(ericgribkoff) Do not coopt ConnectivityEvent here.
+ *     return None, ConnectivityEvent(GRPC_QUEUE_TIMEOUT, False, None)             # <<<<<<<<<<<<<<
+ *   elif c_event.type == GRPC_QUEUE_SHUTDOWN:
+ *     # NOTE(nathaniel): For now we coopt ConnectivityEvent here.
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_1 = __Pyx_PyInt_From_grpc_completion_type(GRPC_QUEUE_TIMEOUT); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 49, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 49, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_GIVEREF(__pyx_t_1);
+    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1)) __PYX_ERR(15, 49, __pyx_L1_error);
+    __Pyx_INCREF(Py_False);
+    __Pyx_GIVEREF(Py_False);
+    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, Py_False)) __PYX_ERR(15, 49, __pyx_L1_error);
+    __Pyx_INCREF(Py_None);
+    __Pyx_GIVEREF(Py_None);
+    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None)) __PYX_ERR(15, 49, __pyx_L1_error);
+    __pyx_t_1 = 0;
+    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_7_cython_6cygrpc_ConnectivityEvent), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 49, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 49, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_INCREF(Py_None);
+    __Pyx_GIVEREF(Py_None);
+    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, Py_None)) __PYX_ERR(15, 49, __pyx_L1_error);
+    __Pyx_GIVEREF(__pyx_t_1);
+    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1)) __PYX_ERR(15, 49, __pyx_L1_error);
+    __pyx_t_1 = 0;
+    __pyx_r = __pyx_t_2;
+    __pyx_t_2 = 0;
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":47
+ * cdef _interpret_event(grpc_event c_event):
+ *   cdef _Tag tag
+ *   if c_event.type == GRPC_QUEUE_TIMEOUT:             # <<<<<<<<<<<<<<
+ *     # TODO(ericgribkoff) Do not coopt ConnectivityEvent here.
+ *     return None, ConnectivityEvent(GRPC_QUEUE_TIMEOUT, False, None)
+ */
+    break;
+    case GRPC_QUEUE_SHUTDOWN:
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":52
+ *   elif c_event.type == GRPC_QUEUE_SHUTDOWN:
+ *     # NOTE(nathaniel): For now we coopt ConnectivityEvent here.
+ *     return None, ConnectivityEvent(GRPC_QUEUE_SHUTDOWN, False, None)             # <<<<<<<<<<<<<<
+ *   else:
+ *     tag = <_Tag>c_event.tag
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_2 = __Pyx_PyInt_From_grpc_completion_type(GRPC_QUEUE_SHUTDOWN); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 52, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 52, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_GIVEREF(__pyx_t_2);
+    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2)) __PYX_ERR(15, 52, __pyx_L1_error);
+    __Pyx_INCREF(Py_False);
+    __Pyx_GIVEREF(Py_False);
+    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, Py_False)) __PYX_ERR(15, 52, __pyx_L1_error);
+    __Pyx_INCREF(Py_None);
+    __Pyx_GIVEREF(Py_None);
+    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None)) __PYX_ERR(15, 52, __pyx_L1_error);
+    __pyx_t_2 = 0;
+    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_7_cython_6cygrpc_ConnectivityEvent), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 52, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 52, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_INCREF(Py_None);
+    __Pyx_GIVEREF(Py_None);
+    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, Py_None)) __PYX_ERR(15, 52, __pyx_L1_error);
+    __Pyx_GIVEREF(__pyx_t_2);
+    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2)) __PYX_ERR(15, 52, __pyx_L1_error);
+    __pyx_t_2 = 0;
+    __pyx_r = __pyx_t_1;
+    __pyx_t_1 = 0;
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":50
+ *     # TODO(ericgribkoff) Do not coopt ConnectivityEvent here.
+ *     return None, ConnectivityEvent(GRPC_QUEUE_TIMEOUT, False, None)
+ *   elif c_event.type == GRPC_QUEUE_SHUTDOWN:             # <<<<<<<<<<<<<<
+ *     # NOTE(nathaniel): For now we coopt ConnectivityEvent here.
+ *     return None, ConnectivityEvent(GRPC_QUEUE_SHUTDOWN, False, None)
+ */
+    break;
+    default:
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":54
+ *     return None, ConnectivityEvent(GRPC_QUEUE_SHUTDOWN, False, None)
+ *   else:
+ *     tag = <_Tag>c_event.tag             # <<<<<<<<<<<<<<
+ *     # We receive event tags only after they've been inc-ref'd elsewhere in
+ *     # the code.
+ */
+    __pyx_t_1 = ((PyObject *)__pyx_v_c_event.tag);
+    __Pyx_INCREF(__pyx_t_1);
+    __pyx_v_tag = ((struct __pyx_obj_7_cython_6cygrpc__Tag *)__pyx_t_1);
+    __pyx_t_1 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":57
+ *     # We receive event tags only after they've been inc-ref'd elsewhere in
+ *     # the code.
+ *     cpython.Py_DECREF(tag)             # <<<<<<<<<<<<<<
+ *     return tag, tag.event(c_event)
+ * 
+ */
+    Py_DECREF(((PyObject *)__pyx_v_tag));
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":58
+ *     # the code.
+ *     cpython.Py_DECREF(tag)
+ *     return tag, tag.event(c_event)             # <<<<<<<<<<<<<<
+ * 
+ * cdef _internal_latent_event(_LatentEventArg latent_event_arg):
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_7_cython_6cygrpc__Tag *)__pyx_v_tag->__pyx_vtab)->event(__pyx_v_tag, __pyx_v_c_event)); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 58, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 58, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_INCREF((PyObject *)__pyx_v_tag);
+    __Pyx_GIVEREF((PyObject *)__pyx_v_tag);
+    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_tag))) __PYX_ERR(15, 58, __pyx_L1_error);
+    __Pyx_GIVEREF(__pyx_t_1);
+    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1)) __PYX_ERR(15, 58, __pyx_L1_error);
+    __pyx_t_1 = 0;
+    __pyx_r = __pyx_t_2;
+    __pyx_t_2 = 0;
+    goto __pyx_L0;
+    break;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":45
+ *   return c_event
+ * 
+ * cdef _interpret_event(grpc_event c_event):             # <<<<<<<<<<<<<<
+ *   cdef _Tag tag
+ *   if c_event.type == GRPC_QUEUE_TIMEOUT:
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("_cython.cygrpc._interpret_event", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_tag);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":60
+ *     return tag, tag.event(c_event)
+ * 
+ * cdef _internal_latent_event(_LatentEventArg latent_event_arg):             # <<<<<<<<<<<<<<
+ *   cdef grpc_event c_event = _next(latent_event_arg.c_completion_queue, latent_event_arg.deadline)
+ *   return _interpret_event(c_event)
+ */
+
+static PyObject *__pyx_f_7_cython_6cygrpc__internal_latent_event(struct __pyx_obj_7_cython_6cygrpc__LatentEventArg *__pyx_v_latent_event_arg) {
+  grpc_event __pyx_v_c_event;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  grpc_event __pyx_t_2;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_internal_latent_event", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":61
+ * 
+ * cdef _internal_latent_event(_LatentEventArg latent_event_arg):
+ *   cdef grpc_event c_event = _next(latent_event_arg.c_completion_queue, latent_event_arg.deadline)             # <<<<<<<<<<<<<<
+ *   return _interpret_event(c_event)
+ * 
+ */
+  __pyx_t_1 = __pyx_v_latent_event_arg->deadline;
+  __Pyx_INCREF(__pyx_t_1);
+  __pyx_t_2 = __pyx_f_7_cython_6cygrpc__next(__pyx_v_latent_event_arg->c_completion_queue, __pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 61, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_v_c_event = __pyx_t_2;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":62
+ * cdef _internal_latent_event(_LatentEventArg latent_event_arg):
+ *   cdef grpc_event c_event = _next(latent_event_arg.c_completion_queue, latent_event_arg.deadline)
+ *   return _interpret_event(c_event)             # <<<<<<<<<<<<<<
+ * 
+ * cdef _latent_event(grpc_completion_queue *c_completion_queue, object deadline):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_7_cython_6cygrpc__interpret_event(__pyx_v_c_event); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 62, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":60
+ *     return tag, tag.event(c_event)
+ * 
+ * cdef _internal_latent_event(_LatentEventArg latent_event_arg):             # <<<<<<<<<<<<<<
+ *   cdef grpc_event c_event = _next(latent_event_arg.c_completion_queue, latent_event_arg.deadline)
+ *   return _interpret_event(c_event)
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc._internal_latent_event", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":64
+ *   return _interpret_event(c_event)
+ * 
+ * cdef _latent_event(grpc_completion_queue *c_completion_queue, object deadline):             # <<<<<<<<<<<<<<
+ *     global g_gevent_activated
+ * 
+ */
+
+static PyObject *__pyx_f_7_cython_6cygrpc__latent_event(grpc_completion_queue *__pyx_v_c_completion_queue, PyObject *__pyx_v_deadline) {
+  struct __pyx_obj_7_cython_6cygrpc__LatentEventArg *__pyx_v_latent_event_arg = NULL;
+  PyObject *__pyx_v_result = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  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("_latent_event", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":67
+ *     global g_gevent_activated
+ * 
+ *     latent_event_arg = _LatentEventArg()             # <<<<<<<<<<<<<<
+ *     latent_event_arg.c_completion_queue = c_completion_queue
+ *     latent_event_arg.deadline = deadline
+ */
+  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_7_cython_6cygrpc__LatentEventArg)); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 67, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_latent_event_arg = ((struct __pyx_obj_7_cython_6cygrpc__LatentEventArg *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":68
+ * 
+ *     latent_event_arg = _LatentEventArg()
+ *     latent_event_arg.c_completion_queue = c_completion_queue             # <<<<<<<<<<<<<<
+ *     latent_event_arg.deadline = deadline
+ * 
+ */
+  __pyx_v_latent_event_arg->c_completion_queue = __pyx_v_c_completion_queue;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":69
+ *     latent_event_arg = _LatentEventArg()
+ *     latent_event_arg.c_completion_queue = c_completion_queue
+ *     latent_event_arg.deadline = deadline             # <<<<<<<<<<<<<<
+ * 
+ *     if g_gevent_activated:
+ */
+  __Pyx_INCREF(__pyx_v_deadline);
+  __Pyx_GIVEREF(__pyx_v_deadline);
+  __Pyx_GOTREF(__pyx_v_latent_event_arg->deadline);
+  __Pyx_DECREF(__pyx_v_latent_event_arg->deadline);
+  __pyx_v_latent_event_arg->deadline = __pyx_v_deadline;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":71
+ *     latent_event_arg.deadline = deadline
+ * 
+ *     if g_gevent_activated:             # <<<<<<<<<<<<<<
+ *       # For gevent, completion_queue_next is run in a native thread pool.
+ *       global g_gevent_threadpool
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_g_gevent_activated); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 71, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(15, 71, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (__pyx_t_2) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":75
+ *       global g_gevent_threadpool
+ * 
+ *       result = g_gevent_threadpool.apply(_internal_latent_event, (latent_event_arg,))             # <<<<<<<<<<<<<<
+ *       return result
+ *     else:
+ */
+    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_g_gevent_threadpool); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 75, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_apply); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 75, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __pyx_t_3 = __Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg(__pyx_f_7_cython_6cygrpc__internal_latent_event); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 75, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 75, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_INCREF((PyObject *)__pyx_v_latent_event_arg);
+    __Pyx_GIVEREF((PyObject *)__pyx_v_latent_event_arg);
+    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_v_latent_event_arg))) __PYX_ERR(15, 75, __pyx_L1_error);
+    __pyx_t_6 = NULL;
+    __pyx_t_7 = 0;
+    #if CYTHON_UNPACK_METHODS
+    if (unlikely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+        __pyx_t_7 = 1;
+      }
+    }
+    #endif
+    {
+      PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_t_3, __pyx_t_5};
+      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_7, 2+__pyx_t_7);
+      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 75, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    }
+    __pyx_v_result = __pyx_t_1;
+    __pyx_t_1 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":76
+ * 
+ *       result = g_gevent_threadpool.apply(_internal_latent_event, (latent_event_arg,))
+ *       return result             # <<<<<<<<<<<<<<
+ *     else:
+ *       return _internal_latent_event(latent_event_arg)
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_INCREF(__pyx_v_result);
+    __pyx_r = __pyx_v_result;
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":71
+ *     latent_event_arg.deadline = deadline
+ * 
+ *     if g_gevent_activated:             # <<<<<<<<<<<<<<
+ *       # For gevent, completion_queue_next is run in a native thread pool.
+ *       global g_gevent_threadpool
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":78
+ *       return result
+ *     else:
+ *       return _internal_latent_event(latent_event_arg)             # <<<<<<<<<<<<<<
+ * 
+ * cdef class CompletionQueue:
+ */
+  /*else*/ {
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_1 = __pyx_f_7_cython_6cygrpc__internal_latent_event(__pyx_v_latent_event_arg); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 78, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_r = __pyx_t_1;
+    __pyx_t_1 = 0;
+    goto __pyx_L0;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":64
+ *   return _interpret_event(c_event)
+ * 
+ * cdef _latent_event(grpc_completion_queue *c_completion_queue, object deadline):             # <<<<<<<<<<<<<<
+ *     global g_gevent_activated
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("_cython.cygrpc._latent_event", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_latent_event_arg);
+  __Pyx_XDECREF(__pyx_v_result);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":82
+ * cdef class CompletionQueue:
+ * 
+ *   def __cinit__(self, shutdown_cq=False):             # <<<<<<<<<<<<<<
+ *     cdef grpc_completion_queue_attributes c_attrs
+ *     fork_handlers_and_grpc_init()
+ */
+
+/* Python wrapper */
+static int __pyx_pw_7_cython_6cygrpc_15CompletionQueue_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_7_cython_6cygrpc_15CompletionQueue_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_shutdown_cq = 0;
+  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject* values[1] = {0};
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  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);
+  {
+    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_shutdown_cq,0};
+    values[0] = __Pyx_Arg_NewRef_VARARGS(((PyObject *)Py_False));
+    if (__pyx_kwds) {
+      Py_ssize_t kw_args;
+      switch (__pyx_nargs) {
+        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
+      switch (__pyx_nargs) {
+        case  0:
+        if (kw_args > 0) {
+          PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_shutdown_cq);
+          if (value) { values[0] = __Pyx_Arg_NewRef_VARARGS(value); kw_args--; }
+          else if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 82, __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, "__cinit__") < 0)) __PYX_ERR(15, 82, __pyx_L3_error)
+      }
+    } else {
+      switch (__pyx_nargs) {
+        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_shutdown_cq = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 0, 1, __pyx_nargs); __PYX_ERR(15, 82, __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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_AddTraceback("_cython.cygrpc.CompletionQueue.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_15CompletionQueue___cinit__(((struct __pyx_obj_7_cython_6cygrpc_CompletionQueue *)__pyx_v_self), __pyx_v_shutdown_cq);
+
+  /* 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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_7_cython_6cygrpc_15CompletionQueue___cinit__(struct __pyx_obj_7_cython_6cygrpc_CompletionQueue *__pyx_v_self, PyObject *__pyx_v_shutdown_cq) {
+  grpc_completion_queue_attributes __pyx_v_c_attrs;
+  int __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_t_5;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__cinit__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":84
+ *   def __cinit__(self, shutdown_cq=False):
+ *     cdef grpc_completion_queue_attributes c_attrs
+ *     fork_handlers_and_grpc_init()             # <<<<<<<<<<<<<<
+ *     if shutdown_cq:
+ *       c_attrs.version = 1
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_fork_handlers_and_grpc_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 84, __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, 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(15, 84, __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/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":85
+ *     cdef grpc_completion_queue_attributes c_attrs
+ *     fork_handlers_and_grpc_init()
+ *     if shutdown_cq:             # <<<<<<<<<<<<<<
+ *       c_attrs.version = 1
+ *       c_attrs.cq_completion_type = GRPC_CQ_NEXT
+ */
+  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_shutdown_cq); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(15, 85, __pyx_L1_error)
+  if (__pyx_t_5) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":86
+ *     fork_handlers_and_grpc_init()
+ *     if shutdown_cq:
+ *       c_attrs.version = 1             # <<<<<<<<<<<<<<
+ *       c_attrs.cq_completion_type = GRPC_CQ_NEXT
+ *       c_attrs.cq_polling_type = GRPC_CQ_NON_LISTENING
+ */
+    __pyx_v_c_attrs.version = 1;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":87
+ *     if shutdown_cq:
+ *       c_attrs.version = 1
+ *       c_attrs.cq_completion_type = GRPC_CQ_NEXT             # <<<<<<<<<<<<<<
+ *       c_attrs.cq_polling_type = GRPC_CQ_NON_LISTENING
+ *       c_attrs.cq_shutdown_cb = NULL
+ */
+    __pyx_v_c_attrs.cq_completion_type = GRPC_CQ_NEXT;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":88
+ *       c_attrs.version = 1
+ *       c_attrs.cq_completion_type = GRPC_CQ_NEXT
+ *       c_attrs.cq_polling_type = GRPC_CQ_NON_LISTENING             # <<<<<<<<<<<<<<
+ *       c_attrs.cq_shutdown_cb = NULL
+ *       self.c_completion_queue = grpc_completion_queue_create(
+ */
+    __pyx_v_c_attrs.cq_polling_type = GRPC_CQ_NON_LISTENING;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":89
+ *       c_attrs.cq_completion_type = GRPC_CQ_NEXT
+ *       c_attrs.cq_polling_type = GRPC_CQ_NON_LISTENING
+ *       c_attrs.cq_shutdown_cb = NULL             # <<<<<<<<<<<<<<
+ *       self.c_completion_queue = grpc_completion_queue_create(
+ *           grpc_completion_queue_factory_lookup(&c_attrs), &c_attrs, NULL);
+ */
+    __pyx_v_c_attrs.cq_shutdown_cb = NULL;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":90
+ *       c_attrs.cq_polling_type = GRPC_CQ_NON_LISTENING
+ *       c_attrs.cq_shutdown_cb = NULL
+ *       self.c_completion_queue = grpc_completion_queue_create(             # <<<<<<<<<<<<<<
+ *           grpc_completion_queue_factory_lookup(&c_attrs), &c_attrs, NULL);
+ *     else:
+ */
+    __pyx_v_self->c_completion_queue = grpc_completion_queue_create(grpc_completion_queue_factory_lookup((&__pyx_v_c_attrs)), (&__pyx_v_c_attrs), NULL);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":85
+ *     cdef grpc_completion_queue_attributes c_attrs
+ *     fork_handlers_and_grpc_init()
+ *     if shutdown_cq:             # <<<<<<<<<<<<<<
+ *       c_attrs.version = 1
+ *       c_attrs.cq_completion_type = GRPC_CQ_NEXT
+ */
+    goto __pyx_L3;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":93
+ *           grpc_completion_queue_factory_lookup(&c_attrs), &c_attrs, NULL);
+ *     else:
+ *       self.c_completion_queue = grpc_completion_queue_create_for_next(NULL)             # <<<<<<<<<<<<<<
+ *     self.is_shutting_down = False
+ *     self.is_shutdown = False
+ */
+  /*else*/ {
+    __pyx_v_self->c_completion_queue = grpc_completion_queue_create_for_next(NULL);
+  }
+  __pyx_L3:;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":94
+ *     else:
+ *       self.c_completion_queue = grpc_completion_queue_create_for_next(NULL)
+ *     self.is_shutting_down = False             # <<<<<<<<<<<<<<
+ *     self.is_shutdown = False
+ * 
+ */
+  __pyx_v_self->is_shutting_down = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":95
+ *       self.c_completion_queue = grpc_completion_queue_create_for_next(NULL)
+ *     self.is_shutting_down = False
+ *     self.is_shutdown = False             # <<<<<<<<<<<<<<
+ * 
+ *   cdef _interpret_event(self, grpc_event c_event):
+ */
+  __pyx_v_self->is_shutdown = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":82
+ * cdef class CompletionQueue:
+ * 
+ *   def __cinit__(self, shutdown_cq=False):             # <<<<<<<<<<<<<<
+ *     cdef grpc_completion_queue_attributes c_attrs
+ *     fork_handlers_and_grpc_init()
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("_cython.cygrpc.CompletionQueue.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":97
+ *     self.is_shutdown = False
+ * 
+ *   cdef _interpret_event(self, grpc_event c_event):             # <<<<<<<<<<<<<<
+ *     unused_tag, event = _interpret_event(c_event)
+ *     if event.completion_type == GRPC_QUEUE_SHUTDOWN:
+ */
+
+static PyObject *__pyx_f_7_cython_6cygrpc_15CompletionQueue__interpret_event(struct __pyx_obj_7_cython_6cygrpc_CompletionQueue *__pyx_v_self, grpc_event __pyx_v_c_event) {
+  CYTHON_UNUSED PyObject *__pyx_v_unused_tag = NULL;
+  PyObject *__pyx_v_event = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *(*__pyx_t_5)(PyObject *);
+  int __pyx_t_6;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_interpret_event", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":98
+ * 
+ *   cdef _interpret_event(self, grpc_event c_event):
+ *     unused_tag, event = _interpret_event(c_event)             # <<<<<<<<<<<<<<
+ *     if event.completion_type == GRPC_QUEUE_SHUTDOWN:
+ *       self.is_shutdown = True
+ */
+  __pyx_t_1 = __pyx_f_7_cython_6cygrpc__interpret_event(__pyx_v_c_event); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 98, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
+    PyObject* sequence = __pyx_t_1;
+    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(15, 98, __pyx_L1_error)
+    }
+    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+    if (likely(PyTuple_CheckExact(sequence))) {
+      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
+      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); 
+    } else {
+      __pyx_t_2 = PyList_GET_ITEM(sequence, 0); 
+      __pyx_t_3 = PyList_GET_ITEM(sequence, 1); 
+    }
+    __Pyx_INCREF(__pyx_t_2);
+    __Pyx_INCREF(__pyx_t_3);
+    #else
+    __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 98, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 98, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    #endif
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  } else {
+    Py_ssize_t index = -1;
+    __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 98, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __pyx_t_5 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_4);
+    index = 0; __pyx_t_2 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed;
+    __Pyx_GOTREF(__pyx_t_2);
+    index = 1; __pyx_t_3 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed;
+    __Pyx_GOTREF(__pyx_t_3);
+    if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_4), 2) < 0) __PYX_ERR(15, 98, __pyx_L1_error)
+    __pyx_t_5 = NULL;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    goto __pyx_L4_unpacking_done;
+    __pyx_L3_unpacking_failed:;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_t_5 = NULL;
+    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
+    __PYX_ERR(15, 98, __pyx_L1_error)
+    __pyx_L4_unpacking_done:;
+  }
+  __pyx_v_unused_tag = __pyx_t_2;
+  __pyx_t_2 = 0;
+  __pyx_v_event = __pyx_t_3;
+  __pyx_t_3 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":99
+ *   cdef _interpret_event(self, grpc_event c_event):
+ *     unused_tag, event = _interpret_event(c_event)
+ *     if event.completion_type == GRPC_QUEUE_SHUTDOWN:             # <<<<<<<<<<<<<<
+ *       self.is_shutdown = True
+ *     return event
+ */
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_event, __pyx_n_s_completion_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 99, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = __Pyx_PyInt_From_grpc_completion_type(GRPC_QUEUE_SHUTDOWN); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 99, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 99, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __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(15, 99, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (__pyx_t_6) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":100
+ *     unused_tag, event = _interpret_event(c_event)
+ *     if event.completion_type == GRPC_QUEUE_SHUTDOWN:
+ *       self.is_shutdown = True             # <<<<<<<<<<<<<<
+ *     return event
+ * 
+ */
+    __pyx_v_self->is_shutdown = 1;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":99
+ *   cdef _interpret_event(self, grpc_event c_event):
+ *     unused_tag, event = _interpret_event(c_event)
+ *     if event.completion_type == GRPC_QUEUE_SHUTDOWN:             # <<<<<<<<<<<<<<
+ *       self.is_shutdown = True
+ *     return event
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":101
+ *     if event.completion_type == GRPC_QUEUE_SHUTDOWN:
+ *       self.is_shutdown = True
+ *     return event             # <<<<<<<<<<<<<<
+ * 
+ *   def _internal_poll(self, deadline):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_event);
+  __pyx_r = __pyx_v_event;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":97
+ *     self.is_shutdown = False
+ * 
+ *   cdef _interpret_event(self, grpc_event c_event):             # <<<<<<<<<<<<<<
+ *     unused_tag, event = _interpret_event(c_event)
+ *     if event.completion_type == GRPC_QUEUE_SHUTDOWN:
+ */
+
+  /* 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("_cython.cygrpc.CompletionQueue._interpret_event", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_unused_tag);
+  __Pyx_XDECREF(__pyx_v_event);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":103
+ *     return event
+ * 
+ *   def _internal_poll(self, deadline):             # <<<<<<<<<<<<<<
+ *     return self._interpret_event(_next(self.c_completion_queue, deadline))
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_15CompletionQueue_3_internal_poll(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_15CompletionQueue_3_internal_poll = {"_internal_poll", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_15CompletionQueue_3_internal_poll, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_15CompletionQueue_3_internal_poll(PyObject *__pyx_v_self, 
+#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_deadline = 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("_internal_poll (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_deadline,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_deadline)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 103, __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, "_internal_poll") < 0)) __PYX_ERR(15, 103, __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_deadline = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("_internal_poll", 1, 1, 1, __pyx_nargs); __PYX_ERR(15, 103, __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("_cython.cygrpc.CompletionQueue._internal_poll", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_15CompletionQueue_2_internal_poll(((struct __pyx_obj_7_cython_6cygrpc_CompletionQueue *)__pyx_v_self), __pyx_v_deadline);
+
+  /* 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_7_cython_6cygrpc_15CompletionQueue_2_internal_poll(struct __pyx_obj_7_cython_6cygrpc_CompletionQueue *__pyx_v_self, PyObject *__pyx_v_deadline) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  grpc_event __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_internal_poll", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":104
+ * 
+ *   def _internal_poll(self, deadline):
+ *     return self._interpret_event(_next(self.c_completion_queue, deadline))             # <<<<<<<<<<<<<<
+ * 
+ *   # We name this 'poll' to avoid problems with CPython's expectations for
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_7_cython_6cygrpc__next(__pyx_v_self->c_completion_queue, __pyx_v_deadline); if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 104, __pyx_L1_error)
+  __pyx_t_2 = ((struct __pyx_vtabstruct_7_cython_6cygrpc_CompletionQueue *)__pyx_v_self->__pyx_vtab)->_interpret_event(__pyx_v_self, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 104, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":103
+ *     return event
+ * 
+ *   def _internal_poll(self, deadline):             # <<<<<<<<<<<<<<
+ *     return self._interpret_event(_next(self.c_completion_queue, deadline))
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("_cython.cygrpc.CompletionQueue._internal_poll", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":108
+ *   # We name this 'poll' to avoid problems with CPython's expectations for
+ *   # 'special' methods (like next and __next__).
+ *   def poll(self, deadline=None):             # <<<<<<<<<<<<<<
+ *     global g_gevent_activated
+ *     if g_gevent_activated:
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_15CompletionQueue_5poll(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_15CompletionQueue_5poll = {"poll", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_15CompletionQueue_5poll, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_15CompletionQueue_5poll(PyObject *__pyx_v_self, 
+#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_deadline = 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("poll (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_deadline,0};
+    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
+    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_deadline);
+          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
+          else if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 108, __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, "poll") < 0)) __PYX_ERR(15, 108, __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;
+      }
+    }
+    __pyx_v_deadline = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("poll", 0, 0, 1, __pyx_nargs); __PYX_ERR(15, 108, __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("_cython.cygrpc.CompletionQueue.poll", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_15CompletionQueue_4poll(((struct __pyx_obj_7_cython_6cygrpc_CompletionQueue *)__pyx_v_self), __pyx_v_deadline);
+
+  /* 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_7_cython_6cygrpc_15CompletionQueue_4poll(struct __pyx_obj_7_cython_6cygrpc_CompletionQueue *__pyx_v_self, PyObject *__pyx_v_deadline) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  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("poll", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":110
+ *   def poll(self, deadline=None):
+ *     global g_gevent_activated
+ *     if g_gevent_activated:             # <<<<<<<<<<<<<<
+ *       return g_gevent_threadpool.apply(CompletionQueue._internal_poll, (self, deadline))
+ *     else:
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_g_gevent_activated); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 110, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(15, 110, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (__pyx_t_2) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":111
+ *     global g_gevent_activated
+ *     if g_gevent_activated:
+ *       return g_gevent_threadpool.apply(CompletionQueue._internal_poll, (self, deadline))             # <<<<<<<<<<<<<<
+ *     else:
+ *       return self._internal_poll(deadline)
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_g_gevent_threadpool); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 111, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_apply); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 111, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_7_cython_6cygrpc_CompletionQueue), __pyx_n_s_internal_poll); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 111, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 111, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_INCREF((PyObject *)__pyx_v_self);
+    __Pyx_GIVEREF((PyObject *)__pyx_v_self);
+    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_v_self))) __PYX_ERR(15, 111, __pyx_L1_error);
+    __Pyx_INCREF(__pyx_v_deadline);
+    __Pyx_GIVEREF(__pyx_v_deadline);
+    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_deadline)) __PYX_ERR(15, 111, __pyx_L1_error);
+    __pyx_t_6 = NULL;
+    __pyx_t_7 = 0;
+    #if CYTHON_UNPACK_METHODS
+    if (unlikely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+        __pyx_t_7 = 1;
+      }
+    }
+    #endif
+    {
+      PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_t_3, __pyx_t_5};
+      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_7, 2+__pyx_t_7);
+      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 111, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    }
+    __pyx_r = __pyx_t_1;
+    __pyx_t_1 = 0;
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":110
+ *   def poll(self, deadline=None):
+ *     global g_gevent_activated
+ *     if g_gevent_activated:             # <<<<<<<<<<<<<<
+ *       return g_gevent_threadpool.apply(CompletionQueue._internal_poll, (self, deadline))
+ *     else:
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":113
+ *       return g_gevent_threadpool.apply(CompletionQueue._internal_poll, (self, deadline))
+ *     else:
+ *       return self._internal_poll(deadline)             # <<<<<<<<<<<<<<
+ * 
+ *   def shutdown(self):
+ */
+  /*else*/ {
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_internal_poll); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 113, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_5 = NULL;
+    __pyx_t_7 = 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_7 = 1;
+      }
+    }
+    #endif
+    {
+      PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_deadline};
+      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
+      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+      if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 113, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    }
+    __pyx_r = __pyx_t_1;
+    __pyx_t_1 = 0;
+    goto __pyx_L0;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":108
+ *   # We name this 'poll' to avoid problems with CPython's expectations for
+ *   # 'special' methods (like next and __next__).
+ *   def poll(self, deadline=None):             # <<<<<<<<<<<<<<
+ *     global g_gevent_activated
+ *     if g_gevent_activated:
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("_cython.cygrpc.CompletionQueue.poll", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":115
+ *       return self._internal_poll(deadline)
+ * 
+ *   def shutdown(self):             # <<<<<<<<<<<<<<
+ *     with nogil:
+ *       grpc_completion_queue_shutdown(self.c_completion_queue)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_15CompletionQueue_7shutdown(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_15CompletionQueue_7shutdown = {"shutdown", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_15CompletionQueue_7shutdown, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_15CompletionQueue_7shutdown(PyObject *__pyx_v_self, 
+#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("shutdown (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("shutdown", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "shutdown", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_15CompletionQueue_6shutdown(((struct __pyx_obj_7_cython_6cygrpc_CompletionQueue *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_15CompletionQueue_6shutdown(struct __pyx_obj_7_cython_6cygrpc_CompletionQueue *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("shutdown", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":116
+ * 
+ *   def shutdown(self):
+ *     with nogil:             # <<<<<<<<<<<<<<
+ *       grpc_completion_queue_shutdown(self.c_completion_queue)
+ *     self.is_shutting_down = True
+ */
+  {
+      #ifdef WITH_THREAD
+      PyThreadState *_save;
+      _save = NULL;
+      Py_UNBLOCK_THREADS
+      __Pyx_FastGIL_Remember();
+      #endif
+      /*try:*/ {
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":117
+ *   def shutdown(self):
+ *     with nogil:
+ *       grpc_completion_queue_shutdown(self.c_completion_queue)             # <<<<<<<<<<<<<<
+ *     self.is_shutting_down = True
+ * 
+ */
+        grpc_completion_queue_shutdown(__pyx_v_self->c_completion_queue);
+      }
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":116
+ * 
+ *   def shutdown(self):
+ *     with nogil:             # <<<<<<<<<<<<<<
+ *       grpc_completion_queue_shutdown(self.c_completion_queue)
+ *     self.is_shutting_down = True
+ */
+      /*finally:*/ {
+        /*normal exit:*/{
+          #ifdef WITH_THREAD
+          __Pyx_FastGIL_Forget();
+          Py_BLOCK_THREADS
+          #endif
+          goto __pyx_L5;
+        }
+        __pyx_L5:;
+      }
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":118
+ *     with nogil:
+ *       grpc_completion_queue_shutdown(self.c_completion_queue)
+ *     self.is_shutting_down = True             # <<<<<<<<<<<<<<
+ * 
+ *   def clear(self):
+ */
+  __pyx_v_self->is_shutting_down = 1;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":115
+ *       return self._internal_poll(deadline)
+ * 
+ *   def shutdown(self):             # <<<<<<<<<<<<<<
+ *     with nogil:
+ *       grpc_completion_queue_shutdown(self.c_completion_queue)
+ */
+
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":120
+ *     self.is_shutting_down = True
+ * 
+ *   def clear(self):             # <<<<<<<<<<<<<<
+ *     if not self.is_shutting_down:
+ *       raise ValueError('queue must be shutting down to be cleared')
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_15CompletionQueue_9clear(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_15CompletionQueue_9clear = {"clear", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_15CompletionQueue_9clear, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_15CompletionQueue_9clear(PyObject *__pyx_v_self, 
+#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("clear (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("clear", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "clear", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_15CompletionQueue_8clear(((struct __pyx_obj_7_cython_6cygrpc_CompletionQueue *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_15CompletionQueue_8clear(struct __pyx_obj_7_cython_6cygrpc_CompletionQueue *__pyx_v_self) {
+  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;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("clear", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":121
+ * 
+ *   def clear(self):
+ *     if not self.is_shutting_down:             # <<<<<<<<<<<<<<
+ *       raise ValueError('queue must be shutting down to be cleared')
+ *     while self.poll().type != GRPC_QUEUE_SHUTDOWN:
+ */
+  __pyx_t_1 = (!__pyx_v_self->is_shutting_down);
+  if (unlikely(__pyx_t_1)) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":122
+ *   def clear(self):
+ *     if not self.is_shutting_down:
+ *       raise ValueError('queue must be shutting down to be cleared')             # <<<<<<<<<<<<<<
+ *     while self.poll().type != GRPC_QUEUE_SHUTDOWN:
+ *       pass
+ */
+    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__28, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 122, __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(15, 122, __pyx_L1_error)
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":121
+ * 
+ *   def clear(self):
+ *     if not self.is_shutting_down:             # <<<<<<<<<<<<<<
+ *       raise ValueError('queue must be shutting down to be cleared')
+ *     while self.poll().type != GRPC_QUEUE_SHUTDOWN:
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":123
+ *     if not self.is_shutting_down:
+ *       raise ValueError('queue must be shutting down to be cleared')
+ *     while self.poll().type != GRPC_QUEUE_SHUTDOWN:             # <<<<<<<<<<<<<<
+ *       pass
+ * 
+ */
+  while (1) {
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_poll); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 123, __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(15, 123, __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_type); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 123, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_t_2 = __Pyx_PyInt_From_grpc_completion_type(GRPC_QUEUE_SHUTDOWN); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 123, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_t_2, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 123, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(15, 123, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!__pyx_t_1) break;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":120
+ *     self.is_shutting_down = True
+ * 
+ *   def clear(self):             # <<<<<<<<<<<<<<
+ *     if not self.is_shutting_down:
+ *       raise ValueError('queue must be shutting down to be cleared')
+ */
+
+  /* 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_AddTraceback("_cython.cygrpc.CompletionQueue.clear", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":126
+ *       pass
+ * 
+ *   def __dealloc__(self):             # <<<<<<<<<<<<<<
+ *     cdef gpr_timespec c_deadline
+ *     c_deadline = gpr_inf_future(GPR_CLOCK_REALTIME)
+ */
+
+/* Python wrapper */
+static void __pyx_pw_7_cython_6cygrpc_15CompletionQueue_11__dealloc__(PyObject *__pyx_v_self); /*proto*/
+static void __pyx_pw_7_cython_6cygrpc_15CompletionQueue_11__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_7_cython_6cygrpc_15CompletionQueue_10__dealloc__(((struct __pyx_obj_7_cython_6cygrpc_CompletionQueue *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+}
+
+static void __pyx_pf_7_cython_6cygrpc_15CompletionQueue_10__dealloc__(struct __pyx_obj_7_cython_6cygrpc_CompletionQueue *__pyx_v_self) {
+  gpr_timespec __pyx_v_c_deadline;
+  grpc_event __pyx_v_event;
+  __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("__dealloc__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":128
+ *   def __dealloc__(self):
+ *     cdef gpr_timespec c_deadline
+ *     c_deadline = gpr_inf_future(GPR_CLOCK_REALTIME)             # <<<<<<<<<<<<<<
+ *     if self.c_completion_queue != NULL:
+ *       # Ensure shutdown
+ */
+  __pyx_v_c_deadline = gpr_inf_future(GPR_CLOCK_REALTIME);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":129
+ *     cdef gpr_timespec c_deadline
+ *     c_deadline = gpr_inf_future(GPR_CLOCK_REALTIME)
+ *     if self.c_completion_queue != NULL:             # <<<<<<<<<<<<<<
+ *       # Ensure shutdown
+ *       if not self.is_shutting_down:
+ */
+  __pyx_t_1 = (__pyx_v_self->c_completion_queue != NULL);
+  if (__pyx_t_1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":131
+ *     if self.c_completion_queue != NULL:
+ *       # Ensure shutdown
+ *       if not self.is_shutting_down:             # <<<<<<<<<<<<<<
+ *         grpc_completion_queue_shutdown(self.c_completion_queue)
+ *       # Pump the queue (All outstanding calls should have been cancelled)
+ */
+    __pyx_t_1 = (!__pyx_v_self->is_shutting_down);
+    if (__pyx_t_1) {
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":132
+ *       # Ensure shutdown
+ *       if not self.is_shutting_down:
+ *         grpc_completion_queue_shutdown(self.c_completion_queue)             # <<<<<<<<<<<<<<
+ *       # Pump the queue (All outstanding calls should have been cancelled)
+ *       while not self.is_shutdown:
+ */
+      grpc_completion_queue_shutdown(__pyx_v_self->c_completion_queue);
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":131
+ *     if self.c_completion_queue != NULL:
+ *       # Ensure shutdown
+ *       if not self.is_shutting_down:             # <<<<<<<<<<<<<<
+ *         grpc_completion_queue_shutdown(self.c_completion_queue)
+ *       # Pump the queue (All outstanding calls should have been cancelled)
+ */
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":134
+ *         grpc_completion_queue_shutdown(self.c_completion_queue)
+ *       # Pump the queue (All outstanding calls should have been cancelled)
+ *       while not self.is_shutdown:             # <<<<<<<<<<<<<<
+ *         event = grpc_completion_queue_next(
+ *             self.c_completion_queue, c_deadline, NULL)
+ */
+    while (1) {
+      __pyx_t_1 = (!__pyx_v_self->is_shutdown);
+      if (!__pyx_t_1) break;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":135
+ *       # Pump the queue (All outstanding calls should have been cancelled)
+ *       while not self.is_shutdown:
+ *         event = grpc_completion_queue_next(             # <<<<<<<<<<<<<<
+ *             self.c_completion_queue, c_deadline, NULL)
+ *         self._interpret_event(event)
+ */
+      __pyx_v_event = grpc_completion_queue_next(__pyx_v_self->c_completion_queue, __pyx_v_c_deadline, NULL);
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":137
+ *         event = grpc_completion_queue_next(
+ *             self.c_completion_queue, c_deadline, NULL)
+ *         self._interpret_event(event)             # <<<<<<<<<<<<<<
+ *       grpc_completion_queue_destroy(self.c_completion_queue)
+ *     grpc_shutdown()
+ */
+      __pyx_t_2 = ((struct __pyx_vtabstruct_7_cython_6cygrpc_CompletionQueue *)__pyx_v_self->__pyx_vtab)->_interpret_event(__pyx_v_self, __pyx_v_event); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 137, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":138
+ *             self.c_completion_queue, c_deadline, NULL)
+ *         self._interpret_event(event)
+ *       grpc_completion_queue_destroy(self.c_completion_queue)             # <<<<<<<<<<<<<<
+ *     grpc_shutdown()
+ */
+    grpc_completion_queue_destroy(__pyx_v_self->c_completion_queue);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":129
+ *     cdef gpr_timespec c_deadline
+ *     c_deadline = gpr_inf_future(GPR_CLOCK_REALTIME)
+ *     if self.c_completion_queue != NULL:             # <<<<<<<<<<<<<<
+ *       # Ensure shutdown
+ *       if not self.is_shutting_down:
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":139
+ *         self._interpret_event(event)
+ *       grpc_completion_queue_destroy(self.c_completion_queue)
+ *     grpc_shutdown()             # <<<<<<<<<<<<<<
+ */
+  grpc_shutdown();
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":126
+ *       pass
+ * 
+ *   def __dealloc__(self):             # <<<<<<<<<<<<<<
+ *     cdef gpr_timespec c_deadline
+ *     c_deadline = gpr_inf_future(GPR_CLOCK_REALTIME)
+ */
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_WriteUnraisable("_cython.cygrpc.CompletionQueue.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+}
+
+/* "(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_7_cython_6cygrpc_15CompletionQueue_13__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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_15CompletionQueue_13__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_15CompletionQueue_13__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_15CompletionQueue_13__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_7_cython_6cygrpc_15CompletionQueue_12__reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc_CompletionQueue *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_15CompletionQueue_12__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_CompletionQueue *__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(10, 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("_cython.cygrpc.CompletionQueue.__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_7_cython_6cygrpc_15CompletionQueue_15__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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_15CompletionQueue_15__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_15CompletionQueue_15__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_15CompletionQueue_15__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(10, 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(10, 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(10, 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("_cython.cygrpc.CompletionQueue.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_15CompletionQueue_14__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc_CompletionQueue *)__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_7_cython_6cygrpc_15CompletionQueue_14__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_CompletionQueue *__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(10, 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("_cython.cygrpc.CompletionQueue.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/event.pyx.pxi":17
+ * cdef class ConnectivityEvent(BaseEvent):
+ * 
+ *   def __cinit__(             # <<<<<<<<<<<<<<
+ *       self, grpc_completion_type completion_type, bint success, object tag):
+ *     self.completion_type = completion_type
+ */
+
+/* Python wrapper */
+static int __pyx_pw_7_cython_6cygrpc_17ConnectivityEvent_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_7_cython_6cygrpc_17ConnectivityEvent_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  grpc_completion_type __pyx_v_completion_type;
+  int __pyx_v_success;
+  PyObject *__pyx_v_tag = 0;
+  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+  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;
+  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);
+  {
+    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_completion_type,&__pyx_n_s_success,&__pyx_n_s_tag,0};
+    if (__pyx_kwds) {
+      Py_ssize_t kw_args;
+      switch (__pyx_nargs) {
+        case  3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
+      switch (__pyx_nargs) {
+        case  0:
+        if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_completion_type)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 17, __pyx_L3_error)
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_success)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 17, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 1); __PYX_ERR(16, 17, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_tag)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[2]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 17, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 2); __PYX_ERR(16, 17, __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, "__cinit__") < 0)) __PYX_ERR(16, 17, __pyx_L3_error)
+      }
+    } else if (unlikely(__pyx_nargs != 3)) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+      values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
+      values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
+    }
+    __pyx_v_completion_type = ((grpc_completion_type)__Pyx_PyInt_As_grpc_completion_type(values[0])); if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 18, __pyx_L3_error)
+    __pyx_v_success = __Pyx_PyObject_IsTrue(values[1]); if (unlikely((__pyx_v_success == (int)-1) && PyErr_Occurred())) __PYX_ERR(16, 18, __pyx_L3_error)
+    __pyx_v_tag = values[2];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, __pyx_nargs); __PYX_ERR(16, 17, __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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_AddTraceback("_cython.cygrpc.ConnectivityEvent.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_17ConnectivityEvent___cinit__(((struct __pyx_obj_7_cython_6cygrpc_ConnectivityEvent *)__pyx_v_self), __pyx_v_completion_type, __pyx_v_success, __pyx_v_tag);
+
+  /* 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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_7_cython_6cygrpc_17ConnectivityEvent___cinit__(struct __pyx_obj_7_cython_6cygrpc_ConnectivityEvent *__pyx_v_self, grpc_completion_type __pyx_v_completion_type, int __pyx_v_success, PyObject *__pyx_v_tag) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__cinit__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/event.pyx.pxi":19
+ *   def __cinit__(
+ *       self, grpc_completion_type completion_type, bint success, object tag):
+ *     self.completion_type = completion_type             # <<<<<<<<<<<<<<
+ *     self.success = success
+ *     self.tag = tag
+ */
+  __pyx_v_self->completion_type = __pyx_v_completion_type;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/event.pyx.pxi":20
+ *       self, grpc_completion_type completion_type, bint success, object tag):
+ *     self.completion_type = completion_type
+ *     self.success = success             # <<<<<<<<<<<<<<
+ *     self.tag = tag
+ * 
+ */
+  __pyx_v_self->success = __pyx_v_success;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/event.pyx.pxi":21
+ *     self.completion_type = completion_type
+ *     self.success = success
+ *     self.tag = tag             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_INCREF(__pyx_v_tag);
+  __Pyx_GIVEREF(__pyx_v_tag);
+  __Pyx_GOTREF(__pyx_v_self->tag);
+  __Pyx_DECREF(__pyx_v_self->tag);
+  __pyx_v_self->tag = __pyx_v_tag;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/event.pyx.pxi":17
+ * cdef class ConnectivityEvent(BaseEvent):
+ * 
+ *   def __cinit__(             # <<<<<<<<<<<<<<
+ *       self, grpc_completion_type completion_type, bint success, object tag):
+ *     self.completion_type = completion_type
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/event.pxd.pxi":20
+ * cdef class ConnectivityEvent(BaseEvent):
+ * 
+ *   cdef readonly grpc_completion_type completion_type             # <<<<<<<<<<<<<<
+ *   cdef readonly bint success
+ *   cdef readonly object tag
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_17ConnectivityEvent_15completion_type_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_17ConnectivityEvent_15completion_type_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_7_cython_6cygrpc_17ConnectivityEvent_15completion_type___get__(((struct __pyx_obj_7_cython_6cygrpc_ConnectivityEvent *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_17ConnectivityEvent_15completion_type___get__(struct __pyx_obj_7_cython_6cygrpc_ConnectivityEvent *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_grpc_completion_type(__pyx_v_self->completion_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 20, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.ConnectivityEvent.completion_type.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/event.pxd.pxi":21
+ * 
+ *   cdef readonly grpc_completion_type completion_type
+ *   cdef readonly bint success             # <<<<<<<<<<<<<<
+ *   cdef readonly object tag
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_17ConnectivityEvent_7success_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_17ConnectivityEvent_7success_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_7_cython_6cygrpc_17ConnectivityEvent_7success___get__(((struct __pyx_obj_7_cython_6cygrpc_ConnectivityEvent *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_17ConnectivityEvent_7success___get__(struct __pyx_obj_7_cython_6cygrpc_ConnectivityEvent *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->success); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 21, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.ConnectivityEvent.success.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/event.pxd.pxi":22
+ *   cdef readonly grpc_completion_type completion_type
+ *   cdef readonly bint success
+ *   cdef readonly object tag             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_17ConnectivityEvent_3tag_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_17ConnectivityEvent_3tag_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_7_cython_6cygrpc_17ConnectivityEvent_3tag___get__(((struct __pyx_obj_7_cython_6cygrpc_ConnectivityEvent *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_17ConnectivityEvent_3tag___get__(struct __pyx_obj_7_cython_6cygrpc_ConnectivityEvent *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->tag);
+  __pyx_r = __pyx_v_self->tag;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __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_7_cython_6cygrpc_17ConnectivityEvent_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_17ConnectivityEvent_3__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_17ConnectivityEvent_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_17ConnectivityEvent_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_7_cython_6cygrpc_17ConnectivityEvent_2__reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc_ConnectivityEvent *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_17ConnectivityEvent_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_ConnectivityEvent *__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(10, 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("_cython.cygrpc.ConnectivityEvent.__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_7_cython_6cygrpc_17ConnectivityEvent_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_17ConnectivityEvent_5__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_17ConnectivityEvent_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_17ConnectivityEvent_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(10, 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(10, 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(10, 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("_cython.cygrpc.ConnectivityEvent.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_17ConnectivityEvent_4__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc_ConnectivityEvent *)__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_7_cython_6cygrpc_17ConnectivityEvent_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_ConnectivityEvent *__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(10, 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("_cython.cygrpc.ConnectivityEvent.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/event.pyx.pxi":26
+ * cdef class RequestCallEvent(BaseEvent):
+ * 
+ *   def __cinit__(             # <<<<<<<<<<<<<<
+ *       self, grpc_completion_type completion_type, bint success, object tag,
+ *       Call call, CallDetails call_details, tuple invocation_metadata):
+ */
+
+/* Python wrapper */
+static int __pyx_pw_7_cython_6cygrpc_16RequestCallEvent_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_7_cython_6cygrpc_16RequestCallEvent_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  grpc_completion_type __pyx_v_completion_type;
+  int __pyx_v_success;
+  PyObject *__pyx_v_tag = 0;
+  struct __pyx_obj_7_cython_6cygrpc_Call *__pyx_v_call = 0;
+  struct __pyx_obj_7_cython_6cygrpc_CallDetails *__pyx_v_call_details = 0;
+  PyObject *__pyx_v_invocation_metadata = 0;
+  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+  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;
+  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);
+  {
+    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_completion_type,&__pyx_n_s_success,&__pyx_n_s_tag,&__pyx_n_s_call,&__pyx_n_s_call_details,&__pyx_n_s_invocation_metadata,0};
+    if (__pyx_kwds) {
+      Py_ssize_t kw_args;
+      switch (__pyx_nargs) {
+        case  6: values[5] = __Pyx_Arg_VARARGS(__pyx_args, 5);
+        CYTHON_FALLTHROUGH;
+        case  5: values[4] = __Pyx_Arg_VARARGS(__pyx_args, 4);
+        CYTHON_FALLTHROUGH;
+        case  4: values[3] = __Pyx_Arg_VARARGS(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
+        case  3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
+      switch (__pyx_nargs) {
+        case  0:
+        if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_completion_type)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 26, __pyx_L3_error)
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_success)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 26, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 6, 6, 1); __PYX_ERR(16, 26, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_tag)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[2]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 26, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 6, 6, 2); __PYX_ERR(16, 26, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  3:
+        if (likely((values[3] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_call)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[3]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 26, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 6, 6, 3); __PYX_ERR(16, 26, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  4:
+        if (likely((values[4] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_call_details)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[4]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 26, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 6, 6, 4); __PYX_ERR(16, 26, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  5:
+        if (likely((values[5] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_invocation_metadata)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[5]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 26, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 6, 6, 5); __PYX_ERR(16, 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, "__cinit__") < 0)) __PYX_ERR(16, 26, __pyx_L3_error)
+      }
+    } else if (unlikely(__pyx_nargs != 6)) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+      values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
+      values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
+      values[3] = __Pyx_Arg_VARARGS(__pyx_args, 3);
+      values[4] = __Pyx_Arg_VARARGS(__pyx_args, 4);
+      values[5] = __Pyx_Arg_VARARGS(__pyx_args, 5);
+    }
+    __pyx_v_completion_type = ((grpc_completion_type)__Pyx_PyInt_As_grpc_completion_type(values[0])); if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 27, __pyx_L3_error)
+    __pyx_v_success = __Pyx_PyObject_IsTrue(values[1]); if (unlikely((__pyx_v_success == (int)-1) && PyErr_Occurred())) __PYX_ERR(16, 27, __pyx_L3_error)
+    __pyx_v_tag = values[2];
+    __pyx_v_call = ((struct __pyx_obj_7_cython_6cygrpc_Call *)values[3]);
+    __pyx_v_call_details = ((struct __pyx_obj_7_cython_6cygrpc_CallDetails *)values[4]);
+    __pyx_v_invocation_metadata = ((PyObject*)values[5]);
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 6, 6, __pyx_nargs); __PYX_ERR(16, 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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_AddTraceback("_cython.cygrpc.RequestCallEvent.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_call), __pyx_ptype_7_cython_6cygrpc_Call, 1, "call", 0))) __PYX_ERR(16, 28, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_call_details), __pyx_ptype_7_cython_6cygrpc_CallDetails, 1, "call_details", 0))) __PYX_ERR(16, 28, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_invocation_metadata), (&PyTuple_Type), 1, "invocation_metadata", 1))) __PYX_ERR(16, 28, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_16RequestCallEvent___cinit__(((struct __pyx_obj_7_cython_6cygrpc_RequestCallEvent *)__pyx_v_self), __pyx_v_completion_type, __pyx_v_success, __pyx_v_tag, __pyx_v_call, __pyx_v_call_details, __pyx_v_invocation_metadata);
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = -1;
+  __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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_7_cython_6cygrpc_16RequestCallEvent___cinit__(struct __pyx_obj_7_cython_6cygrpc_RequestCallEvent *__pyx_v_self, grpc_completion_type __pyx_v_completion_type, int __pyx_v_success, PyObject *__pyx_v_tag, struct __pyx_obj_7_cython_6cygrpc_Call *__pyx_v_call, struct __pyx_obj_7_cython_6cygrpc_CallDetails *__pyx_v_call_details, PyObject *__pyx_v_invocation_metadata) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__cinit__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/event.pyx.pxi":29
+ *       self, grpc_completion_type completion_type, bint success, object tag,
+ *       Call call, CallDetails call_details, tuple invocation_metadata):
+ *     self.completion_type = completion_type             # <<<<<<<<<<<<<<
+ *     self.success = success
+ *     self.tag = tag
+ */
+  __pyx_v_self->completion_type = __pyx_v_completion_type;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/event.pyx.pxi":30
+ *       Call call, CallDetails call_details, tuple invocation_metadata):
+ *     self.completion_type = completion_type
+ *     self.success = success             # <<<<<<<<<<<<<<
+ *     self.tag = tag
+ *     self.call = call
+ */
+  __pyx_v_self->success = __pyx_v_success;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/event.pyx.pxi":31
+ *     self.completion_type = completion_type
+ *     self.success = success
+ *     self.tag = tag             # <<<<<<<<<<<<<<
+ *     self.call = call
+ *     self.call_details = call_details
+ */
+  __Pyx_INCREF(__pyx_v_tag);
+  __Pyx_GIVEREF(__pyx_v_tag);
+  __Pyx_GOTREF(__pyx_v_self->tag);
+  __Pyx_DECREF(__pyx_v_self->tag);
+  __pyx_v_self->tag = __pyx_v_tag;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/event.pyx.pxi":32
+ *     self.success = success
+ *     self.tag = tag
+ *     self.call = call             # <<<<<<<<<<<<<<
+ *     self.call_details = call_details
+ *     self.invocation_metadata = invocation_metadata
+ */
+  __Pyx_INCREF((PyObject *)__pyx_v_call);
+  __Pyx_GIVEREF((PyObject *)__pyx_v_call);
+  __Pyx_GOTREF((PyObject *)__pyx_v_self->call);
+  __Pyx_DECREF((PyObject *)__pyx_v_self->call);
+  __pyx_v_self->call = __pyx_v_call;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/event.pyx.pxi":33
+ *     self.tag = tag
+ *     self.call = call
+ *     self.call_details = call_details             # <<<<<<<<<<<<<<
+ *     self.invocation_metadata = invocation_metadata
+ * 
+ */
+  __Pyx_INCREF((PyObject *)__pyx_v_call_details);
+  __Pyx_GIVEREF((PyObject *)__pyx_v_call_details);
+  __Pyx_GOTREF((PyObject *)__pyx_v_self->call_details);
+  __Pyx_DECREF((PyObject *)__pyx_v_self->call_details);
+  __pyx_v_self->call_details = __pyx_v_call_details;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/event.pyx.pxi":34
+ *     self.call = call
+ *     self.call_details = call_details
+ *     self.invocation_metadata = invocation_metadata             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_INCREF(__pyx_v_invocation_metadata);
+  __Pyx_GIVEREF(__pyx_v_invocation_metadata);
+  __Pyx_GOTREF(__pyx_v_self->invocation_metadata);
+  __Pyx_DECREF(__pyx_v_self->invocation_metadata);
+  __pyx_v_self->invocation_metadata = __pyx_v_invocation_metadata;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/event.pyx.pxi":26
+ * cdef class RequestCallEvent(BaseEvent):
+ * 
+ *   def __cinit__(             # <<<<<<<<<<<<<<
+ *       self, grpc_completion_type completion_type, bint success, object tag,
+ *       Call call, CallDetails call_details, tuple invocation_metadata):
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/event.pxd.pxi":27
+ * cdef class RequestCallEvent(BaseEvent):
+ * 
+ *   cdef readonly grpc_completion_type completion_type             # <<<<<<<<<<<<<<
+ *   cdef readonly bint success
+ *   cdef readonly object tag
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_16RequestCallEvent_15completion_type_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_16RequestCallEvent_15completion_type_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_7_cython_6cygrpc_16RequestCallEvent_15completion_type___get__(((struct __pyx_obj_7_cython_6cygrpc_RequestCallEvent *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_16RequestCallEvent_15completion_type___get__(struct __pyx_obj_7_cython_6cygrpc_RequestCallEvent *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_grpc_completion_type(__pyx_v_self->completion_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 27, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.RequestCallEvent.completion_type.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/event.pxd.pxi":28
+ * 
+ *   cdef readonly grpc_completion_type completion_type
+ *   cdef readonly bint success             # <<<<<<<<<<<<<<
+ *   cdef readonly object tag
+ *   cdef readonly Call call
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_16RequestCallEvent_7success_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_16RequestCallEvent_7success_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_7_cython_6cygrpc_16RequestCallEvent_7success___get__(((struct __pyx_obj_7_cython_6cygrpc_RequestCallEvent *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_16RequestCallEvent_7success___get__(struct __pyx_obj_7_cython_6cygrpc_RequestCallEvent *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->success); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 28, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.RequestCallEvent.success.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/event.pxd.pxi":29
+ *   cdef readonly grpc_completion_type completion_type
+ *   cdef readonly bint success
+ *   cdef readonly object tag             # <<<<<<<<<<<<<<
+ *   cdef readonly Call call
+ *   cdef readonly CallDetails call_details
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_16RequestCallEvent_3tag_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_16RequestCallEvent_3tag_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_7_cython_6cygrpc_16RequestCallEvent_3tag___get__(((struct __pyx_obj_7_cython_6cygrpc_RequestCallEvent *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_16RequestCallEvent_3tag___get__(struct __pyx_obj_7_cython_6cygrpc_RequestCallEvent *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->tag);
+  __pyx_r = __pyx_v_self->tag;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/event.pxd.pxi":30
+ *   cdef readonly bint success
+ *   cdef readonly object tag
+ *   cdef readonly Call call             # <<<<<<<<<<<<<<
+ *   cdef readonly CallDetails call_details
+ *   cdef readonly tuple invocation_metadata
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_16RequestCallEvent_4call_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_16RequestCallEvent_4call_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_7_cython_6cygrpc_16RequestCallEvent_4call___get__(((struct __pyx_obj_7_cython_6cygrpc_RequestCallEvent *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_16RequestCallEvent_4call___get__(struct __pyx_obj_7_cython_6cygrpc_RequestCallEvent *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF((PyObject *)__pyx_v_self->call);
+  __pyx_r = ((PyObject *)__pyx_v_self->call);
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/event.pxd.pxi":31
+ *   cdef readonly object tag
+ *   cdef readonly Call call
+ *   cdef readonly CallDetails call_details             # <<<<<<<<<<<<<<
+ *   cdef readonly tuple invocation_metadata
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_16RequestCallEvent_12call_details_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_16RequestCallEvent_12call_details_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_7_cython_6cygrpc_16RequestCallEvent_12call_details___get__(((struct __pyx_obj_7_cython_6cygrpc_RequestCallEvent *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_16RequestCallEvent_12call_details___get__(struct __pyx_obj_7_cython_6cygrpc_RequestCallEvent *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF((PyObject *)__pyx_v_self->call_details);
+  __pyx_r = ((PyObject *)__pyx_v_self->call_details);
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/event.pxd.pxi":32
+ *   cdef readonly Call call
+ *   cdef readonly CallDetails call_details
+ *   cdef readonly tuple invocation_metadata             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_16RequestCallEvent_19invocation_metadata_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_16RequestCallEvent_19invocation_metadata_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_7_cython_6cygrpc_16RequestCallEvent_19invocation_metadata___get__(((struct __pyx_obj_7_cython_6cygrpc_RequestCallEvent *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_16RequestCallEvent_19invocation_metadata___get__(struct __pyx_obj_7_cython_6cygrpc_RequestCallEvent *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->invocation_metadata);
+  __pyx_r = __pyx_v_self->invocation_metadata;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __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_7_cython_6cygrpc_16RequestCallEvent_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_16RequestCallEvent_3__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16RequestCallEvent_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_16RequestCallEvent_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_7_cython_6cygrpc_16RequestCallEvent_2__reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc_RequestCallEvent *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_16RequestCallEvent_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_RequestCallEvent *__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(10, 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("_cython.cygrpc.RequestCallEvent.__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_7_cython_6cygrpc_16RequestCallEvent_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_16RequestCallEvent_5__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16RequestCallEvent_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_16RequestCallEvent_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(10, 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(10, 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(10, 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("_cython.cygrpc.RequestCallEvent.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_16RequestCallEvent_4__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc_RequestCallEvent *)__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_7_cython_6cygrpc_16RequestCallEvent_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_RequestCallEvent *__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(10, 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("_cython.cygrpc.RequestCallEvent.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/event.pyx.pxi":39
+ * cdef class BatchOperationEvent(BaseEvent):
+ * 
+ *   def __cinit__(             # <<<<<<<<<<<<<<
+ *       self, grpc_completion_type completion_type, bint success, object tag,
+ *       object batch_operations):
+ */
+
+/* Python wrapper */
+static int __pyx_pw_7_cython_6cygrpc_19BatchOperationEvent_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_7_cython_6cygrpc_19BatchOperationEvent_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  grpc_completion_type __pyx_v_completion_type;
+  int __pyx_v_success;
+  PyObject *__pyx_v_tag = 0;
+  PyObject *__pyx_v_batch_operations = 0;
+  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+  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;
+  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);
+  {
+    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_completion_type,&__pyx_n_s_success,&__pyx_n_s_tag,&__pyx_n_s_batch_operations,0};
+    if (__pyx_kwds) {
+      Py_ssize_t kw_args;
+      switch (__pyx_nargs) {
+        case  4: values[3] = __Pyx_Arg_VARARGS(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
+        case  3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
+      switch (__pyx_nargs) {
+        case  0:
+        if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_completion_type)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 39, __pyx_L3_error)
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_success)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 39, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 4, 4, 1); __PYX_ERR(16, 39, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_tag)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[2]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 39, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 4, 4, 2); __PYX_ERR(16, 39, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  3:
+        if (likely((values[3] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_batch_operations)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[3]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 39, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 4, 4, 3); __PYX_ERR(16, 39, __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, "__cinit__") < 0)) __PYX_ERR(16, 39, __pyx_L3_error)
+      }
+    } else if (unlikely(__pyx_nargs != 4)) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+      values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
+      values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
+      values[3] = __Pyx_Arg_VARARGS(__pyx_args, 3);
+    }
+    __pyx_v_completion_type = ((grpc_completion_type)__Pyx_PyInt_As_grpc_completion_type(values[0])); if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 40, __pyx_L3_error)
+    __pyx_v_success = __Pyx_PyObject_IsTrue(values[1]); if (unlikely((__pyx_v_success == (int)-1) && PyErr_Occurred())) __PYX_ERR(16, 40, __pyx_L3_error)
+    __pyx_v_tag = values[2];
+    __pyx_v_batch_operations = values[3];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 4, 4, __pyx_nargs); __PYX_ERR(16, 39, __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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_AddTraceback("_cython.cygrpc.BatchOperationEvent.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_19BatchOperationEvent___cinit__(((struct __pyx_obj_7_cython_6cygrpc_BatchOperationEvent *)__pyx_v_self), __pyx_v_completion_type, __pyx_v_success, __pyx_v_tag, __pyx_v_batch_operations);
+
+  /* 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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_7_cython_6cygrpc_19BatchOperationEvent___cinit__(struct __pyx_obj_7_cython_6cygrpc_BatchOperationEvent *__pyx_v_self, grpc_completion_type __pyx_v_completion_type, int __pyx_v_success, PyObject *__pyx_v_tag, PyObject *__pyx_v_batch_operations) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__cinit__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/event.pyx.pxi":42
+ *       self, grpc_completion_type completion_type, bint success, object tag,
+ *       object batch_operations):
+ *     self.completion_type = completion_type             # <<<<<<<<<<<<<<
+ *     self.success = success
+ *     self.tag = tag
+ */
+  __pyx_v_self->completion_type = __pyx_v_completion_type;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/event.pyx.pxi":43
+ *       object batch_operations):
+ *     self.completion_type = completion_type
+ *     self.success = success             # <<<<<<<<<<<<<<
+ *     self.tag = tag
+ *     self.batch_operations = batch_operations
+ */
+  __pyx_v_self->success = __pyx_v_success;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/event.pyx.pxi":44
+ *     self.completion_type = completion_type
+ *     self.success = success
+ *     self.tag = tag             # <<<<<<<<<<<<<<
+ *     self.batch_operations = batch_operations
+ * 
+ */
+  __Pyx_INCREF(__pyx_v_tag);
+  __Pyx_GIVEREF(__pyx_v_tag);
+  __Pyx_GOTREF(__pyx_v_self->tag);
+  __Pyx_DECREF(__pyx_v_self->tag);
+  __pyx_v_self->tag = __pyx_v_tag;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/event.pyx.pxi":45
+ *     self.success = success
+ *     self.tag = tag
+ *     self.batch_operations = batch_operations             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_INCREF(__pyx_v_batch_operations);
+  __Pyx_GIVEREF(__pyx_v_batch_operations);
+  __Pyx_GOTREF(__pyx_v_self->batch_operations);
+  __Pyx_DECREF(__pyx_v_self->batch_operations);
+  __pyx_v_self->batch_operations = __pyx_v_batch_operations;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/event.pyx.pxi":39
+ * cdef class BatchOperationEvent(BaseEvent):
+ * 
+ *   def __cinit__(             # <<<<<<<<<<<<<<
+ *       self, grpc_completion_type completion_type, bint success, object tag,
+ *       object batch_operations):
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/event.pxd.pxi":37
+ * cdef class BatchOperationEvent(BaseEvent):
+ * 
+ *   cdef readonly grpc_completion_type completion_type             # <<<<<<<<<<<<<<
+ *   cdef readonly bint success
+ *   cdef readonly object tag
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_19BatchOperationEvent_15completion_type_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_19BatchOperationEvent_15completion_type_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_7_cython_6cygrpc_19BatchOperationEvent_15completion_type___get__(((struct __pyx_obj_7_cython_6cygrpc_BatchOperationEvent *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_19BatchOperationEvent_15completion_type___get__(struct __pyx_obj_7_cython_6cygrpc_BatchOperationEvent *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_grpc_completion_type(__pyx_v_self->completion_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 37, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.BatchOperationEvent.completion_type.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/event.pxd.pxi":38
+ * 
+ *   cdef readonly grpc_completion_type completion_type
+ *   cdef readonly bint success             # <<<<<<<<<<<<<<
+ *   cdef readonly object tag
+ *   cdef readonly object batch_operations
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_19BatchOperationEvent_7success_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_19BatchOperationEvent_7success_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_7_cython_6cygrpc_19BatchOperationEvent_7success___get__(((struct __pyx_obj_7_cython_6cygrpc_BatchOperationEvent *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_19BatchOperationEvent_7success___get__(struct __pyx_obj_7_cython_6cygrpc_BatchOperationEvent *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->success); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 38, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.BatchOperationEvent.success.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/event.pxd.pxi":39
+ *   cdef readonly grpc_completion_type completion_type
+ *   cdef readonly bint success
+ *   cdef readonly object tag             # <<<<<<<<<<<<<<
+ *   cdef readonly object batch_operations
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_19BatchOperationEvent_3tag_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_19BatchOperationEvent_3tag_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_7_cython_6cygrpc_19BatchOperationEvent_3tag___get__(((struct __pyx_obj_7_cython_6cygrpc_BatchOperationEvent *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_19BatchOperationEvent_3tag___get__(struct __pyx_obj_7_cython_6cygrpc_BatchOperationEvent *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->tag);
+  __pyx_r = __pyx_v_self->tag;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/event.pxd.pxi":40
+ *   cdef readonly bint success
+ *   cdef readonly object tag
+ *   cdef readonly object batch_operations             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_19BatchOperationEvent_16batch_operations_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_19BatchOperationEvent_16batch_operations_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_7_cython_6cygrpc_19BatchOperationEvent_16batch_operations___get__(((struct __pyx_obj_7_cython_6cygrpc_BatchOperationEvent *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_19BatchOperationEvent_16batch_operations___get__(struct __pyx_obj_7_cython_6cygrpc_BatchOperationEvent *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->batch_operations);
+  __pyx_r = __pyx_v_self->batch_operations;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __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_7_cython_6cygrpc_19BatchOperationEvent_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_19BatchOperationEvent_3__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_19BatchOperationEvent_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_19BatchOperationEvent_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_7_cython_6cygrpc_19BatchOperationEvent_2__reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc_BatchOperationEvent *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_19BatchOperationEvent_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_BatchOperationEvent *__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(10, 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("_cython.cygrpc.BatchOperationEvent.__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_7_cython_6cygrpc_19BatchOperationEvent_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_19BatchOperationEvent_5__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_19BatchOperationEvent_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_19BatchOperationEvent_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(10, 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(10, 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(10, 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("_cython.cygrpc.BatchOperationEvent.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_19BatchOperationEvent_4__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc_BatchOperationEvent *)__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_7_cython_6cygrpc_19BatchOperationEvent_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_BatchOperationEvent *__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(10, 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("_cython.cygrpc.BatchOperationEvent.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/event.pyx.pxi":50
+ * cdef class ServerShutdownEvent(BaseEvent):
+ * 
+ *   def __cinit__(             # <<<<<<<<<<<<<<
+ *       self, grpc_completion_type completion_type, bint success, object tag):
+ *     self.completion_type = completion_type
+ */
+
+/* Python wrapper */
+static int __pyx_pw_7_cython_6cygrpc_19ServerShutdownEvent_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_7_cython_6cygrpc_19ServerShutdownEvent_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  grpc_completion_type __pyx_v_completion_type;
+  int __pyx_v_success;
+  PyObject *__pyx_v_tag = 0;
+  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+  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;
+  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);
+  {
+    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_completion_type,&__pyx_n_s_success,&__pyx_n_s_tag,0};
+    if (__pyx_kwds) {
+      Py_ssize_t kw_args;
+      switch (__pyx_nargs) {
+        case  3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
+      switch (__pyx_nargs) {
+        case  0:
+        if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_completion_type)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 50, __pyx_L3_error)
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_success)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 50, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 1); __PYX_ERR(16, 50, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_tag)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[2]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 50, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 2); __PYX_ERR(16, 50, __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, "__cinit__") < 0)) __PYX_ERR(16, 50, __pyx_L3_error)
+      }
+    } else if (unlikely(__pyx_nargs != 3)) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+      values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
+      values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
+    }
+    __pyx_v_completion_type = ((grpc_completion_type)__Pyx_PyInt_As_grpc_completion_type(values[0])); if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 51, __pyx_L3_error)
+    __pyx_v_success = __Pyx_PyObject_IsTrue(values[1]); if (unlikely((__pyx_v_success == (int)-1) && PyErr_Occurred())) __PYX_ERR(16, 51, __pyx_L3_error)
+    __pyx_v_tag = values[2];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, __pyx_nargs); __PYX_ERR(16, 50, __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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_AddTraceback("_cython.cygrpc.ServerShutdownEvent.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_19ServerShutdownEvent___cinit__(((struct __pyx_obj_7_cython_6cygrpc_ServerShutdownEvent *)__pyx_v_self), __pyx_v_completion_type, __pyx_v_success, __pyx_v_tag);
+
+  /* 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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_7_cython_6cygrpc_19ServerShutdownEvent___cinit__(struct __pyx_obj_7_cython_6cygrpc_ServerShutdownEvent *__pyx_v_self, grpc_completion_type __pyx_v_completion_type, int __pyx_v_success, PyObject *__pyx_v_tag) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__cinit__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/event.pyx.pxi":52
+ *   def __cinit__(
+ *       self, grpc_completion_type completion_type, bint success, object tag):
+ *     self.completion_type = completion_type             # <<<<<<<<<<<<<<
+ *     self.success = success
+ *     self.tag = tag
+ */
+  __pyx_v_self->completion_type = __pyx_v_completion_type;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/event.pyx.pxi":53
+ *       self, grpc_completion_type completion_type, bint success, object tag):
+ *     self.completion_type = completion_type
+ *     self.success = success             # <<<<<<<<<<<<<<
+ *     self.tag = tag
+ */
+  __pyx_v_self->success = __pyx_v_success;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/event.pyx.pxi":54
+ *     self.completion_type = completion_type
+ *     self.success = success
+ *     self.tag = tag             # <<<<<<<<<<<<<<
+ */
+  __Pyx_INCREF(__pyx_v_tag);
+  __Pyx_GIVEREF(__pyx_v_tag);
+  __Pyx_GOTREF(__pyx_v_self->tag);
+  __Pyx_DECREF(__pyx_v_self->tag);
+  __pyx_v_self->tag = __pyx_v_tag;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/event.pyx.pxi":50
+ * cdef class ServerShutdownEvent(BaseEvent):
+ * 
+ *   def __cinit__(             # <<<<<<<<<<<<<<
+ *       self, grpc_completion_type completion_type, bint success, object tag):
+ *     self.completion_type = completion_type
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/event.pxd.pxi":45
+ * cdef class ServerShutdownEvent(BaseEvent):
+ * 
+ *   cdef readonly grpc_completion_type completion_type             # <<<<<<<<<<<<<<
+ *   cdef readonly bint success
+ *   cdef readonly object tag
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_19ServerShutdownEvent_15completion_type_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_19ServerShutdownEvent_15completion_type_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_7_cython_6cygrpc_19ServerShutdownEvent_15completion_type___get__(((struct __pyx_obj_7_cython_6cygrpc_ServerShutdownEvent *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_19ServerShutdownEvent_15completion_type___get__(struct __pyx_obj_7_cython_6cygrpc_ServerShutdownEvent *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_grpc_completion_type(__pyx_v_self->completion_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 45, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.ServerShutdownEvent.completion_type.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/event.pxd.pxi":46
+ * 
+ *   cdef readonly grpc_completion_type completion_type
+ *   cdef readonly bint success             # <<<<<<<<<<<<<<
+ *   cdef readonly object tag
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_19ServerShutdownEvent_7success_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_19ServerShutdownEvent_7success_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_7_cython_6cygrpc_19ServerShutdownEvent_7success___get__(((struct __pyx_obj_7_cython_6cygrpc_ServerShutdownEvent *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_19ServerShutdownEvent_7success___get__(struct __pyx_obj_7_cython_6cygrpc_ServerShutdownEvent *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->success); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 46, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.ServerShutdownEvent.success.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/event.pxd.pxi":47
+ *   cdef readonly grpc_completion_type completion_type
+ *   cdef readonly bint success
+ *   cdef readonly object tag             # <<<<<<<<<<<<<<
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_19ServerShutdownEvent_3tag_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_19ServerShutdownEvent_3tag_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_7_cython_6cygrpc_19ServerShutdownEvent_3tag___get__(((struct __pyx_obj_7_cython_6cygrpc_ServerShutdownEvent *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_19ServerShutdownEvent_3tag___get__(struct __pyx_obj_7_cython_6cygrpc_ServerShutdownEvent *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->tag);
+  __pyx_r = __pyx_v_self->tag;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __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_7_cython_6cygrpc_19ServerShutdownEvent_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_19ServerShutdownEvent_3__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_19ServerShutdownEvent_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_19ServerShutdownEvent_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_7_cython_6cygrpc_19ServerShutdownEvent_2__reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc_ServerShutdownEvent *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_19ServerShutdownEvent_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_ServerShutdownEvent *__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(10, 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("_cython.cygrpc.ServerShutdownEvent.__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_7_cython_6cygrpc_19ServerShutdownEvent_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_19ServerShutdownEvent_5__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_19ServerShutdownEvent_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_19ServerShutdownEvent_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(10, 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(10, 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(10, 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("_cython.cygrpc.ServerShutdownEvent.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_19ServerShutdownEvent_4__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc_ServerShutdownEvent *)__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_7_cython_6cygrpc_19ServerShutdownEvent_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_ServerShutdownEvent *__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(10, 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("_cython.cygrpc.ServerShutdownEvent.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":27
+ * 
+ * 
+ * cdef void _store_c_metadata(             # <<<<<<<<<<<<<<
+ *     metadata, grpc_metadata **c_metadata, size_t *c_count) except *:
+ *   if metadata is None:
+ */
+
+static void __pyx_f_7_cython_6cygrpc__store_c_metadata(PyObject *__pyx_v_metadata, grpc_metadata **__pyx_v_c_metadata, size_t *__pyx_v_c_count) {
+  PyObject *__pyx_v_metadatum_count = NULL;
+  PyObject *__pyx_v_index = NULL;
+  PyObject *__pyx_v_key = NULL;
+  PyObject *__pyx_v_value = NULL;
+  PyObject *__pyx_v_encoded_key = NULL;
+  PyObject *__pyx_v_encoded_value = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  Py_ssize_t __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  size_t __pyx_t_4;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *(*__pyx_t_6)(PyObject *);
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
+  PyObject *__pyx_t_9 = NULL;
+  PyObject *__pyx_t_10 = NULL;
+  PyObject *(*__pyx_t_11)(PyObject *);
+  int __pyx_t_12;
+  grpc_slice __pyx_t_13;
+  Py_ssize_t __pyx_t_14;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_store_c_metadata", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":29
+ * cdef void _store_c_metadata(
+ *     metadata, grpc_metadata **c_metadata, size_t *c_count) except *:
+ *   if metadata is None:             # <<<<<<<<<<<<<<
+ *     c_count[0] = 0
+ *     c_metadata[0] = NULL
+ */
+  __pyx_t_1 = (__pyx_v_metadata == Py_None);
+  if (__pyx_t_1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":30
+ *     metadata, grpc_metadata **c_metadata, size_t *c_count) except *:
+ *   if metadata is None:
+ *     c_count[0] = 0             # <<<<<<<<<<<<<<
+ *     c_metadata[0] = NULL
+ *   else:
+ */
+    (__pyx_v_c_count[0]) = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":31
+ *   if metadata is None:
+ *     c_count[0] = 0
+ *     c_metadata[0] = NULL             # <<<<<<<<<<<<<<
+ *   else:
+ *     metadatum_count = len(metadata)
+ */
+    (__pyx_v_c_metadata[0]) = NULL;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":29
+ * cdef void _store_c_metadata(
+ *     metadata, grpc_metadata **c_metadata, size_t *c_count) except *:
+ *   if metadata is None:             # <<<<<<<<<<<<<<
+ *     c_count[0] = 0
+ *     c_metadata[0] = NULL
+ */
+    goto __pyx_L3;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":33
+ *     c_metadata[0] = NULL
+ *   else:
+ *     metadatum_count = len(metadata)             # <<<<<<<<<<<<<<
+ *     if metadatum_count == 0:
+ *       c_count[0] = 0
+ */
+  /*else*/ {
+    __pyx_t_2 = PyObject_Length(__pyx_v_metadata); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(18, 33, __pyx_L1_error)
+    __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 33, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_v_metadatum_count = __pyx_t_3;
+    __pyx_t_3 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":34
+ *   else:
+ *     metadatum_count = len(metadata)
+ *     if metadatum_count == 0:             # <<<<<<<<<<<<<<
+ *       c_count[0] = 0
+ *       c_metadata[0] = NULL
+ */
+    __pyx_t_1 = (__Pyx_PyInt_BoolEqObjC(__pyx_v_metadatum_count, __pyx_int_0, 0, 0)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 34, __pyx_L1_error)
+    if (__pyx_t_1) {
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":35
+ *     metadatum_count = len(metadata)
+ *     if metadatum_count == 0:
+ *       c_count[0] = 0             # <<<<<<<<<<<<<<
+ *       c_metadata[0] = NULL
+ *     else:
+ */
+      (__pyx_v_c_count[0]) = 0;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":36
+ *     if metadatum_count == 0:
+ *       c_count[0] = 0
+ *       c_metadata[0] = NULL             # <<<<<<<<<<<<<<
+ *     else:
+ *       c_count[0] = metadatum_count
+ */
+      (__pyx_v_c_metadata[0]) = NULL;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":34
+ *   else:
+ *     metadatum_count = len(metadata)
+ *     if metadatum_count == 0:             # <<<<<<<<<<<<<<
+ *       c_count[0] = 0
+ *       c_metadata[0] = NULL
+ */
+      goto __pyx_L4;
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":38
+ *       c_metadata[0] = NULL
+ *     else:
+ *       c_count[0] = metadatum_count             # <<<<<<<<<<<<<<
+ *       c_metadata[0] = <grpc_metadata *>gpr_malloc(
+ *           metadatum_count * sizeof(grpc_metadata))
+ */
+    /*else*/ {
+      __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_metadatum_count); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 38, __pyx_L1_error)
+      (__pyx_v_c_count[0]) = __pyx_t_4;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":40
+ *       c_count[0] = metadatum_count
+ *       c_metadata[0] = <grpc_metadata *>gpr_malloc(
+ *           metadatum_count * sizeof(grpc_metadata))             # <<<<<<<<<<<<<<
+ *       for index, (key, value) in enumerate(metadata):
+ *         encoded_key = _encode(key)
+ */
+      __pyx_t_3 = __Pyx_PyInt_FromSize_t((sizeof(grpc_metadata))); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 40, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
+      __pyx_t_5 = PyNumber_Multiply(__pyx_v_metadatum_count, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 40, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_5);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_t_5); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 40, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":39
+ *     else:
+ *       c_count[0] = metadatum_count
+ *       c_metadata[0] = <grpc_metadata *>gpr_malloc(             # <<<<<<<<<<<<<<
+ *           metadatum_count * sizeof(grpc_metadata))
+ *       for index, (key, value) in enumerate(metadata):
+ */
+      (__pyx_v_c_metadata[0]) = ((grpc_metadata *)gpr_malloc(__pyx_t_4));
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":41
+ *       c_metadata[0] = <grpc_metadata *>gpr_malloc(
+ *           metadatum_count * sizeof(grpc_metadata))
+ *       for index, (key, value) in enumerate(metadata):             # <<<<<<<<<<<<<<
+ *         encoded_key = _encode(key)
+ *         encoded_value = value if encoded_key[-4:] == b'-bin' else _encode(value)
+ */
+      __Pyx_INCREF(__pyx_int_0);
+      __pyx_t_5 = __pyx_int_0;
+      if (likely(PyList_CheckExact(__pyx_v_metadata)) || PyTuple_CheckExact(__pyx_v_metadata)) {
+        __pyx_t_3 = __pyx_v_metadata; __Pyx_INCREF(__pyx_t_3);
+        __pyx_t_2 = 0;
+        __pyx_t_6 = NULL;
+      } else {
+        __pyx_t_2 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_metadata); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 41, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_3);
+        __pyx_t_6 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 41, __pyx_L1_error)
+      }
+      for (;;) {
+        if (likely(!__pyx_t_6)) {
+          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(18, 41, __pyx_L1_error)
+              #endif
+              if (__pyx_t_2 >= __pyx_temp) break;
+            }
+            #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+            __pyx_t_7 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_2); __Pyx_INCREF(__pyx_t_7); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(18, 41, __pyx_L1_error)
+            #else
+            __pyx_t_7 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 41, __pyx_L1_error)
+            __Pyx_GOTREF(__pyx_t_7);
+            #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(18, 41, __pyx_L1_error)
+              #endif
+              if (__pyx_t_2 >= __pyx_temp) break;
+            }
+            #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+            __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_2); __Pyx_INCREF(__pyx_t_7); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(18, 41, __pyx_L1_error)
+            #else
+            __pyx_t_7 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 41, __pyx_L1_error)
+            __Pyx_GOTREF(__pyx_t_7);
+            #endif
+          }
+        } else {
+          __pyx_t_7 = __pyx_t_6(__pyx_t_3);
+          if (unlikely(!__pyx_t_7)) {
+            PyObject* exc_type = PyErr_Occurred();
+            if (exc_type) {
+              if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
+              else __PYX_ERR(18, 41, __pyx_L1_error)
+            }
+            break;
+          }
+          __Pyx_GOTREF(__pyx_t_7);
+        }
+        if ((likely(PyTuple_CheckExact(__pyx_t_7))) || (PyList_CheckExact(__pyx_t_7))) {
+          PyObject* sequence = __pyx_t_7;
+          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(18, 41, __pyx_L1_error)
+          }
+          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+          if (likely(PyTuple_CheckExact(sequence))) {
+            __pyx_t_8 = PyTuple_GET_ITEM(sequence, 0); 
+            __pyx_t_9 = PyTuple_GET_ITEM(sequence, 1); 
+          } else {
+            __pyx_t_8 = PyList_GET_ITEM(sequence, 0); 
+            __pyx_t_9 = PyList_GET_ITEM(sequence, 1); 
+          }
+          __Pyx_INCREF(__pyx_t_8);
+          __Pyx_INCREF(__pyx_t_9);
+          #else
+          __pyx_t_8 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(18, 41, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_8);
+          __pyx_t_9 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 41, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_9);
+          #endif
+          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        } else {
+          Py_ssize_t index = -1;
+          __pyx_t_10 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_10)) __PYX_ERR(18, 41, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_10);
+          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+          __pyx_t_11 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_10);
+          index = 0; __pyx_t_8 = __pyx_t_11(__pyx_t_10); if (unlikely(!__pyx_t_8)) goto __pyx_L7_unpacking_failed;
+          __Pyx_GOTREF(__pyx_t_8);
+          index = 1; __pyx_t_9 = __pyx_t_11(__pyx_t_10); if (unlikely(!__pyx_t_9)) goto __pyx_L7_unpacking_failed;
+          __Pyx_GOTREF(__pyx_t_9);
+          if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_10), 2) < 0) __PYX_ERR(18, 41, __pyx_L1_error)
+          __pyx_t_11 = NULL;
+          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+          goto __pyx_L8_unpacking_done;
+          __pyx_L7_unpacking_failed:;
+          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+          __pyx_t_11 = NULL;
+          if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
+          __PYX_ERR(18, 41, __pyx_L1_error)
+          __pyx_L8_unpacking_done:;
+        }
+        __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_8);
+        __pyx_t_8 = 0;
+        __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_9);
+        __pyx_t_9 = 0;
+        __Pyx_INCREF(__pyx_t_5);
+        __Pyx_XDECREF_SET(__pyx_v_index, __pyx_t_5);
+        __pyx_t_7 = __Pyx_PyInt_AddObjC(__pyx_t_5, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 41, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_5);
+        __pyx_t_5 = __pyx_t_7;
+        __pyx_t_7 = 0;
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":42
+ *           metadatum_count * sizeof(grpc_metadata))
+ *       for index, (key, value) in enumerate(metadata):
+ *         encoded_key = _encode(key)             # <<<<<<<<<<<<<<
+ *         encoded_value = value if encoded_key[-4:] == b'-bin' else _encode(value)
+ *         if not isinstance(encoded_value, bytes):
+ */
+        __pyx_t_7 = __pyx_f_7_cython_6cygrpc__encode(__pyx_v_key); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 42, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_7);
+        __Pyx_XDECREF_SET(__pyx_v_encoded_key, ((PyObject*)__pyx_t_7));
+        __pyx_t_7 = 0;
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":43
+ *       for index, (key, value) in enumerate(metadata):
+ *         encoded_key = _encode(key)
+ *         encoded_value = value if encoded_key[-4:] == b'-bin' else _encode(value)             # <<<<<<<<<<<<<<
+ *         if not isinstance(encoded_value, bytes):
+ *           raise TypeError('Binary metadata key="%s" expected bytes, got %s' % (
+ */
+        if (unlikely(__pyx_v_encoded_key == Py_None)) {
+          PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+          __PYX_ERR(18, 43, __pyx_L1_error)
+        }
+        __pyx_t_9 = PySequence_GetSlice(__pyx_v_encoded_key, -4L, PY_SSIZE_T_MAX); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 43, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_9);
+        __pyx_t_1 = (__Pyx_PyBytes_Equals(__pyx_t_9, __pyx_kp_b_bin, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(18, 43, __pyx_L1_error)
+        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+        if (__pyx_t_1) {
+          __Pyx_INCREF(__pyx_v_value);
+          __pyx_t_7 = __pyx_v_value;
+        } else {
+          __pyx_t_9 = __pyx_f_7_cython_6cygrpc__encode(__pyx_v_value); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 43, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_9);
+          __pyx_t_7 = __pyx_t_9;
+          __pyx_t_9 = 0;
+        }
+        __Pyx_XDECREF_SET(__pyx_v_encoded_value, __pyx_t_7);
+        __pyx_t_7 = 0;
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":44
+ *         encoded_key = _encode(key)
+ *         encoded_value = value if encoded_key[-4:] == b'-bin' else _encode(value)
+ *         if not isinstance(encoded_value, bytes):             # <<<<<<<<<<<<<<
+ *           raise TypeError('Binary metadata key="%s" expected bytes, got %s' % (
+ *             key,
+ */
+        __pyx_t_1 = PyBytes_Check(__pyx_v_encoded_value); 
+        __pyx_t_12 = (!__pyx_t_1);
+        if (unlikely(__pyx_t_12)) {
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":46
+ *         if not isinstance(encoded_value, bytes):
+ *           raise TypeError('Binary metadata key="%s" expected bytes, got %s' % (
+ *             key,             # <<<<<<<<<<<<<<
+ *             type(encoded_value)
+ *           ))
+ */
+          __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 46, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_7);
+          __Pyx_INCREF(__pyx_v_key);
+          __Pyx_GIVEREF(__pyx_v_key);
+          if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_key)) __PYX_ERR(18, 46, __pyx_L1_error);
+          __Pyx_INCREF(((PyObject *)Py_TYPE(__pyx_v_encoded_value)));
+          __Pyx_GIVEREF(((PyObject *)Py_TYPE(__pyx_v_encoded_value)));
+          if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 1, ((PyObject *)Py_TYPE(__pyx_v_encoded_value)))) __PYX_ERR(18, 46, __pyx_L1_error);
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":45
+ *         encoded_value = value if encoded_key[-4:] == b'-bin' else _encode(value)
+ *         if not isinstance(encoded_value, bytes):
+ *           raise TypeError('Binary metadata key="%s" expected bytes, got %s' % (             # <<<<<<<<<<<<<<
+ *             key,
+ *             type(encoded_value)
+ */
+          __pyx_t_9 = __Pyx_PyString_Format(__pyx_kp_s_Binary_metadata_key_s_expected_b, __pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 45, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_9);
+          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+          __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 45, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_7);
+          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+          __Pyx_Raise(__pyx_t_7, 0, 0, 0);
+          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+          __PYX_ERR(18, 45, __pyx_L1_error)
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":44
+ *         encoded_key = _encode(key)
+ *         encoded_value = value if encoded_key[-4:] == b'-bin' else _encode(value)
+ *         if not isinstance(encoded_value, bytes):             # <<<<<<<<<<<<<<
+ *           raise TypeError('Binary metadata key="%s" expected bytes, got %s' % (
+ *             key,
+ */
+        }
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":49
+ *             type(encoded_value)
+ *           ))
+ *         c_metadata[0][index].key = _slice_from_bytes(encoded_key)             # <<<<<<<<<<<<<<
+ *         c_metadata[0][index].value = _slice_from_bytes(encoded_value)
+ * 
+ */
+        __pyx_t_13 = __pyx_f_7_cython_6cygrpc__slice_from_bytes(__pyx_v_encoded_key); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 49, __pyx_L1_error)
+        __pyx_t_14 = __Pyx_PyIndex_AsSsize_t(__pyx_v_index); if (unlikely((__pyx_t_14 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 49, __pyx_L1_error)
+        ((__pyx_v_c_metadata[0])[__pyx_t_14]).key = __pyx_t_13;
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":50
+ *           ))
+ *         c_metadata[0][index].key = _slice_from_bytes(encoded_key)
+ *         c_metadata[0][index].value = _slice_from_bytes(encoded_value)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+        if (!(likely(PyBytes_CheckExact(__pyx_v_encoded_value))||((__pyx_v_encoded_value) == Py_None) || __Pyx_RaiseUnexpectedTypeError("bytes", __pyx_v_encoded_value))) __PYX_ERR(18, 50, __pyx_L1_error)
+        __pyx_t_13 = __pyx_f_7_cython_6cygrpc__slice_from_bytes(((PyObject*)__pyx_v_encoded_value)); if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 50, __pyx_L1_error)
+        __pyx_t_14 = __Pyx_PyIndex_AsSsize_t(__pyx_v_index); if (unlikely((__pyx_t_14 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 50, __pyx_L1_error)
+        ((__pyx_v_c_metadata[0])[__pyx_t_14]).value = __pyx_t_13;
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":41
+ *       c_metadata[0] = <grpc_metadata *>gpr_malloc(
+ *           metadatum_count * sizeof(grpc_metadata))
+ *       for index, (key, value) in enumerate(metadata):             # <<<<<<<<<<<<<<
+ *         encoded_key = _encode(key)
+ *         encoded_value = value if encoded_key[-4:] == b'-bin' else _encode(value)
+ */
+      }
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    }
+    __pyx_L4:;
+  }
+  __pyx_L3:;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":27
+ * 
+ * 
+ * cdef void _store_c_metadata(             # <<<<<<<<<<<<<<
+ *     metadata, grpc_metadata **c_metadata, size_t *c_count) except *:
+ *   if metadata is None:
+ */
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_AddTraceback("_cython.cygrpc._store_c_metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_metadatum_count);
+  __Pyx_XDECREF(__pyx_v_index);
+  __Pyx_XDECREF(__pyx_v_key);
+  __Pyx_XDECREF(__pyx_v_value);
+  __Pyx_XDECREF(__pyx_v_encoded_key);
+  __Pyx_XDECREF(__pyx_v_encoded_value);
+  __Pyx_RefNannyFinishContext();
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":53
+ * 
+ * 
+ * cdef void _release_c_metadata(grpc_metadata *c_metadata, int count) except *:             # <<<<<<<<<<<<<<
+ *   if 0 < count:
+ *     for index in range(count):
+ */
+
+static void __pyx_f_7_cython_6cygrpc__release_c_metadata(grpc_metadata *__pyx_v_c_metadata, int __pyx_v_count) {
+  int __pyx_v_index;
+  int __pyx_t_1;
+  int __pyx_t_2;
+  int __pyx_t_3;
+  int __pyx_t_4;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":54
+ * 
+ * cdef void _release_c_metadata(grpc_metadata *c_metadata, int count) except *:
+ *   if 0 < count:             # <<<<<<<<<<<<<<
+ *     for index in range(count):
+ *       grpc_slice_unref(c_metadata[index].key)
+ */
+  __pyx_t_1 = (0 < __pyx_v_count);
+  if (__pyx_t_1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":55
+ * cdef void _release_c_metadata(grpc_metadata *c_metadata, int count) except *:
+ *   if 0 < count:
+ *     for index in range(count):             # <<<<<<<<<<<<<<
+ *       grpc_slice_unref(c_metadata[index].key)
+ *       grpc_slice_unref(c_metadata[index].value)
+ */
+    __pyx_t_2 = __pyx_v_count;
+    __pyx_t_3 = __pyx_t_2;
+    for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
+      __pyx_v_index = __pyx_t_4;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":56
+ *   if 0 < count:
+ *     for index in range(count):
+ *       grpc_slice_unref(c_metadata[index].key)             # <<<<<<<<<<<<<<
+ *       grpc_slice_unref(c_metadata[index].value)
+ *     gpr_free(c_metadata)
+ */
+      grpc_slice_unref((__pyx_v_c_metadata[__pyx_v_index]).key);
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":57
+ *     for index in range(count):
+ *       grpc_slice_unref(c_metadata[index].key)
+ *       grpc_slice_unref(c_metadata[index].value)             # <<<<<<<<<<<<<<
+ *     gpr_free(c_metadata)
+ * 
+ */
+      grpc_slice_unref((__pyx_v_c_metadata[__pyx_v_index]).value);
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":58
+ *       grpc_slice_unref(c_metadata[index].key)
+ *       grpc_slice_unref(c_metadata[index].value)
+ *     gpr_free(c_metadata)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+    gpr_free(__pyx_v_c_metadata);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":54
+ * 
+ * cdef void _release_c_metadata(grpc_metadata *c_metadata, int count) except *:
+ *   if 0 < count:             # <<<<<<<<<<<<<<
+ *     for index in range(count):
+ *       grpc_slice_unref(c_metadata[index].key)
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":53
+ * 
+ * 
+ * cdef void _release_c_metadata(grpc_metadata *c_metadata, int count) except *:             # <<<<<<<<<<<<<<
+ *   if 0 < count:
+ *     for index in range(count):
+ */
+
+  /* function exit code */
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":61
+ * 
+ * 
+ * cdef tuple _metadatum(grpc_slice key_slice, grpc_slice value_slice):             # <<<<<<<<<<<<<<
+ *   cdef bytes key = _slice_bytes(key_slice)
+ *   cdef bytes value = _slice_bytes(value_slice)
+ */
+
+static PyObject *__pyx_f_7_cython_6cygrpc__metadatum(grpc_slice __pyx_v_key_slice, grpc_slice __pyx_v_value_slice) {
+  PyObject *__pyx_v_key = 0;
+  PyObject *__pyx_v_value = 0;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  int __pyx_t_6;
+  unsigned int __pyx_t_7;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_metadatum", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":62
+ * 
+ * cdef tuple _metadatum(grpc_slice key_slice, grpc_slice value_slice):
+ *   cdef bytes key = _slice_bytes(key_slice)             # <<<<<<<<<<<<<<
+ *   cdef bytes value = _slice_bytes(value_slice)
+ *   return <tuple>_Metadatum(
+ */
+  __pyx_t_1 = __pyx_f_7_cython_6cygrpc__slice_bytes(__pyx_v_key_slice); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 62, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_key = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":63
+ * cdef tuple _metadatum(grpc_slice key_slice, grpc_slice value_slice):
+ *   cdef bytes key = _slice_bytes(key_slice)
+ *   cdef bytes value = _slice_bytes(value_slice)             # <<<<<<<<<<<<<<
+ *   return <tuple>_Metadatum(
+ *       _decode(key), value if key[-4:] == b'-bin' else _decode(value))
+ */
+  __pyx_t_1 = __pyx_f_7_cython_6cygrpc__slice_bytes(__pyx_v_value_slice); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 63, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_value = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":64
+ *   cdef bytes key = _slice_bytes(key_slice)
+ *   cdef bytes value = _slice_bytes(value_slice)
+ *   return <tuple>_Metadatum(             # <<<<<<<<<<<<<<
+ *       _decode(key), value if key[-4:] == b'-bin' else _decode(value))
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Metadatum); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 64, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":65
+ *   cdef bytes value = _slice_bytes(value_slice)
+ *   return <tuple>_Metadatum(
+ *       _decode(key), value if key[-4:] == b'-bin' else _decode(value))             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_3 = __pyx_f_7_cython_6cygrpc__decode(__pyx_v_key); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 65, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  if (unlikely(__pyx_v_key == Py_None)) {
+    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+    __PYX_ERR(18, 65, __pyx_L1_error)
+  }
+  __pyx_t_5 = PySequence_GetSlice(__pyx_v_key, -4L, PY_SSIZE_T_MAX); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 65, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_6 = (__Pyx_PyBytes_Equals(__pyx_t_5, __pyx_kp_b_bin, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(18, 65, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  if (__pyx_t_6) {
+    __Pyx_INCREF(__pyx_v_value);
+    __pyx_t_4 = __pyx_v_value;
+  } else {
+    __pyx_t_5 = __pyx_f_7_cython_6cygrpc__decode(__pyx_v_value); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 65, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_4 = __pyx_t_5;
+    __pyx_t_5 = 0;
+  }
+  __pyx_t_5 = NULL;
+  __pyx_t_7 = 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_7 = 1;
+    }
+  }
+  #endif
+  {
+    PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_3, __pyx_t_4};
+    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 2+__pyx_t_7);
+    __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(18, 64, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":64
+ *   cdef bytes key = _slice_bytes(key_slice)
+ *   cdef bytes value = _slice_bytes(value_slice)
+ *   return <tuple>_Metadatum(             # <<<<<<<<<<<<<<
+ *       _decode(key), value if key[-4:] == b'-bin' else _decode(value))
+ * 
+ */
+  __Pyx_INCREF(((PyObject*)__pyx_t_1));
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":61
+ * 
+ * 
+ * cdef tuple _metadatum(grpc_slice key_slice, grpc_slice value_slice):             # <<<<<<<<<<<<<<
+ *   cdef bytes key = _slice_bytes(key_slice)
+ *   cdef bytes value = _slice_bytes(value_slice)
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_AddTraceback("_cython.cygrpc._metadatum", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_key);
+  __Pyx_XDECREF(__pyx_v_value);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+static PyObject *__pyx_gb_7_cython_6cygrpc_9_metadata_2generator44(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":70
+ * cdef tuple _metadata(grpc_metadata_array *c_metadata_array):
+ *   return tuple(
+ *       _metadatum(             # <<<<<<<<<<<<<<
+ *           c_metadata_array.metadata[index].key,
+ *           c_metadata_array.metadata[index].value)
+ */
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_9_metadata_genexpr(PyObject *__pyx_self, size_t __pyx_genexpr_arg_0) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_6_genexpr *__pyx_cur_scope;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("genexpr", 0);
+  __pyx_cur_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_6_genexpr *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_6_genexpr(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_6_genexpr, __pyx_empty_tuple, NULL);
+  if (unlikely(!__pyx_cur_scope)) {
+    __pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_6_genexpr *)Py_None);
+    __Pyx_INCREF(Py_None);
+    __PYX_ERR(18, 70, __pyx_L1_error)
+  } else {
+    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+  }
+  __pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_7_cython_6cygrpc__metadata *) __pyx_self;
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_outer_scope);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_outer_scope);
+  __pyx_cur_scope->__pyx_genexpr_arg_0 = __pyx_genexpr_arg_0;
+  {
+    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_7_cython_6cygrpc_9_metadata_2generator44, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_metadata_locals_genexpr, __pyx_n_s_cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(18, 70, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_cur_scope);
+    __Pyx_RefNannyFinishContext();
+    return (PyObject *) gen;
+  }
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc._metadata.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_gb_7_cython_6cygrpc_9_metadata_2generator44(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
+{
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_6_genexpr *__pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_6_genexpr *)__pyx_generator->closure);
+  PyObject *__pyx_r = NULL;
+  size_t __pyx_t_1;
+  size_t __pyx_t_2;
+  size_t __pyx_t_3;
+  PyObject *__pyx_t_4 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("genexpr", 0);
+  switch (__pyx_generator->resume_label) {
+    case 0: goto __pyx_L3_first_run;
+    case 1: goto __pyx_L6_resume_from_yield;
+    default: /* CPython raises the right error here */
+    __Pyx_RefNannyFinishContext();
+    return NULL;
+  }
+  __pyx_L3_first_run:;
+  if (unlikely(!__pyx_sent_value)) __PYX_ERR(18, 70, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":73
+ *           c_metadata_array.metadata[index].key,
+ *           c_metadata_array.metadata[index].value)
+ *       for index in range(c_metadata_array.count))             # <<<<<<<<<<<<<<
+ */
+  __pyx_t_1 = __pyx_cur_scope->__pyx_genexpr_arg_0;
+  __pyx_t_2 = __pyx_t_1;
+  for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
+    __pyx_cur_scope->__pyx_v_index = __pyx_t_3;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":70
+ * cdef tuple _metadata(grpc_metadata_array *c_metadata_array):
+ *   return tuple(
+ *       _metadatum(             # <<<<<<<<<<<<<<
+ *           c_metadata_array.metadata[index].key,
+ *           c_metadata_array.metadata[index].value)
+ */
+    __pyx_t_4 = __pyx_f_7_cython_6cygrpc__metadatum((__pyx_cur_scope->__pyx_outer_scope->__pyx_v_c_metadata_array->metadata[__pyx_cur_scope->__pyx_v_index]).key, (__pyx_cur_scope->__pyx_outer_scope->__pyx_v_c_metadata_array->metadata[__pyx_cur_scope->__pyx_v_index]).value); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 70, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_r = __pyx_t_4;
+    __pyx_t_4 = 0;
+    __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
+    __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
+    __pyx_cur_scope->__pyx_t_2 = __pyx_t_3;
+    __Pyx_XGIVEREF(__pyx_r);
+    __Pyx_RefNannyFinishContext();
+    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+    /* return from generator, yielding value */
+    __pyx_generator->resume_label = 1;
+    return __pyx_r;
+    __pyx_L6_resume_from_yield:;
+    __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
+    __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
+    __pyx_t_3 = __pyx_cur_scope->__pyx_t_2;
+    if (unlikely(!__pyx_sent_value)) __PYX_ERR(18, 70, __pyx_L1_error)
+  }
+  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
+
+  /* function exit code */
+  PyErr_SetNone(PyExc_StopIteration);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_Generator_Replace_StopIteration(0);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
+  #if !CYTHON_USE_EXC_INFO_STACK
+  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+  #endif
+  __pyx_generator->resume_label = -1;
+  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":68
+ * 
+ * 
+ * cdef tuple _metadata(grpc_metadata_array *c_metadata_array):             # <<<<<<<<<<<<<<
+ *   return tuple(
+ *       _metadatum(
+ */
+
+static PyObject *__pyx_f_7_cython_6cygrpc__metadata(grpc_metadata_array *__pyx_v_c_metadata_array) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_7_cython_6cygrpc__metadata *__pyx_cur_scope;
+  PyObject *__pyx_gb_7_cython_6cygrpc_9_metadata_2generator44 = 0;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_metadata", 0);
+  __pyx_cur_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_7_cython_6cygrpc__metadata *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_7_cython_6cygrpc__metadata(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_7_cython_6cygrpc__metadata, __pyx_empty_tuple, NULL);
+  if (unlikely(!__pyx_cur_scope)) {
+    __pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_7_cython_6cygrpc__metadata *)Py_None);
+    __Pyx_INCREF(Py_None);
+    __PYX_ERR(18, 68, __pyx_L1_error)
+  } else {
+    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+  }
+  __pyx_cur_scope->__pyx_v_c_metadata_array = __pyx_v_c_metadata_array;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":69
+ * 
+ * cdef tuple _metadata(grpc_metadata_array *c_metadata_array):
+ *   return tuple(             # <<<<<<<<<<<<<<
+ *       _metadatum(
+ *           c_metadata_array.metadata[index].key,
+ */
+  __Pyx_XDECREF(__pyx_r);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":70
+ * cdef tuple _metadata(grpc_metadata_array *c_metadata_array):
+ *   return tuple(
+ *       _metadatum(             # <<<<<<<<<<<<<<
+ *           c_metadata_array.metadata[index].key,
+ *           c_metadata_array.metadata[index].value)
+ */
+  __pyx_t_1 = __pyx_pf_7_cython_6cygrpc_9_metadata_genexpr(((PyObject*)__pyx_cur_scope), __pyx_cur_scope->__pyx_v_c_metadata_array->count); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 70, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":69
+ * 
+ * cdef tuple _metadata(grpc_metadata_array *c_metadata_array):
+ *   return tuple(             # <<<<<<<<<<<<<<
+ *       _metadatum(
+ *           c_metadata_array.metadata[index].key,
+ */
+  __pyx_t_2 = __Pyx_PySequence_Tuple(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 69, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_2);
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":68
+ * 
+ * 
+ * cdef tuple _metadata(grpc_metadata_array *c_metadata_array):             # <<<<<<<<<<<<<<
+ *   return tuple(
+ *       _metadatum(
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("_cython.cygrpc._metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_gb_7_cython_6cygrpc_9_metadata_2generator44);
+  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":18
+ * cdef class Operation:
+ * 
+ *   cdef void c(self) except *:             # <<<<<<<<<<<<<<
+ *     raise NotImplementedError()
+ * 
+ */
+
+static void __pyx_f_7_cython_6cygrpc_9Operation_c(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_Operation *__pyx_v_self) {
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("c", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":19
+ * 
+ *   cdef void c(self) except *:
+ *     raise NotImplementedError()             # <<<<<<<<<<<<<<
+ * 
+ *   cdef void un_c(self) except *:
+ */
+  __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_builtin_NotImplementedError); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 19, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __PYX_ERR(19, 19, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":18
+ * cdef class Operation:
+ * 
+ *   cdef void c(self) except *:             # <<<<<<<<<<<<<<
+ *     raise NotImplementedError()
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.Operation.c", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":21
+ *     raise NotImplementedError()
+ * 
+ *   cdef void un_c(self) except *:             # <<<<<<<<<<<<<<
+ *     raise NotImplementedError()
+ * 
+ */
+
+static void __pyx_f_7_cython_6cygrpc_9Operation_un_c(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_Operation *__pyx_v_self) {
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("un_c", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":22
+ * 
+ *   cdef void un_c(self) except *:
+ *     raise NotImplementedError()             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_builtin_NotImplementedError); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 22, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __PYX_ERR(19, 22, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":21
+ *     raise NotImplementedError()
+ * 
+ *   cdef void un_c(self) except *:             # <<<<<<<<<<<<<<
+ *     raise NotImplementedError()
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.Operation.un_c", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+}
+
+/* "(tree fragment)":1
+ * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
+ *     raise TypeError, "self.c_op cannot be converted to a Python object for pickling"
+ * def __setstate_cython__(self, __pyx_state):
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_9Operation_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_9Operation_1__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_9Operation_1__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_9Operation_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_7_cython_6cygrpc_9Operation___reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc_Operation *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_9Operation___reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_Operation *__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.c_op cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
+ * def __setstate_cython__(self, __pyx_state):
+ *     raise TypeError, "self.c_op cannot be converted to a Python object for pickling"
+ */
+  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self_c_op_cannot_be_converted_to, 0, 0);
+  __PYX_ERR(10, 2, __pyx_L1_error)
+
+  /* "(tree fragment)":1
+ * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
+ *     raise TypeError, "self.c_op cannot be converted to a Python object for pickling"
+ * def __setstate_cython__(self, __pyx_state):
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc.Operation.__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.c_op cannot be converted to a Python object for pickling"
+ * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
+ *     raise TypeError, "self.c_op cannot be converted to a Python object for pickling"
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_9Operation_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_9Operation_3__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_9Operation_3__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_9Operation_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
+) {
+  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(10, 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(10, 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(10, 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("_cython.cygrpc.Operation.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_9Operation_2__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc_Operation *)__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_7_cython_6cygrpc_9Operation_2__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_Operation *__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.c_op cannot be converted to a Python object for pickling"
+ * def __setstate_cython__(self, __pyx_state):
+ *     raise TypeError, "self.c_op cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
+ */
+  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self_c_op_cannot_be_converted_to, 0, 0);
+  __PYX_ERR(10, 4, __pyx_L1_error)
+
+  /* "(tree fragment)":3
+ * def __reduce_cython__(self):
+ *     raise TypeError, "self.c_op cannot be converted to a Python object for pickling"
+ * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
+ *     raise TypeError, "self.c_op cannot be converted to a Python object for pickling"
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc.Operation.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":27
+ * cdef class SendInitialMetadataOperation(Operation):
+ * 
+ *   def __cinit__(self, initial_metadata, flags):             # <<<<<<<<<<<<<<
+ *     self._initial_metadata = initial_metadata
+ *     self._flags = flags
+ */
+
+/* Python wrapper */
+static int __pyx_pw_7_cython_6cygrpc_28SendInitialMetadataOperation_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_7_cython_6cygrpc_28SendInitialMetadataOperation_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_initial_metadata = 0;
+  PyObject *__pyx_v_flags = 0;
+  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject* values[2] = {0,0};
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  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);
+  {
+    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_initial_metadata,&__pyx_n_s_flags,0};
+    if (__pyx_kwds) {
+      Py_ssize_t kw_args;
+      switch (__pyx_nargs) {
+        case  2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
+      switch (__pyx_nargs) {
+        case  0:
+        if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_initial_metadata)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 27, __pyx_L3_error)
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_flags)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 27, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, 1); __PYX_ERR(19, 27, __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, "__cinit__") < 0)) __PYX_ERR(19, 27, __pyx_L3_error)
+      }
+    } else if (unlikely(__pyx_nargs != 2)) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+      values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
+    }
+    __pyx_v_initial_metadata = values[0];
+    __pyx_v_flags = values[1];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, __pyx_nargs); __PYX_ERR(19, 27, __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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_AddTraceback("_cython.cygrpc.SendInitialMetadataOperation.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_28SendInitialMetadataOperation___cinit__(((struct __pyx_obj_7_cython_6cygrpc_SendInitialMetadataOperation *)__pyx_v_self), __pyx_v_initial_metadata, __pyx_v_flags);
+
+  /* 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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_7_cython_6cygrpc_28SendInitialMetadataOperation___cinit__(struct __pyx_obj_7_cython_6cygrpc_SendInitialMetadataOperation *__pyx_v_self, PyObject *__pyx_v_initial_metadata, PyObject *__pyx_v_flags) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__cinit__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":28
+ * 
+ *   def __cinit__(self, initial_metadata, flags):
+ *     self._initial_metadata = initial_metadata             # <<<<<<<<<<<<<<
+ *     self._flags = flags
+ * 
+ */
+  __Pyx_INCREF(__pyx_v_initial_metadata);
+  __Pyx_GIVEREF(__pyx_v_initial_metadata);
+  __Pyx_GOTREF(__pyx_v_self->_initial_metadata);
+  __Pyx_DECREF(__pyx_v_self->_initial_metadata);
+  __pyx_v_self->_initial_metadata = __pyx_v_initial_metadata;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":29
+ *   def __cinit__(self, initial_metadata, flags):
+ *     self._initial_metadata = initial_metadata
+ *     self._flags = flags             # <<<<<<<<<<<<<<
+ * 
+ *   def type(self):
+ */
+  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_flags); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(19, 29, __pyx_L1_error)
+  __pyx_v_self->_flags = __pyx_t_1;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":27
+ * cdef class SendInitialMetadataOperation(Operation):
+ * 
+ *   def __cinit__(self, initial_metadata, flags):             # <<<<<<<<<<<<<<
+ *     self._initial_metadata = initial_metadata
+ *     self._flags = flags
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc.SendInitialMetadataOperation.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":31
+ *     self._flags = flags
+ * 
+ *   def type(self):             # <<<<<<<<<<<<<<
+ *     return GRPC_OP_SEND_INITIAL_METADATA
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_28SendInitialMetadataOperation_3type(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_28SendInitialMetadataOperation_3type = {"type", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_28SendInitialMetadataOperation_3type, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_28SendInitialMetadataOperation_3type(PyObject *__pyx_v_self, 
+#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("type (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("type", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "type", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_28SendInitialMetadataOperation_2type(((struct __pyx_obj_7_cython_6cygrpc_SendInitialMetadataOperation *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_28SendInitialMetadataOperation_2type(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_SendInitialMetadataOperation *__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("type", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":32
+ * 
+ *   def type(self):
+ *     return GRPC_OP_SEND_INITIAL_METADATA             # <<<<<<<<<<<<<<
+ * 
+ *   cdef void c(self) except *:
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_grpc_op_type(GRPC_OP_SEND_INITIAL_METADATA); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 32, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":31
+ *     self._flags = flags
+ * 
+ *   def type(self):             # <<<<<<<<<<<<<<
+ *     return GRPC_OP_SEND_INITIAL_METADATA
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.SendInitialMetadataOperation.type", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":34
+ *     return GRPC_OP_SEND_INITIAL_METADATA
+ * 
+ *   cdef void c(self) except *:             # <<<<<<<<<<<<<<
+ *     self.c_op.type = GRPC_OP_SEND_INITIAL_METADATA
+ *     self.c_op.flags = self._flags
+ */
+
+static void __pyx_f_7_cython_6cygrpc_28SendInitialMetadataOperation_c(struct __pyx_obj_7_cython_6cygrpc_SendInitialMetadataOperation *__pyx_v_self) {
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  grpc_metadata *__pyx_t_3;
+  size_t __pyx_t_4;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("c", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":35
+ * 
+ *   cdef void c(self) except *:
+ *     self.c_op.type = GRPC_OP_SEND_INITIAL_METADATA             # <<<<<<<<<<<<<<
+ *     self.c_op.flags = self._flags
+ *     _store_c_metadata(
+ */
+  __pyx_v_self->__pyx_base.c_op.op = GRPC_OP_SEND_INITIAL_METADATA;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":36
+ *   cdef void c(self) except *:
+ *     self.c_op.type = GRPC_OP_SEND_INITIAL_METADATA
+ *     self.c_op.flags = self._flags             # <<<<<<<<<<<<<<
+ *     _store_c_metadata(
+ *         self._initial_metadata, &self._c_initial_metadata,
+ */
+  __pyx_t_1 = __pyx_v_self->_flags;
+  __pyx_v_self->__pyx_base.c_op.flags = __pyx_t_1;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":38
+ *     self.c_op.flags = self._flags
+ *     _store_c_metadata(
+ *         self._initial_metadata, &self._c_initial_metadata,             # <<<<<<<<<<<<<<
+ *         &self._c_initial_metadata_count)
+ *     self.c_op.data.send_initial_metadata.metadata = self._c_initial_metadata
+ */
+  __pyx_t_2 = __pyx_v_self->_initial_metadata;
+  __Pyx_INCREF(__pyx_t_2);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":37
+ *     self.c_op.type = GRPC_OP_SEND_INITIAL_METADATA
+ *     self.c_op.flags = self._flags
+ *     _store_c_metadata(             # <<<<<<<<<<<<<<
+ *         self._initial_metadata, &self._c_initial_metadata,
+ *         &self._c_initial_metadata_count)
+ */
+  __pyx_f_7_cython_6cygrpc__store_c_metadata(__pyx_t_2, (&__pyx_v_self->_c_initial_metadata), (&__pyx_v_self->_c_initial_metadata_count)); if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 37, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":40
+ *         self._initial_metadata, &self._c_initial_metadata,
+ *         &self._c_initial_metadata_count)
+ *     self.c_op.data.send_initial_metadata.metadata = self._c_initial_metadata             # <<<<<<<<<<<<<<
+ *     self.c_op.data.send_initial_metadata.count = self._c_initial_metadata_count
+ *     self.c_op.data.send_initial_metadata.maybe_compression_level.is_set = 0
+ */
+  __pyx_t_3 = __pyx_v_self->_c_initial_metadata;
+  __pyx_v_self->__pyx_base.c_op.data.send_initial_metadata.metadata = __pyx_t_3;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":41
+ *         &self._c_initial_metadata_count)
+ *     self.c_op.data.send_initial_metadata.metadata = self._c_initial_metadata
+ *     self.c_op.data.send_initial_metadata.count = self._c_initial_metadata_count             # <<<<<<<<<<<<<<
+ *     self.c_op.data.send_initial_metadata.maybe_compression_level.is_set = 0
+ * 
+ */
+  __pyx_t_4 = __pyx_v_self->_c_initial_metadata_count;
+  __pyx_v_self->__pyx_base.c_op.data.send_initial_metadata.count = __pyx_t_4;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":42
+ *     self.c_op.data.send_initial_metadata.metadata = self._c_initial_metadata
+ *     self.c_op.data.send_initial_metadata.count = self._c_initial_metadata_count
+ *     self.c_op.data.send_initial_metadata.maybe_compression_level.is_set = 0             # <<<<<<<<<<<<<<
+ * 
+ *   cdef void un_c(self) except *:
+ */
+  __pyx_v_self->__pyx_base.c_op.data.send_initial_metadata.maybe_compression_level.is_set = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":34
+ *     return GRPC_OP_SEND_INITIAL_METADATA
+ * 
+ *   cdef void c(self) except *:             # <<<<<<<<<<<<<<
+ *     self.c_op.type = GRPC_OP_SEND_INITIAL_METADATA
+ *     self.c_op.flags = self._flags
+ */
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("_cython.cygrpc.SendInitialMetadataOperation.c", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":44
+ *     self.c_op.data.send_initial_metadata.maybe_compression_level.is_set = 0
+ * 
+ *   cdef void un_c(self) except *:             # <<<<<<<<<<<<<<
+ *     _release_c_metadata(
+ *         self._c_initial_metadata, self._c_initial_metadata_count)
+ */
+
+static void __pyx_f_7_cython_6cygrpc_28SendInitialMetadataOperation_un_c(struct __pyx_obj_7_cython_6cygrpc_SendInitialMetadataOperation *__pyx_v_self) {
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":45
+ * 
+ *   cdef void un_c(self) except *:
+ *     _release_c_metadata(             # <<<<<<<<<<<<<<
+ *         self._c_initial_metadata, self._c_initial_metadata_count)
+ * 
+ */
+  __pyx_f_7_cython_6cygrpc__release_c_metadata(__pyx_v_self->_c_initial_metadata, __pyx_v_self->_c_initial_metadata_count); if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 45, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":44
+ *     self.c_op.data.send_initial_metadata.maybe_compression_level.is_set = 0
+ * 
+ *   cdef void un_c(self) except *:             # <<<<<<<<<<<<<<
+ *     _release_c_metadata(
+ *         self._c_initial_metadata, self._c_initial_metadata_count)
+ */
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc.SendInitialMetadataOperation.un_c", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pxd.pxi":27
+ * cdef class SendInitialMetadataOperation(Operation):
+ * 
+ *   cdef readonly object _initial_metadata;             # <<<<<<<<<<<<<<
+ *   cdef readonly int _flags
+ *   cdef grpc_metadata *_c_initial_metadata
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_28SendInitialMetadataOperation_17_initial_metadata_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_28SendInitialMetadataOperation_17_initial_metadata_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_7_cython_6cygrpc_28SendInitialMetadataOperation_17_initial_metadata___get__(((struct __pyx_obj_7_cython_6cygrpc_SendInitialMetadataOperation *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_28SendInitialMetadataOperation_17_initial_metadata___get__(struct __pyx_obj_7_cython_6cygrpc_SendInitialMetadataOperation *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->_initial_metadata);
+  __pyx_r = __pyx_v_self->_initial_metadata;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pxd.pxi":28
+ * 
+ *   cdef readonly object _initial_metadata;
+ *   cdef readonly int _flags             # <<<<<<<<<<<<<<
+ *   cdef grpc_metadata *_c_initial_metadata
+ *   cdef size_t _c_initial_metadata_count
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_28SendInitialMetadataOperation_6_flags_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_28SendInitialMetadataOperation_6_flags_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_7_cython_6cygrpc_28SendInitialMetadataOperation_6_flags___get__(((struct __pyx_obj_7_cython_6cygrpc_SendInitialMetadataOperation *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_28SendInitialMetadataOperation_6_flags___get__(struct __pyx_obj_7_cython_6cygrpc_SendInitialMetadataOperation *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 28, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.SendInitialMetadataOperation._flags.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "(tree fragment)":1
+ * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
+ *     raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
+ * def __setstate_cython__(self, __pyx_state):
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_28SendInitialMetadataOperation_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_28SendInitialMetadataOperation_5__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_28SendInitialMetadataOperation_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_28SendInitialMetadataOperation_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_7_cython_6cygrpc_28SendInitialMetadataOperation_4__reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc_SendInitialMetadataOperation *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_28SendInitialMetadataOperation_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_SendInitialMetadataOperation *__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(10, 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("_cython.cygrpc.SendInitialMetadataOperation.__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_7_cython_6cygrpc_28SendInitialMetadataOperation_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_28SendInitialMetadataOperation_7__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_28SendInitialMetadataOperation_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_28SendInitialMetadataOperation_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(10, 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(10, 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(10, 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("_cython.cygrpc.SendInitialMetadataOperation.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_28SendInitialMetadataOperation_6__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc_SendInitialMetadataOperation *)__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_7_cython_6cygrpc_28SendInitialMetadataOperation_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_SendInitialMetadataOperation *__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(10, 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("_cython.cygrpc.SendInitialMetadataOperation.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":51
+ * cdef class SendMessageOperation(Operation):
+ * 
+ *   def __cinit__(self, bytes message, int flags):             # <<<<<<<<<<<<<<
+ *     if message is None:
+ *       self._message = b''
+ */
+
+/* Python wrapper */
+static int __pyx_pw_7_cython_6cygrpc_20SendMessageOperation_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_7_cython_6cygrpc_20SendMessageOperation_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_message = 0;
+  int __pyx_v_flags;
+  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject* values[2] = {0,0};
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  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);
+  {
+    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_message,&__pyx_n_s_flags,0};
+    if (__pyx_kwds) {
+      Py_ssize_t kw_args;
+      switch (__pyx_nargs) {
+        case  2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
+      switch (__pyx_nargs) {
+        case  0:
+        if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_message)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 51, __pyx_L3_error)
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_flags)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 51, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, 1); __PYX_ERR(19, 51, __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, "__cinit__") < 0)) __PYX_ERR(19, 51, __pyx_L3_error)
+      }
+    } else if (unlikely(__pyx_nargs != 2)) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+      values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
+    }
+    __pyx_v_message = ((PyObject*)values[0]);
+    __pyx_v_flags = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_flags == (int)-1) && PyErr_Occurred())) __PYX_ERR(19, 51, __pyx_L3_error)
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, __pyx_nargs); __PYX_ERR(19, 51, __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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_AddTraceback("_cython.cygrpc.SendMessageOperation.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_message), (&PyBytes_Type), 1, "message", 1))) __PYX_ERR(19, 51, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_20SendMessageOperation___cinit__(((struct __pyx_obj_7_cython_6cygrpc_SendMessageOperation *)__pyx_v_self), __pyx_v_message, __pyx_v_flags);
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = -1;
+  __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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_7_cython_6cygrpc_20SendMessageOperation___cinit__(struct __pyx_obj_7_cython_6cygrpc_SendMessageOperation *__pyx_v_self, PyObject *__pyx_v_message, int __pyx_v_flags) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  __Pyx_RefNannySetupContext("__cinit__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":52
+ * 
+ *   def __cinit__(self, bytes message, int flags):
+ *     if message is None:             # <<<<<<<<<<<<<<
+ *       self._message = b''
+ *     else:
+ */
+  __pyx_t_1 = (__pyx_v_message == ((PyObject*)Py_None));
+  if (__pyx_t_1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":53
+ *   def __cinit__(self, bytes message, int flags):
+ *     if message is None:
+ *       self._message = b''             # <<<<<<<<<<<<<<
+ *     else:
+ *       self._message = message
+ */
+    __Pyx_INCREF(__pyx_kp_b__7);
+    __Pyx_GIVEREF(__pyx_kp_b__7);
+    __Pyx_GOTREF(__pyx_v_self->_message);
+    __Pyx_DECREF(__pyx_v_self->_message);
+    __pyx_v_self->_message = __pyx_kp_b__7;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":52
+ * 
+ *   def __cinit__(self, bytes message, int flags):
+ *     if message is None:             # <<<<<<<<<<<<<<
+ *       self._message = b''
+ *     else:
+ */
+    goto __pyx_L3;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":55
+ *       self._message = b''
+ *     else:
+ *       self._message = message             # <<<<<<<<<<<<<<
+ *     self._flags = flags
+ * 
+ */
+  /*else*/ {
+    __Pyx_INCREF(__pyx_v_message);
+    __Pyx_GIVEREF(__pyx_v_message);
+    __Pyx_GOTREF(__pyx_v_self->_message);
+    __Pyx_DECREF(__pyx_v_self->_message);
+    __pyx_v_self->_message = __pyx_v_message;
+  }
+  __pyx_L3:;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":56
+ *     else:
+ *       self._message = message
+ *     self._flags = flags             # <<<<<<<<<<<<<<
+ * 
+ *   def type(self):
+ */
+  __pyx_v_self->_flags = __pyx_v_flags;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":51
+ * cdef class SendMessageOperation(Operation):
+ * 
+ *   def __cinit__(self, bytes message, int flags):             # <<<<<<<<<<<<<<
+ *     if message is None:
+ *       self._message = b''
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":58
+ *     self._flags = flags
+ * 
+ *   def type(self):             # <<<<<<<<<<<<<<
+ *     return GRPC_OP_SEND_MESSAGE
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_20SendMessageOperation_3type(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_20SendMessageOperation_3type = {"type", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_20SendMessageOperation_3type, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_20SendMessageOperation_3type(PyObject *__pyx_v_self, 
+#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("type (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("type", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "type", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_20SendMessageOperation_2type(((struct __pyx_obj_7_cython_6cygrpc_SendMessageOperation *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_20SendMessageOperation_2type(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_SendMessageOperation *__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("type", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":59
+ * 
+ *   def type(self):
+ *     return GRPC_OP_SEND_MESSAGE             # <<<<<<<<<<<<<<
+ * 
+ *   cdef void c(self) except *:
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_grpc_op_type(GRPC_OP_SEND_MESSAGE); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 59, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":58
+ *     self._flags = flags
+ * 
+ *   def type(self):             # <<<<<<<<<<<<<<
+ *     return GRPC_OP_SEND_MESSAGE
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.SendMessageOperation.type", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":61
+ *     return GRPC_OP_SEND_MESSAGE
+ * 
+ *   cdef void c(self) except *:             # <<<<<<<<<<<<<<
+ *     self.c_op.type = GRPC_OP_SEND_MESSAGE
+ *     self.c_op.flags = self._flags
+ */
+
+static void __pyx_f_7_cython_6cygrpc_20SendMessageOperation_c(struct __pyx_obj_7_cython_6cygrpc_SendMessageOperation *__pyx_v_self) {
+  grpc_slice __pyx_v_message_slice;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  char const *__pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  Py_ssize_t __pyx_t_4;
+  grpc_byte_buffer *__pyx_t_5;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("c", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":62
+ * 
+ *   cdef void c(self) except *:
+ *     self.c_op.type = GRPC_OP_SEND_MESSAGE             # <<<<<<<<<<<<<<
+ *     self.c_op.flags = self._flags
+ *     cdef grpc_slice message_slice = grpc_slice_from_copied_buffer(
+ */
+  __pyx_v_self->__pyx_base.c_op.op = GRPC_OP_SEND_MESSAGE;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":63
+ *   cdef void c(self) except *:
+ *     self.c_op.type = GRPC_OP_SEND_MESSAGE
+ *     self.c_op.flags = self._flags             # <<<<<<<<<<<<<<
+ *     cdef grpc_slice message_slice = grpc_slice_from_copied_buffer(
+ *         self._message, len(self._message))
+ */
+  __pyx_t_1 = __pyx_v_self->_flags;
+  __pyx_v_self->__pyx_base.c_op.flags = __pyx_t_1;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":65
+ *     self.c_op.flags = self._flags
+ *     cdef grpc_slice message_slice = grpc_slice_from_copied_buffer(
+ *         self._message, len(self._message))             # <<<<<<<<<<<<<<
+ *     self._c_message_byte_buffer = grpc_raw_byte_buffer_create(
+ *         &message_slice, 1)
+ */
+  if (unlikely(__pyx_v_self->_message == Py_None)) {
+    PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
+    __PYX_ERR(19, 65, __pyx_L1_error)
+  }
+  __pyx_t_2 = __Pyx_PyBytes_AsString(__pyx_v_self->_message); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(19, 65, __pyx_L1_error)
+  __pyx_t_3 = __pyx_v_self->_message;
+  __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(19, 65, __pyx_L1_error)
+  }
+  __pyx_t_4 = __Pyx_PyBytes_GET_SIZE(__pyx_t_3); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(19, 65, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":64
+ *     self.c_op.type = GRPC_OP_SEND_MESSAGE
+ *     self.c_op.flags = self._flags
+ *     cdef grpc_slice message_slice = grpc_slice_from_copied_buffer(             # <<<<<<<<<<<<<<
+ *         self._message, len(self._message))
+ *     self._c_message_byte_buffer = grpc_raw_byte_buffer_create(
+ */
+  __pyx_v_message_slice = grpc_slice_from_copied_buffer(__pyx_t_2, __pyx_t_4);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":66
+ *     cdef grpc_slice message_slice = grpc_slice_from_copied_buffer(
+ *         self._message, len(self._message))
+ *     self._c_message_byte_buffer = grpc_raw_byte_buffer_create(             # <<<<<<<<<<<<<<
+ *         &message_slice, 1)
+ *     grpc_slice_unref(message_slice)
+ */
+  __pyx_v_self->_c_message_byte_buffer = grpc_raw_byte_buffer_create((&__pyx_v_message_slice), 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":68
+ *     self._c_message_byte_buffer = grpc_raw_byte_buffer_create(
+ *         &message_slice, 1)
+ *     grpc_slice_unref(message_slice)             # <<<<<<<<<<<<<<
+ *     self.c_op.data.send_message.send_message = self._c_message_byte_buffer
+ * 
+ */
+  grpc_slice_unref(__pyx_v_message_slice);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":69
+ *         &message_slice, 1)
+ *     grpc_slice_unref(message_slice)
+ *     self.c_op.data.send_message.send_message = self._c_message_byte_buffer             # <<<<<<<<<<<<<<
+ * 
+ *   cdef void un_c(self) except *:
+ */
+  __pyx_t_5 = __pyx_v_self->_c_message_byte_buffer;
+  __pyx_v_self->__pyx_base.c_op.data.send_message.send_message = __pyx_t_5;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":61
+ *     return GRPC_OP_SEND_MESSAGE
+ * 
+ *   cdef void c(self) except *:             # <<<<<<<<<<<<<<
+ *     self.c_op.type = GRPC_OP_SEND_MESSAGE
+ *     self.c_op.flags = self._flags
+ */
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("_cython.cygrpc.SendMessageOperation.c", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":71
+ *     self.c_op.data.send_message.send_message = self._c_message_byte_buffer
+ * 
+ *   cdef void un_c(self) except *:             # <<<<<<<<<<<<<<
+ *     grpc_byte_buffer_destroy(self._c_message_byte_buffer)
+ * 
+ */
+
+static void __pyx_f_7_cython_6cygrpc_20SendMessageOperation_un_c(struct __pyx_obj_7_cython_6cygrpc_SendMessageOperation *__pyx_v_self) {
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":72
+ * 
+ *   cdef void un_c(self) except *:
+ *     grpc_byte_buffer_destroy(self._c_message_byte_buffer)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  grpc_byte_buffer_destroy(__pyx_v_self->_c_message_byte_buffer);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":71
+ *     self.c_op.data.send_message.send_message = self._c_message_byte_buffer
+ * 
+ *   cdef void un_c(self) except *:             # <<<<<<<<<<<<<<
+ *     grpc_byte_buffer_destroy(self._c_message_byte_buffer)
+ * 
+ */
+
+  /* function exit code */
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pxd.pxi":38
+ * cdef class SendMessageOperation(Operation):
+ * 
+ *   cdef readonly bytes _message             # <<<<<<<<<<<<<<
+ *   cdef readonly int _flags
+ *   cdef grpc_byte_buffer *_c_message_byte_buffer
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_20SendMessageOperation_8_message_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_20SendMessageOperation_8_message_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_7_cython_6cygrpc_20SendMessageOperation_8_message___get__(((struct __pyx_obj_7_cython_6cygrpc_SendMessageOperation *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_20SendMessageOperation_8_message___get__(struct __pyx_obj_7_cython_6cygrpc_SendMessageOperation *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->_message);
+  __pyx_r = __pyx_v_self->_message;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pxd.pxi":39
+ * 
+ *   cdef readonly bytes _message
+ *   cdef readonly int _flags             # <<<<<<<<<<<<<<
+ *   cdef grpc_byte_buffer *_c_message_byte_buffer
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_20SendMessageOperation_6_flags_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_20SendMessageOperation_6_flags_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_7_cython_6cygrpc_20SendMessageOperation_6_flags___get__(((struct __pyx_obj_7_cython_6cygrpc_SendMessageOperation *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_20SendMessageOperation_6_flags___get__(struct __pyx_obj_7_cython_6cygrpc_SendMessageOperation *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 39, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.SendMessageOperation._flags.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "(tree fragment)":1
+ * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
+ *     raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
+ * def __setstate_cython__(self, __pyx_state):
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_20SendMessageOperation_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_20SendMessageOperation_5__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_20SendMessageOperation_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_20SendMessageOperation_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_7_cython_6cygrpc_20SendMessageOperation_4__reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc_SendMessageOperation *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_20SendMessageOperation_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_SendMessageOperation *__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(10, 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("_cython.cygrpc.SendMessageOperation.__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_7_cython_6cygrpc_20SendMessageOperation_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_20SendMessageOperation_7__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_20SendMessageOperation_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_20SendMessageOperation_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(10, 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(10, 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(10, 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("_cython.cygrpc.SendMessageOperation.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_20SendMessageOperation_6__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc_SendMessageOperation *)__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_7_cython_6cygrpc_20SendMessageOperation_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_SendMessageOperation *__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(10, 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("_cython.cygrpc.SendMessageOperation.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":77
+ * cdef class SendCloseFromClientOperation(Operation):
+ * 
+ *   def __cinit__(self, int flags):             # <<<<<<<<<<<<<<
+ *     self._flags = flags
+ * 
+ */
+
+/* Python wrapper */
+static int __pyx_pw_7_cython_6cygrpc_28SendCloseFromClientOperation_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_7_cython_6cygrpc_28SendCloseFromClientOperation_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  int __pyx_v_flags;
+  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject* values[1] = {0};
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  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);
+  {
+    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_flags,0};
+    if (__pyx_kwds) {
+      Py_ssize_t kw_args;
+      switch (__pyx_nargs) {
+        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
+      switch (__pyx_nargs) {
+        case  0:
+        if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_flags)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 77, __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, "__cinit__") < 0)) __PYX_ERR(19, 77, __pyx_L3_error)
+      }
+    } else if (unlikely(__pyx_nargs != 1)) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+    }
+    __pyx_v_flags = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_flags == (int)-1) && PyErr_Occurred())) __PYX_ERR(19, 77, __pyx_L3_error)
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, __pyx_nargs); __PYX_ERR(19, 77, __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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_AddTraceback("_cython.cygrpc.SendCloseFromClientOperation.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_28SendCloseFromClientOperation___cinit__(((struct __pyx_obj_7_cython_6cygrpc_SendCloseFromClientOperation *)__pyx_v_self), __pyx_v_flags);
+
+  /* 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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_7_cython_6cygrpc_28SendCloseFromClientOperation___cinit__(struct __pyx_obj_7_cython_6cygrpc_SendCloseFromClientOperation *__pyx_v_self, int __pyx_v_flags) {
+  int __pyx_r;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":78
+ * 
+ *   def __cinit__(self, int flags):
+ *     self._flags = flags             # <<<<<<<<<<<<<<
+ * 
+ *   def type(self):
+ */
+  __pyx_v_self->_flags = __pyx_v_flags;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":77
+ * cdef class SendCloseFromClientOperation(Operation):
+ * 
+ *   def __cinit__(self, int flags):             # <<<<<<<<<<<<<<
+ *     self._flags = flags
+ * 
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":80
+ *     self._flags = flags
+ * 
+ *   def type(self):             # <<<<<<<<<<<<<<
+ *     return GRPC_OP_SEND_CLOSE_FROM_CLIENT
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_28SendCloseFromClientOperation_3type(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_28SendCloseFromClientOperation_3type = {"type", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_28SendCloseFromClientOperation_3type, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_28SendCloseFromClientOperation_3type(PyObject *__pyx_v_self, 
+#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("type (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("type", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "type", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_28SendCloseFromClientOperation_2type(((struct __pyx_obj_7_cython_6cygrpc_SendCloseFromClientOperation *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_28SendCloseFromClientOperation_2type(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_SendCloseFromClientOperation *__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("type", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":81
+ * 
+ *   def type(self):
+ *     return GRPC_OP_SEND_CLOSE_FROM_CLIENT             # <<<<<<<<<<<<<<
+ * 
+ *   cdef void c(self) except *:
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_grpc_op_type(GRPC_OP_SEND_CLOSE_FROM_CLIENT); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 81, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":80
+ *     self._flags = flags
+ * 
+ *   def type(self):             # <<<<<<<<<<<<<<
+ *     return GRPC_OP_SEND_CLOSE_FROM_CLIENT
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.SendCloseFromClientOperation.type", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":83
+ *     return GRPC_OP_SEND_CLOSE_FROM_CLIENT
+ * 
+ *   cdef void c(self) except *:             # <<<<<<<<<<<<<<
+ *     self.c_op.type = GRPC_OP_SEND_CLOSE_FROM_CLIENT
+ *     self.c_op.flags = self._flags
+ */
+
+static void __pyx_f_7_cython_6cygrpc_28SendCloseFromClientOperation_c(struct __pyx_obj_7_cython_6cygrpc_SendCloseFromClientOperation *__pyx_v_self) {
+  int __pyx_t_1;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":84
+ * 
+ *   cdef void c(self) except *:
+ *     self.c_op.type = GRPC_OP_SEND_CLOSE_FROM_CLIENT             # <<<<<<<<<<<<<<
+ *     self.c_op.flags = self._flags
+ * 
+ */
+  __pyx_v_self->__pyx_base.c_op.op = GRPC_OP_SEND_CLOSE_FROM_CLIENT;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":85
+ *   cdef void c(self) except *:
+ *     self.c_op.type = GRPC_OP_SEND_CLOSE_FROM_CLIENT
+ *     self.c_op.flags = self._flags             # <<<<<<<<<<<<<<
+ * 
+ *   cdef void un_c(self) except *:
+ */
+  __pyx_t_1 = __pyx_v_self->_flags;
+  __pyx_v_self->__pyx_base.c_op.flags = __pyx_t_1;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":83
+ *     return GRPC_OP_SEND_CLOSE_FROM_CLIENT
+ * 
+ *   cdef void c(self) except *:             # <<<<<<<<<<<<<<
+ *     self.c_op.type = GRPC_OP_SEND_CLOSE_FROM_CLIENT
+ *     self.c_op.flags = self._flags
+ */
+
+  /* function exit code */
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":87
+ *     self.c_op.flags = self._flags
+ * 
+ *   cdef void un_c(self) except *:             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+
+static void __pyx_f_7_cython_6cygrpc_28SendCloseFromClientOperation_un_c(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_SendCloseFromClientOperation *__pyx_v_self) {
+
+  /* function exit code */
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pxd.pxi":48
+ * cdef class SendCloseFromClientOperation(Operation):
+ * 
+ *   cdef readonly int _flags             # <<<<<<<<<<<<<<
+ * 
+ *   cdef void c(self) except *
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_28SendCloseFromClientOperation_6_flags_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_28SendCloseFromClientOperation_6_flags_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_7_cython_6cygrpc_28SendCloseFromClientOperation_6_flags___get__(((struct __pyx_obj_7_cython_6cygrpc_SendCloseFromClientOperation *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_28SendCloseFromClientOperation_6_flags___get__(struct __pyx_obj_7_cython_6cygrpc_SendCloseFromClientOperation *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 48, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.SendCloseFromClientOperation._flags.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "(tree fragment)":1
+ * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
+ *     raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
+ * def __setstate_cython__(self, __pyx_state):
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_28SendCloseFromClientOperation_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_28SendCloseFromClientOperation_5__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_28SendCloseFromClientOperation_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_28SendCloseFromClientOperation_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_7_cython_6cygrpc_28SendCloseFromClientOperation_4__reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc_SendCloseFromClientOperation *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_28SendCloseFromClientOperation_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_SendCloseFromClientOperation *__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(10, 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("_cython.cygrpc.SendCloseFromClientOperation.__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_7_cython_6cygrpc_28SendCloseFromClientOperation_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_28SendCloseFromClientOperation_7__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_28SendCloseFromClientOperation_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_28SendCloseFromClientOperation_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(10, 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(10, 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(10, 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("_cython.cygrpc.SendCloseFromClientOperation.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_28SendCloseFromClientOperation_6__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc_SendCloseFromClientOperation *)__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_7_cython_6cygrpc_28SendCloseFromClientOperation_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_SendCloseFromClientOperation *__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(10, 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("_cython.cygrpc.SendCloseFromClientOperation.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":93
+ * cdef class SendStatusFromServerOperation(Operation):
+ * 
+ *   def __cinit__(self, trailing_metadata, code, object details, int flags):             # <<<<<<<<<<<<<<
+ *     self._trailing_metadata = trailing_metadata
+ *     self._code = code
+ */
+
+/* Python wrapper */
+static int __pyx_pw_7_cython_6cygrpc_29SendStatusFromServerOperation_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_7_cython_6cygrpc_29SendStatusFromServerOperation_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_trailing_metadata = 0;
+  PyObject *__pyx_v_code = 0;
+  PyObject *__pyx_v_details = 0;
+  int __pyx_v_flags;
+  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+  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;
+  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);
+  {
+    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_trailing_metadata,&__pyx_n_s_code,&__pyx_n_s_details,&__pyx_n_s_flags,0};
+    if (__pyx_kwds) {
+      Py_ssize_t kw_args;
+      switch (__pyx_nargs) {
+        case  4: values[3] = __Pyx_Arg_VARARGS(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
+        case  3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
+      switch (__pyx_nargs) {
+        case  0:
+        if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_trailing_metadata)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 93, __pyx_L3_error)
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_code)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 93, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 4, 4, 1); __PYX_ERR(19, 93, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_details)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[2]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 93, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 4, 4, 2); __PYX_ERR(19, 93, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  3:
+        if (likely((values[3] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_flags)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[3]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 93, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 4, 4, 3); __PYX_ERR(19, 93, __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, "__cinit__") < 0)) __PYX_ERR(19, 93, __pyx_L3_error)
+      }
+    } else if (unlikely(__pyx_nargs != 4)) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+      values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
+      values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
+      values[3] = __Pyx_Arg_VARARGS(__pyx_args, 3);
+    }
+    __pyx_v_trailing_metadata = values[0];
+    __pyx_v_code = values[1];
+    __pyx_v_details = values[2];
+    __pyx_v_flags = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_flags == (int)-1) && PyErr_Occurred())) __PYX_ERR(19, 93, __pyx_L3_error)
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 4, 4, __pyx_nargs); __PYX_ERR(19, 93, __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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_AddTraceback("_cython.cygrpc.SendStatusFromServerOperation.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_29SendStatusFromServerOperation___cinit__(((struct __pyx_obj_7_cython_6cygrpc_SendStatusFromServerOperation *)__pyx_v_self), __pyx_v_trailing_metadata, __pyx_v_code, __pyx_v_details, __pyx_v_flags);
+
+  /* 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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_7_cython_6cygrpc_29SendStatusFromServerOperation___cinit__(struct __pyx_obj_7_cython_6cygrpc_SendStatusFromServerOperation *__pyx_v_self, PyObject *__pyx_v_trailing_metadata, PyObject *__pyx_v_code, PyObject *__pyx_v_details, int __pyx_v_flags) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__cinit__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":94
+ * 
+ *   def __cinit__(self, trailing_metadata, code, object details, int flags):
+ *     self._trailing_metadata = trailing_metadata             # <<<<<<<<<<<<<<
+ *     self._code = code
+ *     self._details = details
+ */
+  __Pyx_INCREF(__pyx_v_trailing_metadata);
+  __Pyx_GIVEREF(__pyx_v_trailing_metadata);
+  __Pyx_GOTREF(__pyx_v_self->_trailing_metadata);
+  __Pyx_DECREF(__pyx_v_self->_trailing_metadata);
+  __pyx_v_self->_trailing_metadata = __pyx_v_trailing_metadata;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":95
+ *   def __cinit__(self, trailing_metadata, code, object details, int flags):
+ *     self._trailing_metadata = trailing_metadata
+ *     self._code = code             # <<<<<<<<<<<<<<
+ *     self._details = details
+ *     self._flags = flags
+ */
+  __Pyx_INCREF(__pyx_v_code);
+  __Pyx_GIVEREF(__pyx_v_code);
+  __Pyx_GOTREF(__pyx_v_self->_code);
+  __Pyx_DECREF(__pyx_v_self->_code);
+  __pyx_v_self->_code = __pyx_v_code;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":96
+ *     self._trailing_metadata = trailing_metadata
+ *     self._code = code
+ *     self._details = details             # <<<<<<<<<<<<<<
+ *     self._flags = flags
+ * 
+ */
+  __Pyx_INCREF(__pyx_v_details);
+  __Pyx_GIVEREF(__pyx_v_details);
+  __Pyx_GOTREF(__pyx_v_self->_details);
+  __Pyx_DECREF(__pyx_v_self->_details);
+  __pyx_v_self->_details = __pyx_v_details;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":97
+ *     self._code = code
+ *     self._details = details
+ *     self._flags = flags             # <<<<<<<<<<<<<<
+ * 
+ *   def type(self):
+ */
+  __pyx_v_self->_flags = __pyx_v_flags;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":93
+ * cdef class SendStatusFromServerOperation(Operation):
+ * 
+ *   def __cinit__(self, trailing_metadata, code, object details, int flags):             # <<<<<<<<<<<<<<
+ *     self._trailing_metadata = trailing_metadata
+ *     self._code = code
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":99
+ *     self._flags = flags
+ * 
+ *   def type(self):             # <<<<<<<<<<<<<<
+ *     return GRPC_OP_SEND_STATUS_FROM_SERVER
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_29SendStatusFromServerOperation_3type(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_29SendStatusFromServerOperation_3type = {"type", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_29SendStatusFromServerOperation_3type, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_29SendStatusFromServerOperation_3type(PyObject *__pyx_v_self, 
+#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("type (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("type", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "type", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_29SendStatusFromServerOperation_2type(((struct __pyx_obj_7_cython_6cygrpc_SendStatusFromServerOperation *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_29SendStatusFromServerOperation_2type(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_SendStatusFromServerOperation *__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("type", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":100
+ * 
+ *   def type(self):
+ *     return GRPC_OP_SEND_STATUS_FROM_SERVER             # <<<<<<<<<<<<<<
+ * 
+ *   cdef void c(self) except *:
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_grpc_op_type(GRPC_OP_SEND_STATUS_FROM_SERVER); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 100, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":99
+ *     self._flags = flags
+ * 
+ *   def type(self):             # <<<<<<<<<<<<<<
+ *     return GRPC_OP_SEND_STATUS_FROM_SERVER
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.SendStatusFromServerOperation.type", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":102
+ *     return GRPC_OP_SEND_STATUS_FROM_SERVER
+ * 
+ *   cdef void c(self) except *:             # <<<<<<<<<<<<<<
+ *     self.c_op.type = GRPC_OP_SEND_STATUS_FROM_SERVER
+ *     self.c_op.flags = self._flags
+ */
+
+static void __pyx_f_7_cython_6cygrpc_29SendStatusFromServerOperation_c(struct __pyx_obj_7_cython_6cygrpc_SendStatusFromServerOperation *__pyx_v_self) {
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  grpc_metadata *__pyx_t_3;
+  size_t __pyx_t_4;
+  grpc_status_code __pyx_t_5;
+  PyObject *__pyx_t_6 = NULL;
+  grpc_slice __pyx_t_7;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("c", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":103
+ * 
+ *   cdef void c(self) except *:
+ *     self.c_op.type = GRPC_OP_SEND_STATUS_FROM_SERVER             # <<<<<<<<<<<<<<
+ *     self.c_op.flags = self._flags
+ *     _store_c_metadata(
+ */
+  __pyx_v_self->__pyx_base.c_op.op = GRPC_OP_SEND_STATUS_FROM_SERVER;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":104
+ *   cdef void c(self) except *:
+ *     self.c_op.type = GRPC_OP_SEND_STATUS_FROM_SERVER
+ *     self.c_op.flags = self._flags             # <<<<<<<<<<<<<<
+ *     _store_c_metadata(
+ *         self._trailing_metadata, &self._c_trailing_metadata,
+ */
+  __pyx_t_1 = __pyx_v_self->_flags;
+  __pyx_v_self->__pyx_base.c_op.flags = __pyx_t_1;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":106
+ *     self.c_op.flags = self._flags
+ *     _store_c_metadata(
+ *         self._trailing_metadata, &self._c_trailing_metadata,             # <<<<<<<<<<<<<<
+ *         &self._c_trailing_metadata_count)
+ *     self.c_op.data.send_status_from_server.trailing_metadata = (
+ */
+  __pyx_t_2 = __pyx_v_self->_trailing_metadata;
+  __Pyx_INCREF(__pyx_t_2);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":105
+ *     self.c_op.type = GRPC_OP_SEND_STATUS_FROM_SERVER
+ *     self.c_op.flags = self._flags
+ *     _store_c_metadata(             # <<<<<<<<<<<<<<
+ *         self._trailing_metadata, &self._c_trailing_metadata,
+ *         &self._c_trailing_metadata_count)
+ */
+  __pyx_f_7_cython_6cygrpc__store_c_metadata(__pyx_t_2, (&__pyx_v_self->_c_trailing_metadata), (&__pyx_v_self->_c_trailing_metadata_count)); if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 105, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":109
+ *         &self._c_trailing_metadata_count)
+ *     self.c_op.data.send_status_from_server.trailing_metadata = (
+ *         self._c_trailing_metadata)             # <<<<<<<<<<<<<<
+ *     self.c_op.data.send_status_from_server.trailing_metadata_count = (
+ *         self._c_trailing_metadata_count)
+ */
+  __pyx_t_3 = __pyx_v_self->_c_trailing_metadata;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":108
+ *         self._trailing_metadata, &self._c_trailing_metadata,
+ *         &self._c_trailing_metadata_count)
+ *     self.c_op.data.send_status_from_server.trailing_metadata = (             # <<<<<<<<<<<<<<
+ *         self._c_trailing_metadata)
+ *     self.c_op.data.send_status_from_server.trailing_metadata_count = (
+ */
+  __pyx_v_self->__pyx_base.c_op.data.send_status_from_server.trailing_metadata = __pyx_t_3;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":111
+ *         self._c_trailing_metadata)
+ *     self.c_op.data.send_status_from_server.trailing_metadata_count = (
+ *         self._c_trailing_metadata_count)             # <<<<<<<<<<<<<<
+ *     self.c_op.data.send_status_from_server.status = self._code
+ *     self._c_details = _slice_from_bytes(_encode(self._details))
+ */
+  __pyx_t_4 = __pyx_v_self->_c_trailing_metadata_count;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":110
+ *     self.c_op.data.send_status_from_server.trailing_metadata = (
+ *         self._c_trailing_metadata)
+ *     self.c_op.data.send_status_from_server.trailing_metadata_count = (             # <<<<<<<<<<<<<<
+ *         self._c_trailing_metadata_count)
+ *     self.c_op.data.send_status_from_server.status = self._code
+ */
+  __pyx_v_self->__pyx_base.c_op.data.send_status_from_server.trailing_metadata_count = __pyx_t_4;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":112
+ *     self.c_op.data.send_status_from_server.trailing_metadata_count = (
+ *         self._c_trailing_metadata_count)
+ *     self.c_op.data.send_status_from_server.status = self._code             # <<<<<<<<<<<<<<
+ *     self._c_details = _slice_from_bytes(_encode(self._details))
+ *     self.c_op.data.send_status_from_server.status_details = &self._c_details
+ */
+  __pyx_t_5 = ((grpc_status_code)__Pyx_PyInt_As_grpc_status_code(__pyx_v_self->_code)); if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 112, __pyx_L1_error)
+  __pyx_v_self->__pyx_base.c_op.data.send_status_from_server.status = __pyx_t_5;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":113
+ *         self._c_trailing_metadata_count)
+ *     self.c_op.data.send_status_from_server.status = self._code
+ *     self._c_details = _slice_from_bytes(_encode(self._details))             # <<<<<<<<<<<<<<
+ *     self.c_op.data.send_status_from_server.status_details = &self._c_details
+ * 
+ */
+  __pyx_t_2 = __pyx_v_self->_details;
+  __Pyx_INCREF(__pyx_t_2);
+  __pyx_t_6 = __pyx_f_7_cython_6cygrpc__encode(__pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 113, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_7 = __pyx_f_7_cython_6cygrpc__slice_from_bytes(((PyObject*)__pyx_t_6)); if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 113, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  __pyx_v_self->_c_details = __pyx_t_7;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":114
+ *     self.c_op.data.send_status_from_server.status = self._code
+ *     self._c_details = _slice_from_bytes(_encode(self._details))
+ *     self.c_op.data.send_status_from_server.status_details = &self._c_details             # <<<<<<<<<<<<<<
+ * 
+ *   cdef void un_c(self) except *:
+ */
+  __pyx_v_self->__pyx_base.c_op.data.send_status_from_server.status_details = (&__pyx_v_self->_c_details);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":102
+ *     return GRPC_OP_SEND_STATUS_FROM_SERVER
+ * 
+ *   cdef void c(self) except *:             # <<<<<<<<<<<<<<
+ *     self.c_op.type = GRPC_OP_SEND_STATUS_FROM_SERVER
+ *     self.c_op.flags = self._flags
+ */
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("_cython.cygrpc.SendStatusFromServerOperation.c", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":116
+ *     self.c_op.data.send_status_from_server.status_details = &self._c_details
+ * 
+ *   cdef void un_c(self) except *:             # <<<<<<<<<<<<<<
+ *     grpc_slice_unref(self._c_details)
+ *     _release_c_metadata(
+ */
+
+static void __pyx_f_7_cython_6cygrpc_29SendStatusFromServerOperation_un_c(struct __pyx_obj_7_cython_6cygrpc_SendStatusFromServerOperation *__pyx_v_self) {
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":117
+ * 
+ *   cdef void un_c(self) except *:
+ *     grpc_slice_unref(self._c_details)             # <<<<<<<<<<<<<<
+ *     _release_c_metadata(
+ *         self._c_trailing_metadata, self._c_trailing_metadata_count)
+ */
+  grpc_slice_unref(__pyx_v_self->_c_details);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":118
+ *   cdef void un_c(self) except *:
+ *     grpc_slice_unref(self._c_details)
+ *     _release_c_metadata(             # <<<<<<<<<<<<<<
+ *         self._c_trailing_metadata, self._c_trailing_metadata_count)
+ * 
+ */
+  __pyx_f_7_cython_6cygrpc__release_c_metadata(__pyx_v_self->_c_trailing_metadata, __pyx_v_self->_c_trailing_metadata_count); if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 118, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":116
+ *     self.c_op.data.send_status_from_server.status_details = &self._c_details
+ * 
+ *   cdef void un_c(self) except *:             # <<<<<<<<<<<<<<
+ *     grpc_slice_unref(self._c_details)
+ *     _release_c_metadata(
+ */
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc.SendStatusFromServerOperation.un_c", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pxd.pxi":56
+ * cdef class SendStatusFromServerOperation(Operation):
+ * 
+ *   cdef readonly object _trailing_metadata             # <<<<<<<<<<<<<<
+ *   cdef readonly object _code
+ *   cdef readonly object _details
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_29SendStatusFromServerOperation_18_trailing_metadata_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_29SendStatusFromServerOperation_18_trailing_metadata_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_7_cython_6cygrpc_29SendStatusFromServerOperation_18_trailing_metadata___get__(((struct __pyx_obj_7_cython_6cygrpc_SendStatusFromServerOperation *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_29SendStatusFromServerOperation_18_trailing_metadata___get__(struct __pyx_obj_7_cython_6cygrpc_SendStatusFromServerOperation *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->_trailing_metadata);
+  __pyx_r = __pyx_v_self->_trailing_metadata;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pxd.pxi":57
+ * 
+ *   cdef readonly object _trailing_metadata
+ *   cdef readonly object _code             # <<<<<<<<<<<<<<
+ *   cdef readonly object _details
+ *   cdef readonly int _flags
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_29SendStatusFromServerOperation_5_code_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_29SendStatusFromServerOperation_5_code_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_7_cython_6cygrpc_29SendStatusFromServerOperation_5_code___get__(((struct __pyx_obj_7_cython_6cygrpc_SendStatusFromServerOperation *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_29SendStatusFromServerOperation_5_code___get__(struct __pyx_obj_7_cython_6cygrpc_SendStatusFromServerOperation *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->_code);
+  __pyx_r = __pyx_v_self->_code;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pxd.pxi":58
+ *   cdef readonly object _trailing_metadata
+ *   cdef readonly object _code
+ *   cdef readonly object _details             # <<<<<<<<<<<<<<
+ *   cdef readonly int _flags
+ *   cdef grpc_metadata *_c_trailing_metadata
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_29SendStatusFromServerOperation_8_details_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_29SendStatusFromServerOperation_8_details_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_7_cython_6cygrpc_29SendStatusFromServerOperation_8_details___get__(((struct __pyx_obj_7_cython_6cygrpc_SendStatusFromServerOperation *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_29SendStatusFromServerOperation_8_details___get__(struct __pyx_obj_7_cython_6cygrpc_SendStatusFromServerOperation *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->_details);
+  __pyx_r = __pyx_v_self->_details;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pxd.pxi":59
+ *   cdef readonly object _code
+ *   cdef readonly object _details
+ *   cdef readonly int _flags             # <<<<<<<<<<<<<<
+ *   cdef grpc_metadata *_c_trailing_metadata
+ *   cdef size_t _c_trailing_metadata_count
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_29SendStatusFromServerOperation_6_flags_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_29SendStatusFromServerOperation_6_flags_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_7_cython_6cygrpc_29SendStatusFromServerOperation_6_flags___get__(((struct __pyx_obj_7_cython_6cygrpc_SendStatusFromServerOperation *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_29SendStatusFromServerOperation_6_flags___get__(struct __pyx_obj_7_cython_6cygrpc_SendStatusFromServerOperation *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 59, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.SendStatusFromServerOperation._flags.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "(tree fragment)":1
+ * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
+ *     raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
+ * def __setstate_cython__(self, __pyx_state):
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_29SendStatusFromServerOperation_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_29SendStatusFromServerOperation_5__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_29SendStatusFromServerOperation_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_29SendStatusFromServerOperation_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_7_cython_6cygrpc_29SendStatusFromServerOperation_4__reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc_SendStatusFromServerOperation *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_29SendStatusFromServerOperation_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_SendStatusFromServerOperation *__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(10, 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("_cython.cygrpc.SendStatusFromServerOperation.__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_7_cython_6cygrpc_29SendStatusFromServerOperation_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_29SendStatusFromServerOperation_7__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_29SendStatusFromServerOperation_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_29SendStatusFromServerOperation_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(10, 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(10, 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(10, 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("_cython.cygrpc.SendStatusFromServerOperation.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_29SendStatusFromServerOperation_6__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc_SendStatusFromServerOperation *)__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_7_cython_6cygrpc_29SendStatusFromServerOperation_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_SendStatusFromServerOperation *__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(10, 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("_cython.cygrpc.SendStatusFromServerOperation.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":124
+ * cdef class ReceiveInitialMetadataOperation(Operation):
+ * 
+ *   def __cinit__(self, flags):             # <<<<<<<<<<<<<<
+ *     self._flags = flags
+ * 
+ */
+
+/* Python wrapper */
+static int __pyx_pw_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_flags = 0;
+  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject* values[1] = {0};
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  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);
+  {
+    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_flags,0};
+    if (__pyx_kwds) {
+      Py_ssize_t kw_args;
+      switch (__pyx_nargs) {
+        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
+      switch (__pyx_nargs) {
+        case  0:
+        if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_flags)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 124, __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, "__cinit__") < 0)) __PYX_ERR(19, 124, __pyx_L3_error)
+      }
+    } else if (unlikely(__pyx_nargs != 1)) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+    }
+    __pyx_v_flags = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, __pyx_nargs); __PYX_ERR(19, 124, __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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_AddTraceback("_cython.cygrpc.ReceiveInitialMetadataOperation.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_31ReceiveInitialMetadataOperation___cinit__(((struct __pyx_obj_7_cython_6cygrpc_ReceiveInitialMetadataOperation *)__pyx_v_self), __pyx_v_flags);
+
+  /* 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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_7_cython_6cygrpc_31ReceiveInitialMetadataOperation___cinit__(struct __pyx_obj_7_cython_6cygrpc_ReceiveInitialMetadataOperation *__pyx_v_self, PyObject *__pyx_v_flags) {
+  int __pyx_r;
+  int __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":125
+ * 
+ *   def __cinit__(self, flags):
+ *     self._flags = flags             # <<<<<<<<<<<<<<
+ * 
+ *   def type(self):
+ */
+  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_flags); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(19, 125, __pyx_L1_error)
+  __pyx_v_self->_flags = __pyx_t_1;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":124
+ * cdef class ReceiveInitialMetadataOperation(Operation):
+ * 
+ *   def __cinit__(self, flags):             # <<<<<<<<<<<<<<
+ *     self._flags = flags
+ * 
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc.ReceiveInitialMetadataOperation.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":127
+ *     self._flags = flags
+ * 
+ *   def type(self):             # <<<<<<<<<<<<<<
+ *     return GRPC_OP_RECV_INITIAL_METADATA
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_3type(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_3type = {"type", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_3type, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_3type(PyObject *__pyx_v_self, 
+#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("type (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("type", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "type", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_2type(((struct __pyx_obj_7_cython_6cygrpc_ReceiveInitialMetadataOperation *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_2type(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_ReceiveInitialMetadataOperation *__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("type", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":128
+ * 
+ *   def type(self):
+ *     return GRPC_OP_RECV_INITIAL_METADATA             # <<<<<<<<<<<<<<
+ * 
+ *   cdef void c(self) except *:
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_grpc_op_type(GRPC_OP_RECV_INITIAL_METADATA); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 128, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":127
+ *     self._flags = flags
+ * 
+ *   def type(self):             # <<<<<<<<<<<<<<
+ *     return GRPC_OP_RECV_INITIAL_METADATA
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.ReceiveInitialMetadataOperation.type", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":130
+ *     return GRPC_OP_RECV_INITIAL_METADATA
+ * 
+ *   cdef void c(self) except *:             # <<<<<<<<<<<<<<
+ *     self.c_op.type = GRPC_OP_RECV_INITIAL_METADATA
+ *     self.c_op.flags = self._flags
+ */
+
+static void __pyx_f_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_c(struct __pyx_obj_7_cython_6cygrpc_ReceiveInitialMetadataOperation *__pyx_v_self) {
+  int __pyx_t_1;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":131
+ * 
+ *   cdef void c(self) except *:
+ *     self.c_op.type = GRPC_OP_RECV_INITIAL_METADATA             # <<<<<<<<<<<<<<
+ *     self.c_op.flags = self._flags
+ *     grpc_metadata_array_init(&self._c_initial_metadata)
+ */
+  __pyx_v_self->__pyx_base.c_op.op = GRPC_OP_RECV_INITIAL_METADATA;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":132
+ *   cdef void c(self) except *:
+ *     self.c_op.type = GRPC_OP_RECV_INITIAL_METADATA
+ *     self.c_op.flags = self._flags             # <<<<<<<<<<<<<<
+ *     grpc_metadata_array_init(&self._c_initial_metadata)
+ *     self.c_op.data.receive_initial_metadata.receive_initial_metadata = (
+ */
+  __pyx_t_1 = __pyx_v_self->_flags;
+  __pyx_v_self->__pyx_base.c_op.flags = __pyx_t_1;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":133
+ *     self.c_op.type = GRPC_OP_RECV_INITIAL_METADATA
+ *     self.c_op.flags = self._flags
+ *     grpc_metadata_array_init(&self._c_initial_metadata)             # <<<<<<<<<<<<<<
+ *     self.c_op.data.receive_initial_metadata.receive_initial_metadata = (
+ *         &self._c_initial_metadata)
+ */
+  grpc_metadata_array_init((&__pyx_v_self->_c_initial_metadata));
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":134
+ *     self.c_op.flags = self._flags
+ *     grpc_metadata_array_init(&self._c_initial_metadata)
+ *     self.c_op.data.receive_initial_metadata.receive_initial_metadata = (             # <<<<<<<<<<<<<<
+ *         &self._c_initial_metadata)
+ * 
+ */
+  __pyx_v_self->__pyx_base.c_op.data.recv_initial_metadata.recv_initial_metadata = (&__pyx_v_self->_c_initial_metadata);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":130
+ *     return GRPC_OP_RECV_INITIAL_METADATA
+ * 
+ *   cdef void c(self) except *:             # <<<<<<<<<<<<<<
+ *     self.c_op.type = GRPC_OP_RECV_INITIAL_METADATA
+ *     self.c_op.flags = self._flags
+ */
+
+  /* function exit code */
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":137
+ *         &self._c_initial_metadata)
+ * 
+ *   cdef void un_c(self) except *:             # <<<<<<<<<<<<<<
+ *     self._initial_metadata = _metadata(&self._c_initial_metadata)
+ *     grpc_metadata_array_destroy(&self._c_initial_metadata)
+ */
+
+static void __pyx_f_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_un_c(struct __pyx_obj_7_cython_6cygrpc_ReceiveInitialMetadataOperation *__pyx_v_self) {
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("un_c", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":138
+ * 
+ *   cdef void un_c(self) except *:
+ *     self._initial_metadata = _metadata(&self._c_initial_metadata)             # <<<<<<<<<<<<<<
+ *     grpc_metadata_array_destroy(&self._c_initial_metadata)
+ * 
+ */
+  __pyx_t_1 = __pyx_f_7_cython_6cygrpc__metadata((&__pyx_v_self->_c_initial_metadata)); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 138, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->_initial_metadata);
+  __Pyx_DECREF(__pyx_v_self->_initial_metadata);
+  __pyx_v_self->_initial_metadata = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":139
+ *   cdef void un_c(self) except *:
+ *     self._initial_metadata = _metadata(&self._c_initial_metadata)
+ *     grpc_metadata_array_destroy(&self._c_initial_metadata)             # <<<<<<<<<<<<<<
+ * 
+ *   def initial_metadata(self):
+ */
+  grpc_metadata_array_destroy((&__pyx_v_self->_c_initial_metadata));
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":137
+ *         &self._c_initial_metadata)
+ * 
+ *   cdef void un_c(self) except *:             # <<<<<<<<<<<<<<
+ *     self._initial_metadata = _metadata(&self._c_initial_metadata)
+ *     grpc_metadata_array_destroy(&self._c_initial_metadata)
+ */
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.ReceiveInitialMetadataOperation.un_c", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":141
+ *     grpc_metadata_array_destroy(&self._c_initial_metadata)
+ * 
+ *   def initial_metadata(self):             # <<<<<<<<<<<<<<
+ *     return self._initial_metadata
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_5initial_metadata(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_5initial_metadata = {"initial_metadata", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_5initial_metadata, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_5initial_metadata(PyObject *__pyx_v_self, 
+#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("initial_metadata (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("initial_metadata", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "initial_metadata", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_4initial_metadata(((struct __pyx_obj_7_cython_6cygrpc_ReceiveInitialMetadataOperation *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_4initial_metadata(struct __pyx_obj_7_cython_6cygrpc_ReceiveInitialMetadataOperation *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("initial_metadata", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":142
+ * 
+ *   def initial_metadata(self):
+ *     return self._initial_metadata             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->_initial_metadata);
+  __pyx_r = __pyx_v_self->_initial_metadata;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":141
+ *     grpc_metadata_array_destroy(&self._c_initial_metadata)
+ * 
+ *   def initial_metadata(self):             # <<<<<<<<<<<<<<
+ *     return self._initial_metadata
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pxd.pxi":70
+ * cdef class ReceiveInitialMetadataOperation(Operation):
+ * 
+ *   cdef readonly int _flags             # <<<<<<<<<<<<<<
+ *   cdef tuple _initial_metadata
+ *   cdef grpc_metadata_array _c_initial_metadata
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_6_flags_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_6_flags_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_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_6_flags___get__(((struct __pyx_obj_7_cython_6cygrpc_ReceiveInitialMetadataOperation *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_6_flags___get__(struct __pyx_obj_7_cython_6cygrpc_ReceiveInitialMetadataOperation *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 70, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.ReceiveInitialMetadataOperation._flags.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "(tree fragment)":1
+ * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
+ *     raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
+ * def __setstate_cython__(self, __pyx_state):
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_7__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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_7__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_7__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_7__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_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_6__reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc_ReceiveInitialMetadataOperation *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_ReceiveInitialMetadataOperation *__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(10, 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("_cython.cygrpc.ReceiveInitialMetadataOperation.__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_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_9__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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_9__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_9__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_9__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(10, 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(10, 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(10, 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("_cython.cygrpc.ReceiveInitialMetadataOperation.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_8__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc_ReceiveInitialMetadataOperation *)__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_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_ReceiveInitialMetadataOperation *__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(10, 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("_cython.cygrpc.ReceiveInitialMetadataOperation.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":147
+ * cdef class ReceiveMessageOperation(Operation):
+ * 
+ *   def __cinit__(self, flags):             # <<<<<<<<<<<<<<
+ *     self._flags = flags
+ * 
+ */
+
+/* Python wrapper */
+static int __pyx_pw_7_cython_6cygrpc_23ReceiveMessageOperation_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_7_cython_6cygrpc_23ReceiveMessageOperation_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_flags = 0;
+  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject* values[1] = {0};
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  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);
+  {
+    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_flags,0};
+    if (__pyx_kwds) {
+      Py_ssize_t kw_args;
+      switch (__pyx_nargs) {
+        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
+      switch (__pyx_nargs) {
+        case  0:
+        if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_flags)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 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, "__cinit__") < 0)) __PYX_ERR(19, 147, __pyx_L3_error)
+      }
+    } else if (unlikely(__pyx_nargs != 1)) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+    }
+    __pyx_v_flags = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, __pyx_nargs); __PYX_ERR(19, 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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_AddTraceback("_cython.cygrpc.ReceiveMessageOperation.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_23ReceiveMessageOperation___cinit__(((struct __pyx_obj_7_cython_6cygrpc_ReceiveMessageOperation *)__pyx_v_self), __pyx_v_flags);
+
+  /* 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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_7_cython_6cygrpc_23ReceiveMessageOperation___cinit__(struct __pyx_obj_7_cython_6cygrpc_ReceiveMessageOperation *__pyx_v_self, PyObject *__pyx_v_flags) {
+  int __pyx_r;
+  int __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":148
+ * 
+ *   def __cinit__(self, flags):
+ *     self._flags = flags             # <<<<<<<<<<<<<<
+ * 
+ *   def type(self):
+ */
+  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_flags); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(19, 148, __pyx_L1_error)
+  __pyx_v_self->_flags = __pyx_t_1;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":147
+ * cdef class ReceiveMessageOperation(Operation):
+ * 
+ *   def __cinit__(self, flags):             # <<<<<<<<<<<<<<
+ *     self._flags = flags
+ * 
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc.ReceiveMessageOperation.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":150
+ *     self._flags = flags
+ * 
+ *   def type(self):             # <<<<<<<<<<<<<<
+ *     return GRPC_OP_RECV_MESSAGE
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_23ReceiveMessageOperation_3type(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_23ReceiveMessageOperation_3type = {"type", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_23ReceiveMessageOperation_3type, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_23ReceiveMessageOperation_3type(PyObject *__pyx_v_self, 
+#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("type (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("type", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "type", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_23ReceiveMessageOperation_2type(((struct __pyx_obj_7_cython_6cygrpc_ReceiveMessageOperation *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_23ReceiveMessageOperation_2type(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_ReceiveMessageOperation *__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("type", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":151
+ * 
+ *   def type(self):
+ *     return GRPC_OP_RECV_MESSAGE             # <<<<<<<<<<<<<<
+ * 
+ *   cdef void c(self) except *:
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_grpc_op_type(GRPC_OP_RECV_MESSAGE); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 151, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":150
+ *     self._flags = flags
+ * 
+ *   def type(self):             # <<<<<<<<<<<<<<
+ *     return GRPC_OP_RECV_MESSAGE
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.ReceiveMessageOperation.type", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":153
+ *     return GRPC_OP_RECV_MESSAGE
+ * 
+ *   cdef void c(self) except *:             # <<<<<<<<<<<<<<
+ *     self.c_op.type = GRPC_OP_RECV_MESSAGE
+ *     self.c_op.flags = self._flags
+ */
+
+static void __pyx_f_7_cython_6cygrpc_23ReceiveMessageOperation_c(struct __pyx_obj_7_cython_6cygrpc_ReceiveMessageOperation *__pyx_v_self) {
+  int __pyx_t_1;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":154
+ * 
+ *   cdef void c(self) except *:
+ *     self.c_op.type = GRPC_OP_RECV_MESSAGE             # <<<<<<<<<<<<<<
+ *     self.c_op.flags = self._flags
+ *     self.c_op.data.receive_message.receive_message = (
+ */
+  __pyx_v_self->__pyx_base.c_op.op = GRPC_OP_RECV_MESSAGE;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":155
+ *   cdef void c(self) except *:
+ *     self.c_op.type = GRPC_OP_RECV_MESSAGE
+ *     self.c_op.flags = self._flags             # <<<<<<<<<<<<<<
+ *     self.c_op.data.receive_message.receive_message = (
+ *         &self._c_message_byte_buffer)
+ */
+  __pyx_t_1 = __pyx_v_self->_flags;
+  __pyx_v_self->__pyx_base.c_op.flags = __pyx_t_1;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":156
+ *     self.c_op.type = GRPC_OP_RECV_MESSAGE
+ *     self.c_op.flags = self._flags
+ *     self.c_op.data.receive_message.receive_message = (             # <<<<<<<<<<<<<<
+ *         &self._c_message_byte_buffer)
+ * 
+ */
+  __pyx_v_self->__pyx_base.c_op.data.recv_message.recv_message = (&__pyx_v_self->_c_message_byte_buffer);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":153
+ *     return GRPC_OP_RECV_MESSAGE
+ * 
+ *   cdef void c(self) except *:             # <<<<<<<<<<<<<<
+ *     self.c_op.type = GRPC_OP_RECV_MESSAGE
+ *     self.c_op.flags = self._flags
+ */
+
+  /* function exit code */
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":159
+ *         &self._c_message_byte_buffer)
+ * 
+ *   cdef void un_c(self) except *:             # <<<<<<<<<<<<<<
+ *     cdef grpc_byte_buffer_reader message_reader
+ *     cdef bint message_reader_status
+ */
+
+static void __pyx_f_7_cython_6cygrpc_23ReceiveMessageOperation_un_c(struct __pyx_obj_7_cython_6cygrpc_ReceiveMessageOperation *__pyx_v_self) {
+  struct grpc_byte_buffer_reader __pyx_v_message_reader;
+  int __pyx_v_message_reader_status;
+  grpc_slice __pyx_v_message_slice;
+  size_t __pyx_v_message_slice_length;
+  void *__pyx_v_message_slice_pointer;
+  PyObject *__pyx_v_message = 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("un_c", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":165
+ *     cdef size_t message_slice_length
+ *     cdef void *message_slice_pointer
+ *     if self._c_message_byte_buffer != NULL:             # <<<<<<<<<<<<<<
+ *       message_reader_status = grpc_byte_buffer_reader_init(
+ *           &message_reader, self._c_message_byte_buffer)
+ */
+  __pyx_t_1 = (__pyx_v_self->_c_message_byte_buffer != NULL);
+  if (__pyx_t_1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":166
+ *     cdef void *message_slice_pointer
+ *     if self._c_message_byte_buffer != NULL:
+ *       message_reader_status = grpc_byte_buffer_reader_init(             # <<<<<<<<<<<<<<
+ *           &message_reader, self._c_message_byte_buffer)
+ *       if message_reader_status:
+ */
+    __pyx_v_message_reader_status = grpc_byte_buffer_reader_init((&__pyx_v_message_reader), __pyx_v_self->_c_message_byte_buffer);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":168
+ *       message_reader_status = grpc_byte_buffer_reader_init(
+ *           &message_reader, self._c_message_byte_buffer)
+ *       if message_reader_status:             # <<<<<<<<<<<<<<
+ *         message = bytearray()
+ *         while grpc_byte_buffer_reader_next(&message_reader, &message_slice):
+ */
+    if (__pyx_v_message_reader_status) {
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":169
+ *           &message_reader, self._c_message_byte_buffer)
+ *       if message_reader_status:
+ *         message = bytearray()             # <<<<<<<<<<<<<<
+ *         while grpc_byte_buffer_reader_next(&message_reader, &message_slice):
+ *           message_slice_pointer = grpc_slice_start_ptr(message_slice)
+ */
+      __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)(&PyByteArray_Type))); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 169, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __pyx_v_message = ((PyObject*)__pyx_t_2);
+      __pyx_t_2 = 0;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":170
+ *       if message_reader_status:
+ *         message = bytearray()
+ *         while grpc_byte_buffer_reader_next(&message_reader, &message_slice):             # <<<<<<<<<<<<<<
+ *           message_slice_pointer = grpc_slice_start_ptr(message_slice)
+ *           message_slice_length = grpc_slice_length(message_slice)
+ */
+      while (1) {
+        __pyx_t_1 = (grpc_byte_buffer_reader_next((&__pyx_v_message_reader), (&__pyx_v_message_slice)) != 0);
+        if (!__pyx_t_1) break;
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":171
+ *         message = bytearray()
+ *         while grpc_byte_buffer_reader_next(&message_reader, &message_slice):
+ *           message_slice_pointer = grpc_slice_start_ptr(message_slice)             # <<<<<<<<<<<<<<
+ *           message_slice_length = grpc_slice_length(message_slice)
+ *           message += (<char *>message_slice_pointer)[:message_slice_length]
+ */
+        __pyx_v_message_slice_pointer = GRPC_SLICE_START_PTR(__pyx_v_message_slice);
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":172
+ *         while grpc_byte_buffer_reader_next(&message_reader, &message_slice):
+ *           message_slice_pointer = grpc_slice_start_ptr(message_slice)
+ *           message_slice_length = grpc_slice_length(message_slice)             # <<<<<<<<<<<<<<
+ *           message += (<char *>message_slice_pointer)[:message_slice_length]
+ *           grpc_slice_unref(message_slice)
+ */
+        __pyx_v_message_slice_length = GRPC_SLICE_LENGTH(__pyx_v_message_slice);
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":173
+ *           message_slice_pointer = grpc_slice_start_ptr(message_slice)
+ *           message_slice_length = grpc_slice_length(message_slice)
+ *           message += (<char *>message_slice_pointer)[:message_slice_length]             # <<<<<<<<<<<<<<
+ *           grpc_slice_unref(message_slice)
+ *         grpc_byte_buffer_reader_destroy(&message_reader)
+ */
+        __pyx_t_2 = __Pyx_PyBytes_FromStringAndSize(((char *)__pyx_v_message_slice_pointer) + 0, __pyx_v_message_slice_length - 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 173, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_2);
+        __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_message, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 173, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_3);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        __Pyx_DECREF_SET(__pyx_v_message, ((PyObject*)__pyx_t_3));
+        __pyx_t_3 = 0;
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":174
+ *           message_slice_length = grpc_slice_length(message_slice)
+ *           message += (<char *>message_slice_pointer)[:message_slice_length]
+ *           grpc_slice_unref(message_slice)             # <<<<<<<<<<<<<<
+ *         grpc_byte_buffer_reader_destroy(&message_reader)
+ *         self._message = bytes(message)
+ */
+        grpc_slice_unref(__pyx_v_message_slice);
+      }
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":175
+ *           message += (<char *>message_slice_pointer)[:message_slice_length]
+ *           grpc_slice_unref(message_slice)
+ *         grpc_byte_buffer_reader_destroy(&message_reader)             # <<<<<<<<<<<<<<
+ *         self._message = bytes(message)
+ *       else:
+ */
+      grpc_byte_buffer_reader_destroy((&__pyx_v_message_reader));
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":176
+ *           grpc_slice_unref(message_slice)
+ *         grpc_byte_buffer_reader_destroy(&message_reader)
+ *         self._message = bytes(message)             # <<<<<<<<<<<<<<
+ *       else:
+ *         self._message = None
+ */
+      __pyx_t_3 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyBytes_Type)), __pyx_v_message); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 176, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
+      __Pyx_GIVEREF(__pyx_t_3);
+      __Pyx_GOTREF(__pyx_v_self->_message);
+      __Pyx_DECREF(__pyx_v_self->_message);
+      __pyx_v_self->_message = ((PyObject*)__pyx_t_3);
+      __pyx_t_3 = 0;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":168
+ *       message_reader_status = grpc_byte_buffer_reader_init(
+ *           &message_reader, self._c_message_byte_buffer)
+ *       if message_reader_status:             # <<<<<<<<<<<<<<
+ *         message = bytearray()
+ *         while grpc_byte_buffer_reader_next(&message_reader, &message_slice):
+ */
+      goto __pyx_L4;
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":178
+ *         self._message = bytes(message)
+ *       else:
+ *         self._message = None             # <<<<<<<<<<<<<<
+ *       grpc_byte_buffer_destroy(self._c_message_byte_buffer)
+ *     else:
+ */
+    /*else*/ {
+      __Pyx_INCREF(Py_None);
+      __Pyx_GIVEREF(Py_None);
+      __Pyx_GOTREF(__pyx_v_self->_message);
+      __Pyx_DECREF(__pyx_v_self->_message);
+      __pyx_v_self->_message = ((PyObject*)Py_None);
+    }
+    __pyx_L4:;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":179
+ *       else:
+ *         self._message = None
+ *       grpc_byte_buffer_destroy(self._c_message_byte_buffer)             # <<<<<<<<<<<<<<
+ *     else:
+ *       self._message = None
+ */
+    grpc_byte_buffer_destroy(__pyx_v_self->_c_message_byte_buffer);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":165
+ *     cdef size_t message_slice_length
+ *     cdef void *message_slice_pointer
+ *     if self._c_message_byte_buffer != NULL:             # <<<<<<<<<<<<<<
+ *       message_reader_status = grpc_byte_buffer_reader_init(
+ *           &message_reader, self._c_message_byte_buffer)
+ */
+    goto __pyx_L3;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":181
+ *       grpc_byte_buffer_destroy(self._c_message_byte_buffer)
+ *     else:
+ *       self._message = None             # <<<<<<<<<<<<<<
+ * 
+ *   def message(self):
+ */
+  /*else*/ {
+    __Pyx_INCREF(Py_None);
+    __Pyx_GIVEREF(Py_None);
+    __Pyx_GOTREF(__pyx_v_self->_message);
+    __Pyx_DECREF(__pyx_v_self->_message);
+    __pyx_v_self->_message = ((PyObject*)Py_None);
+  }
+  __pyx_L3:;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":159
+ *         &self._c_message_byte_buffer)
+ * 
+ *   cdef void un_c(self) except *:             # <<<<<<<<<<<<<<
+ *     cdef grpc_byte_buffer_reader message_reader
+ *     cdef bint message_reader_status
+ */
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("_cython.cygrpc.ReceiveMessageOperation.un_c", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_message);
+  __Pyx_RefNannyFinishContext();
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":183
+ *       self._message = None
+ * 
+ *   def message(self):             # <<<<<<<<<<<<<<
+ *     return self._message
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_23ReceiveMessageOperation_5message(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_23ReceiveMessageOperation_5message = {"message", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_23ReceiveMessageOperation_5message, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_23ReceiveMessageOperation_5message(PyObject *__pyx_v_self, 
+#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("message (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("message", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "message", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_23ReceiveMessageOperation_4message(((struct __pyx_obj_7_cython_6cygrpc_ReceiveMessageOperation *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_23ReceiveMessageOperation_4message(struct __pyx_obj_7_cython_6cygrpc_ReceiveMessageOperation *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("message", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":184
+ * 
+ *   def message(self):
+ *     return self._message             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->_message);
+  __pyx_r = __pyx_v_self->_message;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":183
+ *       self._message = None
+ * 
+ *   def message(self):             # <<<<<<<<<<<<<<
+ *     return self._message
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pxd.pxi":80
+ * cdef class ReceiveMessageOperation(Operation):
+ * 
+ *   cdef readonly int _flags             # <<<<<<<<<<<<<<
+ *   cdef grpc_byte_buffer *_c_message_byte_buffer
+ *   cdef bytes _message
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_23ReceiveMessageOperation_6_flags_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_23ReceiveMessageOperation_6_flags_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_7_cython_6cygrpc_23ReceiveMessageOperation_6_flags___get__(((struct __pyx_obj_7_cython_6cygrpc_ReceiveMessageOperation *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_23ReceiveMessageOperation_6_flags___get__(struct __pyx_obj_7_cython_6cygrpc_ReceiveMessageOperation *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 80, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.ReceiveMessageOperation._flags.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "(tree fragment)":1
+ * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
+ *     raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
+ * def __setstate_cython__(self, __pyx_state):
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_23ReceiveMessageOperation_7__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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_23ReceiveMessageOperation_7__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_23ReceiveMessageOperation_7__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_23ReceiveMessageOperation_7__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_7_cython_6cygrpc_23ReceiveMessageOperation_6__reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc_ReceiveMessageOperation *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_23ReceiveMessageOperation_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_ReceiveMessageOperation *__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(10, 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("_cython.cygrpc.ReceiveMessageOperation.__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_7_cython_6cygrpc_23ReceiveMessageOperation_9__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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_23ReceiveMessageOperation_9__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_23ReceiveMessageOperation_9__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_23ReceiveMessageOperation_9__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(10, 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(10, 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(10, 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("_cython.cygrpc.ReceiveMessageOperation.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_23ReceiveMessageOperation_8__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc_ReceiveMessageOperation *)__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_7_cython_6cygrpc_23ReceiveMessageOperation_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_ReceiveMessageOperation *__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(10, 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("_cython.cygrpc.ReceiveMessageOperation.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":189
+ * cdef class ReceiveStatusOnClientOperation(Operation):
+ * 
+ *   def __cinit__(self, flags):             # <<<<<<<<<<<<<<
+ *     self._flags = flags
+ * 
+ */
+
+/* Python wrapper */
+static int __pyx_pw_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_flags = 0;
+  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject* values[1] = {0};
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  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);
+  {
+    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_flags,0};
+    if (__pyx_kwds) {
+      Py_ssize_t kw_args;
+      switch (__pyx_nargs) {
+        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
+      switch (__pyx_nargs) {
+        case  0:
+        if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_flags)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 189, __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, "__cinit__") < 0)) __PYX_ERR(19, 189, __pyx_L3_error)
+      }
+    } else if (unlikely(__pyx_nargs != 1)) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+    }
+    __pyx_v_flags = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, __pyx_nargs); __PYX_ERR(19, 189, __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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_AddTraceback("_cython.cygrpc.ReceiveStatusOnClientOperation.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_30ReceiveStatusOnClientOperation___cinit__(((struct __pyx_obj_7_cython_6cygrpc_ReceiveStatusOnClientOperation *)__pyx_v_self), __pyx_v_flags);
+
+  /* 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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_7_cython_6cygrpc_30ReceiveStatusOnClientOperation___cinit__(struct __pyx_obj_7_cython_6cygrpc_ReceiveStatusOnClientOperation *__pyx_v_self, PyObject *__pyx_v_flags) {
+  int __pyx_r;
+  int __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":190
+ * 
+ *   def __cinit__(self, flags):
+ *     self._flags = flags             # <<<<<<<<<<<<<<
+ * 
+ *   def type(self):
+ */
+  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_flags); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(19, 190, __pyx_L1_error)
+  __pyx_v_self->_flags = __pyx_t_1;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":189
+ * cdef class ReceiveStatusOnClientOperation(Operation):
+ * 
+ *   def __cinit__(self, flags):             # <<<<<<<<<<<<<<
+ *     self._flags = flags
+ * 
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc.ReceiveStatusOnClientOperation.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":192
+ *     self._flags = flags
+ * 
+ *   def type(self):             # <<<<<<<<<<<<<<
+ *     return GRPC_OP_RECV_STATUS_ON_CLIENT
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_3type(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_3type = {"type", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_3type, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_3type(PyObject *__pyx_v_self, 
+#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("type (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("type", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "type", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_2type(((struct __pyx_obj_7_cython_6cygrpc_ReceiveStatusOnClientOperation *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_2type(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_ReceiveStatusOnClientOperation *__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("type", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":193
+ * 
+ *   def type(self):
+ *     return GRPC_OP_RECV_STATUS_ON_CLIENT             # <<<<<<<<<<<<<<
+ * 
+ *   cdef void c(self) except *:
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_grpc_op_type(GRPC_OP_RECV_STATUS_ON_CLIENT); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 193, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":192
+ *     self._flags = flags
+ * 
+ *   def type(self):             # <<<<<<<<<<<<<<
+ *     return GRPC_OP_RECV_STATUS_ON_CLIENT
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.ReceiveStatusOnClientOperation.type", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":195
+ *     return GRPC_OP_RECV_STATUS_ON_CLIENT
+ * 
+ *   cdef void c(self) except *:             # <<<<<<<<<<<<<<
+ *     self.c_op.type = GRPC_OP_RECV_STATUS_ON_CLIENT
+ *     self.c_op.flags = self._flags
+ */
+
+static void __pyx_f_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_c(struct __pyx_obj_7_cython_6cygrpc_ReceiveStatusOnClientOperation *__pyx_v_self) {
+  int __pyx_t_1;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":196
+ * 
+ *   cdef void c(self) except *:
+ *     self.c_op.type = GRPC_OP_RECV_STATUS_ON_CLIENT             # <<<<<<<<<<<<<<
+ *     self.c_op.flags = self._flags
+ *     grpc_metadata_array_init(&self._c_trailing_metadata)
+ */
+  __pyx_v_self->__pyx_base.c_op.op = GRPC_OP_RECV_STATUS_ON_CLIENT;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":197
+ *   cdef void c(self) except *:
+ *     self.c_op.type = GRPC_OP_RECV_STATUS_ON_CLIENT
+ *     self.c_op.flags = self._flags             # <<<<<<<<<<<<<<
+ *     grpc_metadata_array_init(&self._c_trailing_metadata)
+ *     self.c_op.data.receive_status_on_client.trailing_metadata = (
+ */
+  __pyx_t_1 = __pyx_v_self->_flags;
+  __pyx_v_self->__pyx_base.c_op.flags = __pyx_t_1;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":198
+ *     self.c_op.type = GRPC_OP_RECV_STATUS_ON_CLIENT
+ *     self.c_op.flags = self._flags
+ *     grpc_metadata_array_init(&self._c_trailing_metadata)             # <<<<<<<<<<<<<<
+ *     self.c_op.data.receive_status_on_client.trailing_metadata = (
+ *         &self._c_trailing_metadata)
+ */
+  grpc_metadata_array_init((&__pyx_v_self->_c_trailing_metadata));
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":199
+ *     self.c_op.flags = self._flags
+ *     grpc_metadata_array_init(&self._c_trailing_metadata)
+ *     self.c_op.data.receive_status_on_client.trailing_metadata = (             # <<<<<<<<<<<<<<
+ *         &self._c_trailing_metadata)
+ *     self.c_op.data.receive_status_on_client.status = (
+ */
+  __pyx_v_self->__pyx_base.c_op.data.recv_status_on_client.trailing_metadata = (&__pyx_v_self->_c_trailing_metadata);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":201
+ *     self.c_op.data.receive_status_on_client.trailing_metadata = (
+ *         &self._c_trailing_metadata)
+ *     self.c_op.data.receive_status_on_client.status = (             # <<<<<<<<<<<<<<
+ *         &self._c_code)
+ *     self.c_op.data.receive_status_on_client.status_details = (
+ */
+  __pyx_v_self->__pyx_base.c_op.data.recv_status_on_client.status = (&__pyx_v_self->_c_code);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":203
+ *     self.c_op.data.receive_status_on_client.status = (
+ *         &self._c_code)
+ *     self.c_op.data.receive_status_on_client.status_details = (             # <<<<<<<<<<<<<<
+ *         &self._c_details)
+ *     self.c_op.data.receive_status_on_client.error_string = (
+ */
+  __pyx_v_self->__pyx_base.c_op.data.recv_status_on_client.status_details = (&__pyx_v_self->_c_details);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":205
+ *     self.c_op.data.receive_status_on_client.status_details = (
+ *         &self._c_details)
+ *     self.c_op.data.receive_status_on_client.error_string = (             # <<<<<<<<<<<<<<
+ *         &self._c_error_string)
+ * 
+ */
+  __pyx_v_self->__pyx_base.c_op.data.recv_status_on_client.error_string = (&__pyx_v_self->_c_error_string);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":195
+ *     return GRPC_OP_RECV_STATUS_ON_CLIENT
+ * 
+ *   cdef void c(self) except *:             # <<<<<<<<<<<<<<
+ *     self.c_op.type = GRPC_OP_RECV_STATUS_ON_CLIENT
+ *     self.c_op.flags = self._flags
+ */
+
+  /* function exit code */
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":208
+ *         &self._c_error_string)
+ * 
+ *   cdef void un_c(self) except *:             # <<<<<<<<<<<<<<
+ *     self._trailing_metadata = _metadata(&self._c_trailing_metadata)
+ *     grpc_metadata_array_destroy(&self._c_trailing_metadata)
+ */
+
+static void __pyx_f_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_un_c(struct __pyx_obj_7_cython_6cygrpc_ReceiveStatusOnClientOperation *__pyx_v_self) {
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_t_3;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("un_c", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":209
+ * 
+ *   cdef void un_c(self) except *:
+ *     self._trailing_metadata = _metadata(&self._c_trailing_metadata)             # <<<<<<<<<<<<<<
+ *     grpc_metadata_array_destroy(&self._c_trailing_metadata)
+ *     self._code = self._c_code
+ */
+  __pyx_t_1 = __pyx_f_7_cython_6cygrpc__metadata((&__pyx_v_self->_c_trailing_metadata)); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 209, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->_trailing_metadata);
+  __Pyx_DECREF(__pyx_v_self->_trailing_metadata);
+  __pyx_v_self->_trailing_metadata = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":210
+ *   cdef void un_c(self) except *:
+ *     self._trailing_metadata = _metadata(&self._c_trailing_metadata)
+ *     grpc_metadata_array_destroy(&self._c_trailing_metadata)             # <<<<<<<<<<<<<<
+ *     self._code = self._c_code
+ *     self._details = _decode(_slice_bytes(self._c_details))
+ */
+  grpc_metadata_array_destroy((&__pyx_v_self->_c_trailing_metadata));
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":211
+ *     self._trailing_metadata = _metadata(&self._c_trailing_metadata)
+ *     grpc_metadata_array_destroy(&self._c_trailing_metadata)
+ *     self._code = self._c_code             # <<<<<<<<<<<<<<
+ *     self._details = _decode(_slice_bytes(self._c_details))
+ *     grpc_slice_unref(self._c_details)
+ */
+  __pyx_t_1 = __Pyx_PyInt_From_grpc_status_code(__pyx_v_self->_c_code); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 211, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->_code);
+  __Pyx_DECREF(__pyx_v_self->_code);
+  __pyx_v_self->_code = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":212
+ *     grpc_metadata_array_destroy(&self._c_trailing_metadata)
+ *     self._code = self._c_code
+ *     self._details = _decode(_slice_bytes(self._c_details))             # <<<<<<<<<<<<<<
+ *     grpc_slice_unref(self._c_details)
+ *     if self._c_error_string != NULL:
+ */
+  __pyx_t_1 = __pyx_f_7_cython_6cygrpc__slice_bytes(__pyx_v_self->_c_details); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 212, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __pyx_f_7_cython_6cygrpc__decode(((PyObject*)__pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 212, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_GIVEREF(__pyx_t_2);
+  __Pyx_GOTREF(__pyx_v_self->_details);
+  __Pyx_DECREF(__pyx_v_self->_details);
+  __pyx_v_self->_details = ((PyObject*)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":213
+ *     self._code = self._c_code
+ *     self._details = _decode(_slice_bytes(self._c_details))
+ *     grpc_slice_unref(self._c_details)             # <<<<<<<<<<<<<<
+ *     if self._c_error_string != NULL:
+ *       self._error_string = _decode(self._c_error_string)
+ */
+  grpc_slice_unref(__pyx_v_self->_c_details);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":214
+ *     self._details = _decode(_slice_bytes(self._c_details))
+ *     grpc_slice_unref(self._c_details)
+ *     if self._c_error_string != NULL:             # <<<<<<<<<<<<<<
+ *       self._error_string = _decode(self._c_error_string)
+ *       gpr_free(<void*>self._c_error_string)
+ */
+  __pyx_t_3 = (__pyx_v_self->_c_error_string != NULL);
+  if (__pyx_t_3) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":215
+ *     grpc_slice_unref(self._c_details)
+ *     if self._c_error_string != NULL:
+ *       self._error_string = _decode(self._c_error_string)             # <<<<<<<<<<<<<<
+ *       gpr_free(<void*>self._c_error_string)
+ *     else:
+ */
+    __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_self->_c_error_string); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 215, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_1 = __pyx_f_7_cython_6cygrpc__decode(((PyObject*)__pyx_t_2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 215, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_GIVEREF(__pyx_t_1);
+    __Pyx_GOTREF(__pyx_v_self->_error_string);
+    __Pyx_DECREF(__pyx_v_self->_error_string);
+    __pyx_v_self->_error_string = ((PyObject*)__pyx_t_1);
+    __pyx_t_1 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":216
+ *     if self._c_error_string != NULL:
+ *       self._error_string = _decode(self._c_error_string)
+ *       gpr_free(<void*>self._c_error_string)             # <<<<<<<<<<<<<<
+ *     else:
+ *       self._error_string = ""
+ */
+    gpr_free(((void *)__pyx_v_self->_c_error_string));
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":214
+ *     self._details = _decode(_slice_bytes(self._c_details))
+ *     grpc_slice_unref(self._c_details)
+ *     if self._c_error_string != NULL:             # <<<<<<<<<<<<<<
+ *       self._error_string = _decode(self._c_error_string)
+ *       gpr_free(<void*>self._c_error_string)
+ */
+    goto __pyx_L3;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":218
+ *       gpr_free(<void*>self._c_error_string)
+ *     else:
+ *       self._error_string = ""             # <<<<<<<<<<<<<<
+ * 
+ *   def trailing_metadata(self):
+ */
+  /*else*/ {
+    __Pyx_INCREF(__pyx_kp_s__7);
+    __Pyx_GIVEREF(__pyx_kp_s__7);
+    __Pyx_GOTREF(__pyx_v_self->_error_string);
+    __Pyx_DECREF(__pyx_v_self->_error_string);
+    __pyx_v_self->_error_string = __pyx_kp_s__7;
+  }
+  __pyx_L3:;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":208
+ *         &self._c_error_string)
+ * 
+ *   cdef void un_c(self) except *:             # <<<<<<<<<<<<<<
+ *     self._trailing_metadata = _metadata(&self._c_trailing_metadata)
+ *     grpc_metadata_array_destroy(&self._c_trailing_metadata)
+ */
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("_cython.cygrpc.ReceiveStatusOnClientOperation.un_c", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":220
+ *       self._error_string = ""
+ * 
+ *   def trailing_metadata(self):             # <<<<<<<<<<<<<<
+ *     return self._trailing_metadata
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_5trailing_metadata(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_5trailing_metadata = {"trailing_metadata", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_5trailing_metadata, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_5trailing_metadata(PyObject *__pyx_v_self, 
+#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("trailing_metadata (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("trailing_metadata", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "trailing_metadata", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_4trailing_metadata(((struct __pyx_obj_7_cython_6cygrpc_ReceiveStatusOnClientOperation *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_4trailing_metadata(struct __pyx_obj_7_cython_6cygrpc_ReceiveStatusOnClientOperation *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("trailing_metadata", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":221
+ * 
+ *   def trailing_metadata(self):
+ *     return self._trailing_metadata             # <<<<<<<<<<<<<<
+ * 
+ *   def code(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->_trailing_metadata);
+  __pyx_r = __pyx_v_self->_trailing_metadata;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":220
+ *       self._error_string = ""
+ * 
+ *   def trailing_metadata(self):             # <<<<<<<<<<<<<<
+ *     return self._trailing_metadata
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":223
+ *     return self._trailing_metadata
+ * 
+ *   def code(self):             # <<<<<<<<<<<<<<
+ *     return self._code
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_7code(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_7code = {"code", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_7code, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_7code(PyObject *__pyx_v_self, 
+#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("code (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("code", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "code", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_6code(((struct __pyx_obj_7_cython_6cygrpc_ReceiveStatusOnClientOperation *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_6code(struct __pyx_obj_7_cython_6cygrpc_ReceiveStatusOnClientOperation *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("code", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":224
+ * 
+ *   def code(self):
+ *     return self._code             # <<<<<<<<<<<<<<
+ * 
+ *   def details(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->_code);
+  __pyx_r = __pyx_v_self->_code;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":223
+ *     return self._trailing_metadata
+ * 
+ *   def code(self):             # <<<<<<<<<<<<<<
+ *     return self._code
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":226
+ *     return self._code
+ * 
+ *   def details(self):             # <<<<<<<<<<<<<<
+ *     return self._details
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_9details(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_9details = {"details", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_9details, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_9details(PyObject *__pyx_v_self, 
+#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("details (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("details", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "details", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_8details(((struct __pyx_obj_7_cython_6cygrpc_ReceiveStatusOnClientOperation *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_8details(struct __pyx_obj_7_cython_6cygrpc_ReceiveStatusOnClientOperation *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("details", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":227
+ * 
+ *   def details(self):
+ *     return self._details             # <<<<<<<<<<<<<<
+ * 
+ *   def error_string(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->_details);
+  __pyx_r = __pyx_v_self->_details;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":226
+ *     return self._code
+ * 
+ *   def details(self):             # <<<<<<<<<<<<<<
+ *     return self._details
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":229
+ *     return self._details
+ * 
+ *   def error_string(self):             # <<<<<<<<<<<<<<
+ *     return self._error_string
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_11error_string(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_11error_string = {"error_string", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_11error_string, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_11error_string(PyObject *__pyx_v_self, 
+#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("error_string (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("error_string", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "error_string", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_10error_string(((struct __pyx_obj_7_cython_6cygrpc_ReceiveStatusOnClientOperation *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_10error_string(struct __pyx_obj_7_cython_6cygrpc_ReceiveStatusOnClientOperation *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("error_string", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":230
+ * 
+ *   def error_string(self):
+ *     return self._error_string             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->_error_string);
+  __pyx_r = __pyx_v_self->_error_string;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":229
+ *     return self._details
+ * 
+ *   def error_string(self):             # <<<<<<<<<<<<<<
+ *     return self._error_string
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pxd.pxi":90
+ * cdef class ReceiveStatusOnClientOperation(Operation):
+ * 
+ *   cdef readonly int _flags             # <<<<<<<<<<<<<<
+ *   cdef grpc_metadata_array _c_trailing_metadata
+ *   cdef grpc_status_code _c_code
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_6_flags_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_6_flags_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_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_6_flags___get__(((struct __pyx_obj_7_cython_6cygrpc_ReceiveStatusOnClientOperation *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_6_flags___get__(struct __pyx_obj_7_cython_6cygrpc_ReceiveStatusOnClientOperation *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 90, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.ReceiveStatusOnClientOperation._flags.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "(tree fragment)":1
+ * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
+ *     raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
+ * def __setstate_cython__(self, __pyx_state):
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_13__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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_13__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_13__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_13__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_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_12__reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc_ReceiveStatusOnClientOperation *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_12__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_ReceiveStatusOnClientOperation *__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(10, 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("_cython.cygrpc.ReceiveStatusOnClientOperation.__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_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_15__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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_15__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_15__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_15__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(10, 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(10, 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(10, 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("_cython.cygrpc.ReceiveStatusOnClientOperation.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_14__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc_ReceiveStatusOnClientOperation *)__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_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_14__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_ReceiveStatusOnClientOperation *__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(10, 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("_cython.cygrpc.ReceiveStatusOnClientOperation.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":235
+ * cdef class ReceiveCloseOnServerOperation(Operation):
+ * 
+ *   def __cinit__(self, flags):             # <<<<<<<<<<<<<<
+ *     self._flags = flags
+ * 
+ */
+
+/* Python wrapper */
+static int __pyx_pw_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_flags = 0;
+  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject* values[1] = {0};
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  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);
+  {
+    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_flags,0};
+    if (__pyx_kwds) {
+      Py_ssize_t kw_args;
+      switch (__pyx_nargs) {
+        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
+      switch (__pyx_nargs) {
+        case  0:
+        if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_flags)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 235, __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, "__cinit__") < 0)) __PYX_ERR(19, 235, __pyx_L3_error)
+      }
+    } else if (unlikely(__pyx_nargs != 1)) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+    }
+    __pyx_v_flags = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, __pyx_nargs); __PYX_ERR(19, 235, __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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_AddTraceback("_cython.cygrpc.ReceiveCloseOnServerOperation.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_29ReceiveCloseOnServerOperation___cinit__(((struct __pyx_obj_7_cython_6cygrpc_ReceiveCloseOnServerOperation *)__pyx_v_self), __pyx_v_flags);
+
+  /* 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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_7_cython_6cygrpc_29ReceiveCloseOnServerOperation___cinit__(struct __pyx_obj_7_cython_6cygrpc_ReceiveCloseOnServerOperation *__pyx_v_self, PyObject *__pyx_v_flags) {
+  int __pyx_r;
+  int __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":236
+ * 
+ *   def __cinit__(self, flags):
+ *     self._flags = flags             # <<<<<<<<<<<<<<
+ * 
+ *   def type(self):
+ */
+  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_flags); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(19, 236, __pyx_L1_error)
+  __pyx_v_self->_flags = __pyx_t_1;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":235
+ * cdef class ReceiveCloseOnServerOperation(Operation):
+ * 
+ *   def __cinit__(self, flags):             # <<<<<<<<<<<<<<
+ *     self._flags = flags
+ * 
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc.ReceiveCloseOnServerOperation.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":238
+ *     self._flags = flags
+ * 
+ *   def type(self):             # <<<<<<<<<<<<<<
+ *     return GRPC_OP_RECV_CLOSE_ON_SERVER
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_3type(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_3type = {"type", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_3type, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_3type(PyObject *__pyx_v_self, 
+#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("type (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("type", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "type", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_2type(((struct __pyx_obj_7_cython_6cygrpc_ReceiveCloseOnServerOperation *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_2type(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_ReceiveCloseOnServerOperation *__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("type", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":239
+ * 
+ *   def type(self):
+ *     return GRPC_OP_RECV_CLOSE_ON_SERVER             # <<<<<<<<<<<<<<
+ * 
+ *   cdef void c(self) except *:
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_grpc_op_type(GRPC_OP_RECV_CLOSE_ON_SERVER); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 239, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":238
+ *     self._flags = flags
+ * 
+ *   def type(self):             # <<<<<<<<<<<<<<
+ *     return GRPC_OP_RECV_CLOSE_ON_SERVER
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.ReceiveCloseOnServerOperation.type", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":241
+ *     return GRPC_OP_RECV_CLOSE_ON_SERVER
+ * 
+ *   cdef void c(self) except *:             # <<<<<<<<<<<<<<
+ *     self.c_op.type = GRPC_OP_RECV_CLOSE_ON_SERVER
+ *     self.c_op.flags = self._flags
+ */
+
+static void __pyx_f_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_c(struct __pyx_obj_7_cython_6cygrpc_ReceiveCloseOnServerOperation *__pyx_v_self) {
+  int __pyx_t_1;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":242
+ * 
+ *   cdef void c(self) except *:
+ *     self.c_op.type = GRPC_OP_RECV_CLOSE_ON_SERVER             # <<<<<<<<<<<<<<
+ *     self.c_op.flags = self._flags
+ *     self.c_op.data.receive_close_on_server.cancelled = &self._c_cancelled
+ */
+  __pyx_v_self->__pyx_base.c_op.op = GRPC_OP_RECV_CLOSE_ON_SERVER;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":243
+ *   cdef void c(self) except *:
+ *     self.c_op.type = GRPC_OP_RECV_CLOSE_ON_SERVER
+ *     self.c_op.flags = self._flags             # <<<<<<<<<<<<<<
+ *     self.c_op.data.receive_close_on_server.cancelled = &self._c_cancelled
+ * 
+ */
+  __pyx_t_1 = __pyx_v_self->_flags;
+  __pyx_v_self->__pyx_base.c_op.flags = __pyx_t_1;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":244
+ *     self.c_op.type = GRPC_OP_RECV_CLOSE_ON_SERVER
+ *     self.c_op.flags = self._flags
+ *     self.c_op.data.receive_close_on_server.cancelled = &self._c_cancelled             # <<<<<<<<<<<<<<
+ * 
+ *   cdef void un_c(self) except *:
+ */
+  __pyx_v_self->__pyx_base.c_op.data.recv_close_on_server.cancelled = (&__pyx_v_self->_c_cancelled);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":241
+ *     return GRPC_OP_RECV_CLOSE_ON_SERVER
+ * 
+ *   cdef void c(self) except *:             # <<<<<<<<<<<<<<
+ *     self.c_op.type = GRPC_OP_RECV_CLOSE_ON_SERVER
+ *     self.c_op.flags = self._flags
+ */
+
+  /* function exit code */
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":246
+ *     self.c_op.data.receive_close_on_server.cancelled = &self._c_cancelled
+ * 
+ *   cdef void un_c(self) except *:             # <<<<<<<<<<<<<<
+ *     self._cancelled = bool(self._c_cancelled)
+ * 
+ */
+
+static void __pyx_f_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_un_c(struct __pyx_obj_7_cython_6cygrpc_ReceiveCloseOnServerOperation *__pyx_v_self) {
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_t_2;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("un_c", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":247
+ * 
+ *   cdef void un_c(self) except *:
+ *     self._cancelled = bool(self._c_cancelled)             # <<<<<<<<<<<<<<
+ * 
+ *   def cancelled(self):
+ */
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_c_cancelled); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 247, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(19, 247, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyBool_FromLong((!(!__pyx_t_2))); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 247, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->_cancelled);
+  __Pyx_DECREF(__pyx_v_self->_cancelled);
+  __pyx_v_self->_cancelled = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":246
+ *     self.c_op.data.receive_close_on_server.cancelled = &self._c_cancelled
+ * 
+ *   cdef void un_c(self) except *:             # <<<<<<<<<<<<<<
+ *     self._cancelled = bool(self._c_cancelled)
+ * 
+ */
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.ReceiveCloseOnServerOperation.un_c", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":249
+ *     self._cancelled = bool(self._c_cancelled)
+ * 
+ *   def cancelled(self):             # <<<<<<<<<<<<<<
+ *     return self._cancelled
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_5cancelled(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_5cancelled = {"cancelled", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_5cancelled, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_5cancelled(PyObject *__pyx_v_self, 
+#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("cancelled (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("cancelled", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "cancelled", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_4cancelled(((struct __pyx_obj_7_cython_6cygrpc_ReceiveCloseOnServerOperation *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_4cancelled(struct __pyx_obj_7_cython_6cygrpc_ReceiveCloseOnServerOperation *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("cancelled", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":250
+ * 
+ *   def cancelled(self):
+ *     return self._cancelled             # <<<<<<<<<<<<<<
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->_cancelled);
+  __pyx_r = __pyx_v_self->_cancelled;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":249
+ *     self._cancelled = bool(self._c_cancelled)
+ * 
+ *   def cancelled(self):             # <<<<<<<<<<<<<<
+ *     return self._cancelled
+ */
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pxd.pxi":106
+ * cdef class ReceiveCloseOnServerOperation(Operation):
+ * 
+ *   cdef readonly int _flags             # <<<<<<<<<<<<<<
+ *   cdef object _cancelled
+ *   cdef int _c_cancelled
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_6_flags_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_6_flags_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_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_6_flags___get__(((struct __pyx_obj_7_cython_6cygrpc_ReceiveCloseOnServerOperation *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_6_flags___get__(struct __pyx_obj_7_cython_6cygrpc_ReceiveCloseOnServerOperation *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 106, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.ReceiveCloseOnServerOperation._flags.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "(tree fragment)":1
+ * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
+ *     raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
+ * def __setstate_cython__(self, __pyx_state):
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_7__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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_7__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_7__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_7__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_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_6__reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc_ReceiveCloseOnServerOperation *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_ReceiveCloseOnServerOperation *__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(10, 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("_cython.cygrpc.ReceiveCloseOnServerOperation.__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_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_9__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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_9__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_9__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_9__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(10, 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(10, 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(10, 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("_cython.cygrpc.ReceiveCloseOnServerOperation.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_8__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc_ReceiveCloseOnServerOperation *)__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_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_ReceiveCloseOnServerOperation *__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(10, 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("_cython.cygrpc.ReceiveCloseOnServerOperation.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":16
+ * 
+ * 
+ * cdef bytes _slice_bytes(grpc_slice slice):             # <<<<<<<<<<<<<<
+ *   cdef void *start = grpc_slice_start_ptr(slice)
+ *   cdef size_t length = grpc_slice_length(slice)
+ */
+
+static PyObject *__pyx_f_7_cython_6cygrpc__slice_bytes(grpc_slice __pyx_v_slice) {
+  void *__pyx_v_start;
+  size_t __pyx_v_length;
+  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("_slice_bytes", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":17
+ * 
+ * cdef bytes _slice_bytes(grpc_slice slice):
+ *   cdef void *start = grpc_slice_start_ptr(slice)             # <<<<<<<<<<<<<<
+ *   cdef size_t length = grpc_slice_length(slice)
+ *   return (<const char *>start)[:length]
+ */
+  __pyx_v_start = GRPC_SLICE_START_PTR(__pyx_v_slice);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":18
+ * cdef bytes _slice_bytes(grpc_slice slice):
+ *   cdef void *start = grpc_slice_start_ptr(slice)
+ *   cdef size_t length = grpc_slice_length(slice)             # <<<<<<<<<<<<<<
+ *   return (<const char *>start)[:length]
+ * 
+ */
+  __pyx_v_length = GRPC_SLICE_LENGTH(__pyx_v_slice);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":19
+ *   cdef void *start = grpc_slice_start_ptr(slice)
+ *   cdef size_t length = grpc_slice_length(slice)
+ *   return (<const char *>start)[:length]             # <<<<<<<<<<<<<<
+ * 
+ * cdef grpc_slice _copy_slice(grpc_slice slice) nogil:
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyBytes_FromStringAndSize(((char const *)__pyx_v_start) + 0, __pyx_v_length - 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 19, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":16
+ * 
+ * 
+ * cdef bytes _slice_bytes(grpc_slice slice):             # <<<<<<<<<<<<<<
+ *   cdef void *start = grpc_slice_start_ptr(slice)
+ *   cdef size_t length = grpc_slice_length(slice)
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc._slice_bytes", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":21
+ *   return (<const char *>start)[:length]
+ * 
+ * cdef grpc_slice _copy_slice(grpc_slice slice) nogil:             # <<<<<<<<<<<<<<
+ *   cdef void *start = grpc_slice_start_ptr(slice)
+ *   cdef size_t length = grpc_slice_length(slice)
+ */
+
+static grpc_slice __pyx_f_7_cython_6cygrpc__copy_slice(grpc_slice __pyx_v_slice) {
+  void *__pyx_v_start;
+  size_t __pyx_v_length;
+  grpc_slice __pyx_r;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":22
+ * 
+ * cdef grpc_slice _copy_slice(grpc_slice slice) nogil:
+ *   cdef void *start = grpc_slice_start_ptr(slice)             # <<<<<<<<<<<<<<
+ *   cdef size_t length = grpc_slice_length(slice)
+ *   return grpc_slice_from_copied_buffer(<const char *>start, length)
+ */
+  __pyx_v_start = GRPC_SLICE_START_PTR(__pyx_v_slice);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":23
+ * cdef grpc_slice _copy_slice(grpc_slice slice) nogil:
+ *   cdef void *start = grpc_slice_start_ptr(slice)
+ *   cdef size_t length = grpc_slice_length(slice)             # <<<<<<<<<<<<<<
+ *   return grpc_slice_from_copied_buffer(<const char *>start, length)
+ * 
+ */
+  __pyx_v_length = GRPC_SLICE_LENGTH(__pyx_v_slice);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":24
+ *   cdef void *start = grpc_slice_start_ptr(slice)
+ *   cdef size_t length = grpc_slice_length(slice)
+ *   return grpc_slice_from_copied_buffer(<const char *>start, length)             # <<<<<<<<<<<<<<
+ * 
+ * cdef grpc_slice _slice_from_bytes(bytes value) nogil:
+ */
+  __pyx_r = grpc_slice_from_copied_buffer(((char const *)__pyx_v_start), __pyx_v_length);
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":21
+ *   return (<const char *>start)[:length]
+ * 
+ * cdef grpc_slice _copy_slice(grpc_slice slice) nogil:             # <<<<<<<<<<<<<<
+ *   cdef void *start = grpc_slice_start_ptr(slice)
+ *   cdef size_t length = grpc_slice_length(slice)
+ */
+
+  /* function exit code */
+  __pyx_L0:;
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":26
+ *   return grpc_slice_from_copied_buffer(<const char *>start, length)
+ * 
+ * cdef grpc_slice _slice_from_bytes(bytes value) nogil:             # <<<<<<<<<<<<<<
+ *   cdef const char *value_ptr
+ *   cdef size_t length
+ */
+
+static grpc_slice __pyx_f_7_cython_6cygrpc__slice_from_bytes(PyObject *__pyx_v_value) {
+  char const *__pyx_v_value_ptr;
+  size_t __pyx_v_length;
+  grpc_slice __pyx_r;
+  char const *__pyx_t_1;
+  Py_ssize_t __pyx_t_2;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  #ifdef WITH_THREAD
+  PyGILState_STATE __pyx_gilstate_save;
+  #endif
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":29
+ *   cdef const char *value_ptr
+ *   cdef size_t length
+ *   with gil:             # <<<<<<<<<<<<<<
+ *     value_ptr = <const char *>value
+ *     length = len(value)
+ */
+  {
+      #ifdef WITH_THREAD
+      PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
+      #endif
+      /*try:*/ {
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":30
+ *   cdef size_t length
+ *   with gil:
+ *     value_ptr = <const char *>value             # <<<<<<<<<<<<<<
+ *     length = len(value)
+ *   return grpc_slice_from_copied_buffer(value_ptr, length)
+ */
+        if (unlikely(__pyx_v_value == Py_None)) {
+          PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
+          __PYX_ERR(21, 30, __pyx_L4_error)
+        }
+        __pyx_t_1 = __Pyx_PyBytes_AsString(__pyx_v_value); if (unlikely((!__pyx_t_1) && PyErr_Occurred())) __PYX_ERR(21, 30, __pyx_L4_error)
+        __pyx_v_value_ptr = ((char const *)__pyx_t_1);
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":31
+ *   with gil:
+ *     value_ptr = <const char *>value
+ *     length = len(value)             # <<<<<<<<<<<<<<
+ *   return grpc_slice_from_copied_buffer(value_ptr, length)
+ * 
+ */
+        if (unlikely(__pyx_v_value == Py_None)) {
+          PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
+          __PYX_ERR(21, 31, __pyx_L4_error)
+        }
+        __pyx_t_2 = __Pyx_PyBytes_GET_SIZE(__pyx_v_value); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(21, 31, __pyx_L4_error)
+        __pyx_v_length = __pyx_t_2;
+      }
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":29
+ *   cdef const char *value_ptr
+ *   cdef size_t length
+ *   with gil:             # <<<<<<<<<<<<<<
+ *     value_ptr = <const char *>value
+ *     length = len(value)
+ */
+      /*finally:*/ {
+        /*normal exit:*/{
+          #ifdef WITH_THREAD
+          __Pyx_PyGILState_Release(__pyx_gilstate_save);
+          #endif
+          goto __pyx_L5;
+        }
+        __pyx_L4_error: {
+          #ifdef WITH_THREAD
+          __Pyx_PyGILState_Release(__pyx_gilstate_save);
+          #endif
+          goto __pyx_L1_error;
+        }
+        __pyx_L5:;
+      }
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":32
+ *     value_ptr = <const char *>value
+ *     length = len(value)
+ *   return grpc_slice_from_copied_buffer(value_ptr, length)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_r = grpc_slice_from_copied_buffer(__pyx_v_value_ptr, __pyx_v_length);
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":26
+ *   return grpc_slice_from_copied_buffer(<const char *>start, length)
+ * 
+ * cdef grpc_slice _slice_from_bytes(bytes value) nogil:             # <<<<<<<<<<<<<<
+ *   cdef const char *value_ptr
+ *   cdef size_t length
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  #ifdef WITH_THREAD
+  __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
+  #endif
+  __Pyx_AddTraceback("_cython.cygrpc._slice_from_bytes", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_pretend_to_initialize(&__pyx_r);
+  #ifdef WITH_THREAD
+  __Pyx_PyGILState_Release(__pyx_gilstate_save);
+  #endif
+  __pyx_L0:;
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":132
+ * cdef class CallDetails:
+ * 
+ *   def __cinit__(self):             # <<<<<<<<<<<<<<
+ *     fork_handlers_and_grpc_init()
+ *     with nogil:
+ */
+
+/* Python wrapper */
+static int __pyx_pw_7_cython_6cygrpc_11CallDetails_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_7_cython_6cygrpc_11CallDetails_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_7_cython_6cygrpc_11CallDetails___cinit__(((struct __pyx_obj_7_cython_6cygrpc_CallDetails *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_7_cython_6cygrpc_11CallDetails___cinit__(struct __pyx_obj_7_cython_6cygrpc_CallDetails *__pyx_v_self) {
+  int __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;
+  __Pyx_RefNannySetupContext("__cinit__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":133
+ * 
+ *   def __cinit__(self):
+ *     fork_handlers_and_grpc_init()             # <<<<<<<<<<<<<<
+ *     with nogil:
+ *       grpc_call_details_init(&self.c_details)
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_fork_handlers_and_grpc_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 133, __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, 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(21, 133, __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/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":134
+ *   def __cinit__(self):
+ *     fork_handlers_and_grpc_init()
+ *     with nogil:             # <<<<<<<<<<<<<<
+ *       grpc_call_details_init(&self.c_details)
+ * 
+ */
+  {
+      #ifdef WITH_THREAD
+      PyThreadState *_save;
+      _save = NULL;
+      Py_UNBLOCK_THREADS
+      __Pyx_FastGIL_Remember();
+      #endif
+      /*try:*/ {
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":135
+ *     fork_handlers_and_grpc_init()
+ *     with nogil:
+ *       grpc_call_details_init(&self.c_details)             # <<<<<<<<<<<<<<
+ * 
+ *   def __dealloc__(self):
+ */
+        grpc_call_details_init((&__pyx_v_self->c_details));
+      }
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":134
+ *   def __cinit__(self):
+ *     fork_handlers_and_grpc_init()
+ *     with nogil:             # <<<<<<<<<<<<<<
+ *       grpc_call_details_init(&self.c_details)
+ * 
+ */
+      /*finally:*/ {
+        /*normal exit:*/{
+          #ifdef WITH_THREAD
+          __Pyx_FastGIL_Forget();
+          Py_BLOCK_THREADS
+          #endif
+          goto __pyx_L5;
+        }
+        __pyx_L5:;
+      }
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":132
+ * cdef class CallDetails:
+ * 
+ *   def __cinit__(self):             # <<<<<<<<<<<<<<
+ *     fork_handlers_and_grpc_init()
+ *     with nogil:
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("_cython.cygrpc.CallDetails.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":137
+ *       grpc_call_details_init(&self.c_details)
+ * 
+ *   def __dealloc__(self):             # <<<<<<<<<<<<<<
+ *     with nogil:
+ *       grpc_call_details_destroy(&self.c_details)
+ */
+
+/* Python wrapper */
+static void __pyx_pw_7_cython_6cygrpc_11CallDetails_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
+static void __pyx_pw_7_cython_6cygrpc_11CallDetails_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_7_cython_6cygrpc_11CallDetails_2__dealloc__(((struct __pyx_obj_7_cython_6cygrpc_CallDetails *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+}
+
+static void __pyx_pf_7_cython_6cygrpc_11CallDetails_2__dealloc__(struct __pyx_obj_7_cython_6cygrpc_CallDetails *__pyx_v_self) {
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":138
+ * 
+ *   def __dealloc__(self):
+ *     with nogil:             # <<<<<<<<<<<<<<
+ *       grpc_call_details_destroy(&self.c_details)
+ *     grpc_shutdown()
+ */
+  {
+      #ifdef WITH_THREAD
+      PyThreadState *_save;
+      _save = NULL;
+      Py_UNBLOCK_THREADS
+      __Pyx_FastGIL_Remember();
+      #endif
+      /*try:*/ {
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":139
+ *   def __dealloc__(self):
+ *     with nogil:
+ *       grpc_call_details_destroy(&self.c_details)             # <<<<<<<<<<<<<<
+ *     grpc_shutdown()
+ * 
+ */
+        grpc_call_details_destroy((&__pyx_v_self->c_details));
+      }
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":138
+ * 
+ *   def __dealloc__(self):
+ *     with nogil:             # <<<<<<<<<<<<<<
+ *       grpc_call_details_destroy(&self.c_details)
+ *     grpc_shutdown()
+ */
+      /*finally:*/ {
+        /*normal exit:*/{
+          #ifdef WITH_THREAD
+          __Pyx_FastGIL_Forget();
+          Py_BLOCK_THREADS
+          #endif
+          goto __pyx_L5;
+        }
+        __pyx_L5:;
+      }
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":140
+ *     with nogil:
+ *       grpc_call_details_destroy(&self.c_details)
+ *     grpc_shutdown()             # <<<<<<<<<<<<<<
+ * 
+ *   @property
+ */
+  grpc_shutdown();
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":137
+ *       grpc_call_details_init(&self.c_details)
+ * 
+ *   def __dealloc__(self):             # <<<<<<<<<<<<<<
+ *     with nogil:
+ *       grpc_call_details_destroy(&self.c_details)
+ */
+
+  /* function exit code */
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":142
+ *     grpc_shutdown()
+ * 
+ *   @property             # <<<<<<<<<<<<<<
+ *   def method(self):
+ *     return _slice_bytes(self.c_details.method)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_11CallDetails_6method_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_11CallDetails_6method_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_7_cython_6cygrpc_11CallDetails_6method___get__(((struct __pyx_obj_7_cython_6cygrpc_CallDetails *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_11CallDetails_6method___get__(struct __pyx_obj_7_cython_6cygrpc_CallDetails *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":144
+ *   @property
+ *   def method(self):
+ *     return _slice_bytes(self.c_details.method)             # <<<<<<<<<<<<<<
+ * 
+ *   @property
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_7_cython_6cygrpc__slice_bytes(__pyx_v_self->c_details.method); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 144, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":142
+ *     grpc_shutdown()
+ * 
+ *   @property             # <<<<<<<<<<<<<<
+ *   def method(self):
+ *     return _slice_bytes(self.c_details.method)
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.CallDetails.method.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":146
+ *     return _slice_bytes(self.c_details.method)
+ * 
+ *   @property             # <<<<<<<<<<<<<<
+ *   def host(self):
+ *     return _slice_bytes(self.c_details.host)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_11CallDetails_4host_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_11CallDetails_4host_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_7_cython_6cygrpc_11CallDetails_4host___get__(((struct __pyx_obj_7_cython_6cygrpc_CallDetails *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_11CallDetails_4host___get__(struct __pyx_obj_7_cython_6cygrpc_CallDetails *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":148
+ *   @property
+ *   def host(self):
+ *     return _slice_bytes(self.c_details.host)             # <<<<<<<<<<<<<<
+ * 
+ *   @property
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_7_cython_6cygrpc__slice_bytes(__pyx_v_self->c_details.host); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 148, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":146
+ *     return _slice_bytes(self.c_details.method)
+ * 
+ *   @property             # <<<<<<<<<<<<<<
+ *   def host(self):
+ *     return _slice_bytes(self.c_details.host)
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.CallDetails.host.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":150
+ *     return _slice_bytes(self.c_details.host)
+ * 
+ *   @property             # <<<<<<<<<<<<<<
+ *   def deadline(self):
+ *     return _time_from_timespec(self.c_details.deadline)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_11CallDetails_8deadline_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_11CallDetails_8deadline_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_7_cython_6cygrpc_11CallDetails_8deadline___get__(((struct __pyx_obj_7_cython_6cygrpc_CallDetails *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_11CallDetails_8deadline___get__(struct __pyx_obj_7_cython_6cygrpc_CallDetails *__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/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":152
+ *   @property
+ *   def deadline(self):
+ *     return _time_from_timespec(self.c_details.deadline)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_7_cython_6cygrpc__time_from_timespec(__pyx_v_self->c_details.deadline); if (unlikely(__pyx_t_1 == ((double)-1) && PyErr_Occurred())) __PYX_ERR(21, 152, __pyx_L1_error)
+  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 152, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":150
+ *     return _slice_bytes(self.c_details.host)
+ * 
+ *   @property             # <<<<<<<<<<<<<<
+ *   def deadline(self):
+ *     return _time_from_timespec(self.c_details.deadline)
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("_cython.cygrpc.CallDetails.deadline.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "(tree fragment)":1
+ * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
+ *     raise TypeError, "no default __reduce__ due to non-trivial __cinit__"
+ * def __setstate_cython__(self, __pyx_state):
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_11CallDetails_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_11CallDetails_5__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_11CallDetails_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_11CallDetails_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_7_cython_6cygrpc_11CallDetails_4__reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc_CallDetails *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_11CallDetails_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_CallDetails *__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(10, 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("_cython.cygrpc.CallDetails.__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_7_cython_6cygrpc_11CallDetails_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_11CallDetails_7__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_11CallDetails_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_11CallDetails_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(10, 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(10, 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(10, 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("_cython.cygrpc.CallDetails.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_11CallDetails_6__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc_CallDetails *)__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_7_cython_6cygrpc_11CallDetails_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_CallDetails *__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(10, 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("_cython.cygrpc.CallDetails.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":157
+ * cdef class SslPemKeyCertPair:
+ * 
+ *   def __cinit__(self, bytes private_key, bytes certificate_chain):             # <<<<<<<<<<<<<<
+ *     self.private_key = private_key
+ *     self.certificate_chain = certificate_chain
+ */
+
+/* Python wrapper */
+static int __pyx_pw_7_cython_6cygrpc_17SslPemKeyCertPair_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_7_cython_6cygrpc_17SslPemKeyCertPair_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_private_key = 0;
+  PyObject *__pyx_v_certificate_chain = 0;
+  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject* values[2] = {0,0};
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  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);
+  {
+    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_private_key,&__pyx_n_s_certificate_chain,0};
+    if (__pyx_kwds) {
+      Py_ssize_t kw_args;
+      switch (__pyx_nargs) {
+        case  2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
+      switch (__pyx_nargs) {
+        case  0:
+        if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_private_key)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 157, __pyx_L3_error)
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_certificate_chain)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 157, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, 1); __PYX_ERR(21, 157, __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, "__cinit__") < 0)) __PYX_ERR(21, 157, __pyx_L3_error)
+      }
+    } else if (unlikely(__pyx_nargs != 2)) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+      values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
+    }
+    __pyx_v_private_key = ((PyObject*)values[0]);
+    __pyx_v_certificate_chain = ((PyObject*)values[1]);
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, __pyx_nargs); __PYX_ERR(21, 157, __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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_AddTraceback("_cython.cygrpc.SslPemKeyCertPair.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_private_key), (&PyBytes_Type), 1, "private_key", 1))) __PYX_ERR(21, 157, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_certificate_chain), (&PyBytes_Type), 1, "certificate_chain", 1))) __PYX_ERR(21, 157, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_17SslPemKeyCertPair___cinit__(((struct __pyx_obj_7_cython_6cygrpc_SslPemKeyCertPair *)__pyx_v_self), __pyx_v_private_key, __pyx_v_certificate_chain);
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = -1;
+  __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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_7_cython_6cygrpc_17SslPemKeyCertPair___cinit__(struct __pyx_obj_7_cython_6cygrpc_SslPemKeyCertPair *__pyx_v_self, PyObject *__pyx_v_private_key, PyObject *__pyx_v_certificate_chain) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  char const *__pyx_t_1;
+  char const *__pyx_t_2;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__cinit__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":158
+ * 
+ *   def __cinit__(self, bytes private_key, bytes certificate_chain):
+ *     self.private_key = private_key             # <<<<<<<<<<<<<<
+ *     self.certificate_chain = certificate_chain
+ *     self.c_pair.private_key = self.private_key
+ */
+  __Pyx_INCREF(__pyx_v_private_key);
+  __Pyx_GIVEREF(__pyx_v_private_key);
+  __Pyx_GOTREF(__pyx_v_self->private_key);
+  __Pyx_DECREF(__pyx_v_self->private_key);
+  __pyx_v_self->private_key = __pyx_v_private_key;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":159
+ *   def __cinit__(self, bytes private_key, bytes certificate_chain):
+ *     self.private_key = private_key
+ *     self.certificate_chain = certificate_chain             # <<<<<<<<<<<<<<
+ *     self.c_pair.private_key = self.private_key
+ *     self.c_pair.certificate_chain = self.certificate_chain
+ */
+  __Pyx_INCREF(__pyx_v_certificate_chain);
+  __Pyx_GIVEREF(__pyx_v_certificate_chain);
+  __Pyx_GOTREF(__pyx_v_self->certificate_chain);
+  __Pyx_DECREF(__pyx_v_self->certificate_chain);
+  __pyx_v_self->certificate_chain = __pyx_v_certificate_chain;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":160
+ *     self.private_key = private_key
+ *     self.certificate_chain = certificate_chain
+ *     self.c_pair.private_key = self.private_key             # <<<<<<<<<<<<<<
+ *     self.c_pair.certificate_chain = self.certificate_chain
+ * 
+ */
+  __pyx_t_1 = __Pyx_PyObject_AsString(__pyx_v_self->private_key); if (unlikely((!__pyx_t_1) && PyErr_Occurred())) __PYX_ERR(21, 160, __pyx_L1_error)
+  __pyx_v_self->c_pair.private_key = __pyx_t_1;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":161
+ *     self.certificate_chain = certificate_chain
+ *     self.c_pair.private_key = self.private_key
+ *     self.c_pair.certificate_chain = self.certificate_chain             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_v_self->certificate_chain); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(21, 161, __pyx_L1_error)
+  __pyx_v_self->c_pair.cert_chain = __pyx_t_2;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":157
+ * cdef class SslPemKeyCertPair:
+ * 
+ *   def __cinit__(self, bytes private_key, bytes certificate_chain):             # <<<<<<<<<<<<<<
+ *     self.private_key = private_key
+ *     self.certificate_chain = certificate_chain
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc.SslPemKeyCertPair.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/records.pxd.pxi":29
+ * 
+ *   cdef grpc_ssl_pem_key_cert_pair c_pair
+ *   cdef readonly object private_key, certificate_chain             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_17SslPemKeyCertPair_11private_key_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_17SslPemKeyCertPair_11private_key_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_7_cython_6cygrpc_17SslPemKeyCertPair_11private_key___get__(((struct __pyx_obj_7_cython_6cygrpc_SslPemKeyCertPair *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_17SslPemKeyCertPair_11private_key___get__(struct __pyx_obj_7_cython_6cygrpc_SslPemKeyCertPair *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->private_key);
+  __pyx_r = __pyx_v_self->private_key;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_17SslPemKeyCertPair_17certificate_chain_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_17SslPemKeyCertPair_17certificate_chain_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_7_cython_6cygrpc_17SslPemKeyCertPair_17certificate_chain___get__(((struct __pyx_obj_7_cython_6cygrpc_SslPemKeyCertPair *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_17SslPemKeyCertPair_17certificate_chain___get__(struct __pyx_obj_7_cython_6cygrpc_SslPemKeyCertPair *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->certificate_chain);
+  __pyx_r = __pyx_v_self->certificate_chain;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __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_7_cython_6cygrpc_17SslPemKeyCertPair_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_17SslPemKeyCertPair_3__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_17SslPemKeyCertPair_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_17SslPemKeyCertPair_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_7_cython_6cygrpc_17SslPemKeyCertPair_2__reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc_SslPemKeyCertPair *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_17SslPemKeyCertPair_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_SslPemKeyCertPair *__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(10, 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("_cython.cygrpc.SslPemKeyCertPair.__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_7_cython_6cygrpc_17SslPemKeyCertPair_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_17SslPemKeyCertPair_5__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_17SslPemKeyCertPair_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_17SslPemKeyCertPair_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(10, 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(10, 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(10, 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("_cython.cygrpc.SslPemKeyCertPair.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_17SslPemKeyCertPair_4__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc_SslPemKeyCertPair *)__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_7_cython_6cygrpc_17SslPemKeyCertPair_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_SslPemKeyCertPair *__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(10, 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("_cython.cygrpc.SslPemKeyCertPair.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":166
+ * cdef class CompressionOptions:
+ * 
+ *   def __cinit__(self):             # <<<<<<<<<<<<<<
+ *     with nogil:
+ *       grpc_compression_options_init(&self.c_options)
+ */
+
+/* Python wrapper */
+static int __pyx_pw_7_cython_6cygrpc_18CompressionOptions_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_7_cython_6cygrpc_18CompressionOptions_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_7_cython_6cygrpc_18CompressionOptions___cinit__(((struct __pyx_obj_7_cython_6cygrpc_CompressionOptions *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_7_cython_6cygrpc_18CompressionOptions___cinit__(struct __pyx_obj_7_cython_6cygrpc_CompressionOptions *__pyx_v_self) {
+  int __pyx_r;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":167
+ * 
+ *   def __cinit__(self):
+ *     with nogil:             # <<<<<<<<<<<<<<
+ *       grpc_compression_options_init(&self.c_options)
+ * 
+ */
+  {
+      #ifdef WITH_THREAD
+      PyThreadState *_save;
+      _save = NULL;
+      Py_UNBLOCK_THREADS
+      __Pyx_FastGIL_Remember();
+      #endif
+      /*try:*/ {
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":168
+ *   def __cinit__(self):
+ *     with nogil:
+ *       grpc_compression_options_init(&self.c_options)             # <<<<<<<<<<<<<<
+ * 
+ *   def enable_algorithm(self, grpc_compression_algorithm algorithm):
+ */
+        grpc_compression_options_init((&__pyx_v_self->c_options));
+      }
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":167
+ * 
+ *   def __cinit__(self):
+ *     with nogil:             # <<<<<<<<<<<<<<
+ *       grpc_compression_options_init(&self.c_options)
+ * 
+ */
+      /*finally:*/ {
+        /*normal exit:*/{
+          #ifdef WITH_THREAD
+          __Pyx_FastGIL_Forget();
+          Py_BLOCK_THREADS
+          #endif
+          goto __pyx_L5;
+        }
+        __pyx_L5:;
+      }
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":166
+ * cdef class CompressionOptions:
+ * 
+ *   def __cinit__(self):             # <<<<<<<<<<<<<<
+ *     with nogil:
+ *       grpc_compression_options_init(&self.c_options)
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":170
+ *       grpc_compression_options_init(&self.c_options)
+ * 
+ *   def enable_algorithm(self, grpc_compression_algorithm algorithm):             # <<<<<<<<<<<<<<
+ *     with nogil:
+ *       grpc_compression_options_enable_algorithm(&self.c_options, algorithm)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_18CompressionOptions_3enable_algorithm(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_18CompressionOptions_3enable_algorithm = {"enable_algorithm", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_18CompressionOptions_3enable_algorithm, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_18CompressionOptions_3enable_algorithm(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+  grpc_compression_algorithm __pyx_v_algorithm;
+  #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("enable_algorithm (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_algorithm,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_algorithm)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 170, __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, "enable_algorithm") < 0)) __PYX_ERR(21, 170, __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_algorithm = ((grpc_compression_algorithm)__Pyx_PyInt_As_grpc_compression_algorithm(values[0])); if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 170, __pyx_L3_error)
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("enable_algorithm", 1, 1, 1, __pyx_nargs); __PYX_ERR(21, 170, __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("_cython.cygrpc.CompressionOptions.enable_algorithm", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_18CompressionOptions_2enable_algorithm(((struct __pyx_obj_7_cython_6cygrpc_CompressionOptions *)__pyx_v_self), __pyx_v_algorithm);
+
+  /* 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_7_cython_6cygrpc_18CompressionOptions_2enable_algorithm(struct __pyx_obj_7_cython_6cygrpc_CompressionOptions *__pyx_v_self, grpc_compression_algorithm __pyx_v_algorithm) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("enable_algorithm", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":171
+ * 
+ *   def enable_algorithm(self, grpc_compression_algorithm algorithm):
+ *     with nogil:             # <<<<<<<<<<<<<<
+ *       grpc_compression_options_enable_algorithm(&self.c_options, algorithm)
+ * 
+ */
+  {
+      #ifdef WITH_THREAD
+      PyThreadState *_save;
+      _save = NULL;
+      Py_UNBLOCK_THREADS
+      __Pyx_FastGIL_Remember();
+      #endif
+      /*try:*/ {
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":172
+ *   def enable_algorithm(self, grpc_compression_algorithm algorithm):
+ *     with nogil:
+ *       grpc_compression_options_enable_algorithm(&self.c_options, algorithm)             # <<<<<<<<<<<<<<
+ * 
+ *   def disable_algorithm(self, grpc_compression_algorithm algorithm):
+ */
+        grpc_compression_options_enable_algorithm((&__pyx_v_self->c_options), __pyx_v_algorithm);
+      }
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":171
+ * 
+ *   def enable_algorithm(self, grpc_compression_algorithm algorithm):
+ *     with nogil:             # <<<<<<<<<<<<<<
+ *       grpc_compression_options_enable_algorithm(&self.c_options, algorithm)
+ * 
+ */
+      /*finally:*/ {
+        /*normal exit:*/{
+          #ifdef WITH_THREAD
+          __Pyx_FastGIL_Forget();
+          Py_BLOCK_THREADS
+          #endif
+          goto __pyx_L5;
+        }
+        __pyx_L5:;
+      }
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":170
+ *       grpc_compression_options_init(&self.c_options)
+ * 
+ *   def enable_algorithm(self, grpc_compression_algorithm algorithm):             # <<<<<<<<<<<<<<
+ *     with nogil:
+ *       grpc_compression_options_enable_algorithm(&self.c_options, algorithm)
+ */
+
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":174
+ *       grpc_compression_options_enable_algorithm(&self.c_options, algorithm)
+ * 
+ *   def disable_algorithm(self, grpc_compression_algorithm algorithm):             # <<<<<<<<<<<<<<
+ *     with nogil:
+ *       grpc_compression_options_disable_algorithm(&self.c_options, algorithm)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_18CompressionOptions_5disable_algorithm(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_18CompressionOptions_5disable_algorithm = {"disable_algorithm", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_18CompressionOptions_5disable_algorithm, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_18CompressionOptions_5disable_algorithm(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+  grpc_compression_algorithm __pyx_v_algorithm;
+  #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("disable_algorithm (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_algorithm,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_algorithm)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 174, __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, "disable_algorithm") < 0)) __PYX_ERR(21, 174, __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_algorithm = ((grpc_compression_algorithm)__Pyx_PyInt_As_grpc_compression_algorithm(values[0])); if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 174, __pyx_L3_error)
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("disable_algorithm", 1, 1, 1, __pyx_nargs); __PYX_ERR(21, 174, __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("_cython.cygrpc.CompressionOptions.disable_algorithm", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_18CompressionOptions_4disable_algorithm(((struct __pyx_obj_7_cython_6cygrpc_CompressionOptions *)__pyx_v_self), __pyx_v_algorithm);
+
+  /* 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_7_cython_6cygrpc_18CompressionOptions_4disable_algorithm(struct __pyx_obj_7_cython_6cygrpc_CompressionOptions *__pyx_v_self, grpc_compression_algorithm __pyx_v_algorithm) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("disable_algorithm", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":175
+ * 
+ *   def disable_algorithm(self, grpc_compression_algorithm algorithm):
+ *     with nogil:             # <<<<<<<<<<<<<<
+ *       grpc_compression_options_disable_algorithm(&self.c_options, algorithm)
+ * 
+ */
+  {
+      #ifdef WITH_THREAD
+      PyThreadState *_save;
+      _save = NULL;
+      Py_UNBLOCK_THREADS
+      __Pyx_FastGIL_Remember();
+      #endif
+      /*try:*/ {
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":176
+ *   def disable_algorithm(self, grpc_compression_algorithm algorithm):
+ *     with nogil:
+ *       grpc_compression_options_disable_algorithm(&self.c_options, algorithm)             # <<<<<<<<<<<<<<
+ * 
+ *   def is_algorithm_enabled(self, grpc_compression_algorithm algorithm):
+ */
+        grpc_compression_options_disable_algorithm((&__pyx_v_self->c_options), __pyx_v_algorithm);
+      }
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":175
+ * 
+ *   def disable_algorithm(self, grpc_compression_algorithm algorithm):
+ *     with nogil:             # <<<<<<<<<<<<<<
+ *       grpc_compression_options_disable_algorithm(&self.c_options, algorithm)
+ * 
+ */
+      /*finally:*/ {
+        /*normal exit:*/{
+          #ifdef WITH_THREAD
+          __Pyx_FastGIL_Forget();
+          Py_BLOCK_THREADS
+          #endif
+          goto __pyx_L5;
+        }
+        __pyx_L5:;
+      }
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":174
+ *       grpc_compression_options_enable_algorithm(&self.c_options, algorithm)
+ * 
+ *   def disable_algorithm(self, grpc_compression_algorithm algorithm):             # <<<<<<<<<<<<<<
+ *     with nogil:
+ *       grpc_compression_options_disable_algorithm(&self.c_options, algorithm)
+ */
+
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":178
+ *       grpc_compression_options_disable_algorithm(&self.c_options, algorithm)
+ * 
+ *   def is_algorithm_enabled(self, grpc_compression_algorithm algorithm):             # <<<<<<<<<<<<<<
+ *     cdef int result
+ *     with nogil:
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_18CompressionOptions_7is_algorithm_enabled(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_18CompressionOptions_7is_algorithm_enabled = {"is_algorithm_enabled", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_18CompressionOptions_7is_algorithm_enabled, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_18CompressionOptions_7is_algorithm_enabled(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+  grpc_compression_algorithm __pyx_v_algorithm;
+  #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("is_algorithm_enabled (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_algorithm,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_algorithm)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 178, __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, "is_algorithm_enabled") < 0)) __PYX_ERR(21, 178, __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_algorithm = ((grpc_compression_algorithm)__Pyx_PyInt_As_grpc_compression_algorithm(values[0])); if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 178, __pyx_L3_error)
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("is_algorithm_enabled", 1, 1, 1, __pyx_nargs); __PYX_ERR(21, 178, __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("_cython.cygrpc.CompressionOptions.is_algorithm_enabled", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_18CompressionOptions_6is_algorithm_enabled(((struct __pyx_obj_7_cython_6cygrpc_CompressionOptions *)__pyx_v_self), __pyx_v_algorithm);
+
+  /* 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_7_cython_6cygrpc_18CompressionOptions_6is_algorithm_enabled(struct __pyx_obj_7_cython_6cygrpc_CompressionOptions *__pyx_v_self, grpc_compression_algorithm __pyx_v_algorithm) {
+  int __pyx_v_result;
+  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("is_algorithm_enabled", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":180
+ *   def is_algorithm_enabled(self, grpc_compression_algorithm algorithm):
+ *     cdef int result
+ *     with nogil:             # <<<<<<<<<<<<<<
+ *       result = grpc_compression_options_is_algorithm_enabled(
+ *           &self.c_options, algorithm)
+ */
+  {
+      #ifdef WITH_THREAD
+      PyThreadState *_save;
+      _save = NULL;
+      Py_UNBLOCK_THREADS
+      __Pyx_FastGIL_Remember();
+      #endif
+      /*try:*/ {
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":181
+ *     cdef int result
+ *     with nogil:
+ *       result = grpc_compression_options_is_algorithm_enabled(             # <<<<<<<<<<<<<<
+ *           &self.c_options, algorithm)
+ *     return result
+ */
+        __pyx_v_result = grpc_compression_options_is_algorithm_enabled((&__pyx_v_self->c_options), __pyx_v_algorithm);
+      }
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":180
+ *   def is_algorithm_enabled(self, grpc_compression_algorithm algorithm):
+ *     cdef int result
+ *     with nogil:             # <<<<<<<<<<<<<<
+ *       result = grpc_compression_options_is_algorithm_enabled(
+ *           &self.c_options, algorithm)
+ */
+      /*finally:*/ {
+        /*normal exit:*/{
+          #ifdef WITH_THREAD
+          __Pyx_FastGIL_Forget();
+          Py_BLOCK_THREADS
+          #endif
+          goto __pyx_L5;
+        }
+        __pyx_L5:;
+      }
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":183
+ *       result = grpc_compression_options_is_algorithm_enabled(
+ *           &self.c_options, algorithm)
+ *     return result             # <<<<<<<<<<<<<<
+ * 
+ *   def to_channel_arg(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_result); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 183, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":178
+ *       grpc_compression_options_disable_algorithm(&self.c_options, algorithm)
+ * 
+ *   def is_algorithm_enabled(self, grpc_compression_algorithm algorithm):             # <<<<<<<<<<<<<<
+ *     cdef int result
+ *     with nogil:
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.CompressionOptions.is_algorithm_enabled", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":185
+ *     return result
+ * 
+ *   def to_channel_arg(self):             # <<<<<<<<<<<<<<
+ *     return (
+ *         GRPC_COMPRESSION_CHANNEL_ENABLED_ALGORITHMS_BITSET,
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_18CompressionOptions_9to_channel_arg(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_18CompressionOptions_9to_channel_arg = {"to_channel_arg", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_18CompressionOptions_9to_channel_arg, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_18CompressionOptions_9to_channel_arg(PyObject *__pyx_v_self, 
+#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("to_channel_arg (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("to_channel_arg", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "to_channel_arg", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_18CompressionOptions_8to_channel_arg(((struct __pyx_obj_7_cython_6cygrpc_CompressionOptions *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_18CompressionOptions_8to_channel_arg(struct __pyx_obj_7_cython_6cygrpc_CompressionOptions *__pyx_v_self) {
+  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("to_channel_arg", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":186
+ * 
+ *   def to_channel_arg(self):
+ *     return (             # <<<<<<<<<<<<<<
+ *         GRPC_COMPRESSION_CHANNEL_ENABLED_ALGORITHMS_BITSET,
+ *         self.c_options.enabled_algorithms_bitset,
+ */
+  __Pyx_XDECREF(__pyx_r);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":187
+ *   def to_channel_arg(self):
+ *     return (
+ *         GRPC_COMPRESSION_CHANNEL_ENABLED_ALGORITHMS_BITSET,             # <<<<<<<<<<<<<<
+ *         self.c_options.enabled_algorithms_bitset,
+ *     )
+ */
+  __pyx_t_1 = __Pyx_PyBytes_FromString(GRPC_COMPRESSION_CHANNEL_ENABLED_ALGORITHMS_BITSET); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 187, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":188
+ *     return (
+ *         GRPC_COMPRESSION_CHANNEL_ENABLED_ALGORITHMS_BITSET,
+ *         self.c_options.enabled_algorithms_bitset,             # <<<<<<<<<<<<<<
+ *     )
+ * 
+ */
+  __pyx_t_2 = __Pyx_PyInt_From_unsigned_int(__pyx_v_self->c_options.enabled_algorithms_bitset); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 188, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":187
+ *   def to_channel_arg(self):
+ *     return (
+ *         GRPC_COMPRESSION_CHANNEL_ENABLED_ALGORITHMS_BITSET,             # <<<<<<<<<<<<<<
+ *         self.c_options.enabled_algorithms_bitset,
+ *     )
+ */
+  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 187, __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(21, 187, __pyx_L1_error);
+  __Pyx_GIVEREF(__pyx_t_2);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2)) __PYX_ERR(21, 187, __pyx_L1_error);
+  __pyx_t_1 = 0;
+  __pyx_t_2 = 0;
+  __pyx_r = __pyx_t_3;
+  __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":185
+ *     return result
+ * 
+ *   def to_channel_arg(self):             # <<<<<<<<<<<<<<
+ *     return (
+ *         GRPC_COMPRESSION_CHANNEL_ENABLED_ALGORITHMS_BITSET,
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("_cython.cygrpc.CompressionOptions.to_channel_arg", __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, "no default __reduce__ due to non-trivial __cinit__"
+ * def __setstate_cython__(self, __pyx_state):
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_18CompressionOptions_11__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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_18CompressionOptions_11__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_18CompressionOptions_11__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_18CompressionOptions_11__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_7_cython_6cygrpc_18CompressionOptions_10__reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc_CompressionOptions *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_18CompressionOptions_10__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_CompressionOptions *__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(10, 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("_cython.cygrpc.CompressionOptions.__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_7_cython_6cygrpc_18CompressionOptions_13__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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_18CompressionOptions_13__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_18CompressionOptions_13__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_18CompressionOptions_13__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(10, 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(10, 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(10, 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("_cython.cygrpc.CompressionOptions.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_18CompressionOptions_12__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc_CompressionOptions *)__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_7_cython_6cygrpc_18CompressionOptions_12__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_CompressionOptions *__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(10, 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("_cython.cygrpc.CompressionOptions.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":192
+ * 
+ * 
+ * def compression_algorithm_name(grpc_compression_algorithm algorithm):             # <<<<<<<<<<<<<<
+ *   cdef const char* name
+ *   with nogil:
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_45compression_algorithm_name(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_45compression_algorithm_name = {"compression_algorithm_name", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_45compression_algorithm_name, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_45compression_algorithm_name(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
+) {
+  grpc_compression_algorithm __pyx_v_algorithm;
+  #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("compression_algorithm_name (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_algorithm,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_algorithm)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 192, __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, "compression_algorithm_name") < 0)) __PYX_ERR(21, 192, __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_algorithm = ((grpc_compression_algorithm)__Pyx_PyInt_As_grpc_compression_algorithm(values[0])); if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 192, __pyx_L3_error)
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("compression_algorithm_name", 1, 1, 1, __pyx_nargs); __PYX_ERR(21, 192, __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("_cython.cygrpc.compression_algorithm_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_44compression_algorithm_name(__pyx_self, __pyx_v_algorithm);
+
+  /* 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_7_cython_6cygrpc_44compression_algorithm_name(CYTHON_UNUSED PyObject *__pyx_self, grpc_compression_algorithm __pyx_v_algorithm) {
+  char const *__pyx_v_name;
+  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("compression_algorithm_name", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":194
+ * def compression_algorithm_name(grpc_compression_algorithm algorithm):
+ *   cdef const char* name
+ *   with nogil:             # <<<<<<<<<<<<<<
+ *     grpc_compression_algorithm_name(algorithm, &name)
+ *   # Let Cython do the right thing with string casting
+ */
+  {
+      #ifdef WITH_THREAD
+      PyThreadState *_save;
+      _save = NULL;
+      Py_UNBLOCK_THREADS
+      __Pyx_FastGIL_Remember();
+      #endif
+      /*try:*/ {
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":195
+ *   cdef const char* name
+ *   with nogil:
+ *     grpc_compression_algorithm_name(algorithm, &name)             # <<<<<<<<<<<<<<
+ *   # Let Cython do the right thing with string casting
+ *   return name
+ */
+        (void)(grpc_compression_algorithm_name(__pyx_v_algorithm, (&__pyx_v_name)));
+      }
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":194
+ * def compression_algorithm_name(grpc_compression_algorithm algorithm):
+ *   cdef const char* name
+ *   with nogil:             # <<<<<<<<<<<<<<
+ *     grpc_compression_algorithm_name(algorithm, &name)
+ *   # Let Cython do the right thing with string casting
+ */
+      /*finally:*/ {
+        /*normal exit:*/{
+          #ifdef WITH_THREAD
+          __Pyx_FastGIL_Forget();
+          Py_BLOCK_THREADS
+          #endif
+          goto __pyx_L5;
+        }
+        __pyx_L5:;
+      }
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":197
+ *     grpc_compression_algorithm_name(algorithm, &name)
+ *   # Let Cython do the right thing with string casting
+ *   return name             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 197, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":192
+ * 
+ * 
+ * def compression_algorithm_name(grpc_compression_algorithm algorithm):             # <<<<<<<<<<<<<<
+ *   cdef const char* name
+ *   with nogil:
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.compression_algorithm_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":200
+ * 
+ * 
+ * def reset_grpc_config_vars():             # <<<<<<<<<<<<<<
+ *   ConfigVars.Reset()
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_47reset_grpc_config_vars(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_47reset_grpc_config_vars = {"reset_grpc_config_vars", (PyCFunction)__pyx_pw_7_cython_6cygrpc_47reset_grpc_config_vars, METH_NOARGS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_47reset_grpc_config_vars(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("reset_grpc_config_vars (wrapper)", 0);
+  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_46reset_grpc_config_vars(__pyx_self);
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_46reset_grpc_config_vars(CYTHON_UNUSED PyObject *__pyx_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("reset_grpc_config_vars", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":201
+ * 
+ * def reset_grpc_config_vars():
+ *   ConfigVars.Reset()             # <<<<<<<<<<<<<<
+ */
+  grpc_core::ConfigVars::Reset();
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":200
+ * 
+ * 
+ * def reset_grpc_config_vars():             # <<<<<<<<<<<<<<
+ *   ConfigVars.Reset()
+ */
+
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":20
+ * 
+ * 
+ * cdef grpc_ssl_roots_override_result ssl_roots_override_callback(             # <<<<<<<<<<<<<<
+ *     char **pem_root_certs) nogil:
+ *   with gil:
+ */
+
+static grpc_ssl_roots_override_result __pyx_f_7_cython_6cygrpc_ssl_roots_override_callback(char **__pyx_v_pem_root_certs) {
+  PyObject *__pyx_v_pkg = NULL;
+  PyObject *__pyx_v_temporary_pem_root_certs = NULL;
+  grpc_ssl_roots_override_result __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_t_5;
+  Py_ssize_t __pyx_t_6;
+  char *__pyx_t_7;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  #ifdef WITH_THREAD
+  PyGILState_STATE __pyx_gilstate_save;
+  #endif
+  __Pyx_RefNannySetupContext("ssl_roots_override_callback", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":22
+ * cdef grpc_ssl_roots_override_result ssl_roots_override_callback(
+ *     char **pem_root_certs) nogil:
+ *   with gil:             # <<<<<<<<<<<<<<
+ *     pkg = __name__
+ *     if pkg.endswith('.cygrpc'):
+ */
+  {
+      #ifdef WITH_THREAD
+      PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
+      #endif
+      /*try:*/ {
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":23
+ *     char **pem_root_certs) nogil:
+ *   with gil:
+ *     pkg = __name__             # <<<<<<<<<<<<<<
+ *     if pkg.endswith('.cygrpc'):
+ *       pkg = pkg[:-len('.cygrpc')]
+ */
+        __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 23, __pyx_L4_error)
+        __Pyx_GOTREF(__pyx_t_1);
+        __pyx_v_pkg = __pyx_t_1;
+        __pyx_t_1 = 0;
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":24
+ *   with gil:
+ *     pkg = __name__
+ *     if pkg.endswith('.cygrpc'):             # <<<<<<<<<<<<<<
+ *       pkg = pkg[:-len('.cygrpc')]
+ *     temporary_pem_root_certs = pkgutil.get_data(pkg, '_credentials/roots.pem')
+ */
+        __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_pkg, __pyx_n_s_endswith); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 24, __pyx_L4_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_kp_s_cygrpc};
+          __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(22, 24, __pyx_L4_error)
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        }
+        __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(22, 24, __pyx_L4_error)
+        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+        if (__pyx_t_5) {
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":25
+ *     pkg = __name__
+ *     if pkg.endswith('.cygrpc'):
+ *       pkg = pkg[:-len('.cygrpc')]             # <<<<<<<<<<<<<<
+ *     temporary_pem_root_certs = pkgutil.get_data(pkg, '_credentials/roots.pem')
+ *     pem_root_certs[0] = <char *>gpr_malloc(len(temporary_pem_root_certs) + 1)
+ */
+          __pyx_t_6 = PyObject_Length(__pyx_kp_s_cygrpc); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(22, 25, __pyx_L4_error)
+          __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_v_pkg, 0, (-__pyx_t_6), NULL, NULL, NULL, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 25, __pyx_L4_error)
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_DECREF_SET(__pyx_v_pkg, __pyx_t_1);
+          __pyx_t_1 = 0;
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":24
+ *   with gil:
+ *     pkg = __name__
+ *     if pkg.endswith('.cygrpc'):             # <<<<<<<<<<<<<<
+ *       pkg = pkg[:-len('.cygrpc')]
+ *     temporary_pem_root_certs = pkgutil.get_data(pkg, '_credentials/roots.pem')
+ */
+        }
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":26
+ *     if pkg.endswith('.cygrpc'):
+ *       pkg = pkg[:-len('.cygrpc')]
+ *     temporary_pem_root_certs = pkgutil.get_data(pkg, '_credentials/roots.pem')             # <<<<<<<<<<<<<<
+ *     pem_root_certs[0] = <char *>gpr_malloc(len(temporary_pem_root_certs) + 1)
+ *     memcpy(
+ */
+        __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pkgutil); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 26, __pyx_L4_error)
+        __Pyx_GOTREF(__pyx_t_2);
+        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_get_data); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 26, __pyx_L4_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[3] = {__pyx_t_2, __pyx_v_pkg, __pyx_kp_s_credentials_roots_pem};
+          __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 2+__pyx_t_4);
+          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 26, __pyx_L4_error)
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        }
+        __pyx_v_temporary_pem_root_certs = __pyx_t_1;
+        __pyx_t_1 = 0;
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":27
+ *       pkg = pkg[:-len('.cygrpc')]
+ *     temporary_pem_root_certs = pkgutil.get_data(pkg, '_credentials/roots.pem')
+ *     pem_root_certs[0] = <char *>gpr_malloc(len(temporary_pem_root_certs) + 1)             # <<<<<<<<<<<<<<
+ *     memcpy(
+ *         pem_root_certs[0], <char *>temporary_pem_root_certs,
+ */
+        __pyx_t_6 = PyObject_Length(__pyx_v_temporary_pem_root_certs); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(22, 27, __pyx_L4_error)
+        (__pyx_v_pem_root_certs[0]) = ((char *)gpr_malloc((__pyx_t_6 + 1)));
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":29
+ *     pem_root_certs[0] = <char *>gpr_malloc(len(temporary_pem_root_certs) + 1)
+ *     memcpy(
+ *         pem_root_certs[0], <char *>temporary_pem_root_certs,             # <<<<<<<<<<<<<<
+ *         len(temporary_pem_root_certs))
+ *     pem_root_certs[0][len(temporary_pem_root_certs)] = '\0'
+ */
+        __pyx_t_7 = __Pyx_PyObject_AsWritableString(__pyx_v_temporary_pem_root_certs); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(22, 29, __pyx_L4_error)
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":30
+ *     memcpy(
+ *         pem_root_certs[0], <char *>temporary_pem_root_certs,
+ *         len(temporary_pem_root_certs))             # <<<<<<<<<<<<<<
+ *     pem_root_certs[0][len(temporary_pem_root_certs)] = '\0'
+ * 
+ */
+        __pyx_t_6 = PyObject_Length(__pyx_v_temporary_pem_root_certs); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(22, 30, __pyx_L4_error)
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":28
+ *     temporary_pem_root_certs = pkgutil.get_data(pkg, '_credentials/roots.pem')
+ *     pem_root_certs[0] = <char *>gpr_malloc(len(temporary_pem_root_certs) + 1)
+ *     memcpy(             # <<<<<<<<<<<<<<
+ *         pem_root_certs[0], <char *>temporary_pem_root_certs,
+ *         len(temporary_pem_root_certs))
+ */
+        (void)(memcpy((__pyx_v_pem_root_certs[0]), ((char *)__pyx_t_7), __pyx_t_6));
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":31
+ *         pem_root_certs[0], <char *>temporary_pem_root_certs,
+ *         len(temporary_pem_root_certs))
+ *     pem_root_certs[0][len(temporary_pem_root_certs)] = '\0'             # <<<<<<<<<<<<<<
+ * 
+ *   return GRPC_SSL_ROOTS_OVERRIDE_OK
+ */
+        __pyx_t_6 = PyObject_Length(__pyx_v_temporary_pem_root_certs); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(22, 31, __pyx_L4_error)
+        ((__pyx_v_pem_root_certs[0])[__pyx_t_6]) = '\x00';
+      }
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":22
+ * cdef grpc_ssl_roots_override_result ssl_roots_override_callback(
+ *     char **pem_root_certs) nogil:
+ *   with gil:             # <<<<<<<<<<<<<<
+ *     pkg = __name__
+ *     if pkg.endswith('.cygrpc'):
+ */
+      /*finally:*/ {
+        /*normal exit:*/{
+          #ifdef WITH_THREAD
+          __Pyx_PyGILState_Release(__pyx_gilstate_save);
+          #endif
+          goto __pyx_L5;
+        }
+        __pyx_L4_error: {
+          #ifdef WITH_THREAD
+          __Pyx_PyGILState_Release(__pyx_gilstate_save);
+          #endif
+          goto __pyx_L1_error;
+        }
+        __pyx_L5:;
+      }
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":33
+ *     pem_root_certs[0][len(temporary_pem_root_certs)] = '\0'
+ * 
+ *   return GRPC_SSL_ROOTS_OVERRIDE_OK             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_r = GRPC_SSL_ROOTS_OVERRIDE_OK;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":20
+ * 
+ * 
+ * cdef grpc_ssl_roots_override_result ssl_roots_override_callback(             # <<<<<<<<<<<<<<
+ *     char **pem_root_certs) nogil:
+ *   with gil:
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  #ifdef WITH_THREAD
+  __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
+  #endif
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("_cython.cygrpc.ssl_roots_override_callback", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = (grpc_ssl_roots_override_result) 0;
+  #ifdef WITH_THREAD
+  __Pyx_PyGILState_Release(__pyx_gilstate_save);
+  #endif
+  __pyx_L0:;
+  #ifdef WITH_THREAD
+  __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
+  #endif
+  __Pyx_XDECREF(__pyx_v_pkg);
+  __Pyx_XDECREF(__pyx_v_temporary_pem_root_certs);
+  __Pyx_RefNannyFinishContext();
+  #ifdef WITH_THREAD
+  __Pyx_PyGILState_Release(__pyx_gilstate_save);
+  #endif
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":36
+ * 
+ * 
+ * def peer_identities(Call call):             # <<<<<<<<<<<<<<
+ *   cdef grpc_auth_context* auth_context
+ *   cdef grpc_auth_property_iterator properties
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_49peer_identities(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_49peer_identities = {"peer_identities", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_49peer_identities, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_49peer_identities(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
+) {
+  struct __pyx_obj_7_cython_6cygrpc_Call *__pyx_v_call = 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("peer_identities (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_call,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_call)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 36, __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, "peer_identities") < 0)) __PYX_ERR(22, 36, __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_call = ((struct __pyx_obj_7_cython_6cygrpc_Call *)values[0]);
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("peer_identities", 1, 1, 1, __pyx_nargs); __PYX_ERR(22, 36, __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("_cython.cygrpc.peer_identities", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_call), __pyx_ptype_7_cython_6cygrpc_Call, 1, "call", 0))) __PYX_ERR(22, 36, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_48peer_identities(__pyx_self, __pyx_v_call);
+
+  /* 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_7_cython_6cygrpc_48peer_identities(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7_cython_6cygrpc_Call *__pyx_v_call) {
+  grpc_auth_context *__pyx_v_auth_context;
+  grpc_auth_property_iterator __pyx_v_properties;
+  grpc_auth_property const *__pyx_v_property;
+  PyObject *__pyx_v_identities = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_t_3;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("peer_identities", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":41
+ *   cdef const grpc_auth_property* property
+ * 
+ *   auth_context = grpc_call_auth_context(call.c_call)             # <<<<<<<<<<<<<<
+ *   if auth_context == NULL:
+ *     return None
+ */
+  __pyx_v_auth_context = grpc_call_auth_context(__pyx_v_call->c_call);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":42
+ * 
+ *   auth_context = grpc_call_auth_context(call.c_call)
+ *   if auth_context == NULL:             # <<<<<<<<<<<<<<
+ *     return None
+ *   properties = grpc_auth_context_peer_identity(auth_context)
+ */
+  __pyx_t_1 = (__pyx_v_auth_context == NULL);
+  if (__pyx_t_1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":43
+ *   auth_context = grpc_call_auth_context(call.c_call)
+ *   if auth_context == NULL:
+ *     return None             # <<<<<<<<<<<<<<
+ *   properties = grpc_auth_context_peer_identity(auth_context)
+ *   identities = []
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":42
+ * 
+ *   auth_context = grpc_call_auth_context(call.c_call)
+ *   if auth_context == NULL:             # <<<<<<<<<<<<<<
+ *     return None
+ *   properties = grpc_auth_context_peer_identity(auth_context)
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":44
+ *   if auth_context == NULL:
+ *     return None
+ *   properties = grpc_auth_context_peer_identity(auth_context)             # <<<<<<<<<<<<<<
+ *   identities = []
+ *   while True:
+ */
+  __pyx_v_properties = grpc_auth_context_peer_identity(__pyx_v_auth_context);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":45
+ *     return None
+ *   properties = grpc_auth_context_peer_identity(auth_context)
+ *   identities = []             # <<<<<<<<<<<<<<
+ *   while True:
+ *     property = grpc_auth_property_iterator_next(&properties)
+ */
+  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 45, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_v_identities = ((PyObject*)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":46
+ *   properties = grpc_auth_context_peer_identity(auth_context)
+ *   identities = []
+ *   while True:             # <<<<<<<<<<<<<<
+ *     property = grpc_auth_property_iterator_next(&properties)
+ *     if property == NULL:
+ */
+  while (1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":47
+ *   identities = []
+ *   while True:
+ *     property = grpc_auth_property_iterator_next(&properties)             # <<<<<<<<<<<<<<
+ *     if property == NULL:
+ *       break
+ */
+    __pyx_v_property = grpc_auth_property_iterator_next((&__pyx_v_properties));
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":48
+ *   while True:
+ *     property = grpc_auth_property_iterator_next(&properties)
+ *     if property == NULL:             # <<<<<<<<<<<<<<
+ *       break
+ *     if property.value != NULL:
+ */
+    __pyx_t_1 = (__pyx_v_property == NULL);
+    if (__pyx_t_1) {
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":49
+ *     property = grpc_auth_property_iterator_next(&properties)
+ *     if property == NULL:
+ *       break             # <<<<<<<<<<<<<<
+ *     if property.value != NULL:
+ *       identities.append(<bytes>(property.value))
+ */
+      goto __pyx_L5_break;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":48
+ *   while True:
+ *     property = grpc_auth_property_iterator_next(&properties)
+ *     if property == NULL:             # <<<<<<<<<<<<<<
+ *       break
+ *     if property.value != NULL:
+ */
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":50
+ *     if property == NULL:
+ *       break
+ *     if property.value != NULL:             # <<<<<<<<<<<<<<
+ *       identities.append(<bytes>(property.value))
+ *   grpc_auth_context_release(auth_context)
+ */
+    __pyx_t_1 = (__pyx_v_property->value != NULL);
+    if (__pyx_t_1) {
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":51
+ *       break
+ *     if property.value != NULL:
+ *       identities.append(<bytes>(property.value))             # <<<<<<<<<<<<<<
+ *   grpc_auth_context_release(auth_context)
+ *   return identities if identities else None
+ */
+      __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_property->value); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 51, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __pyx_t_3 = __Pyx_PyList_Append(__pyx_v_identities, __pyx_t_2); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(22, 51, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":50
+ *     if property == NULL:
+ *       break
+ *     if property.value != NULL:             # <<<<<<<<<<<<<<
+ *       identities.append(<bytes>(property.value))
+ *   grpc_auth_context_release(auth_context)
+ */
+    }
+  }
+  __pyx_L5_break:;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":52
+ *     if property.value != NULL:
+ *       identities.append(<bytes>(property.value))
+ *   grpc_auth_context_release(auth_context)             # <<<<<<<<<<<<<<
+ *   return identities if identities else None
+ * 
+ */
+  grpc_auth_context_release(__pyx_v_auth_context);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":53
+ *       identities.append(<bytes>(property.value))
+ *   grpc_auth_context_release(auth_context)
+ *   return identities if identities else None             # <<<<<<<<<<<<<<
+ * 
+ * def peer_identity_key(Call call):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = (PyList_GET_SIZE(__pyx_v_identities) != 0);
+  if (__pyx_t_1) {
+    __Pyx_INCREF(__pyx_v_identities);
+    __pyx_t_2 = __pyx_v_identities;
+  } else {
+    __Pyx_INCREF(Py_None);
+    __pyx_t_2 = Py_None;
+  }
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":36
+ * 
+ * 
+ * def peer_identities(Call call):             # <<<<<<<<<<<<<<
+ *   cdef grpc_auth_context* auth_context
+ *   cdef grpc_auth_property_iterator properties
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("_cython.cygrpc.peer_identities", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_identities);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":55
+ *   return identities if identities else None
+ * 
+ * def peer_identity_key(Call call):             # <<<<<<<<<<<<<<
+ *   cdef grpc_auth_context* auth_context
+ *   cdef const char* c_key
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_51peer_identity_key(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_51peer_identity_key = {"peer_identity_key", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_51peer_identity_key, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_51peer_identity_key(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
+) {
+  struct __pyx_obj_7_cython_6cygrpc_Call *__pyx_v_call = 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("peer_identity_key (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_call,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_call)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 55, __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, "peer_identity_key") < 0)) __PYX_ERR(22, 55, __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_call = ((struct __pyx_obj_7_cython_6cygrpc_Call *)values[0]);
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("peer_identity_key", 1, 1, 1, __pyx_nargs); __PYX_ERR(22, 55, __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("_cython.cygrpc.peer_identity_key", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_call), __pyx_ptype_7_cython_6cygrpc_Call, 1, "call", 0))) __PYX_ERR(22, 55, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_50peer_identity_key(__pyx_self, __pyx_v_call);
+
+  /* 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_7_cython_6cygrpc_50peer_identity_key(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7_cython_6cygrpc_Call *__pyx_v_call) {
+  grpc_auth_context *__pyx_v_auth_context;
+  char const *__pyx_v_c_key;
+  PyObject *__pyx_v_key = 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("peer_identity_key", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":58
+ *   cdef grpc_auth_context* auth_context
+ *   cdef const char* c_key
+ *   auth_context = grpc_call_auth_context(call.c_call)             # <<<<<<<<<<<<<<
+ *   if auth_context == NULL:
+ *     return None
+ */
+  __pyx_v_auth_context = grpc_call_auth_context(__pyx_v_call->c_call);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":59
+ *   cdef const char* c_key
+ *   auth_context = grpc_call_auth_context(call.c_call)
+ *   if auth_context == NULL:             # <<<<<<<<<<<<<<
+ *     return None
+ *   c_key = grpc_auth_context_peer_identity_property_name(auth_context)
+ */
+  __pyx_t_1 = (__pyx_v_auth_context == NULL);
+  if (__pyx_t_1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":60
+ *   auth_context = grpc_call_auth_context(call.c_call)
+ *   if auth_context == NULL:
+ *     return None             # <<<<<<<<<<<<<<
+ *   c_key = grpc_auth_context_peer_identity_property_name(auth_context)
+ *   if c_key == NULL:
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":59
+ *   cdef const char* c_key
+ *   auth_context = grpc_call_auth_context(call.c_call)
+ *   if auth_context == NULL:             # <<<<<<<<<<<<<<
+ *     return None
+ *   c_key = grpc_auth_context_peer_identity_property_name(auth_context)
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":61
+ *   if auth_context == NULL:
+ *     return None
+ *   c_key = grpc_auth_context_peer_identity_property_name(auth_context)             # <<<<<<<<<<<<<<
+ *   if c_key == NULL:
+ *     key = None
+ */
+  __pyx_v_c_key = grpc_auth_context_peer_identity_property_name(__pyx_v_auth_context);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":62
+ *     return None
+ *   c_key = grpc_auth_context_peer_identity_property_name(auth_context)
+ *   if c_key == NULL:             # <<<<<<<<<<<<<<
+ *     key = None
+ *   else:
+ */
+  __pyx_t_1 = (__pyx_v_c_key == NULL);
+  if (__pyx_t_1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":63
+ *   c_key = grpc_auth_context_peer_identity_property_name(auth_context)
+ *   if c_key == NULL:
+ *     key = None             # <<<<<<<<<<<<<<
+ *   else:
+ *     key = <bytes> grpc_auth_context_peer_identity_property_name(auth_context)
+ */
+    __Pyx_INCREF(Py_None);
+    __pyx_v_key = ((PyObject*)Py_None);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":62
+ *     return None
+ *   c_key = grpc_auth_context_peer_identity_property_name(auth_context)
+ *   if c_key == NULL:             # <<<<<<<<<<<<<<
+ *     key = None
+ *   else:
+ */
+    goto __pyx_L4;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":65
+ *     key = None
+ *   else:
+ *     key = <bytes> grpc_auth_context_peer_identity_property_name(auth_context)             # <<<<<<<<<<<<<<
+ *   grpc_auth_context_release(auth_context)
+ *   return key
+ */
+  /*else*/ {
+    __pyx_t_2 = __Pyx_PyBytes_FromString(grpc_auth_context_peer_identity_property_name(__pyx_v_auth_context)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 65, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = __pyx_t_2;
+    __Pyx_INCREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_v_key = ((PyObject*)__pyx_t_3);
+    __pyx_t_3 = 0;
+  }
+  __pyx_L4:;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":66
+ *   else:
+ *     key = <bytes> grpc_auth_context_peer_identity_property_name(auth_context)
+ *   grpc_auth_context_release(auth_context)             # <<<<<<<<<<<<<<
+ *   return key
+ * 
+ */
+  grpc_auth_context_release(__pyx_v_auth_context);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":67
+ *     key = <bytes> grpc_auth_context_peer_identity_property_name(auth_context)
+ *   grpc_auth_context_release(auth_context)
+ *   return key             # <<<<<<<<<<<<<<
+ * 
+ * def auth_context(Call call):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_key);
+  __pyx_r = __pyx_v_key;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":55
+ *   return identities if identities else None
+ * 
+ * def peer_identity_key(Call call):             # <<<<<<<<<<<<<<
+ *   cdef grpc_auth_context* auth_context
+ *   cdef const char* c_key
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("_cython.cygrpc.peer_identity_key", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_key);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":69
+ *   return key
+ * 
+ * def auth_context(Call call):             # <<<<<<<<<<<<<<
+ *   cdef grpc_auth_context* auth_context
+ *   cdef grpc_auth_property_iterator properties
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_53auth_context(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_53auth_context = {"auth_context", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_53auth_context, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_53auth_context(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
+) {
+  struct __pyx_obj_7_cython_6cygrpc_Call *__pyx_v_call = 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("auth_context (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_call,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_call)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 69, __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, "auth_context") < 0)) __PYX_ERR(22, 69, __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_call = ((struct __pyx_obj_7_cython_6cygrpc_Call *)values[0]);
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("auth_context", 1, 1, 1, __pyx_nargs); __PYX_ERR(22, 69, __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("_cython.cygrpc.auth_context", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_call), __pyx_ptype_7_cython_6cygrpc_Call, 1, "call", 0))) __PYX_ERR(22, 69, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_52auth_context(__pyx_self, __pyx_v_call);
+
+  /* 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_7_cython_6cygrpc_52auth_context(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7_cython_6cygrpc_Call *__pyx_v_call) {
+  grpc_auth_context *__pyx_v_auth_context;
+  grpc_auth_property_iterator __pyx_v_properties;
+  grpc_auth_property const *__pyx_v_property;
+  PyObject *__pyx_v_py_auth_context = NULL;
+  PyObject *__pyx_v_key = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_t_3;
+  PyObject *__pyx_t_4 = NULL;
+  int __pyx_t_5;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("auth_context", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":74
+ *   cdef const grpc_auth_property* property
+ * 
+ *   auth_context = grpc_call_auth_context(call.c_call)             # <<<<<<<<<<<<<<
+ *   if auth_context == NULL:
+ *     return {}
+ */
+  __pyx_v_auth_context = grpc_call_auth_context(__pyx_v_call->c_call);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":75
+ * 
+ *   auth_context = grpc_call_auth_context(call.c_call)
+ *   if auth_context == NULL:             # <<<<<<<<<<<<<<
+ *     return {}
+ *   properties = grpc_auth_context_property_iterator(auth_context)
+ */
+  __pyx_t_1 = (__pyx_v_auth_context == NULL);
+  if (__pyx_t_1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":76
+ *   auth_context = grpc_call_auth_context(call.c_call)
+ *   if auth_context == NULL:
+ *     return {}             # <<<<<<<<<<<<<<
+ *   properties = grpc_auth_context_property_iterator(auth_context)
+ *   py_auth_context = {}
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 76, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_r = __pyx_t_2;
+    __pyx_t_2 = 0;
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":75
+ * 
+ *   auth_context = grpc_call_auth_context(call.c_call)
+ *   if auth_context == NULL:             # <<<<<<<<<<<<<<
+ *     return {}
+ *   properties = grpc_auth_context_property_iterator(auth_context)
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":77
+ *   if auth_context == NULL:
+ *     return {}
+ *   properties = grpc_auth_context_property_iterator(auth_context)             # <<<<<<<<<<<<<<
+ *   py_auth_context = {}
+ *   while True:
+ */
+  __pyx_v_properties = grpc_auth_context_property_iterator(__pyx_v_auth_context);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":78
+ *     return {}
+ *   properties = grpc_auth_context_property_iterator(auth_context)
+ *   py_auth_context = {}             # <<<<<<<<<<<<<<
+ *   while True:
+ *     property = grpc_auth_property_iterator_next(&properties)
+ */
+  __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 78, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_v_py_auth_context = ((PyObject*)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":79
+ *   properties = grpc_auth_context_property_iterator(auth_context)
+ *   py_auth_context = {}
+ *   while True:             # <<<<<<<<<<<<<<
+ *     property = grpc_auth_property_iterator_next(&properties)
+ *     if property == NULL:
+ */
+  while (1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":80
+ *   py_auth_context = {}
+ *   while True:
+ *     property = grpc_auth_property_iterator_next(&properties)             # <<<<<<<<<<<<<<
+ *     if property == NULL:
+ *       break
+ */
+    __pyx_v_property = grpc_auth_property_iterator_next((&__pyx_v_properties));
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":81
+ *   while True:
+ *     property = grpc_auth_property_iterator_next(&properties)
+ *     if property == NULL:             # <<<<<<<<<<<<<<
+ *       break
+ *     if property.name != NULL and property.value != NULL:
+ */
+    __pyx_t_1 = (__pyx_v_property == NULL);
+    if (__pyx_t_1) {
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":82
+ *     property = grpc_auth_property_iterator_next(&properties)
+ *     if property == NULL:
+ *       break             # <<<<<<<<<<<<<<
+ *     if property.name != NULL and property.value != NULL:
+ *       key = <bytes> property.name
+ */
+      goto __pyx_L5_break;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":81
+ *   while True:
+ *     property = grpc_auth_property_iterator_next(&properties)
+ *     if property == NULL:             # <<<<<<<<<<<<<<
+ *       break
+ *     if property.name != NULL and property.value != NULL:
+ */
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":83
+ *     if property == NULL:
+ *       break
+ *     if property.name != NULL and property.value != NULL:             # <<<<<<<<<<<<<<
+ *       key = <bytes> property.name
+ *       if key in py_auth_context:
+ */
+    __pyx_t_3 = (__pyx_v_property->name != NULL);
+    if (__pyx_t_3) {
+    } else {
+      __pyx_t_1 = __pyx_t_3;
+      goto __pyx_L8_bool_binop_done;
+    }
+    __pyx_t_3 = (__pyx_v_property->value != NULL);
+    __pyx_t_1 = __pyx_t_3;
+    __pyx_L8_bool_binop_done:;
+    if (__pyx_t_1) {
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":84
+ *       break
+ *     if property.name != NULL and property.value != NULL:
+ *       key = <bytes> property.name             # <<<<<<<<<<<<<<
+ *       if key in py_auth_context:
+ *         py_auth_context[key].append(<bytes>(property.value))
+ */
+      __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_property->name); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 84, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __pyx_t_4 = __pyx_t_2;
+      __Pyx_INCREF(__pyx_t_4);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_XDECREF_SET(__pyx_v_key, ((PyObject*)__pyx_t_4));
+      __pyx_t_4 = 0;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":85
+ *     if property.name != NULL and property.value != NULL:
+ *       key = <bytes> property.name
+ *       if key in py_auth_context:             # <<<<<<<<<<<<<<
+ *         py_auth_context[key].append(<bytes>(property.value))
+ *       else:
+ */
+      __pyx_t_1 = (__Pyx_PyDict_ContainsTF(__pyx_v_key, __pyx_v_py_auth_context, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(22, 85, __pyx_L1_error)
+      if (__pyx_t_1) {
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":86
+ *       key = <bytes> property.name
+ *       if key in py_auth_context:
+ *         py_auth_context[key].append(<bytes>(property.value))             # <<<<<<<<<<<<<<
+ *       else:
+ *         py_auth_context[key] = [<bytes> property.value]
+ */
+        __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_py_auth_context, __pyx_v_key); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 86, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_4);
+        __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_property->value); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 86, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_2);
+        __pyx_t_5 = __Pyx_PyObject_Append(__pyx_t_4, __pyx_t_2); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(22, 86, __pyx_L1_error)
+        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":85
+ *     if property.name != NULL and property.value != NULL:
+ *       key = <bytes> property.name
+ *       if key in py_auth_context:             # <<<<<<<<<<<<<<
+ *         py_auth_context[key].append(<bytes>(property.value))
+ *       else:
+ */
+        goto __pyx_L10;
+      }
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":88
+ *         py_auth_context[key].append(<bytes>(property.value))
+ *       else:
+ *         py_auth_context[key] = [<bytes> property.value]             # <<<<<<<<<<<<<<
+ *   grpc_auth_context_release(auth_context)
+ *   return py_auth_context
+ */
+      /*else*/ {
+        __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_property->value); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 88, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_2);
+        __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 88, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_4);
+        __Pyx_INCREF(((PyObject*)__pyx_t_2));
+        __Pyx_GIVEREF(((PyObject*)__pyx_t_2));
+        if (__Pyx_PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_2)) __PYX_ERR(22, 88, __pyx_L1_error);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely((PyDict_SetItem(__pyx_v_py_auth_context, __pyx_v_key, __pyx_t_4) < 0))) __PYX_ERR(22, 88, __pyx_L1_error)
+        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      }
+      __pyx_L10:;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":83
+ *     if property == NULL:
+ *       break
+ *     if property.name != NULL and property.value != NULL:             # <<<<<<<<<<<<<<
+ *       key = <bytes> property.name
+ *       if key in py_auth_context:
+ */
+    }
+  }
+  __pyx_L5_break:;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":89
+ *       else:
+ *         py_auth_context[key] = [<bytes> property.value]
+ *   grpc_auth_context_release(auth_context)             # <<<<<<<<<<<<<<
+ *   return py_auth_context
+ * 
+ */
+  grpc_auth_context_release(__pyx_v_auth_context);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":90
+ *         py_auth_context[key] = [<bytes> property.value]
+ *   grpc_auth_context_release(auth_context)
+ *   return py_auth_context             # <<<<<<<<<<<<<<
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_py_auth_context);
+  __pyx_r = __pyx_v_py_auth_context;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":69
+ *   return key
+ * 
+ * def auth_context(Call call):             # <<<<<<<<<<<<<<
+ *   cdef grpc_auth_context* auth_context
+ *   cdef grpc_auth_property_iterator properties
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("_cython.cygrpc.auth_context", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_py_auth_context);
+  __Pyx_XDECREF(__pyx_v_key);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":18
+ * cdef class Server:
+ * 
+ *   def __cinit__(self, object arguments, bint xds):             # <<<<<<<<<<<<<<
+ *     fork_handlers_and_grpc_init()
+ *     self.references = []
+ */
+
+/* Python wrapper */
+static int __pyx_pw_7_cython_6cygrpc_6Server_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_7_cython_6cygrpc_6Server_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_arguments = 0;
+  int __pyx_v_xds;
+  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject* values[2] = {0,0};
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  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);
+  {
+    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_arguments,&__pyx_n_s_xds,0};
+    if (__pyx_kwds) {
+      Py_ssize_t kw_args;
+      switch (__pyx_nargs) {
+        case  2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
+      switch (__pyx_nargs) {
+        case  0:
+        if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_arguments)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 18, __pyx_L3_error)
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_xds)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 18, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, 1); __PYX_ERR(23, 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, "__cinit__") < 0)) __PYX_ERR(23, 18, __pyx_L3_error)
+      }
+    } else if (unlikely(__pyx_nargs != 2)) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+      values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
+    }
+    __pyx_v_arguments = values[0];
+    __pyx_v_xds = __Pyx_PyObject_IsTrue(values[1]); if (unlikely((__pyx_v_xds == (int)-1) && PyErr_Occurred())) __PYX_ERR(23, 18, __pyx_L3_error)
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, __pyx_nargs); __PYX_ERR(23, 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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_AddTraceback("_cython.cygrpc.Server.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_6Server___cinit__(((struct __pyx_obj_7_cython_6cygrpc_Server *)__pyx_v_self), __pyx_v_arguments, __pyx_v_xds);
+
+  /* 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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_7_cython_6cygrpc_6Server___cinit__(struct __pyx_obj_7_cython_6cygrpc_Server *__pyx_v_self, PyObject *__pyx_v_arguments, int __pyx_v_xds) {
+  struct __pyx_obj_7_cython_6cygrpc__ChannelArgs *__pyx_v_channel_args = 0;
+  grpc_server_xds_status_notifier __pyx_v_notifier;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  unsigned int __pyx_t_4;
+  grpc_channel_args *__pyx_t_5;
+  int __pyx_t_6;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__cinit__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":19
+ * 
+ *   def __cinit__(self, object arguments, bint xds):
+ *     fork_handlers_and_grpc_init()             # <<<<<<<<<<<<<<
+ *     self.references = []
+ *     self.registered_completion_queues = []
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_fork_handlers_and_grpc_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 19, __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, 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(23, 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/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":20
+ *   def __cinit__(self, object arguments, bint xds):
+ *     fork_handlers_and_grpc_init()
+ *     self.references = []             # <<<<<<<<<<<<<<
+ *     self.registered_completion_queues = []
+ *     self.is_started = False
+ */
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 20, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->references);
+  __Pyx_DECREF(__pyx_v_self->references);
+  __pyx_v_self->references = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":21
+ *     fork_handlers_and_grpc_init()
+ *     self.references = []
+ *     self.registered_completion_queues = []             # <<<<<<<<<<<<<<
+ *     self.is_started = False
+ *     self.is_shutting_down = False
+ */
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 21, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->registered_completion_queues);
+  __Pyx_DECREF(__pyx_v_self->registered_completion_queues);
+  __pyx_v_self->registered_completion_queues = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":22
+ *     self.references = []
+ *     self.registered_completion_queues = []
+ *     self.is_started = False             # <<<<<<<<<<<<<<
+ *     self.is_shutting_down = False
+ *     self.is_shutdown = False
+ */
+  __pyx_v_self->is_started = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":23
+ *     self.registered_completion_queues = []
+ *     self.is_started = False
+ *     self.is_shutting_down = False             # <<<<<<<<<<<<<<
+ *     self.is_shutdown = False
+ *     self.c_server = NULL
+ */
+  __pyx_v_self->is_shutting_down = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":24
+ *     self.is_started = False
+ *     self.is_shutting_down = False
+ *     self.is_shutdown = False             # <<<<<<<<<<<<<<
+ *     self.c_server = NULL
+ *     cdef _ChannelArgs channel_args = _ChannelArgs(arguments)
+ */
+  __pyx_v_self->is_shutdown = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":25
+ *     self.is_shutting_down = False
+ *     self.is_shutdown = False
+ *     self.c_server = NULL             # <<<<<<<<<<<<<<
+ *     cdef _ChannelArgs channel_args = _ChannelArgs(arguments)
+ *     self.c_server = grpc_server_create(channel_args.c_args(), NULL)
+ */
+  __pyx_v_self->c_server = NULL;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":26
+ *     self.is_shutdown = False
+ *     self.c_server = NULL
+ *     cdef _ChannelArgs channel_args = _ChannelArgs(arguments)             # <<<<<<<<<<<<<<
+ *     self.c_server = grpc_server_create(channel_args.c_args(), NULL)
+ *     cdef grpc_server_xds_status_notifier notifier
+ */
+  __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_7_cython_6cygrpc__ChannelArgs), __pyx_v_arguments); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 26, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_channel_args = ((struct __pyx_obj_7_cython_6cygrpc__ChannelArgs *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":27
+ *     self.c_server = NULL
+ *     cdef _ChannelArgs channel_args = _ChannelArgs(arguments)
+ *     self.c_server = grpc_server_create(channel_args.c_args(), NULL)             # <<<<<<<<<<<<<<
+ *     cdef grpc_server_xds_status_notifier notifier
+ *     notifier.on_serving_status_update = NULL
+ */
+  __pyx_t_5 = ((struct __pyx_vtabstruct_7_cython_6cygrpc__ChannelArgs *)__pyx_v_channel_args->__pyx_vtab)->c_args(__pyx_v_channel_args); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 27, __pyx_L1_error)
+  __pyx_v_self->c_server = grpc_server_create(__pyx_t_5, NULL);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":29
+ *     self.c_server = grpc_server_create(channel_args.c_args(), NULL)
+ *     cdef grpc_server_xds_status_notifier notifier
+ *     notifier.on_serving_status_update = NULL             # <<<<<<<<<<<<<<
+ *     notifier.user_data = NULL
+ *     if xds:
+ */
+  __pyx_v_notifier.on_serving_status_update = NULL;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":30
+ *     cdef grpc_server_xds_status_notifier notifier
+ *     notifier.on_serving_status_update = NULL
+ *     notifier.user_data = NULL             # <<<<<<<<<<<<<<
+ *     if xds:
+ *       grpc_server_set_config_fetcher(self.c_server,
+ */
+  __pyx_v_notifier.user_data = NULL;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":31
+ *     notifier.on_serving_status_update = NULL
+ *     notifier.user_data = NULL
+ *     if xds:             # <<<<<<<<<<<<<<
+ *       grpc_server_set_config_fetcher(self.c_server,
+ *         grpc_server_config_fetcher_xds_create(notifier, channel_args.c_args()))
+ */
+  if (__pyx_v_xds) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":33
+ *     if xds:
+ *       grpc_server_set_config_fetcher(self.c_server,
+ *         grpc_server_config_fetcher_xds_create(notifier, channel_args.c_args()))             # <<<<<<<<<<<<<<
+ *     self.references.append(arguments)
+ * 
+ */
+    __pyx_t_5 = ((struct __pyx_vtabstruct_7_cython_6cygrpc__ChannelArgs *)__pyx_v_channel_args->__pyx_vtab)->c_args(__pyx_v_channel_args); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 33, __pyx_L1_error)
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":32
+ *     notifier.user_data = NULL
+ *     if xds:
+ *       grpc_server_set_config_fetcher(self.c_server,             # <<<<<<<<<<<<<<
+ *         grpc_server_config_fetcher_xds_create(notifier, channel_args.c_args()))
+ *     self.references.append(arguments)
+ */
+    grpc_server_set_config_fetcher(__pyx_v_self->c_server, grpc_server_config_fetcher_xds_create(__pyx_v_notifier, __pyx_t_5));
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":31
+ *     notifier.on_serving_status_update = NULL
+ *     notifier.user_data = NULL
+ *     if xds:             # <<<<<<<<<<<<<<
+ *       grpc_server_set_config_fetcher(self.c_server,
+ *         grpc_server_config_fetcher_xds_create(notifier, channel_args.c_args()))
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":34
+ *       grpc_server_set_config_fetcher(self.c_server,
+ *         grpc_server_config_fetcher_xds_create(notifier, channel_args.c_args()))
+ *     self.references.append(arguments)             # <<<<<<<<<<<<<<
+ * 
+ *   def request_call(
+ */
+  if (unlikely(__pyx_v_self->references == Py_None)) {
+    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
+    __PYX_ERR(23, 34, __pyx_L1_error)
+  }
+  __pyx_t_6 = __Pyx_PyList_Append(__pyx_v_self->references, __pyx_v_arguments); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(23, 34, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":18
+ * cdef class Server:
+ * 
+ *   def __cinit__(self, object arguments, bint xds):             # <<<<<<<<<<<<<<
+ *     fork_handlers_and_grpc_init()
+ *     self.references = []
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("_cython.cygrpc.Server.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_channel_args);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":36
+ *     self.references.append(arguments)
+ * 
+ *   def request_call(             # <<<<<<<<<<<<<<
+ *       self, CompletionQueue call_queue not None,
+ *       CompletionQueue server_queue not None, tag):
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_6Server_3request_call(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_6Server_3request_call = {"request_call", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_6Server_3request_call, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_6Server_3request_call(PyObject *__pyx_v_self, 
+#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_7_cython_6cygrpc_CompletionQueue *__pyx_v_call_queue = 0;
+  struct __pyx_obj_7_cython_6cygrpc_CompletionQueue *__pyx_v_server_queue = 0;
+  PyObject *__pyx_v_tag = 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("request_call (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_call_queue,&__pyx_n_s_server_queue,&__pyx_n_s_tag,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_call_queue)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 36, __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_server_queue)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 36, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("request_call", 1, 3, 3, 1); __PYX_ERR(23, 36, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_tag)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 36, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("request_call", 1, 3, 3, 2); __PYX_ERR(23, 36, __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, "request_call") < 0)) __PYX_ERR(23, 36, __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_call_queue = ((struct __pyx_obj_7_cython_6cygrpc_CompletionQueue *)values[0]);
+    __pyx_v_server_queue = ((struct __pyx_obj_7_cython_6cygrpc_CompletionQueue *)values[1]);
+    __pyx_v_tag = values[2];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("request_call", 1, 3, 3, __pyx_nargs); __PYX_ERR(23, 36, __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("_cython.cygrpc.Server.request_call", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_call_queue), __pyx_ptype_7_cython_6cygrpc_CompletionQueue, 0, "call_queue", 0))) __PYX_ERR(23, 37, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_server_queue), __pyx_ptype_7_cython_6cygrpc_CompletionQueue, 0, "server_queue", 0))) __PYX_ERR(23, 38, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_6Server_2request_call(((struct __pyx_obj_7_cython_6cygrpc_Server *)__pyx_v_self), __pyx_v_call_queue, __pyx_v_server_queue, __pyx_v_tag);
+
+  /* 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_7_cython_6cygrpc_6Server_2request_call(struct __pyx_obj_7_cython_6cygrpc_Server *__pyx_v_self, struct __pyx_obj_7_cython_6cygrpc_CompletionQueue *__pyx_v_call_queue, struct __pyx_obj_7_cython_6cygrpc_CompletionQueue *__pyx_v_server_queue, PyObject *__pyx_v_tag) {
+  struct __pyx_obj_7_cython_6cygrpc__RequestCallTag *__pyx_v_request_call_tag = 0;
+  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("request_call", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":39
+ *       self, CompletionQueue call_queue not None,
+ *       CompletionQueue server_queue not None, tag):
+ *     if not self.is_started or self.is_shutting_down:             # <<<<<<<<<<<<<<
+ *       raise ValueError("server must be started and not shutting down")
+ *     if server_queue not in self.registered_completion_queues:
+ */
+  __pyx_t_2 = (!__pyx_v_self->is_started);
+  if (!__pyx_t_2) {
+  } else {
+    __pyx_t_1 = __pyx_t_2;
+    goto __pyx_L4_bool_binop_done;
+  }
+  __pyx_t_1 = __pyx_v_self->is_shutting_down;
+  __pyx_L4_bool_binop_done:;
+  if (unlikely(__pyx_t_1)) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":40
+ *       CompletionQueue server_queue not None, tag):
+ *     if not self.is_started or self.is_shutting_down:
+ *       raise ValueError("server must be started and not shutting down")             # <<<<<<<<<<<<<<
+ *     if server_queue not in self.registered_completion_queues:
+ *       raise ValueError("server_queue must be a registered completion queue")
+ */
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__29, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 40, __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(23, 40, __pyx_L1_error)
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":39
+ *       self, CompletionQueue call_queue not None,
+ *       CompletionQueue server_queue not None, tag):
+ *     if not self.is_started or self.is_shutting_down:             # <<<<<<<<<<<<<<
+ *       raise ValueError("server must be started and not shutting down")
+ *     if server_queue not in self.registered_completion_queues:
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":41
+ *     if not self.is_started or self.is_shutting_down:
+ *       raise ValueError("server must be started and not shutting down")
+ *     if server_queue not in self.registered_completion_queues:             # <<<<<<<<<<<<<<
+ *       raise ValueError("server_queue must be a registered completion queue")
+ *     cdef _RequestCallTag request_call_tag = _RequestCallTag(tag)
+ */
+  __pyx_t_1 = (__Pyx_PySequence_ContainsTF(((PyObject *)__pyx_v_server_queue), __pyx_v_self->registered_completion_queues, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(23, 41, __pyx_L1_error)
+  if (unlikely(__pyx_t_1)) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":42
+ *       raise ValueError("server must be started and not shutting down")
+ *     if server_queue not in self.registered_completion_queues:
+ *       raise ValueError("server_queue must be a registered completion queue")             # <<<<<<<<<<<<<<
+ *     cdef _RequestCallTag request_call_tag = _RequestCallTag(tag)
+ *     request_call_tag.prepare()
+ */
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__30, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 42, __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(23, 42, __pyx_L1_error)
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":41
+ *     if not self.is_started or self.is_shutting_down:
+ *       raise ValueError("server must be started and not shutting down")
+ *     if server_queue not in self.registered_completion_queues:             # <<<<<<<<<<<<<<
+ *       raise ValueError("server_queue must be a registered completion queue")
+ *     cdef _RequestCallTag request_call_tag = _RequestCallTag(tag)
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":43
+ *     if server_queue not in self.registered_completion_queues:
+ *       raise ValueError("server_queue must be a registered completion queue")
+ *     cdef _RequestCallTag request_call_tag = _RequestCallTag(tag)             # <<<<<<<<<<<<<<
+ *     request_call_tag.prepare()
+ *     cpython.Py_INCREF(request_call_tag)
+ */
+  __pyx_t_3 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_7_cython_6cygrpc__RequestCallTag), __pyx_v_tag); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 43, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_v_request_call_tag = ((struct __pyx_obj_7_cython_6cygrpc__RequestCallTag *)__pyx_t_3);
+  __pyx_t_3 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":44
+ *       raise ValueError("server_queue must be a registered completion queue")
+ *     cdef _RequestCallTag request_call_tag = _RequestCallTag(tag)
+ *     request_call_tag.prepare()             # <<<<<<<<<<<<<<
+ *     cpython.Py_INCREF(request_call_tag)
+ *     return grpc_server_request_call(
+ */
+  ((struct __pyx_vtabstruct_7_cython_6cygrpc__RequestCallTag *)__pyx_v_request_call_tag->__pyx_base.__pyx_vtab)->prepare(__pyx_v_request_call_tag); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 44, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":45
+ *     cdef _RequestCallTag request_call_tag = _RequestCallTag(tag)
+ *     request_call_tag.prepare()
+ *     cpython.Py_INCREF(request_call_tag)             # <<<<<<<<<<<<<<
+ *     return grpc_server_request_call(
+ *         self.c_server, &request_call_tag.call.c_call,
+ */
+  Py_INCREF(((PyObject *)__pyx_v_request_call_tag));
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":46
+ *     request_call_tag.prepare()
+ *     cpython.Py_INCREF(request_call_tag)
+ *     return grpc_server_request_call(             # <<<<<<<<<<<<<<
+ *         self.c_server, &request_call_tag.call.c_call,
+ *         &request_call_tag.call_details.c_details,
+ */
+  __Pyx_XDECREF(__pyx_r);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":51
+ *         &request_call_tag.c_invocation_metadata,
+ *         call_queue.c_completion_queue, server_queue.c_completion_queue,
+ *         <cpython.PyObject *>request_call_tag)             # <<<<<<<<<<<<<<
+ * 
+ *   def register_completion_queue(
+ */
+  __pyx_t_3 = __Pyx_PyInt_From_grpc_call_error(grpc_server_request_call(__pyx_v_self->c_server, (&__pyx_v_request_call_tag->call->c_call), (&__pyx_v_request_call_tag->call_details->c_details), (&__pyx_v_request_call_tag->c_invocation_metadata), __pyx_v_call_queue->c_completion_queue, __pyx_v_server_queue->c_completion_queue, ((PyObject *)__pyx_v_request_call_tag))); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 46, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_r = __pyx_t_3;
+  __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":36
+ *     self.references.append(arguments)
+ * 
+ *   def request_call(             # <<<<<<<<<<<<<<
+ *       self, CompletionQueue call_queue not None,
+ *       CompletionQueue server_queue not None, tag):
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("_cython.cygrpc.Server.request_call", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_request_call_tag);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":53
+ *         <cpython.PyObject *>request_call_tag)
+ * 
+ *   def register_completion_queue(             # <<<<<<<<<<<<<<
+ *       self, CompletionQueue queue not None):
+ *     if self.is_started:
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_6Server_5register_completion_queue(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_6Server_5register_completion_queue = {"register_completion_queue", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_6Server_5register_completion_queue, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_6Server_5register_completion_queue(PyObject *__pyx_v_self, 
+#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_7_cython_6cygrpc_CompletionQueue *__pyx_v_queue = 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("register_completion_queue (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_queue,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_queue)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 53, __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, "register_completion_queue") < 0)) __PYX_ERR(23, 53, __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_queue = ((struct __pyx_obj_7_cython_6cygrpc_CompletionQueue *)values[0]);
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("register_completion_queue", 1, 1, 1, __pyx_nargs); __PYX_ERR(23, 53, __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("_cython.cygrpc.Server.register_completion_queue", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_queue), __pyx_ptype_7_cython_6cygrpc_CompletionQueue, 0, "queue", 0))) __PYX_ERR(23, 54, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_6Server_4register_completion_queue(((struct __pyx_obj_7_cython_6cygrpc_Server *)__pyx_v_self), __pyx_v_queue);
+
+  /* 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_7_cython_6cygrpc_6Server_4register_completion_queue(struct __pyx_obj_7_cython_6cygrpc_Server *__pyx_v_self, struct __pyx_obj_7_cython_6cygrpc_CompletionQueue *__pyx_v_queue) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_t_2;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("register_completion_queue", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":55
+ *   def register_completion_queue(
+ *       self, CompletionQueue queue not None):
+ *     if self.is_started:             # <<<<<<<<<<<<<<
+ *       raise ValueError("cannot register completion queues after start")
+ *     with nogil:
+ */
+  if (unlikely(__pyx_v_self->is_started)) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":56
+ *       self, CompletionQueue queue not None):
+ *     if self.is_started:
+ *       raise ValueError("cannot register completion queues after start")             # <<<<<<<<<<<<<<
+ *     with nogil:
+ *       grpc_server_register_completion_queue(
+ */
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__31, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 56, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __PYX_ERR(23, 56, __pyx_L1_error)
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":55
+ *   def register_completion_queue(
+ *       self, CompletionQueue queue not None):
+ *     if self.is_started:             # <<<<<<<<<<<<<<
+ *       raise ValueError("cannot register completion queues after start")
+ *     with nogil:
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":57
+ *     if self.is_started:
+ *       raise ValueError("cannot register completion queues after start")
+ *     with nogil:             # <<<<<<<<<<<<<<
+ *       grpc_server_register_completion_queue(
+ *           self.c_server, queue.c_completion_queue, NULL)
+ */
+  {
+      #ifdef WITH_THREAD
+      PyThreadState *_save;
+      _save = NULL;
+      Py_UNBLOCK_THREADS
+      __Pyx_FastGIL_Remember();
+      #endif
+      /*try:*/ {
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":58
+ *       raise ValueError("cannot register completion queues after start")
+ *     with nogil:
+ *       grpc_server_register_completion_queue(             # <<<<<<<<<<<<<<
+ *           self.c_server, queue.c_completion_queue, NULL)
+ *     self.registered_completion_queues.append(queue)
+ */
+        grpc_server_register_completion_queue(__pyx_v_self->c_server, __pyx_v_queue->c_completion_queue, NULL);
+      }
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":57
+ *     if self.is_started:
+ *       raise ValueError("cannot register completion queues after start")
+ *     with nogil:             # <<<<<<<<<<<<<<
+ *       grpc_server_register_completion_queue(
+ *           self.c_server, queue.c_completion_queue, NULL)
+ */
+      /*finally:*/ {
+        /*normal exit:*/{
+          #ifdef WITH_THREAD
+          __Pyx_FastGIL_Forget();
+          Py_BLOCK_THREADS
+          #endif
+          goto __pyx_L6;
+        }
+        __pyx_L6:;
+      }
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":60
+ *       grpc_server_register_completion_queue(
+ *           self.c_server, queue.c_completion_queue, NULL)
+ *     self.registered_completion_queues.append(queue)             # <<<<<<<<<<<<<<
+ * 
+ *   def start(self, backup_queue=True):
+ */
+  if (unlikely(__pyx_v_self->registered_completion_queues == Py_None)) {
+    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
+    __PYX_ERR(23, 60, __pyx_L1_error)
+  }
+  __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_self->registered_completion_queues, ((PyObject *)__pyx_v_queue)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(23, 60, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":53
+ *         <cpython.PyObject *>request_call_tag)
+ * 
+ *   def register_completion_queue(             # <<<<<<<<<<<<<<
+ *       self, CompletionQueue queue not None):
+ *     if self.is_started:
+ */
+
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.Server.register_completion_queue", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":62
+ *     self.registered_completion_queues.append(queue)
+ * 
+ *   def start(self, backup_queue=True):             # <<<<<<<<<<<<<<
+ *     """Start the Cython gRPC Server.
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_6Server_7start(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+PyDoc_STRVAR(__pyx_doc_7_cython_6cygrpc_6Server_6start, "Start the Cython gRPC Server.\n    \n    Args:\n      backup_queue: a bool indicates whether to spawn a backup completion\n        queue. In the case that no CQ is bound to the server, and the shutdown\n        of server becomes un-observable.\n    ");
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_6Server_7start = {"start", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_6Server_7start, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7_cython_6cygrpc_6Server_6start};
+static PyObject *__pyx_pw_7_cython_6cygrpc_6Server_7start(PyObject *__pyx_v_self, 
+#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_backup_queue = 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("start (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_backup_queue,0};
+    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_True));
+    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_backup_queue);
+          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
+          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 62, __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, "start") < 0)) __PYX_ERR(23, 62, __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;
+      }
+    }
+    __pyx_v_backup_queue = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("start", 0, 0, 1, __pyx_nargs); __PYX_ERR(23, 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("_cython.cygrpc.Server.start", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_6Server_6start(((struct __pyx_obj_7_cython_6cygrpc_Server *)__pyx_v_self), __pyx_v_backup_queue);
+
+  /* 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_7_cython_6cygrpc_6Server_6start(struct __pyx_obj_7_cython_6cygrpc_Server *__pyx_v_self, PyObject *__pyx_v_backup_queue) {
+  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;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("start", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":70
+ *         of server becomes un-observable.
+ *     """
+ *     if self.is_started:             # <<<<<<<<<<<<<<
+ *       raise ValueError("the server has already started")
+ *     if backup_queue:
+ */
+  if (unlikely(__pyx_v_self->is_started)) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":71
+ *     """
+ *     if self.is_started:
+ *       raise ValueError("the server has already started")             # <<<<<<<<<<<<<<
+ *     if backup_queue:
+ *       self.backup_shutdown_queue = CompletionQueue(shutdown_cq=True)
+ */
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__32, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 71, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __PYX_ERR(23, 71, __pyx_L1_error)
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":70
+ *         of server becomes un-observable.
+ *     """
+ *     if self.is_started:             # <<<<<<<<<<<<<<
+ *       raise ValueError("the server has already started")
+ *     if backup_queue:
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":72
+ *     if self.is_started:
+ *       raise ValueError("the server has already started")
+ *     if backup_queue:             # <<<<<<<<<<<<<<
+ *       self.backup_shutdown_queue = CompletionQueue(shutdown_cq=True)
+ *       self.register_completion_queue(self.backup_shutdown_queue)
+ */
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_backup_queue); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(23, 72, __pyx_L1_error)
+  if (__pyx_t_2) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":73
+ *       raise ValueError("the server has already started")
+ *     if backup_queue:
+ *       self.backup_shutdown_queue = CompletionQueue(shutdown_cq=True)             # <<<<<<<<<<<<<<
+ *       self.register_completion_queue(self.backup_shutdown_queue)
+ *     self.is_started = True
+ */
+    __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 73, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_shutdown_cq, Py_True) < 0) __PYX_ERR(23, 73, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_7_cython_6cygrpc_CompletionQueue), __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 73, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __Pyx_GIVEREF(__pyx_t_3);
+    __Pyx_GOTREF((PyObject *)__pyx_v_self->backup_shutdown_queue);
+    __Pyx_DECREF((PyObject *)__pyx_v_self->backup_shutdown_queue);
+    __pyx_v_self->backup_shutdown_queue = ((struct __pyx_obj_7_cython_6cygrpc_CompletionQueue *)__pyx_t_3);
+    __pyx_t_3 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":74
+ *     if backup_queue:
+ *       self.backup_shutdown_queue = CompletionQueue(shutdown_cq=True)
+ *       self.register_completion_queue(self.backup_shutdown_queue)             # <<<<<<<<<<<<<<
+ *     self.is_started = True
+ *     with nogil:
+ */
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_register_completion_queue); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 74, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_4 = NULL;
+    __pyx_t_5 = 0;
+    #if CYTHON_UNPACK_METHODS
+    if (likely(PyMethod_Check(__pyx_t_1))) {
+      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
+      if (likely(__pyx_t_4)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+        __Pyx_INCREF(__pyx_t_4);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_1, function);
+        __pyx_t_5 = 1;
+      }
+    }
+    #endif
+    {
+      PyObject *__pyx_callargs[2] = {__pyx_t_4, ((PyObject *)__pyx_v_self->backup_shutdown_queue)};
+      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
+      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+      if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 74, __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/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":72
+ *     if self.is_started:
+ *       raise ValueError("the server has already started")
+ *     if backup_queue:             # <<<<<<<<<<<<<<
+ *       self.backup_shutdown_queue = CompletionQueue(shutdown_cq=True)
+ *       self.register_completion_queue(self.backup_shutdown_queue)
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":75
+ *       self.backup_shutdown_queue = CompletionQueue(shutdown_cq=True)
+ *       self.register_completion_queue(self.backup_shutdown_queue)
+ *     self.is_started = True             # <<<<<<<<<<<<<<
+ *     with nogil:
+ *       grpc_server_start(self.c_server)
+ */
+  __pyx_v_self->is_started = 1;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":76
+ *       self.register_completion_queue(self.backup_shutdown_queue)
+ *     self.is_started = True
+ *     with nogil:             # <<<<<<<<<<<<<<
+ *       grpc_server_start(self.c_server)
+ *     if backup_queue:
+ */
+  {
+      #ifdef WITH_THREAD
+      PyThreadState *_save;
+      _save = NULL;
+      Py_UNBLOCK_THREADS
+      __Pyx_FastGIL_Remember();
+      #endif
+      /*try:*/ {
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":77
+ *     self.is_started = True
+ *     with nogil:
+ *       grpc_server_start(self.c_server)             # <<<<<<<<<<<<<<
+ *     if backup_queue:
+ *       # Ensure the core has gotten a chance to do the start-up work
+ */
+        grpc_server_start(__pyx_v_self->c_server);
+      }
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":76
+ *       self.register_completion_queue(self.backup_shutdown_queue)
+ *     self.is_started = True
+ *     with nogil:             # <<<<<<<<<<<<<<
+ *       grpc_server_start(self.c_server)
+ *     if backup_queue:
+ */
+      /*finally:*/ {
+        /*normal exit:*/{
+          #ifdef WITH_THREAD
+          __Pyx_FastGIL_Forget();
+          Py_BLOCK_THREADS
+          #endif
+          goto __pyx_L7;
+        }
+        __pyx_L7:;
+      }
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":78
+ *     with nogil:
+ *       grpc_server_start(self.c_server)
+ *     if backup_queue:             # <<<<<<<<<<<<<<
+ *       # Ensure the core has gotten a chance to do the start-up work
+ *       self.backup_shutdown_queue.poll(deadline=time.time())
+ */
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_backup_queue); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(23, 78, __pyx_L1_error)
+  if (__pyx_t_2) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":80
+ *     if backup_queue:
+ *       # Ensure the core has gotten a chance to do the start-up work
+ *       self.backup_shutdown_queue.poll(deadline=time.time())             # <<<<<<<<<<<<<<
+ * 
+ *   def add_http2_port(self, bytes address,
+ */
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->backup_shutdown_queue), __pyx_n_s_poll); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 80, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 80, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_time); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 80, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_6);
+    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_time); if (unlikely(!__pyx_t_7)) __PYX_ERR(23, 80, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_7);
+    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+    __pyx_t_6 = NULL;
+    __pyx_t_5 = 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_5 = 1;
+      }
+    }
+    #endif
+    {
+      PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
+      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
+      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+      if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 80, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    }
+    if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_deadline, __pyx_t_4) < 0) __PYX_ERR(23, 80, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 80, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":78
+ *     with nogil:
+ *       grpc_server_start(self.c_server)
+ *     if backup_queue:             # <<<<<<<<<<<<<<
+ *       # Ensure the core has gotten a chance to do the start-up work
+ *       self.backup_shutdown_queue.poll(deadline=time.time())
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":62
+ *     self.registered_completion_queues.append(queue)
+ * 
+ *   def start(self, backup_queue=True):             # <<<<<<<<<<<<<<
+ *     """Start the Cython gRPC Server.
+ * 
+ */
+
+  /* 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_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_AddTraceback("_cython.cygrpc.Server.start", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":82
+ *       self.backup_shutdown_queue.poll(deadline=time.time())
+ * 
+ *   def add_http2_port(self, bytes address,             # <<<<<<<<<<<<<<
+ *                      ServerCredentials server_credentials=None):
+ *     address = str_to_bytes(address)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_6Server_9add_http2_port(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_6Server_9add_http2_port = {"add_http2_port", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_6Server_9add_http2_port, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_6Server_9add_http2_port(PyObject *__pyx_v_self, 
+#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_address = 0;
+  struct __pyx_obj_7_cython_6cygrpc_ServerCredentials *__pyx_v_server_credentials = 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("add_http2_port (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_address,&__pyx_n_s_server_credentials,0};
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":83
+ * 
+ *   def add_http2_port(self, bytes address,
+ *                      ServerCredentials server_credentials=None):             # <<<<<<<<<<<<<<
+ *     address = str_to_bytes(address)
+ *     self.references.append(address)
+ */
+    values[1] = __Pyx_Arg_NewRef_FASTCALL((PyObject *)((struct __pyx_obj_7_cython_6cygrpc_ServerCredentials *)Py_None));
+    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_address)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 82, __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_server_credentials);
+          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
+          else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 82, __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, "add_http2_port") < 0)) __PYX_ERR(23, 82, __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_address = ((PyObject*)values[0]);
+    __pyx_v_server_credentials = ((struct __pyx_obj_7_cython_6cygrpc_ServerCredentials *)values[1]);
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("add_http2_port", 0, 1, 2, __pyx_nargs); __PYX_ERR(23, 82, __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("_cython.cygrpc.Server.add_http2_port", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_address), (&PyBytes_Type), 1, "address", 1))) __PYX_ERR(23, 82, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_server_credentials), __pyx_ptype_7_cython_6cygrpc_ServerCredentials, 1, "server_credentials", 0))) __PYX_ERR(23, 83, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_6Server_8add_http2_port(((struct __pyx_obj_7_cython_6cygrpc_Server *)__pyx_v_self), __pyx_v_address, __pyx_v_server_credentials);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":82
+ *       self.backup_shutdown_queue.poll(deadline=time.time())
+ * 
+ *   def add_http2_port(self, bytes address,             # <<<<<<<<<<<<<<
+ *                      ServerCredentials server_credentials=None):
+ *     address = str_to_bytes(address)
+ */
+
+  /* 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_7_cython_6cygrpc_6Server_8add_http2_port(struct __pyx_obj_7_cython_6cygrpc_Server *__pyx_v_self, PyObject *__pyx_v_address, struct __pyx_obj_7_cython_6cygrpc_ServerCredentials *__pyx_v_server_credentials) {
+  int __pyx_v_result;
+  char *__pyx_v_address_c_string;
+  grpc_server_credentials *__pyx_v_creds;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_t_2;
+  char *__pyx_t_3;
+  int __pyx_t_4;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("add_http2_port", 0);
+  __Pyx_INCREF(__pyx_v_address);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":84
+ *   def add_http2_port(self, bytes address,
+ *                      ServerCredentials server_credentials=None):
+ *     address = str_to_bytes(address)             # <<<<<<<<<<<<<<
+ *     self.references.append(address)
+ *     cdef int result
+ */
+  __pyx_t_1 = __pyx_f_7_cython_6cygrpc_str_to_bytes(__pyx_v_address); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 84, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF_SET(__pyx_v_address, ((PyObject*)__pyx_t_1));
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":85
+ *                      ServerCredentials server_credentials=None):
+ *     address = str_to_bytes(address)
+ *     self.references.append(address)             # <<<<<<<<<<<<<<
+ *     cdef int result
+ *     cdef char *address_c_string = address
+ */
+  if (unlikely(__pyx_v_self->references == Py_None)) {
+    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
+    __PYX_ERR(23, 85, __pyx_L1_error)
+  }
+  __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_self->references, __pyx_v_address); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(23, 85, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":87
+ *     self.references.append(address)
+ *     cdef int result
+ *     cdef char *address_c_string = address             # <<<<<<<<<<<<<<
+ *     if server_credentials is not None:
+ *       self.references.append(server_credentials)
+ */
+  if (unlikely(__pyx_v_address == Py_None)) {
+    PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
+    __PYX_ERR(23, 87, __pyx_L1_error)
+  }
+  __pyx_t_3 = __Pyx_PyBytes_AsWritableString(__pyx_v_address); if (unlikely((!__pyx_t_3) && PyErr_Occurred())) __PYX_ERR(23, 87, __pyx_L1_error)
+  __pyx_v_address_c_string = __pyx_t_3;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":88
+ *     cdef int result
+ *     cdef char *address_c_string = address
+ *     if server_credentials is not None:             # <<<<<<<<<<<<<<
+ *       self.references.append(server_credentials)
+ *       with nogil:
+ */
+  __pyx_t_4 = (((PyObject *)__pyx_v_server_credentials) != Py_None);
+  if (__pyx_t_4) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":89
+ *     cdef char *address_c_string = address
+ *     if server_credentials is not None:
+ *       self.references.append(server_credentials)             # <<<<<<<<<<<<<<
+ *       with nogil:
+ *         result = grpc_server_add_http2_port(
+ */
+    if (unlikely(__pyx_v_self->references == Py_None)) {
+      PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
+      __PYX_ERR(23, 89, __pyx_L1_error)
+    }
+    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_self->references, ((PyObject *)__pyx_v_server_credentials)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(23, 89, __pyx_L1_error)
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":90
+ *     if server_credentials is not None:
+ *       self.references.append(server_credentials)
+ *       with nogil:             # <<<<<<<<<<<<<<
+ *         result = grpc_server_add_http2_port(
+ *             self.c_server, address_c_string, server_credentials.c_credentials)
+ */
+    {
+        #ifdef WITH_THREAD
+        PyThreadState *_save;
+        _save = NULL;
+        Py_UNBLOCK_THREADS
+        __Pyx_FastGIL_Remember();
+        #endif
+        /*try:*/ {
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":91
+ *       self.references.append(server_credentials)
+ *       with nogil:
+ *         result = grpc_server_add_http2_port(             # <<<<<<<<<<<<<<
+ *             self.c_server, address_c_string, server_credentials.c_credentials)
+ *     else:
+ */
+          __pyx_v_result = grpc_server_add_http2_port(__pyx_v_self->c_server, __pyx_v_address_c_string, __pyx_v_server_credentials->c_credentials);
+        }
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":90
+ *     if server_credentials is not None:
+ *       self.references.append(server_credentials)
+ *       with nogil:             # <<<<<<<<<<<<<<
+ *         result = grpc_server_add_http2_port(
+ *             self.c_server, address_c_string, server_credentials.c_credentials)
+ */
+        /*finally:*/ {
+          /*normal exit:*/{
+            #ifdef WITH_THREAD
+            __Pyx_FastGIL_Forget();
+            Py_BLOCK_THREADS
+            #endif
+            goto __pyx_L6;
+          }
+          __pyx_L6:;
+        }
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":88
+ *     cdef int result
+ *     cdef char *address_c_string = address
+ *     if server_credentials is not None:             # <<<<<<<<<<<<<<
+ *       self.references.append(server_credentials)
+ *       with nogil:
+ */
+    goto __pyx_L3;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":94
+ *             self.c_server, address_c_string, server_credentials.c_credentials)
+ *     else:
+ *       with nogil:             # <<<<<<<<<<<<<<
+ *         creds = grpc_insecure_server_credentials_create()
+ *         result = grpc_server_add_http2_port(self.c_server,
+ */
+  /*else*/ {
+    {
+        #ifdef WITH_THREAD
+        PyThreadState *_save;
+        _save = NULL;
+        Py_UNBLOCK_THREADS
+        __Pyx_FastGIL_Remember();
+        #endif
+        /*try:*/ {
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":95
+ *     else:
+ *       with nogil:
+ *         creds = grpc_insecure_server_credentials_create()             # <<<<<<<<<<<<<<
+ *         result = grpc_server_add_http2_port(self.c_server,
+ *                                             address_c_string, creds)
+ */
+          __pyx_v_creds = grpc_insecure_server_credentials_create();
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":96
+ *       with nogil:
+ *         creds = grpc_insecure_server_credentials_create()
+ *         result = grpc_server_add_http2_port(self.c_server,             # <<<<<<<<<<<<<<
+ *                                             address_c_string, creds)
+ *         grpc_server_credentials_release(creds)
+ */
+          __pyx_v_result = grpc_server_add_http2_port(__pyx_v_self->c_server, __pyx_v_address_c_string, __pyx_v_creds);
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":98
+ *         result = grpc_server_add_http2_port(self.c_server,
+ *                                             address_c_string, creds)
+ *         grpc_server_credentials_release(creds)             # <<<<<<<<<<<<<<
+ *     return result
+ * 
+ */
+          grpc_server_credentials_release(__pyx_v_creds);
+        }
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":94
+ *             self.c_server, address_c_string, server_credentials.c_credentials)
+ *     else:
+ *       with nogil:             # <<<<<<<<<<<<<<
+ *         creds = grpc_insecure_server_credentials_create()
+ *         result = grpc_server_add_http2_port(self.c_server,
+ */
+        /*finally:*/ {
+          /*normal exit:*/{
+            #ifdef WITH_THREAD
+            __Pyx_FastGIL_Forget();
+            Py_BLOCK_THREADS
+            #endif
+            goto __pyx_L9;
+          }
+          __pyx_L9:;
+        }
+    }
+  }
+  __pyx_L3:;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":99
+ *                                             address_c_string, creds)
+ *         grpc_server_credentials_release(creds)
+ *     return result             # <<<<<<<<<<<<<<
+ * 
+ *   cdef _c_shutdown(self, CompletionQueue queue, tag):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_result); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 99, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":82
+ *       self.backup_shutdown_queue.poll(deadline=time.time())
+ * 
+ *   def add_http2_port(self, bytes address,             # <<<<<<<<<<<<<<
+ *                      ServerCredentials server_credentials=None):
+ *     address = str_to_bytes(address)
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.Server.add_http2_port", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_address);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":101
+ *     return result
+ * 
+ *   cdef _c_shutdown(self, CompletionQueue queue, tag):             # <<<<<<<<<<<<<<
+ *     self.is_shutting_down = True
+ *     cdef _ServerShutdownTag server_shutdown_tag = _ServerShutdownTag(tag, self)
+ */
+
+static PyObject *__pyx_f_7_cython_6cygrpc_6Server__c_shutdown(struct __pyx_obj_7_cython_6cygrpc_Server *__pyx_v_self, struct __pyx_obj_7_cython_6cygrpc_CompletionQueue *__pyx_v_queue, PyObject *__pyx_v_tag) {
+  struct __pyx_obj_7_cython_6cygrpc__ServerShutdownTag *__pyx_v_server_shutdown_tag = 0;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_c_shutdown", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":102
+ * 
+ *   cdef _c_shutdown(self, CompletionQueue queue, tag):
+ *     self.is_shutting_down = True             # <<<<<<<<<<<<<<
+ *     cdef _ServerShutdownTag server_shutdown_tag = _ServerShutdownTag(tag, self)
+ *     cpython.Py_INCREF(server_shutdown_tag)
+ */
+  __pyx_v_self->is_shutting_down = 1;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":103
+ *   cdef _c_shutdown(self, CompletionQueue queue, tag):
+ *     self.is_shutting_down = True
+ *     cdef _ServerShutdownTag server_shutdown_tag = _ServerShutdownTag(tag, self)             # <<<<<<<<<<<<<<
+ *     cpython.Py_INCREF(server_shutdown_tag)
+ *     with nogil:
+ */
+  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 103, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(__pyx_v_tag);
+  __Pyx_GIVEREF(__pyx_v_tag);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_tag)) __PYX_ERR(23, 103, __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(23, 103, __pyx_L1_error);
+  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_7_cython_6cygrpc__ServerShutdownTag), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 103, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_v_server_shutdown_tag = ((struct __pyx_obj_7_cython_6cygrpc__ServerShutdownTag *)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":104
+ *     self.is_shutting_down = True
+ *     cdef _ServerShutdownTag server_shutdown_tag = _ServerShutdownTag(tag, self)
+ *     cpython.Py_INCREF(server_shutdown_tag)             # <<<<<<<<<<<<<<
+ *     with nogil:
+ *       grpc_server_shutdown_and_notify(
+ */
+  Py_INCREF(((PyObject *)__pyx_v_server_shutdown_tag));
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":105
+ *     cdef _ServerShutdownTag server_shutdown_tag = _ServerShutdownTag(tag, self)
+ *     cpython.Py_INCREF(server_shutdown_tag)
+ *     with nogil:             # <<<<<<<<<<<<<<
+ *       grpc_server_shutdown_and_notify(
+ *           self.c_server, queue.c_completion_queue,
+ */
+  {
+      #ifdef WITH_THREAD
+      PyThreadState *_save;
+      _save = NULL;
+      Py_UNBLOCK_THREADS
+      __Pyx_FastGIL_Remember();
+      #endif
+      /*try:*/ {
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":106
+ *     cpython.Py_INCREF(server_shutdown_tag)
+ *     with nogil:
+ *       grpc_server_shutdown_and_notify(             # <<<<<<<<<<<<<<
+ *           self.c_server, queue.c_completion_queue,
+ *           <cpython.PyObject *>server_shutdown_tag)
+ */
+        grpc_server_shutdown_and_notify(__pyx_v_self->c_server, __pyx_v_queue->c_completion_queue, ((PyObject *)__pyx_v_server_shutdown_tag));
+      }
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":105
+ *     cdef _ServerShutdownTag server_shutdown_tag = _ServerShutdownTag(tag, self)
+ *     cpython.Py_INCREF(server_shutdown_tag)
+ *     with nogil:             # <<<<<<<<<<<<<<
+ *       grpc_server_shutdown_and_notify(
+ *           self.c_server, queue.c_completion_queue,
+ */
+      /*finally:*/ {
+        /*normal exit:*/{
+          #ifdef WITH_THREAD
+          __Pyx_FastGIL_Forget();
+          Py_BLOCK_THREADS
+          #endif
+          goto __pyx_L5;
+        }
+        __pyx_L5:;
+      }
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":101
+ *     return result
+ * 
+ *   cdef _c_shutdown(self, CompletionQueue queue, tag):             # <<<<<<<<<<<<<<
+ *     self.is_shutting_down = True
+ *     cdef _ServerShutdownTag server_shutdown_tag = _ServerShutdownTag(tag, self)
+ */
+
+  /* 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_AddTraceback("_cython.cygrpc.Server._c_shutdown", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_server_shutdown_tag);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":110
+ *           <cpython.PyObject *>server_shutdown_tag)
+ * 
+ *   def shutdown(self, CompletionQueue queue not None, tag):             # <<<<<<<<<<<<<<
+ *     if queue.is_shutting_down:
+ *       raise ValueError("queue must be live")
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_6Server_11shutdown(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_6Server_11shutdown = {"shutdown", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_6Server_11shutdown, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_6Server_11shutdown(PyObject *__pyx_v_self, 
+#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_7_cython_6cygrpc_CompletionQueue *__pyx_v_queue = 0;
+  PyObject *__pyx_v_tag = 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("shutdown (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_queue,&__pyx_n_s_tag,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_queue)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 110, __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_tag)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 110, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("shutdown", 1, 2, 2, 1); __PYX_ERR(23, 110, __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, "shutdown") < 0)) __PYX_ERR(23, 110, __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_queue = ((struct __pyx_obj_7_cython_6cygrpc_CompletionQueue *)values[0]);
+    __pyx_v_tag = values[1];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("shutdown", 1, 2, 2, __pyx_nargs); __PYX_ERR(23, 110, __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("_cython.cygrpc.Server.shutdown", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_queue), __pyx_ptype_7_cython_6cygrpc_CompletionQueue, 0, "queue", 0))) __PYX_ERR(23, 110, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_6Server_10shutdown(((struct __pyx_obj_7_cython_6cygrpc_Server *)__pyx_v_self), __pyx_v_queue, __pyx_v_tag);
+
+  /* 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_7_cython_6cygrpc_6Server_10shutdown(struct __pyx_obj_7_cython_6cygrpc_Server *__pyx_v_self, struct __pyx_obj_7_cython_6cygrpc_CompletionQueue *__pyx_v_queue, PyObject *__pyx_v_tag) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_t_2;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("shutdown", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":111
+ * 
+ *   def shutdown(self, CompletionQueue queue not None, tag):
+ *     if queue.is_shutting_down:             # <<<<<<<<<<<<<<
+ *       raise ValueError("queue must be live")
+ *     elif not self.is_started:
+ */
+  if (unlikely(__pyx_v_queue->is_shutting_down)) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":112
+ *   def shutdown(self, CompletionQueue queue not None, tag):
+ *     if queue.is_shutting_down:
+ *       raise ValueError("queue must be live")             # <<<<<<<<<<<<<<
+ *     elif not self.is_started:
+ *       raise ValueError("the server hasn't started yet")
+ */
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__33, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 112, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __PYX_ERR(23, 112, __pyx_L1_error)
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":111
+ * 
+ *   def shutdown(self, CompletionQueue queue not None, tag):
+ *     if queue.is_shutting_down:             # <<<<<<<<<<<<<<
+ *       raise ValueError("queue must be live")
+ *     elif not self.is_started:
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":113
+ *     if queue.is_shutting_down:
+ *       raise ValueError("queue must be live")
+ *     elif not self.is_started:             # <<<<<<<<<<<<<<
+ *       raise ValueError("the server hasn't started yet")
+ *     elif self.is_shutting_down:
+ */
+  __pyx_t_2 = (!__pyx_v_self->is_started);
+  if (unlikely(__pyx_t_2)) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":114
+ *       raise ValueError("queue must be live")
+ *     elif not self.is_started:
+ *       raise ValueError("the server hasn't started yet")             # <<<<<<<<<<<<<<
+ *     elif self.is_shutting_down:
+ *       return
+ */
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__34, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 114, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __PYX_ERR(23, 114, __pyx_L1_error)
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":113
+ *     if queue.is_shutting_down:
+ *       raise ValueError("queue must be live")
+ *     elif not self.is_started:             # <<<<<<<<<<<<<<
+ *       raise ValueError("the server hasn't started yet")
+ *     elif self.is_shutting_down:
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":115
+ *     elif not self.is_started:
+ *       raise ValueError("the server hasn't started yet")
+ *     elif self.is_shutting_down:             # <<<<<<<<<<<<<<
+ *       return
+ *     elif queue not in self.registered_completion_queues:
+ */
+  if (__pyx_v_self->is_shutting_down) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":116
+ *       raise ValueError("the server hasn't started yet")
+ *     elif self.is_shutting_down:
+ *       return             # <<<<<<<<<<<<<<
+ *     elif queue not in self.registered_completion_queues:
+ *       raise ValueError("expected registered completion queue")
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":115
+ *     elif not self.is_started:
+ *       raise ValueError("the server hasn't started yet")
+ *     elif self.is_shutting_down:             # <<<<<<<<<<<<<<
+ *       return
+ *     elif queue not in self.registered_completion_queues:
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":117
+ *     elif self.is_shutting_down:
+ *       return
+ *     elif queue not in self.registered_completion_queues:             # <<<<<<<<<<<<<<
+ *       raise ValueError("expected registered completion queue")
+ *     else:
+ */
+  __pyx_t_2 = (__Pyx_PySequence_ContainsTF(((PyObject *)__pyx_v_queue), __pyx_v_self->registered_completion_queues, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(23, 117, __pyx_L1_error)
+  if (unlikely(__pyx_t_2)) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":118
+ *       return
+ *     elif queue not in self.registered_completion_queues:
+ *       raise ValueError("expected registered completion queue")             # <<<<<<<<<<<<<<
+ *     else:
+ *       self._c_shutdown(queue, tag)
+ */
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__35, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 118, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __PYX_ERR(23, 118, __pyx_L1_error)
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":117
+ *     elif self.is_shutting_down:
+ *       return
+ *     elif queue not in self.registered_completion_queues:             # <<<<<<<<<<<<<<
+ *       raise ValueError("expected registered completion queue")
+ *     else:
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":120
+ *       raise ValueError("expected registered completion queue")
+ *     else:
+ *       self._c_shutdown(queue, tag)             # <<<<<<<<<<<<<<
+ * 
+ *   cdef notify_shutdown_complete(self):
+ */
+  /*else*/ {
+    __pyx_t_1 = ((struct __pyx_vtabstruct_7_cython_6cygrpc_Server *)__pyx_v_self->__pyx_vtab)->_c_shutdown(__pyx_v_self, __pyx_v_queue, __pyx_v_tag); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 120, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":110
+ *           <cpython.PyObject *>server_shutdown_tag)
+ * 
+ *   def shutdown(self, CompletionQueue queue not None, tag):             # <<<<<<<<<<<<<<
+ *     if queue.is_shutting_down:
+ *       raise ValueError("queue must be live")
+ */
+
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.Server.shutdown", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":122
+ *       self._c_shutdown(queue, tag)
+ * 
+ *   cdef notify_shutdown_complete(self):             # <<<<<<<<<<<<<<
+ *     # called only after our server shutdown tag has emerged from a completion
+ *     # queue.
+ */
+
+static PyObject *__pyx_f_7_cython_6cygrpc_6Server_notify_shutdown_complete(struct __pyx_obj_7_cython_6cygrpc_Server *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("notify_shutdown_complete", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":125
+ *     # called only after our server shutdown tag has emerged from a completion
+ *     # queue.
+ *     self.is_shutdown = True             # <<<<<<<<<<<<<<
+ * 
+ *   def cancel_all_calls(self):
+ */
+  __pyx_v_self->is_shutdown = 1;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":122
+ *       self._c_shutdown(queue, tag)
+ * 
+ *   cdef notify_shutdown_complete(self):             # <<<<<<<<<<<<<<
+ *     # called only after our server shutdown tag has emerged from a completion
+ *     # queue.
+ */
+
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":127
+ *     self.is_shutdown = True
+ * 
+ *   def cancel_all_calls(self):             # <<<<<<<<<<<<<<
+ *     if not self.is_shutting_down:
+ *       raise UsageError("the server must be shutting down to cancel all calls")
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_6Server_13cancel_all_calls(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_6Server_13cancel_all_calls = {"cancel_all_calls", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_6Server_13cancel_all_calls, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_6Server_13cancel_all_calls(PyObject *__pyx_v_self, 
+#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("cancel_all_calls (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("cancel_all_calls", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "cancel_all_calls", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_6Server_12cancel_all_calls(((struct __pyx_obj_7_cython_6cygrpc_Server *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_6Server_12cancel_all_calls(struct __pyx_obj_7_cython_6cygrpc_Server *__pyx_v_self) {
+  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;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("cancel_all_calls", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":128
+ * 
+ *   def cancel_all_calls(self):
+ *     if not self.is_shutting_down:             # <<<<<<<<<<<<<<
+ *       raise UsageError("the server must be shutting down to cancel all calls")
+ *     elif self.is_shutdown:
+ */
+  __pyx_t_1 = (!__pyx_v_self->is_shutting_down);
+  if (unlikely(__pyx_t_1)) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":129
+ *   def cancel_all_calls(self):
+ *     if not self.is_shutting_down:
+ *       raise UsageError("the server must be shutting down to cancel all calls")             # <<<<<<<<<<<<<<
+ *     elif self.is_shutdown:
+ *       return
+ */
+    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_UsageError); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 129, __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_s_the_server_must_be_shutting_down};
+      __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(23, 129, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    }
+    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __PYX_ERR(23, 129, __pyx_L1_error)
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":128
+ * 
+ *   def cancel_all_calls(self):
+ *     if not self.is_shutting_down:             # <<<<<<<<<<<<<<
+ *       raise UsageError("the server must be shutting down to cancel all calls")
+ *     elif self.is_shutdown:
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":130
+ *     if not self.is_shutting_down:
+ *       raise UsageError("the server must be shutting down to cancel all calls")
+ *     elif self.is_shutdown:             # <<<<<<<<<<<<<<
+ *       return
+ *     else:
+ */
+  if (__pyx_v_self->is_shutdown) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":131
+ *       raise UsageError("the server must be shutting down to cancel all calls")
+ *     elif self.is_shutdown:
+ *       return             # <<<<<<<<<<<<<<
+ *     else:
+ *       with nogil:
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":130
+ *     if not self.is_shutting_down:
+ *       raise UsageError("the server must be shutting down to cancel all calls")
+ *     elif self.is_shutdown:             # <<<<<<<<<<<<<<
+ *       return
+ *     else:
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":133
+ *       return
+ *     else:
+ *       with nogil:             # <<<<<<<<<<<<<<
+ *         grpc_server_cancel_all_calls(self.c_server)
+ * 
+ */
+  /*else*/ {
+    {
+        #ifdef WITH_THREAD
+        PyThreadState *_save;
+        _save = NULL;
+        Py_UNBLOCK_THREADS
+        __Pyx_FastGIL_Remember();
+        #endif
+        /*try:*/ {
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":134
+ *     else:
+ *       with nogil:
+ *         grpc_server_cancel_all_calls(self.c_server)             # <<<<<<<<<<<<<<
+ * 
+ *   # TODO(https://github.com/grpc/grpc/issues/17515) Determine what, if any,
+ */
+          grpc_server_cancel_all_calls(__pyx_v_self->c_server);
+        }
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":133
+ *       return
+ *     else:
+ *       with nogil:             # <<<<<<<<<<<<<<
+ *         grpc_server_cancel_all_calls(self.c_server)
+ * 
+ */
+        /*finally:*/ {
+          /*normal exit:*/{
+            #ifdef WITH_THREAD
+            __Pyx_FastGIL_Forget();
+            Py_BLOCK_THREADS
+            #endif
+            goto __pyx_L6;
+          }
+          __pyx_L6:;
+        }
+    }
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":127
+ *     self.is_shutdown = True
+ * 
+ *   def cancel_all_calls(self):             # <<<<<<<<<<<<<<
+ *     if not self.is_shutting_down:
+ *       raise UsageError("the server must be shutting down to cancel all calls")
+ */
+
+  /* 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_AddTraceback("_cython.cygrpc.Server.cancel_all_calls", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":139
+ *   # portion of this is safe to call from __dealloc__, and potentially remove
+ *   # backup_shutdown_queue.
+ *   def destroy(self):             # <<<<<<<<<<<<<<
+ *     if self.c_server != NULL:
+ *       if not self.is_started:
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_6Server_15destroy(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_6Server_15destroy = {"destroy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_6Server_15destroy, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_6Server_15destroy(PyObject *__pyx_v_self, 
+#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("destroy (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("destroy", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "destroy", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_6Server_14destroy(((struct __pyx_obj_7_cython_6cygrpc_Server *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_6Server_14destroy(struct __pyx_obj_7_cython_6cygrpc_Server *__pyx_v_self) {
+  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;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("destroy", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":140
+ *   # backup_shutdown_queue.
+ *   def destroy(self):
+ *     if self.c_server != NULL:             # <<<<<<<<<<<<<<
+ *       if not self.is_started:
+ *         pass
+ */
+  __pyx_t_1 = (__pyx_v_self->c_server != NULL);
+  if (__pyx_t_1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":141
+ *   def destroy(self):
+ *     if self.c_server != NULL:
+ *       if not self.is_started:             # <<<<<<<<<<<<<<
+ *         pass
+ *       elif self.is_shutdown:
+ */
+    __pyx_t_1 = (!__pyx_v_self->is_started);
+    if (__pyx_t_1) {
+      goto __pyx_L4;
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":143
+ *       if not self.is_started:
+ *         pass
+ *       elif self.is_shutdown:             # <<<<<<<<<<<<<<
+ *         pass
+ *       elif not self.is_shutting_down:
+ */
+    if (__pyx_v_self->is_shutdown) {
+      goto __pyx_L4;
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":145
+ *       elif self.is_shutdown:
+ *         pass
+ *       elif not self.is_shutting_down:             # <<<<<<<<<<<<<<
+ *         if self.backup_shutdown_queue is None:
+ *           raise InternalError('Server shutdown failed: no completion queue.')
+ */
+    __pyx_t_1 = (!__pyx_v_self->is_shutting_down);
+    if (__pyx_t_1) {
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":146
+ *         pass
+ *       elif not self.is_shutting_down:
+ *         if self.backup_shutdown_queue is None:             # <<<<<<<<<<<<<<
+ *           raise InternalError('Server shutdown failed: no completion queue.')
+ *         else:
+ */
+      __pyx_t_1 = (((PyObject *)__pyx_v_self->backup_shutdown_queue) == Py_None);
+      if (unlikely(__pyx_t_1)) {
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":147
+ *       elif not self.is_shutting_down:
+ *         if self.backup_shutdown_queue is None:
+ *           raise InternalError('Server shutdown failed: no completion queue.')             # <<<<<<<<<<<<<<
+ *         else:
+ *           # the user didn't call shutdown - use our backup queue
+ */
+        __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_InternalError); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 147, __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_s_Server_shutdown_failed_no_comple};
+          __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(23, 147, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_2);
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        }
+        __Pyx_Raise(__pyx_t_2, 0, 0, 0);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        __PYX_ERR(23, 147, __pyx_L1_error)
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":146
+ *         pass
+ *       elif not self.is_shutting_down:
+ *         if self.backup_shutdown_queue is None:             # <<<<<<<<<<<<<<
+ *           raise InternalError('Server shutdown failed: no completion queue.')
+ *         else:
+ */
+      }
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":150
+ *         else:
+ *           # the user didn't call shutdown - use our backup queue
+ *           self._c_shutdown(self.backup_shutdown_queue, None)             # <<<<<<<<<<<<<<
+ *           # and now we wait
+ *           while not self.is_shutdown:
+ */
+      /*else*/ {
+        __pyx_t_2 = ((PyObject *)__pyx_v_self->backup_shutdown_queue);
+        __Pyx_INCREF(__pyx_t_2);
+        __pyx_t_3 = ((struct __pyx_vtabstruct_7_cython_6cygrpc_Server *)__pyx_v_self->__pyx_vtab)->_c_shutdown(__pyx_v_self, ((struct __pyx_obj_7_cython_6cygrpc_CompletionQueue *)__pyx_t_2), Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 150, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_3);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":152
+ *           self._c_shutdown(self.backup_shutdown_queue, None)
+ *           # and now we wait
+ *           while not self.is_shutdown:             # <<<<<<<<<<<<<<
+ *             self.backup_shutdown_queue.poll()
+ *       else:
+ */
+        while (1) {
+          __pyx_t_1 = (!__pyx_v_self->is_shutdown);
+          if (!__pyx_t_1) break;
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":153
+ *           # and now we wait
+ *           while not self.is_shutdown:
+ *             self.backup_shutdown_queue.poll()             # <<<<<<<<<<<<<<
+ *       else:
+ *         # We're in the process of shutting down, but have not shutdown; can't do
+ */
+          __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->backup_shutdown_queue), __pyx_n_s_poll); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 153, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_2);
+          __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, NULL};
+            __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
+            __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+            if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 153, __pyx_L1_error)
+            __Pyx_GOTREF(__pyx_t_3);
+            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          }
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        }
+      }
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":145
+ *       elif self.is_shutdown:
+ *         pass
+ *       elif not self.is_shutting_down:             # <<<<<<<<<<<<<<
+ *         if self.backup_shutdown_queue is None:
+ *           raise InternalError('Server shutdown failed: no completion queue.')
+ */
+      goto __pyx_L4;
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":157
+ *         # We're in the process of shutting down, but have not shutdown; can't do
+ *         # much but repeatedly release the GIL and wait
+ *         while not self.is_shutdown:             # <<<<<<<<<<<<<<
+ *           time.sleep(0)
+ *       with nogil:
+ */
+    /*else*/ {
+      while (1) {
+        __pyx_t_1 = (!__pyx_v_self->is_shutdown);
+        if (!__pyx_t_1) break;
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":158
+ *         # much but repeatedly release the GIL and wait
+ *         while not self.is_shutdown:
+ *           time.sleep(0)             # <<<<<<<<<<<<<<
+ *       with nogil:
+ *         grpc_server_destroy(self.c_server)
+ */
+        __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_time); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 158, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_2);
+        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_sleep); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 158, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_4);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        __pyx_t_2 = NULL;
+        __pyx_t_5 = 0;
+        #if CYTHON_UNPACK_METHODS
+        if (unlikely(PyMethod_Check(__pyx_t_4))) {
+          __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
+          if (likely(__pyx_t_2)) {
+            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+            __Pyx_INCREF(__pyx_t_2);
+            __Pyx_INCREF(function);
+            __Pyx_DECREF_SET(__pyx_t_4, function);
+            __pyx_t_5 = 1;
+          }
+        }
+        #endif
+        {
+          PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_int_0};
+          __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
+          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 158, __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;
+      }
+    }
+    __pyx_L4:;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":159
+ *         while not self.is_shutdown:
+ *           time.sleep(0)
+ *       with nogil:             # <<<<<<<<<<<<<<
+ *         grpc_server_destroy(self.c_server)
+ *         self.c_server = NULL
+ */
+    {
+        #ifdef WITH_THREAD
+        PyThreadState *_save;
+        _save = NULL;
+        Py_UNBLOCK_THREADS
+        __Pyx_FastGIL_Remember();
+        #endif
+        /*try:*/ {
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":160
+ *           time.sleep(0)
+ *       with nogil:
+ *         grpc_server_destroy(self.c_server)             # <<<<<<<<<<<<<<
+ *         self.c_server = NULL
+ * 
+ */
+          grpc_server_destroy(__pyx_v_self->c_server);
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":161
+ *       with nogil:
+ *         grpc_server_destroy(self.c_server)
+ *         self.c_server = NULL             # <<<<<<<<<<<<<<
+ * 
+ *   def __dealloc__(self):
+ */
+          __pyx_v_self->c_server = NULL;
+        }
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":159
+ *         while not self.is_shutdown:
+ *           time.sleep(0)
+ *       with nogil:             # <<<<<<<<<<<<<<
+ *         grpc_server_destroy(self.c_server)
+ *         self.c_server = NULL
+ */
+        /*finally:*/ {
+          /*normal exit:*/{
+            #ifdef WITH_THREAD
+            __Pyx_FastGIL_Forget();
+            Py_BLOCK_THREADS
+            #endif
+            goto __pyx_L12;
+          }
+          __pyx_L12:;
+        }
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":140
+ *   # backup_shutdown_queue.
+ *   def destroy(self):
+ *     if self.c_server != NULL:             # <<<<<<<<<<<<<<
+ *       if not self.is_started:
+ *         pass
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":139
+ *   # portion of this is safe to call from __dealloc__, and potentially remove
+ *   # backup_shutdown_queue.
+ *   def destroy(self):             # <<<<<<<<<<<<<<
+ *     if self.c_server != NULL:
+ *       if not self.is_started:
+ */
+
+  /* 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_AddTraceback("_cython.cygrpc.Server.destroy", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":163
+ *         self.c_server = NULL
+ * 
+ *   def __dealloc__(self):             # <<<<<<<<<<<<<<
+ *     if self.c_server == NULL:
+ *       grpc_shutdown()
+ */
+
+/* Python wrapper */
+static void __pyx_pw_7_cython_6cygrpc_6Server_17__dealloc__(PyObject *__pyx_v_self); /*proto*/
+static void __pyx_pw_7_cython_6cygrpc_6Server_17__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_7_cython_6cygrpc_6Server_16__dealloc__(((struct __pyx_obj_7_cython_6cygrpc_Server *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+}
+
+static void __pyx_pf_7_cython_6cygrpc_6Server_16__dealloc__(struct __pyx_obj_7_cython_6cygrpc_Server *__pyx_v_self) {
+  int __pyx_t_1;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":164
+ * 
+ *   def __dealloc__(self):
+ *     if self.c_server == NULL:             # <<<<<<<<<<<<<<
+ *       grpc_shutdown()
+ */
+  __pyx_t_1 = (__pyx_v_self->c_server == NULL);
+  if (__pyx_t_1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":165
+ *   def __dealloc__(self):
+ *     if self.c_server == NULL:
+ *       grpc_shutdown()             # <<<<<<<<<<<<<<
+ */
+    grpc_shutdown();
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":164
+ * 
+ *   def __dealloc__(self):
+ *     if self.c_server == NULL:             # <<<<<<<<<<<<<<
+ *       grpc_shutdown()
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":163
+ *         self.c_server = NULL
+ * 
+ *   def __dealloc__(self):             # <<<<<<<<<<<<<<
+ *     if self.c_server == NULL:
+ *       grpc_shutdown()
+ */
+
+  /* function exit code */
+}
+
+/* "(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_7_cython_6cygrpc_6Server_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_6Server_19__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_6Server_19__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_6Server_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_7_cython_6cygrpc_6Server_18__reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc_Server *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_6Server_18__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_Server *__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(10, 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("_cython.cygrpc.Server.__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_7_cython_6cygrpc_6Server_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_6Server_21__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_6Server_21__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_6Server_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
+) {
+  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(10, 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(10, 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(10, 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("_cython.cygrpc.Server.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_6Server_20__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc_Server *)__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_7_cython_6cygrpc_6Server_20__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_Server *__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(10, 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("_cython.cygrpc.Server.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":18
+ * cdef class _Tag:
+ * 
+ *   cdef BaseEvent event(self, grpc_event c_event):             # <<<<<<<<<<<<<<
+ *     raise NotImplementedError()
+ * 
+ */
+
+static struct __pyx_obj_7_cython_6cygrpc_BaseEvent *__pyx_f_7_cython_6cygrpc_4_Tag_event(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__Tag *__pyx_v_self, CYTHON_UNUSED grpc_event __pyx_v_c_event) {
+  struct __pyx_obj_7_cython_6cygrpc_BaseEvent *__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("event", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":19
+ * 
+ *   cdef BaseEvent event(self, grpc_event c_event):
+ *     raise NotImplementedError()             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_builtin_NotImplementedError); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 19, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __PYX_ERR(24, 19, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":18
+ * cdef class _Tag:
+ * 
+ *   cdef BaseEvent event(self, grpc_event c_event):             # <<<<<<<<<<<<<<
+ *     raise NotImplementedError()
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc._Tag.event", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __Pyx_XGIVEREF((PyObject *)__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_7_cython_6cygrpc_4_Tag_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_4_Tag_1__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_4_Tag_1__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_4_Tag_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_7_cython_6cygrpc_4_Tag___reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc__Tag *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_4_Tag___reduce_cython__(struct __pyx_obj_7_cython_6cygrpc__Tag *__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(10, 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(10, 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(10, 8, __pyx_L1_error);
+    __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 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__Tag, (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__Tag, (type(self), 0xe3b0c44, None), state
+ *     else:
+ */
+  if (__pyx_v_use_setstate) {
+
+    /* "(tree fragment)":13
+ *         use_setstate = False
+ *     if use_setstate:
+ *         return __pyx_unpickle__Tag, (type(self), 0xe3b0c44, None), state             # <<<<<<<<<<<<<<
+ *     else:
+ *         return __pyx_unpickle__Tag, (type(self), 0xe3b0c44, state)
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_pyx_unpickle__Tag); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 13, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 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(10, 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(10, 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(10, 13, __pyx_L1_error);
+    __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 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(10, 13, __pyx_L1_error);
+    __Pyx_GIVEREF(__pyx_t_1);
+    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1)) __PYX_ERR(10, 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(10, 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__Tag, (type(self), 0xe3b0c44, None), state
+ *     else:
+ */
+  }
+
+  /* "(tree fragment)":15
+ *         return __pyx_unpickle__Tag, (type(self), 0xe3b0c44, None), state
+ *     else:
+ *         return __pyx_unpickle__Tag, (type(self), 0xe3b0c44, state)             # <<<<<<<<<<<<<<
+ * def __setstate_cython__(self, __pyx_state):
+ *     __pyx_unpickle__Tag__set_state(self, __pyx_state)
+ */
+  /*else*/ {
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle__Tag); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 15, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 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(10, 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(10, 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(10, 15, __pyx_L1_error);
+    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 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(10, 15, __pyx_L1_error);
+    __Pyx_GIVEREF(__pyx_t_1);
+    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1)) __PYX_ERR(10, 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("_cython.cygrpc._Tag.__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__Tag, (type(self), 0xe3b0c44, state)
+ * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
+ *     __pyx_unpickle__Tag__set_state(self, __pyx_state)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_4_Tag_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_4_Tag_3__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_4_Tag_3__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_4_Tag_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(10, 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(10, 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(10, 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("_cython.cygrpc._Tag.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_4_Tag_2__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc__Tag *)__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_7_cython_6cygrpc_4_Tag_2__setstate_cython__(struct __pyx_obj_7_cython_6cygrpc__Tag *__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__Tag, (type(self), 0xe3b0c44, state)
+ * def __setstate_cython__(self, __pyx_state):
+ *     __pyx_unpickle__Tag__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(10, 17, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_7_cython_6cygrpc___pyx_unpickle__Tag__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 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__Tag, (type(self), 0xe3b0c44, state)
+ * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
+ *     __pyx_unpickle__Tag__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("_cython.cygrpc._Tag.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":24
+ * cdef class _ConnectivityTag(_Tag):
+ * 
+ *   def __cinit__(self, user_tag):             # <<<<<<<<<<<<<<
+ *     self._user_tag = user_tag
+ * 
+ */
+
+/* Python wrapper */
+static int __pyx_pw_7_cython_6cygrpc_16_ConnectivityTag_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_7_cython_6cygrpc_16_ConnectivityTag_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_user_tag = 0;
+  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject* values[1] = {0};
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  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);
+  {
+    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_user_tag,0};
+    if (__pyx_kwds) {
+      Py_ssize_t kw_args;
+      switch (__pyx_nargs) {
+        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
+      switch (__pyx_nargs) {
+        case  0:
+        if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_user_tag)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 24, __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, "__cinit__") < 0)) __PYX_ERR(24, 24, __pyx_L3_error)
+      }
+    } else if (unlikely(__pyx_nargs != 1)) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+    }
+    __pyx_v_user_tag = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, __pyx_nargs); __PYX_ERR(24, 24, __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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_AddTraceback("_cython.cygrpc._ConnectivityTag.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_16_ConnectivityTag___cinit__(((struct __pyx_obj_7_cython_6cygrpc__ConnectivityTag *)__pyx_v_self), __pyx_v_user_tag);
+
+  /* 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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_7_cython_6cygrpc_16_ConnectivityTag___cinit__(struct __pyx_obj_7_cython_6cygrpc__ConnectivityTag *__pyx_v_self, PyObject *__pyx_v_user_tag) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__cinit__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":25
+ * 
+ *   def __cinit__(self, user_tag):
+ *     self._user_tag = user_tag             # <<<<<<<<<<<<<<
+ * 
+ *   cdef ConnectivityEvent event(self, grpc_event c_event):
+ */
+  __Pyx_INCREF(__pyx_v_user_tag);
+  __Pyx_GIVEREF(__pyx_v_user_tag);
+  __Pyx_GOTREF(__pyx_v_self->_user_tag);
+  __Pyx_DECREF(__pyx_v_self->_user_tag);
+  __pyx_v_self->_user_tag = __pyx_v_user_tag;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":24
+ * cdef class _ConnectivityTag(_Tag):
+ * 
+ *   def __cinit__(self, user_tag):             # <<<<<<<<<<<<<<
+ *     self._user_tag = user_tag
+ * 
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":27
+ *     self._user_tag = user_tag
+ * 
+ *   cdef ConnectivityEvent event(self, grpc_event c_event):             # <<<<<<<<<<<<<<
+ *     return ConnectivityEvent(c_event.type, c_event.success, self._user_tag)
+ * 
+ */
+
+struct __pyx_obj_7_cython_6cygrpc_ConnectivityEvent *__pyx_f_7_cython_6cygrpc_16_ConnectivityTag_event(struct __pyx_obj_7_cython_6cygrpc__ConnectivityTag *__pyx_v_self, grpc_event __pyx_v_c_event) {
+  struct __pyx_obj_7_cython_6cygrpc_ConnectivityEvent *__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("event", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":28
+ * 
+ *   cdef ConnectivityEvent event(self, grpc_event c_event):
+ *     return ConnectivityEvent(c_event.type, c_event.success, self._user_tag)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF((PyObject *)__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_grpc_completion_type(__pyx_v_c_event.type); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 28, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_c_event.success); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 28, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 28, __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(24, 28, __pyx_L1_error);
+  __Pyx_GIVEREF(__pyx_t_2);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2)) __PYX_ERR(24, 28, __pyx_L1_error);
+  __Pyx_INCREF(__pyx_v_self->_user_tag);
+  __Pyx_GIVEREF(__pyx_v_self->_user_tag);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_self->_user_tag)) __PYX_ERR(24, 28, __pyx_L1_error);
+  __pyx_t_1 = 0;
+  __pyx_t_2 = 0;
+  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_7_cython_6cygrpc_ConnectivityEvent), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 28, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_r = ((struct __pyx_obj_7_cython_6cygrpc_ConnectivityEvent *)__pyx_t_2);
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":27
+ *     self._user_tag = user_tag
+ * 
+ *   cdef ConnectivityEvent event(self, grpc_event c_event):             # <<<<<<<<<<<<<<
+ *     return ConnectivityEvent(c_event.type, c_event.success, self._user_tag)
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("_cython.cygrpc._ConnectivityTag.event", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+struct __pyx_obj_7_cython_6cygrpc_ConnectivityEvent *__pyx_f_7_cython_6cygrpc_16_ConnectivityTag_event__pyx_wrap_1(struct __pyx_obj_7_cython_6cygrpc__ConnectivityTag *__pyx_v_self, grpc_event __pyx_v_c_event) {
+  return __pyx_f_7_cython_6cygrpc_16_ConnectivityTag_event(__pyx_v_self, __pyx_v_c_event);
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pxd.pxi":23
+ * cdef class _ConnectivityTag(_Tag):
+ * 
+ *   cdef readonly object _user_tag             # <<<<<<<<<<<<<<
+ * 
+ *   cdef ConnectivityEvent event(self, grpc_event c_event)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_ConnectivityTag_9_user_tag_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_ConnectivityTag_9_user_tag_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_7_cython_6cygrpc_16_ConnectivityTag_9_user_tag___get__(((struct __pyx_obj_7_cython_6cygrpc__ConnectivityTag *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_16_ConnectivityTag_9_user_tag___get__(struct __pyx_obj_7_cython_6cygrpc__ConnectivityTag *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->_user_tag);
+  __pyx_r = __pyx_v_self->_user_tag;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __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_7_cython_6cygrpc_16_ConnectivityTag_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_16_ConnectivityTag_3__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16_ConnectivityTag_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_ConnectivityTag_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_7_cython_6cygrpc_16_ConnectivityTag_2__reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc__ConnectivityTag *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_16_ConnectivityTag_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__ConnectivityTag *__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(10, 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("_cython.cygrpc._ConnectivityTag.__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_7_cython_6cygrpc_16_ConnectivityTag_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_16_ConnectivityTag_5__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16_ConnectivityTag_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_ConnectivityTag_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(10, 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(10, 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(10, 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("_cython.cygrpc._ConnectivityTag.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_16_ConnectivityTag_4__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc__ConnectivityTag *)__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_7_cython_6cygrpc_16_ConnectivityTag_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__ConnectivityTag *__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(10, 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("_cython.cygrpc._ConnectivityTag.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":33
+ * cdef class _RequestCallTag(_Tag):
+ * 
+ *   def __cinit__(self, user_tag):             # <<<<<<<<<<<<<<
+ *     self._user_tag = user_tag
+ *     self.call = None
+ */
+
+/* Python wrapper */
+static int __pyx_pw_7_cython_6cygrpc_15_RequestCallTag_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_7_cython_6cygrpc_15_RequestCallTag_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_user_tag = 0;
+  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject* values[1] = {0};
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  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);
+  {
+    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_user_tag,0};
+    if (__pyx_kwds) {
+      Py_ssize_t kw_args;
+      switch (__pyx_nargs) {
+        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
+      switch (__pyx_nargs) {
+        case  0:
+        if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_user_tag)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 33, __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, "__cinit__") < 0)) __PYX_ERR(24, 33, __pyx_L3_error)
+      }
+    } else if (unlikely(__pyx_nargs != 1)) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+    }
+    __pyx_v_user_tag = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, __pyx_nargs); __PYX_ERR(24, 33, __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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_AddTraceback("_cython.cygrpc._RequestCallTag.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_15_RequestCallTag___cinit__(((struct __pyx_obj_7_cython_6cygrpc__RequestCallTag *)__pyx_v_self), __pyx_v_user_tag);
+
+  /* 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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_7_cython_6cygrpc_15_RequestCallTag___cinit__(struct __pyx_obj_7_cython_6cygrpc__RequestCallTag *__pyx_v_self, PyObject *__pyx_v_user_tag) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__cinit__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":34
+ * 
+ *   def __cinit__(self, user_tag):
+ *     self._user_tag = user_tag             # <<<<<<<<<<<<<<
+ *     self.call = None
+ *     self.call_details = None
+ */
+  __Pyx_INCREF(__pyx_v_user_tag);
+  __Pyx_GIVEREF(__pyx_v_user_tag);
+  __Pyx_GOTREF(__pyx_v_self->_user_tag);
+  __Pyx_DECREF(__pyx_v_self->_user_tag);
+  __pyx_v_self->_user_tag = __pyx_v_user_tag;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":35
+ *   def __cinit__(self, user_tag):
+ *     self._user_tag = user_tag
+ *     self.call = None             # <<<<<<<<<<<<<<
+ *     self.call_details = None
+ * 
+ */
+  __Pyx_INCREF(Py_None);
+  __Pyx_GIVEREF(Py_None);
+  __Pyx_GOTREF((PyObject *)__pyx_v_self->call);
+  __Pyx_DECREF((PyObject *)__pyx_v_self->call);
+  __pyx_v_self->call = ((struct __pyx_obj_7_cython_6cygrpc_Call *)Py_None);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":36
+ *     self._user_tag = user_tag
+ *     self.call = None
+ *     self.call_details = None             # <<<<<<<<<<<<<<
+ * 
+ *   cdef void prepare(self) except *:
+ */
+  __Pyx_INCREF(Py_None);
+  __Pyx_GIVEREF(Py_None);
+  __Pyx_GOTREF((PyObject *)__pyx_v_self->call_details);
+  __Pyx_DECREF((PyObject *)__pyx_v_self->call_details);
+  __pyx_v_self->call_details = ((struct __pyx_obj_7_cython_6cygrpc_CallDetails *)Py_None);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":33
+ * cdef class _RequestCallTag(_Tag):
+ * 
+ *   def __cinit__(self, user_tag):             # <<<<<<<<<<<<<<
+ *     self._user_tag = user_tag
+ *     self.call = None
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":38
+ *     self.call_details = None
+ * 
+ *   cdef void prepare(self) except *:             # <<<<<<<<<<<<<<
+ *     self.call = Call()
+ *     self.call_details = CallDetails()
+ */
+
+static void __pyx_f_7_cython_6cygrpc_15_RequestCallTag_prepare(struct __pyx_obj_7_cython_6cygrpc__RequestCallTag *__pyx_v_self) {
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("prepare", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":39
+ * 
+ *   cdef void prepare(self) except *:
+ *     self.call = Call()             # <<<<<<<<<<<<<<
+ *     self.call_details = CallDetails()
+ *     grpc_metadata_array_init(&self.c_invocation_metadata)
+ */
+  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_7_cython_6cygrpc_Call)); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 39, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF((PyObject *)__pyx_v_self->call);
+  __Pyx_DECREF((PyObject *)__pyx_v_self->call);
+  __pyx_v_self->call = ((struct __pyx_obj_7_cython_6cygrpc_Call *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":40
+ *   cdef void prepare(self) except *:
+ *     self.call = Call()
+ *     self.call_details = CallDetails()             # <<<<<<<<<<<<<<
+ *     grpc_metadata_array_init(&self.c_invocation_metadata)
+ * 
+ */
+  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_7_cython_6cygrpc_CallDetails)); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 40, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF((PyObject *)__pyx_v_self->call_details);
+  __Pyx_DECREF((PyObject *)__pyx_v_self->call_details);
+  __pyx_v_self->call_details = ((struct __pyx_obj_7_cython_6cygrpc_CallDetails *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":41
+ *     self.call = Call()
+ *     self.call_details = CallDetails()
+ *     grpc_metadata_array_init(&self.c_invocation_metadata)             # <<<<<<<<<<<<<<
+ * 
+ *   cdef RequestCallEvent event(self, grpc_event c_event):
+ */
+  grpc_metadata_array_init((&__pyx_v_self->c_invocation_metadata));
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":38
+ *     self.call_details = None
+ * 
+ *   cdef void prepare(self) except *:             # <<<<<<<<<<<<<<
+ *     self.call = Call()
+ *     self.call_details = CallDetails()
+ */
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc._RequestCallTag.prepare", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":43
+ *     grpc_metadata_array_init(&self.c_invocation_metadata)
+ * 
+ *   cdef RequestCallEvent event(self, grpc_event c_event):             # <<<<<<<<<<<<<<
+ *     cdef tuple invocation_metadata = _metadata(&self.c_invocation_metadata)
+ *     grpc_metadata_array_destroy(&self.c_invocation_metadata)
+ */
+
+struct __pyx_obj_7_cython_6cygrpc_RequestCallEvent *__pyx_f_7_cython_6cygrpc_15_RequestCallTag_event(struct __pyx_obj_7_cython_6cygrpc__RequestCallTag *__pyx_v_self, grpc_event __pyx_v_c_event) {
+  PyObject *__pyx_v_invocation_metadata = 0;
+  struct __pyx_obj_7_cython_6cygrpc_RequestCallEvent *__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("event", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":44
+ * 
+ *   cdef RequestCallEvent event(self, grpc_event c_event):
+ *     cdef tuple invocation_metadata = _metadata(&self.c_invocation_metadata)             # <<<<<<<<<<<<<<
+ *     grpc_metadata_array_destroy(&self.c_invocation_metadata)
+ *     return RequestCallEvent(
+ */
+  __pyx_t_1 = __pyx_f_7_cython_6cygrpc__metadata((&__pyx_v_self->c_invocation_metadata)); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 44, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_invocation_metadata = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":45
+ *   cdef RequestCallEvent event(self, grpc_event c_event):
+ *     cdef tuple invocation_metadata = _metadata(&self.c_invocation_metadata)
+ *     grpc_metadata_array_destroy(&self.c_invocation_metadata)             # <<<<<<<<<<<<<<
+ *     return RequestCallEvent(
+ *         c_event.type, c_event.success, self._user_tag, self.call,
+ */
+  grpc_metadata_array_destroy((&__pyx_v_self->c_invocation_metadata));
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":46
+ *     cdef tuple invocation_metadata = _metadata(&self.c_invocation_metadata)
+ *     grpc_metadata_array_destroy(&self.c_invocation_metadata)
+ *     return RequestCallEvent(             # <<<<<<<<<<<<<<
+ *         c_event.type, c_event.success, self._user_tag, self.call,
+ *         self.call_details, invocation_metadata)
+ */
+  __Pyx_XDECREF((PyObject *)__pyx_r);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":47
+ *     grpc_metadata_array_destroy(&self.c_invocation_metadata)
+ *     return RequestCallEvent(
+ *         c_event.type, c_event.success, self._user_tag, self.call,             # <<<<<<<<<<<<<<
+ *         self.call_details, invocation_metadata)
+ * 
+ */
+  __pyx_t_1 = __Pyx_PyInt_From_grpc_completion_type(__pyx_v_c_event.type); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 47, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_c_event.success); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 47, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":46
+ *     cdef tuple invocation_metadata = _metadata(&self.c_invocation_metadata)
+ *     grpc_metadata_array_destroy(&self.c_invocation_metadata)
+ *     return RequestCallEvent(             # <<<<<<<<<<<<<<
+ *         c_event.type, c_event.success, self._user_tag, self.call,
+ *         self.call_details, invocation_metadata)
+ */
+  __pyx_t_3 = PyTuple_New(6); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 46, __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(24, 46, __pyx_L1_error);
+  __Pyx_GIVEREF(__pyx_t_2);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2)) __PYX_ERR(24, 46, __pyx_L1_error);
+  __Pyx_INCREF(__pyx_v_self->_user_tag);
+  __Pyx_GIVEREF(__pyx_v_self->_user_tag);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_self->_user_tag)) __PYX_ERR(24, 46, __pyx_L1_error);
+  __Pyx_INCREF((PyObject *)__pyx_v_self->call);
+  __Pyx_GIVEREF((PyObject *)__pyx_v_self->call);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 3, ((PyObject *)__pyx_v_self->call))) __PYX_ERR(24, 46, __pyx_L1_error);
+  __Pyx_INCREF((PyObject *)__pyx_v_self->call_details);
+  __Pyx_GIVEREF((PyObject *)__pyx_v_self->call_details);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 4, ((PyObject *)__pyx_v_self->call_details))) __PYX_ERR(24, 46, __pyx_L1_error);
+  __Pyx_INCREF(__pyx_v_invocation_metadata);
+  __Pyx_GIVEREF(__pyx_v_invocation_metadata);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 5, __pyx_v_invocation_metadata)) __PYX_ERR(24, 46, __pyx_L1_error);
+  __pyx_t_1 = 0;
+  __pyx_t_2 = 0;
+  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_7_cython_6cygrpc_RequestCallEvent), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 46, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_r = ((struct __pyx_obj_7_cython_6cygrpc_RequestCallEvent *)__pyx_t_2);
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":43
+ *     grpc_metadata_array_init(&self.c_invocation_metadata)
+ * 
+ *   cdef RequestCallEvent event(self, grpc_event c_event):             # <<<<<<<<<<<<<<
+ *     cdef tuple invocation_metadata = _metadata(&self.c_invocation_metadata)
+ *     grpc_metadata_array_destroy(&self.c_invocation_metadata)
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("_cython.cygrpc._RequestCallTag.event", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_invocation_metadata);
+  __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+struct __pyx_obj_7_cython_6cygrpc_RequestCallEvent *__pyx_f_7_cython_6cygrpc_15_RequestCallTag_event__pyx_wrap_1(struct __pyx_obj_7_cython_6cygrpc__RequestCallTag *__pyx_v_self, grpc_event __pyx_v_c_event) {
+  return __pyx_f_7_cython_6cygrpc_15_RequestCallTag_event(__pyx_v_self, __pyx_v_c_event);
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pxd.pxi":30
+ * cdef class _RequestCallTag(_Tag):
+ * 
+ *   cdef readonly object _user_tag             # <<<<<<<<<<<<<<
+ *   cdef Call call
+ *   cdef CallDetails call_details
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_15_RequestCallTag_9_user_tag_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_15_RequestCallTag_9_user_tag_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_7_cython_6cygrpc_15_RequestCallTag_9_user_tag___get__(((struct __pyx_obj_7_cython_6cygrpc__RequestCallTag *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_15_RequestCallTag_9_user_tag___get__(struct __pyx_obj_7_cython_6cygrpc__RequestCallTag *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->_user_tag);
+  __pyx_r = __pyx_v_self->_user_tag;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __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_7_cython_6cygrpc_15_RequestCallTag_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_15_RequestCallTag_3__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_15_RequestCallTag_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_15_RequestCallTag_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_7_cython_6cygrpc_15_RequestCallTag_2__reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc__RequestCallTag *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_15_RequestCallTag_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__RequestCallTag *__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(10, 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("_cython.cygrpc._RequestCallTag.__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_7_cython_6cygrpc_15_RequestCallTag_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_15_RequestCallTag_5__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_15_RequestCallTag_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_15_RequestCallTag_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(10, 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(10, 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(10, 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("_cython.cygrpc._RequestCallTag.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_15_RequestCallTag_4__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc__RequestCallTag *)__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_7_cython_6cygrpc_15_RequestCallTag_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__RequestCallTag *__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(10, 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("_cython.cygrpc._RequestCallTag.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":53
+ * cdef class _BatchOperationTag:
+ * 
+ *   def __cinit__(self, user_tag, operations, call):             # <<<<<<<<<<<<<<
+ *     self._user_tag = user_tag
+ *     self._operations = operations
+ */
+
+/* Python wrapper */
+static int __pyx_pw_7_cython_6cygrpc_18_BatchOperationTag_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_7_cython_6cygrpc_18_BatchOperationTag_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_user_tag = 0;
+  PyObject *__pyx_v_operations = 0;
+  PyObject *__pyx_v_call = 0;
+  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+  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;
+  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);
+  {
+    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_user_tag,&__pyx_n_s_operations,&__pyx_n_s_call,0};
+    if (__pyx_kwds) {
+      Py_ssize_t kw_args;
+      switch (__pyx_nargs) {
+        case  3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
+      switch (__pyx_nargs) {
+        case  0:
+        if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_user_tag)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 53, __pyx_L3_error)
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_operations)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 53, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 1); __PYX_ERR(24, 53, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_call)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[2]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 53, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 2); __PYX_ERR(24, 53, __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, "__cinit__") < 0)) __PYX_ERR(24, 53, __pyx_L3_error)
+      }
+    } else if (unlikely(__pyx_nargs != 3)) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+      values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
+      values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
+    }
+    __pyx_v_user_tag = values[0];
+    __pyx_v_operations = values[1];
+    __pyx_v_call = values[2];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, __pyx_nargs); __PYX_ERR(24, 53, __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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_AddTraceback("_cython.cygrpc._BatchOperationTag.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_18_BatchOperationTag___cinit__(((struct __pyx_obj_7_cython_6cygrpc__BatchOperationTag *)__pyx_v_self), __pyx_v_user_tag, __pyx_v_operations, __pyx_v_call);
+
+  /* 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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_7_cython_6cygrpc_18_BatchOperationTag___cinit__(struct __pyx_obj_7_cython_6cygrpc__BatchOperationTag *__pyx_v_self, PyObject *__pyx_v_user_tag, PyObject *__pyx_v_operations, PyObject *__pyx_v_call) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__cinit__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":54
+ * 
+ *   def __cinit__(self, user_tag, operations, call):
+ *     self._user_tag = user_tag             # <<<<<<<<<<<<<<
+ *     self._operations = operations
+ *     self._retained_call = call
+ */
+  __Pyx_INCREF(__pyx_v_user_tag);
+  __Pyx_GIVEREF(__pyx_v_user_tag);
+  __Pyx_GOTREF(__pyx_v_self->_user_tag);
+  __Pyx_DECREF(__pyx_v_self->_user_tag);
+  __pyx_v_self->_user_tag = __pyx_v_user_tag;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":55
+ *   def __cinit__(self, user_tag, operations, call):
+ *     self._user_tag = user_tag
+ *     self._operations = operations             # <<<<<<<<<<<<<<
+ *     self._retained_call = call
+ * 
+ */
+  __Pyx_INCREF(__pyx_v_operations);
+  __Pyx_GIVEREF(__pyx_v_operations);
+  __Pyx_GOTREF(__pyx_v_self->_operations);
+  __Pyx_DECREF(__pyx_v_self->_operations);
+  __pyx_v_self->_operations = __pyx_v_operations;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":56
+ *     self._user_tag = user_tag
+ *     self._operations = operations
+ *     self._retained_call = call             # <<<<<<<<<<<<<<
+ * 
+ *   cdef void prepare(self) except *:
+ */
+  __Pyx_INCREF(__pyx_v_call);
+  __Pyx_GIVEREF(__pyx_v_call);
+  __Pyx_GOTREF(__pyx_v_self->_retained_call);
+  __Pyx_DECREF(__pyx_v_self->_retained_call);
+  __pyx_v_self->_retained_call = __pyx_v_call;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":53
+ * cdef class _BatchOperationTag:
+ * 
+ *   def __cinit__(self, user_tag, operations, call):             # <<<<<<<<<<<<<<
+ *     self._user_tag = user_tag
+ *     self._operations = operations
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":58
+ *     self._retained_call = call
+ * 
+ *   cdef void prepare(self) except *:             # <<<<<<<<<<<<<<
+ *     cdef Operation operation
+ *     self.c_nops = 0 if self._operations is None else len(self._operations)
+ */
+
+static void __pyx_f_7_cython_6cygrpc_18_BatchOperationTag_prepare(struct __pyx_obj_7_cython_6cygrpc__BatchOperationTag *__pyx_v_self) {
+  struct __pyx_obj_7_cython_6cygrpc_Operation *__pyx_v_operation = 0;
+  PyObject *__pyx_v_index = NULL;
+  __Pyx_RefNannyDeclarations
+  size_t __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)(PyObject *);
+  PyObject *__pyx_t_7 = NULL;
+  grpc_op __pyx_t_8;
+  Py_ssize_t __pyx_t_9;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("prepare", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":60
+ *   cdef void prepare(self) except *:
+ *     cdef Operation operation
+ *     self.c_nops = 0 if self._operations is None else len(self._operations)             # <<<<<<<<<<<<<<
+ *     if 0 < self.c_nops:
+ *       self.c_ops = <grpc_op *>gpr_malloc(sizeof(grpc_op) * self.c_nops)
+ */
+  __pyx_t_2 = (__pyx_v_self->_operations == Py_None);
+  if (__pyx_t_2) {
+    __pyx_t_1 = 0;
+  } else {
+    __pyx_t_3 = __pyx_v_self->_operations;
+    __Pyx_INCREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Length(__pyx_t_3); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(24, 60, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __pyx_t_1 = __pyx_t_4;
+  }
+  __pyx_v_self->c_nops = __pyx_t_1;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":61
+ *     cdef Operation operation
+ *     self.c_nops = 0 if self._operations is None else len(self._operations)
+ *     if 0 < self.c_nops:             # <<<<<<<<<<<<<<
+ *       self.c_ops = <grpc_op *>gpr_malloc(sizeof(grpc_op) * self.c_nops)
+ *       for index, operation in enumerate(self._operations):
+ */
+  __pyx_t_2 = (0 < __pyx_v_self->c_nops);
+  if (__pyx_t_2) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":62
+ *     self.c_nops = 0 if self._operations is None else len(self._operations)
+ *     if 0 < self.c_nops:
+ *       self.c_ops = <grpc_op *>gpr_malloc(sizeof(grpc_op) * self.c_nops)             # <<<<<<<<<<<<<<
+ *       for index, operation in enumerate(self._operations):
+ *         operation.c()
+ */
+    __pyx_v_self->c_ops = ((grpc_op *)gpr_malloc(((sizeof(grpc_op)) * __pyx_v_self->c_nops)));
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":63
+ *     if 0 < self.c_nops:
+ *       self.c_ops = <grpc_op *>gpr_malloc(sizeof(grpc_op) * self.c_nops)
+ *       for index, operation in enumerate(self._operations):             # <<<<<<<<<<<<<<
+ *         operation.c()
+ *         self.c_ops[index] = operation.c_op
+ */
+    __Pyx_INCREF(__pyx_int_0);
+    __pyx_t_3 = __pyx_int_0;
+    if (likely(PyList_CheckExact(__pyx_v_self->_operations)) || PyTuple_CheckExact(__pyx_v_self->_operations)) {
+      __pyx_t_5 = __pyx_v_self->_operations; __Pyx_INCREF(__pyx_t_5);
+      __pyx_t_4 = 0;
+      __pyx_t_6 = NULL;
+    } else {
+      __pyx_t_4 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_v_self->_operations); if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 63, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_5);
+      __pyx_t_6 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 63, __pyx_L1_error)
+    }
+    for (;;) {
+      if (likely(!__pyx_t_6)) {
+        if (likely(PyList_CheckExact(__pyx_t_5))) {
+          {
+            Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_5);
+            #if !CYTHON_ASSUME_SAFE_MACROS
+            if (unlikely((__pyx_temp < 0))) __PYX_ERR(24, 63, __pyx_L1_error)
+            #endif
+            if (__pyx_t_4 >= __pyx_temp) break;
+          }
+          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+          __pyx_t_7 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_7); __pyx_t_4++; if (unlikely((0 < 0))) __PYX_ERR(24, 63, __pyx_L1_error)
+          #else
+          __pyx_t_7 = __Pyx_PySequence_ITEM(__pyx_t_5, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_7)) __PYX_ERR(24, 63, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_7);
+          #endif
+        } else {
+          {
+            Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_5);
+            #if !CYTHON_ASSUME_SAFE_MACROS
+            if (unlikely((__pyx_temp < 0))) __PYX_ERR(24, 63, __pyx_L1_error)
+            #endif
+            if (__pyx_t_4 >= __pyx_temp) break;
+          }
+          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+          __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_7); __pyx_t_4++; if (unlikely((0 < 0))) __PYX_ERR(24, 63, __pyx_L1_error)
+          #else
+          __pyx_t_7 = __Pyx_PySequence_ITEM(__pyx_t_5, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_7)) __PYX_ERR(24, 63, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_7);
+          #endif
+        }
+      } else {
+        __pyx_t_7 = __pyx_t_6(__pyx_t_5);
+        if (unlikely(!__pyx_t_7)) {
+          PyObject* exc_type = PyErr_Occurred();
+          if (exc_type) {
+            if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
+            else __PYX_ERR(24, 63, __pyx_L1_error)
+          }
+          break;
+        }
+        __Pyx_GOTREF(__pyx_t_7);
+      }
+      if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_7_cython_6cygrpc_Operation))))) __PYX_ERR(24, 63, __pyx_L1_error)
+      __Pyx_XDECREF_SET(__pyx_v_operation, ((struct __pyx_obj_7_cython_6cygrpc_Operation *)__pyx_t_7));
+      __pyx_t_7 = 0;
+      __Pyx_INCREF(__pyx_t_3);
+      __Pyx_XDECREF_SET(__pyx_v_index, __pyx_t_3);
+      __pyx_t_7 = __Pyx_PyInt_AddObjC(__pyx_t_3, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(24, 63, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_7);
+      __Pyx_DECREF(__pyx_t_3);
+      __pyx_t_3 = __pyx_t_7;
+      __pyx_t_7 = 0;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":64
+ *       self.c_ops = <grpc_op *>gpr_malloc(sizeof(grpc_op) * self.c_nops)
+ *       for index, operation in enumerate(self._operations):
+ *         operation.c()             # <<<<<<<<<<<<<<
+ *         self.c_ops[index] = operation.c_op
+ * 
+ */
+      ((struct __pyx_vtabstruct_7_cython_6cygrpc_Operation *)__pyx_v_operation->__pyx_vtab)->c(__pyx_v_operation); if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 64, __pyx_L1_error)
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":65
+ *       for index, operation in enumerate(self._operations):
+ *         operation.c()
+ *         self.c_ops[index] = operation.c_op             # <<<<<<<<<<<<<<
+ * 
+ *   cdef BatchOperationEvent event(self, grpc_event c_event):
+ */
+      __pyx_t_8 = __pyx_v_operation->c_op;
+      __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_v_index); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(24, 65, __pyx_L1_error)
+      (__pyx_v_self->c_ops[__pyx_t_9]) = __pyx_t_8;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":63
+ *     if 0 < self.c_nops:
+ *       self.c_ops = <grpc_op *>gpr_malloc(sizeof(grpc_op) * self.c_nops)
+ *       for index, operation in enumerate(self._operations):             # <<<<<<<<<<<<<<
+ *         operation.c()
+ *         self.c_ops[index] = operation.c_op
+ */
+    }
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":61
+ *     cdef Operation operation
+ *     self.c_nops = 0 if self._operations is None else len(self._operations)
+ *     if 0 < self.c_nops:             # <<<<<<<<<<<<<<
+ *       self.c_ops = <grpc_op *>gpr_malloc(sizeof(grpc_op) * self.c_nops)
+ *       for index, operation in enumerate(self._operations):
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":58
+ *     self._retained_call = call
+ * 
+ *   cdef void prepare(self) except *:             # <<<<<<<<<<<<<<
+ *     cdef Operation operation
+ *     self.c_nops = 0 if self._operations is None else len(self._operations)
+ */
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_AddTraceback("_cython.cygrpc._BatchOperationTag.prepare", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_operation);
+  __Pyx_XDECREF(__pyx_v_index);
+  __Pyx_RefNannyFinishContext();
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":67
+ *         self.c_ops[index] = operation.c_op
+ * 
+ *   cdef BatchOperationEvent event(self, grpc_event c_event):             # <<<<<<<<<<<<<<
+ *     cdef Operation operation
+ *     if 0 < self.c_nops:
+ */
+
+struct __pyx_obj_7_cython_6cygrpc_BatchOperationEvent *__pyx_f_7_cython_6cygrpc_18_BatchOperationTag_event(struct __pyx_obj_7_cython_6cygrpc__BatchOperationTag *__pyx_v_self, grpc_event __pyx_v_c_event) {
+  struct __pyx_obj_7_cython_6cygrpc_Operation *__pyx_v_operation = 0;
+  struct __pyx_obj_7_cython_6cygrpc_BatchOperationEvent *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  Py_ssize_t __pyx_t_3;
+  PyObject *(*__pyx_t_4)(PyObject *);
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("event", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":69
+ *   cdef BatchOperationEvent event(self, grpc_event c_event):
+ *     cdef Operation operation
+ *     if 0 < self.c_nops:             # <<<<<<<<<<<<<<
+ *       for operation in self._operations:
+ *         operation.un_c()
+ */
+  __pyx_t_1 = (0 < __pyx_v_self->c_nops);
+  if (__pyx_t_1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":70
+ *     cdef Operation operation
+ *     if 0 < self.c_nops:
+ *       for operation in self._operations:             # <<<<<<<<<<<<<<
+ *         operation.un_c()
+ *       gpr_free(self.c_ops)
+ */
+    if (likely(PyList_CheckExact(__pyx_v_self->_operations)) || PyTuple_CheckExact(__pyx_v_self->_operations)) {
+      __pyx_t_2 = __pyx_v_self->_operations; __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_self->_operations); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 70, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __pyx_t_4 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 70, __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(24, 70, __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(24, 70, __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(24, 70, __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(24, 70, __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(24, 70, __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(24, 70, __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(24, 70, __pyx_L1_error)
+          }
+          break;
+        }
+        __Pyx_GOTREF(__pyx_t_5);
+      }
+      if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_7_cython_6cygrpc_Operation))))) __PYX_ERR(24, 70, __pyx_L1_error)
+      __Pyx_XDECREF_SET(__pyx_v_operation, ((struct __pyx_obj_7_cython_6cygrpc_Operation *)__pyx_t_5));
+      __pyx_t_5 = 0;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":71
+ *     if 0 < self.c_nops:
+ *       for operation in self._operations:
+ *         operation.un_c()             # <<<<<<<<<<<<<<
+ *       gpr_free(self.c_ops)
+ *       return BatchOperationEvent(
+ */
+      ((struct __pyx_vtabstruct_7_cython_6cygrpc_Operation *)__pyx_v_operation->__pyx_vtab)->un_c(__pyx_v_operation); if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 71, __pyx_L1_error)
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":70
+ *     cdef Operation operation
+ *     if 0 < self.c_nops:
+ *       for operation in self._operations:             # <<<<<<<<<<<<<<
+ *         operation.un_c()
+ *       gpr_free(self.c_ops)
+ */
+    }
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":72
+ *       for operation in self._operations:
+ *         operation.un_c()
+ *       gpr_free(self.c_ops)             # <<<<<<<<<<<<<<
+ *       return BatchOperationEvent(
+ *           c_event.type, c_event.success, self._user_tag, self._operations)
+ */
+    gpr_free(__pyx_v_self->c_ops);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":73
+ *         operation.un_c()
+ *       gpr_free(self.c_ops)
+ *       return BatchOperationEvent(             # <<<<<<<<<<<<<<
+ *           c_event.type, c_event.success, self._user_tag, self._operations)
+ *     else:
+ */
+    __Pyx_XDECREF((PyObject *)__pyx_r);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":74
+ *       gpr_free(self.c_ops)
+ *       return BatchOperationEvent(
+ *           c_event.type, c_event.success, self._user_tag, self._operations)             # <<<<<<<<<<<<<<
+ *     else:
+ *       return BatchOperationEvent(
+ */
+    __pyx_t_2 = __Pyx_PyInt_From_grpc_completion_type(__pyx_v_c_event.type); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 74, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_c_event.success); if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 74, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":73
+ *         operation.un_c()
+ *       gpr_free(self.c_ops)
+ *       return BatchOperationEvent(             # <<<<<<<<<<<<<<
+ *           c_event.type, c_event.success, self._user_tag, self._operations)
+ *     else:
+ */
+    __pyx_t_6 = PyTuple_New(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 73, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_6);
+    __Pyx_GIVEREF(__pyx_t_2);
+    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2)) __PYX_ERR(24, 73, __pyx_L1_error);
+    __Pyx_GIVEREF(__pyx_t_5);
+    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5)) __PYX_ERR(24, 73, __pyx_L1_error);
+    __Pyx_INCREF(__pyx_v_self->_user_tag);
+    __Pyx_GIVEREF(__pyx_v_self->_user_tag);
+    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_v_self->_user_tag)) __PYX_ERR(24, 73, __pyx_L1_error);
+    __Pyx_INCREF(__pyx_v_self->_operations);
+    __Pyx_GIVEREF(__pyx_v_self->_operations);
+    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 3, __pyx_v_self->_operations)) __PYX_ERR(24, 73, __pyx_L1_error);
+    __pyx_t_2 = 0;
+    __pyx_t_5 = 0;
+    __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_7_cython_6cygrpc_BatchOperationEvent), __pyx_t_6, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 73, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+    __pyx_r = ((struct __pyx_obj_7_cython_6cygrpc_BatchOperationEvent *)__pyx_t_5);
+    __pyx_t_5 = 0;
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":69
+ *   cdef BatchOperationEvent event(self, grpc_event c_event):
+ *     cdef Operation operation
+ *     if 0 < self.c_nops:             # <<<<<<<<<<<<<<
+ *       for operation in self._operations:
+ *         operation.un_c()
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":76
+ *           c_event.type, c_event.success, self._user_tag, self._operations)
+ *     else:
+ *       return BatchOperationEvent(             # <<<<<<<<<<<<<<
+ *           c_event.type, c_event.success, self._user_tag, ())
+ * 
+ */
+  /*else*/ {
+    __Pyx_XDECREF((PyObject *)__pyx_r);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":77
+ *     else:
+ *       return BatchOperationEvent(
+ *           c_event.type, c_event.success, self._user_tag, ())             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+    __pyx_t_5 = __Pyx_PyInt_From_grpc_completion_type(__pyx_v_c_event.type); if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 77, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_c_event.success); if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 77, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_6);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":76
+ *           c_event.type, c_event.success, self._user_tag, self._operations)
+ *     else:
+ *       return BatchOperationEvent(             # <<<<<<<<<<<<<<
+ *           c_event.type, c_event.success, self._user_tag, ())
+ * 
+ */
+    __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 76, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_GIVEREF(__pyx_t_5);
+    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5)) __PYX_ERR(24, 76, __pyx_L1_error);
+    __Pyx_GIVEREF(__pyx_t_6);
+    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_6)) __PYX_ERR(24, 76, __pyx_L1_error);
+    __Pyx_INCREF(__pyx_v_self->_user_tag);
+    __Pyx_GIVEREF(__pyx_v_self->_user_tag);
+    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_self->_user_tag)) __PYX_ERR(24, 76, __pyx_L1_error);
+    __Pyx_INCREF(__pyx_empty_tuple);
+    __Pyx_GIVEREF(__pyx_empty_tuple);
+    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_empty_tuple)) __PYX_ERR(24, 76, __pyx_L1_error);
+    __pyx_t_5 = 0;
+    __pyx_t_6 = 0;
+    __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_7_cython_6cygrpc_BatchOperationEvent), __pyx_t_2, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 76, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_6);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_r = ((struct __pyx_obj_7_cython_6cygrpc_BatchOperationEvent *)__pyx_t_6);
+    __pyx_t_6 = 0;
+    goto __pyx_L0;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":67
+ *         self.c_ops[index] = operation.c_op
+ * 
+ *   cdef BatchOperationEvent event(self, grpc_event c_event):             # <<<<<<<<<<<<<<
+ *     cdef Operation operation
+ *     if 0 < self.c_nops:
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("_cython.cygrpc._BatchOperationTag.event", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_operation);
+  __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+struct __pyx_obj_7_cython_6cygrpc_BatchOperationEvent *__pyx_f_7_cython_6cygrpc_18_BatchOperationTag_event__pyx_wrap_1(struct __pyx_obj_7_cython_6cygrpc__BatchOperationTag *__pyx_v_self, grpc_event __pyx_v_c_event) {
+  return __pyx_f_7_cython_6cygrpc_18_BatchOperationTag_event(__pyx_v_self, __pyx_v_c_event);
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pxd.pxi":42
+ * 
+ *   cdef object _user_tag
+ *   cdef readonly object _operations             # <<<<<<<<<<<<<<
+ *   cdef readonly object _retained_call
+ *   cdef grpc_op *c_ops
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_18_BatchOperationTag_11_operations_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_18_BatchOperationTag_11_operations_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_7_cython_6cygrpc_18_BatchOperationTag_11_operations___get__(((struct __pyx_obj_7_cython_6cygrpc__BatchOperationTag *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_18_BatchOperationTag_11_operations___get__(struct __pyx_obj_7_cython_6cygrpc__BatchOperationTag *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->_operations);
+  __pyx_r = __pyx_v_self->_operations;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pxd.pxi":43
+ *   cdef object _user_tag
+ *   cdef readonly object _operations
+ *   cdef readonly object _retained_call             # <<<<<<<<<<<<<<
+ *   cdef grpc_op *c_ops
+ *   cdef size_t c_nops
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_18_BatchOperationTag_14_retained_call_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_18_BatchOperationTag_14_retained_call_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_7_cython_6cygrpc_18_BatchOperationTag_14_retained_call___get__(((struct __pyx_obj_7_cython_6cygrpc__BatchOperationTag *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_18_BatchOperationTag_14_retained_call___get__(struct __pyx_obj_7_cython_6cygrpc__BatchOperationTag *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->_retained_call);
+  __pyx_r = __pyx_v_self->_retained_call;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __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_7_cython_6cygrpc_18_BatchOperationTag_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_18_BatchOperationTag_3__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_18_BatchOperationTag_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_18_BatchOperationTag_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_7_cython_6cygrpc_18_BatchOperationTag_2__reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc__BatchOperationTag *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_18_BatchOperationTag_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__BatchOperationTag *__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(10, 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("_cython.cygrpc._BatchOperationTag.__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_7_cython_6cygrpc_18_BatchOperationTag_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_18_BatchOperationTag_5__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_18_BatchOperationTag_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_18_BatchOperationTag_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(10, 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(10, 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(10, 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("_cython.cygrpc._BatchOperationTag.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_18_BatchOperationTag_4__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc__BatchOperationTag *)__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_7_cython_6cygrpc_18_BatchOperationTag_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__BatchOperationTag *__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(10, 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("_cython.cygrpc._BatchOperationTag.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":82
+ * cdef class _ServerShutdownTag(_Tag):
+ * 
+ *   def __cinit__(self, user_tag, shutting_down_server):             # <<<<<<<<<<<<<<
+ *     self._user_tag = user_tag
+ *     self._shutting_down_server = shutting_down_server
+ */
+
+/* Python wrapper */
+static int __pyx_pw_7_cython_6cygrpc_18_ServerShutdownTag_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_7_cython_6cygrpc_18_ServerShutdownTag_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_user_tag = 0;
+  PyObject *__pyx_v_shutting_down_server = 0;
+  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject* values[2] = {0,0};
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  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);
+  {
+    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_user_tag,&__pyx_n_s_shutting_down_server,0};
+    if (__pyx_kwds) {
+      Py_ssize_t kw_args;
+      switch (__pyx_nargs) {
+        case  2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
+      switch (__pyx_nargs) {
+        case  0:
+        if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_user_tag)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 82, __pyx_L3_error)
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_shutting_down_server)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 82, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, 1); __PYX_ERR(24, 82, __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, "__cinit__") < 0)) __PYX_ERR(24, 82, __pyx_L3_error)
+      }
+    } else if (unlikely(__pyx_nargs != 2)) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+      values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
+    }
+    __pyx_v_user_tag = values[0];
+    __pyx_v_shutting_down_server = values[1];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, __pyx_nargs); __PYX_ERR(24, 82, __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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_AddTraceback("_cython.cygrpc._ServerShutdownTag.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_18_ServerShutdownTag___cinit__(((struct __pyx_obj_7_cython_6cygrpc__ServerShutdownTag *)__pyx_v_self), __pyx_v_user_tag, __pyx_v_shutting_down_server);
+
+  /* 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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_7_cython_6cygrpc_18_ServerShutdownTag___cinit__(struct __pyx_obj_7_cython_6cygrpc__ServerShutdownTag *__pyx_v_self, PyObject *__pyx_v_user_tag, PyObject *__pyx_v_shutting_down_server) {
+  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("__cinit__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":83
+ * 
+ *   def __cinit__(self, user_tag, shutting_down_server):
+ *     self._user_tag = user_tag             # <<<<<<<<<<<<<<
+ *     self._shutting_down_server = shutting_down_server
+ * 
+ */
+  __Pyx_INCREF(__pyx_v_user_tag);
+  __Pyx_GIVEREF(__pyx_v_user_tag);
+  __Pyx_GOTREF(__pyx_v_self->_user_tag);
+  __Pyx_DECREF(__pyx_v_self->_user_tag);
+  __pyx_v_self->_user_tag = __pyx_v_user_tag;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":84
+ *   def __cinit__(self, user_tag, shutting_down_server):
+ *     self._user_tag = user_tag
+ *     self._shutting_down_server = shutting_down_server             # <<<<<<<<<<<<<<
+ * 
+ *   cdef ServerShutdownEvent event(self, grpc_event c_event):
+ */
+  if (!(likely(((__pyx_v_shutting_down_server) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_shutting_down_server, __pyx_ptype_7_cython_6cygrpc_Server))))) __PYX_ERR(24, 84, __pyx_L1_error)
+  __pyx_t_1 = __pyx_v_shutting_down_server;
+  __Pyx_INCREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF((PyObject *)__pyx_v_self->_shutting_down_server);
+  __Pyx_DECREF((PyObject *)__pyx_v_self->_shutting_down_server);
+  __pyx_v_self->_shutting_down_server = ((struct __pyx_obj_7_cython_6cygrpc_Server *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":82
+ * cdef class _ServerShutdownTag(_Tag):
+ * 
+ *   def __cinit__(self, user_tag, shutting_down_server):             # <<<<<<<<<<<<<<
+ *     self._user_tag = user_tag
+ *     self._shutting_down_server = shutting_down_server
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc._ServerShutdownTag.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":86
+ *     self._shutting_down_server = shutting_down_server
+ * 
+ *   cdef ServerShutdownEvent event(self, grpc_event c_event):             # <<<<<<<<<<<<<<
+ *     self._shutting_down_server.notify_shutdown_complete()
+ *     return ServerShutdownEvent(c_event.type, c_event.success, self._user_tag)
+ */
+
+struct __pyx_obj_7_cython_6cygrpc_ServerShutdownEvent *__pyx_f_7_cython_6cygrpc_18_ServerShutdownTag_event(struct __pyx_obj_7_cython_6cygrpc__ServerShutdownTag *__pyx_v_self, grpc_event __pyx_v_c_event) {
+  struct __pyx_obj_7_cython_6cygrpc_ServerShutdownEvent *__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("event", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":87
+ * 
+ *   cdef ServerShutdownEvent event(self, grpc_event c_event):
+ *     self._shutting_down_server.notify_shutdown_complete()             # <<<<<<<<<<<<<<
+ *     return ServerShutdownEvent(c_event.type, c_event.success, self._user_tag)
+ */
+  __pyx_t_1 = ((struct __pyx_vtabstruct_7_cython_6cygrpc_Server *)__pyx_v_self->_shutting_down_server->__pyx_vtab)->notify_shutdown_complete(__pyx_v_self->_shutting_down_server); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 87, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":88
+ *   cdef ServerShutdownEvent event(self, grpc_event c_event):
+ *     self._shutting_down_server.notify_shutdown_complete()
+ *     return ServerShutdownEvent(c_event.type, c_event.success, self._user_tag)             # <<<<<<<<<<<<<<
+ */
+  __Pyx_XDECREF((PyObject *)__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_grpc_completion_type(__pyx_v_c_event.type); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 88, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_c_event.success); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 88, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 88, __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(24, 88, __pyx_L1_error);
+  __Pyx_GIVEREF(__pyx_t_2);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2)) __PYX_ERR(24, 88, __pyx_L1_error);
+  __Pyx_INCREF(__pyx_v_self->_user_tag);
+  __Pyx_GIVEREF(__pyx_v_self->_user_tag);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_self->_user_tag)) __PYX_ERR(24, 88, __pyx_L1_error);
+  __pyx_t_1 = 0;
+  __pyx_t_2 = 0;
+  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_7_cython_6cygrpc_ServerShutdownEvent), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 88, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_r = ((struct __pyx_obj_7_cython_6cygrpc_ServerShutdownEvent *)__pyx_t_2);
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":86
+ *     self._shutting_down_server = shutting_down_server
+ * 
+ *   cdef ServerShutdownEvent event(self, grpc_event c_event):             # <<<<<<<<<<<<<<
+ *     self._shutting_down_server.notify_shutdown_complete()
+ *     return ServerShutdownEvent(c_event.type, c_event.success, self._user_tag)
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("_cython.cygrpc._ServerShutdownTag.event", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+struct __pyx_obj_7_cython_6cygrpc_ServerShutdownEvent *__pyx_f_7_cython_6cygrpc_18_ServerShutdownTag_event__pyx_wrap_1(struct __pyx_obj_7_cython_6cygrpc__ServerShutdownTag *__pyx_v_self, grpc_event __pyx_v_c_event) {
+  return __pyx_f_7_cython_6cygrpc_18_ServerShutdownTag_event(__pyx_v_self, __pyx_v_c_event);
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pxd.pxi":53
+ * cdef class _ServerShutdownTag(_Tag):
+ * 
+ *   cdef readonly object _user_tag             # <<<<<<<<<<<<<<
+ *   # This allows CompletionQueue to notify the Python Server object that the
+ *   # underlying GRPC core server has shutdown
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_18_ServerShutdownTag_9_user_tag_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_18_ServerShutdownTag_9_user_tag_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_7_cython_6cygrpc_18_ServerShutdownTag_9_user_tag___get__(((struct __pyx_obj_7_cython_6cygrpc__ServerShutdownTag *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_18_ServerShutdownTag_9_user_tag___get__(struct __pyx_obj_7_cython_6cygrpc__ServerShutdownTag *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->_user_tag);
+  __pyx_r = __pyx_v_self->_user_tag;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pxd.pxi":56
+ *   # This allows CompletionQueue to notify the Python Server object that the
+ *   # underlying GRPC core server has shutdown
+ *   cdef readonly Server _shutting_down_server             # <<<<<<<<<<<<<<
+ * 
+ *   cdef ServerShutdownEvent event(self, grpc_event c_event)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_18_ServerShutdownTag_21_shutting_down_server_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_18_ServerShutdownTag_21_shutting_down_server_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_7_cython_6cygrpc_18_ServerShutdownTag_21_shutting_down_server___get__(((struct __pyx_obj_7_cython_6cygrpc__ServerShutdownTag *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_18_ServerShutdownTag_21_shutting_down_server___get__(struct __pyx_obj_7_cython_6cygrpc__ServerShutdownTag *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF((PyObject *)__pyx_v_self->_shutting_down_server);
+  __pyx_r = ((PyObject *)__pyx_v_self->_shutting_down_server);
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __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_7_cython_6cygrpc_18_ServerShutdownTag_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_18_ServerShutdownTag_3__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_18_ServerShutdownTag_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_18_ServerShutdownTag_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_7_cython_6cygrpc_18_ServerShutdownTag_2__reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc__ServerShutdownTag *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_18_ServerShutdownTag_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__ServerShutdownTag *__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(10, 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("_cython.cygrpc._ServerShutdownTag.__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_7_cython_6cygrpc_18_ServerShutdownTag_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_18_ServerShutdownTag_5__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_18_ServerShutdownTag_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_18_ServerShutdownTag_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(10, 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(10, 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(10, 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("_cython.cygrpc._ServerShutdownTag.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_18_ServerShutdownTag_4__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc__ServerShutdownTag *)__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_7_cython_6cygrpc_18_ServerShutdownTag_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__ServerShutdownTag *__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(10, 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("_cython.cygrpc._ServerShutdownTag.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/time.pyx.pxi":16
+ * 
+ * 
+ * cdef gpr_timespec _timespec_from_time(object time) except *:             # <<<<<<<<<<<<<<
+ *   if time is None:
+ *     return gpr_inf_future(GPR_CLOCK_REALTIME)
+ */
+
+static gpr_timespec __pyx_f_7_cython_6cygrpc__timespec_from_time(PyObject *__pyx_v_time) {
+  gpr_timespec __pyx_r;
+  int __pyx_t_1;
+  double __pyx_t_2;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/time.pyx.pxi":17
+ * 
+ * cdef gpr_timespec _timespec_from_time(object time) except *:
+ *   if time is None:             # <<<<<<<<<<<<<<
+ *     return gpr_inf_future(GPR_CLOCK_REALTIME)
+ *   else:
+ */
+  __pyx_t_1 = (__pyx_v_time == Py_None);
+  if (__pyx_t_1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/time.pyx.pxi":18
+ * cdef gpr_timespec _timespec_from_time(object time) except *:
+ *   if time is None:
+ *     return gpr_inf_future(GPR_CLOCK_REALTIME)             # <<<<<<<<<<<<<<
+ *   else:
+ *     return gpr_time_from_nanos(
+ */
+    __pyx_r = gpr_inf_future(GPR_CLOCK_REALTIME);
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/time.pyx.pxi":17
+ * 
+ * cdef gpr_timespec _timespec_from_time(object time) except *:
+ *   if time is None:             # <<<<<<<<<<<<<<
+ *     return gpr_inf_future(GPR_CLOCK_REALTIME)
+ *   else:
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/time.pyx.pxi":20
+ *     return gpr_inf_future(GPR_CLOCK_REALTIME)
+ *   else:
+ *     return gpr_time_from_nanos(             # <<<<<<<<<<<<<<
+ *       <int64_t>(<double>time * GPR_NS_PER_SEC),
+ *       GPR_CLOCK_REALTIME,
+ */
+  /*else*/ {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/time.pyx.pxi":21
+ *   else:
+ *     return gpr_time_from_nanos(
+ *       <int64_t>(<double>time * GPR_NS_PER_SEC),             # <<<<<<<<<<<<<<
+ *       GPR_CLOCK_REALTIME,
+ *     )
+ */
+    __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_time); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(25, 21, __pyx_L1_error)
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/time.pyx.pxi":20
+ *     return gpr_inf_future(GPR_CLOCK_REALTIME)
+ *   else:
+ *     return gpr_time_from_nanos(             # <<<<<<<<<<<<<<
+ *       <int64_t>(<double>time * GPR_NS_PER_SEC),
+ *       GPR_CLOCK_REALTIME,
+ */
+    __pyx_r = gpr_time_from_nanos(((__pyx_t_7_cython_6cygrpc_int64_t)(((double)__pyx_t_2) * GPR_NS_PER_SEC)), GPR_CLOCK_REALTIME);
+    goto __pyx_L0;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/time.pyx.pxi":16
+ * 
+ * 
+ * cdef gpr_timespec _timespec_from_time(object time) except *:             # <<<<<<<<<<<<<<
+ *   if time is None:
+ *     return gpr_inf_future(GPR_CLOCK_REALTIME)
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc._timespec_from_time", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_pretend_to_initialize(&__pyx_r);
+  __pyx_L0:;
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/time.pyx.pxi":26
+ * 
+ * 
+ * cdef double _time_from_timespec(gpr_timespec timespec) except *:             # <<<<<<<<<<<<<<
+ *   cdef gpr_timespec real_timespec = gpr_convert_clock_type(
+ *       timespec, GPR_CLOCK_REALTIME)
+ */
+
+static double __pyx_f_7_cython_6cygrpc__time_from_timespec(gpr_timespec __pyx_v_timespec) {
+  gpr_timespec __pyx_v_real_timespec;
+  double __pyx_r;
+  double __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/time.pyx.pxi":27
+ * 
+ * cdef double _time_from_timespec(gpr_timespec timespec) except *:
+ *   cdef gpr_timespec real_timespec = gpr_convert_clock_type(             # <<<<<<<<<<<<<<
+ *       timespec, GPR_CLOCK_REALTIME)
+ *   return gpr_timespec_to_micros(real_timespec) / GPR_US_PER_SEC
+ */
+  __pyx_v_real_timespec = gpr_convert_clock_type(__pyx_v_timespec, GPR_CLOCK_REALTIME);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/time.pyx.pxi":29
+ *   cdef gpr_timespec real_timespec = gpr_convert_clock_type(
+ *       timespec, GPR_CLOCK_REALTIME)
+ *   return gpr_timespec_to_micros(real_timespec) / GPR_US_PER_SEC             # <<<<<<<<<<<<<<
+ */
+  __pyx_t_1 = gpr_timespec_to_micros(__pyx_v_real_timespec);
+  if (unlikely(GPR_US_PER_SEC == 0)) {
+    PyErr_SetString(PyExc_ZeroDivisionError, "float division");
+    __PYX_ERR(25, 29, __pyx_L1_error)
+  }
+  __pyx_r = (__pyx_t_1 / ((double)GPR_US_PER_SEC));
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/time.pyx.pxi":26
+ * 
+ * 
+ * cdef double _time_from_timespec(gpr_timespec timespec) except *:             # <<<<<<<<<<<<<<
+ *   cdef gpr_timespec real_timespec = gpr_convert_clock_type(
+ *       timespec, GPR_CLOCK_REALTIME)
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc._time_from_timespec", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/vtable.pyx.pxi":16
+ * 
+ * # TODO(https://github.com/grpc/grpc/issues/15662): Reform this.
+ * cdef void* _copy_pointer(void* pointer) noexcept:             # <<<<<<<<<<<<<<
+ *   return pointer
+ * 
+ */
+
+static void *__pyx_f_7_cython_6cygrpc__copy_pointer(void *__pyx_v_pointer) {
+  void *__pyx_r;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/vtable.pyx.pxi":17
+ * # TODO(https://github.com/grpc/grpc/issues/15662): Reform this.
+ * cdef void* _copy_pointer(void* pointer) noexcept:
+ *   return pointer             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_r = __pyx_v_pointer;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/vtable.pyx.pxi":16
+ * 
+ * # TODO(https://github.com/grpc/grpc/issues/15662): Reform this.
+ * cdef void* _copy_pointer(void* pointer) noexcept:             # <<<<<<<<<<<<<<
+ *   return pointer
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L0:;
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/vtable.pyx.pxi":21
+ * 
+ * # TODO(https://github.com/grpc/grpc/issues/15662): Reform this.
+ * cdef void _destroy_pointer(void* pointer) noexcept:             # <<<<<<<<<<<<<<
+ *   pass
+ * 
+ */
+
+static void __pyx_f_7_cython_6cygrpc__destroy_pointer(CYTHON_UNUSED void *__pyx_v_pointer) {
+
+  /* function exit code */
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/vtable.pyx.pxi":25
+ * 
+ * 
+ * cdef int _compare_pointer(void* first_pointer, void* second_pointer) noexcept:             # <<<<<<<<<<<<<<
+ *   if first_pointer < second_pointer:
+ *     return -1
+ */
+
+static int __pyx_f_7_cython_6cygrpc__compare_pointer(void *__pyx_v_first_pointer, void *__pyx_v_second_pointer) {
+  int __pyx_r;
+  int __pyx_t_1;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/vtable.pyx.pxi":26
+ * 
+ * cdef int _compare_pointer(void* first_pointer, void* second_pointer) noexcept:
+ *   if first_pointer < second_pointer:             # <<<<<<<<<<<<<<
+ *     return -1
+ *   elif first_pointer > second_pointer:
+ */
+  __pyx_t_1 = (__pyx_v_first_pointer < __pyx_v_second_pointer);
+  if (__pyx_t_1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/vtable.pyx.pxi":27
+ * cdef int _compare_pointer(void* first_pointer, void* second_pointer) noexcept:
+ *   if first_pointer < second_pointer:
+ *     return -1             # <<<<<<<<<<<<<<
+ *   elif first_pointer > second_pointer:
+ *     return 1
+ */
+    __pyx_r = -1;
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/vtable.pyx.pxi":26
+ * 
+ * cdef int _compare_pointer(void* first_pointer, void* second_pointer) noexcept:
+ *   if first_pointer < second_pointer:             # <<<<<<<<<<<<<<
+ *     return -1
+ *   elif first_pointer > second_pointer:
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/vtable.pyx.pxi":28
+ *   if first_pointer < second_pointer:
+ *     return -1
+ *   elif first_pointer > second_pointer:             # <<<<<<<<<<<<<<
+ *     return 1
+ *   else:
+ */
+  __pyx_t_1 = (__pyx_v_first_pointer > __pyx_v_second_pointer);
+  if (__pyx_t_1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/vtable.pyx.pxi":29
+ *     return -1
+ *   elif first_pointer > second_pointer:
+ *     return 1             # <<<<<<<<<<<<<<
+ *   else:
+ *     return 0
+ */
+    __pyx_r = 1;
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/vtable.pyx.pxi":28
+ *   if first_pointer < second_pointer:
+ *     return -1
+ *   elif first_pointer > second_pointer:             # <<<<<<<<<<<<<<
+ *     return 1
+ *   else:
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/vtable.pyx.pxi":31
+ *     return 1
+ *   else:
+ *     return 0             # <<<<<<<<<<<<<<
+ * 
+ * cdef grpc_arg_pointer_vtable default_vtable
+ */
+  /*else*/ {
+    __pyx_r = 0;
+    goto __pyx_L0;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/vtable.pyx.pxi":25
+ * 
+ * 
+ * cdef int _compare_pointer(void* first_pointer, void* second_pointer) noexcept:             # <<<<<<<<<<<<<<
+ *   if first_pointer < second_pointer:
+ *     return -1
+ */
+
+  /* function exit code */
+  __pyx_L0:;
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/_hooks.pyx.pxi":16
+ * 
+ * 
+ * cdef object _custom_op_on_c_call(int op, grpc_call *call):             # <<<<<<<<<<<<<<
+ *   raise NotImplementedError("No custom hooks are implemented")
+ * 
+ */
+
+static PyObject *__pyx_f_7_cython_6cygrpc__custom_op_on_c_call(CYTHON_UNUSED int __pyx_v_op, CYTHON_UNUSED grpc_call *__pyx_v_call) {
+  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("_custom_op_on_c_call", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/_hooks.pyx.pxi":17
+ * 
+ * cdef object _custom_op_on_c_call(int op, grpc_call *call):
+ *   raise NotImplementedError("No custom hooks are implemented")             # <<<<<<<<<<<<<<
+ * 
+ * def install_context_from_request_call_event(RequestCallEvent event):
+ */
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_NotImplementedError, __pyx_tuple__36, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(26, 17, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __PYX_ERR(26, 17, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/_hooks.pyx.pxi":16
+ * 
+ * 
+ * cdef object _custom_op_on_c_call(int op, grpc_call *call):             # <<<<<<<<<<<<<<
+ *   raise NotImplementedError("No custom hooks are implemented")
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc._custom_op_on_c_call", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/_hooks.pyx.pxi":19
+ *   raise NotImplementedError("No custom hooks are implemented")
+ * 
+ * def install_context_from_request_call_event(RequestCallEvent event):             # <<<<<<<<<<<<<<
+ *   maybe_save_server_trace_context(event)
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_55install_context_from_request_call_event(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_55install_context_from_request_call_event = {"install_context_from_request_call_event", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_55install_context_from_request_call_event, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_55install_context_from_request_call_event(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
+) {
+  struct __pyx_obj_7_cython_6cygrpc_RequestCallEvent *__pyx_v_event = 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("install_context_from_request_call_event (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_event,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_event)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(26, 19, __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, "install_context_from_request_call_event") < 0)) __PYX_ERR(26, 19, __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_event = ((struct __pyx_obj_7_cython_6cygrpc_RequestCallEvent *)values[0]);
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("install_context_from_request_call_event", 1, 1, 1, __pyx_nargs); __PYX_ERR(26, 19, __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("_cython.cygrpc.install_context_from_request_call_event", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_event), __pyx_ptype_7_cython_6cygrpc_RequestCallEvent, 1, "event", 0))) __PYX_ERR(26, 19, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_54install_context_from_request_call_event(__pyx_self, __pyx_v_event);
+
+  /* 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_7_cython_6cygrpc_54install_context_from_request_call_event(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7_cython_6cygrpc_RequestCallEvent *__pyx_v_event) {
+  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("install_context_from_request_call_event", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/_hooks.pyx.pxi":20
+ * 
+ * def install_context_from_request_call_event(RequestCallEvent event):
+ *   maybe_save_server_trace_context(event)             # <<<<<<<<<<<<<<
+ * 
+ * def install_context_from_request_call_event_aio(GrpcCallWrapper event):
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_maybe_save_server_trace_context); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 20, __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_event)};
+    __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(26, 20, __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/python/grpcio/grpc/_cython/_cygrpc/_hooks.pyx.pxi":19
+ *   raise NotImplementedError("No custom hooks are implemented")
+ * 
+ * def install_context_from_request_call_event(RequestCallEvent event):             # <<<<<<<<<<<<<<
+ *   maybe_save_server_trace_context(event)
+ * 
+ */
+
+  /* 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("_cython.cygrpc.install_context_from_request_call_event", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/_hooks.pyx.pxi":22
+ *   maybe_save_server_trace_context(event)
+ * 
+ * def install_context_from_request_call_event_aio(GrpcCallWrapper event):             # <<<<<<<<<<<<<<
+ *   pass
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_57install_context_from_request_call_event_aio(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_57install_context_from_request_call_event_aio = {"install_context_from_request_call_event_aio", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_57install_context_from_request_call_event_aio, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_57install_context_from_request_call_event_aio(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
+) {
+  CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_GrpcCallWrapper *__pyx_v_event = 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("install_context_from_request_call_event_aio (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_event,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_event)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(26, 22, __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, "install_context_from_request_call_event_aio") < 0)) __PYX_ERR(26, 22, __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_event = ((struct __pyx_obj_7_cython_6cygrpc_GrpcCallWrapper *)values[0]);
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("install_context_from_request_call_event_aio", 1, 1, 1, __pyx_nargs); __PYX_ERR(26, 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("_cython.cygrpc.install_context_from_request_call_event_aio", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_event), __pyx_ptype_7_cython_6cygrpc_GrpcCallWrapper, 1, "event", 0))) __PYX_ERR(26, 22, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_56install_context_from_request_call_event_aio(__pyx_self, __pyx_v_event);
+
+  /* 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_7_cython_6cygrpc_56install_context_from_request_call_event_aio(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_GrpcCallWrapper *__pyx_v_event) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("install_context_from_request_call_event_aio", 1);
+
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/_hooks.pyx.pxi":25
+ *   pass
+ * 
+ * def uninstall_context():             # <<<<<<<<<<<<<<
+ *   pass
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_59uninstall_context(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_59uninstall_context = {"uninstall_context", (PyCFunction)__pyx_pw_7_cython_6cygrpc_59uninstall_context, METH_NOARGS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_59uninstall_context(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("uninstall_context (wrapper)", 0);
+  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_58uninstall_context(__pyx_self);
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_58uninstall_context(CYTHON_UNUSED PyObject *__pyx_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("uninstall_context", 1);
+
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/_hooks.pyx.pxi":28
+ *   pass
+ * 
+ * def build_census_context():             # <<<<<<<<<<<<<<
+ *   pass
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_61build_census_context(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_61build_census_context = {"build_census_context", (PyCFunction)__pyx_pw_7_cython_6cygrpc_61build_census_context, METH_NOARGS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_61build_census_context(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("build_census_context (wrapper)", 0);
+  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_60build_census_context(__pyx_self);
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_60build_census_context(CYTHON_UNUSED PyObject *__pyx_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("build_census_context", 1);
+
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  __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_7_cython_6cygrpc_13CensusContext_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_13CensusContext_1__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_13CensusContext_1__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_13CensusContext_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_7_cython_6cygrpc_13CensusContext___reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc_CensusContext *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_13CensusContext___reduce_cython__(struct __pyx_obj_7_cython_6cygrpc_CensusContext *__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(10, 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(10, 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(10, 8, __pyx_L1_error);
+    __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 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_CensusContext, (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_CensusContext, (type(self), 0xe3b0c44, None), state
+ *     else:
+ */
+  if (__pyx_v_use_setstate) {
+
+    /* "(tree fragment)":13
+ *         use_setstate = False
+ *     if use_setstate:
+ *         return __pyx_unpickle_CensusContext, (type(self), 0xe3b0c44, None), state             # <<<<<<<<<<<<<<
+ *     else:
+ *         return __pyx_unpickle_CensusContext, (type(self), 0xe3b0c44, state)
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_pyx_unpickle_CensusContext); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 13, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 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(10, 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(10, 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(10, 13, __pyx_L1_error);
+    __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 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(10, 13, __pyx_L1_error);
+    __Pyx_GIVEREF(__pyx_t_1);
+    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1)) __PYX_ERR(10, 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(10, 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_CensusContext, (type(self), 0xe3b0c44, None), state
+ *     else:
+ */
+  }
+
+  /* "(tree fragment)":15
+ *         return __pyx_unpickle_CensusContext, (type(self), 0xe3b0c44, None), state
+ *     else:
+ *         return __pyx_unpickle_CensusContext, (type(self), 0xe3b0c44, state)             # <<<<<<<<<<<<<<
+ * def __setstate_cython__(self, __pyx_state):
+ *     __pyx_unpickle_CensusContext__set_state(self, __pyx_state)
+ */
+  /*else*/ {
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_CensusContext); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 15, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 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(10, 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(10, 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(10, 15, __pyx_L1_error);
+    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 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(10, 15, __pyx_L1_error);
+    __Pyx_GIVEREF(__pyx_t_1);
+    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1)) __PYX_ERR(10, 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("_cython.cygrpc.CensusContext.__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_CensusContext, (type(self), 0xe3b0c44, state)
+ * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
+ *     __pyx_unpickle_CensusContext__set_state(self, __pyx_state)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_13CensusContext_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_13CensusContext_3__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_13CensusContext_3__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_13CensusContext_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(10, 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(10, 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(10, 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("_cython.cygrpc.CensusContext.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_13CensusContext_2__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc_CensusContext *)__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_7_cython_6cygrpc_13CensusContext_2__setstate_cython__(struct __pyx_obj_7_cython_6cygrpc_CensusContext *__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_CensusContext, (type(self), 0xe3b0c44, state)
+ * def __setstate_cython__(self, __pyx_state):
+ *     __pyx_unpickle_CensusContext__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(10, 17, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_7_cython_6cygrpc___pyx_unpickle_CensusContext__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 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_CensusContext, (type(self), 0xe3b0c44, state)
+ * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
+ *     __pyx_unpickle_CensusContext__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("_cython.cygrpc.CensusContext.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/_hooks.pyx.pxi":34
+ *   pass
+ * 
+ * def set_census_context_on_call(_CallState call_state, CensusContext census_ctx):             # <<<<<<<<<<<<<<
+ *   pass
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_63set_census_context_on_call(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_63set_census_context_on_call = {"set_census_context_on_call", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_63set_census_context_on_call, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_63set_census_context_on_call(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
+) {
+  CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__CallState *__pyx_v_call_state = 0;
+  CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_CensusContext *__pyx_v_census_ctx = 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("set_census_context_on_call (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_call_state,&__pyx_n_s_census_ctx,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_call_state)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(26, 34, __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_census_ctx)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(26, 34, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("set_census_context_on_call", 1, 2, 2, 1); __PYX_ERR(26, 34, __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, "set_census_context_on_call") < 0)) __PYX_ERR(26, 34, __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_call_state = ((struct __pyx_obj_7_cython_6cygrpc__CallState *)values[0]);
+    __pyx_v_census_ctx = ((struct __pyx_obj_7_cython_6cygrpc_CensusContext *)values[1]);
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("set_census_context_on_call", 1, 2, 2, __pyx_nargs); __PYX_ERR(26, 34, __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("_cython.cygrpc.set_census_context_on_call", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_call_state), __pyx_ptype_7_cython_6cygrpc__CallState, 1, "call_state", 0))) __PYX_ERR(26, 34, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_census_ctx), __pyx_ptype_7_cython_6cygrpc_CensusContext, 1, "census_ctx", 0))) __PYX_ERR(26, 34, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_62set_census_context_on_call(__pyx_self, __pyx_v_call_state, __pyx_v_census_ctx);
+
+  /* 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_7_cython_6cygrpc_62set_census_context_on_call(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__CallState *__pyx_v_call_state, CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_CensusContext *__pyx_v_census_ctx) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_census_context_on_call", 1);
+
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/_hooks.pyx.pxi":37
+ *   pass
+ * 
+ * def set_instrumentation_context_on_call_aio(GrpcCallWrapper call_state, CensusContext census_ctx):             # <<<<<<<<<<<<<<
+ *   pass
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_65set_instrumentation_context_on_call_aio(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_65set_instrumentation_context_on_call_aio = {"set_instrumentation_context_on_call_aio", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_65set_instrumentation_context_on_call_aio, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_65set_instrumentation_context_on_call_aio(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
+) {
+  CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_GrpcCallWrapper *__pyx_v_call_state = 0;
+  CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_CensusContext *__pyx_v_census_ctx = 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("set_instrumentation_context_on_call_aio (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_call_state,&__pyx_n_s_census_ctx,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_call_state)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(26, 37, __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_census_ctx)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(26, 37, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("set_instrumentation_context_on_call_aio", 1, 2, 2, 1); __PYX_ERR(26, 37, __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, "set_instrumentation_context_on_call_aio") < 0)) __PYX_ERR(26, 37, __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_call_state = ((struct __pyx_obj_7_cython_6cygrpc_GrpcCallWrapper *)values[0]);
+    __pyx_v_census_ctx = ((struct __pyx_obj_7_cython_6cygrpc_CensusContext *)values[1]);
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("set_instrumentation_context_on_call_aio", 1, 2, 2, __pyx_nargs); __PYX_ERR(26, 37, __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("_cython.cygrpc.set_instrumentation_context_on_call_aio", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_call_state), __pyx_ptype_7_cython_6cygrpc_GrpcCallWrapper, 1, "call_state", 0))) __PYX_ERR(26, 37, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_census_ctx), __pyx_ptype_7_cython_6cygrpc_CensusContext, 1, "census_ctx", 0))) __PYX_ERR(26, 37, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_64set_instrumentation_context_on_call_aio(__pyx_self, __pyx_v_call_state, __pyx_v_census_ctx);
+
+  /* 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_7_cython_6cygrpc_64set_instrumentation_context_on_call_aio(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_GrpcCallWrapper *__pyx_v_call_state, CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_CensusContext *__pyx_v_census_ctx) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_instrumentation_context_on_call_aio", 1);
+
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/_hooks.pyx.pxi":40
+ *   pass
+ * 
+ * def get_deadline_from_context():             # <<<<<<<<<<<<<<
+ *   return None
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_67get_deadline_from_context(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_67get_deadline_from_context = {"get_deadline_from_context", (PyCFunction)__pyx_pw_7_cython_6cygrpc_67get_deadline_from_context, METH_NOARGS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_67get_deadline_from_context(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_deadline_from_context (wrapper)", 0);
+  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_66get_deadline_from_context(__pyx_self);
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_66get_deadline_from_context(CYTHON_UNUSED PyObject *__pyx_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_deadline_from_context", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/_hooks.pyx.pxi":41
+ * 
+ * def get_deadline_from_context():
+ *   return None             # <<<<<<<<<<<<<<
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/_hooks.pyx.pxi":40
+ *   pass
+ * 
+ * def get_deadline_from_context():             # <<<<<<<<<<<<<<
+ *   return None
+ */
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/observability.pyx.pxi":26
+ * 
+ * 
+ * def set_server_call_tracer_factory(object observability_plugin) -> None:             # <<<<<<<<<<<<<<
+ *   capsule = observability_plugin.create_server_call_tracer_factory()
+ *   capsule_ptr = cpython.PyCapsule_GetPointer(capsule, SERVER_CALL_TRACER_FACTORY)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_69set_server_call_tracer_factory(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_69set_server_call_tracer_factory = {"set_server_call_tracer_factory", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_69set_server_call_tracer_factory, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_69set_server_call_tracer_factory(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_observability_plugin = 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("set_server_call_tracer_factory (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_observability_plugin,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_observability_plugin)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(27, 26, __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, "set_server_call_tracer_factory") < 0)) __PYX_ERR(27, 26, __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_observability_plugin = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("set_server_call_tracer_factory", 1, 1, 1, __pyx_nargs); __PYX_ERR(27, 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("_cython.cygrpc.set_server_call_tracer_factory", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_68set_server_call_tracer_factory(__pyx_self, __pyx_v_observability_plugin);
+
+  /* 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_7_cython_6cygrpc_68set_server_call_tracer_factory(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_observability_plugin) {
+  PyObject *__pyx_v_capsule = NULL;
+  void *__pyx_v_capsule_ptr;
+  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;
+  void *__pyx_t_5;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_server_call_tracer_factory", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/observability.pyx.pxi":27
+ * 
+ * def set_server_call_tracer_factory(object observability_plugin) -> None:
+ *   capsule = observability_plugin.create_server_call_tracer_factory()             # <<<<<<<<<<<<<<
+ *   capsule_ptr = cpython.PyCapsule_GetPointer(capsule, SERVER_CALL_TRACER_FACTORY)
+ *   _register_server_call_tracer_factory(capsule_ptr)
+ */
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_observability_plugin, __pyx_n_s_create_server_call_tracer_factor); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 27, __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(27, 27, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  }
+  __pyx_v_capsule = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/observability.pyx.pxi":28
+ * def set_server_call_tracer_factory(object observability_plugin) -> None:
+ *   capsule = observability_plugin.create_server_call_tracer_factory()
+ *   capsule_ptr = cpython.PyCapsule_GetPointer(capsule, SERVER_CALL_TRACER_FACTORY)             # <<<<<<<<<<<<<<
+ *   _register_server_call_tracer_factory(capsule_ptr)
+ * 
+ */
+  __pyx_t_5 = PyCapsule_GetPointer(__pyx_v_capsule, __pyx_v_7_cython_6cygrpc_SERVER_CALL_TRACER_FACTORY); if (unlikely(__pyx_t_5 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(27, 28, __pyx_L1_error)
+  __pyx_v_capsule_ptr = __pyx_t_5;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/observability.pyx.pxi":29
+ *   capsule = observability_plugin.create_server_call_tracer_factory()
+ *   capsule_ptr = cpython.PyCapsule_GetPointer(capsule, SERVER_CALL_TRACER_FACTORY)
+ *   _register_server_call_tracer_factory(capsule_ptr)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_f_7_cython_6cygrpc__register_server_call_tracer_factory(__pyx_v_capsule_ptr); if (unlikely(PyErr_Occurred())) __PYX_ERR(27, 29, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/observability.pyx.pxi":26
+ * 
+ * 
+ * def set_server_call_tracer_factory(object observability_plugin) -> None:             # <<<<<<<<<<<<<<
+ *   capsule = observability_plugin.create_server_call_tracer_factory()
+ *   capsule_ptr = cpython.PyCapsule_GetPointer(capsule, SERVER_CALL_TRACER_FACTORY)
+ */
+
+  /* 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("_cython.cygrpc.set_server_call_tracer_factory", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_capsule);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/observability.pyx.pxi":32
+ * 
+ * 
+ * def clear_server_call_tracer_factory() -> None:             # <<<<<<<<<<<<<<
+ *   _register_server_call_tracer_factory(NULL)
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_71clear_server_call_tracer_factory(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_71clear_server_call_tracer_factory = {"clear_server_call_tracer_factory", (PyCFunction)__pyx_pw_7_cython_6cygrpc_71clear_server_call_tracer_factory, METH_NOARGS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_71clear_server_call_tracer_factory(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("clear_server_call_tracer_factory (wrapper)", 0);
+  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_70clear_server_call_tracer_factory(__pyx_self);
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_70clear_server_call_tracer_factory(CYTHON_UNUSED PyObject *__pyx_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("clear_server_call_tracer_factory", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/observability.pyx.pxi":33
+ * 
+ * def clear_server_call_tracer_factory() -> None:
+ *   _register_server_call_tracer_factory(NULL)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_f_7_cython_6cygrpc__register_server_call_tracer_factory(NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(27, 33, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/observability.pyx.pxi":32
+ * 
+ * 
+ * def clear_server_call_tracer_factory() -> None:             # <<<<<<<<<<<<<<
+ *   _register_server_call_tracer_factory(NULL)
+ * 
+ */
+
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc.clear_server_call_tracer_factory", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/observability.pyx.pxi":36
+ * 
+ * 
+ * def maybe_save_server_trace_context(RequestCallEvent event) -> None:             # <<<<<<<<<<<<<<
+ *   cdef ServerCallTracer* server_call_tracer
+ *   with _observability.get_plugin() as plugin:
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_73maybe_save_server_trace_context(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_73maybe_save_server_trace_context = {"maybe_save_server_trace_context", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_73maybe_save_server_trace_context, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_73maybe_save_server_trace_context(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
+) {
+  struct __pyx_obj_7_cython_6cygrpc_RequestCallEvent *__pyx_v_event = 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("maybe_save_server_trace_context (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_event,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_event)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(27, 36, __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, "maybe_save_server_trace_context") < 0)) __PYX_ERR(27, 36, __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_event = ((struct __pyx_obj_7_cython_6cygrpc_RequestCallEvent *)values[0]);
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("maybe_save_server_trace_context", 1, 1, 1, __pyx_nargs); __PYX_ERR(27, 36, __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("_cython.cygrpc.maybe_save_server_trace_context", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_event), __pyx_ptype_7_cython_6cygrpc_RequestCallEvent, 1, "event", 0))) __PYX_ERR(27, 36, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_72maybe_save_server_trace_context(__pyx_self, __pyx_v_event);
+
+  /* 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_7_cython_6cygrpc_72maybe_save_server_trace_context(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7_cython_6cygrpc_RequestCallEvent *__pyx_v_event) {
+  grpc_core::ServerCallTracer *__pyx_v_server_call_tracer;
+  PyObject *__pyx_v_plugin = NULL;
+  PyObject *__pyx_v_trace_id = NULL;
+  PyObject *__pyx_v_span_id = NULL;
+  int __pyx_v_is_sampled;
+  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;
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
+  PyObject *__pyx_t_9 = NULL;
+  int __pyx_t_10;
+  int __pyx_t_11;
+  void *__pyx_t_12;
+  PyObject *__pyx_t_13 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("maybe_save_server_trace_context", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/observability.pyx.pxi":38
+ * def maybe_save_server_trace_context(RequestCallEvent event) -> None:
+ *   cdef ServerCallTracer* server_call_tracer
+ *   with _observability.get_plugin() as plugin:             # <<<<<<<<<<<<<<
+ *     if not (plugin and plugin.tracing_enabled):
+ *       return
+ */
+  /*with:*/ {
+    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_observability); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 38, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_get_plugin); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 38, __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(27, 38, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    }
+    __pyx_t_5 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_exit); if (unlikely(!__pyx_t_5)) __PYX_ERR(27, 38, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_2 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_enter); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 38, __pyx_L3_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_6 = NULL;
+    __pyx_t_4 = 0;
+    #if CYTHON_UNPACK_METHODS
+    if (likely(PyMethod_Check(__pyx_t_2))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_2, function);
+        __pyx_t_4 = 1;
+      }
+    }
+    #endif
+    {
+      PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
+      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __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(27, 38, __pyx_L3_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_7, &__pyx_t_8, &__pyx_t_9);
+        __Pyx_XGOTREF(__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_8);
+        __Pyx_XGOTREF(__pyx_t_9);
+        /*try:*/ {
+          __pyx_v_plugin = __pyx_t_2;
+          __pyx_t_2 = 0;
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/observability.pyx.pxi":39
+ *   cdef ServerCallTracer* server_call_tracer
+ *   with _observability.get_plugin() as plugin:
+ *     if not (plugin and plugin.tracing_enabled):             # <<<<<<<<<<<<<<
+ *       return
+ *     server_call_tracer = static_cast['ServerCallTracer*'](_get_call_tracer(event.call.c_call))
+ */
+          __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_v_plugin); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(27, 39, __pyx_L7_error)
+          if (__pyx_t_11) {
+          } else {
+            __pyx_t_10 = __pyx_t_11;
+            goto __pyx_L14_bool_binop_done;
+          }
+          __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_plugin, __pyx_n_s_tracing_enabled); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 39, __pyx_L7_error)
+          __Pyx_GOTREF(__pyx_t_2);
+          __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(27, 39, __pyx_L7_error)
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          __pyx_t_10 = __pyx_t_11;
+          __pyx_L14_bool_binop_done:;
+          __pyx_t_11 = (!__pyx_t_10);
+          if (__pyx_t_11) {
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/observability.pyx.pxi":40
+ *   with _observability.get_plugin() as plugin:
+ *     if not (plugin and plugin.tracing_enabled):
+ *       return             # <<<<<<<<<<<<<<
+ *     server_call_tracer = static_cast['ServerCallTracer*'](_get_call_tracer(event.call.c_call))
+ *     # TraceId and SpanId is hex string, need to convert to str
+ */
+            __Pyx_XDECREF(__pyx_r);
+            __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+            goto __pyx_L11_try_return;
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/observability.pyx.pxi":39
+ *   cdef ServerCallTracer* server_call_tracer
+ *   with _observability.get_plugin() as plugin:
+ *     if not (plugin and plugin.tracing_enabled):             # <<<<<<<<<<<<<<
+ *       return
+ *     server_call_tracer = static_cast['ServerCallTracer*'](_get_call_tracer(event.call.c_call))
+ */
+          }
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/observability.pyx.pxi":41
+ *     if not (plugin and plugin.tracing_enabled):
+ *       return
+ *     server_call_tracer = static_cast['ServerCallTracer*'](_get_call_tracer(event.call.c_call))             # <<<<<<<<<<<<<<
+ *     # TraceId and SpanId is hex string, need to convert to str
+ *     trace_id = _decode(codecs.decode(server_call_tracer.TraceId(), 'hex_codec'))
+ */
+          __pyx_t_12 = __pyx_f_7_cython_6cygrpc__get_call_tracer(__pyx_v_event->call->c_call); if (unlikely(__pyx_t_12 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(27, 41, __pyx_L7_error)
+          __pyx_v_server_call_tracer = static_cast<grpc_core::ServerCallTracer *>(__pyx_t_12);
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/observability.pyx.pxi":43
+ *     server_call_tracer = static_cast['ServerCallTracer*'](_get_call_tracer(event.call.c_call))
+ *     # TraceId and SpanId is hex string, need to convert to str
+ *     trace_id = _decode(codecs.decode(server_call_tracer.TraceId(), 'hex_codec'))             # <<<<<<<<<<<<<<
+ *     span_id = _decode(codecs.decode(server_call_tracer.SpanId(), 'hex_codec'))
+ *     is_sampled = server_call_tracer.IsSampled()
+ */
+          __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_codecs); if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 43, __pyx_L7_error)
+          __Pyx_GOTREF(__pyx_t_1);
+          __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_decode); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 43, __pyx_L7_error)
+          __Pyx_GOTREF(__pyx_t_3);
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __pyx_t_1 = __pyx_convert_PyBytes_string_to_py_6libcpp_6string_std__in_string(__pyx_v_server_call_tracer->TraceId()); if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 43, __pyx_L7_error)
+          __Pyx_GOTREF(__pyx_t_1);
+          __pyx_t_6 = NULL;
+          __pyx_t_4 = 0;
+          #if CYTHON_UNPACK_METHODS
+          if (unlikely(PyMethod_Check(__pyx_t_3))) {
+            __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
+            if (likely(__pyx_t_6)) {
+              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+              __Pyx_INCREF(__pyx_t_6);
+              __Pyx_INCREF(function);
+              __Pyx_DECREF_SET(__pyx_t_3, function);
+              __pyx_t_4 = 1;
+            }
+          }
+          #endif
+          {
+            PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_t_1, __pyx_n_s_hex_codec};
+            __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 2+__pyx_t_4);
+            __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+            if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 43, __pyx_L7_error)
+            __Pyx_GOTREF(__pyx_t_2);
+            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          }
+          if (!(likely(PyBytes_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("bytes", __pyx_t_2))) __PYX_ERR(27, 43, __pyx_L7_error)
+          __pyx_t_3 = __pyx_f_7_cython_6cygrpc__decode(((PyObject*)__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 43, __pyx_L7_error)
+          __Pyx_GOTREF(__pyx_t_3);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          __pyx_v_trace_id = __pyx_t_3;
+          __pyx_t_3 = 0;
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/observability.pyx.pxi":44
+ *     # TraceId and SpanId is hex string, need to convert to str
+ *     trace_id = _decode(codecs.decode(server_call_tracer.TraceId(), 'hex_codec'))
+ *     span_id = _decode(codecs.decode(server_call_tracer.SpanId(), 'hex_codec'))             # <<<<<<<<<<<<<<
+ *     is_sampled = server_call_tracer.IsSampled()
+ *     plugin.save_trace_context(trace_id, span_id, is_sampled)
+ */
+          __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_codecs); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 44, __pyx_L7_error)
+          __Pyx_GOTREF(__pyx_t_2);
+          __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_decode); if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 44, __pyx_L7_error)
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          __pyx_t_2 = __pyx_convert_PyBytes_string_to_py_6libcpp_6string_std__in_string(__pyx_v_server_call_tracer->SpanId()); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 44, __pyx_L7_error)
+          __Pyx_GOTREF(__pyx_t_2);
+          __pyx_t_6 = NULL;
+          __pyx_t_4 = 0;
+          #if CYTHON_UNPACK_METHODS
+          if (unlikely(PyMethod_Check(__pyx_t_1))) {
+            __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
+            if (likely(__pyx_t_6)) {
+              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+              __Pyx_INCREF(__pyx_t_6);
+              __Pyx_INCREF(function);
+              __Pyx_DECREF_SET(__pyx_t_1, function);
+              __pyx_t_4 = 1;
+            }
+          }
+          #endif
+          {
+            PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_t_2, __pyx_n_s_hex_codec};
+            __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 2+__pyx_t_4);
+            __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+            if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 44, __pyx_L7_error)
+            __Pyx_GOTREF(__pyx_t_3);
+            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          }
+          if (!(likely(PyBytes_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None) || __Pyx_RaiseUnexpectedTypeError("bytes", __pyx_t_3))) __PYX_ERR(27, 44, __pyx_L7_error)
+          __pyx_t_1 = __pyx_f_7_cython_6cygrpc__decode(((PyObject*)__pyx_t_3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 44, __pyx_L7_error)
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          __pyx_v_span_id = __pyx_t_1;
+          __pyx_t_1 = 0;
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/observability.pyx.pxi":45
+ *     trace_id = _decode(codecs.decode(server_call_tracer.TraceId(), 'hex_codec'))
+ *     span_id = _decode(codecs.decode(server_call_tracer.SpanId(), 'hex_codec'))
+ *     is_sampled = server_call_tracer.IsSampled()             # <<<<<<<<<<<<<<
+ *     plugin.save_trace_context(trace_id, span_id, is_sampled)
+ * 
+ */
+          __pyx_v_is_sampled = __pyx_v_server_call_tracer->IsSampled();
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/observability.pyx.pxi":46
+ *     span_id = _decode(codecs.decode(server_call_tracer.SpanId(), 'hex_codec'))
+ *     is_sampled = server_call_tracer.IsSampled()
+ *     plugin.save_trace_context(trace_id, span_id, is_sampled)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+          __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_plugin, __pyx_n_s_save_trace_context); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 46, __pyx_L7_error)
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_is_sampled); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 46, __pyx_L7_error)
+          __Pyx_GOTREF(__pyx_t_2);
+          __pyx_t_6 = NULL;
+          __pyx_t_4 = 0;
+          #if CYTHON_UNPACK_METHODS
+          if (likely(PyMethod_Check(__pyx_t_3))) {
+            __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
+            if (likely(__pyx_t_6)) {
+              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+              __Pyx_INCREF(__pyx_t_6);
+              __Pyx_INCREF(function);
+              __Pyx_DECREF_SET(__pyx_t_3, function);
+              __pyx_t_4 = 1;
+            }
+          }
+          #endif
+          {
+            PyObject *__pyx_callargs[4] = {__pyx_t_6, __pyx_v_trace_id, __pyx_v_span_id, __pyx_t_2};
+            __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 3+__pyx_t_4);
+            __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+            if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 46, __pyx_L7_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/python/grpcio/grpc/_cython/_cygrpc/observability.pyx.pxi":38
+ * def maybe_save_server_trace_context(RequestCallEvent event) -> None:
+ *   cdef ServerCallTracer* server_call_tracer
+ *   with _observability.get_plugin() as plugin:             # <<<<<<<<<<<<<<
+ *     if not (plugin and plugin.tracing_enabled):
+ *       return
+ */
+        }
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+        goto __pyx_L12_try_end;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        /*except:*/ {
+          __Pyx_AddTraceback("_cython.cygrpc.maybe_save_server_trace_context", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_3, &__pyx_t_2) < 0) __PYX_ERR(27, 38, __pyx_L9_except_error)
+          __Pyx_XGOTREF(__pyx_t_1);
+          __Pyx_XGOTREF(__pyx_t_3);
+          __Pyx_XGOTREF(__pyx_t_2);
+          __pyx_t_6 = PyTuple_Pack(3, __pyx_t_1, __pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(27, 38, __pyx_L9_except_error)
+          __Pyx_GOTREF(__pyx_t_6);
+          __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL);
+          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+          if (unlikely(!__pyx_t_13)) __PYX_ERR(27, 38, __pyx_L9_except_error)
+          __Pyx_GOTREF(__pyx_t_13);
+          __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_13);
+          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+          if (__pyx_t_11 < 0) __PYX_ERR(27, 38, __pyx_L9_except_error)
+          __pyx_t_10 = (!__pyx_t_11);
+          if (unlikely(__pyx_t_10)) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_XGIVEREF(__pyx_t_2);
+            __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_3, __pyx_t_2);
+            __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_2 = 0; 
+            __PYX_ERR(27, 38, __pyx_L9_except_error)
+          }
+          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_XGIVEREF(__pyx_t_8);
+        __Pyx_XGIVEREF(__pyx_t_9);
+        __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
+        goto __pyx_L1_error;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_XGIVEREF(__pyx_t_8);
+        __Pyx_XGIVEREF(__pyx_t_9);
+        __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
+        goto __pyx_L4_return;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_XGIVEREF(__pyx_t_8);
+        __Pyx_XGIVEREF(__pyx_t_9);
+        __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
+        __pyx_L12_try_end:;
+      }
+    }
+    /*finally:*/ {
+      /*normal exit:*/{
+        if (__pyx_t_5) {
+          __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__11, NULL);
+          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+          if (unlikely(!__pyx_t_9)) __PYX_ERR(27, 38, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_9);
+          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+        }
+        goto __pyx_L6;
+      }
+      __pyx_L4_return: {
+        __pyx_t_9 = __pyx_r;
+        __pyx_r = 0;
+        if (__pyx_t_5) {
+          __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__11, NULL);
+          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+          if (unlikely(!__pyx_t_8)) __PYX_ERR(27, 38, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_8);
+          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+        }
+        __pyx_r = __pyx_t_9;
+        __pyx_t_9 = 0;
+        goto __pyx_L0;
+      }
+      __pyx_L6:;
+    }
+    goto __pyx_L19;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    goto __pyx_L1_error;
+    __pyx_L19:;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/observability.pyx.pxi":36
+ * 
+ * 
+ * def maybe_save_server_trace_context(RequestCallEvent event) -> None:             # <<<<<<<<<<<<<<
+ *   cdef ServerCallTracer* server_call_tracer
+ *   with _observability.get_plugin() as plugin:
+ */
+
+  /* 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_6);
+  __Pyx_AddTraceback("_cython.cygrpc.maybe_save_server_trace_context", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_plugin);
+  __Pyx_XDECREF(__pyx_v_trace_id);
+  __Pyx_XDECREF(__pyx_v_span_id);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/observability.pyx.pxi":49
+ * 
+ * 
+ * cdef void _set_call_tracer(grpc_call* call, void* capsule_ptr):             # <<<<<<<<<<<<<<
+ *   cdef ClientCallTracer* call_tracer = <ClientCallTracer*>capsule_ptr
+ *   grpc_call_context_set(call, GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE, call_tracer, NULL)
+ */
+
+static void __pyx_f_7_cython_6cygrpc__set_call_tracer(grpc_call *__pyx_v_call, void *__pyx_v_capsule_ptr) {
+  grpc_core::ClientCallTracer *__pyx_v_call_tracer;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/observability.pyx.pxi":50
+ * 
+ * cdef void _set_call_tracer(grpc_call* call, void* capsule_ptr):
+ *   cdef ClientCallTracer* call_tracer = <ClientCallTracer*>capsule_ptr             # <<<<<<<<<<<<<<
+ *   grpc_call_context_set(call, GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE, call_tracer, NULL)
+ * 
+ */
+  __pyx_v_call_tracer = ((grpc_core::ClientCallTracer *)__pyx_v_capsule_ptr);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/observability.pyx.pxi":51
+ * cdef void _set_call_tracer(grpc_call* call, void* capsule_ptr):
+ *   cdef ClientCallTracer* call_tracer = <ClientCallTracer*>capsule_ptr
+ *   grpc_call_context_set(call, GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE, call_tracer, NULL)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  grpc_call_context_set(__pyx_v_call, GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE, __pyx_v_call_tracer, NULL);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/observability.pyx.pxi":49
+ * 
+ * 
+ * cdef void _set_call_tracer(grpc_call* call, void* capsule_ptr):             # <<<<<<<<<<<<<<
+ *   cdef ClientCallTracer* call_tracer = <ClientCallTracer*>capsule_ptr
+ *   grpc_call_context_set(call, GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE, call_tracer, NULL)
+ */
+
+  /* function exit code */
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/observability.pyx.pxi":54
+ * 
+ * 
+ * cdef void* _get_call_tracer(grpc_call* call):             # <<<<<<<<<<<<<<
+ *   cdef void* call_tracer = grpc_call_context_get(call, GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE)
+ *   return call_tracer
+ */
+
+static void *__pyx_f_7_cython_6cygrpc__get_call_tracer(grpc_call *__pyx_v_call) {
+  void *__pyx_v_call_tracer;
+  void *__pyx_r;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/observability.pyx.pxi":55
+ * 
+ * cdef void* _get_call_tracer(grpc_call* call):
+ *   cdef void* call_tracer = grpc_call_context_get(call, GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE)             # <<<<<<<<<<<<<<
+ *   return call_tracer
+ * 
+ */
+  __pyx_v_call_tracer = grpc_call_context_get(__pyx_v_call, GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/observability.pyx.pxi":56
+ * cdef void* _get_call_tracer(grpc_call* call):
+ *   cdef void* call_tracer = grpc_call_context_get(call, GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE)
+ *   return call_tracer             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_r = __pyx_v_call_tracer;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/observability.pyx.pxi":54
+ * 
+ * 
+ * cdef void* _get_call_tracer(grpc_call* call):             # <<<<<<<<<<<<<<
+ *   cdef void* call_tracer = grpc_call_context_get(call, GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE)
+ *   return call_tracer
+ */
+
+  /* function exit code */
+  __pyx_L0:;
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/observability.pyx.pxi":59
+ * 
+ * 
+ * cdef void _register_server_call_tracer_factory(void* capsule_ptr):             # <<<<<<<<<<<<<<
+ *   cdef ServerCallTracerFactory* call_tracer_factory = <ServerCallTracerFactory*>capsule_ptr
+ *   ServerCallTracerFactory.RegisterGlobal(call_tracer_factory)
+ */
+
+static void __pyx_f_7_cython_6cygrpc__register_server_call_tracer_factory(void *__pyx_v_capsule_ptr) {
+  grpc_core::ServerCallTracerFactory *__pyx_v_call_tracer_factory;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/observability.pyx.pxi":60
+ * 
+ * cdef void _register_server_call_tracer_factory(void* capsule_ptr):
+ *   cdef ServerCallTracerFactory* call_tracer_factory = <ServerCallTracerFactory*>capsule_ptr             # <<<<<<<<<<<<<<
+ *   ServerCallTracerFactory.RegisterGlobal(call_tracer_factory)
+ */
+  __pyx_v_call_tracer_factory = ((grpc_core::ServerCallTracerFactory *)__pyx_v_capsule_ptr);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/observability.pyx.pxi":61
+ * cdef void _register_server_call_tracer_factory(void* capsule_ptr):
+ *   cdef ServerCallTracerFactory* call_tracer_factory = <ServerCallTracerFactory*>capsule_ptr
+ *   ServerCallTracerFactory.RegisterGlobal(call_tracer_factory)             # <<<<<<<<<<<<<<
+ */
+  grpc_core::ServerCallTracerFactory::RegisterGlobal(__pyx_v_call_tracer_factory);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/observability.pyx.pxi":59
+ * 
+ * 
+ * cdef void _register_server_call_tracer_factory(void* capsule_ptr):             # <<<<<<<<<<<<<<
+ *   cdef ServerCallTracerFactory* call_tracer_factory = <ServerCallTracerFactory*>capsule_ptr
+ *   ServerCallTracerFactory.RegisterGlobal(call_tracer_factory)
+ */
+
+  /* function exit code */
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":38
+ * 
+ * 
+ * cdef _submit_to_greenlet_queue(object cb, tuple args):             # <<<<<<<<<<<<<<
+ *   cdef tuple to_call = (cb,) + args
+ *   cdef unique_lock[mutex]* lk
+ */
+
+static PyObject *__pyx_f_7_cython_6cygrpc__submit_to_greenlet_queue(PyObject *__pyx_v_cb, PyObject *__pyx_v_args) {
+  PyObject *__pyx_v_to_call = 0;
+  std::unique_lock<std::mutex>  *__pyx_v_lk;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_submit_to_greenlet_queue", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":39
+ * 
+ * cdef _submit_to_greenlet_queue(object cb, tuple args):
+ *   cdef tuple to_call = (cb,) + args             # <<<<<<<<<<<<<<
+ *   cdef unique_lock[mutex]* lk
+ *   Py_INCREF(to_call)
+ */
+  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 39, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(__pyx_v_cb);
+  __Pyx_GIVEREF(__pyx_v_cb);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_cb)) __PYX_ERR(28, 39, __pyx_L1_error);
+  __pyx_t_2 = PyNumber_Add(__pyx_t_1, __pyx_v_args); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 39, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_v_to_call = ((PyObject*)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":41
+ *   cdef tuple to_call = (cb,) + args
+ *   cdef unique_lock[mutex]* lk
+ *   Py_INCREF(to_call)             # <<<<<<<<<<<<<<
+ *   with nogil:
+ *     lk = new unique_lock[mutex](g_greenlets_mu)
+ */
+  Py_INCREF(__pyx_v_to_call);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":42
+ *   cdef unique_lock[mutex]* lk
+ *   Py_INCREF(to_call)
+ *   with nogil:             # <<<<<<<<<<<<<<
+ *     lk = new unique_lock[mutex](g_greenlets_mu)
+ *     g_greenlets_to_run.push(<void*>(to_call))
+ */
+  {
+      #ifdef WITH_THREAD
+      PyThreadState *_save;
+      _save = NULL;
+      Py_UNBLOCK_THREADS
+      __Pyx_FastGIL_Remember();
+      #endif
+      /*try:*/ {
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":43
+ *   Py_INCREF(to_call)
+ *   with nogil:
+ *     lk = new unique_lock[mutex](g_greenlets_mu)             # <<<<<<<<<<<<<<
+ *     g_greenlets_to_run.push(<void*>(to_call))
+ *     del lk
+ */
+        __pyx_v_lk = new std::unique_lock<std::mutex> (__pyx_v_7_cython_6cygrpc_g_greenlets_mu);
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":44
+ *   with nogil:
+ *     lk = new unique_lock[mutex](g_greenlets_mu)
+ *     g_greenlets_to_run.push(<void*>(to_call))             # <<<<<<<<<<<<<<
+ *     del lk
+ *     g_greenlets_cv.notify_all()
+ */
+        __pyx_v_7_cython_6cygrpc_g_greenlets_to_run.push(((void *)__pyx_v_to_call));
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":45
+ *     lk = new unique_lock[mutex](g_greenlets_mu)
+ *     g_greenlets_to_run.push(<void*>(to_call))
+ *     del lk             # <<<<<<<<<<<<<<
+ *     g_greenlets_cv.notify_all()
+ * 
+ */
+        delete __pyx_v_lk;
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":46
+ *     g_greenlets_to_run.push(<void*>(to_call))
+ *     del lk
+ *     g_greenlets_cv.notify_all()             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+        __pyx_v_7_cython_6cygrpc_g_greenlets_cv.notify_all();
+      }
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":42
+ *   cdef unique_lock[mutex]* lk
+ *   Py_INCREF(to_call)
+ *   with nogil:             # <<<<<<<<<<<<<<
+ *     lk = new unique_lock[mutex](g_greenlets_mu)
+ *     g_greenlets_to_run.push(<void*>(to_call))
+ */
+      /*finally:*/ {
+        /*normal exit:*/{
+          #ifdef WITH_THREAD
+          __Pyx_FastGIL_Forget();
+          Py_BLOCK_THREADS
+          #endif
+          goto __pyx_L5;
+        }
+        __pyx_L5:;
+      }
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":38
+ * 
+ * 
+ * cdef _submit_to_greenlet_queue(object cb, tuple args):             # <<<<<<<<<<<<<<
+ *   cdef tuple to_call = (cb,) + args
+ *   cdef unique_lock[mutex]* lk
+ */
+
+  /* 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_AddTraceback("_cython.cygrpc._submit_to_greenlet_queue", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_to_call);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":49
+ * 
+ * 
+ * cpdef void gevent_increment_channel_count():             # <<<<<<<<<<<<<<
+ *   global g_channel_count
+ *   cdef int old_channel_count
+ */
+
+static PyObject *__pyx_pw_7_cython_6cygrpc_75gevent_increment_channel_count(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static void __pyx_f_7_cython_6cygrpc_gevent_increment_channel_count(CYTHON_UNUSED int __pyx_skip_dispatch) {
+  int __pyx_v_old_channel_count;
+  std::unique_lock<std::mutex>  *__pyx_v_lk;
+  __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;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("gevent_increment_channel_count", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":52
+ *   global g_channel_count
+ *   cdef int old_channel_count
+ *   with nogil:             # <<<<<<<<<<<<<<
+ *     lk = new unique_lock[mutex](g_greenlets_mu)
+ *     old_channel_count = g_channel_count
+ */
+  {
+      #ifdef WITH_THREAD
+      PyThreadState *_save;
+      _save = NULL;
+      Py_UNBLOCK_THREADS
+      __Pyx_FastGIL_Remember();
+      #endif
+      /*try:*/ {
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":53
+ *   cdef int old_channel_count
+ *   with nogil:
+ *     lk = new unique_lock[mutex](g_greenlets_mu)             # <<<<<<<<<<<<<<
+ *     old_channel_count = g_channel_count
+ *     g_channel_count += 1
+ */
+        __pyx_v_lk = new std::unique_lock<std::mutex> (__pyx_v_7_cython_6cygrpc_g_greenlets_mu);
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":54
+ *   with nogil:
+ *     lk = new unique_lock[mutex](g_greenlets_mu)
+ *     old_channel_count = g_channel_count             # <<<<<<<<<<<<<<
+ *     g_channel_count += 1
+ *     del lk
+ */
+        __pyx_v_old_channel_count = __pyx_v_7_cython_6cygrpc_g_channel_count;
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":55
+ *     lk = new unique_lock[mutex](g_greenlets_mu)
+ *     old_channel_count = g_channel_count
+ *     g_channel_count += 1             # <<<<<<<<<<<<<<
+ *     del lk
+ *   if old_channel_count == 0:
+ */
+        __pyx_v_7_cython_6cygrpc_g_channel_count = (__pyx_v_7_cython_6cygrpc_g_channel_count + 1);
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":56
+ *     old_channel_count = g_channel_count
+ *     g_channel_count += 1
+ *     del lk             # <<<<<<<<<<<<<<
+ *   if old_channel_count == 0:
+ *     run_spawn_greenlets()
+ */
+        delete __pyx_v_lk;
+      }
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":52
+ *   global g_channel_count
+ *   cdef int old_channel_count
+ *   with nogil:             # <<<<<<<<<<<<<<
+ *     lk = new unique_lock[mutex](g_greenlets_mu)
+ *     old_channel_count = g_channel_count
+ */
+      /*finally:*/ {
+        /*normal exit:*/{
+          #ifdef WITH_THREAD
+          __Pyx_FastGIL_Forget();
+          Py_BLOCK_THREADS
+          #endif
+          goto __pyx_L5;
+        }
+        __pyx_L5:;
+      }
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":57
+ *     g_channel_count += 1
+ *     del lk
+ *   if old_channel_count == 0:             # <<<<<<<<<<<<<<
+ *     run_spawn_greenlets()
+ * 
+ */
+  __pyx_t_1 = (__pyx_v_old_channel_count == 0);
+  if (__pyx_t_1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":58
+ *     del lk
+ *   if old_channel_count == 0:
+ *     run_spawn_greenlets()             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_run_spawn_greenlets); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 58, __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, 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(28, 58, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":57
+ *     g_channel_count += 1
+ *     del lk
+ *   if old_channel_count == 0:             # <<<<<<<<<<<<<<
+ *     run_spawn_greenlets()
+ * 
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":49
+ * 
+ * 
+ * cpdef void gevent_increment_channel_count():             # <<<<<<<<<<<<<<
+ *   global g_channel_count
+ *   cdef int old_channel_count
+ */
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("_cython.cygrpc.gevent_increment_channel_count", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_75gevent_increment_channel_count(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_75gevent_increment_channel_count = {"gevent_increment_channel_count", (PyCFunction)__pyx_pw_7_cython_6cygrpc_75gevent_increment_channel_count, METH_NOARGS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_75gevent_increment_channel_count(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("gevent_increment_channel_count (wrapper)", 0);
+  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_74gevent_increment_channel_count(__pyx_self);
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_74gevent_increment_channel_count(CYTHON_UNUSED PyObject *__pyx_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("gevent_increment_channel_count", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_f_7_cython_6cygrpc_gevent_increment_channel_count(0); if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 49, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 49, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.gevent_increment_channel_count", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":61
+ * 
+ * 
+ * cpdef void gevent_decrement_channel_count():             # <<<<<<<<<<<<<<
+ *   global g_channel_count
+ *   with nogil:
+ */
+
+static PyObject *__pyx_pw_7_cython_6cygrpc_77gevent_decrement_channel_count(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static void __pyx_f_7_cython_6cygrpc_gevent_decrement_channel_count(CYTHON_UNUSED int __pyx_skip_dispatch) {
+  std::unique_lock<std::mutex>  *__pyx_v_lk;
+  int __pyx_t_1;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":63
+ * cpdef void gevent_decrement_channel_count():
+ *   global g_channel_count
+ *   with nogil:             # <<<<<<<<<<<<<<
+ *     lk = new unique_lock[mutex](g_greenlets_mu)
+ *     g_channel_count -= 1
+ */
+  {
+      #ifdef WITH_THREAD
+      PyThreadState *_save;
+      _save = NULL;
+      Py_UNBLOCK_THREADS
+      __Pyx_FastGIL_Remember();
+      #endif
+      /*try:*/ {
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":64
+ *   global g_channel_count
+ *   with nogil:
+ *     lk = new unique_lock[mutex](g_greenlets_mu)             # <<<<<<<<<<<<<<
+ *     g_channel_count -= 1
+ *     if g_channel_count == 0:
+ */
+        __pyx_v_lk = new std::unique_lock<std::mutex> (__pyx_v_7_cython_6cygrpc_g_greenlets_mu);
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":65
+ *   with nogil:
+ *     lk = new unique_lock[mutex](g_greenlets_mu)
+ *     g_channel_count -= 1             # <<<<<<<<<<<<<<
+ *     if g_channel_count == 0:
+ *       g_greenlets_cv.notify_all()
+ */
+        __pyx_v_7_cython_6cygrpc_g_channel_count = (__pyx_v_7_cython_6cygrpc_g_channel_count - 1);
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":66
+ *     lk = new unique_lock[mutex](g_greenlets_mu)
+ *     g_channel_count -= 1
+ *     if g_channel_count == 0:             # <<<<<<<<<<<<<<
+ *       g_greenlets_cv.notify_all()
+ *     del lk
+ */
+        __pyx_t_1 = (__pyx_v_7_cython_6cygrpc_g_channel_count == 0);
+        if (__pyx_t_1) {
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":67
+ *     g_channel_count -= 1
+ *     if g_channel_count == 0:
+ *       g_greenlets_cv.notify_all()             # <<<<<<<<<<<<<<
+ *     del lk
+ * 
+ */
+          __pyx_v_7_cython_6cygrpc_g_greenlets_cv.notify_all();
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":66
+ *     lk = new unique_lock[mutex](g_greenlets_mu)
+ *     g_channel_count -= 1
+ *     if g_channel_count == 0:             # <<<<<<<<<<<<<<
+ *       g_greenlets_cv.notify_all()
+ *     del lk
+ */
+        }
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":68
+ *     if g_channel_count == 0:
+ *       g_greenlets_cv.notify_all()
+ *     del lk             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+        delete __pyx_v_lk;
+      }
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":63
+ * cpdef void gevent_decrement_channel_count():
+ *   global g_channel_count
+ *   with nogil:             # <<<<<<<<<<<<<<
+ *     lk = new unique_lock[mutex](g_greenlets_mu)
+ *     g_channel_count -= 1
+ */
+      /*finally:*/ {
+        /*normal exit:*/{
+          #ifdef WITH_THREAD
+          __Pyx_FastGIL_Forget();
+          Py_BLOCK_THREADS
+          #endif
+          goto __pyx_L5;
+        }
+        __pyx_L5:;
+      }
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":61
+ * 
+ * 
+ * cpdef void gevent_decrement_channel_count():             # <<<<<<<<<<<<<<
+ *   global g_channel_count
+ *   with nogil:
+ */
+
+  /* function exit code */
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_77gevent_decrement_channel_count(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_77gevent_decrement_channel_count = {"gevent_decrement_channel_count", (PyCFunction)__pyx_pw_7_cython_6cygrpc_77gevent_decrement_channel_count, METH_NOARGS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_77gevent_decrement_channel_count(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("gevent_decrement_channel_count (wrapper)", 0);
+  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_76gevent_decrement_channel_count(__pyx_self);
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_76gevent_decrement_channel_count(CYTHON_UNUSED PyObject *__pyx_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("gevent_decrement_channel_count", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_f_7_cython_6cygrpc_gevent_decrement_channel_count(0); if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 61, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 61, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.gevent_decrement_channel_count", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":71
+ * 
+ * 
+ * cdef object await_next_greenlet():             # <<<<<<<<<<<<<<
+ *   cdef unique_lock[mutex]* lk
+ *   with nogil:
+ */
+
+static PyObject *__pyx_f_7_cython_6cygrpc_await_next_greenlet(void) {
+  std::unique_lock<std::mutex>  *__pyx_v_lk;
+  PyObject *__pyx_v_to_call = 0;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  int __pyx_t_2;
+  void *__pyx_t_3;
+  PyObject *__pyx_t_4 = NULL;
+  __Pyx_RefNannySetupContext("await_next_greenlet", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":73
+ * cdef object await_next_greenlet():
+ *   cdef unique_lock[mutex]* lk
+ *   with nogil:             # <<<<<<<<<<<<<<
+ *     # Cython doesn't allow us to do proper stack allocations, so we can't take
+ *     # advantage of RAII.
+ */
+  {
+      #ifdef WITH_THREAD
+      PyThreadState *_save;
+      _save = NULL;
+      Py_UNBLOCK_THREADS
+      __Pyx_FastGIL_Remember();
+      #endif
+      /*try:*/ {
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":76
+ *     # Cython doesn't allow us to do proper stack allocations, so we can't take
+ *     # advantage of RAII.
+ *     lk = new unique_lock[mutex](g_greenlets_mu)             # <<<<<<<<<<<<<<
+ *     while not g_shutdown_greenlets_to_run_queue and g_channel_count != 0:
+ *       if not g_greenlets_to_run.empty():
+ */
+        __pyx_v_lk = new std::unique_lock<std::mutex> (__pyx_v_7_cython_6cygrpc_g_greenlets_mu);
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":77
+ *     # advantage of RAII.
+ *     lk = new unique_lock[mutex](g_greenlets_mu)
+ *     while not g_shutdown_greenlets_to_run_queue and g_channel_count != 0:             # <<<<<<<<<<<<<<
+ *       if not g_greenlets_to_run.empty():
+ *         break
+ */
+        while (1) {
+          __pyx_t_2 = (!__pyx_v_7_cython_6cygrpc_g_shutdown_greenlets_to_run_queue);
+          if (__pyx_t_2) {
+          } else {
+            __pyx_t_1 = __pyx_t_2;
+            goto __pyx_L8_bool_binop_done;
+          }
+          __pyx_t_2 = (__pyx_v_7_cython_6cygrpc_g_channel_count != 0);
+          __pyx_t_1 = __pyx_t_2;
+          __pyx_L8_bool_binop_done:;
+          if (!__pyx_t_1) break;
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":78
+ *     lk = new unique_lock[mutex](g_greenlets_mu)
+ *     while not g_shutdown_greenlets_to_run_queue and g_channel_count != 0:
+ *       if not g_greenlets_to_run.empty():             # <<<<<<<<<<<<<<
+ *         break
+ *       g_greenlets_cv.wait(dereference(lk))
+ */
+          __pyx_t_1 = (!__pyx_v_7_cython_6cygrpc_g_greenlets_to_run.empty());
+          if (__pyx_t_1) {
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":79
+ *     while not g_shutdown_greenlets_to_run_queue and g_channel_count != 0:
+ *       if not g_greenlets_to_run.empty():
+ *         break             # <<<<<<<<<<<<<<
+ *       g_greenlets_cv.wait(dereference(lk))
+ *   if g_channel_count == 0:
+ */
+            goto __pyx_L7_break;
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":78
+ *     lk = new unique_lock[mutex](g_greenlets_mu)
+ *     while not g_shutdown_greenlets_to_run_queue and g_channel_count != 0:
+ *       if not g_greenlets_to_run.empty():             # <<<<<<<<<<<<<<
+ *         break
+ *       g_greenlets_cv.wait(dereference(lk))
+ */
+          }
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":80
+ *       if not g_greenlets_to_run.empty():
+ *         break
+ *       g_greenlets_cv.wait(dereference(lk))             # <<<<<<<<<<<<<<
+ *   if g_channel_count == 0:
+ *     del lk
+ */
+          __pyx_v_7_cython_6cygrpc_g_greenlets_cv.wait((*__pyx_v_lk));
+        }
+        __pyx_L7_break:;
+      }
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":73
+ * cdef object await_next_greenlet():
+ *   cdef unique_lock[mutex]* lk
+ *   with nogil:             # <<<<<<<<<<<<<<
+ *     # Cython doesn't allow us to do proper stack allocations, so we can't take
+ *     # advantage of RAII.
+ */
+      /*finally:*/ {
+        /*normal exit:*/{
+          #ifdef WITH_THREAD
+          __Pyx_FastGIL_Forget();
+          Py_BLOCK_THREADS
+          #endif
+          goto __pyx_L5;
+        }
+        __pyx_L5:;
+      }
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":81
+ *         break
+ *       g_greenlets_cv.wait(dereference(lk))
+ *   if g_channel_count == 0:             # <<<<<<<<<<<<<<
+ *     del lk
+ *     return None
+ */
+  __pyx_t_1 = (__pyx_v_7_cython_6cygrpc_g_channel_count == 0);
+  if (__pyx_t_1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":82
+ *       g_greenlets_cv.wait(dereference(lk))
+ *   if g_channel_count == 0:
+ *     del lk             # <<<<<<<<<<<<<<
+ *     return None
+ *   if g_shutdown_greenlets_to_run_queue:
+ */
+    delete __pyx_v_lk;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":83
+ *   if g_channel_count == 0:
+ *     del lk
+ *     return None             # <<<<<<<<<<<<<<
+ *   if g_shutdown_greenlets_to_run_queue:
+ *     del lk
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":81
+ *         break
+ *       g_greenlets_cv.wait(dereference(lk))
+ *   if g_channel_count == 0:             # <<<<<<<<<<<<<<
+ *     del lk
+ *     return None
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":84
+ *     del lk
+ *     return None
+ *   if g_shutdown_greenlets_to_run_queue:             # <<<<<<<<<<<<<<
+ *     del lk
+ *     return None
+ */
+  if (__pyx_v_7_cython_6cygrpc_g_shutdown_greenlets_to_run_queue) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":85
+ *     return None
+ *   if g_shutdown_greenlets_to_run_queue:
+ *     del lk             # <<<<<<<<<<<<<<
+ *     return None
+ *   cdef object to_call = <object>g_greenlets_to_run.front()
+ */
+    delete __pyx_v_lk;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":86
+ *   if g_shutdown_greenlets_to_run_queue:
+ *     del lk
+ *     return None             # <<<<<<<<<<<<<<
+ *   cdef object to_call = <object>g_greenlets_to_run.front()
+ *   Py_DECREF(to_call)
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":84
+ *     del lk
+ *     return None
+ *   if g_shutdown_greenlets_to_run_queue:             # <<<<<<<<<<<<<<
+ *     del lk
+ *     return None
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":87
+ *     del lk
+ *     return None
+ *   cdef object to_call = <object>g_greenlets_to_run.front()             # <<<<<<<<<<<<<<
+ *   Py_DECREF(to_call)
+ *   g_greenlets_to_run.pop()
+ */
+  __pyx_t_3 = __pyx_v_7_cython_6cygrpc_g_greenlets_to_run.front();
+  __pyx_t_4 = ((PyObject *)__pyx_t_3);
+  __Pyx_INCREF(__pyx_t_4);
+  __pyx_v_to_call = __pyx_t_4;
+  __pyx_t_4 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":88
+ *     return None
+ *   cdef object to_call = <object>g_greenlets_to_run.front()
+ *   Py_DECREF(to_call)             # <<<<<<<<<<<<<<
+ *   g_greenlets_to_run.pop()
+ *   del lk
+ */
+  Py_DECREF(__pyx_v_to_call);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":89
+ *   cdef object to_call = <object>g_greenlets_to_run.front()
+ *   Py_DECREF(to_call)
+ *   g_greenlets_to_run.pop()             # <<<<<<<<<<<<<<
+ *   del lk
+ *   return to_call
+ */
+  __pyx_v_7_cython_6cygrpc_g_greenlets_to_run.pop();
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":90
+ *   Py_DECREF(to_call)
+ *   g_greenlets_to_run.pop()
+ *   del lk             # <<<<<<<<<<<<<<
+ *   return to_call
+ * 
+ */
+  delete __pyx_v_lk;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":91
+ *   g_greenlets_to_run.pop()
+ *   del lk
+ *   return to_call             # <<<<<<<<<<<<<<
+ * 
+ * def spawn_greenlets():
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_to_call);
+  __pyx_r = __pyx_v_to_call;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":71
+ * 
+ * 
+ * cdef object await_next_greenlet():             # <<<<<<<<<<<<<<
+ *   cdef unique_lock[mutex]* lk
+ *   with nogil:
+ */
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_to_call);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":93
+ *   return to_call
+ * 
+ * def spawn_greenlets():             # <<<<<<<<<<<<<<
+ *   while True:
+ *     to_call = g_gevent_threadpool.apply(await_next_greenlet, ())
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_79spawn_greenlets(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_79spawn_greenlets = {"spawn_greenlets", (PyCFunction)__pyx_pw_7_cython_6cygrpc_79spawn_greenlets, METH_NOARGS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_79spawn_greenlets(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("spawn_greenlets (wrapper)", 0);
+  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_78spawn_greenlets(__pyx_self);
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_78spawn_greenlets(CYTHON_UNUSED PyObject *__pyx_self) {
+  PyObject *__pyx_v_to_call = NULL;
+  PyObject *__pyx_v_fn = NULL;
+  PyObject *__pyx_v_args = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  unsigned int __pyx_t_5;
+  int __pyx_t_6;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("spawn_greenlets", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":94
+ * 
+ * def spawn_greenlets():
+ *   while True:             # <<<<<<<<<<<<<<
+ *     to_call = g_gevent_threadpool.apply(await_next_greenlet, ())
+ *     if to_call is None:
+ */
+  while (1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":95
+ * def spawn_greenlets():
+ *   while True:
+ *     to_call = g_gevent_threadpool.apply(await_next_greenlet, ())             # <<<<<<<<<<<<<<
+ *     if to_call is None:
+ *       break
+ */
+    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_g_gevent_threadpool); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 95, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_apply); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 95, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_t_2 = __Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_(__pyx_f_7_cython_6cygrpc_await_next_greenlet); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 95, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __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[3] = {__pyx_t_4, __pyx_t_2, __pyx_empty_tuple};
+      __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;
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 95, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    }
+    __Pyx_XDECREF_SET(__pyx_v_to_call, __pyx_t_1);
+    __pyx_t_1 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":96
+ *   while True:
+ *     to_call = g_gevent_threadpool.apply(await_next_greenlet, ())
+ *     if to_call is None:             # <<<<<<<<<<<<<<
+ *       break
+ *     fn = to_call[0]
+ */
+    __pyx_t_6 = (__pyx_v_to_call == Py_None);
+    if (__pyx_t_6) {
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":97
+ *     to_call = g_gevent_threadpool.apply(await_next_greenlet, ())
+ *     if to_call is None:
+ *       break             # <<<<<<<<<<<<<<
+ *     fn = to_call[0]
+ *     args = to_call[1:]
+ */
+      goto __pyx_L4_break;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":96
+ *   while True:
+ *     to_call = g_gevent_threadpool.apply(await_next_greenlet, ())
+ *     if to_call is None:             # <<<<<<<<<<<<<<
+ *       break
+ *     fn = to_call[0]
+ */
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":98
+ *     if to_call is None:
+ *       break
+ *     fn = to_call[0]             # <<<<<<<<<<<<<<
+ *     args = to_call[1:]
+ *     fn(*args)
+ */
+    __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_to_call, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 98, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_XDECREF_SET(__pyx_v_fn, __pyx_t_1);
+    __pyx_t_1 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":99
+ *       break
+ *     fn = to_call[0]
+ *     args = to_call[1:]             # <<<<<<<<<<<<<<
+ *     fn(*args)
+ * 
+ */
+    __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_v_to_call, 1, 0, NULL, NULL, &__pyx_slice__37, 1, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 99, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_XDECREF_SET(__pyx_v_args, __pyx_t_1);
+    __pyx_t_1 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":100
+ *     fn = to_call[0]
+ *     args = to_call[1:]
+ *     fn(*args)             # <<<<<<<<<<<<<<
+ * 
+ * def run_spawn_greenlets():
+ */
+    __pyx_t_1 = __Pyx_PySequence_Tuple(__pyx_v_args); if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 100, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_v_fn, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 100, __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;
+  }
+  __pyx_L4_break:;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":93
+ *   return to_call
+ * 
+ * def spawn_greenlets():             # <<<<<<<<<<<<<<
+ *   while True:
+ *     to_call = g_gevent_threadpool.apply(await_next_greenlet, ())
+ */
+
+  /* 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("_cython.cygrpc.spawn_greenlets", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_to_call);
+  __Pyx_XDECREF(__pyx_v_fn);
+  __Pyx_XDECREF(__pyx_v_args);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":102
+ *     fn(*args)
+ * 
+ * def run_spawn_greenlets():             # <<<<<<<<<<<<<<
+ *   g_gevent_pool.spawn(spawn_greenlets)
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_81run_spawn_greenlets(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_81run_spawn_greenlets = {"run_spawn_greenlets", (PyCFunction)__pyx_pw_7_cython_6cygrpc_81run_spawn_greenlets, METH_NOARGS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_81run_spawn_greenlets(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("run_spawn_greenlets (wrapper)", 0);
+  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_80run_spawn_greenlets(__pyx_self);
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_80run_spawn_greenlets(CYTHON_UNUSED PyObject *__pyx_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("run_spawn_greenlets", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":103
+ * 
+ * def run_spawn_greenlets():
+ *   g_gevent_pool.spawn(spawn_greenlets)             # <<<<<<<<<<<<<<
+ * 
+ * def shutdown_await_next_greenlet():
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_g_gevent_pool); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 103, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_spawn); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 103, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_spawn_greenlets); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 103, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __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_t_2};
+    __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;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 103, __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/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":102
+ *     fn(*args)
+ * 
+ * def run_spawn_greenlets():             # <<<<<<<<<<<<<<
+ *   g_gevent_pool.spawn(spawn_greenlets)
+ * 
+ */
+
+  /* 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("_cython.cygrpc.run_spawn_greenlets", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":105
+ *   g_gevent_pool.spawn(spawn_greenlets)
+ * 
+ * def shutdown_await_next_greenlet():             # <<<<<<<<<<<<<<
+ *   global g_shutdown_greenlets_to_run_queue
+ *   cdef unique_lock[mutex]* lk
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_83shutdown_await_next_greenlet(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_83shutdown_await_next_greenlet = {"shutdown_await_next_greenlet", (PyCFunction)__pyx_pw_7_cython_6cygrpc_83shutdown_await_next_greenlet, METH_NOARGS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_83shutdown_await_next_greenlet(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("shutdown_await_next_greenlet (wrapper)", 0);
+  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_82shutdown_await_next_greenlet(__pyx_self);
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_82shutdown_await_next_greenlet(CYTHON_UNUSED PyObject *__pyx_self) {
+  std::unique_lock<std::mutex>  *__pyx_v_lk;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("shutdown_await_next_greenlet", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":108
+ *   global g_shutdown_greenlets_to_run_queue
+ *   cdef unique_lock[mutex]* lk
+ *   with nogil:             # <<<<<<<<<<<<<<
+ *     lk = new unique_lock[mutex](g_greenlets_mu)
+ *     g_shutdown_greenlets_to_run_queue = True
+ */
+  {
+      #ifdef WITH_THREAD
+      PyThreadState *_save;
+      _save = NULL;
+      Py_UNBLOCK_THREADS
+      __Pyx_FastGIL_Remember();
+      #endif
+      /*try:*/ {
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":109
+ *   cdef unique_lock[mutex]* lk
+ *   with nogil:
+ *     lk = new unique_lock[mutex](g_greenlets_mu)             # <<<<<<<<<<<<<<
+ *     g_shutdown_greenlets_to_run_queue = True
+ *   del lk
+ */
+        __pyx_v_lk = new std::unique_lock<std::mutex> (__pyx_v_7_cython_6cygrpc_g_greenlets_mu);
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":110
+ *   with nogil:
+ *     lk = new unique_lock[mutex](g_greenlets_mu)
+ *     g_shutdown_greenlets_to_run_queue = True             # <<<<<<<<<<<<<<
+ *   del lk
+ *   g_greenlets_cv.notify_all()
+ */
+        __pyx_v_7_cython_6cygrpc_g_shutdown_greenlets_to_run_queue = 1;
+      }
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":108
+ *   global g_shutdown_greenlets_to_run_queue
+ *   cdef unique_lock[mutex]* lk
+ *   with nogil:             # <<<<<<<<<<<<<<
+ *     lk = new unique_lock[mutex](g_greenlets_mu)
+ *     g_shutdown_greenlets_to_run_queue = True
+ */
+      /*finally:*/ {
+        /*normal exit:*/{
+          #ifdef WITH_THREAD
+          __Pyx_FastGIL_Forget();
+          Py_BLOCK_THREADS
+          #endif
+          goto __pyx_L5;
+        }
+        __pyx_L5:;
+      }
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":111
+ *     lk = new unique_lock[mutex](g_greenlets_mu)
+ *     g_shutdown_greenlets_to_run_queue = True
+ *   del lk             # <<<<<<<<<<<<<<
+ *   g_greenlets_cv.notify_all()
+ * 
+ */
+  delete __pyx_v_lk;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":112
+ *     g_shutdown_greenlets_to_run_queue = True
+ *   del lk
+ *   g_greenlets_cv.notify_all()             # <<<<<<<<<<<<<<
+ * 
+ * def init_grpc_gevent():
+ */
+  __pyx_v_7_cython_6cygrpc_g_greenlets_cv.notify_all();
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":105
+ *   g_gevent_pool.spawn(spawn_greenlets)
+ * 
+ * def shutdown_await_next_greenlet():             # <<<<<<<<<<<<<<
+ *   global g_shutdown_greenlets_to_run_queue
+ *   cdef unique_lock[mutex]* lk
+ */
+
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":114
+ *   g_greenlets_cv.notify_all()
+ * 
+ * def init_grpc_gevent():             # <<<<<<<<<<<<<<
+ *   # Lazily import gevent
+ *   global gevent_hub
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_85init_grpc_gevent(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_85init_grpc_gevent = {"init_grpc_gevent", (PyCFunction)__pyx_pw_7_cython_6cygrpc_85init_grpc_gevent, METH_NOARGS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_85init_grpc_gevent(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("init_grpc_gevent (wrapper)", 0);
+  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_84init_grpc_gevent(__pyx_self);
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_84init_grpc_gevent(CYTHON_UNUSED PyObject *__pyx_self) {
+  PyObject *__pyx_v_gevent = 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;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("init_grpc_gevent", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":122
+ *   global g_gevent_pool
+ * 
+ *   import gevent             # <<<<<<<<<<<<<<
+ *   import gevent.pool
+ * 
+ */
+  __pyx_t_1 = __Pyx_ImportDottedModule(__pyx_n_s_gevent, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 122, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_gevent = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":123
+ * 
+ *   import gevent
+ *   import gevent.pool             # <<<<<<<<<<<<<<
+ * 
+ *   gevent_hub = gevent.hub
+ */
+  __pyx_t_1 = __Pyx_Import(__pyx_n_s_gevent_pool, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 123, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF_SET(__pyx_v_gevent, __pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":125
+ *   import gevent.pool
+ * 
+ *   gevent_hub = gevent.hub             # <<<<<<<<<<<<<<
+ *   g_gevent_threadpool = gevent_hub.get_hub().threadpool
+ * 
+ */
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_gevent, __pyx_n_s_hub); if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 125, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_gevent_hub, __pyx_t_1) < 0) __PYX_ERR(28, 125, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":126
+ * 
+ *   gevent_hub = gevent.hub
+ *   g_gevent_threadpool = gevent_hub.get_hub().threadpool             # <<<<<<<<<<<<<<
+ * 
+ *   g_gevent_activated = True
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_gevent_hub); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 126, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_get_hub); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 126, __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(28, 126, __pyx_L1_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_threadpool); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 126, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_g_gevent_threadpool, __pyx_t_3) < 0) __PYX_ERR(28, 126, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":128
+ *   g_gevent_threadpool = gevent_hub.get_hub().threadpool
+ * 
+ *   g_gevent_activated = True             # <<<<<<<<<<<<<<
+ *   g_interrupt_check_period_ms = 2000
+ * 
+ */
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_g_gevent_activated, Py_True) < 0) __PYX_ERR(28, 128, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":129
+ * 
+ *   g_gevent_activated = True
+ *   g_interrupt_check_period_ms = 2000             # <<<<<<<<<<<<<<
+ * 
+ *   g_gevent_pool = gevent.pool.Group()
+ */
+  __pyx_v_7_cython_6cygrpc_g_interrupt_check_period_ms = 0x7D0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":131
+ *   g_interrupt_check_period_ms = 2000
+ * 
+ *   g_gevent_pool = gevent.pool.Group()             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_gevent, __pyx_n_s_pool); if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 131, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_Group); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 131, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __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_2))) {
+    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
+    if (likely(__pyx_t_1)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_1);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
+      __pyx_t_4 = 1;
+    }
+  }
+  #endif
+  {
+    PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL};
+    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+    if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 131, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  }
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_g_gevent_pool, __pyx_t_3) < 0) __PYX_ERR(28, 131, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":134
+ * 
+ * 
+ *   set_async_callback_func(_submit_to_greenlet_queue)             # <<<<<<<<<<<<<<
+ * 
+ *   # TODO: Document how this all works.
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_set_async_callback_func); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 134, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_1 = __Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args(__pyx_f_7_cython_6cygrpc__submit_to_greenlet_queue); if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 134, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_5 = NULL;
+  __pyx_t_4 = 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_4 = 1;
+    }
+  }
+  #endif
+  {
+    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_1};
+    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 134, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  }
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":137
+ * 
+ *   # TODO: Document how this all works.
+ *   atexit.register(shutdown_await_next_greenlet)             # <<<<<<<<<<<<<<
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_atexit); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 137, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_register); if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 137, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_shutdown_await_next_greenlet); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 137, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_5 = NULL;
+  __pyx_t_4 = 0;
+  #if CYTHON_UNPACK_METHODS
+  if (unlikely(PyMethod_Check(__pyx_t_1))) {
+    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
+    if (likely(__pyx_t_5)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+      __Pyx_INCREF(__pyx_t_5);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_1, function);
+      __pyx_t_4 = 1;
+    }
+  }
+  #endif
+  {
+    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_2};
+    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 137, __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/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":114
+ *   g_greenlets_cv.notify_all()
+ * 
+ * def init_grpc_gevent():             # <<<<<<<<<<<<<<
+ *   # Lazily import gevent
+ *   global gevent_hub
+ */
+
+  /* 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_AddTraceback("_cython.cygrpc.init_grpc_gevent", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_gevent);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":15
+ * # limitations under the License.
+ * 
+ * def _contextvars_supported():             # <<<<<<<<<<<<<<
+ *     """Determines if the contextvars module is supported.
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_87_contextvars_supported(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+PyDoc_STRVAR(__pyx_doc_7_cython_6cygrpc_86_contextvars_supported, "Determines if the contextvars module is supported.\n\n    We use a 'try it and see if it works approach' here rather than predicting\n    based on interpreter version in order to support older interpreters that\n    may have a backported module based on, e.g. `threading.local`.\n\n    Returns:\n      A bool indicating whether `contextvars` are supported in the current\n      environment.\n    ");
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_87_contextvars_supported = {"_contextvars_supported", (PyCFunction)__pyx_pw_7_cython_6cygrpc_87_contextvars_supported, METH_NOARGS, __pyx_doc_7_cython_6cygrpc_86_contextvars_supported};
+static PyObject *__pyx_pw_7_cython_6cygrpc_87_contextvars_supported(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("_contextvars_supported (wrapper)", 0);
+  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_86_contextvars_supported(__pyx_self);
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_86_contextvars_supported(CYTHON_UNUSED PyObject *__pyx_self) {
+  CYTHON_UNUSED PyObject *__pyx_v_contextvars = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  int __pyx_t_5;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_contextvars_supported", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":26
+ *       environment.
+ *     """
+ *     try:             # <<<<<<<<<<<<<<
+ *         import contextvars
+ *         return True
+ */
+  {
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
+    __Pyx_XGOTREF(__pyx_t_1);
+    __Pyx_XGOTREF(__pyx_t_2);
+    __Pyx_XGOTREF(__pyx_t_3);
+    /*try:*/ {
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":27
+ *     """
+ *     try:
+ *         import contextvars             # <<<<<<<<<<<<<<
+ *         return True
+ *     except ImportError:
+ */
+      __pyx_t_4 = __Pyx_ImportDottedModule(__pyx_n_s_contextvars, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 27, __pyx_L3_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      __pyx_v_contextvars = __pyx_t_4;
+      __pyx_t_4 = 0;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":28
+ *     try:
+ *         import contextvars
+ *         return True             # <<<<<<<<<<<<<<
+ *     except ImportError:
+ *         return False
+ */
+      __Pyx_XDECREF(__pyx_r);
+      __Pyx_INCREF(Py_True);
+      __pyx_r = Py_True;
+      goto __pyx_L7_try_return;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":26
+ *       environment.
+ *     """
+ *     try:             # <<<<<<<<<<<<<<
+ *         import contextvars
+ *         return True
+ */
+    }
+    __pyx_L3_error:;
+    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":29
+ *         import contextvars
+ *         return True
+ *     except ImportError:             # <<<<<<<<<<<<<<
+ *         return False
+ * 
+ */
+    __pyx_t_5 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ImportError);
+    if (__pyx_t_5) {
+      __Pyx_AddTraceback("_cython.cygrpc._contextvars_supported", __pyx_clineno, __pyx_lineno, __pyx_filename);
+      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(29, 29, __pyx_L5_except_error)
+      __Pyx_XGOTREF(__pyx_t_4);
+      __Pyx_XGOTREF(__pyx_t_6);
+      __Pyx_XGOTREF(__pyx_t_7);
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":30
+ *         return True
+ *     except ImportError:
+ *         return False             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+      __Pyx_XDECREF(__pyx_r);
+      __Pyx_INCREF(Py_False);
+      __pyx_r = Py_False;
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+      goto __pyx_L6_except_return;
+    }
+    goto __pyx_L5_except_error;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":26
+ *       environment.
+ *     """
+ *     try:             # <<<<<<<<<<<<<<
+ *         import contextvars
+ *         return True
+ */
+    __pyx_L5_except_error:;
+    __Pyx_XGIVEREF(__pyx_t_1);
+    __Pyx_XGIVEREF(__pyx_t_2);
+    __Pyx_XGIVEREF(__pyx_t_3);
+    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+    goto __pyx_L1_error;
+    __pyx_L7_try_return:;
+    __Pyx_XGIVEREF(__pyx_t_1);
+    __Pyx_XGIVEREF(__pyx_t_2);
+    __Pyx_XGIVEREF(__pyx_t_3);
+    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+    goto __pyx_L0;
+    __pyx_L6_except_return:;
+    __Pyx_XGIVEREF(__pyx_t_1);
+    __Pyx_XGIVEREF(__pyx_t_2);
+    __Pyx_XGIVEREF(__pyx_t_3);
+    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+    goto __pyx_L0;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":15
+ * # limitations under the License.
+ * 
+ * def _contextvars_supported():             # <<<<<<<<<<<<<<
+ *     """Determines if the contextvars module is supported.
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_AddTraceback("_cython.cygrpc._contextvars_supported", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_contextvars);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":33
+ * 
+ * 
+ * def _run_with_context(target):             # <<<<<<<<<<<<<<
+ *     """Runs a callable with contextvars propagated.
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_89_run_with_context(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_7_cython_6cygrpc_88_run_with_context, "Runs a callable with contextvars propagated.\n\n    If contextvars are supported, the calling thread's context will be copied\n    and propagated. If they are not supported, this function is equivalent\n    to the identity function.\n\n    Args:\n      target: A callable object to wrap.\n    Returns:\n      A callable object with the same signature as `target` but with\n        contextvars propagated.\n    ");
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_89_run_with_context = {"_run_with_context", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_89_run_with_context, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7_cython_6cygrpc_88_run_with_context};
+static PyObject *__pyx_pw_7_cython_6cygrpc_89_run_with_context(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
+) {
+  CYTHON_UNUSED PyObject *__pyx_v_target = 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("_run_with_context (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_target,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_target)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 33, __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, "_run_with_context") < 0)) __PYX_ERR(29, 33, __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_target = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("_run_with_context", 1, 1, 1, __pyx_nargs); __PYX_ERR(29, 33, __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("_cython.cygrpc._run_with_context", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_88_run_with_context(__pyx_self, __pyx_v_target);
+
+  /* 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_7_cython_6cygrpc_88_run_with_context(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_target) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("_run_with_context", 1);
+
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":50
+ * if _contextvars_supported():
+ *     import contextvars
+ *     def _run_with_context(target):             # <<<<<<<<<<<<<<
+ *         ctx = contextvars.copy_context()
+ *         def _run(*args):
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_91_run_with_context(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_91_run_with_context = {"_run_with_context", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_91_run_with_context, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_91_run_with_context(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_target = 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("_run_with_context (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_target,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_target)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 50, __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, "_run_with_context") < 0)) __PYX_ERR(29, 50, __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_target = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("_run_with_context", 1, 1, 1, __pyx_nargs); __PYX_ERR(29, 50, __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("_cython.cygrpc._run_with_context", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_90_run_with_context(__pyx_self, __pyx_v_target);
+
+  /* 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;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":52
+ *     def _run_with_context(target):
+ *         ctx = contextvars.copy_context()
+ *         def _run(*args):             # <<<<<<<<<<<<<<
+ *             ctx.run(target, *args)
+ *         return _run
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_17_run_with_context_1_run(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_17_run_with_context_1_run = {"_run", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_7_cython_6cygrpc_17_run_with_context_1_run, METH_VARARGS|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_17_run_with_context_1_run(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_args = 0;
+  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("_run (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) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "_run", 0))) return NULL;
+  __Pyx_INCREF(__pyx_args);
+  __pyx_v_args = __pyx_args;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_17_run_with_context__run(__pyx_self, __pyx_v_args);
+
+  /* function exit code */
+  __Pyx_DECREF(__pyx_v_args);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_17_run_with_context__run(PyObject *__pyx_self, PyObject *__pyx_v_args) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context *__pyx_cur_scope;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context *__pyx_outer_scope;
+  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("_run", 1);
+  __pyx_outer_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context *) __Pyx_CyFunction_GetClosure(__pyx_self);
+  __pyx_cur_scope = __pyx_outer_scope;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":53
+ *         ctx = contextvars.copy_context()
+ *         def _run(*args):
+ *             ctx.run(target, *args)             # <<<<<<<<<<<<<<
+ *         return _run
+ * else:
+ */
+  if (unlikely(!__pyx_cur_scope->__pyx_v_ctx)) { __Pyx_RaiseClosureNameError("ctx"); __PYX_ERR(29, 53, __pyx_L1_error) }
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_ctx, __pyx_n_s_run); if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 53, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  if (unlikely(!__pyx_cur_scope->__pyx_v_target)) { __Pyx_RaiseClosureNameError("target"); __PYX_ERR(29, 53, __pyx_L1_error) }
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 53, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_target);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_target);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_cur_scope->__pyx_v_target)) __PYX_ERR(29, 53, __pyx_L1_error);
+  __pyx_t_3 = PyNumber_Add(__pyx_t_2, __pyx_v_args); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 53, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 53, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":52
+ *     def _run_with_context(target):
+ *         ctx = contextvars.copy_context()
+ *         def _run(*args):             # <<<<<<<<<<<<<<
+ *             ctx.run(target, *args)
+ *         return _run
+ */
+
+  /* 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("_cython.cygrpc._run_with_context._run", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":50
+ * if _contextvars_supported():
+ *     import contextvars
+ *     def _run_with_context(target):             # <<<<<<<<<<<<<<
+ *         ctx = contextvars.copy_context()
+ *         def _run(*args):
+ */
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_90_run_with_context(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_target) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context *__pyx_cur_scope;
+  PyObject *__pyx_v__run = 0;
+  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("_run_with_context", 0);
+  __pyx_cur_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context, __pyx_empty_tuple, NULL);
+  if (unlikely(!__pyx_cur_scope)) {
+    __pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context *)Py_None);
+    __Pyx_INCREF(Py_None);
+    __PYX_ERR(29, 50, __pyx_L1_error)
+  } else {
+    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+  }
+  __pyx_cur_scope->__pyx_v_target = __pyx_v_target;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_target);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_target);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":51
+ *     import contextvars
+ *     def _run_with_context(target):
+ *         ctx = contextvars.copy_context()             # <<<<<<<<<<<<<<
+ *         def _run(*args):
+ *             ctx.run(target, *args)
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_contextvars); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 51, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_copy_context); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 51, __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(29, 51, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  }
+  __Pyx_GIVEREF(__pyx_t_1);
+  __pyx_cur_scope->__pyx_v_ctx = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":52
+ *     def _run_with_context(target):
+ *         ctx = contextvars.copy_context()
+ *         def _run(*args):             # <<<<<<<<<<<<<<
+ *             ctx.run(target, *args)
+ *         return _run
+ */
+  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_17_run_with_context_1_run, 0, __pyx_n_s_run_with_context_locals__run, ((PyObject*)__pyx_cur_scope), __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__41)); if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 52, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v__run = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":54
+ *         def _run(*args):
+ *             ctx.run(target, *args)
+ *         return _run             # <<<<<<<<<<<<<<
+ * else:
+ *     def _run_with_context(target):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v__run);
+  __pyx_r = __pyx_v__run;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":50
+ * if _contextvars_supported():
+ *     import contextvars
+ *     def _run_with_context(target):             # <<<<<<<<<<<<<<
+ *         ctx = contextvars.copy_context()
+ *         def _run(*args):
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("_cython.cygrpc._run_with_context", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v__run);
+  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":56
+ *         return _run
+ * else:
+ *     def _run_with_context(target):             # <<<<<<<<<<<<<<
+ *         def _run(*args):
+ *             target(*args)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_93_run_with_context(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_93_run_with_context = {"_run_with_context", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_93_run_with_context, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_93_run_with_context(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_target = 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("_run_with_context (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_target,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_target)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 56, __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, "_run_with_context") < 0)) __PYX_ERR(29, 56, __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_target = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("_run_with_context", 1, 1, 1, __pyx_nargs); __PYX_ERR(29, 56, __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("_cython.cygrpc._run_with_context", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_92_run_with_context(__pyx_self, __pyx_v_target);
+
+  /* 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;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":57
+ * else:
+ *     def _run_with_context(target):
+ *         def _run(*args):             # <<<<<<<<<<<<<<
+ *             target(*args)
+ *         return _run
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_17_run_with_context_3_run(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_17_run_with_context_3_run = {"_run", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_7_cython_6cygrpc_17_run_with_context_3_run, METH_VARARGS|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_17_run_with_context_3_run(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_args = 0;
+  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("_run (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) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "_run", 0))) return NULL;
+  __Pyx_INCREF(__pyx_args);
+  __pyx_v_args = __pyx_args;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_17_run_with_context_2_run(__pyx_self, __pyx_v_args);
+
+  /* function exit code */
+  __Pyx_DECREF(__pyx_v_args);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_17_run_with_context_2_run(PyObject *__pyx_self, PyObject *__pyx_v_args) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context *__pyx_cur_scope;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context *__pyx_outer_scope;
+  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("_run", 1);
+  __pyx_outer_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context *) __Pyx_CyFunction_GetClosure(__pyx_self);
+  __pyx_cur_scope = __pyx_outer_scope;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":58
+ *     def _run_with_context(target):
+ *         def _run(*args):
+ *             target(*args)             # <<<<<<<<<<<<<<
+ *         return _run
+ */
+  if (unlikely(!__pyx_cur_scope->__pyx_v_target)) { __Pyx_RaiseClosureNameError("target"); __PYX_ERR(29, 58, __pyx_L1_error) }
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_cur_scope->__pyx_v_target, __pyx_v_args, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 58, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":57
+ * else:
+ *     def _run_with_context(target):
+ *         def _run(*args):             # <<<<<<<<<<<<<<
+ *             target(*args)
+ *         return _run
+ */
+
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc._run_with_context._run", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":56
+ *         return _run
+ * else:
+ *     def _run_with_context(target):             # <<<<<<<<<<<<<<
+ *         def _run(*args):
+ *             target(*args)
+ */
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_92_run_with_context(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_target) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context *__pyx_cur_scope;
+  PyObject *__pyx_v__run = 0;
+  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("_run_with_context", 0);
+  __pyx_cur_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context, __pyx_empty_tuple, NULL);
+  if (unlikely(!__pyx_cur_scope)) {
+    __pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context *)Py_None);
+    __Pyx_INCREF(Py_None);
+    __PYX_ERR(29, 56, __pyx_L1_error)
+  } else {
+    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+  }
+  __pyx_cur_scope->__pyx_v_target = __pyx_v_target;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_target);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_target);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":57
+ * else:
+ *     def _run_with_context(target):
+ *         def _run(*args):             # <<<<<<<<<<<<<<
+ *             target(*args)
+ *         return _run
+ */
+  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_17_run_with_context_3_run, 0, __pyx_n_s_run_with_context_locals__run, ((PyObject*)__pyx_cur_scope), __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__42)); if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 57, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v__run = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":59
+ *         def _run(*args):
+ *             target(*args)
+ *         return _run             # <<<<<<<<<<<<<<
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v__run);
+  __pyx_r = __pyx_v__run;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":56
+ *         return _run
+ * else:
+ *     def _run_with_context(target):             # <<<<<<<<<<<<<<
+ *         def _run(*args):
+ *             target(*args)
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc._run_with_context", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v__run);
+  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":38
+ * _fork_handler_failed = False
+ * 
+ * cdef void __prefork() noexcept nogil:             # <<<<<<<<<<<<<<
+ *     with gil:
+ *         global _fork_handler_failed
+ */
+
+static void __pyx_f_7_cython_6cygrpc___prefork(void) {
+  __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;
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
+  PyObject *__pyx_t_9 = NULL;
+  PyObject *__pyx_t_10 = NULL;
+  int __pyx_t_11;
+  int __pyx_t_12;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  #ifdef WITH_THREAD
+  PyGILState_STATE __pyx_gilstate_save;
+  #endif
+  __Pyx_RefNannySetupContext("__prefork", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":39
+ * 
+ * cdef void __prefork() noexcept nogil:
+ *     with gil:             # <<<<<<<<<<<<<<
+ *         global _fork_handler_failed
+ *         _fork_handler_failed = False
+ */
+  {
+      #ifdef WITH_THREAD
+      PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
+      #endif
+      /*try:*/ {
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":41
+ *     with gil:
+ *         global _fork_handler_failed
+ *         _fork_handler_failed = False             # <<<<<<<<<<<<<<
+ *         with _fork_state.fork_in_progress_condition:
+ *             _fork_state.fork_in_progress = True
+ */
+        if (PyDict_SetItem(__pyx_d, __pyx_n_s_fork_handler_failed, Py_False) < 0) __PYX_ERR(1, 41, __pyx_L4_error)
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":42
+ *         global _fork_handler_failed
+ *         _fork_handler_failed = False
+ *         with _fork_state.fork_in_progress_condition:             # <<<<<<<<<<<<<<
+ *             _fork_state.fork_in_progress = True
+ *         if not _fork_state.active_thread_count.await_zero_threads(
+ */
+        /*with:*/ {
+          __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 42, __pyx_L4_error)
+          __Pyx_GOTREF(__pyx_t_1);
+          __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_fork_in_progress_condition); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 42, __pyx_L4_error)
+          __Pyx_GOTREF(__pyx_t_2);
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_t_2, __pyx_n_s_exit); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 42, __pyx_L4_error)
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_t_2, __pyx_n_s_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 42, __pyx_L6_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, NULL};
+            __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
+            __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+            if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 42, __pyx_L6_error)
+            __Pyx_GOTREF(__pyx_t_1);
+            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          }
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          /*try:*/ {
+            {
+              __Pyx_PyThreadState_declare
+              __Pyx_PyThreadState_assign
+              __Pyx_ExceptionSave(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
+              __Pyx_XGOTREF(__pyx_t_7);
+              __Pyx_XGOTREF(__pyx_t_8);
+              __Pyx_XGOTREF(__pyx_t_9);
+              /*try:*/ {
+
+                /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":43
+ *         _fork_handler_failed = False
+ *         with _fork_state.fork_in_progress_condition:
+ *             _fork_state.fork_in_progress = True             # <<<<<<<<<<<<<<
+ *         if not _fork_state.active_thread_count.await_zero_threads(
+ *                 _AWAIT_THREADS_TIMEOUT_SECONDS):
+ */
+                __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 43, __pyx_L10_error)
+                __Pyx_GOTREF(__pyx_t_2);
+                if (__Pyx_PyObject_SetAttrStr(__pyx_t_2, __pyx_n_s_fork_in_progress, Py_True) < 0) __PYX_ERR(1, 43, __pyx_L10_error)
+                __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+                /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":42
+ *         global _fork_handler_failed
+ *         _fork_handler_failed = False
+ *         with _fork_state.fork_in_progress_condition:             # <<<<<<<<<<<<<<
+ *             _fork_state.fork_in_progress = True
+ *         if not _fork_state.active_thread_count.await_zero_threads(
+ */
+              }
+              __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+              __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+              __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+              goto __pyx_L15_try_end;
+              __pyx_L10_error:;
+              __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+              __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+              __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+              __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+              /*except:*/ {
+                __Pyx_AddTraceback("_cython.cygrpc.__prefork", __pyx_clineno, __pyx_lineno, __pyx_filename);
+                if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_1, &__pyx_t_4) < 0) __PYX_ERR(1, 42, __pyx_L12_except_error)
+                __Pyx_XGOTREF(__pyx_t_2);
+                __Pyx_XGOTREF(__pyx_t_1);
+                __Pyx_XGOTREF(__pyx_t_4);
+                __pyx_t_5 = PyTuple_Pack(3, __pyx_t_2, __pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 42, __pyx_L12_except_error)
+                __Pyx_GOTREF(__pyx_t_5);
+                __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL);
+                __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+                __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+                if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 42, __pyx_L12_except_error)
+                __Pyx_GOTREF(__pyx_t_10);
+                __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_10);
+                __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+                if (__pyx_t_11 < 0) __PYX_ERR(1, 42, __pyx_L12_except_error)
+                __pyx_t_12 = (!__pyx_t_11);
+                if (unlikely(__pyx_t_12)) {
+                  __Pyx_GIVEREF(__pyx_t_2);
+                  __Pyx_GIVEREF(__pyx_t_1);
+                  __Pyx_XGIVEREF(__pyx_t_4);
+                  __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_1, __pyx_t_4);
+                  __pyx_t_2 = 0; __pyx_t_1 = 0; __pyx_t_4 = 0; 
+                  __PYX_ERR(1, 42, __pyx_L12_except_error)
+                }
+                __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+                __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+                __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+                goto __pyx_L11_exception_handled;
+              }
+              __pyx_L12_except_error:;
+              __Pyx_XGIVEREF(__pyx_t_7);
+              __Pyx_XGIVEREF(__pyx_t_8);
+              __Pyx_XGIVEREF(__pyx_t_9);
+              __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
+              goto __pyx_L4_error;
+              __pyx_L11_exception_handled:;
+              __Pyx_XGIVEREF(__pyx_t_7);
+              __Pyx_XGIVEREF(__pyx_t_8);
+              __Pyx_XGIVEREF(__pyx_t_9);
+              __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
+              __pyx_L15_try_end:;
+            }
+          }
+          /*finally:*/ {
+            /*normal exit:*/{
+              if (__pyx_t_3) {
+                __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__11, NULL);
+                __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+                if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 42, __pyx_L4_error)
+                __Pyx_GOTREF(__pyx_t_9);
+                __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+              }
+              goto __pyx_L9;
+            }
+            __pyx_L9:;
+          }
+          goto __pyx_L19;
+          __pyx_L6_error:;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L4_error;
+          __pyx_L19:;
+        }
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":44
+ *         with _fork_state.fork_in_progress_condition:
+ *             _fork_state.fork_in_progress = True
+ *         if not _fork_state.active_thread_count.await_zero_threads(             # <<<<<<<<<<<<<<
+ *                 _AWAIT_THREADS_TIMEOUT_SECONDS):
+ *             _LOGGER.error(
+ */
+        __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 44, __pyx_L4_error)
+        __Pyx_GOTREF(__pyx_t_1);
+        __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_active_thread_count); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 44, __pyx_L4_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_await_zero_threads); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 44, __pyx_L4_error)
+        __Pyx_GOTREF(__pyx_t_1);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":45
+ *             _fork_state.fork_in_progress = True
+ *         if not _fork_state.active_thread_count.await_zero_threads(
+ *                 _AWAIT_THREADS_TIMEOUT_SECONDS):             # <<<<<<<<<<<<<<
+ *             _LOGGER.error(
+ *                 'Failed to shutdown gRPC Python threads prior to fork. '
+ */
+        __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_AWAIT_THREADS_TIMEOUT_SECONDS); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 45, __pyx_L4_error)
+        __Pyx_GOTREF(__pyx_t_2);
+        __pyx_t_5 = NULL;
+        __pyx_t_6 = 0;
+        #if CYTHON_UNPACK_METHODS
+        if (likely(PyMethod_Check(__pyx_t_1))) {
+          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
+          if (likely(__pyx_t_5)) {
+            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+            __Pyx_INCREF(__pyx_t_5);
+            __Pyx_INCREF(function);
+            __Pyx_DECREF_SET(__pyx_t_1, function);
+            __pyx_t_6 = 1;
+          }
+        }
+        #endif
+        {
+          PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_2};
+          __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
+          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 44, __pyx_L4_error)
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+        }
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":44
+ *         with _fork_state.fork_in_progress_condition:
+ *             _fork_state.fork_in_progress = True
+ *         if not _fork_state.active_thread_count.await_zero_threads(             # <<<<<<<<<<<<<<
+ *                 _AWAIT_THREADS_TIMEOUT_SECONDS):
+ *             _LOGGER.error(
+ */
+        __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(1, 44, __pyx_L4_error)
+        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __pyx_t_11 = (!__pyx_t_12);
+        if (__pyx_t_11) {
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":46
+ *         if not _fork_state.active_thread_count.await_zero_threads(
+ *                 _AWAIT_THREADS_TIMEOUT_SECONDS):
+ *             _LOGGER.error(             # <<<<<<<<<<<<<<
+ *                 'Failed to shutdown gRPC Python threads prior to fork. '
+ *                 'Behavior after fork will be undefined.')
+ */
+          __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_LOGGER); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 46, __pyx_L4_error)
+          __Pyx_GOTREF(__pyx_t_1);
+          __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_error); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 46, __pyx_L4_error)
+          __Pyx_GOTREF(__pyx_t_2);
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __pyx_t_1 = NULL;
+          __pyx_t_6 = 0;
+          #if CYTHON_UNPACK_METHODS
+          if (unlikely(PyMethod_Check(__pyx_t_2))) {
+            __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
+            if (likely(__pyx_t_1)) {
+              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+              __Pyx_INCREF(__pyx_t_1);
+              __Pyx_INCREF(function);
+              __Pyx_DECREF_SET(__pyx_t_2, function);
+              __pyx_t_6 = 1;
+            }
+          }
+          #endif
+          {
+            PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_kp_s_Failed_to_shutdown_gRPC_Python_t};
+            __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
+            __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+            if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 46, __pyx_L4_error)
+            __Pyx_GOTREF(__pyx_t_4);
+            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          }
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":49
+ *                 'Failed to shutdown gRPC Python threads prior to fork. '
+ *                 'Behavior after fork will be undefined.')
+ *             _fork_handler_failed = True             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+          if (PyDict_SetItem(__pyx_d, __pyx_n_s_fork_handler_failed, Py_True) < 0) __PYX_ERR(1, 49, __pyx_L4_error)
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":44
+ *         with _fork_state.fork_in_progress_condition:
+ *             _fork_state.fork_in_progress = True
+ *         if not _fork_state.active_thread_count.await_zero_threads(             # <<<<<<<<<<<<<<
+ *                 _AWAIT_THREADS_TIMEOUT_SECONDS):
+ *             _LOGGER.error(
+ */
+        }
+      }
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":39
+ * 
+ * cdef void __prefork() noexcept nogil:
+ *     with gil:             # <<<<<<<<<<<<<<
+ *         global _fork_handler_failed
+ *         _fork_handler_failed = False
+ */
+      /*finally:*/ {
+        /*normal exit:*/{
+          #ifdef WITH_THREAD
+          __Pyx_PyGILState_Release(__pyx_gilstate_save);
+          #endif
+          goto __pyx_L5;
+        }
+        __pyx_L4_error: {
+          #ifdef WITH_THREAD
+          __Pyx_PyGILState_Release(__pyx_gilstate_save);
+          #endif
+          goto __pyx_L1_error;
+        }
+        __pyx_L5:;
+      }
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":38
+ * _fork_handler_failed = False
+ * 
+ * cdef void __prefork() noexcept nogil:             # <<<<<<<<<<<<<<
+ *     with gil:
+ *         global _fork_handler_failed
+ */
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  #ifdef WITH_THREAD
+  __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
+  #endif
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_WriteUnraisable("_cython.cygrpc.__prefork", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  #ifdef WITH_THREAD
+  __Pyx_PyGILState_Release(__pyx_gilstate_save);
+  #endif
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContextNogil()
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":52
+ * 
+ * 
+ * cdef void __postfork_parent() noexcept nogil:             # <<<<<<<<<<<<<<
+ *     with gil:
+ *         with _fork_state.fork_in_progress_condition:
+ */
+
+static void __pyx_f_7_cython_6cygrpc___postfork_parent(void) {
+  __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;
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
+  PyObject *__pyx_t_9 = NULL;
+  PyObject *__pyx_t_10 = NULL;
+  int __pyx_t_11;
+  int __pyx_t_12;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  #ifdef WITH_THREAD
+  PyGILState_STATE __pyx_gilstate_save;
+  #endif
+  __Pyx_RefNannySetupContext("__postfork_parent", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":53
+ * 
+ * cdef void __postfork_parent() noexcept nogil:
+ *     with gil:             # <<<<<<<<<<<<<<
+ *         with _fork_state.fork_in_progress_condition:
+ *             _fork_state.fork_in_progress = False
+ */
+  {
+      #ifdef WITH_THREAD
+      PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
+      #endif
+      /*try:*/ {
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":54
+ * cdef void __postfork_parent() noexcept nogil:
+ *     with gil:
+ *         with _fork_state.fork_in_progress_condition:             # <<<<<<<<<<<<<<
+ *             _fork_state.fork_in_progress = False
+ *             _fork_state.fork_in_progress_condition.notify_all()
+ */
+        /*with:*/ {
+          __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 54, __pyx_L4_error)
+          __Pyx_GOTREF(__pyx_t_1);
+          __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_fork_in_progress_condition); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 54, __pyx_L4_error)
+          __Pyx_GOTREF(__pyx_t_2);
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_t_2, __pyx_n_s_exit); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 54, __pyx_L4_error)
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_t_2, __pyx_n_s_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 54, __pyx_L6_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, NULL};
+            __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
+            __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+            if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 54, __pyx_L6_error)
+            __Pyx_GOTREF(__pyx_t_1);
+            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          }
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          /*try:*/ {
+            {
+              __Pyx_PyThreadState_declare
+              __Pyx_PyThreadState_assign
+              __Pyx_ExceptionSave(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
+              __Pyx_XGOTREF(__pyx_t_7);
+              __Pyx_XGOTREF(__pyx_t_8);
+              __Pyx_XGOTREF(__pyx_t_9);
+              /*try:*/ {
+
+                /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":55
+ *     with gil:
+ *         with _fork_state.fork_in_progress_condition:
+ *             _fork_state.fork_in_progress = False             # <<<<<<<<<<<<<<
+ *             _fork_state.fork_in_progress_condition.notify_all()
+ * 
+ */
+                __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 55, __pyx_L10_error)
+                __Pyx_GOTREF(__pyx_t_2);
+                if (__Pyx_PyObject_SetAttrStr(__pyx_t_2, __pyx_n_s_fork_in_progress, Py_False) < 0) __PYX_ERR(1, 55, __pyx_L10_error)
+                __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+                /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":56
+ *         with _fork_state.fork_in_progress_condition:
+ *             _fork_state.fork_in_progress = False
+ *             _fork_state.fork_in_progress_condition.notify_all()             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+                __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 56, __pyx_L10_error)
+                __Pyx_GOTREF(__pyx_t_1);
+                __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_fork_in_progress_condition); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 56, __pyx_L10_error)
+                __Pyx_GOTREF(__pyx_t_4);
+                __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+                __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_notify_all); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 56, __pyx_L10_error)
+                __Pyx_GOTREF(__pyx_t_1);
+                __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_1))) {
+                  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
+                  if (likely(__pyx_t_4)) {
+                    PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+                    __Pyx_INCREF(__pyx_t_4);
+                    __Pyx_INCREF(function);
+                    __Pyx_DECREF_SET(__pyx_t_1, function);
+                    __pyx_t_6 = 1;
+                  }
+                }
+                #endif
+                {
+                  PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
+                  __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
+                  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+                  if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 56, __pyx_L10_error)
+                  __Pyx_GOTREF(__pyx_t_2);
+                  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+                }
+                __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+                /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":54
+ * cdef void __postfork_parent() noexcept nogil:
+ *     with gil:
+ *         with _fork_state.fork_in_progress_condition:             # <<<<<<<<<<<<<<
+ *             _fork_state.fork_in_progress = False
+ *             _fork_state.fork_in_progress_condition.notify_all()
+ */
+              }
+              __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+              __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+              __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+              goto __pyx_L15_try_end;
+              __pyx_L10_error:;
+              __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+              __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+              __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+              __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+              /*except:*/ {
+                __Pyx_AddTraceback("_cython.cygrpc.__postfork_parent", __pyx_clineno, __pyx_lineno, __pyx_filename);
+                if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_1, &__pyx_t_4) < 0) __PYX_ERR(1, 54, __pyx_L12_except_error)
+                __Pyx_XGOTREF(__pyx_t_2);
+                __Pyx_XGOTREF(__pyx_t_1);
+                __Pyx_XGOTREF(__pyx_t_4);
+                __pyx_t_5 = PyTuple_Pack(3, __pyx_t_2, __pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 54, __pyx_L12_except_error)
+                __Pyx_GOTREF(__pyx_t_5);
+                __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL);
+                __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+                __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+                if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 54, __pyx_L12_except_error)
+                __Pyx_GOTREF(__pyx_t_10);
+                __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_10);
+                __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+                if (__pyx_t_11 < 0) __PYX_ERR(1, 54, __pyx_L12_except_error)
+                __pyx_t_12 = (!__pyx_t_11);
+                if (unlikely(__pyx_t_12)) {
+                  __Pyx_GIVEREF(__pyx_t_2);
+                  __Pyx_GIVEREF(__pyx_t_1);
+                  __Pyx_XGIVEREF(__pyx_t_4);
+                  __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_1, __pyx_t_4);
+                  __pyx_t_2 = 0; __pyx_t_1 = 0; __pyx_t_4 = 0; 
+                  __PYX_ERR(1, 54, __pyx_L12_except_error)
+                }
+                __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+                __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+                __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+                goto __pyx_L11_exception_handled;
+              }
+              __pyx_L12_except_error:;
+              __Pyx_XGIVEREF(__pyx_t_7);
+              __Pyx_XGIVEREF(__pyx_t_8);
+              __Pyx_XGIVEREF(__pyx_t_9);
+              __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
+              goto __pyx_L4_error;
+              __pyx_L11_exception_handled:;
+              __Pyx_XGIVEREF(__pyx_t_7);
+              __Pyx_XGIVEREF(__pyx_t_8);
+              __Pyx_XGIVEREF(__pyx_t_9);
+              __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
+              __pyx_L15_try_end:;
+            }
+          }
+          /*finally:*/ {
+            /*normal exit:*/{
+              if (__pyx_t_3) {
+                __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__11, NULL);
+                __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+                if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 54, __pyx_L4_error)
+                __Pyx_GOTREF(__pyx_t_9);
+                __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+              }
+              goto __pyx_L9;
+            }
+            __pyx_L9:;
+          }
+          goto __pyx_L19;
+          __pyx_L6_error:;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L4_error;
+          __pyx_L19:;
+        }
+      }
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":53
+ * 
+ * cdef void __postfork_parent() noexcept nogil:
+ *     with gil:             # <<<<<<<<<<<<<<
+ *         with _fork_state.fork_in_progress_condition:
+ *             _fork_state.fork_in_progress = False
+ */
+      /*finally:*/ {
+        /*normal exit:*/{
+          #ifdef WITH_THREAD
+          __Pyx_PyGILState_Release(__pyx_gilstate_save);
+          #endif
+          goto __pyx_L5;
+        }
+        __pyx_L4_error: {
+          #ifdef WITH_THREAD
+          __Pyx_PyGILState_Release(__pyx_gilstate_save);
+          #endif
+          goto __pyx_L1_error;
+        }
+        __pyx_L5:;
+      }
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":52
+ * 
+ * 
+ * cdef void __postfork_parent() noexcept nogil:             # <<<<<<<<<<<<<<
+ *     with gil:
+ *         with _fork_state.fork_in_progress_condition:
+ */
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  #ifdef WITH_THREAD
+  __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
+  #endif
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_WriteUnraisable("_cython.cygrpc.__postfork_parent", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  #ifdef WITH_THREAD
+  __Pyx_PyGILState_Release(__pyx_gilstate_save);
+  #endif
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContextNogil()
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":59
+ * 
+ * 
+ * cdef void __postfork_child() noexcept nogil:             # <<<<<<<<<<<<<<
+ *     with gil:
+ *         try:
+ */
+
+static void __pyx_f_7_cython_6cygrpc___postfork_child(void) {
+  PyObject *__pyx_v_state_to_reset = NULL;
+  PyObject *__pyx_v_channel = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  int __pyx_t_5;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  unsigned int __pyx_t_8;
+  Py_ssize_t __pyx_t_9;
+  PyObject *(*__pyx_t_10)(PyObject *);
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  PyObject *__pyx_t_13 = NULL;
+  PyObject *__pyx_t_14 = NULL;
+  PyObject *__pyx_t_15 = NULL;
+  PyObject *__pyx_t_16 = NULL;
+  int __pyx_t_17;
+  PyObject *__pyx_t_18 = NULL;
+  PyObject *__pyx_t_19 = NULL;
+  PyObject *__pyx_t_20 = NULL;
+  PyObject *__pyx_t_21 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  #ifdef WITH_THREAD
+  PyGILState_STATE __pyx_gilstate_save;
+  #endif
+  __Pyx_RefNannySetupContext("__postfork_child", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":60
+ * 
+ * cdef void __postfork_child() noexcept nogil:
+ *     with gil:             # <<<<<<<<<<<<<<
+ *         try:
+ *             if _fork_handler_failed:
+ */
+  {
+      #ifdef WITH_THREAD
+      PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
+      #endif
+      /*try:*/ {
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":61
+ * cdef void __postfork_child() noexcept nogil:
+ *     with gil:
+ *         try:             # <<<<<<<<<<<<<<
+ *             if _fork_handler_failed:
+ *                 return
+ */
+        {
+          __Pyx_PyThreadState_declare
+          __Pyx_PyThreadState_assign
+          __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
+          __Pyx_XGOTREF(__pyx_t_1);
+          __Pyx_XGOTREF(__pyx_t_2);
+          __Pyx_XGOTREF(__pyx_t_3);
+          /*try:*/ {
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":62
+ *     with gil:
+ *         try:
+ *             if _fork_handler_failed:             # <<<<<<<<<<<<<<
+ *                 return
+ *             # Thread could be holding the fork_in_progress_condition inside of
+ */
+            __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_fork_handler_failed); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 62, __pyx_L6_error)
+            __Pyx_GOTREF(__pyx_t_4);
+            __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(1, 62, __pyx_L6_error)
+            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+            if (__pyx_t_5) {
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":63
+ *         try:
+ *             if _fork_handler_failed:
+ *                 return             # <<<<<<<<<<<<<<
+ *             # Thread could be holding the fork_in_progress_condition inside of
+ *             # block_if_fork_in_progress() when fork occurs. Reset the lock here.
+ */
+              goto __pyx_L10_try_return;
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":62
+ *     with gil:
+ *         try:
+ *             if _fork_handler_failed:             # <<<<<<<<<<<<<<
+ *                 return
+ *             # Thread could be holding the fork_in_progress_condition inside of
+ */
+            }
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":66
+ *             # Thread could be holding the fork_in_progress_condition inside of
+ *             # block_if_fork_in_progress() when fork occurs. Reset the lock here.
+ *             _fork_state.fork_in_progress_condition = threading.Condition()             # <<<<<<<<<<<<<<
+ *             # A thread in return_from_user_request_generator() may hold this lock
+ *             # when fork occurs.
+ */
+            __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_threading); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 66, __pyx_L6_error)
+            __Pyx_GOTREF(__pyx_t_6);
+            __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_Condition); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 66, __pyx_L6_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, NULL};
+              __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_8, 0+__pyx_t_8);
+              __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+              if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 66, __pyx_L6_error)
+              __Pyx_GOTREF(__pyx_t_4);
+              __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+            }
+            __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 66, __pyx_L6_error)
+            __Pyx_GOTREF(__pyx_t_7);
+            if (__Pyx_PyObject_SetAttrStr(__pyx_t_7, __pyx_n_s_fork_in_progress_condition, __pyx_t_4) < 0) __PYX_ERR(1, 66, __pyx_L6_error)
+            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":69
+ *             # A thread in return_from_user_request_generator() may hold this lock
+ *             # when fork occurs.
+ *             _fork_state.active_thread_count = _ActiveThreadCount()             # <<<<<<<<<<<<<<
+ *             for state_to_reset in _fork_state.postfork_states_to_reset:
+ *                 state_to_reset.reset_postfork_child()
+ */
+            __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_ActiveThreadCount); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 69, __pyx_L6_error)
+            __Pyx_GOTREF(__pyx_t_4);
+            __pyx_t_6 = NULL;
+            __pyx_t_8 = 0;
+            #if CYTHON_UNPACK_METHODS
+            if (unlikely(PyMethod_Check(__pyx_t_4))) {
+              __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
+              if (likely(__pyx_t_6)) {
+                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+                __Pyx_INCREF(__pyx_t_6);
+                __Pyx_INCREF(function);
+                __Pyx_DECREF_SET(__pyx_t_4, function);
+                __pyx_t_8 = 1;
+              }
+            }
+            #endif
+            {
+              PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
+              __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_8, 0+__pyx_t_8);
+              __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+              if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 69, __pyx_L6_error)
+              __Pyx_GOTREF(__pyx_t_7);
+              __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+            }
+            __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 69, __pyx_L6_error)
+            __Pyx_GOTREF(__pyx_t_4);
+            if (__Pyx_PyObject_SetAttrStr(__pyx_t_4, __pyx_n_s_active_thread_count, __pyx_t_7) < 0) __PYX_ERR(1, 69, __pyx_L6_error)
+            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":70
+ *             # when fork occurs.
+ *             _fork_state.active_thread_count = _ActiveThreadCount()
+ *             for state_to_reset in _fork_state.postfork_states_to_reset:             # <<<<<<<<<<<<<<
+ *                 state_to_reset.reset_postfork_child()
+ *             _fork_state.postfork_states_to_reset = []
+ */
+            __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 70, __pyx_L6_error)
+            __Pyx_GOTREF(__pyx_t_4);
+            __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_postfork_states_to_reset); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 70, __pyx_L6_error)
+            __Pyx_GOTREF(__pyx_t_7);
+            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+            if (likely(PyList_CheckExact(__pyx_t_7)) || PyTuple_CheckExact(__pyx_t_7)) {
+              __pyx_t_4 = __pyx_t_7; __Pyx_INCREF(__pyx_t_4);
+              __pyx_t_9 = 0;
+              __pyx_t_10 = NULL;
+            } else {
+              __pyx_t_9 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 70, __pyx_L6_error)
+              __Pyx_GOTREF(__pyx_t_4);
+              __pyx_t_10 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 70, __pyx_L6_error)
+            }
+            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+            for (;;) {
+              if (likely(!__pyx_t_10)) {
+                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(1, 70, __pyx_L6_error)
+                    #endif
+                    if (__pyx_t_9 >= __pyx_temp) break;
+                  }
+                  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+                  __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_9); __Pyx_INCREF(__pyx_t_7); __pyx_t_9++; if (unlikely((0 < 0))) __PYX_ERR(1, 70, __pyx_L6_error)
+                  #else
+                  __pyx_t_7 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 70, __pyx_L6_error)
+                  __Pyx_GOTREF(__pyx_t_7);
+                  #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(1, 70, __pyx_L6_error)
+                    #endif
+                    if (__pyx_t_9 >= __pyx_temp) break;
+                  }
+                  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+                  __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_9); __Pyx_INCREF(__pyx_t_7); __pyx_t_9++; if (unlikely((0 < 0))) __PYX_ERR(1, 70, __pyx_L6_error)
+                  #else
+                  __pyx_t_7 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 70, __pyx_L6_error)
+                  __Pyx_GOTREF(__pyx_t_7);
+                  #endif
+                }
+              } else {
+                __pyx_t_7 = __pyx_t_10(__pyx_t_4);
+                if (unlikely(!__pyx_t_7)) {
+                  PyObject* exc_type = PyErr_Occurred();
+                  if (exc_type) {
+                    if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
+                    else __PYX_ERR(1, 70, __pyx_L6_error)
+                  }
+                  break;
+                }
+                __Pyx_GOTREF(__pyx_t_7);
+              }
+              __Pyx_XDECREF_SET(__pyx_v_state_to_reset, __pyx_t_7);
+              __pyx_t_7 = 0;
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":71
+ *             _fork_state.active_thread_count = _ActiveThreadCount()
+ *             for state_to_reset in _fork_state.postfork_states_to_reset:
+ *                 state_to_reset.reset_postfork_child()             # <<<<<<<<<<<<<<
+ *             _fork_state.postfork_states_to_reset = []
+ *             _fork_state.fork_epoch += 1
+ */
+              __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_state_to_reset, __pyx_n_s_reset_postfork_child); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 71, __pyx_L6_error)
+              __Pyx_GOTREF(__pyx_t_6);
+              __pyx_t_11 = NULL;
+              __pyx_t_8 = 0;
+              #if CYTHON_UNPACK_METHODS
+              if (likely(PyMethod_Check(__pyx_t_6))) {
+                __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_6);
+                if (likely(__pyx_t_11)) {
+                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+                  __Pyx_INCREF(__pyx_t_11);
+                  __Pyx_INCREF(function);
+                  __Pyx_DECREF_SET(__pyx_t_6, function);
+                  __pyx_t_8 = 1;
+                }
+              }
+              #endif
+              {
+                PyObject *__pyx_callargs[2] = {__pyx_t_11, NULL};
+                __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 0+__pyx_t_8);
+                __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
+                if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 71, __pyx_L6_error)
+                __Pyx_GOTREF(__pyx_t_7);
+                __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+              }
+              __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":70
+ *             # when fork occurs.
+ *             _fork_state.active_thread_count = _ActiveThreadCount()
+ *             for state_to_reset in _fork_state.postfork_states_to_reset:             # <<<<<<<<<<<<<<
+ *                 state_to_reset.reset_postfork_child()
+ *             _fork_state.postfork_states_to_reset = []
+ */
+            }
+            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":72
+ *             for state_to_reset in _fork_state.postfork_states_to_reset:
+ *                 state_to_reset.reset_postfork_child()
+ *             _fork_state.postfork_states_to_reset = []             # <<<<<<<<<<<<<<
+ *             _fork_state.fork_epoch += 1
+ *             for channel in _fork_state.channels:
+ */
+            __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 72, __pyx_L6_error)
+            __Pyx_GOTREF(__pyx_t_4);
+            __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 72, __pyx_L6_error)
+            __Pyx_GOTREF(__pyx_t_7);
+            if (__Pyx_PyObject_SetAttrStr(__pyx_t_7, __pyx_n_s_postfork_states_to_reset, __pyx_t_4) < 0) __PYX_ERR(1, 72, __pyx_L6_error)
+            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":73
+ *                 state_to_reset.reset_postfork_child()
+ *             _fork_state.postfork_states_to_reset = []
+ *             _fork_state.fork_epoch += 1             # <<<<<<<<<<<<<<
+ *             for channel in _fork_state.channels:
+ *                 channel._close_on_fork()
+ */
+            __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 73, __pyx_L6_error)
+            __Pyx_GOTREF(__pyx_t_7);
+            __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_fork_epoch); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 73, __pyx_L6_error)
+            __Pyx_GOTREF(__pyx_t_4);
+            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+            __pyx_t_7 = __Pyx_PyInt_AddObjC(__pyx_t_4, __pyx_int_1, 1, 1, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 73, __pyx_L6_error)
+            __Pyx_GOTREF(__pyx_t_7);
+            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+            __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 73, __pyx_L6_error)
+            __Pyx_GOTREF(__pyx_t_4);
+            if (__Pyx_PyObject_SetAttrStr(__pyx_t_4, __pyx_n_s_fork_epoch, __pyx_t_7) < 0) __PYX_ERR(1, 73, __pyx_L6_error)
+            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":74
+ *             _fork_state.postfork_states_to_reset = []
+ *             _fork_state.fork_epoch += 1
+ *             for channel in _fork_state.channels:             # <<<<<<<<<<<<<<
+ *                 channel._close_on_fork()
+ *             with _fork_state.fork_in_progress_condition:
+ */
+            __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 74, __pyx_L6_error)
+            __Pyx_GOTREF(__pyx_t_4);
+            __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_channels); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 74, __pyx_L6_error)
+            __Pyx_GOTREF(__pyx_t_7);
+            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+            if (likely(PyList_CheckExact(__pyx_t_7)) || PyTuple_CheckExact(__pyx_t_7)) {
+              __pyx_t_4 = __pyx_t_7; __Pyx_INCREF(__pyx_t_4);
+              __pyx_t_9 = 0;
+              __pyx_t_10 = NULL;
+            } else {
+              __pyx_t_9 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 74, __pyx_L6_error)
+              __Pyx_GOTREF(__pyx_t_4);
+              __pyx_t_10 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 74, __pyx_L6_error)
+            }
+            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+            for (;;) {
+              if (likely(!__pyx_t_10)) {
+                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(1, 74, __pyx_L6_error)
+                    #endif
+                    if (__pyx_t_9 >= __pyx_temp) break;
+                  }
+                  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+                  __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_9); __Pyx_INCREF(__pyx_t_7); __pyx_t_9++; if (unlikely((0 < 0))) __PYX_ERR(1, 74, __pyx_L6_error)
+                  #else
+                  __pyx_t_7 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 74, __pyx_L6_error)
+                  __Pyx_GOTREF(__pyx_t_7);
+                  #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(1, 74, __pyx_L6_error)
+                    #endif
+                    if (__pyx_t_9 >= __pyx_temp) break;
+                  }
+                  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+                  __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_9); __Pyx_INCREF(__pyx_t_7); __pyx_t_9++; if (unlikely((0 < 0))) __PYX_ERR(1, 74, __pyx_L6_error)
+                  #else
+                  __pyx_t_7 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 74, __pyx_L6_error)
+                  __Pyx_GOTREF(__pyx_t_7);
+                  #endif
+                }
+              } else {
+                __pyx_t_7 = __pyx_t_10(__pyx_t_4);
+                if (unlikely(!__pyx_t_7)) {
+                  PyObject* exc_type = PyErr_Occurred();
+                  if (exc_type) {
+                    if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
+                    else __PYX_ERR(1, 74, __pyx_L6_error)
+                  }
+                  break;
+                }
+                __Pyx_GOTREF(__pyx_t_7);
+              }
+              __Pyx_XDECREF_SET(__pyx_v_channel, __pyx_t_7);
+              __pyx_t_7 = 0;
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":75
+ *             _fork_state.fork_epoch += 1
+ *             for channel in _fork_state.channels:
+ *                 channel._close_on_fork()             # <<<<<<<<<<<<<<
+ *             with _fork_state.fork_in_progress_condition:
+ *                 _fork_state.fork_in_progress = False
+ */
+              __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_channel, __pyx_n_s_close_on_fork); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 75, __pyx_L6_error)
+              __Pyx_GOTREF(__pyx_t_6);
+              __pyx_t_11 = NULL;
+              __pyx_t_8 = 0;
+              #if CYTHON_UNPACK_METHODS
+              if (likely(PyMethod_Check(__pyx_t_6))) {
+                __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_6);
+                if (likely(__pyx_t_11)) {
+                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+                  __Pyx_INCREF(__pyx_t_11);
+                  __Pyx_INCREF(function);
+                  __Pyx_DECREF_SET(__pyx_t_6, function);
+                  __pyx_t_8 = 1;
+                }
+              }
+              #endif
+              {
+                PyObject *__pyx_callargs[2] = {__pyx_t_11, NULL};
+                __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 0+__pyx_t_8);
+                __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
+                if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 75, __pyx_L6_error)
+                __Pyx_GOTREF(__pyx_t_7);
+                __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+              }
+              __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":74
+ *             _fork_state.postfork_states_to_reset = []
+ *             _fork_state.fork_epoch += 1
+ *             for channel in _fork_state.channels:             # <<<<<<<<<<<<<<
+ *                 channel._close_on_fork()
+ *             with _fork_state.fork_in_progress_condition:
+ */
+            }
+            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":76
+ *             for channel in _fork_state.channels:
+ *                 channel._close_on_fork()
+ *             with _fork_state.fork_in_progress_condition:             # <<<<<<<<<<<<<<
+ *                 _fork_state.fork_in_progress = False
+ *         except:
+ */
+            /*with:*/ {
+              __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 76, __pyx_L6_error)
+              __Pyx_GOTREF(__pyx_t_4);
+              __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_fork_in_progress_condition); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 76, __pyx_L6_error)
+              __Pyx_GOTREF(__pyx_t_7);
+              __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+              __pyx_t_12 = __Pyx_PyObject_LookupSpecial(__pyx_t_7, __pyx_n_s_exit); if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 76, __pyx_L6_error)
+              __Pyx_GOTREF(__pyx_t_12);
+              __pyx_t_6 = __Pyx_PyObject_LookupSpecial(__pyx_t_7, __pyx_n_s_enter); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 76, __pyx_L19_error)
+              __Pyx_GOTREF(__pyx_t_6);
+              __pyx_t_11 = NULL;
+              __pyx_t_8 = 0;
+              #if CYTHON_UNPACK_METHODS
+              if (likely(PyMethod_Check(__pyx_t_6))) {
+                __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_6);
+                if (likely(__pyx_t_11)) {
+                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+                  __Pyx_INCREF(__pyx_t_11);
+                  __Pyx_INCREF(function);
+                  __Pyx_DECREF_SET(__pyx_t_6, function);
+                  __pyx_t_8 = 1;
+                }
+              }
+              #endif
+              {
+                PyObject *__pyx_callargs[2] = {__pyx_t_11, NULL};
+                __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 0+__pyx_t_8);
+                __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
+                if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 76, __pyx_L19_error)
+                __Pyx_GOTREF(__pyx_t_4);
+                __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+              }
+              __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+              __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+              /*try:*/ {
+                {
+                  __Pyx_PyThreadState_declare
+                  __Pyx_PyThreadState_assign
+                  __Pyx_ExceptionSave(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15);
+                  __Pyx_XGOTREF(__pyx_t_13);
+                  __Pyx_XGOTREF(__pyx_t_14);
+                  __Pyx_XGOTREF(__pyx_t_15);
+                  /*try:*/ {
+
+                    /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":77
+ *                 channel._close_on_fork()
+ *             with _fork_state.fork_in_progress_condition:
+ *                 _fork_state.fork_in_progress = False             # <<<<<<<<<<<<<<
+ *         except:
+ *             _LOGGER.error('Exiting child due to raised exception')
+ */
+                    __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 77, __pyx_L23_error)
+                    __Pyx_GOTREF(__pyx_t_7);
+                    if (__Pyx_PyObject_SetAttrStr(__pyx_t_7, __pyx_n_s_fork_in_progress, Py_False) < 0) __PYX_ERR(1, 77, __pyx_L23_error)
+                    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+                    /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":76
+ *             for channel in _fork_state.channels:
+ *                 channel._close_on_fork()
+ *             with _fork_state.fork_in_progress_condition:             # <<<<<<<<<<<<<<
+ *                 _fork_state.fork_in_progress = False
+ *         except:
+ */
+                  }
+                  __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
+                  __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
+                  __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
+                  goto __pyx_L28_try_end;
+                  __pyx_L23_error:;
+                  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
+                  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+                  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+                  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+                  /*except:*/ {
+                    __Pyx_AddTraceback("_cython.cygrpc.__postfork_child", __pyx_clineno, __pyx_lineno, __pyx_filename);
+                    if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_4, &__pyx_t_6) < 0) __PYX_ERR(1, 76, __pyx_L25_except_error)
+                    __Pyx_XGOTREF(__pyx_t_7);
+                    __Pyx_XGOTREF(__pyx_t_4);
+                    __Pyx_XGOTREF(__pyx_t_6);
+                    __pyx_t_11 = PyTuple_Pack(3, __pyx_t_7, __pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 76, __pyx_L25_except_error)
+                    __Pyx_GOTREF(__pyx_t_11);
+                    __pyx_t_16 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_11, NULL);
+                    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+                    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+                    if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 76, __pyx_L25_except_error)
+                    __Pyx_GOTREF(__pyx_t_16);
+                    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_16);
+                    __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
+                    if (__pyx_t_5 < 0) __PYX_ERR(1, 76, __pyx_L25_except_error)
+                    __pyx_t_17 = (!__pyx_t_5);
+                    if (unlikely(__pyx_t_17)) {
+                      __Pyx_GIVEREF(__pyx_t_7);
+                      __Pyx_GIVEREF(__pyx_t_4);
+                      __Pyx_XGIVEREF(__pyx_t_6);
+                      __Pyx_ErrRestoreWithState(__pyx_t_7, __pyx_t_4, __pyx_t_6);
+                      __pyx_t_7 = 0; __pyx_t_4 = 0; __pyx_t_6 = 0; 
+                      __PYX_ERR(1, 76, __pyx_L25_except_error)
+                    }
+                    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+                    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+                    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+                    goto __pyx_L24_exception_handled;
+                  }
+                  __pyx_L25_except_error:;
+                  __Pyx_XGIVEREF(__pyx_t_13);
+                  __Pyx_XGIVEREF(__pyx_t_14);
+                  __Pyx_XGIVEREF(__pyx_t_15);
+                  __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_14, __pyx_t_15);
+                  goto __pyx_L6_error;
+                  __pyx_L24_exception_handled:;
+                  __Pyx_XGIVEREF(__pyx_t_13);
+                  __Pyx_XGIVEREF(__pyx_t_14);
+                  __Pyx_XGIVEREF(__pyx_t_15);
+                  __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_14, __pyx_t_15);
+                  __pyx_L28_try_end:;
+                }
+              }
+              /*finally:*/ {
+                /*normal exit:*/{
+                  if (__pyx_t_12) {
+                    __pyx_t_15 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_tuple__11, NULL);
+                    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+                    if (unlikely(!__pyx_t_15)) __PYX_ERR(1, 76, __pyx_L6_error)
+                    __Pyx_GOTREF(__pyx_t_15);
+                    __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+                  }
+                  goto __pyx_L22;
+                }
+                __pyx_L22:;
+              }
+              goto __pyx_L32;
+              __pyx_L19_error:;
+              __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+              goto __pyx_L6_error;
+              __pyx_L32:;
+            }
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":61
+ * cdef void __postfork_child() noexcept nogil:
+ *     with gil:
+ *         try:             # <<<<<<<<<<<<<<
+ *             if _fork_handler_failed:
+ *                 return
+ */
+          }
+          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L11_try_end;
+          __pyx_L6_error:;
+          __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
+          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":78
+ *             with _fork_state.fork_in_progress_condition:
+ *                 _fork_state.fork_in_progress = False
+ *         except:             # <<<<<<<<<<<<<<
+ *             _LOGGER.error('Exiting child due to raised exception')
+ *             _LOGGER.error(sys.exc_info()[0])
+ */
+          /*except:*/ {
+            __Pyx_AddTraceback("_cython.cygrpc.__postfork_child", __pyx_clineno, __pyx_lineno, __pyx_filename);
+            if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_4, &__pyx_t_7) < 0) __PYX_ERR(1, 78, __pyx_L8_except_error)
+            __Pyx_XGOTREF(__pyx_t_6);
+            __Pyx_XGOTREF(__pyx_t_4);
+            __Pyx_XGOTREF(__pyx_t_7);
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":79
+ *                 _fork_state.fork_in_progress = False
+ *         except:
+ *             _LOGGER.error('Exiting child due to raised exception')             # <<<<<<<<<<<<<<
+ *             _LOGGER.error(sys.exc_info()[0])
+ *             os._exit(os.EX_USAGE)
+ */
+            __Pyx_GetModuleGlobalName(__pyx_t_18, __pyx_n_s_LOGGER); if (unlikely(!__pyx_t_18)) __PYX_ERR(1, 79, __pyx_L8_except_error)
+            __Pyx_GOTREF(__pyx_t_18);
+            __pyx_t_19 = __Pyx_PyObject_GetAttrStr(__pyx_t_18, __pyx_n_s_error); if (unlikely(!__pyx_t_19)) __PYX_ERR(1, 79, __pyx_L8_except_error)
+            __Pyx_GOTREF(__pyx_t_19);
+            __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
+            __pyx_t_18 = NULL;
+            __pyx_t_8 = 0;
+            #if CYTHON_UNPACK_METHODS
+            if (unlikely(PyMethod_Check(__pyx_t_19))) {
+              __pyx_t_18 = PyMethod_GET_SELF(__pyx_t_19);
+              if (likely(__pyx_t_18)) {
+                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_19);
+                __Pyx_INCREF(__pyx_t_18);
+                __Pyx_INCREF(function);
+                __Pyx_DECREF_SET(__pyx_t_19, function);
+                __pyx_t_8 = 1;
+              }
+            }
+            #endif
+            {
+              PyObject *__pyx_callargs[2] = {__pyx_t_18, __pyx_kp_s_Exiting_child_due_to_raised_exce};
+              __pyx_t_11 = __Pyx_PyObject_FastCall(__pyx_t_19, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8);
+              __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
+              if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 79, __pyx_L8_except_error)
+              __Pyx_GOTREF(__pyx_t_11);
+              __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
+            }
+            __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":80
+ *         except:
+ *             _LOGGER.error('Exiting child due to raised exception')
+ *             _LOGGER.error(sys.exc_info()[0])             # <<<<<<<<<<<<<<
+ *             os._exit(os.EX_USAGE)
+ * 
+ */
+            __Pyx_GetModuleGlobalName(__pyx_t_19, __pyx_n_s_LOGGER); if (unlikely(!__pyx_t_19)) __PYX_ERR(1, 80, __pyx_L8_except_error)
+            __Pyx_GOTREF(__pyx_t_19);
+            __pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_t_19, __pyx_n_s_error); if (unlikely(!__pyx_t_18)) __PYX_ERR(1, 80, __pyx_L8_except_error)
+            __Pyx_GOTREF(__pyx_t_18);
+            __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
+            __Pyx_GetModuleGlobalName(__pyx_t_20, __pyx_n_s_sys); if (unlikely(!__pyx_t_20)) __PYX_ERR(1, 80, __pyx_L8_except_error)
+            __Pyx_GOTREF(__pyx_t_20);
+            __pyx_t_21 = __Pyx_PyObject_GetAttrStr(__pyx_t_20, __pyx_n_s_exc_info); if (unlikely(!__pyx_t_21)) __PYX_ERR(1, 80, __pyx_L8_except_error)
+            __Pyx_GOTREF(__pyx_t_21);
+            __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
+            __pyx_t_20 = NULL;
+            __pyx_t_8 = 0;
+            #if CYTHON_UNPACK_METHODS
+            if (unlikely(PyMethod_Check(__pyx_t_21))) {
+              __pyx_t_20 = PyMethod_GET_SELF(__pyx_t_21);
+              if (likely(__pyx_t_20)) {
+                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_21);
+                __Pyx_INCREF(__pyx_t_20);
+                __Pyx_INCREF(function);
+                __Pyx_DECREF_SET(__pyx_t_21, function);
+                __pyx_t_8 = 1;
+              }
+            }
+            #endif
+            {
+              PyObject *__pyx_callargs[2] = {__pyx_t_20, NULL};
+              __pyx_t_19 = __Pyx_PyObject_FastCall(__pyx_t_21, __pyx_callargs+1-__pyx_t_8, 0+__pyx_t_8);
+              __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0;
+              if (unlikely(!__pyx_t_19)) __PYX_ERR(1, 80, __pyx_L8_except_error)
+              __Pyx_GOTREF(__pyx_t_19);
+              __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
+            }
+            __pyx_t_21 = __Pyx_GetItemInt(__pyx_t_19, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_21)) __PYX_ERR(1, 80, __pyx_L8_except_error)
+            __Pyx_GOTREF(__pyx_t_21);
+            __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
+            __pyx_t_19 = NULL;
+            __pyx_t_8 = 0;
+            #if CYTHON_UNPACK_METHODS
+            if (unlikely(PyMethod_Check(__pyx_t_18))) {
+              __pyx_t_19 = PyMethod_GET_SELF(__pyx_t_18);
+              if (likely(__pyx_t_19)) {
+                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_18);
+                __Pyx_INCREF(__pyx_t_19);
+                __Pyx_INCREF(function);
+                __Pyx_DECREF_SET(__pyx_t_18, function);
+                __pyx_t_8 = 1;
+              }
+            }
+            #endif
+            {
+              PyObject *__pyx_callargs[2] = {__pyx_t_19, __pyx_t_21};
+              __pyx_t_11 = __Pyx_PyObject_FastCall(__pyx_t_18, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8);
+              __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
+              __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
+              if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 80, __pyx_L8_except_error)
+              __Pyx_GOTREF(__pyx_t_11);
+              __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
+            }
+            __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":81
+ *             _LOGGER.error('Exiting child due to raised exception')
+ *             _LOGGER.error(sys.exc_info()[0])
+ *             os._exit(os.EX_USAGE)             # <<<<<<<<<<<<<<
+ * 
+ *     if grpc_is_initialized() > 0:
+ */
+            __Pyx_GetModuleGlobalName(__pyx_t_18, __pyx_n_s_os); if (unlikely(!__pyx_t_18)) __PYX_ERR(1, 81, __pyx_L8_except_error)
+            __Pyx_GOTREF(__pyx_t_18);
+            __pyx_t_21 = __Pyx_PyObject_GetAttrStr(__pyx_t_18, __pyx_n_s_exit_2); if (unlikely(!__pyx_t_21)) __PYX_ERR(1, 81, __pyx_L8_except_error)
+            __Pyx_GOTREF(__pyx_t_21);
+            __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
+            __Pyx_GetModuleGlobalName(__pyx_t_18, __pyx_n_s_os); if (unlikely(!__pyx_t_18)) __PYX_ERR(1, 81, __pyx_L8_except_error)
+            __Pyx_GOTREF(__pyx_t_18);
+            __pyx_t_19 = __Pyx_PyObject_GetAttrStr(__pyx_t_18, __pyx_n_s_EX_USAGE); if (unlikely(!__pyx_t_19)) __PYX_ERR(1, 81, __pyx_L8_except_error)
+            __Pyx_GOTREF(__pyx_t_19);
+            __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
+            __pyx_t_18 = NULL;
+            __pyx_t_8 = 0;
+            #if CYTHON_UNPACK_METHODS
+            if (unlikely(PyMethod_Check(__pyx_t_21))) {
+              __pyx_t_18 = PyMethod_GET_SELF(__pyx_t_21);
+              if (likely(__pyx_t_18)) {
+                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_21);
+                __Pyx_INCREF(__pyx_t_18);
+                __Pyx_INCREF(function);
+                __Pyx_DECREF_SET(__pyx_t_21, function);
+                __pyx_t_8 = 1;
+              }
+            }
+            #endif
+            {
+              PyObject *__pyx_callargs[2] = {__pyx_t_18, __pyx_t_19};
+              __pyx_t_11 = __Pyx_PyObject_FastCall(__pyx_t_21, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8);
+              __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
+              __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
+              if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 81, __pyx_L8_except_error)
+              __Pyx_GOTREF(__pyx_t_11);
+              __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
+            }
+            __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+            __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+            __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+            __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+            goto __pyx_L7_exception_handled;
+          }
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":61
+ * cdef void __postfork_child() noexcept nogil:
+ *     with gil:
+ *         try:             # <<<<<<<<<<<<<<
+ *             if _fork_handler_failed:
+ *                 return
+ */
+          __pyx_L8_except_error:;
+          __Pyx_XGIVEREF(__pyx_t_1);
+          __Pyx_XGIVEREF(__pyx_t_2);
+          __Pyx_XGIVEREF(__pyx_t_3);
+          __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+          goto __pyx_L4_error;
+          __pyx_L10_try_return:;
+          __Pyx_XGIVEREF(__pyx_t_1);
+          __Pyx_XGIVEREF(__pyx_t_2);
+          __Pyx_XGIVEREF(__pyx_t_3);
+          __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+          goto __pyx_L3_return;
+          __pyx_L7_exception_handled:;
+          __Pyx_XGIVEREF(__pyx_t_1);
+          __Pyx_XGIVEREF(__pyx_t_2);
+          __Pyx_XGIVEREF(__pyx_t_3);
+          __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+          __pyx_L11_try_end:;
+        }
+      }
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":60
+ * 
+ * cdef void __postfork_child() noexcept nogil:
+ *     with gil:             # <<<<<<<<<<<<<<
+ *         try:
+ *             if _fork_handler_failed:
+ */
+      /*finally:*/ {
+        /*normal exit:*/{
+          #ifdef WITH_THREAD
+          __Pyx_PyGILState_Release(__pyx_gilstate_save);
+          #endif
+          goto __pyx_L5;
+        }
+        __pyx_L3_return: {
+          #ifdef WITH_THREAD
+          __Pyx_PyGILState_Release(__pyx_gilstate_save);
+          #endif
+          goto __pyx_L0;
+        }
+        __pyx_L4_error: {
+          #ifdef WITH_THREAD
+          __Pyx_PyGILState_Release(__pyx_gilstate_save);
+          #endif
+          goto __pyx_L1_error;
+        }
+        __pyx_L5:;
+      }
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":83
+ *             os._exit(os.EX_USAGE)
+ * 
+ *     if grpc_is_initialized() > 0:             # <<<<<<<<<<<<<<
+ *         with gil:
+ *             _LOGGER.error('Failed to shutdown gRPC Core after fork()')
+ */
+  __pyx_t_17 = (grpc_is_initialized() > 0);
+  if (__pyx_t_17) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":84
+ * 
+ *     if grpc_is_initialized() > 0:
+ *         with gil:             # <<<<<<<<<<<<<<
+ *             _LOGGER.error('Failed to shutdown gRPC Core after fork()')
+ *             os._exit(os.EX_USAGE)
+ */
+    {
+        #ifdef WITH_THREAD
+        PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
+        #endif
+        /*try:*/ {
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":85
+ *     if grpc_is_initialized() > 0:
+ *         with gil:
+ *             _LOGGER.error('Failed to shutdown gRPC Core after fork()')             # <<<<<<<<<<<<<<
+ *             os._exit(os.EX_USAGE)
+ * 
+ */
+          __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_LOGGER); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 85, __pyx_L37_error)
+          __Pyx_GOTREF(__pyx_t_4);
+          __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_error); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 85, __pyx_L37_error)
+          __Pyx_GOTREF(__pyx_t_6);
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __pyx_t_4 = NULL;
+          __pyx_t_8 = 0;
+          #if CYTHON_UNPACK_METHODS
+          if (unlikely(PyMethod_Check(__pyx_t_6))) {
+            __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6);
+            if (likely(__pyx_t_4)) {
+              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+              __Pyx_INCREF(__pyx_t_4);
+              __Pyx_INCREF(function);
+              __Pyx_DECREF_SET(__pyx_t_6, function);
+              __pyx_t_8 = 1;
+            }
+          }
+          #endif
+          {
+            PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_kp_s_Failed_to_shutdown_gRPC_Core_aft};
+            __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8);
+            __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+            if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 85, __pyx_L37_error)
+            __Pyx_GOTREF(__pyx_t_7);
+            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+          }
+          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":86
+ *         with gil:
+ *             _LOGGER.error('Failed to shutdown gRPC Core after fork()')
+ *             os._exit(os.EX_USAGE)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+          __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_os); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 86, __pyx_L37_error)
+          __Pyx_GOTREF(__pyx_t_6);
+          __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_exit_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 86, __pyx_L37_error)
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+          __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_os); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 86, __pyx_L37_error)
+          __Pyx_GOTREF(__pyx_t_6);
+          __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_EX_USAGE); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 86, __pyx_L37_error)
+          __Pyx_GOTREF(__pyx_t_11);
+          __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_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_8 = 1;
+            }
+          }
+          #endif
+          {
+            PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_11};
+            __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8);
+            __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+            __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+            if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 86, __pyx_L37_error)
+            __Pyx_GOTREF(__pyx_t_7);
+            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          }
+          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        }
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":84
+ * 
+ *     if grpc_is_initialized() > 0:
+ *         with gil:             # <<<<<<<<<<<<<<
+ *             _LOGGER.error('Failed to shutdown gRPC Core after fork()')
+ *             os._exit(os.EX_USAGE)
+ */
+        /*finally:*/ {
+          /*normal exit:*/{
+            #ifdef WITH_THREAD
+            __Pyx_PyGILState_Release(__pyx_gilstate_save);
+            #endif
+            goto __pyx_L38;
+          }
+          __pyx_L37_error: {
+            #ifdef WITH_THREAD
+            __Pyx_PyGILState_Release(__pyx_gilstate_save);
+            #endif
+            goto __pyx_L1_error;
+          }
+          __pyx_L38:;
+        }
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":83
+ *             os._exit(os.EX_USAGE)
+ * 
+ *     if grpc_is_initialized() > 0:             # <<<<<<<<<<<<<<
+ *         with gil:
+ *             _LOGGER.error('Failed to shutdown gRPC Core after fork()')
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":59
+ * 
+ * 
+ * cdef void __postfork_child() noexcept nogil:             # <<<<<<<<<<<<<<
+ *     with gil:
+ *         try:
+ */
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  #ifdef WITH_THREAD
+  __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
+  #endif
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_XDECREF(__pyx_t_18);
+  __Pyx_XDECREF(__pyx_t_19);
+  __Pyx_XDECREF(__pyx_t_20);
+  __Pyx_XDECREF(__pyx_t_21);
+  __Pyx_WriteUnraisable("_cython.cygrpc.__postfork_child", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  #ifdef WITH_THREAD
+  __Pyx_PyGILState_Release(__pyx_gilstate_save);
+  #endif
+  __pyx_L0:;
+  #ifdef WITH_THREAD
+  __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
+  #endif
+  __Pyx_XDECREF(__pyx_v_state_to_reset);
+  __Pyx_XDECREF(__pyx_v_channel);
+  __Pyx_RefNannyFinishContext();
+  #ifdef WITH_THREAD
+  __Pyx_PyGILState_Release(__pyx_gilstate_save);
+  #endif
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":89
+ * 
+ * 
+ * def fork_handlers_and_grpc_init():             # <<<<<<<<<<<<<<
+ *     grpc_init()
+ *     if _GRPC_ENABLE_FORK_SUPPORT:
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_95fork_handlers_and_grpc_init(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_95fork_handlers_and_grpc_init = {"fork_handlers_and_grpc_init", (PyCFunction)__pyx_pw_7_cython_6cygrpc_95fork_handlers_and_grpc_init, METH_NOARGS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_95fork_handlers_and_grpc_init(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("fork_handlers_and_grpc_init (wrapper)", 0);
+  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_94fork_handlers_and_grpc_init(__pyx_self);
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_94fork_handlers_and_grpc_init(CYTHON_UNUSED PyObject *__pyx_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  unsigned int __pyx_t_7;
+  PyObject *__pyx_t_8 = NULL;
+  PyObject *__pyx_t_9 = NULL;
+  PyObject *__pyx_t_10 = NULL;
+  int __pyx_t_11;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("fork_handlers_and_grpc_init", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":90
+ * 
+ * def fork_handlers_and_grpc_init():
+ *     grpc_init()             # <<<<<<<<<<<<<<
+ *     if _GRPC_ENABLE_FORK_SUPPORT:
+ *         with _fork_state.fork_handler_registered_lock:
+ */
+  grpc_init();
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":91
+ * def fork_handlers_and_grpc_init():
+ *     grpc_init()
+ *     if _GRPC_ENABLE_FORK_SUPPORT:             # <<<<<<<<<<<<<<
+ *         with _fork_state.fork_handler_registered_lock:
+ *             if not _fork_state.fork_handler_registered:
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_GRPC_ENABLE_FORK_SUPPORT); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 91, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(1, 91, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (__pyx_t_2) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":92
+ *     grpc_init()
+ *     if _GRPC_ENABLE_FORK_SUPPORT:
+ *         with _fork_state.fork_handler_registered_lock:             # <<<<<<<<<<<<<<
+ *             if not _fork_state.fork_handler_registered:
+ *                 os.register_at_fork(before=__prefork,
+ */
+    /*with:*/ {
+      __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 92, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_fork_handler_registered_lock); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 92, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_t_3, __pyx_n_s_exit); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 92, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      __pyx_t_5 = __Pyx_PyObject_LookupSpecial(__pyx_t_3, __pyx_n_s_enter); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 92, __pyx_L4_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_1 = __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_1)) __PYX_ERR(1, 92, __pyx_L4_error)
+        __Pyx_GOTREF(__pyx_t_1);
+        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      }
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      /*try:*/ {
+        {
+          __Pyx_PyThreadState_declare
+          __Pyx_PyThreadState_assign
+          __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+          __Pyx_XGOTREF(__pyx_t_8);
+          __Pyx_XGOTREF(__pyx_t_9);
+          __Pyx_XGOTREF(__pyx_t_10);
+          /*try:*/ {
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":93
+ *     if _GRPC_ENABLE_FORK_SUPPORT:
+ *         with _fork_state.fork_handler_registered_lock:
+ *             if not _fork_state.fork_handler_registered:             # <<<<<<<<<<<<<<
+ *                 os.register_at_fork(before=__prefork,
+ *                                     after_in_parent=__postfork_parent,
+ */
+            __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 93, __pyx_L8_error)
+            __Pyx_GOTREF(__pyx_t_3);
+            __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_fork_handler_registered); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 93, __pyx_L8_error)
+            __Pyx_GOTREF(__pyx_t_1);
+            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+            __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(1, 93, __pyx_L8_error)
+            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+            __pyx_t_11 = (!__pyx_t_2);
+            if (__pyx_t_11) {
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":94
+ *         with _fork_state.fork_handler_registered_lock:
+ *             if not _fork_state.fork_handler_registered:
+ *                 os.register_at_fork(before=__prefork,             # <<<<<<<<<<<<<<
+ *                                     after_in_parent=__postfork_parent,
+ *                                     after_in_child=__postfork_child)
+ */
+              __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_os); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 94, __pyx_L8_error)
+              __Pyx_GOTREF(__pyx_t_1);
+              __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_register_at_fork); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 94, __pyx_L8_error)
+              __Pyx_GOTREF(__pyx_t_3);
+              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+              __pyx_t_1 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 94, __pyx_L8_error)
+              __Pyx_GOTREF(__pyx_t_1);
+              __pyx_t_5 = __Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_(__pyx_f_7_cython_6cygrpc___prefork); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 94, __pyx_L8_error)
+              __Pyx_GOTREF(__pyx_t_5);
+              if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_before, __pyx_t_5) < 0) __PYX_ERR(1, 94, __pyx_L8_error)
+              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":95
+ *             if not _fork_state.fork_handler_registered:
+ *                 os.register_at_fork(before=__prefork,
+ *                                     after_in_parent=__postfork_parent,             # <<<<<<<<<<<<<<
+ *                                     after_in_child=__postfork_child)
+ *                 _fork_state.fork_handler_registered = True
+ */
+              __pyx_t_5 = __Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_(__pyx_f_7_cython_6cygrpc___postfork_parent); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 95, __pyx_L8_error)
+              __Pyx_GOTREF(__pyx_t_5);
+              if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_after_in_parent, __pyx_t_5) < 0) __PYX_ERR(1, 94, __pyx_L8_error)
+              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":96
+ *                 os.register_at_fork(before=__prefork,
+ *                                     after_in_parent=__postfork_parent,
+ *                                     after_in_child=__postfork_child)             # <<<<<<<<<<<<<<
+ *                 _fork_state.fork_handler_registered = True
+ * 
+ */
+              __pyx_t_5 = __Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_(__pyx_f_7_cython_6cygrpc___postfork_child); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 96, __pyx_L8_error)
+              __Pyx_GOTREF(__pyx_t_5);
+              if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_after_in_child, __pyx_t_5) < 0) __PYX_ERR(1, 94, __pyx_L8_error)
+              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":94
+ *         with _fork_state.fork_handler_registered_lock:
+ *             if not _fork_state.fork_handler_registered:
+ *                 os.register_at_fork(before=__prefork,             # <<<<<<<<<<<<<<
+ *                                     after_in_parent=__postfork_parent,
+ *                                     after_in_child=__postfork_child)
+ */
+              __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 94, __pyx_L8_error)
+              __Pyx_GOTREF(__pyx_t_5);
+              __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":97
+ *                                     after_in_parent=__postfork_parent,
+ *                                     after_in_child=__postfork_child)
+ *                 _fork_state.fork_handler_registered = True             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+              __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 97, __pyx_L8_error)
+              __Pyx_GOTREF(__pyx_t_5);
+              if (__Pyx_PyObject_SetAttrStr(__pyx_t_5, __pyx_n_s_fork_handler_registered, Py_True) < 0) __PYX_ERR(1, 97, __pyx_L8_error)
+              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":93
+ *     if _GRPC_ENABLE_FORK_SUPPORT:
+ *         with _fork_state.fork_handler_registered_lock:
+ *             if not _fork_state.fork_handler_registered:             # <<<<<<<<<<<<<<
+ *                 os.register_at_fork(before=__prefork,
+ *                                     after_in_parent=__postfork_parent,
+ */
+            }
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":92
+ *     grpc_init()
+ *     if _GRPC_ENABLE_FORK_SUPPORT:
+ *         with _fork_state.fork_handler_registered_lock:             # <<<<<<<<<<<<<<
+ *             if not _fork_state.fork_handler_registered:
+ *                 os.register_at_fork(before=__prefork,
+ */
+          }
+          __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+          __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+          __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+          goto __pyx_L13_try_end;
+          __pyx_L8_error:;
+          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+          /*except:*/ {
+            __Pyx_AddTraceback("_cython.cygrpc.fork_handlers_and_grpc_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
+            if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_1, &__pyx_t_3) < 0) __PYX_ERR(1, 92, __pyx_L10_except_error)
+            __Pyx_XGOTREF(__pyx_t_5);
+            __Pyx_XGOTREF(__pyx_t_1);
+            __Pyx_XGOTREF(__pyx_t_3);
+            __pyx_t_6 = PyTuple_Pack(3, __pyx_t_5, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 92, __pyx_L10_except_error)
+            __Pyx_GOTREF(__pyx_t_6);
+            __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL);
+            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+            if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 92, __pyx_L10_except_error)
+            __Pyx_GOTREF(__pyx_t_12);
+            __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+            __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+            if (__pyx_t_11 < 0) __PYX_ERR(1, 92, __pyx_L10_except_error)
+            __pyx_t_2 = (!__pyx_t_11);
+            if (unlikely(__pyx_t_2)) {
+              __Pyx_GIVEREF(__pyx_t_5);
+              __Pyx_GIVEREF(__pyx_t_1);
+              __Pyx_XGIVEREF(__pyx_t_3);
+              __Pyx_ErrRestoreWithState(__pyx_t_5, __pyx_t_1, __pyx_t_3);
+              __pyx_t_5 = 0; __pyx_t_1 = 0; __pyx_t_3 = 0; 
+              __PYX_ERR(1, 92, __pyx_L10_except_error)
+            }
+            __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+            __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+            __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+            goto __pyx_L9_exception_handled;
+          }
+          __pyx_L10_except_error:;
+          __Pyx_XGIVEREF(__pyx_t_8);
+          __Pyx_XGIVEREF(__pyx_t_9);
+          __Pyx_XGIVEREF(__pyx_t_10);
+          __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+          goto __pyx_L1_error;
+          __pyx_L9_exception_handled:;
+          __Pyx_XGIVEREF(__pyx_t_8);
+          __Pyx_XGIVEREF(__pyx_t_9);
+          __Pyx_XGIVEREF(__pyx_t_10);
+          __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+          __pyx_L13_try_end:;
+        }
+      }
+      /*finally:*/ {
+        /*normal exit:*/{
+          if (__pyx_t_4) {
+            __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__11, NULL);
+            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+            if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 92, __pyx_L1_error)
+            __Pyx_GOTREF(__pyx_t_10);
+            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+          }
+          goto __pyx_L7;
+        }
+        __pyx_L7:;
+      }
+      goto __pyx_L18;
+      __pyx_L4_error:;
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      goto __pyx_L1_error;
+      __pyx_L18:;
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":91
+ * def fork_handlers_and_grpc_init():
+ *     grpc_init()
+ *     if _GRPC_ENABLE_FORK_SUPPORT:             # <<<<<<<<<<<<<<
+ *         with _fork_state.fork_handler_registered_lock:
+ *             if not _fork_state.fork_handler_registered:
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":89
+ * 
+ * 
+ * def fork_handlers_and_grpc_init():             # <<<<<<<<<<<<<<
+ *     grpc_init()
+ *     if _GRPC_ENABLE_FORK_SUPPORT:
+ */
+
+  /* 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_3);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("_cython.cygrpc.fork_handlers_and_grpc_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":103
+ * 
+ * class ForkManagedThread(object):
+ *     def __init__(self, target, args=()):             # <<<<<<<<<<<<<<
+ *         if _GRPC_ENABLE_FORK_SUPPORT:
+ *             def managed_target(*args):
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_17ForkManagedThread_1__init__(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_17ForkManagedThread_1__init__ = {"__init__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_17ForkManagedThread_1__init__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_17ForkManagedThread_1__init__(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_self = 0;
+  PyObject *__pyx_v_target = 0;
+  PyObject *__pyx_v_args = 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("__init__ (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_self,&__pyx_n_s_target,&__pyx_n_s_args,0};
+    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)((PyObject*)__pyx_empty_tuple)));
+    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_self)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 103, __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_target)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 103, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 3, 1); __PYX_ERR(1, 103, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (kw_args > 0) {
+          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_args);
+          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
+          else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 103, __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, "__init__") < 0)) __PYX_ERR(1, 103, __pyx_L3_error)
+      }
+    } else {
+      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);
+        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+        break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_self = values[0];
+    __pyx_v_target = values[1];
+    __pyx_v_args = values[2];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 3, __pyx_nargs); __PYX_ERR(1, 103, __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("_cython.cygrpc.ForkManagedThread.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_17ForkManagedThread___init__(__pyx_self, __pyx_v_self, __pyx_v_target, __pyx_v_args);
+
+  /* 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;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":105
+ *     def __init__(self, target, args=()):
+ *         if _GRPC_ENABLE_FORK_SUPPORT:
+ *             def managed_target(*args):             # <<<<<<<<<<<<<<
+ *                 try:
+ *                     target(*args)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_17ForkManagedThread_8__init___1managed_target(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_17ForkManagedThread_8__init___1managed_target = {"managed_target", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_7_cython_6cygrpc_17ForkManagedThread_8__init___1managed_target, METH_VARARGS|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_17ForkManagedThread_8__init___1managed_target(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_args = 0;
+  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("managed_target (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) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "managed_target", 0))) return NULL;
+  __Pyx_INCREF(__pyx_args);
+  __pyx_v_args = __pyx_args;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_17ForkManagedThread_8__init___managed_target(__pyx_self, __pyx_v_args);
+
+  /* function exit code */
+  __Pyx_DECREF(__pyx_v_args);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_17ForkManagedThread_8__init___managed_target(PyObject *__pyx_self, PyObject *__pyx_v_args) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_9___init__ *__pyx_cur_scope;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_9___init__ *__pyx_outer_scope;
+  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;
+  char const *__pyx_t_7;
+  PyObject *__pyx_t_8 = NULL;
+  PyObject *__pyx_t_9 = NULL;
+  PyObject *__pyx_t_10 = NULL;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  PyObject *__pyx_t_13 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("managed_target", 1);
+  __pyx_outer_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_9___init__ *) __Pyx_CyFunction_GetClosure(__pyx_self);
+  __pyx_cur_scope = __pyx_outer_scope;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":106
+ *         if _GRPC_ENABLE_FORK_SUPPORT:
+ *             def managed_target(*args):
+ *                 try:             # <<<<<<<<<<<<<<
+ *                     target(*args)
+ *                 finally:
+ */
+  /*try:*/ {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":107
+ *             def managed_target(*args):
+ *                 try:
+ *                     target(*args)             # <<<<<<<<<<<<<<
+ *                 finally:
+ *                     _fork_state.active_thread_count.decrement()
+ */
+    if (unlikely(!__pyx_cur_scope->__pyx_v_target)) { __Pyx_RaiseClosureNameError("target"); __PYX_ERR(1, 107, __pyx_L4_error) }
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_cur_scope->__pyx_v_target, __pyx_v_args, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 107, __pyx_L4_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":109
+ *                     target(*args)
+ *                 finally:
+ *                     _fork_state.active_thread_count.decrement()             # <<<<<<<<<<<<<<
+ *             self._thread = threading.Thread(target=_run_with_context(managed_target), args=args)
+ *         else:
+ */
+  /*finally:*/ {
+    /*normal exit:*/{
+      __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 109, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_active_thread_count); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 109, __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_decrement); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 109, __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(1, 109, __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;
+      goto __pyx_L5;
+    }
+    __pyx_L4_error:;
+    /*exception exit:*/{
+      __Pyx_PyThreadState_declare
+      __Pyx_PyThreadState_assign
+      __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0;
+      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13);
+      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10) < 0)) __Pyx_ErrFetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      __Pyx_XGOTREF(__pyx_t_8);
+      __Pyx_XGOTREF(__pyx_t_9);
+      __Pyx_XGOTREF(__pyx_t_10);
+      __Pyx_XGOTREF(__pyx_t_11);
+      __Pyx_XGOTREF(__pyx_t_12);
+      __Pyx_XGOTREF(__pyx_t_13);
+      __pyx_t_5 = __pyx_lineno; __pyx_t_6 = __pyx_clineno; __pyx_t_7 = __pyx_filename;
+      {
+        __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 109, __pyx_L7_error)
+        __Pyx_GOTREF(__pyx_t_2);
+        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_active_thread_count); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 109, __pyx_L7_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_decrement); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 109, __pyx_L7_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(1, 109, __pyx_L7_error)
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        }
+        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      }
+      if (PY_MAJOR_VERSION >= 3) {
+        __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_XGIVEREF(__pyx_t_8);
+      __Pyx_XGIVEREF(__pyx_t_9);
+      __Pyx_XGIVEREF(__pyx_t_10);
+      __Pyx_ErrRestore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0;
+      __pyx_lineno = __pyx_t_5; __pyx_clineno = __pyx_t_6; __pyx_filename = __pyx_t_7;
+      goto __pyx_L1_error;
+      __pyx_L7_error:;
+      if (PY_MAJOR_VERSION >= 3) {
+        __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_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+      __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0;
+      goto __pyx_L1_error;
+    }
+    __pyx_L5:;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":105
+ *     def __init__(self, target, args=()):
+ *         if _GRPC_ENABLE_FORK_SUPPORT:
+ *             def managed_target(*args):             # <<<<<<<<<<<<<<
+ *                 try:
+ *                     target(*args)
+ */
+
+  /* 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("_cython.cygrpc.ForkManagedThread.__init__.managed_target", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":103
+ * 
+ * class ForkManagedThread(object):
+ *     def __init__(self, target, args=()):             # <<<<<<<<<<<<<<
+ *         if _GRPC_ENABLE_FORK_SUPPORT:
+ *             def managed_target(*args):
+ */
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_17ForkManagedThread___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_target, PyObject *__pyx_v_args) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_9___init__ *__pyx_cur_scope;
+  PyObject *__pyx_v_managed_target = 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;
+  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("__init__", 0);
+  __pyx_cur_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_9___init__ *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_9___init__(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_9___init__, __pyx_empty_tuple, NULL);
+  if (unlikely(!__pyx_cur_scope)) {
+    __pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_9___init__ *)Py_None);
+    __Pyx_INCREF(Py_None);
+    __PYX_ERR(1, 103, __pyx_L1_error)
+  } else {
+    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+  }
+  __pyx_cur_scope->__pyx_v_target = __pyx_v_target;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_target);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_target);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":104
+ * class ForkManagedThread(object):
+ *     def __init__(self, target, args=()):
+ *         if _GRPC_ENABLE_FORK_SUPPORT:             # <<<<<<<<<<<<<<
+ *             def managed_target(*args):
+ *                 try:
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_GRPC_ENABLE_FORK_SUPPORT); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 104, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(1, 104, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (__pyx_t_2) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":105
+ *     def __init__(self, target, args=()):
+ *         if _GRPC_ENABLE_FORK_SUPPORT:
+ *             def managed_target(*args):             # <<<<<<<<<<<<<<
+ *                 try:
+ *                     target(*args)
+ */
+    __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_17ForkManagedThread_8__init___1managed_target, 0, __pyx_n_s_ForkManagedThread___init___local, ((PyObject*)__pyx_cur_scope), __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__43)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 105, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_v_managed_target = __pyx_t_1;
+    __pyx_t_1 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":110
+ *                 finally:
+ *                     _fork_state.active_thread_count.decrement()
+ *             self._thread = threading.Thread(target=_run_with_context(managed_target), args=args)             # <<<<<<<<<<<<<<
+ *         else:
+ *             self._thread = threading.Thread(target=_run_with_context(target), args=args)
+ */
+    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_threading); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 110, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_Thread); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 110, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 110, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_run_with_context); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 110, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_6 = NULL;
+    __pyx_t_7 = 0;
+    #if CYTHON_UNPACK_METHODS
+    if (unlikely(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, __pyx_v_managed_target};
+      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
+      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+      if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 110, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    }
+    if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_target, __pyx_t_4) < 0) __PYX_ERR(1, 110, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_args, __pyx_v_args) < 0) __PYX_ERR(1, 110, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 110, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_thread, __pyx_t_4) < 0) __PYX_ERR(1, 110, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":104
+ * class ForkManagedThread(object):
+ *     def __init__(self, target, args=()):
+ *         if _GRPC_ENABLE_FORK_SUPPORT:             # <<<<<<<<<<<<<<
+ *             def managed_target(*args):
+ *                 try:
+ */
+    goto __pyx_L3;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":112
+ *             self._thread = threading.Thread(target=_run_with_context(managed_target), args=args)
+ *         else:
+ *             self._thread = threading.Thread(target=_run_with_context(target), args=args)             # <<<<<<<<<<<<<<
+ * 
+ *     def setDaemon(self, daemonic):
+ */
+  /*else*/ {
+    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_threading); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 112, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_Thread); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 112, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_t_4 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 112, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_run_with_context); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 112, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_6 = NULL;
+    __pyx_t_7 = 0;
+    #if CYTHON_UNPACK_METHODS
+    if (unlikely(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, __pyx_cur_scope->__pyx_v_target};
+      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
+      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+      if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 112, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    }
+    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_target, __pyx_t_3) < 0) __PYX_ERR(1, 112, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_args, __pyx_v_args) < 0) __PYX_ERR(1, 112, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 112, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_thread, __pyx_t_3) < 0) __PYX_ERR(1, 112, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  }
+  __pyx_L3:;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":103
+ * 
+ * class ForkManagedThread(object):
+ *     def __init__(self, target, args=()):             # <<<<<<<<<<<<<<
+ *         if _GRPC_ENABLE_FORK_SUPPORT:
+ *             def managed_target(*args):
+ */
+
+  /* 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_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("_cython.cygrpc.ForkManagedThread.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_managed_target);
+  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":114
+ *             self._thread = threading.Thread(target=_run_with_context(target), args=args)
+ * 
+ *     def setDaemon(self, daemonic):             # <<<<<<<<<<<<<<
+ *         self._thread.daemon = daemonic
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_17ForkManagedThread_3setDaemon(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_17ForkManagedThread_3setDaemon = {"setDaemon", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_17ForkManagedThread_3setDaemon, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_17ForkManagedThread_3setDaemon(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_self = 0;
+  PyObject *__pyx_v_daemonic = 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("setDaemon (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_self,&__pyx_n_s_daemonic,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_self)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 114, __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_daemonic)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 114, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("setDaemon", 1, 2, 2, 1); __PYX_ERR(1, 114, __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, "setDaemon") < 0)) __PYX_ERR(1, 114, __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_self = values[0];
+    __pyx_v_daemonic = values[1];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("setDaemon", 1, 2, 2, __pyx_nargs); __PYX_ERR(1, 114, __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("_cython.cygrpc.ForkManagedThread.setDaemon", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_17ForkManagedThread_2setDaemon(__pyx_self, __pyx_v_self, __pyx_v_daemonic);
+
+  /* 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_7_cython_6cygrpc_17ForkManagedThread_2setDaemon(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_daemonic) {
+  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("setDaemon", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":115
+ * 
+ *     def setDaemon(self, daemonic):
+ *         self._thread.daemon = daemonic             # <<<<<<<<<<<<<<
+ * 
+ *     def start(self):
+ */
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_thread); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 115, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  if (__Pyx_PyObject_SetAttrStr(__pyx_t_1, __pyx_n_s_daemon, __pyx_v_daemonic) < 0) __PYX_ERR(1, 115, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":114
+ *             self._thread = threading.Thread(target=_run_with_context(target), args=args)
+ * 
+ *     def setDaemon(self, daemonic):             # <<<<<<<<<<<<<<
+ *         self._thread.daemon = daemonic
+ * 
+ */
+
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.ForkManagedThread.setDaemon", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":117
+ *         self._thread.daemon = daemonic
+ * 
+ *     def start(self):             # <<<<<<<<<<<<<<
+ *         if _GRPC_ENABLE_FORK_SUPPORT:
+ *             _fork_state.active_thread_count.increment()
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_17ForkManagedThread_5start(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_17ForkManagedThread_5start = {"start", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_17ForkManagedThread_5start, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_17ForkManagedThread_5start(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_self = 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("start (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_self,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_self)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 117, __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, "start") < 0)) __PYX_ERR(1, 117, __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_self = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("start", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 117, __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("_cython.cygrpc.ForkManagedThread.start", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_17ForkManagedThread_4start(__pyx_self, __pyx_v_self);
+
+  /* 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_7_cython_6cygrpc_17ForkManagedThread_4start(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
+  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("start", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":118
+ * 
+ *     def start(self):
+ *         if _GRPC_ENABLE_FORK_SUPPORT:             # <<<<<<<<<<<<<<
+ *             _fork_state.active_thread_count.increment()
+ *         self._thread.start()
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_GRPC_ENABLE_FORK_SUPPORT); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 118, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(1, 118, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (__pyx_t_2) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":119
+ *     def start(self):
+ *         if _GRPC_ENABLE_FORK_SUPPORT:
+ *             _fork_state.active_thread_count.increment()             # <<<<<<<<<<<<<<
+ *         self._thread.start()
+ * 
+ */
+    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 119, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_active_thread_count); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 119, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_increment); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 119, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __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(1, 119, __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/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":118
+ * 
+ *     def start(self):
+ *         if _GRPC_ENABLE_FORK_SUPPORT:             # <<<<<<<<<<<<<<
+ *             _fork_state.active_thread_count.increment()
+ *         self._thread.start()
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":120
+ *         if _GRPC_ENABLE_FORK_SUPPORT:
+ *             _fork_state.active_thread_count.increment()
+ *         self._thread.start()             # <<<<<<<<<<<<<<
+ * 
+ *     def join(self):
+ */
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_thread); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 120, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_start); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 120, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __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[2] = {__pyx_t_3, NULL};
+    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 120, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  }
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":117
+ *         self._thread.daemon = daemonic
+ * 
+ *     def start(self):             # <<<<<<<<<<<<<<
+ *         if _GRPC_ENABLE_FORK_SUPPORT:
+ *             _fork_state.active_thread_count.increment()
+ */
+
+  /* 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_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("_cython.cygrpc.ForkManagedThread.start", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":122
+ *         self._thread.start()
+ * 
+ *     def join(self):             # <<<<<<<<<<<<<<
+ *         self._thread.join()
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_17ForkManagedThread_7join(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_17ForkManagedThread_7join = {"join", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_17ForkManagedThread_7join, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_17ForkManagedThread_7join(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_self = 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("join (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_self,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_self)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 122, __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, "join") < 0)) __PYX_ERR(1, 122, __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_self = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("join", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 122, __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("_cython.cygrpc.ForkManagedThread.join", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_17ForkManagedThread_6join(__pyx_self, __pyx_v_self);
+
+  /* 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_7_cython_6cygrpc_17ForkManagedThread_6join(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__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("join", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":123
+ * 
+ *     def join(self):
+ *         self._thread.join()             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_thread); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 123, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_join); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 123, __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 (likely(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(1, 123, __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/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":122
+ *         self._thread.start()
+ * 
+ *     def join(self):             # <<<<<<<<<<<<<<
+ *         self._thread.join()
+ * 
+ */
+
+  /* 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("_cython.cygrpc.ForkManagedThread.join", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":126
+ * 
+ * 
+ * def block_if_fork_in_progress(postfork_state_to_reset=None):             # <<<<<<<<<<<<<<
+ *     if _GRPC_ENABLE_FORK_SUPPORT:
+ *         with _fork_state.fork_in_progress_condition:
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_97block_if_fork_in_progress(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_97block_if_fork_in_progress = {"block_if_fork_in_progress", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_97block_if_fork_in_progress, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_97block_if_fork_in_progress(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_postfork_state_to_reset = 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("block_if_fork_in_progress (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_postfork_state_to_reset,0};
+    values[0] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
+    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_postfork_state_to_reset);
+          if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
+          else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 126, __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, "block_if_fork_in_progress") < 0)) __PYX_ERR(1, 126, __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;
+      }
+    }
+    __pyx_v_postfork_state_to_reset = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("block_if_fork_in_progress", 0, 0, 1, __pyx_nargs); __PYX_ERR(1, 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("_cython.cygrpc.block_if_fork_in_progress", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_96block_if_fork_in_progress(__pyx_self, __pyx_v_postfork_state_to_reset);
+
+  /* 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_7_cython_6cygrpc_96block_if_fork_in_progress(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_postfork_state_to_reset) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  unsigned int __pyx_t_7;
+  PyObject *__pyx_t_8 = NULL;
+  PyObject *__pyx_t_9 = NULL;
+  PyObject *__pyx_t_10 = NULL;
+  int __pyx_t_11;
+  int __pyx_t_12;
+  PyObject *__pyx_t_13 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("block_if_fork_in_progress", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":127
+ * 
+ * def block_if_fork_in_progress(postfork_state_to_reset=None):
+ *     if _GRPC_ENABLE_FORK_SUPPORT:             # <<<<<<<<<<<<<<
+ *         with _fork_state.fork_in_progress_condition:
+ *             if not _fork_state.fork_in_progress:
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_GRPC_ENABLE_FORK_SUPPORT); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 127, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(1, 127, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (__pyx_t_2) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":128
+ * def block_if_fork_in_progress(postfork_state_to_reset=None):
+ *     if _GRPC_ENABLE_FORK_SUPPORT:
+ *         with _fork_state.fork_in_progress_condition:             # <<<<<<<<<<<<<<
+ *             if not _fork_state.fork_in_progress:
+ *                 return
+ */
+    /*with:*/ {
+      __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 128, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_fork_in_progress_condition); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 128, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_t_3, __pyx_n_s_exit); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 128, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      __pyx_t_5 = __Pyx_PyObject_LookupSpecial(__pyx_t_3, __pyx_n_s_enter); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 128, __pyx_L4_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_1 = __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_1)) __PYX_ERR(1, 128, __pyx_L4_error)
+        __Pyx_GOTREF(__pyx_t_1);
+        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      }
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      /*try:*/ {
+        {
+          __Pyx_PyThreadState_declare
+          __Pyx_PyThreadState_assign
+          __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+          __Pyx_XGOTREF(__pyx_t_8);
+          __Pyx_XGOTREF(__pyx_t_9);
+          __Pyx_XGOTREF(__pyx_t_10);
+          /*try:*/ {
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":129
+ *     if _GRPC_ENABLE_FORK_SUPPORT:
+ *         with _fork_state.fork_in_progress_condition:
+ *             if not _fork_state.fork_in_progress:             # <<<<<<<<<<<<<<
+ *                 return
+ *             if postfork_state_to_reset is not None:
+ */
+            __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 129, __pyx_L8_error)
+            __Pyx_GOTREF(__pyx_t_3);
+            __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_fork_in_progress); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 129, __pyx_L8_error)
+            __Pyx_GOTREF(__pyx_t_1);
+            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+            __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(1, 129, __pyx_L8_error)
+            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+            __pyx_t_11 = (!__pyx_t_2);
+            if (__pyx_t_11) {
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":130
+ *         with _fork_state.fork_in_progress_condition:
+ *             if not _fork_state.fork_in_progress:
+ *                 return             # <<<<<<<<<<<<<<
+ *             if postfork_state_to_reset is not None:
+ *                 _fork_state.postfork_states_to_reset.append(postfork_state_to_reset)
+ */
+              __Pyx_XDECREF(__pyx_r);
+              __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+              goto __pyx_L12_try_return;
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":129
+ *     if _GRPC_ENABLE_FORK_SUPPORT:
+ *         with _fork_state.fork_in_progress_condition:
+ *             if not _fork_state.fork_in_progress:             # <<<<<<<<<<<<<<
+ *                 return
+ *             if postfork_state_to_reset is not None:
+ */
+            }
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":131
+ *             if not _fork_state.fork_in_progress:
+ *                 return
+ *             if postfork_state_to_reset is not None:             # <<<<<<<<<<<<<<
+ *                 _fork_state.postfork_states_to_reset.append(postfork_state_to_reset)
+ *             _fork_state.active_thread_count.decrement()
+ */
+            __pyx_t_11 = (__pyx_v_postfork_state_to_reset != Py_None);
+            if (__pyx_t_11) {
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":132
+ *                 return
+ *             if postfork_state_to_reset is not None:
+ *                 _fork_state.postfork_states_to_reset.append(postfork_state_to_reset)             # <<<<<<<<<<<<<<
+ *             _fork_state.active_thread_count.decrement()
+ *             _fork_state.fork_in_progress_condition.wait()
+ */
+              __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 132, __pyx_L8_error)
+              __Pyx_GOTREF(__pyx_t_1);
+              __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_postfork_states_to_reset); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 132, __pyx_L8_error)
+              __Pyx_GOTREF(__pyx_t_3);
+              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+              __pyx_t_12 = __Pyx_PyObject_Append(__pyx_t_3, __pyx_v_postfork_state_to_reset); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(1, 132, __pyx_L8_error)
+              __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":131
+ *             if not _fork_state.fork_in_progress:
+ *                 return
+ *             if postfork_state_to_reset is not None:             # <<<<<<<<<<<<<<
+ *                 _fork_state.postfork_states_to_reset.append(postfork_state_to_reset)
+ *             _fork_state.active_thread_count.decrement()
+ */
+            }
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":133
+ *             if postfork_state_to_reset is not None:
+ *                 _fork_state.postfork_states_to_reset.append(postfork_state_to_reset)
+ *             _fork_state.active_thread_count.decrement()             # <<<<<<<<<<<<<<
+ *             _fork_state.fork_in_progress_condition.wait()
+ *             _fork_state.active_thread_count.increment()
+ */
+            __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 133, __pyx_L8_error)
+            __Pyx_GOTREF(__pyx_t_1);
+            __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_active_thread_count); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 133, __pyx_L8_error)
+            __Pyx_GOTREF(__pyx_t_5);
+            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+            __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_decrement); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 133, __pyx_L8_error)
+            __Pyx_GOTREF(__pyx_t_1);
+            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+            __pyx_t_5 = NULL;
+            __pyx_t_7 = 0;
+            #if CYTHON_UNPACK_METHODS
+            if (likely(PyMethod_Check(__pyx_t_1))) {
+              __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
+              if (likely(__pyx_t_5)) {
+                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+                __Pyx_INCREF(__pyx_t_5);
+                __Pyx_INCREF(function);
+                __Pyx_DECREF_SET(__pyx_t_1, function);
+                __pyx_t_7 = 1;
+              }
+            }
+            #endif
+            {
+              PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
+              __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
+              __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+              if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 133, __pyx_L8_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/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":134
+ *                 _fork_state.postfork_states_to_reset.append(postfork_state_to_reset)
+ *             _fork_state.active_thread_count.decrement()
+ *             _fork_state.fork_in_progress_condition.wait()             # <<<<<<<<<<<<<<
+ *             _fork_state.active_thread_count.increment()
+ * 
+ */
+            __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 134, __pyx_L8_error)
+            __Pyx_GOTREF(__pyx_t_1);
+            __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_fork_in_progress_condition); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 134, __pyx_L8_error)
+            __Pyx_GOTREF(__pyx_t_5);
+            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+            __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_wait); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 134, __pyx_L8_error)
+            __Pyx_GOTREF(__pyx_t_1);
+            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+            __pyx_t_5 = NULL;
+            __pyx_t_7 = 0;
+            #if CYTHON_UNPACK_METHODS
+            if (likely(PyMethod_Check(__pyx_t_1))) {
+              __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
+              if (likely(__pyx_t_5)) {
+                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+                __Pyx_INCREF(__pyx_t_5);
+                __Pyx_INCREF(function);
+                __Pyx_DECREF_SET(__pyx_t_1, function);
+                __pyx_t_7 = 1;
+              }
+            }
+            #endif
+            {
+              PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
+              __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
+              __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+              if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 134, __pyx_L8_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/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":135
+ *             _fork_state.active_thread_count.decrement()
+ *             _fork_state.fork_in_progress_condition.wait()
+ *             _fork_state.active_thread_count.increment()             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+            __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 135, __pyx_L8_error)
+            __Pyx_GOTREF(__pyx_t_1);
+            __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_active_thread_count); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 135, __pyx_L8_error)
+            __Pyx_GOTREF(__pyx_t_5);
+            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+            __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_increment); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 135, __pyx_L8_error)
+            __Pyx_GOTREF(__pyx_t_1);
+            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+            __pyx_t_5 = NULL;
+            __pyx_t_7 = 0;
+            #if CYTHON_UNPACK_METHODS
+            if (likely(PyMethod_Check(__pyx_t_1))) {
+              __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
+              if (likely(__pyx_t_5)) {
+                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+                __Pyx_INCREF(__pyx_t_5);
+                __Pyx_INCREF(function);
+                __Pyx_DECREF_SET(__pyx_t_1, function);
+                __pyx_t_7 = 1;
+              }
+            }
+            #endif
+            {
+              PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
+              __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
+              __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+              if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 135, __pyx_L8_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/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":128
+ * def block_if_fork_in_progress(postfork_state_to_reset=None):
+ *     if _GRPC_ENABLE_FORK_SUPPORT:
+ *         with _fork_state.fork_in_progress_condition:             # <<<<<<<<<<<<<<
+ *             if not _fork_state.fork_in_progress:
+ *                 return
+ */
+          }
+          __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+          __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+          __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+          goto __pyx_L13_try_end;
+          __pyx_L8_error:;
+          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+          /*except:*/ {
+            __Pyx_AddTraceback("_cython.cygrpc.block_if_fork_in_progress", __pyx_clineno, __pyx_lineno, __pyx_filename);
+            if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_1, &__pyx_t_5) < 0) __PYX_ERR(1, 128, __pyx_L10_except_error)
+            __Pyx_XGOTREF(__pyx_t_3);
+            __Pyx_XGOTREF(__pyx_t_1);
+            __Pyx_XGOTREF(__pyx_t_5);
+            __pyx_t_6 = PyTuple_Pack(3, __pyx_t_3, __pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 128, __pyx_L10_except_error)
+            __Pyx_GOTREF(__pyx_t_6);
+            __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL);
+            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+            if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 128, __pyx_L10_except_error)
+            __Pyx_GOTREF(__pyx_t_13);
+            __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_13);
+            __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+            if (__pyx_t_11 < 0) __PYX_ERR(1, 128, __pyx_L10_except_error)
+            __pyx_t_2 = (!__pyx_t_11);
+            if (unlikely(__pyx_t_2)) {
+              __Pyx_GIVEREF(__pyx_t_3);
+              __Pyx_GIVEREF(__pyx_t_1);
+              __Pyx_XGIVEREF(__pyx_t_5);
+              __Pyx_ErrRestoreWithState(__pyx_t_3, __pyx_t_1, __pyx_t_5);
+              __pyx_t_3 = 0; __pyx_t_1 = 0; __pyx_t_5 = 0; 
+              __PYX_ERR(1, 128, __pyx_L10_except_error)
+            }
+            __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+            __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+            __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+            goto __pyx_L9_exception_handled;
+          }
+          __pyx_L10_except_error:;
+          __Pyx_XGIVEREF(__pyx_t_8);
+          __Pyx_XGIVEREF(__pyx_t_9);
+          __Pyx_XGIVEREF(__pyx_t_10);
+          __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+          goto __pyx_L1_error;
+          __pyx_L12_try_return:;
+          __Pyx_XGIVEREF(__pyx_t_8);
+          __Pyx_XGIVEREF(__pyx_t_9);
+          __Pyx_XGIVEREF(__pyx_t_10);
+          __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+          goto __pyx_L5_return;
+          __pyx_L9_exception_handled:;
+          __Pyx_XGIVEREF(__pyx_t_8);
+          __Pyx_XGIVEREF(__pyx_t_9);
+          __Pyx_XGIVEREF(__pyx_t_10);
+          __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+          __pyx_L13_try_end:;
+        }
+      }
+      /*finally:*/ {
+        /*normal exit:*/{
+          if (__pyx_t_4) {
+            __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__11, NULL);
+            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+            if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 128, __pyx_L1_error)
+            __Pyx_GOTREF(__pyx_t_10);
+            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+          }
+          goto __pyx_L7;
+        }
+        __pyx_L5_return: {
+          __pyx_t_10 = __pyx_r;
+          __pyx_r = 0;
+          if (__pyx_t_4) {
+            __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__11, NULL);
+            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+            if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 128, __pyx_L1_error)
+            __Pyx_GOTREF(__pyx_t_9);
+            __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+          }
+          __pyx_r = __pyx_t_10;
+          __pyx_t_10 = 0;
+          goto __pyx_L0;
+        }
+        __pyx_L7:;
+      }
+      goto __pyx_L19;
+      __pyx_L4_error:;
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      goto __pyx_L1_error;
+      __pyx_L19:;
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":127
+ * 
+ * def block_if_fork_in_progress(postfork_state_to_reset=None):
+ *     if _GRPC_ENABLE_FORK_SUPPORT:             # <<<<<<<<<<<<<<
+ *         with _fork_state.fork_in_progress_condition:
+ *             if not _fork_state.fork_in_progress:
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":126
+ * 
+ * 
+ * def block_if_fork_in_progress(postfork_state_to_reset=None):             # <<<<<<<<<<<<<<
+ *     if _GRPC_ENABLE_FORK_SUPPORT:
+ *         with _fork_state.fork_in_progress_condition:
+ */
+
+  /* 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_3);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("_cython.cygrpc.block_if_fork_in_progress", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":138
+ * 
+ * 
+ * def enter_user_request_generator():             # <<<<<<<<<<<<<<
+ *     if _GRPC_ENABLE_FORK_SUPPORT:
+ *         _fork_state.active_thread_count.decrement()
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_99enter_user_request_generator(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_99enter_user_request_generator = {"enter_user_request_generator", (PyCFunction)__pyx_pw_7_cython_6cygrpc_99enter_user_request_generator, METH_NOARGS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_99enter_user_request_generator(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("enter_user_request_generator (wrapper)", 0);
+  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_98enter_user_request_generator(__pyx_self);
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_98enter_user_request_generator(CYTHON_UNUSED PyObject *__pyx_self) {
+  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("enter_user_request_generator", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":139
+ * 
+ * def enter_user_request_generator():
+ *     if _GRPC_ENABLE_FORK_SUPPORT:             # <<<<<<<<<<<<<<
+ *         _fork_state.active_thread_count.decrement()
+ * 
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_GRPC_ENABLE_FORK_SUPPORT); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 139, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(1, 139, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (__pyx_t_2) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":140
+ * def enter_user_request_generator():
+ *     if _GRPC_ENABLE_FORK_SUPPORT:
+ *         _fork_state.active_thread_count.decrement()             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 140, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_active_thread_count); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 140, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_decrement); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 140, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __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(1, 140, __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/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":139
+ * 
+ * def enter_user_request_generator():
+ *     if _GRPC_ENABLE_FORK_SUPPORT:             # <<<<<<<<<<<<<<
+ *         _fork_state.active_thread_count.decrement()
+ * 
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":138
+ * 
+ * 
+ * def enter_user_request_generator():             # <<<<<<<<<<<<<<
+ *     if _GRPC_ENABLE_FORK_SUPPORT:
+ *         _fork_state.active_thread_count.decrement()
+ */
+
+  /* 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_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("_cython.cygrpc.enter_user_request_generator", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":143
+ * 
+ * 
+ * def return_from_user_request_generator():             # <<<<<<<<<<<<<<
+ *     if _GRPC_ENABLE_FORK_SUPPORT:
+ *         _fork_state.active_thread_count.increment()
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_101return_from_user_request_generator(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_101return_from_user_request_generator = {"return_from_user_request_generator", (PyCFunction)__pyx_pw_7_cython_6cygrpc_101return_from_user_request_generator, METH_NOARGS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_101return_from_user_request_generator(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("return_from_user_request_generator (wrapper)", 0);
+  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_100return_from_user_request_generator(__pyx_self);
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_100return_from_user_request_generator(CYTHON_UNUSED PyObject *__pyx_self) {
+  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("return_from_user_request_generator", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":144
+ * 
+ * def return_from_user_request_generator():
+ *     if _GRPC_ENABLE_FORK_SUPPORT:             # <<<<<<<<<<<<<<
+ *         _fork_state.active_thread_count.increment()
+ *         block_if_fork_in_progress()
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_GRPC_ENABLE_FORK_SUPPORT); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 144, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(1, 144, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (__pyx_t_2) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":145
+ * def return_from_user_request_generator():
+ *     if _GRPC_ENABLE_FORK_SUPPORT:
+ *         _fork_state.active_thread_count.increment()             # <<<<<<<<<<<<<<
+ *         block_if_fork_in_progress()
+ * 
+ */
+    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 145, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_active_thread_count); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 145, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_increment); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 145, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __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(1, 145, __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/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":146
+ *     if _GRPC_ENABLE_FORK_SUPPORT:
+ *         _fork_state.active_thread_count.increment()
+ *         block_if_fork_in_progress()             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_block_if_fork_in_progress); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 146, __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, 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(1, 146, __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/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":144
+ * 
+ * def return_from_user_request_generator():
+ *     if _GRPC_ENABLE_FORK_SUPPORT:             # <<<<<<<<<<<<<<
+ *         _fork_state.active_thread_count.increment()
+ *         block_if_fork_in_progress()
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":143
+ * 
+ * 
+ * def return_from_user_request_generator():             # <<<<<<<<<<<<<<
+ *     if _GRPC_ENABLE_FORK_SUPPORT:
+ *         _fork_state.active_thread_count.increment()
+ */
+
+  /* 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_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("_cython.cygrpc.return_from_user_request_generator", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":149
+ * 
+ * 
+ * def get_fork_epoch():             # <<<<<<<<<<<<<<
+ *     return _fork_state.fork_epoch
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_103get_fork_epoch(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_103get_fork_epoch = {"get_fork_epoch", (PyCFunction)__pyx_pw_7_cython_6cygrpc_103get_fork_epoch, METH_NOARGS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_103get_fork_epoch(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_fork_epoch (wrapper)", 0);
+  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_102get_fork_epoch(__pyx_self);
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_102get_fork_epoch(CYTHON_UNUSED PyObject *__pyx_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_fork_epoch", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":150
+ * 
+ * def get_fork_epoch():
+ *     return _fork_state.fork_epoch             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 150, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_fork_epoch); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 150, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":149
+ * 
+ * 
+ * def get_fork_epoch():             # <<<<<<<<<<<<<<
+ *     return _fork_state.fork_epoch
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("_cython.cygrpc.get_fork_epoch", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":153
+ * 
+ * 
+ * def is_fork_support_enabled():             # <<<<<<<<<<<<<<
+ *     return _GRPC_ENABLE_FORK_SUPPORT
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_105is_fork_support_enabled(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_105is_fork_support_enabled = {"is_fork_support_enabled", (PyCFunction)__pyx_pw_7_cython_6cygrpc_105is_fork_support_enabled, METH_NOARGS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_105is_fork_support_enabled(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("is_fork_support_enabled (wrapper)", 0);
+  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_104is_fork_support_enabled(__pyx_self);
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_104is_fork_support_enabled(CYTHON_UNUSED PyObject *__pyx_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("is_fork_support_enabled", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":154
+ * 
+ * def is_fork_support_enabled():
+ *     return _GRPC_ENABLE_FORK_SUPPORT             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_GRPC_ENABLE_FORK_SUPPORT); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 154, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":153
+ * 
+ * 
+ * def is_fork_support_enabled():             # <<<<<<<<<<<<<<
+ *     return _GRPC_ENABLE_FORK_SUPPORT
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.is_fork_support_enabled", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":157
+ * 
+ * 
+ * def fork_register_channel(channel):             # <<<<<<<<<<<<<<
+ *     if _GRPC_ENABLE_FORK_SUPPORT:
+ *         _fork_state.channels.add(channel)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_107fork_register_channel(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_107fork_register_channel = {"fork_register_channel", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_107fork_register_channel, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_107fork_register_channel(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_channel = 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("fork_register_channel (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_channel,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_channel)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 157, __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, "fork_register_channel") < 0)) __PYX_ERR(1, 157, __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_channel = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("fork_register_channel", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 157, __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("_cython.cygrpc.fork_register_channel", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_106fork_register_channel(__pyx_self, __pyx_v_channel);
+
+  /* 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_7_cython_6cygrpc_106fork_register_channel(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_channel) {
+  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("fork_register_channel", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":158
+ * 
+ * def fork_register_channel(channel):
+ *     if _GRPC_ENABLE_FORK_SUPPORT:             # <<<<<<<<<<<<<<
+ *         _fork_state.channels.add(channel)
+ * 
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_GRPC_ENABLE_FORK_SUPPORT); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 158, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(1, 158, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (__pyx_t_2) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":159
+ * def fork_register_channel(channel):
+ *     if _GRPC_ENABLE_FORK_SUPPORT:
+ *         _fork_state.channels.add(channel)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 159, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_channels); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 159, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_add); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 159, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __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_channel};
+      __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(1, 159, __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/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":158
+ * 
+ * def fork_register_channel(channel):
+ *     if _GRPC_ENABLE_FORK_SUPPORT:             # <<<<<<<<<<<<<<
+ *         _fork_state.channels.add(channel)
+ * 
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":157
+ * 
+ * 
+ * def fork_register_channel(channel):             # <<<<<<<<<<<<<<
+ *     if _GRPC_ENABLE_FORK_SUPPORT:
+ *         _fork_state.channels.add(channel)
+ */
+
+  /* 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_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("_cython.cygrpc.fork_register_channel", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":162
+ * 
+ * 
+ * def fork_unregister_channel(channel):             # <<<<<<<<<<<<<<
+ *     if _GRPC_ENABLE_FORK_SUPPORT:
+ *         _fork_state.channels.discard(channel)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_109fork_unregister_channel(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_109fork_unregister_channel = {"fork_unregister_channel", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_109fork_unregister_channel, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_109fork_unregister_channel(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_channel = 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("fork_unregister_channel (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_channel,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_channel)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 162, __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, "fork_unregister_channel") < 0)) __PYX_ERR(1, 162, __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_channel = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("fork_unregister_channel", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 162, __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("_cython.cygrpc.fork_unregister_channel", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_108fork_unregister_channel(__pyx_self, __pyx_v_channel);
+
+  /* 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_7_cython_6cygrpc_108fork_unregister_channel(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_channel) {
+  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("fork_unregister_channel", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":163
+ * 
+ * def fork_unregister_channel(channel):
+ *     if _GRPC_ENABLE_FORK_SUPPORT:             # <<<<<<<<<<<<<<
+ *         _fork_state.channels.discard(channel)
+ * 
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_GRPC_ENABLE_FORK_SUPPORT); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 163, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(1, 163, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (__pyx_t_2) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":164
+ * def fork_unregister_channel(channel):
+ *     if _GRPC_ENABLE_FORK_SUPPORT:
+ *         _fork_state.channels.discard(channel)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 164, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_channels); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 164, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_discard); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 164, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __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_channel};
+      __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(1, 164, __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/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":163
+ * 
+ * def fork_unregister_channel(channel):
+ *     if _GRPC_ENABLE_FORK_SUPPORT:             # <<<<<<<<<<<<<<
+ *         _fork_state.channels.discard(channel)
+ * 
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":162
+ * 
+ * 
+ * def fork_unregister_channel(channel):             # <<<<<<<<<<<<<<
+ *     if _GRPC_ENABLE_FORK_SUPPORT:
+ *         _fork_state.channels.discard(channel)
+ */
+
+  /* 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_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("_cython.cygrpc.fork_unregister_channel", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":168
+ * 
+ * class _ActiveThreadCount(object):
+ *     def __init__(self):             # <<<<<<<<<<<<<<
+ *         self._num_active_threads = 0
+ *         self._condition = threading.Condition()
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_18_ActiveThreadCount_1__init__(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_18_ActiveThreadCount_1__init__ = {"__init__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_18_ActiveThreadCount_1__init__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_18_ActiveThreadCount_1__init__(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_self = 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("__init__ (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_self,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_self)) != 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, "__init__") < 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_self = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__init__", 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("_cython.cygrpc._ActiveThreadCount.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_18_ActiveThreadCount___init__(__pyx_self, __pyx_v_self);
+
+  /* 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_7_cython_6cygrpc_18_ActiveThreadCount___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__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("__init__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":169
+ * class _ActiveThreadCount(object):
+ *     def __init__(self):
+ *         self._num_active_threads = 0             # <<<<<<<<<<<<<<
+ *         self._condition = threading.Condition()
+ * 
+ */
+  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_num_active_threads, __pyx_int_0) < 0) __PYX_ERR(1, 169, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":170
+ *     def __init__(self):
+ *         self._num_active_threads = 0
+ *         self._condition = threading.Condition()             # <<<<<<<<<<<<<<
+ * 
+ *     def increment(self):
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_threading); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 170, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Condition); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 170, __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(1, 170, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  }
+  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_condition, __pyx_t_1) < 0) __PYX_ERR(1, 170, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":168
+ * 
+ * class _ActiveThreadCount(object):
+ *     def __init__(self):             # <<<<<<<<<<<<<<
+ *         self._num_active_threads = 0
+ *         self._condition = threading.Condition()
+ */
+
+  /* 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("_cython.cygrpc._ActiveThreadCount.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":172
+ *         self._condition = threading.Condition()
+ * 
+ *     def increment(self):             # <<<<<<<<<<<<<<
+ *         with self._condition:
+ *             self._num_active_threads += 1
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_18_ActiveThreadCount_3increment(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_18_ActiveThreadCount_3increment = {"increment", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_18_ActiveThreadCount_3increment, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_18_ActiveThreadCount_3increment(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_self = 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("increment (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_self,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_self)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 172, __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, "increment") < 0)) __PYX_ERR(1, 172, __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_self = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("increment", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 172, __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("_cython.cygrpc._ActiveThreadCount.increment", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_18_ActiveThreadCount_2increment(__pyx_self, __pyx_v_self);
+
+  /* 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_7_cython_6cygrpc_18_ActiveThreadCount_2increment(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__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;
+  PyObject *__pyx_t_5 = NULL;
+  unsigned int __pyx_t_6;
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
+  PyObject *__pyx_t_9 = NULL;
+  PyObject *__pyx_t_10 = NULL;
+  int __pyx_t_11;
+  int __pyx_t_12;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("increment", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":173
+ * 
+ *     def increment(self):
+ *         with self._condition:             # <<<<<<<<<<<<<<
+ *             self._num_active_threads += 1
+ * 
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_condition); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 173, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_exit); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 173, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 173, __pyx_L3_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, NULL};
+      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
+      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+      if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 173, __pyx_L3_error)
+      __Pyx_GOTREF(__pyx_t_3);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    }
+    __Pyx_DECREF(__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_7, &__pyx_t_8, &__pyx_t_9);
+        __Pyx_XGOTREF(__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_8);
+        __Pyx_XGOTREF(__pyx_t_9);
+        /*try:*/ {
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":174
+ *     def increment(self):
+ *         with self._condition:
+ *             self._num_active_threads += 1             # <<<<<<<<<<<<<<
+ * 
+ *     def decrement(self):
+ */
+          __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_num_active_threads); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 174, __pyx_L7_error)
+          __Pyx_GOTREF(__pyx_t_1);
+          __pyx_t_3 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 174, __pyx_L7_error)
+          __Pyx_GOTREF(__pyx_t_3);
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_num_active_threads, __pyx_t_3) < 0) __PYX_ERR(1, 174, __pyx_L7_error)
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":173
+ * 
+ *     def increment(self):
+ *         with self._condition:             # <<<<<<<<<<<<<<
+ *             self._num_active_threads += 1
+ * 
+ */
+        }
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+        goto __pyx_L12_try_end;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        /*except:*/ {
+          __Pyx_AddTraceback("_cython.cygrpc._ActiveThreadCount.increment", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_1, &__pyx_t_4) < 0) __PYX_ERR(1, 173, __pyx_L9_except_error)
+          __Pyx_XGOTREF(__pyx_t_3);
+          __Pyx_XGOTREF(__pyx_t_1);
+          __Pyx_XGOTREF(__pyx_t_4);
+          __pyx_t_5 = PyTuple_Pack(3, __pyx_t_3, __pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 173, __pyx_L9_except_error)
+          __Pyx_GOTREF(__pyx_t_5);
+          __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+          if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 173, __pyx_L9_except_error)
+          __Pyx_GOTREF(__pyx_t_10);
+          __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_10);
+          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+          if (__pyx_t_11 < 0) __PYX_ERR(1, 173, __pyx_L9_except_error)
+          __pyx_t_12 = (!__pyx_t_11);
+          if (unlikely(__pyx_t_12)) {
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_XGIVEREF(__pyx_t_4);
+            __Pyx_ErrRestoreWithState(__pyx_t_3, __pyx_t_1, __pyx_t_4);
+            __pyx_t_3 = 0; __pyx_t_1 = 0; __pyx_t_4 = 0; 
+            __PYX_ERR(1, 173, __pyx_L9_except_error)
+          }
+          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_XGIVEREF(__pyx_t_8);
+        __Pyx_XGIVEREF(__pyx_t_9);
+        __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_XGIVEREF(__pyx_t_8);
+        __Pyx_XGIVEREF(__pyx_t_9);
+        __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
+        __pyx_L12_try_end:;
+      }
+    }
+    /*finally:*/ {
+      /*normal exit:*/{
+        if (__pyx_t_2) {
+          __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 173, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_9);
+          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+        }
+        goto __pyx_L6;
+      }
+      __pyx_L6:;
+    }
+    goto __pyx_L16;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L16:;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":172
+ *         self._condition = threading.Condition()
+ * 
+ *     def increment(self):             # <<<<<<<<<<<<<<
+ *         with self._condition:
+ *             self._num_active_threads += 1
+ */
+
+  /* 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_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_AddTraceback("_cython.cygrpc._ActiveThreadCount.increment", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":176
+ *             self._num_active_threads += 1
+ * 
+ *     def decrement(self):             # <<<<<<<<<<<<<<
+ *         with self._condition:
+ *             self._num_active_threads -= 1
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_18_ActiveThreadCount_5decrement(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_18_ActiveThreadCount_5decrement = {"decrement", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_18_ActiveThreadCount_5decrement, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_18_ActiveThreadCount_5decrement(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_self = 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("decrement (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_self,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_self)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 176, __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, "decrement") < 0)) __PYX_ERR(1, 176, __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_self = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("decrement", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 176, __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("_cython.cygrpc._ActiveThreadCount.decrement", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_18_ActiveThreadCount_4decrement(__pyx_self, __pyx_v_self);
+
+  /* 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_7_cython_6cygrpc_18_ActiveThreadCount_4decrement(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__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;
+  PyObject *__pyx_t_5 = NULL;
+  unsigned int __pyx_t_6;
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
+  PyObject *__pyx_t_9 = NULL;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  int __pyx_t_12;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("decrement", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":177
+ * 
+ *     def decrement(self):
+ *         with self._condition:             # <<<<<<<<<<<<<<
+ *             self._num_active_threads -= 1
+ *             if self._num_active_threads == 0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_condition); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 177, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_exit); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 177, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 177, __pyx_L3_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, NULL};
+      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
+      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+      if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 177, __pyx_L3_error)
+      __Pyx_GOTREF(__pyx_t_3);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    }
+    __Pyx_DECREF(__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_7, &__pyx_t_8, &__pyx_t_9);
+        __Pyx_XGOTREF(__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_8);
+        __Pyx_XGOTREF(__pyx_t_9);
+        /*try:*/ {
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":178
+ *     def decrement(self):
+ *         with self._condition:
+ *             self._num_active_threads -= 1             # <<<<<<<<<<<<<<
+ *             if self._num_active_threads == 0:
+ *                 self._condition.notify_all()
+ */
+          __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_num_active_threads); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 178, __pyx_L7_error)
+          __Pyx_GOTREF(__pyx_t_1);
+          __pyx_t_3 = __Pyx_PyInt_SubtractObjC(__pyx_t_1, __pyx_int_1, 1, 1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 178, __pyx_L7_error)
+          __Pyx_GOTREF(__pyx_t_3);
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_num_active_threads, __pyx_t_3) < 0) __PYX_ERR(1, 178, __pyx_L7_error)
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":179
+ *         with self._condition:
+ *             self._num_active_threads -= 1
+ *             if self._num_active_threads == 0:             # <<<<<<<<<<<<<<
+ *                 self._condition.notify_all()
+ * 
+ */
+          __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_num_active_threads); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 179, __pyx_L7_error)
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_10 = (__Pyx_PyInt_BoolEqObjC(__pyx_t_3, __pyx_int_0, 0, 0)); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(1, 179, __pyx_L7_error)
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          if (__pyx_t_10) {
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":180
+ *             self._num_active_threads -= 1
+ *             if self._num_active_threads == 0:
+ *                 self._condition.notify_all()             # <<<<<<<<<<<<<<
+ * 
+ *     def await_zero_threads(self, timeout_secs):
+ */
+            __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_condition); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 180, __pyx_L7_error)
+            __Pyx_GOTREF(__pyx_t_1);
+            __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_notify_all); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 180, __pyx_L7_error)
+            __Pyx_GOTREF(__pyx_t_4);
+            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+            __pyx_t_1 = NULL;
+            __pyx_t_6 = 0;
+            #if CYTHON_UNPACK_METHODS
+            if (likely(PyMethod_Check(__pyx_t_4))) {
+              __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4);
+              if (likely(__pyx_t_1)) {
+                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+                __Pyx_INCREF(__pyx_t_1);
+                __Pyx_INCREF(function);
+                __Pyx_DECREF_SET(__pyx_t_4, function);
+                __pyx_t_6 = 1;
+              }
+            }
+            #endif
+            {
+              PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL};
+              __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
+              __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+              if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 180, __pyx_L7_error)
+              __Pyx_GOTREF(__pyx_t_3);
+              __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+            }
+            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":179
+ *         with self._condition:
+ *             self._num_active_threads -= 1
+ *             if self._num_active_threads == 0:             # <<<<<<<<<<<<<<
+ *                 self._condition.notify_all()
+ * 
+ */
+          }
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":177
+ * 
+ *     def decrement(self):
+ *         with self._condition:             # <<<<<<<<<<<<<<
+ *             self._num_active_threads -= 1
+ *             if self._num_active_threads == 0:
+ */
+        }
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+        goto __pyx_L12_try_end;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        /*except:*/ {
+          __Pyx_AddTraceback("_cython.cygrpc._ActiveThreadCount.decrement", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_4, &__pyx_t_1) < 0) __PYX_ERR(1, 177, __pyx_L9_except_error)
+          __Pyx_XGOTREF(__pyx_t_3);
+          __Pyx_XGOTREF(__pyx_t_4);
+          __Pyx_XGOTREF(__pyx_t_1);
+          __pyx_t_5 = PyTuple_Pack(3, __pyx_t_3, __pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 177, __pyx_L9_except_error)
+          __Pyx_GOTREF(__pyx_t_5);
+          __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+          if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 177, __pyx_L9_except_error)
+          __Pyx_GOTREF(__pyx_t_11);
+          __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_11);
+          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+          if (__pyx_t_10 < 0) __PYX_ERR(1, 177, __pyx_L9_except_error)
+          __pyx_t_12 = (!__pyx_t_10);
+          if (unlikely(__pyx_t_12)) {
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_XGIVEREF(__pyx_t_1);
+            __Pyx_ErrRestoreWithState(__pyx_t_3, __pyx_t_4, __pyx_t_1);
+            __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_1 = 0; 
+            __PYX_ERR(1, 177, __pyx_L9_except_error)
+          }
+          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_XGIVEREF(__pyx_t_8);
+        __Pyx_XGIVEREF(__pyx_t_9);
+        __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_XGIVEREF(__pyx_t_8);
+        __Pyx_XGIVEREF(__pyx_t_9);
+        __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
+        __pyx_L12_try_end:;
+      }
+    }
+    /*finally:*/ {
+      /*normal exit:*/{
+        if (__pyx_t_2) {
+          __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 177, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_9);
+          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+        }
+        goto __pyx_L6;
+      }
+      __pyx_L6:;
+    }
+    goto __pyx_L17;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L17:;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":176
+ *             self._num_active_threads += 1
+ * 
+ *     def decrement(self):             # <<<<<<<<<<<<<<
+ *         with self._condition:
+ *             self._num_active_threads -= 1
+ */
+
+  /* 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_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_AddTraceback("_cython.cygrpc._ActiveThreadCount.decrement", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":182
+ *                 self._condition.notify_all()
+ * 
+ *     def await_zero_threads(self, timeout_secs):             # <<<<<<<<<<<<<<
+ *         end_time = time.time() + timeout_secs
+ *         wait_time = timeout_secs
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_18_ActiveThreadCount_7await_zero_threads(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_18_ActiveThreadCount_7await_zero_threads = {"await_zero_threads", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_18_ActiveThreadCount_7await_zero_threads, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_18_ActiveThreadCount_7await_zero_threads(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_self = 0;
+  PyObject *__pyx_v_timeout_secs = 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("await_zero_threads (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_self,&__pyx_n_s_timeout_secs,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_self)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 182, __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_timeout_secs)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 182, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("await_zero_threads", 1, 2, 2, 1); __PYX_ERR(1, 182, __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, "await_zero_threads") < 0)) __PYX_ERR(1, 182, __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_self = values[0];
+    __pyx_v_timeout_secs = values[1];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("await_zero_threads", 1, 2, 2, __pyx_nargs); __PYX_ERR(1, 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("_cython.cygrpc._ActiveThreadCount.await_zero_threads", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_18_ActiveThreadCount_6await_zero_threads(__pyx_self, __pyx_v_self, __pyx_v_timeout_secs);
+
+  /* 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_7_cython_6cygrpc_18_ActiveThreadCount_6await_zero_threads(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_timeout_secs) {
+  PyObject *__pyx_v_end_time = NULL;
+  PyObject *__pyx_v_wait_time = 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;
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
+  PyObject *__pyx_t_9 = NULL;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  int __pyx_t_12;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("await_zero_threads", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":183
+ * 
+ *     def await_zero_threads(self, timeout_secs):
+ *         end_time = time.time() + timeout_secs             # <<<<<<<<<<<<<<
+ *         wait_time = timeout_secs
+ *         with self._condition:
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_time); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 183, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_time); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 183, __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(1, 183, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  }
+  __pyx_t_3 = PyNumber_Add(__pyx_t_1, __pyx_v_timeout_secs); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 183, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_v_end_time = __pyx_t_3;
+  __pyx_t_3 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":184
+ *     def await_zero_threads(self, timeout_secs):
+ *         end_time = time.time() + timeout_secs
+ *         wait_time = timeout_secs             # <<<<<<<<<<<<<<
+ *         with self._condition:
+ *             while True:
+ */
+  __Pyx_INCREF(__pyx_v_timeout_secs);
+  __pyx_v_wait_time = __pyx_v_timeout_secs;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":185
+ *         end_time = time.time() + timeout_secs
+ *         wait_time = timeout_secs
+ *         with self._condition:             # <<<<<<<<<<<<<<
+ *             while True:
+ *                 if self._num_active_threads > 0:
+ */
+  /*with:*/ {
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_condition); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 185, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_5 = __Pyx_PyObject_LookupSpecial(__pyx_t_3, __pyx_n_s_exit); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 185, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_2 = __Pyx_PyObject_LookupSpecial(__pyx_t_3, __pyx_n_s_enter); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 185, __pyx_L3_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_6 = NULL;
+    __pyx_t_4 = 0;
+    #if CYTHON_UNPACK_METHODS
+    if (likely(PyMethod_Check(__pyx_t_2))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_2, function);
+        __pyx_t_4 = 1;
+      }
+    }
+    #endif
+    {
+      PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
+      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
+      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+      if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 185, __pyx_L3_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    /*try:*/ {
+      {
+        __Pyx_PyThreadState_declare
+        __Pyx_PyThreadState_assign
+        __Pyx_ExceptionSave(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
+        __Pyx_XGOTREF(__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_8);
+        __Pyx_XGOTREF(__pyx_t_9);
+        /*try:*/ {
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":186
+ *         wait_time = timeout_secs
+ *         with self._condition:
+ *             while True:             # <<<<<<<<<<<<<<
+ *                 if self._num_active_threads > 0:
+ *                     self._condition.wait(wait_time)
+ */
+          while (1) {
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":187
+ *         with self._condition:
+ *             while True:
+ *                 if self._num_active_threads > 0:             # <<<<<<<<<<<<<<
+ *                     self._condition.wait(wait_time)
+ *                 if self._num_active_threads == 0:
+ */
+            __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_num_active_threads); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 187, __pyx_L7_error)
+            __Pyx_GOTREF(__pyx_t_3);
+            __pyx_t_1 = PyObject_RichCompare(__pyx_t_3, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 187, __pyx_L7_error)
+            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+            __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(1, 187, __pyx_L7_error)
+            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+            if (__pyx_t_10) {
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":188
+ *             while True:
+ *                 if self._num_active_threads > 0:
+ *                     self._condition.wait(wait_time)             # <<<<<<<<<<<<<<
+ *                 if self._num_active_threads == 0:
+ *                     return True
+ */
+              __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_condition); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 188, __pyx_L7_error)
+              __Pyx_GOTREF(__pyx_t_3);
+              __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_wait); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 188, __pyx_L7_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, __pyx_v_wait_time};
+                __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, 188, __pyx_L7_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/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":187
+ *         with self._condition:
+ *             while True:
+ *                 if self._num_active_threads > 0:             # <<<<<<<<<<<<<<
+ *                     self._condition.wait(wait_time)
+ *                 if self._num_active_threads == 0:
+ */
+            }
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":189
+ *                 if self._num_active_threads > 0:
+ *                     self._condition.wait(wait_time)
+ *                 if self._num_active_threads == 0:             # <<<<<<<<<<<<<<
+ *                     return True
+ *                 # Thread count may have increased before this re-obtains the
+ */
+            __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_num_active_threads); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 189, __pyx_L7_error)
+            __Pyx_GOTREF(__pyx_t_1);
+            __pyx_t_10 = (__Pyx_PyInt_BoolEqObjC(__pyx_t_1, __pyx_int_0, 0, 0)); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(1, 189, __pyx_L7_error)
+            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+            if (__pyx_t_10) {
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":190
+ *                     self._condition.wait(wait_time)
+ *                 if self._num_active_threads == 0:
+ *                     return True             # <<<<<<<<<<<<<<
+ *                 # Thread count may have increased before this re-obtains the
+ *                 # lock after a notify(). Wait again until timeout_secs has
+ */
+              __Pyx_XDECREF(__pyx_r);
+              __Pyx_INCREF(Py_True);
+              __pyx_r = Py_True;
+              goto __pyx_L11_try_return;
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":189
+ *                 if self._num_active_threads > 0:
+ *                     self._condition.wait(wait_time)
+ *                 if self._num_active_threads == 0:             # <<<<<<<<<<<<<<
+ *                     return True
+ *                 # Thread count may have increased before this re-obtains the
+ */
+            }
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":194
+ *                 # lock after a notify(). Wait again until timeout_secs has
+ *                 # elapsed.
+ *                 wait_time = end_time - time.time()             # <<<<<<<<<<<<<<
+ *                 if wait_time <= 0:
+ *                     return False
+ */
+            __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_time); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 194, __pyx_L7_error)
+            __Pyx_GOTREF(__pyx_t_2);
+            __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_time); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 194, __pyx_L7_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(1, 194, __pyx_L7_error)
+              __Pyx_GOTREF(__pyx_t_1);
+              __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+            }
+            __pyx_t_3 = PyNumber_Subtract(__pyx_v_end_time, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 194, __pyx_L7_error)
+            __Pyx_GOTREF(__pyx_t_3);
+            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+            __Pyx_DECREF_SET(__pyx_v_wait_time, __pyx_t_3);
+            __pyx_t_3 = 0;
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":195
+ *                 # elapsed.
+ *                 wait_time = end_time - time.time()
+ *                 if wait_time <= 0:             # <<<<<<<<<<<<<<
+ *                     return False
+ * 
+ */
+            __pyx_t_3 = PyObject_RichCompare(__pyx_v_wait_time, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 195, __pyx_L7_error)
+            __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(1, 195, __pyx_L7_error)
+            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+            if (__pyx_t_10) {
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":196
+ *                 wait_time = end_time - time.time()
+ *                 if wait_time <= 0:
+ *                     return False             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+              __Pyx_XDECREF(__pyx_r);
+              __Pyx_INCREF(Py_False);
+              __pyx_r = Py_False;
+              goto __pyx_L11_try_return;
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":195
+ *                 # elapsed.
+ *                 wait_time = end_time - time.time()
+ *                 if wait_time <= 0:             # <<<<<<<<<<<<<<
+ *                     return False
+ * 
+ */
+            }
+          }
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":185
+ *         end_time = time.time() + timeout_secs
+ *         wait_time = timeout_secs
+ *         with self._condition:             # <<<<<<<<<<<<<<
+ *             while True:
+ *                 if self._num_active_threads > 0:
+ */
+        }
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+        goto __pyx_L12_try_end;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        /*except:*/ {
+          __Pyx_AddTraceback("_cython.cygrpc._ActiveThreadCount.await_zero_threads", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_1, &__pyx_t_2) < 0) __PYX_ERR(1, 185, __pyx_L9_except_error)
+          __Pyx_XGOTREF(__pyx_t_3);
+          __Pyx_XGOTREF(__pyx_t_1);
+          __Pyx_XGOTREF(__pyx_t_2);
+          __pyx_t_6 = PyTuple_Pack(3, __pyx_t_3, __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 185, __pyx_L9_except_error)
+          __Pyx_GOTREF(__pyx_t_6);
+          __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL);
+          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+          if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 185, __pyx_L9_except_error)
+          __Pyx_GOTREF(__pyx_t_11);
+          __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_11);
+          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+          if (__pyx_t_10 < 0) __PYX_ERR(1, 185, __pyx_L9_except_error)
+          __pyx_t_12 = (!__pyx_t_10);
+          if (unlikely(__pyx_t_12)) {
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_XGIVEREF(__pyx_t_2);
+            __Pyx_ErrRestoreWithState(__pyx_t_3, __pyx_t_1, __pyx_t_2);
+            __pyx_t_3 = 0; __pyx_t_1 = 0; __pyx_t_2 = 0; 
+            __PYX_ERR(1, 185, __pyx_L9_except_error)
+          }
+          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_XGIVEREF(__pyx_t_8);
+        __Pyx_XGIVEREF(__pyx_t_9);
+        __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
+        goto __pyx_L1_error;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_XGIVEREF(__pyx_t_8);
+        __Pyx_XGIVEREF(__pyx_t_9);
+        __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
+        goto __pyx_L4_return;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_XGIVEREF(__pyx_t_8);
+        __Pyx_XGIVEREF(__pyx_t_9);
+        __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
+        __pyx_L12_try_end:;
+      }
+    }
+    /*finally:*/ {
+      /*normal exit:*/{
+        if (__pyx_t_5) {
+          __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__11, NULL);
+          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+          if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 185, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_9);
+          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+        }
+        goto __pyx_L6;
+      }
+      __pyx_L4_return: {
+        __pyx_t_9 = __pyx_r;
+        __pyx_r = 0;
+        if (__pyx_t_5) {
+          __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__11, NULL);
+          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+          if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 185, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_8);
+          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+        }
+        __pyx_r = __pyx_t_9;
+        __pyx_t_9 = 0;
+        goto __pyx_L0;
+      }
+      __pyx_L6:;
+    }
+    goto __pyx_L21;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    goto __pyx_L1_error;
+    __pyx_L21:;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":182
+ *                 self._condition.notify_all()
+ * 
+ *     def await_zero_threads(self, timeout_secs):             # <<<<<<<<<<<<<<
+ *         end_time = time.time() + timeout_secs
+ *         wait_time = timeout_secs
+ */
+
+  /* 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_6);
+  __Pyx_AddTraceback("_cython.cygrpc._ActiveThreadCount.await_zero_threads", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_end_time);
+  __Pyx_XDECREF(__pyx_v_wait_time);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":200
+ * 
+ * class _ForkState(object):
+ *     def __init__(self):             # <<<<<<<<<<<<<<
+ *         self.fork_in_progress_condition = threading.Condition()
+ *         self.fork_in_progress = False
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_10_ForkState_1__init__(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_10_ForkState_1__init__ = {"__init__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_10_ForkState_1__init__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_10_ForkState_1__init__(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_self = 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("__init__ (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_self,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_self)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 200, __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, "__init__") < 0)) __PYX_ERR(1, 200, __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_self = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 200, __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("_cython.cygrpc._ForkState.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_10_ForkState___init__(__pyx_self, __pyx_v_self);
+
+  /* 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_7_cython_6cygrpc_10_ForkState___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__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("__init__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":201
+ * class _ForkState(object):
+ *     def __init__(self):
+ *         self.fork_in_progress_condition = threading.Condition()             # <<<<<<<<<<<<<<
+ *         self.fork_in_progress = False
+ *         self.postfork_states_to_reset = []
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_threading); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 201, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Condition); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 201, __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(1, 201, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  }
+  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_fork_in_progress_condition, __pyx_t_1) < 0) __PYX_ERR(1, 201, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":202
+ *     def __init__(self):
+ *         self.fork_in_progress_condition = threading.Condition()
+ *         self.fork_in_progress = False             # <<<<<<<<<<<<<<
+ *         self.postfork_states_to_reset = []
+ *         self.fork_handler_registered_lock = threading.Lock()
+ */
+  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_fork_in_progress, Py_False) < 0) __PYX_ERR(1, 202, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":203
+ *         self.fork_in_progress_condition = threading.Condition()
+ *         self.fork_in_progress = False
+ *         self.postfork_states_to_reset = []             # <<<<<<<<<<<<<<
+ *         self.fork_handler_registered_lock = threading.Lock()
+ *         self.fork_handler_registered = False
+ */
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 203, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_postfork_states_to_reset, __pyx_t_1) < 0) __PYX_ERR(1, 203, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":204
+ *         self.fork_in_progress = False
+ *         self.postfork_states_to_reset = []
+ *         self.fork_handler_registered_lock = threading.Lock()             # <<<<<<<<<<<<<<
+ *         self.fork_handler_registered = False
+ *         self.active_thread_count = _ActiveThreadCount()
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_threading); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 204, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_Lock); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 204, __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 (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, 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(1, 204, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  }
+  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_fork_handler_registered_lock, __pyx_t_1) < 0) __PYX_ERR(1, 204, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":205
+ *         self.postfork_states_to_reset = []
+ *         self.fork_handler_registered_lock = threading.Lock()
+ *         self.fork_handler_registered = False             # <<<<<<<<<<<<<<
+ *         self.active_thread_count = _ActiveThreadCount()
+ *         self.fork_epoch = 0
+ */
+  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_fork_handler_registered, Py_False) < 0) __PYX_ERR(1, 205, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":206
+ *         self.fork_handler_registered_lock = threading.Lock()
+ *         self.fork_handler_registered = False
+ *         self.active_thread_count = _ActiveThreadCount()             # <<<<<<<<<<<<<<
+ *         self.fork_epoch = 0
+ *         self.channels = set()
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_ActiveThreadCount); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 206, __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, 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(1, 206, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  }
+  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_active_thread_count, __pyx_t_1) < 0) __PYX_ERR(1, 206, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":207
+ *         self.fork_handler_registered = False
+ *         self.active_thread_count = _ActiveThreadCount()
+ *         self.fork_epoch = 0             # <<<<<<<<<<<<<<
+ *         self.channels = set()
+ * 
+ */
+  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_fork_epoch, __pyx_int_0) < 0) __PYX_ERR(1, 207, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":208
+ *         self.active_thread_count = _ActiveThreadCount()
+ *         self.fork_epoch = 0
+ *         self.channels = set()             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 208, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_channels, __pyx_t_1) < 0) __PYX_ERR(1, 208, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":200
+ * 
+ * class _ForkState(object):
+ *     def __init__(self):             # <<<<<<<<<<<<<<
+ *         self.fork_in_progress_condition = threading.Condition()
+ *         self.fork_in_progress = False
+ */
+
+  /* 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("_cython.cygrpc._ForkState.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":22
+ * 
+ * 
+ * cdef grpc_status_code get_status_code(object code) except *:             # <<<<<<<<<<<<<<
+ *     if isinstance(code, int):
+ *         if code >= StatusCode.ok and code <= StatusCode.data_loss:
+ */
+
+static grpc_status_code __pyx_f_7_cython_6cygrpc_get_status_code(PyObject *__pyx_v_code) {
+  grpc_status_code __pyx_r;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  int __pyx_t_4;
+  grpc_status_code __pyx_t_5;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
+  int __pyx_t_9;
+  PyObject *__pyx_t_10 = NULL;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_status_code", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":23
+ * 
+ * cdef grpc_status_code get_status_code(object code) except *:
+ *     if isinstance(code, int):             # <<<<<<<<<<<<<<
+ *         if code >= StatusCode.ok and code <= StatusCode.data_loss:
+ *             return code
+ */
+  __pyx_t_1 = PyInt_Check(__pyx_v_code); 
+  if (__pyx_t_1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":24
+ * cdef grpc_status_code get_status_code(object code) except *:
+ *     if isinstance(code, int):
+ *         if code >= StatusCode.ok and code <= StatusCode.data_loss:             # <<<<<<<<<<<<<<
+ *             return code
+ *         else:
+ */
+    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_StatusCode); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 24, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_ok); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 24, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_t_2 = PyObject_RichCompare(__pyx_v_code, __pyx_t_3, Py_GE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 24, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(6, 24, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    if (__pyx_t_4) {
+    } else {
+      __pyx_t_1 = __pyx_t_4;
+      goto __pyx_L5_bool_binop_done;
+    }
+    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_StatusCode); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 24, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_data_loss); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 24, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_t_2 = PyObject_RichCompare(__pyx_v_code, __pyx_t_3, Py_LE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 24, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(6, 24, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_t_1 = __pyx_t_4;
+    __pyx_L5_bool_binop_done:;
+    if (__pyx_t_1) {
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":25
+ *     if isinstance(code, int):
+ *         if code >= StatusCode.ok and code <= StatusCode.data_loss:
+ *             return code             # <<<<<<<<<<<<<<
+ *         else:
+ *             return StatusCode.unknown
+ */
+      __pyx_t_5 = ((grpc_status_code)__Pyx_PyInt_As_grpc_status_code(__pyx_v_code)); if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 25, __pyx_L1_error)
+      __pyx_r = __pyx_t_5;
+      goto __pyx_L0;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":24
+ * cdef grpc_status_code get_status_code(object code) except *:
+ *     if isinstance(code, int):
+ *         if code >= StatusCode.ok and code <= StatusCode.data_loss:             # <<<<<<<<<<<<<<
+ *             return code
+ *         else:
+ */
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":27
+ *             return code
+ *         else:
+ *             return StatusCode.unknown             # <<<<<<<<<<<<<<
+ *     else:
+ *         try:
+ */
+    /*else*/ {
+      __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_StatusCode); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 27, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_unknown); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 27, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __pyx_t_5 = ((grpc_status_code)__Pyx_PyInt_As_grpc_status_code(__pyx_t_3)); if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 27, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __pyx_r = __pyx_t_5;
+      goto __pyx_L0;
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":23
+ * 
+ * cdef grpc_status_code get_status_code(object code) except *:
+ *     if isinstance(code, int):             # <<<<<<<<<<<<<<
+ *         if code >= StatusCode.ok and code <= StatusCode.data_loss:
+ *             return code
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":29
+ *             return StatusCode.unknown
+ *     else:
+ *         try:             # <<<<<<<<<<<<<<
+ *             return code.value[0]
+ *         except (KeyError, AttributeError):
+ */
+  /*else*/ {
+    {
+      __Pyx_PyThreadState_declare
+      __Pyx_PyThreadState_assign
+      __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
+      __Pyx_XGOTREF(__pyx_t_6);
+      __Pyx_XGOTREF(__pyx_t_7);
+      __Pyx_XGOTREF(__pyx_t_8);
+      /*try:*/ {
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":30
+ *     else:
+ *         try:
+ *             return code.value[0]             # <<<<<<<<<<<<<<
+ *         except (KeyError, AttributeError):
+ *             return StatusCode.unknown
+ */
+        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_code, __pyx_n_s_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 30, __pyx_L7_error)
+        __Pyx_GOTREF(__pyx_t_3);
+        __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 30, __pyx_L7_error)
+        __Pyx_GOTREF(__pyx_t_2);
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __pyx_t_5 = ((grpc_status_code)__Pyx_PyInt_As_grpc_status_code(__pyx_t_2)); if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 30, __pyx_L7_error)
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        __pyx_r = __pyx_t_5;
+        goto __pyx_L11_try_return;
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":29
+ *             return StatusCode.unknown
+ *     else:
+ *         try:             # <<<<<<<<<<<<<<
+ *             return code.value[0]
+ *         except (KeyError, AttributeError):
+ */
+      }
+      __pyx_L7_error:;
+      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":31
+ *         try:
+ *             return code.value[0]
+ *         except (KeyError, AttributeError):             # <<<<<<<<<<<<<<
+ *             return StatusCode.unknown
+ * 
+ */
+      __pyx_t_9 = __Pyx_PyErr_ExceptionMatches2(__pyx_builtin_KeyError, __pyx_builtin_AttributeError);
+      if (__pyx_t_9) {
+        __Pyx_AddTraceback("_cython.cygrpc.get_status_code", __pyx_clineno, __pyx_lineno, __pyx_filename);
+        if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_3, &__pyx_t_10) < 0) __PYX_ERR(6, 31, __pyx_L9_except_error)
+        __Pyx_XGOTREF(__pyx_t_2);
+        __Pyx_XGOTREF(__pyx_t_3);
+        __Pyx_XGOTREF(__pyx_t_10);
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":32
+ *             return code.value[0]
+ *         except (KeyError, AttributeError):
+ *             return StatusCode.unknown             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+        __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_StatusCode); if (unlikely(!__pyx_t_11)) __PYX_ERR(6, 32, __pyx_L9_except_error)
+        __Pyx_GOTREF(__pyx_t_11);
+        __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_unknown); if (unlikely(!__pyx_t_12)) __PYX_ERR(6, 32, __pyx_L9_except_error)
+        __Pyx_GOTREF(__pyx_t_12);
+        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+        __pyx_t_5 = ((grpc_status_code)__Pyx_PyInt_As_grpc_status_code(__pyx_t_12)); if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 32, __pyx_L9_except_error)
+        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+        __pyx_r = __pyx_t_5;
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+        goto __pyx_L10_except_return;
+      }
+      goto __pyx_L9_except_error;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":29
+ *             return StatusCode.unknown
+ *     else:
+ *         try:             # <<<<<<<<<<<<<<
+ *             return code.value[0]
+ *         except (KeyError, AttributeError):
+ */
+      __pyx_L9_except_error:;
+      __Pyx_XGIVEREF(__pyx_t_6);
+      __Pyx_XGIVEREF(__pyx_t_7);
+      __Pyx_XGIVEREF(__pyx_t_8);
+      __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
+      goto __pyx_L1_error;
+      __pyx_L11_try_return:;
+      __Pyx_XGIVEREF(__pyx_t_6);
+      __Pyx_XGIVEREF(__pyx_t_7);
+      __Pyx_XGIVEREF(__pyx_t_8);
+      __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
+      goto __pyx_L0;
+      __pyx_L10_except_return:;
+      __Pyx_XGIVEREF(__pyx_t_6);
+      __Pyx_XGIVEREF(__pyx_t_7);
+      __Pyx_XGIVEREF(__pyx_t_8);
+      __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
+      goto __pyx_L0;
+    }
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":22
+ * 
+ * 
+ * cdef grpc_status_code get_status_code(object code) except *:             # <<<<<<<<<<<<<<
+ *     if isinstance(code, int):
+ *         if code >= StatusCode.ok and code <= StatusCode.data_loss:
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_XDECREF(__pyx_t_12);
+  __Pyx_AddTraceback("_cython.cygrpc.get_status_code", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = (grpc_status_code) 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":35
+ * 
+ * 
+ * cdef object deserialize(object deserializer, bytes raw_message):             # <<<<<<<<<<<<<<
+ *     """Perform deserialization on raw bytes.
+ * 
+ */
+
+static PyObject *__pyx_f_7_cython_6cygrpc_deserialize(PyObject *__pyx_v_deserializer, PyObject *__pyx_v_raw_message) {
+  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;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("deserialize", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":40
+ *     Failure to deserialize is a fatal error.
+ *     """
+ *     if deserializer:             # <<<<<<<<<<<<<<
+ *         return deserializer(raw_message)
+ *     else:
+ */
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_deserializer); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 40, __pyx_L1_error)
+  if (__pyx_t_1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":41
+ *     """
+ *     if deserializer:
+ *         return deserializer(raw_message)             # <<<<<<<<<<<<<<
+ *     else:
+ *         return raw_message
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_INCREF(__pyx_v_deserializer);
+    __pyx_t_3 = __pyx_v_deserializer; __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_raw_message};
+      __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(6, 41, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    }
+    __pyx_r = __pyx_t_2;
+    __pyx_t_2 = 0;
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":40
+ *     Failure to deserialize is a fatal error.
+ *     """
+ *     if deserializer:             # <<<<<<<<<<<<<<
+ *         return deserializer(raw_message)
+ *     else:
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":43
+ *         return deserializer(raw_message)
+ *     else:
+ *         return raw_message             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  /*else*/ {
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_INCREF(__pyx_v_raw_message);
+    __pyx_r = __pyx_v_raw_message;
+    goto __pyx_L0;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":35
+ * 
+ * 
+ * cdef object deserialize(object deserializer, bytes raw_message):             # <<<<<<<<<<<<<<
+ *     """Perform deserialization on raw bytes.
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("_cython.cygrpc.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":46
+ * 
+ * 
+ * cdef bytes serialize(object serializer, object message):             # <<<<<<<<<<<<<<
+ *     """Perform serialization on a message.
+ * 
+ */
+
+static PyObject *__pyx_f_7_cython_6cygrpc_serialize(PyObject *__pyx_v_serializer, PyObject *__pyx_v_message) {
+  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;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("serialize", 0);
+  __Pyx_INCREF(__pyx_v_message);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":51
+ *     Failure to serialize is a fatal error.
+ *     """
+ *     if isinstance(message, str):             # <<<<<<<<<<<<<<
+ *         message = message.encode('utf-8')
+ *     if serializer:
+ */
+  __pyx_t_1 = PyString_Check(__pyx_v_message); 
+  if (__pyx_t_1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":52
+ *     """
+ *     if isinstance(message, str):
+ *         message = message.encode('utf-8')             # <<<<<<<<<<<<<<
+ *     if serializer:
+ *         return serializer(message)
+ */
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_message, __pyx_n_s_encode); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 52, __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_kp_s_utf_8};
+      __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(6, 52, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    }
+    __Pyx_DECREF_SET(__pyx_v_message, __pyx_t_2);
+    __pyx_t_2 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":51
+ *     Failure to serialize is a fatal error.
+ *     """
+ *     if isinstance(message, str):             # <<<<<<<<<<<<<<
+ *         message = message.encode('utf-8')
+ *     if serializer:
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":53
+ *     if isinstance(message, str):
+ *         message = message.encode('utf-8')
+ *     if serializer:             # <<<<<<<<<<<<<<
+ *         return serializer(message)
+ *     else:
+ */
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_serializer); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 53, __pyx_L1_error)
+  if (__pyx_t_1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":54
+ *         message = message.encode('utf-8')
+ *     if serializer:
+ *         return serializer(message)             # <<<<<<<<<<<<<<
+ *     else:
+ *         return message
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_INCREF(__pyx_v_serializer);
+    __pyx_t_3 = __pyx_v_serializer; __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_message};
+      __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(6, 54, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    }
+    if (!(likely(PyBytes_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("bytes", __pyx_t_2))) __PYX_ERR(6, 54, __pyx_L1_error)
+    __pyx_r = ((PyObject*)__pyx_t_2);
+    __pyx_t_2 = 0;
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":53
+ *     if isinstance(message, str):
+ *         message = message.encode('utf-8')
+ *     if serializer:             # <<<<<<<<<<<<<<
+ *         return serializer(message)
+ *     else:
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":56
+ *         return serializer(message)
+ *     else:
+ *         return message             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  /*else*/ {
+    __Pyx_XDECREF(__pyx_r);
+    if (!(likely(PyBytes_CheckExact(__pyx_v_message))||((__pyx_v_message) == Py_None) || __Pyx_RaiseUnexpectedTypeError("bytes", __pyx_v_message))) __PYX_ERR(6, 56, __pyx_L1_error)
+    __Pyx_INCREF(__pyx_v_message);
+    __pyx_r = ((PyObject*)__pyx_v_message);
+    goto __pyx_L0;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":46
+ * 
+ * 
+ * cdef bytes serialize(object serializer, object message):             # <<<<<<<<<<<<<<
+ *     """Perform serialization on a message.
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("_cython.cygrpc.serialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_message);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":61
+ * class _EOF:
+ * 
+ *     def __bool__(self):             # <<<<<<<<<<<<<<
+ *         return False
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_4_EOF_1__bool__(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_4_EOF_1__bool__ = {"__bool__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_4_EOF_1__bool__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_4_EOF_1__bool__(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
+) {
+  CYTHON_UNUSED PyObject *__pyx_v_self = 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("__bool__ (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_self,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_self)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 61, __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, "__bool__") < 0)) __PYX_ERR(6, 61, __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_self = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__bool__", 1, 1, 1, __pyx_nargs); __PYX_ERR(6, 61, __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("_cython.cygrpc._EOF.__bool__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_4_EOF___bool__(__pyx_self, __pyx_v_self);
+
+  /* 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_7_cython_6cygrpc_4_EOF___bool__(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__bool__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":62
+ * 
+ *     def __bool__(self):
+ *         return False             # <<<<<<<<<<<<<<
+ * 
+ *     def __len__(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(Py_False);
+  __pyx_r = Py_False;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":61
+ * class _EOF:
+ * 
+ *     def __bool__(self):             # <<<<<<<<<<<<<<
+ *         return False
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":64
+ *         return False
+ * 
+ *     def __len__(self):             # <<<<<<<<<<<<<<
+ *         return 0
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_4_EOF_3__len__(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_4_EOF_3__len__ = {"__len__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_4_EOF_3__len__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_4_EOF_3__len__(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
+) {
+  CYTHON_UNUSED PyObject *__pyx_v_self = 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("__len__ (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_self,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_self)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 64, __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, "__len__") < 0)) __PYX_ERR(6, 64, __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_self = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__len__", 1, 1, 1, __pyx_nargs); __PYX_ERR(6, 64, __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("_cython.cygrpc._EOF.__len__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_4_EOF_2__len__(__pyx_self, __pyx_v_self);
+
+  /* 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_7_cython_6cygrpc_4_EOF_2__len__(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__len__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":65
+ * 
+ *     def __len__(self):
+ *         return 0             # <<<<<<<<<<<<<<
+ * 
+ *     def _repr(self) -> str:
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_int_0);
+  __pyx_r = __pyx_int_0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":64
+ *         return False
+ * 
+ *     def __len__(self):             # <<<<<<<<<<<<<<
+ *         return 0
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":67
+ *         return 0
+ * 
+ *     def _repr(self) -> str:             # <<<<<<<<<<<<<<
+ *         return '<grpc.aio.EOF>'
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_4_EOF_5_repr(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_4_EOF_5_repr = {"_repr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_4_EOF_5_repr, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_4_EOF_5_repr(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
+) {
+  CYTHON_UNUSED PyObject *__pyx_v_self = 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("_repr (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_self,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_self)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 67, __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, "_repr") < 0)) __PYX_ERR(6, 67, __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_self = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("_repr", 1, 1, 1, __pyx_nargs); __PYX_ERR(6, 67, __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("_cython.cygrpc._EOF._repr", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_4_EOF_4_repr(__pyx_self, __pyx_v_self);
+
+  /* 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_7_cython_6cygrpc_4_EOF_4_repr(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("_repr", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":68
+ * 
+ *     def _repr(self) -> str:
+ *         return '<grpc.aio.EOF>'             # <<<<<<<<<<<<<<
+ * 
+ *     def __repr__(self) -> str:
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_kp_s_grpc_aio_EOF);
+  __pyx_r = __pyx_kp_s_grpc_aio_EOF;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":67
+ *         return 0
+ * 
+ *     def _repr(self) -> str:             # <<<<<<<<<<<<<<
+ *         return '<grpc.aio.EOF>'
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":70
+ *         return '<grpc.aio.EOF>'
+ * 
+ *     def __repr__(self) -> str:             # <<<<<<<<<<<<<<
+ *         return self._repr()
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_4_EOF_7__repr__(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_4_EOF_7__repr__ = {"__repr__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_4_EOF_7__repr__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_4_EOF_7__repr__(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_self = 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("__repr__ (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_self,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_self)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 70, __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, "__repr__") < 0)) __PYX_ERR(6, 70, __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_self = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__repr__", 1, 1, 1, __pyx_nargs); __PYX_ERR(6, 70, __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("_cython.cygrpc._EOF.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_4_EOF_6__repr__(__pyx_self, __pyx_v_self);
+
+  /* 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_7_cython_6cygrpc_4_EOF_6__repr__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__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("__repr__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":71
+ * 
+ *     def __repr__(self) -> str:
+ *         return self._repr()             # <<<<<<<<<<<<<<
+ * 
+ *     def __str__(self) -> str:
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_repr); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 71, __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(6, 71, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  }
+  if (!(likely(PyString_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_1))) __PYX_ERR(6, 71, __pyx_L1_error)
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":70
+ *         return '<grpc.aio.EOF>'
+ * 
+ *     def __repr__(self) -> str:             # <<<<<<<<<<<<<<
+ *         return self._repr()
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("_cython.cygrpc._EOF.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":73
+ *         return self._repr()
+ * 
+ *     def __str__(self) -> str:             # <<<<<<<<<<<<<<
+ *         return self._repr()
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_4_EOF_9__str__(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_4_EOF_9__str__ = {"__str__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_4_EOF_9__str__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_4_EOF_9__str__(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_self = 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("__str__ (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_self,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_self)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 73, __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, "__str__") < 0)) __PYX_ERR(6, 73, __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_self = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__str__", 1, 1, 1, __pyx_nargs); __PYX_ERR(6, 73, __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("_cython.cygrpc._EOF.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_4_EOF_8__str__(__pyx_self, __pyx_v_self);
+
+  /* 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_7_cython_6cygrpc_4_EOF_8__str__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__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("__str__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":74
+ * 
+ *     def __str__(self) -> str:
+ *         return self._repr()             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_repr); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 74, __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(6, 74, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  }
+  if (!(likely(PyString_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_1))) __PYX_ERR(6, 74, __pyx_L1_error)
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":73
+ *         return self._repr()
+ * 
+ *     def __str__(self) -> str:             # <<<<<<<<<<<<<<
+ *         return self._repr()
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("_cython.cygrpc._EOF.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":110
+ * 
+ * 
+ * def schedule_coro_threadsafe(object coro, object loop):             # <<<<<<<<<<<<<<
+ *     try:
+ *         return loop.create_task(coro)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_111schedule_coro_threadsafe(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_111schedule_coro_threadsafe = {"schedule_coro_threadsafe", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_111schedule_coro_threadsafe, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_111schedule_coro_threadsafe(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_coro = 0;
+  PyObject *__pyx_v_loop = 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("schedule_coro_threadsafe (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_coro,&__pyx_n_s_loop,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_coro)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 110, __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_loop)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 110, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("schedule_coro_threadsafe", 1, 2, 2, 1); __PYX_ERR(6, 110, __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, "schedule_coro_threadsafe") < 0)) __PYX_ERR(6, 110, __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_coro = values[0];
+    __pyx_v_loop = values[1];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("schedule_coro_threadsafe", 1, 2, 2, __pyx_nargs); __PYX_ERR(6, 110, __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("_cython.cygrpc.schedule_coro_threadsafe", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_110schedule_coro_threadsafe(__pyx_self, __pyx_v_coro, __pyx_v_loop);
+
+  /* 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_7_cython_6cygrpc_110schedule_coro_threadsafe(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_coro, PyObject *__pyx_v_loop) {
+  PyObject *__pyx_v_runtime_error = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  unsigned int __pyx_t_7;
+  int __pyx_t_8;
+  PyObject *__pyx_t_9 = NULL;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  char const *__pyx_t_14;
+  PyObject *__pyx_t_15 = NULL;
+  PyObject *__pyx_t_16 = NULL;
+  PyObject *__pyx_t_17 = NULL;
+  PyObject *__pyx_t_18 = NULL;
+  PyObject *__pyx_t_19 = NULL;
+  PyObject *__pyx_t_20 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("schedule_coro_threadsafe", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":111
+ * 
+ * def schedule_coro_threadsafe(object coro, object loop):
+ *     try:             # <<<<<<<<<<<<<<
+ *         return loop.create_task(coro)
+ *     except RuntimeError as runtime_error:
+ */
+  {
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
+    __Pyx_XGOTREF(__pyx_t_1);
+    __Pyx_XGOTREF(__pyx_t_2);
+    __Pyx_XGOTREF(__pyx_t_3);
+    /*try:*/ {
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":112
+ * def schedule_coro_threadsafe(object coro, object loop):
+ *     try:
+ *         return loop.create_task(coro)             # <<<<<<<<<<<<<<
+ *     except RuntimeError as runtime_error:
+ *         if 'Non-thread-safe operation' in str(runtime_error):
+ */
+      __Pyx_XDECREF(__pyx_r);
+      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_loop, __pyx_n_s_create_task); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 112, __pyx_L3_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, __pyx_v_coro};
+        __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 112, __pyx_L3_error)
+        __Pyx_GOTREF(__pyx_t_4);
+        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      }
+      __pyx_r = __pyx_t_4;
+      __pyx_t_4 = 0;
+      goto __pyx_L7_try_return;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":111
+ * 
+ * def schedule_coro_threadsafe(object coro, object loop):
+ *     try:             # <<<<<<<<<<<<<<
+ *         return loop.create_task(coro)
+ *     except RuntimeError as runtime_error:
+ */
+    }
+    __pyx_L3_error:;
+    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":113
+ *     try:
+ *         return loop.create_task(coro)
+ *     except RuntimeError as runtime_error:             # <<<<<<<<<<<<<<
+ *         if 'Non-thread-safe operation' in str(runtime_error):
+ *             return asyncio.run_coroutine_threadsafe(
+ */
+    __pyx_t_8 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_RuntimeError);
+    if (__pyx_t_8) {
+      __Pyx_AddTraceback("_cython.cygrpc.schedule_coro_threadsafe", __pyx_clineno, __pyx_lineno, __pyx_filename);
+      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(6, 113, __pyx_L5_except_error)
+      __Pyx_XGOTREF(__pyx_t_4);
+      __Pyx_XGOTREF(__pyx_t_5);
+      __Pyx_XGOTREF(__pyx_t_6);
+      __Pyx_INCREF(__pyx_t_5);
+      __pyx_v_runtime_error = __pyx_t_5;
+      /*try:*/ {
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":114
+ *         return loop.create_task(coro)
+ *     except RuntimeError as runtime_error:
+ *         if 'Non-thread-safe operation' in str(runtime_error):             # <<<<<<<<<<<<<<
+ *             return asyncio.run_coroutine_threadsafe(
+ *                 coro,
+ */
+        __pyx_t_9 = __Pyx_PyObject_Str(__pyx_v_runtime_error); if (unlikely(!__pyx_t_9)) __PYX_ERR(6, 114, __pyx_L14_error)
+        __Pyx_GOTREF(__pyx_t_9);
+        __pyx_t_10 = (__Pyx_PySequence_ContainsTF(__pyx_kp_s_Non_thread_safe_operation, __pyx_t_9, Py_EQ)); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(6, 114, __pyx_L14_error)
+        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+        if (likely(__pyx_t_10)) {
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":115
+ *     except RuntimeError as runtime_error:
+ *         if 'Non-thread-safe operation' in str(runtime_error):
+ *             return asyncio.run_coroutine_threadsafe(             # <<<<<<<<<<<<<<
+ *                 coro,
+ *                 loop,
+ */
+          __Pyx_XDECREF(__pyx_r);
+          __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_asyncio); if (unlikely(!__pyx_t_11)) __PYX_ERR(6, 115, __pyx_L14_error)
+          __Pyx_GOTREF(__pyx_t_11);
+          __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_run_coroutine_threadsafe); if (unlikely(!__pyx_t_12)) __PYX_ERR(6, 115, __pyx_L14_error)
+          __Pyx_GOTREF(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":117
+ *             return asyncio.run_coroutine_threadsafe(
+ *                 coro,
+ *                 loop,             # <<<<<<<<<<<<<<
+ *             )
+ *         else:
+ */
+          __pyx_t_11 = NULL;
+          __pyx_t_7 = 0;
+          #if CYTHON_UNPACK_METHODS
+          if (unlikely(PyMethod_Check(__pyx_t_12))) {
+            __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_12);
+            if (likely(__pyx_t_11)) {
+              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
+              __Pyx_INCREF(__pyx_t_11);
+              __Pyx_INCREF(function);
+              __Pyx_DECREF_SET(__pyx_t_12, function);
+              __pyx_t_7 = 1;
+            }
+          }
+          #endif
+          {
+            PyObject *__pyx_callargs[3] = {__pyx_t_11, __pyx_v_coro, __pyx_v_loop};
+            __pyx_t_9 = __Pyx_PyObject_FastCall(__pyx_t_12, __pyx_callargs+1-__pyx_t_7, 2+__pyx_t_7);
+            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
+            if (unlikely(!__pyx_t_9)) __PYX_ERR(6, 115, __pyx_L14_error)
+            __Pyx_GOTREF(__pyx_t_9);
+            __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          }
+          __pyx_r = __pyx_t_9;
+          __pyx_t_9 = 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;
+          goto __pyx_L13_return;
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":114
+ *         return loop.create_task(coro)
+ *     except RuntimeError as runtime_error:
+ *         if 'Non-thread-safe operation' in str(runtime_error):             # <<<<<<<<<<<<<<
+ *             return asyncio.run_coroutine_threadsafe(
+ *                 coro,
+ */
+        }
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":120
+ *             )
+ *         else:
+ *             raise             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+        /*else*/ {
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_5);
+          __Pyx_XGIVEREF(__pyx_t_6);
+          __Pyx_ErrRestoreWithState(__pyx_t_4, __pyx_t_5, __pyx_t_6);
+          __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_6 = 0; 
+          __PYX_ERR(6, 120, __pyx_L14_error)
+        }
+      }
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":113
+ *     try:
+ *         return loop.create_task(coro)
+ *     except RuntimeError as runtime_error:             # <<<<<<<<<<<<<<
+ *         if 'Non-thread-safe operation' in str(runtime_error):
+ *             return asyncio.run_coroutine_threadsafe(
+ */
+      /*finally:*/ {
+        __pyx_L14_error:;
+        /*exception exit:*/{
+          __Pyx_PyThreadState_declare
+          __Pyx_PyThreadState_assign
+          __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0;
+          __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
+          __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
+          __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+          if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20);
+          if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17) < 0)) __Pyx_ErrFetch(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
+          __Pyx_XGOTREF(__pyx_t_15);
+          __Pyx_XGOTREF(__pyx_t_16);
+          __Pyx_XGOTREF(__pyx_t_17);
+          __Pyx_XGOTREF(__pyx_t_18);
+          __Pyx_XGOTREF(__pyx_t_19);
+          __Pyx_XGOTREF(__pyx_t_20);
+          __pyx_t_8 = __pyx_lineno; __pyx_t_13 = __pyx_clineno; __pyx_t_14 = __pyx_filename;
+          {
+            __Pyx_DECREF(__pyx_v_runtime_error); __pyx_v_runtime_error = 0;
+          }
+          if (PY_MAJOR_VERSION >= 3) {
+            __Pyx_XGIVEREF(__pyx_t_18);
+            __Pyx_XGIVEREF(__pyx_t_19);
+            __Pyx_XGIVEREF(__pyx_t_20);
+            __Pyx_ExceptionReset(__pyx_t_18, __pyx_t_19, __pyx_t_20);
+          }
+          __Pyx_XGIVEREF(__pyx_t_15);
+          __Pyx_XGIVEREF(__pyx_t_16);
+          __Pyx_XGIVEREF(__pyx_t_17);
+          __Pyx_ErrRestore(__pyx_t_15, __pyx_t_16, __pyx_t_17);
+          __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0;
+          __pyx_lineno = __pyx_t_8; __pyx_clineno = __pyx_t_13; __pyx_filename = __pyx_t_14;
+          goto __pyx_L5_except_error;
+        }
+        __pyx_L13_return: {
+          __pyx_t_20 = __pyx_r;
+          __pyx_r = 0;
+          __Pyx_DECREF(__pyx_v_runtime_error); __pyx_v_runtime_error = 0;
+          __pyx_r = __pyx_t_20;
+          __pyx_t_20 = 0;
+          goto __pyx_L6_except_return;
+        }
+      }
+    }
+    goto __pyx_L5_except_error;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":111
+ * 
+ * def schedule_coro_threadsafe(object coro, object loop):
+ *     try:             # <<<<<<<<<<<<<<
+ *         return loop.create_task(coro)
+ *     except RuntimeError as runtime_error:
+ */
+    __pyx_L5_except_error:;
+    __Pyx_XGIVEREF(__pyx_t_1);
+    __Pyx_XGIVEREF(__pyx_t_2);
+    __Pyx_XGIVEREF(__pyx_t_3);
+    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+    goto __pyx_L1_error;
+    __pyx_L7_try_return:;
+    __Pyx_XGIVEREF(__pyx_t_1);
+    __Pyx_XGIVEREF(__pyx_t_2);
+    __Pyx_XGIVEREF(__pyx_t_3);
+    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+    goto __pyx_L0;
+    __pyx_L6_except_return:;
+    __Pyx_XGIVEREF(__pyx_t_1);
+    __Pyx_XGIVEREF(__pyx_t_2);
+    __Pyx_XGIVEREF(__pyx_t_3);
+    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+    goto __pyx_L0;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":110
+ * 
+ * 
+ * def schedule_coro_threadsafe(object coro, object loop):             # <<<<<<<<<<<<<<
+ *     try:
+ *         return loop.create_task(coro)
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_XDECREF(__pyx_t_12);
+  __Pyx_AddTraceback("_cython.cygrpc.schedule_coro_threadsafe", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_runtime_error);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+static PyObject *__pyx_gb_7_cython_6cygrpc_114generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":123
+ * 
+ * 
+ * def async_generator_to_generator(object agen, object loop):             # <<<<<<<<<<<<<<
+ *     """Converts an async generator into generator."""
+ *     try:
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_113async_generator_to_generator(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_7_cython_6cygrpc_112async_generator_to_generator, "Converts an async generator into generator.");
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_113async_generator_to_generator = {"async_generator_to_generator", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_113async_generator_to_generator, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7_cython_6cygrpc_112async_generator_to_generator};
+static PyObject *__pyx_pw_7_cython_6cygrpc_113async_generator_to_generator(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_agen = 0;
+  PyObject *__pyx_v_loop = 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("async_generator_to_generator (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_agen,&__pyx_n_s_loop,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_agen)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 123, __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_loop)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 123, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("async_generator_to_generator", 1, 2, 2, 1); __PYX_ERR(6, 123, __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, "async_generator_to_generator") < 0)) __PYX_ERR(6, 123, __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_agen = values[0];
+    __pyx_v_loop = values[1];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("async_generator_to_generator", 1, 2, 2, __pyx_nargs); __PYX_ERR(6, 123, __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("_cython.cygrpc.async_generator_to_generator", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_112async_generator_to_generator(__pyx_self, __pyx_v_agen, __pyx_v_loop);
+
+  /* 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_7_cython_6cygrpc_112async_generator_to_generator(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_agen, PyObject *__pyx_v_loop) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator *__pyx_cur_scope;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("async_generator_to_generator", 0);
+  __pyx_cur_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator, __pyx_empty_tuple, NULL);
+  if (unlikely(!__pyx_cur_scope)) {
+    __pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator *)Py_None);
+    __Pyx_INCREF(Py_None);
+    __PYX_ERR(6, 123, __pyx_L1_error)
+  } else {
+    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+  }
+  __pyx_cur_scope->__pyx_v_agen = __pyx_v_agen;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_agen);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_agen);
+  __pyx_cur_scope->__pyx_v_loop = __pyx_v_loop;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
+  {
+    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_7_cython_6cygrpc_114generator, __pyx_codeobj__44, (PyObject *) __pyx_cur_scope, __pyx_n_s_async_generator_to_generator, __pyx_n_s_async_generator_to_generator, __pyx_n_s_cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(6, 123, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_cur_scope);
+    __Pyx_RefNannyFinishContext();
+    return (PyObject *) gen;
+  }
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc.async_generator_to_generator", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_gb_7_cython_6cygrpc_114generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
+{
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator *__pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator *)__pyx_generator->closure);
+  PyObject *__pyx_r = NULL;
+  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;
+  PyObject *__pyx_t_8 = NULL;
+  unsigned int __pyx_t_9;
+  int __pyx_t_10;
+  int __pyx_t_11;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("async_generator_to_generator", 0);
+  switch (__pyx_generator->resume_label) {
+    case 0: goto __pyx_L3_first_run;
+    case 1: goto __pyx_L13_resume_from_yield;
+    default: /* CPython raises the right error here */
+    __Pyx_RefNannyFinishContext();
+    return NULL;
+  }
+  __pyx_L3_first_run:;
+  if (unlikely(!__pyx_sent_value)) __PYX_ERR(6, 123, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":125
+ * def async_generator_to_generator(object agen, object loop):
+ *     """Converts an async generator into generator."""
+ *     try:             # <<<<<<<<<<<<<<
+ *         while True:
+ *             future = asyncio.run_coroutine_threadsafe(
+ */
+  {
+    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
+    __Pyx_XGOTREF(__pyx_t_1);
+    __Pyx_XGOTREF(__pyx_t_2);
+    __Pyx_XGOTREF(__pyx_t_3);
+    /*try:*/ {
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":126
+ *     """Converts an async generator into generator."""
+ *     try:
+ *         while True:             # <<<<<<<<<<<<<<
+ *             future = asyncio.run_coroutine_threadsafe(
+ *                 agen.__anext__(),
+ */
+      while (1) {
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":127
+ *     try:
+ *         while True:
+ *             future = asyncio.run_coroutine_threadsafe(             # <<<<<<<<<<<<<<
+ *                 agen.__anext__(),
+ *                 loop
+ */
+        __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_asyncio); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 127, __pyx_L4_error)
+        __Pyx_GOTREF(__pyx_t_5);
+        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_run_coroutine_threadsafe); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 127, __pyx_L4_error)
+        __Pyx_GOTREF(__pyx_t_6);
+        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":128
+ *         while True:
+ *             future = asyncio.run_coroutine_threadsafe(
+ *                 agen.__anext__(),             # <<<<<<<<<<<<<<
+ *                 loop
+ *             )
+ */
+        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_agen, __pyx_n_s_anext); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 128, __pyx_L4_error)
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_8 = NULL;
+        __pyx_t_9 = 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_9 = 1;
+          }
+        }
+        #endif
+        {
+          PyObject *__pyx_callargs[2] = {__pyx_t_8, NULL};
+          __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_9, 0+__pyx_t_9);
+          __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+          if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 128, __pyx_L4_error)
+          __Pyx_GOTREF(__pyx_t_5);
+          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        }
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":129
+ *             future = asyncio.run_coroutine_threadsafe(
+ *                 agen.__anext__(),
+ *                 loop             # <<<<<<<<<<<<<<
+ *             )
+ *             response = future.result()
+ */
+        __pyx_t_7 = NULL;
+        __pyx_t_9 = 0;
+        #if CYTHON_UNPACK_METHODS
+        if (unlikely(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_9 = 1;
+          }
+        }
+        #endif
+        {
+          PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_t_5, __pyx_cur_scope->__pyx_v_loop};
+          __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_9, 2+__pyx_t_9);
+          __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(6, 127, __pyx_L4_error)
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+        }
+        __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_future);
+        __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_future, __pyx_t_4);
+        __Pyx_GIVEREF(__pyx_t_4);
+        __pyx_t_4 = 0;
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":131
+ *                 loop
+ *             )
+ *             response = future.result()             # <<<<<<<<<<<<<<
+ *             if response is EOF:
+ *                 break
+ */
+        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_future, __pyx_n_s_result); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 131, __pyx_L4_error)
+        __Pyx_GOTREF(__pyx_t_6);
+        __pyx_t_5 = NULL;
+        __pyx_t_9 = 0;
+        #if CYTHON_UNPACK_METHODS
+        if (likely(PyMethod_Check(__pyx_t_6))) {
+          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
+          if (likely(__pyx_t_5)) {
+            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+            __Pyx_INCREF(__pyx_t_5);
+            __Pyx_INCREF(function);
+            __Pyx_DECREF_SET(__pyx_t_6, function);
+            __pyx_t_9 = 1;
+          }
+        }
+        #endif
+        {
+          PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
+          __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_9, 0+__pyx_t_9);
+          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+          if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 131, __pyx_L4_error)
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+        }
+        __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_response);
+        __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_response, __pyx_t_4);
+        __Pyx_GIVEREF(__pyx_t_4);
+        __pyx_t_4 = 0;
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":132
+ *             )
+ *             response = future.result()
+ *             if response is EOF:             # <<<<<<<<<<<<<<
+ *                 break
+ *             else:
+ */
+        __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_EOF); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 132, __pyx_L4_error)
+        __Pyx_GOTREF(__pyx_t_4);
+        __pyx_t_10 = (__pyx_cur_scope->__pyx_v_response == __pyx_t_4);
+        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+        if (__pyx_t_10) {
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":133
+ *             response = future.result()
+ *             if response is EOF:
+ *                 break             # <<<<<<<<<<<<<<
+ *             else:
+ *                 yield response
+ */
+          goto __pyx_L11_break;
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":132
+ *             )
+ *             response = future.result()
+ *             if response is EOF:             # <<<<<<<<<<<<<<
+ *                 break
+ *             else:
+ */
+        }
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":135
+ *                 break
+ *             else:
+ *                 yield response             # <<<<<<<<<<<<<<
+ *     except StopAsyncIteration:
+ *         # If StopAsyncIteration is raised, end this generator.
+ */
+        /*else*/ {
+          __Pyx_INCREF(__pyx_cur_scope->__pyx_v_response);
+          __pyx_r = __pyx_cur_scope->__pyx_v_response;
+          __Pyx_XGIVEREF(__pyx_t_1);
+          __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
+          __Pyx_XGIVEREF(__pyx_t_2);
+          __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
+          __Pyx_XGIVEREF(__pyx_t_3);
+          __pyx_cur_scope->__pyx_t_2 = __pyx_t_3;
+          __Pyx_XGIVEREF(__pyx_r);
+          __Pyx_RefNannyFinishContext();
+          __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+          /* return from generator, yielding value */
+          __pyx_generator->resume_label = 1;
+          return __pyx_r;
+          __pyx_L13_resume_from_yield:;
+          __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
+          __pyx_cur_scope->__pyx_t_0 = 0;
+          __Pyx_XGOTREF(__pyx_t_1);
+          __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
+          __pyx_cur_scope->__pyx_t_1 = 0;
+          __Pyx_XGOTREF(__pyx_t_2);
+          __pyx_t_3 = __pyx_cur_scope->__pyx_t_2;
+          __pyx_cur_scope->__pyx_t_2 = 0;
+          __Pyx_XGOTREF(__pyx_t_3);
+          if (unlikely(!__pyx_sent_value)) __PYX_ERR(6, 135, __pyx_L4_error)
+        }
+      }
+      __pyx_L11_break:;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":125
+ * def async_generator_to_generator(object agen, object loop):
+ *     """Converts an async generator into generator."""
+ *     try:             # <<<<<<<<<<<<<<
+ *         while True:
+ *             future = asyncio.run_coroutine_threadsafe(
+ */
+    }
+    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    goto __pyx_L9_try_end;
+    __pyx_L4_error:;
+    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":136
+ *             else:
+ *                 yield response
+ *     except StopAsyncIteration:             # <<<<<<<<<<<<<<
+ *         # If StopAsyncIteration is raised, end this generator.
+ *         pass
+ */
+    __pyx_t_11 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)__Pyx_PyExc_StopAsyncIteration)[0])));
+    if (__pyx_t_11) {
+      __Pyx_ErrRestore(0,0,0);
+      goto __pyx_L5_exception_handled;
+    }
+    goto __pyx_L6_except_error;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":125
+ * def async_generator_to_generator(object agen, object loop):
+ *     """Converts an async generator into generator."""
+ *     try:             # <<<<<<<<<<<<<<
+ *         while True:
+ *             future = asyncio.run_coroutine_threadsafe(
+ */
+    __pyx_L6_except_error:;
+    __Pyx_XGIVEREF(__pyx_t_1);
+    __Pyx_XGIVEREF(__pyx_t_2);
+    __Pyx_XGIVEREF(__pyx_t_3);
+    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+    goto __pyx_L1_error;
+    __pyx_L5_exception_handled:;
+    __Pyx_XGIVEREF(__pyx_t_1);
+    __Pyx_XGIVEREF(__pyx_t_2);
+    __Pyx_XGIVEREF(__pyx_t_3);
+    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+    __pyx_L9_try_end:;
+  }
+  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":123
+ * 
+ * 
+ * def async_generator_to_generator(object agen, object loop):             # <<<<<<<<<<<<<<
+ *     """Converts an async generator into generator."""
+ *     try:
+ */
+
+  /* function exit code */
+  PyErr_SetNone(PyExc_StopIteration);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_Generator_Replace_StopIteration(0);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_AddTraceback("async_generator_to_generator", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
+  #if !CYTHON_USE_EXC_INFO_STACK
+  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+  #endif
+  __pyx_generator->resume_label = -1;
+  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+static PyObject *__pyx_gb_7_cython_6cygrpc_117generator1(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":141
+ * 
+ * 
+ * async def generator_to_async_generator(object gen, object loop, object thread_pool):             # <<<<<<<<<<<<<<
+ *     """Converts a generator into async generator.
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_116generator_to_async_generator(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_7_cython_6cygrpc_115generator_to_async_generator, "Converts a generator into async generator.\n\n    The generator might block, so we need to delegate the iteration to thread\n    pool. Also, we can't simply delegate __next__ to the thread pool, otherwise\n    we will see following error:\n\n        TypeError: StopIteration interacts badly with generators and cannot be\n            raised into a Future\n    ");
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_116generator_to_async_generator = {"generator_to_async_generator", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_116generator_to_async_generator, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7_cython_6cygrpc_115generator_to_async_generator};
+static PyObject *__pyx_pw_7_cython_6cygrpc_116generator_to_async_generator(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_gen = 0;
+  PyObject *__pyx_v_loop = 0;
+  PyObject *__pyx_v_thread_pool = 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("generator_to_async_generator (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_gen,&__pyx_n_s_loop,&__pyx_n_s_thread_pool,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_gen)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 141, __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_loop)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 141, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("generator_to_async_generator", 1, 3, 3, 1); __PYX_ERR(6, 141, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_thread_pool)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 141, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("generator_to_async_generator", 1, 3, 3, 2); __PYX_ERR(6, 141, __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, "generator_to_async_generator") < 0)) __PYX_ERR(6, 141, __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_gen = values[0];
+    __pyx_v_loop = values[1];
+    __pyx_v_thread_pool = values[2];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("generator_to_async_generator", 1, 3, 3, __pyx_nargs); __PYX_ERR(6, 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("_cython.cygrpc.generator_to_async_generator", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_115generator_to_async_generator(__pyx_self, __pyx_v_gen, __pyx_v_loop, __pyx_v_thread_pool);
+
+  /* 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_7_cython_6cygrpc_115generator_to_async_generator(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_gen, PyObject *__pyx_v_loop, PyObject *__pyx_v_thread_pool) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator *__pyx_cur_scope;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("generator_to_async_generator", 0);
+  __pyx_cur_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator, __pyx_empty_tuple, NULL);
+  if (unlikely(!__pyx_cur_scope)) {
+    __pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator *)Py_None);
+    __Pyx_INCREF(Py_None);
+    __PYX_ERR(6, 141, __pyx_L1_error)
+  } else {
+    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+  }
+  __pyx_cur_scope->__pyx_v_gen = __pyx_v_gen;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_gen);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_gen);
+  __pyx_cur_scope->__pyx_v_loop = __pyx_v_loop;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
+  __pyx_cur_scope->__pyx_v_thread_pool = __pyx_v_thread_pool;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_thread_pool);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_thread_pool);
+  {
+    __pyx_CoroutineObject *gen = __Pyx_AsyncGen_New((__pyx_coroutine_body_t) __pyx_gb_7_cython_6cygrpc_117generator1, __pyx_codeobj__45, (PyObject *) __pyx_cur_scope, __pyx_n_s_generator_to_async_generator, __pyx_n_s_generator_to_async_generator, __pyx_n_s_cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(6, 141, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_cur_scope);
+    __Pyx_RefNannyFinishContext();
+    return (PyObject *) gen;
+  }
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc.generator_to_async_generator", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":153
+ *     queue = asyncio.Queue(maxsize=1)
+ * 
+ *     def yield_to_queue():             # <<<<<<<<<<<<<<
+ *         try:
+ *             for item in gen:
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_28generator_to_async_generator_1yield_to_queue(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_28generator_to_async_generator_1yield_to_queue = {"yield_to_queue", (PyCFunction)__pyx_pw_7_cython_6cygrpc_28generator_to_async_generator_1yield_to_queue, METH_NOARGS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_28generator_to_async_generator_1yield_to_queue(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("yield_to_queue (wrapper)", 0);
+  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_28generator_to_async_generator_yield_to_queue(__pyx_self);
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_28generator_to_async_generator_yield_to_queue(PyObject *__pyx_self) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator *__pyx_cur_scope;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator *__pyx_outer_scope;
+  PyObject *__pyx_v_item = NULL;
+  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;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
+  PyObject *__pyx_t_9 = NULL;
+  unsigned int __pyx_t_10;
+  int __pyx_t_11;
+  int __pyx_t_12;
+  char const *__pyx_t_13;
+  PyObject *__pyx_t_14 = NULL;
+  PyObject *__pyx_t_15 = NULL;
+  PyObject *__pyx_t_16 = NULL;
+  PyObject *__pyx_t_17 = NULL;
+  PyObject *__pyx_t_18 = NULL;
+  PyObject *__pyx_t_19 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("yield_to_queue", 1);
+  __pyx_outer_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator *) __Pyx_CyFunction_GetClosure(__pyx_self);
+  __pyx_cur_scope = __pyx_outer_scope;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":154
+ * 
+ *     def yield_to_queue():
+ *         try:             # <<<<<<<<<<<<<<
+ *             for item in gen:
+ *                 asyncio.run_coroutine_threadsafe(queue.put(item), loop).result()
+ */
+  /*try:*/ {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":155
+ *     def yield_to_queue():
+ *         try:
+ *             for item in gen:             # <<<<<<<<<<<<<<
+ *                 asyncio.run_coroutine_threadsafe(queue.put(item), loop).result()
+ *         finally:
+ */
+    if (unlikely(!__pyx_cur_scope->__pyx_v_gen)) { __Pyx_RaiseClosureNameError("gen"); __PYX_ERR(6, 155, __pyx_L4_error) }
+    if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_v_gen)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_gen)) {
+      __pyx_t_1 = __pyx_cur_scope->__pyx_v_gen; __Pyx_INCREF(__pyx_t_1);
+      __pyx_t_2 = 0;
+      __pyx_t_3 = NULL;
+    } else {
+      __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_cur_scope->__pyx_v_gen); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 155, __pyx_L4_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 155, __pyx_L4_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(6, 155, __pyx_L4_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(6, 155, __pyx_L4_error)
+          #else
+          __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 155, __pyx_L4_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(6, 155, __pyx_L4_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(6, 155, __pyx_L4_error)
+          #else
+          __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 155, __pyx_L4_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(6, 155, __pyx_L4_error)
+          }
+          break;
+        }
+        __Pyx_GOTREF(__pyx_t_4);
+      }
+      __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_4);
+      __pyx_t_4 = 0;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":156
+ *         try:
+ *             for item in gen:
+ *                 asyncio.run_coroutine_threadsafe(queue.put(item), loop).result()             # <<<<<<<<<<<<<<
+ *         finally:
+ *             asyncio.run_coroutine_threadsafe(queue.put(EOF), loop).result()
+ */
+      __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_asyncio); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 156, __pyx_L4_error)
+      __Pyx_GOTREF(__pyx_t_6);
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_run_coroutine_threadsafe); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 156, __pyx_L4_error)
+      __Pyx_GOTREF(__pyx_t_7);
+      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+      if (unlikely(!__pyx_cur_scope->__pyx_v_queue)) { __Pyx_RaiseClosureNameError("queue"); __PYX_ERR(6, 156, __pyx_L4_error) }
+      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_queue, __pyx_n_s_put); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 156, __pyx_L4_error)
+      __Pyx_GOTREF(__pyx_t_8);
+      __pyx_t_9 = NULL;
+      __pyx_t_10 = 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_10 = 1;
+        }
+      }
+      #endif
+      {
+        PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_v_item};
+        __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_10, 1+__pyx_t_10);
+        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+        if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 156, __pyx_L4_error)
+        __Pyx_GOTREF(__pyx_t_6);
+        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+      }
+      if (unlikely(!__pyx_cur_scope->__pyx_v_loop)) { __Pyx_RaiseClosureNameError("loop"); __PYX_ERR(6, 156, __pyx_L4_error) }
+      __pyx_t_8 = NULL;
+      __pyx_t_10 = 0;
+      #if CYTHON_UNPACK_METHODS
+      if (unlikely(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_10 = 1;
+        }
+      }
+      #endif
+      {
+        PyObject *__pyx_callargs[3] = {__pyx_t_8, __pyx_t_6, __pyx_cur_scope->__pyx_v_loop};
+        __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_10, 2+__pyx_t_10);
+        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+        if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 156, __pyx_L4_error)
+        __Pyx_GOTREF(__pyx_t_5);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+      }
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_result); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 156, __pyx_L4_error)
+      __Pyx_GOTREF(__pyx_t_7);
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      __pyx_t_5 = NULL;
+      __pyx_t_10 = 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_10 = 1;
+        }
+      }
+      #endif
+      {
+        PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
+        __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_10, 0+__pyx_t_10);
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 156, __pyx_L4_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/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":155
+ *     def yield_to_queue():
+ *         try:
+ *             for item in gen:             # <<<<<<<<<<<<<<
+ *                 asyncio.run_coroutine_threadsafe(queue.put(item), loop).result()
+ *         finally:
+ */
+    }
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":158
+ *                 asyncio.run_coroutine_threadsafe(queue.put(item), loop).result()
+ *         finally:
+ *             asyncio.run_coroutine_threadsafe(queue.put(EOF), loop).result()             # <<<<<<<<<<<<<<
+ * 
+ *     future = loop.run_in_executor(
+ */
+  /*finally:*/ {
+    /*normal exit:*/{
+      __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_asyncio); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 158, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_7);
+      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_run_coroutine_threadsafe); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 158, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_5);
+      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+      if (unlikely(!__pyx_cur_scope->__pyx_v_queue)) { __Pyx_RaiseClosureNameError("queue"); __PYX_ERR(6, 158, __pyx_L1_error) }
+      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_queue, __pyx_n_s_put); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 158, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_6);
+      __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_EOF); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 158, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_8);
+      __pyx_t_9 = NULL;
+      __pyx_t_10 = 0;
+      #if CYTHON_UNPACK_METHODS
+      if (likely(PyMethod_Check(__pyx_t_6))) {
+        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_6);
+        if (likely(__pyx_t_9)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+          __Pyx_INCREF(__pyx_t_9);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_6, function);
+          __pyx_t_10 = 1;
+        }
+      }
+      #endif
+      {
+        PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_t_8};
+        __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_10, 1+__pyx_t_10);
+        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+        if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 158, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+      }
+      if (unlikely(!__pyx_cur_scope->__pyx_v_loop)) { __Pyx_RaiseClosureNameError("loop"); __PYX_ERR(6, 158, __pyx_L1_error) }
+      __pyx_t_6 = NULL;
+      __pyx_t_10 = 0;
+      #if CYTHON_UNPACK_METHODS
+      if (unlikely(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_10 = 1;
+        }
+      }
+      #endif
+      {
+        PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_t_7, __pyx_cur_scope->__pyx_v_loop};
+        __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_10, 2+__pyx_t_10);
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 158, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_4);
+        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      }
+      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_result); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 158, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_5);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __pyx_t_4 = NULL;
+      __pyx_t_10 = 0;
+      #if CYTHON_UNPACK_METHODS
+      if (likely(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_10 = 1;
+        }
+      }
+      #endif
+      {
+        PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
+        __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_10, 0+__pyx_t_10);
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 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;
+      goto __pyx_L5;
+    }
+    __pyx_L4_error:;
+    /*exception exit:*/{
+      __Pyx_PyThreadState_declare
+      __Pyx_PyThreadState_assign
+      __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0;
+      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
+      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16) < 0)) __Pyx_ErrFetch(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16);
+      __Pyx_XGOTREF(__pyx_t_14);
+      __Pyx_XGOTREF(__pyx_t_15);
+      __Pyx_XGOTREF(__pyx_t_16);
+      __Pyx_XGOTREF(__pyx_t_17);
+      __Pyx_XGOTREF(__pyx_t_18);
+      __Pyx_XGOTREF(__pyx_t_19);
+      __pyx_t_11 = __pyx_lineno; __pyx_t_12 = __pyx_clineno; __pyx_t_13 = __pyx_filename;
+      {
+        __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_asyncio); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 158, __pyx_L10_error)
+        __Pyx_GOTREF(__pyx_t_4);
+        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_run_coroutine_threadsafe); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 158, __pyx_L10_error)
+        __Pyx_GOTREF(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+        if (unlikely(!__pyx_cur_scope->__pyx_v_queue)) { __Pyx_RaiseClosureNameError("queue"); __PYX_ERR(6, 158, __pyx_L10_error) }
+        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_queue, __pyx_n_s_put); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 158, __pyx_L10_error)
+        __Pyx_GOTREF(__pyx_t_6);
+        __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_EOF); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 158, __pyx_L10_error)
+        __Pyx_GOTREF(__pyx_t_8);
+        __pyx_t_9 = NULL;
+        __pyx_t_10 = 0;
+        #if CYTHON_UNPACK_METHODS
+        if (likely(PyMethod_Check(__pyx_t_6))) {
+          __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_6);
+          if (likely(__pyx_t_9)) {
+            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+            __Pyx_INCREF(__pyx_t_9);
+            __Pyx_INCREF(function);
+            __Pyx_DECREF_SET(__pyx_t_6, function);
+            __pyx_t_10 = 1;
+          }
+        }
+        #endif
+        {
+          PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_t_8};
+          __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_10, 1+__pyx_t_10);
+          __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+          if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 158, __pyx_L10_error)
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+        }
+        if (unlikely(!__pyx_cur_scope->__pyx_v_loop)) { __Pyx_RaiseClosureNameError("loop"); __PYX_ERR(6, 158, __pyx_L10_error) }
+        __pyx_t_6 = NULL;
+        __pyx_t_10 = 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_10 = 1;
+          }
+        }
+        #endif
+        {
+          PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_t_4, __pyx_cur_scope->__pyx_v_loop};
+          __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_10, 2+__pyx_t_10);
+          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 158, __pyx_L10_error)
+          __Pyx_GOTREF(__pyx_t_5);
+          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        }
+        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_result); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 158, __pyx_L10_error)
+        __Pyx_GOTREF(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __pyx_t_5 = NULL;
+        __pyx_t_10 = 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_10 = 1;
+          }
+        }
+        #endif
+        {
+          PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
+          __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_10, 0+__pyx_t_10);
+          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+          if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 158, __pyx_L10_error)
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        }
+        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      }
+      if (PY_MAJOR_VERSION >= 3) {
+        __Pyx_XGIVEREF(__pyx_t_17);
+        __Pyx_XGIVEREF(__pyx_t_18);
+        __Pyx_XGIVEREF(__pyx_t_19);
+        __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19);
+      }
+      __Pyx_XGIVEREF(__pyx_t_14);
+      __Pyx_XGIVEREF(__pyx_t_15);
+      __Pyx_XGIVEREF(__pyx_t_16);
+      __Pyx_ErrRestore(__pyx_t_14, __pyx_t_15, __pyx_t_16);
+      __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0;
+      __pyx_lineno = __pyx_t_11; __pyx_clineno = __pyx_t_12; __pyx_filename = __pyx_t_13;
+      goto __pyx_L1_error;
+      __pyx_L10_error:;
+      if (PY_MAJOR_VERSION >= 3) {
+        __Pyx_XGIVEREF(__pyx_t_17);
+        __Pyx_XGIVEREF(__pyx_t_18);
+        __Pyx_XGIVEREF(__pyx_t_19);
+        __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19);
+      }
+      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
+      __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
+      __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
+      __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0;
+      goto __pyx_L1_error;
+    }
+    __pyx_L5:;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":153
+ *     queue = asyncio.Queue(maxsize=1)
+ * 
+ *     def yield_to_queue():             # <<<<<<<<<<<<<<
+ *         try:
+ *             for item in gen:
+ */
+
+  /* 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_6);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_AddTraceback("_cython.cygrpc.generator_to_async_generator.yield_to_queue", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_item);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":141
+ * 
+ * 
+ * async def generator_to_async_generator(object gen, object loop, object thread_pool):             # <<<<<<<<<<<<<<
+ *     """Converts a generator into async generator.
+ * 
+ */
+
+static PyObject *__pyx_gb_7_cython_6cygrpc_117generator1(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
+{
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator *__pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator *)__pyx_generator->closure);
+  PyObject *__pyx_r = NULL;
+  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_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("generator_to_async_generator", 0);
+  switch (__pyx_generator->resume_label) {
+    case 0: goto __pyx_L3_first_run;
+    case 1: goto __pyx_L6_resume_from_await;
+    case 2: goto __pyx_L8_resume_from_yield;
+    case 3: goto __pyx_L9_resume_from_await;
+    default: /* CPython raises the right error here */
+    __Pyx_RefNannyFinishContext();
+    return NULL;
+  }
+  __pyx_L3_first_run:;
+  if (unlikely(!__pyx_sent_value)) __PYX_ERR(6, 141, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":151
+ *             raised into a Future
+ *     """
+ *     queue = asyncio.Queue(maxsize=1)             # <<<<<<<<<<<<<<
+ * 
+ *     def yield_to_queue():
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_asyncio); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 151, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_Queue); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 151, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 151, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_maxsize, __pyx_int_1) < 0) __PYX_ERR(6, 151, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 151, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_GIVEREF(__pyx_t_3);
+  __pyx_cur_scope->__pyx_v_queue = __pyx_t_3;
+  __pyx_t_3 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":153
+ *     queue = asyncio.Queue(maxsize=1)
+ * 
+ *     def yield_to_queue():             # <<<<<<<<<<<<<<
+ *         try:
+ *             for item in gen:
+ */
+  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_28generator_to_async_generator_1yield_to_queue, 0, __pyx_n_s_generator_to_async_generator_loc, ((PyObject*)__pyx_cur_scope), __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__47)); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 153, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_3);
+  __pyx_cur_scope->__pyx_v_yield_to_queue = __pyx_t_3;
+  __pyx_t_3 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":160
+ *             asyncio.run_coroutine_threadsafe(queue.put(EOF), loop).result()
+ * 
+ *     future = loop.run_in_executor(             # <<<<<<<<<<<<<<
+ *         thread_pool,
+ *         yield_to_queue,
+ */
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_loop, __pyx_n_s_run_in_executor); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 160, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":162
+ *     future = loop.run_in_executor(
+ *         thread_pool,
+ *         yield_to_queue,             # <<<<<<<<<<<<<<
+ *     )
+ * 
+ */
+  __pyx_t_2 = NULL;
+  __pyx_t_4 = 0;
+  #if CYTHON_UNPACK_METHODS
+  if (likely(PyMethod_Check(__pyx_t_1))) {
+    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
+    if (likely(__pyx_t_2)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+      __Pyx_INCREF(__pyx_t_2);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_1, function);
+      __pyx_t_4 = 1;
+    }
+  }
+  #endif
+  {
+    PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_cur_scope->__pyx_v_thread_pool, __pyx_cur_scope->__pyx_v_yield_to_queue};
+    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 2+__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+    if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 160, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  }
+  __Pyx_GIVEREF(__pyx_t_3);
+  __pyx_cur_scope->__pyx_v_future = __pyx_t_3;
+  __pyx_t_3 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":165
+ *     )
+ * 
+ *     while True:             # <<<<<<<<<<<<<<
+ *         response = await queue.get()
+ *         if response is EOF:
+ */
+  while (1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":166
+ * 
+ *     while True:
+ *         response = await queue.get()             # <<<<<<<<<<<<<<
+ *         if response is EOF:
+ *             break
+ */
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_queue, __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 166, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = NULL;
+    __pyx_t_4 = 0;
+    #if CYTHON_UNPACK_METHODS
+    if (likely(PyMethod_Check(__pyx_t_1))) {
+      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
+      if (likely(__pyx_t_2)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+        __Pyx_INCREF(__pyx_t_2);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_1, function);
+        __pyx_t_4 = 1;
+      }
+    }
+    #endif
+    {
+      PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
+      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
+      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+      if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 166, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    }
+    __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_3);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_XGOTREF(__pyx_r);
+    if (likely(__pyx_r)) {
+      __Pyx_XGIVEREF(__pyx_r);
+      __Pyx_RefNannyFinishContext();
+      __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+      /* return from async generator, awaiting value */
+      __pyx_generator->resume_label = 1;
+      return __pyx_r;
+      __pyx_L6_resume_from_await:;
+      if (unlikely(!__pyx_sent_value)) __PYX_ERR(6, 166, __pyx_L1_error)
+      __pyx_t_3 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_3);
+    } else {
+      __pyx_t_3 = NULL;
+      if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_3) < 0) __PYX_ERR(6, 166, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
+    }
+    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_response);
+    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_response, __pyx_t_3);
+    __Pyx_GIVEREF(__pyx_t_3);
+    __pyx_t_3 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":167
+ *     while True:
+ *         response = await queue.get()
+ *         if response is EOF:             # <<<<<<<<<<<<<<
+ *             break
+ *         else:
+ */
+    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_EOF); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 167, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_5 = (__pyx_cur_scope->__pyx_v_response == __pyx_t_3);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (__pyx_t_5) {
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":168
+ *         response = await queue.get()
+ *         if response is EOF:
+ *             break             # <<<<<<<<<<<<<<
+ *         else:
+ *             yield response
+ */
+      goto __pyx_L5_break;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":167
+ *     while True:
+ *         response = await queue.get()
+ *         if response is EOF:             # <<<<<<<<<<<<<<
+ *             break
+ *         else:
+ */
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":170
+ *             break
+ *         else:
+ *             yield response             # <<<<<<<<<<<<<<
+ * 
+ *     # Port the exception if there is any
+ */
+    /*else*/ {
+      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_response);
+      __pyx_r = __pyx_cur_scope->__pyx_v_response;
+      __Pyx_XGIVEREF(__pyx_r);
+      __Pyx_RefNannyFinishContext();
+      __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+      /* return from async generator, yielding value */
+      __pyx_generator->resume_label = 2;
+      return __Pyx__PyAsyncGenValueWrapperNew(__pyx_r);
+      __pyx_L8_resume_from_yield:;
+      if (unlikely(!__pyx_sent_value)) __PYX_ERR(6, 170, __pyx_L1_error)
+    }
+  }
+  __pyx_L5_break:;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":173
+ * 
+ *     # Port the exception if there is any
+ *     await future             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_cur_scope->__pyx_v_future);
+  __Pyx_XGOTREF(__pyx_r);
+  if (likely(__pyx_r)) {
+    __Pyx_XGIVEREF(__pyx_r);
+    __Pyx_RefNannyFinishContext();
+    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+    /* return from async generator, awaiting value */
+    __pyx_generator->resume_label = 3;
+    return __pyx_r;
+    __pyx_L9_resume_from_await:;
+    if (unlikely(!__pyx_sent_value)) __PYX_ERR(6, 173, __pyx_L1_error)
+  } else {
+    PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType();
+    if (exc_type) {
+      if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
+      else __PYX_ERR(6, 173, __pyx_L1_error)
+    }
+  }
+  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":141
+ * 
+ * 
+ * async def generator_to_async_generator(object gen, object loop, object thread_pool):             # <<<<<<<<<<<<<<
+ *     """Converts a generator into async generator.
+ * 
+ */
+
+  /* function exit code */
+  PyErr_SetNone(__Pyx_PyExc_StopAsyncIteration);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_Generator_Replace_StopIteration(1);
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("generator_to_async_generator", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
+  #if !CYTHON_USE_EXC_INFO_STACK
+  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+  #endif
+  __pyx_generator->resume_label = -1;
+  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":177
+ * 
+ * if PY_MAJOR_VERSION >= 3 and PY_MINOR_VERSION >= 7:
+ *     def get_working_loop():             # <<<<<<<<<<<<<<
+ *         """Returns a running event loop.
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_119get_working_loop(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+PyDoc_STRVAR(__pyx_doc_7_cython_6cygrpc_118get_working_loop, "Returns a running event loop.\n\n        Due to a defect of asyncio.get_event_loop, its returned event loop might\n        not be set as the default event loop for the main thread.\n        ");
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_119get_working_loop = {"get_working_loop", (PyCFunction)__pyx_pw_7_cython_6cygrpc_119get_working_loop, METH_NOARGS, __pyx_doc_7_cython_6cygrpc_118get_working_loop};
+static PyObject *__pyx_pw_7_cython_6cygrpc_119get_working_loop(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_working_loop (wrapper)", 0);
+  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_118get_working_loop(__pyx_self);
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_118get_working_loop(CYTHON_UNUSED PyObject *__pyx_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;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  unsigned int __pyx_t_7;
+  int __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;
+  PyObject *__pyx_t_14 = NULL;
+  PyObject *__pyx_t_15 = NULL;
+  PyObject *__pyx_t_16 = NULL;
+  PyObject *__pyx_t_17 = NULL;
+  PyObject *__pyx_t_18 = NULL;
+  PyObject *__pyx_t_19 = NULL;
+  PyObject *__pyx_t_20 = NULL;
+  PyObject *__pyx_t_21 = NULL;
+  PyObject *__pyx_t_22 = NULL;
+  int __pyx_t_23;
+  int __pyx_t_24;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_working_loop", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":183
+ *         not be set as the default event loop for the main thread.
+ *         """
+ *         try:             # <<<<<<<<<<<<<<
+ *             return asyncio.get_running_loop()
+ *         except RuntimeError:
+ */
+  {
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
+    __Pyx_XGOTREF(__pyx_t_1);
+    __Pyx_XGOTREF(__pyx_t_2);
+    __Pyx_XGOTREF(__pyx_t_3);
+    /*try:*/ {
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":184
+ *         """
+ *         try:
+ *             return asyncio.get_running_loop()             # <<<<<<<<<<<<<<
+ *         except RuntimeError:
+ *             with warnings.catch_warnings():
+ */
+      __Pyx_XDECREF(__pyx_r);
+      __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_asyncio); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 184, __pyx_L3_error)
+      __Pyx_GOTREF(__pyx_t_5);
+      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_get_running_loop); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 184, __pyx_L3_error)
+      __Pyx_GOTREF(__pyx_t_6);
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      __pyx_t_5 = NULL;
+      __pyx_t_7 = 0;
+      #if CYTHON_UNPACK_METHODS
+      if (unlikely(PyMethod_Check(__pyx_t_6))) {
+        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
+        if (likely(__pyx_t_5)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+          __Pyx_INCREF(__pyx_t_5);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_6, function);
+          __pyx_t_7 = 1;
+        }
+      }
+      #endif
+      {
+        PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
+        __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 184, __pyx_L3_error)
+        __Pyx_GOTREF(__pyx_t_4);
+        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+      }
+      __pyx_r = __pyx_t_4;
+      __pyx_t_4 = 0;
+      goto __pyx_L7_try_return;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":183
+ *         not be set as the default event loop for the main thread.
+ *         """
+ *         try:             # <<<<<<<<<<<<<<
+ *             return asyncio.get_running_loop()
+ *         except RuntimeError:
+ */
+    }
+    __pyx_L3_error:;
+    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":185
+ *         try:
+ *             return asyncio.get_running_loop()
+ *         except RuntimeError:             # <<<<<<<<<<<<<<
+ *             with warnings.catch_warnings():
+ *                 # Convert DeprecationWarning to errors so we can capture them with except
+ */
+    __pyx_t_8 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_RuntimeError);
+    if (__pyx_t_8) {
+      __Pyx_AddTraceback("_cython.cygrpc.get_working_loop", __pyx_clineno, __pyx_lineno, __pyx_filename);
+      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_6, &__pyx_t_5) < 0) __PYX_ERR(6, 185, __pyx_L5_except_error)
+      __Pyx_XGOTREF(__pyx_t_4);
+      __Pyx_XGOTREF(__pyx_t_6);
+      __Pyx_XGOTREF(__pyx_t_5);
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":186
+ *             return asyncio.get_running_loop()
+ *         except RuntimeError:
+ *             with warnings.catch_warnings():             # <<<<<<<<<<<<<<
+ *                 # Convert DeprecationWarning to errors so we can capture them with except
+ *                 warnings.simplefilter("error", DeprecationWarning)
+ */
+      /*with:*/ {
+        __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_warnings); if (unlikely(!__pyx_t_10)) __PYX_ERR(6, 186, __pyx_L5_except_error)
+        __Pyx_GOTREF(__pyx_t_10);
+        __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_catch_warnings); if (unlikely(!__pyx_t_11)) __PYX_ERR(6, 186, __pyx_L5_except_error)
+        __Pyx_GOTREF(__pyx_t_11);
+        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+        __pyx_t_10 = NULL;
+        __pyx_t_7 = 0;
+        #if CYTHON_UNPACK_METHODS
+        if (unlikely(PyMethod_Check(__pyx_t_11))) {
+          __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_11);
+          if (likely(__pyx_t_10)) {
+            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
+            __Pyx_INCREF(__pyx_t_10);
+            __Pyx_INCREF(function);
+            __Pyx_DECREF_SET(__pyx_t_11, function);
+            __pyx_t_7 = 1;
+          }
+        }
+        #endif
+        {
+          PyObject *__pyx_callargs[2] = {__pyx_t_10, NULL};
+          __pyx_t_9 = __Pyx_PyObject_FastCall(__pyx_t_11, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
+          __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+          if (unlikely(!__pyx_t_9)) __PYX_ERR(6, 186, __pyx_L5_except_error)
+          __Pyx_GOTREF(__pyx_t_9);
+          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+        }
+        __pyx_t_12 = __Pyx_PyObject_LookupSpecial(__pyx_t_9, __pyx_n_s_exit); if (unlikely(!__pyx_t_12)) __PYX_ERR(6, 186, __pyx_L5_except_error)
+        __Pyx_GOTREF(__pyx_t_12);
+        __pyx_t_10 = __Pyx_PyObject_LookupSpecial(__pyx_t_9, __pyx_n_s_enter); if (unlikely(!__pyx_t_10)) __PYX_ERR(6, 186, __pyx_L11_error)
+        __Pyx_GOTREF(__pyx_t_10);
+        __pyx_t_13 = NULL;
+        __pyx_t_7 = 0;
+        #if CYTHON_UNPACK_METHODS
+        if (likely(PyMethod_Check(__pyx_t_10))) {
+          __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_10);
+          if (likely(__pyx_t_13)) {
+            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
+            __Pyx_INCREF(__pyx_t_13);
+            __Pyx_INCREF(function);
+            __Pyx_DECREF_SET(__pyx_t_10, function);
+            __pyx_t_7 = 1;
+          }
+        }
+        #endif
+        {
+          PyObject *__pyx_callargs[2] = {__pyx_t_13, NULL};
+          __pyx_t_11 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
+          __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
+          if (unlikely(!__pyx_t_11)) __PYX_ERR(6, 186, __pyx_L11_error)
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+        }
+        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+        /*try:*/ {
+          {
+            __Pyx_PyThreadState_declare
+            __Pyx_PyThreadState_assign
+            __Pyx_ExceptionSave(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16);
+            __Pyx_XGOTREF(__pyx_t_14);
+            __Pyx_XGOTREF(__pyx_t_15);
+            __Pyx_XGOTREF(__pyx_t_16);
+            /*try:*/ {
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":188
+ *             with warnings.catch_warnings():
+ *                 # Convert DeprecationWarning to errors so we can capture them with except
+ *                 warnings.simplefilter("error", DeprecationWarning)             # <<<<<<<<<<<<<<
+ *                 try:
+ *                     return asyncio.get_event_loop_policy().get_event_loop()
+ */
+              __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_warnings); if (unlikely(!__pyx_t_9)) __PYX_ERR(6, 188, __pyx_L17_error)
+              __Pyx_GOTREF(__pyx_t_9);
+              __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_simplefilter); if (unlikely(!__pyx_t_11)) __PYX_ERR(6, 188, __pyx_L17_error)
+              __Pyx_GOTREF(__pyx_t_11);
+              __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+              __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_tuple__48, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(6, 188, __pyx_L17_error)
+              __Pyx_GOTREF(__pyx_t_9);
+              __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+              __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":189
+ *                 # Convert DeprecationWarning to errors so we can capture them with except
+ *                 warnings.simplefilter("error", DeprecationWarning)
+ *                 try:             # <<<<<<<<<<<<<<
+ *                     return asyncio.get_event_loop_policy().get_event_loop()
+ *                 # Since version 3.12, DeprecationWarning is emitted if there is no
+ */
+              {
+                __Pyx_PyThreadState_declare
+                __Pyx_PyThreadState_assign
+                __Pyx_ExceptionSave(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
+                __Pyx_XGOTREF(__pyx_t_17);
+                __Pyx_XGOTREF(__pyx_t_18);
+                __Pyx_XGOTREF(__pyx_t_19);
+                /*try:*/ {
+
+                  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":190
+ *                 warnings.simplefilter("error", DeprecationWarning)
+ *                 try:
+ *                     return asyncio.get_event_loop_policy().get_event_loop()             # <<<<<<<<<<<<<<
+ *                 # Since version 3.12, DeprecationWarning is emitted if there is no
+ *                 # current event loop.
+ */
+                  __Pyx_XDECREF(__pyx_r);
+                  __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_asyncio); if (unlikely(!__pyx_t_10)) __PYX_ERR(6, 190, __pyx_L25_error)
+                  __Pyx_GOTREF(__pyx_t_10);
+                  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_get_event_loop_policy); if (unlikely(!__pyx_t_13)) __PYX_ERR(6, 190, __pyx_L25_error)
+                  __Pyx_GOTREF(__pyx_t_13);
+                  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+                  __pyx_t_10 = NULL;
+                  __pyx_t_7 = 0;
+                  #if CYTHON_UNPACK_METHODS
+                  if (unlikely(PyMethod_Check(__pyx_t_13))) {
+                    __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_13);
+                    if (likely(__pyx_t_10)) {
+                      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
+                      __Pyx_INCREF(__pyx_t_10);
+                      __Pyx_INCREF(function);
+                      __Pyx_DECREF_SET(__pyx_t_13, function);
+                      __pyx_t_7 = 1;
+                    }
+                  }
+                  #endif
+                  {
+                    PyObject *__pyx_callargs[2] = {__pyx_t_10, NULL};
+                    __pyx_t_11 = __Pyx_PyObject_FastCall(__pyx_t_13, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
+                    __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+                    if (unlikely(!__pyx_t_11)) __PYX_ERR(6, 190, __pyx_L25_error)
+                    __Pyx_GOTREF(__pyx_t_11);
+                    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+                  }
+                  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_get_event_loop); if (unlikely(!__pyx_t_13)) __PYX_ERR(6, 190, __pyx_L25_error)
+                  __Pyx_GOTREF(__pyx_t_13);
+                  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+                  __pyx_t_11 = NULL;
+                  __pyx_t_7 = 0;
+                  #if CYTHON_UNPACK_METHODS
+                  if (likely(PyMethod_Check(__pyx_t_13))) {
+                    __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_13);
+                    if (likely(__pyx_t_11)) {
+                      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
+                      __Pyx_INCREF(__pyx_t_11);
+                      __Pyx_INCREF(function);
+                      __Pyx_DECREF_SET(__pyx_t_13, function);
+                      __pyx_t_7 = 1;
+                    }
+                  }
+                  #endif
+                  {
+                    PyObject *__pyx_callargs[2] = {__pyx_t_11, NULL};
+                    __pyx_t_9 = __Pyx_PyObject_FastCall(__pyx_t_13, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
+                    __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
+                    if (unlikely(!__pyx_t_9)) __PYX_ERR(6, 190, __pyx_L25_error)
+                    __Pyx_GOTREF(__pyx_t_9);
+                    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+                  }
+                  __pyx_r = __pyx_t_9;
+                  __pyx_t_9 = 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;
+                  goto __pyx_L29_try_return;
+
+                  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":189
+ *                 # Convert DeprecationWarning to errors so we can capture them with except
+ *                 warnings.simplefilter("error", DeprecationWarning)
+ *                 try:             # <<<<<<<<<<<<<<
+ *                     return asyncio.get_event_loop_policy().get_event_loop()
+ *                 # Since version 3.12, DeprecationWarning is emitted if there is no
+ */
+                }
+                __pyx_L25_error:;
+                __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+                __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
+                __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
+                __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+
+                /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":193
+ *                 # Since version 3.12, DeprecationWarning is emitted if there is no
+ *                 # current event loop.
+ *                 except DeprecationWarning:             # <<<<<<<<<<<<<<
+ *                     return asyncio.get_event_loop_policy().new_event_loop()
+ * else:
+ */
+                __pyx_t_8 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_DeprecationWarning);
+                if (__pyx_t_8) {
+                  __Pyx_AddTraceback("_cython.cygrpc.get_working_loop", __pyx_clineno, __pyx_lineno, __pyx_filename);
+                  if (__Pyx_GetException(&__pyx_t_9, &__pyx_t_13, &__pyx_t_11) < 0) __PYX_ERR(6, 193, __pyx_L27_except_error)
+                  __Pyx_XGOTREF(__pyx_t_9);
+                  __Pyx_XGOTREF(__pyx_t_13);
+                  __Pyx_XGOTREF(__pyx_t_11);
+
+                  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":194
+ *                 # current event loop.
+ *                 except DeprecationWarning:
+ *                     return asyncio.get_event_loop_policy().new_event_loop()             # <<<<<<<<<<<<<<
+ * else:
+ *     def get_working_loop():
+ */
+                  __Pyx_XDECREF(__pyx_r);
+                  __Pyx_GetModuleGlobalName(__pyx_t_21, __pyx_n_s_asyncio); if (unlikely(!__pyx_t_21)) __PYX_ERR(6, 194, __pyx_L27_except_error)
+                  __Pyx_GOTREF(__pyx_t_21);
+                  __pyx_t_22 = __Pyx_PyObject_GetAttrStr(__pyx_t_21, __pyx_n_s_get_event_loop_policy); if (unlikely(!__pyx_t_22)) __PYX_ERR(6, 194, __pyx_L27_except_error)
+                  __Pyx_GOTREF(__pyx_t_22);
+                  __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
+                  __pyx_t_21 = NULL;
+                  __pyx_t_7 = 0;
+                  #if CYTHON_UNPACK_METHODS
+                  if (unlikely(PyMethod_Check(__pyx_t_22))) {
+                    __pyx_t_21 = PyMethod_GET_SELF(__pyx_t_22);
+                    if (likely(__pyx_t_21)) {
+                      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_22);
+                      __Pyx_INCREF(__pyx_t_21);
+                      __Pyx_INCREF(function);
+                      __Pyx_DECREF_SET(__pyx_t_22, function);
+                      __pyx_t_7 = 1;
+                    }
+                  }
+                  #endif
+                  {
+                    PyObject *__pyx_callargs[2] = {__pyx_t_21, NULL};
+                    __pyx_t_20 = __Pyx_PyObject_FastCall(__pyx_t_22, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
+                    __Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0;
+                    if (unlikely(!__pyx_t_20)) __PYX_ERR(6, 194, __pyx_L27_except_error)
+                    __Pyx_GOTREF(__pyx_t_20);
+                    __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0;
+                  }
+                  __pyx_t_22 = __Pyx_PyObject_GetAttrStr(__pyx_t_20, __pyx_n_s_new_event_loop); if (unlikely(!__pyx_t_22)) __PYX_ERR(6, 194, __pyx_L27_except_error)
+                  __Pyx_GOTREF(__pyx_t_22);
+                  __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
+                  __pyx_t_20 = NULL;
+                  __pyx_t_7 = 0;
+                  #if CYTHON_UNPACK_METHODS
+                  if (likely(PyMethod_Check(__pyx_t_22))) {
+                    __pyx_t_20 = PyMethod_GET_SELF(__pyx_t_22);
+                    if (likely(__pyx_t_20)) {
+                      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_22);
+                      __Pyx_INCREF(__pyx_t_20);
+                      __Pyx_INCREF(function);
+                      __Pyx_DECREF_SET(__pyx_t_22, function);
+                      __pyx_t_7 = 1;
+                    }
+                  }
+                  #endif
+                  {
+                    PyObject *__pyx_callargs[2] = {__pyx_t_20, NULL};
+                    __pyx_t_10 = __Pyx_PyObject_FastCall(__pyx_t_22, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
+                    __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0;
+                    if (unlikely(!__pyx_t_10)) __PYX_ERR(6, 194, __pyx_L27_except_error)
+                    __Pyx_GOTREF(__pyx_t_10);
+                    __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0;
+                  }
+                  __pyx_r = __pyx_t_10;
+                  __pyx_t_10 = 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;
+                  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+                  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+                  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+                  goto __pyx_L28_except_return;
+                }
+                goto __pyx_L27_except_error;
+
+                /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":189
+ *                 # Convert DeprecationWarning to errors so we can capture them with except
+ *                 warnings.simplefilter("error", DeprecationWarning)
+ *                 try:             # <<<<<<<<<<<<<<
+ *                     return asyncio.get_event_loop_policy().get_event_loop()
+ *                 # Since version 3.12, DeprecationWarning is emitted if there is no
+ */
+                __pyx_L27_except_error:;
+                __Pyx_XGIVEREF(__pyx_t_17);
+                __Pyx_XGIVEREF(__pyx_t_18);
+                __Pyx_XGIVEREF(__pyx_t_19);
+                __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19);
+                goto __pyx_L17_error;
+                __pyx_L29_try_return:;
+                __Pyx_XGIVEREF(__pyx_t_17);
+                __Pyx_XGIVEREF(__pyx_t_18);
+                __Pyx_XGIVEREF(__pyx_t_19);
+                __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19);
+                goto __pyx_L21_try_return;
+                __pyx_L28_except_return:;
+                __Pyx_XGIVEREF(__pyx_t_17);
+                __Pyx_XGIVEREF(__pyx_t_18);
+                __Pyx_XGIVEREF(__pyx_t_19);
+                __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19);
+                goto __pyx_L21_try_return;
+              }
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":186
+ *             return asyncio.get_running_loop()
+ *         except RuntimeError:
+ *             with warnings.catch_warnings():             # <<<<<<<<<<<<<<
+ *                 # Convert DeprecationWarning to errors so we can capture them with except
+ *                 warnings.simplefilter("error", DeprecationWarning)
+ */
+            }
+            __pyx_L17_error:;
+            __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
+            __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
+            __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0;
+            __Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0;
+            __Pyx_XDECREF(__pyx_t_22); __pyx_t_22 = 0;
+            __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+            /*except:*/ {
+              __Pyx_AddTraceback("_cython.cygrpc.get_working_loop", __pyx_clineno, __pyx_lineno, __pyx_filename);
+              if (__Pyx_GetException(&__pyx_t_11, &__pyx_t_13, &__pyx_t_9) < 0) __PYX_ERR(6, 186, __pyx_L19_except_error)
+              __Pyx_XGOTREF(__pyx_t_11);
+              __Pyx_XGOTREF(__pyx_t_13);
+              __Pyx_XGOTREF(__pyx_t_9);
+              __pyx_t_10 = PyTuple_Pack(3, __pyx_t_11, __pyx_t_13, __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(6, 186, __pyx_L19_except_error)
+              __Pyx_GOTREF(__pyx_t_10);
+              __pyx_t_19 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_10, NULL);
+              __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+              __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+              if (unlikely(!__pyx_t_19)) __PYX_ERR(6, 186, __pyx_L19_except_error)
+              __Pyx_GOTREF(__pyx_t_19);
+              __pyx_t_23 = __Pyx_PyObject_IsTrue(__pyx_t_19);
+              __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
+              if (__pyx_t_23 < 0) __PYX_ERR(6, 186, __pyx_L19_except_error)
+              __pyx_t_24 = (!__pyx_t_23);
+              if (unlikely(__pyx_t_24)) {
+                __Pyx_GIVEREF(__pyx_t_11);
+                __Pyx_GIVEREF(__pyx_t_13);
+                __Pyx_XGIVEREF(__pyx_t_9);
+                __Pyx_ErrRestoreWithState(__pyx_t_11, __pyx_t_13, __pyx_t_9);
+                __pyx_t_11 = 0; __pyx_t_13 = 0; __pyx_t_9 = 0; 
+                __PYX_ERR(6, 186, __pyx_L19_except_error)
+              }
+              __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
+              __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
+              __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+              goto __pyx_L18_exception_handled;
+            }
+            __pyx_L19_except_error:;
+            __Pyx_XGIVEREF(__pyx_t_14);
+            __Pyx_XGIVEREF(__pyx_t_15);
+            __Pyx_XGIVEREF(__pyx_t_16);
+            __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16);
+            goto __pyx_L5_except_error;
+            __pyx_L21_try_return:;
+            __Pyx_XGIVEREF(__pyx_t_14);
+            __Pyx_XGIVEREF(__pyx_t_15);
+            __Pyx_XGIVEREF(__pyx_t_16);
+            __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16);
+            goto __pyx_L14_return;
+            __pyx_L18_exception_handled:;
+            __Pyx_XGIVEREF(__pyx_t_14);
+            __Pyx_XGIVEREF(__pyx_t_15);
+            __Pyx_XGIVEREF(__pyx_t_16);
+            __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16);
+          }
+        }
+        /*finally:*/ {
+          /*normal exit:*/{
+            if (__pyx_t_12) {
+              __pyx_t_16 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_tuple__11, NULL);
+              __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+              if (unlikely(!__pyx_t_16)) __PYX_ERR(6, 186, __pyx_L5_except_error)
+              __Pyx_GOTREF(__pyx_t_16);
+              __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
+            }
+            goto __pyx_L16;
+          }
+          __pyx_L14_return: {
+            __pyx_t_16 = __pyx_r;
+            __pyx_r = 0;
+            if (__pyx_t_12) {
+              __pyx_t_15 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_tuple__11, NULL);
+              __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+              if (unlikely(!__pyx_t_15)) __PYX_ERR(6, 186, __pyx_L5_except_error)
+              __Pyx_GOTREF(__pyx_t_15);
+              __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+            }
+            __pyx_r = __pyx_t_16;
+            __pyx_t_16 = 0;
+            goto __pyx_L6_except_return;
+          }
+          __pyx_L16:;
+        }
+        goto __pyx_L38;
+        __pyx_L11_error:;
+        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+        goto __pyx_L5_except_error;
+        __pyx_L38:;
+      }
+      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+      goto __pyx_L4_exception_handled;
+    }
+    goto __pyx_L5_except_error;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":183
+ *         not be set as the default event loop for the main thread.
+ *         """
+ *         try:             # <<<<<<<<<<<<<<
+ *             return asyncio.get_running_loop()
+ *         except RuntimeError:
+ */
+    __pyx_L5_except_error:;
+    __Pyx_XGIVEREF(__pyx_t_1);
+    __Pyx_XGIVEREF(__pyx_t_2);
+    __Pyx_XGIVEREF(__pyx_t_3);
+    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+    goto __pyx_L1_error;
+    __pyx_L7_try_return:;
+    __Pyx_XGIVEREF(__pyx_t_1);
+    __Pyx_XGIVEREF(__pyx_t_2);
+    __Pyx_XGIVEREF(__pyx_t_3);
+    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+    goto __pyx_L0;
+    __pyx_L6_except_return:;
+    __Pyx_XGIVEREF(__pyx_t_1);
+    __Pyx_XGIVEREF(__pyx_t_2);
+    __Pyx_XGIVEREF(__pyx_t_3);
+    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+    goto __pyx_L0;
+    __pyx_L4_exception_handled:;
+    __Pyx_XGIVEREF(__pyx_t_1);
+    __Pyx_XGIVEREF(__pyx_t_2);
+    __Pyx_XGIVEREF(__pyx_t_3);
+    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":177
+ * 
+ * if PY_MAJOR_VERSION >= 3 and PY_MINOR_VERSION >= 7:
+ *     def get_working_loop():             # <<<<<<<<<<<<<<
+ *         """Returns a running event loop.
+ * 
+ */
+
+  /* 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_9);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_XDECREF(__pyx_t_13);
+  __Pyx_XDECREF(__pyx_t_20);
+  __Pyx_XDECREF(__pyx_t_21);
+  __Pyx_XDECREF(__pyx_t_22);
+  __Pyx_AddTraceback("_cython.cygrpc.get_working_loop", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":196
+ *                     return asyncio.get_event_loop_policy().new_event_loop()
+ * else:
+ *     def get_working_loop():             # <<<<<<<<<<<<<<
+ *         """Returns a running event loop."""
+ *         return asyncio.get_event_loop()
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_121get_working_loop(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+PyDoc_STRVAR(__pyx_doc_7_cython_6cygrpc_120get_working_loop, "Returns a running event loop.");
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_121get_working_loop = {"get_working_loop", (PyCFunction)__pyx_pw_7_cython_6cygrpc_121get_working_loop, METH_NOARGS, __pyx_doc_7_cython_6cygrpc_120get_working_loop};
+static PyObject *__pyx_pw_7_cython_6cygrpc_121get_working_loop(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_working_loop (wrapper)", 0);
+  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_120get_working_loop(__pyx_self);
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_120get_working_loop(CYTHON_UNUSED PyObject *__pyx_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("get_working_loop", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":198
+ *     def get_working_loop():
+ *         """Returns a running event loop."""
+ *         return asyncio.get_event_loop()             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_asyncio); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 198, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_get_event_loop); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 198, __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(6, 198, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  }
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":196
+ *                     return asyncio.get_event_loop_policy().new_event_loop()
+ * else:
+ *     def get_working_loop():             # <<<<<<<<<<<<<<
+ *         """Returns a running event loop."""
+ *         return asyncio.get_event_loop()
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("_cython.cygrpc.get_working_loop", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":201
+ * 
+ * 
+ * def raise_if_not_valid_trailing_metadata(object metadata):             # <<<<<<<<<<<<<<
+ *     if not hasattr(metadata, '__iter__') or isinstance(metadata, dict):
+ *         raise TypeError(f'Invalid trailing metadata type, expected {TYPE_METADATA_STRING}: {metadata}')
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_123raise_if_not_valid_trailing_metadata(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_123raise_if_not_valid_trailing_metadata = {"raise_if_not_valid_trailing_metadata", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_123raise_if_not_valid_trailing_metadata, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_123raise_if_not_valid_trailing_metadata(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_metadata = 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("raise_if_not_valid_trailing_metadata (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_metadata,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_metadata)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 201, __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, "raise_if_not_valid_trailing_metadata") < 0)) __PYX_ERR(6, 201, __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_metadata = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("raise_if_not_valid_trailing_metadata", 1, 1, 1, __pyx_nargs); __PYX_ERR(6, 201, __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("_cython.cygrpc.raise_if_not_valid_trailing_metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_122raise_if_not_valid_trailing_metadata(__pyx_self, __pyx_v_metadata);
+
+  /* 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_7_cython_6cygrpc_122raise_if_not_valid_trailing_metadata(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_metadata) {
+  PyObject *__pyx_v_item = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  int __pyx_t_2;
+  int __pyx_t_3;
+  PyObject *__pyx_t_4 = NULL;
+  Py_ssize_t __pyx_t_5;
+  Py_UCS4 __pyx_t_6;
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
+  PyObject *(*__pyx_t_9)(PyObject *);
+  Py_ssize_t __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("raise_if_not_valid_trailing_metadata", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":202
+ * 
+ * def raise_if_not_valid_trailing_metadata(object metadata):
+ *     if not hasattr(metadata, '__iter__') or isinstance(metadata, dict):             # <<<<<<<<<<<<<<
+ *         raise TypeError(f'Invalid trailing metadata type, expected {TYPE_METADATA_STRING}: {metadata}')
+ *     for item in metadata:
+ */
+  __pyx_t_2 = __Pyx_HasAttr(__pyx_v_metadata, __pyx_n_s_iter); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(6, 202, __pyx_L1_error)
+  __pyx_t_3 = (!__pyx_t_2);
+  if (!__pyx_t_3) {
+  } else {
+    __pyx_t_1 = __pyx_t_3;
+    goto __pyx_L4_bool_binop_done;
+  }
+  __pyx_t_3 = PyDict_Check(__pyx_v_metadata); 
+  __pyx_t_1 = __pyx_t_3;
+  __pyx_L4_bool_binop_done:;
+  if (unlikely(__pyx_t_1)) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":203
+ * def raise_if_not_valid_trailing_metadata(object metadata):
+ *     if not hasattr(metadata, '__iter__') or isinstance(metadata, dict):
+ *         raise TypeError(f'Invalid trailing metadata type, expected {TYPE_METADATA_STRING}: {metadata}')             # <<<<<<<<<<<<<<
+ *     for item in metadata:
+ *         if not isinstance(item, tuple):
+ */
+    __pyx_t_4 = PyTuple_New(4); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 203, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_5 = 0;
+    __pyx_t_6 = 127;
+    __Pyx_INCREF(__pyx_kp_u_Invalid_trailing_metadata_type_e);
+    __pyx_t_5 += 41;
+    __Pyx_GIVEREF(__pyx_kp_u_Invalid_trailing_metadata_type_e);
+    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_kp_u_Invalid_trailing_metadata_type_e);
+    __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_TYPE_METADATA_STRING); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 203, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_7);
+    __pyx_t_8 = __Pyx_PyObject_FormatSimple(__pyx_t_7, __pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 203, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_8);
+    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    __pyx_t_6 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_8) > __pyx_t_6) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_8) : __pyx_t_6;
+    __pyx_t_5 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8);
+    __Pyx_GIVEREF(__pyx_t_8);
+    PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_8);
+    __pyx_t_8 = 0;
+    __Pyx_INCREF(__pyx_kp_u__49);
+    __pyx_t_5 += 2;
+    __Pyx_GIVEREF(__pyx_kp_u__49);
+    PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_kp_u__49);
+    __pyx_t_8 = __Pyx_PyObject_FormatSimple(__pyx_v_metadata, __pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 203, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_8);
+    __pyx_t_6 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_8) > __pyx_t_6) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_8) : __pyx_t_6;
+    __pyx_t_5 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8);
+    __Pyx_GIVEREF(__pyx_t_8);
+    PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_t_8);
+    __pyx_t_8 = 0;
+    __pyx_t_8 = __Pyx_PyUnicode_Join(__pyx_t_4, 4, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 203, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_8);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 203, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __PYX_ERR(6, 203, __pyx_L1_error)
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":202
+ * 
+ * def raise_if_not_valid_trailing_metadata(object metadata):
+ *     if not hasattr(metadata, '__iter__') or isinstance(metadata, dict):             # <<<<<<<<<<<<<<
+ *         raise TypeError(f'Invalid trailing metadata type, expected {TYPE_METADATA_STRING}: {metadata}')
+ *     for item in metadata:
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":204
+ *     if not hasattr(metadata, '__iter__') or isinstance(metadata, dict):
+ *         raise TypeError(f'Invalid trailing metadata type, expected {TYPE_METADATA_STRING}: {metadata}')
+ *     for item in metadata:             # <<<<<<<<<<<<<<
+ *         if not isinstance(item, tuple):
+ *             raise TypeError(f'Invalid trailing metadata type, expected {TYPE_METADATA_STRING}: {metadata}')
+ */
+  if (likely(PyList_CheckExact(__pyx_v_metadata)) || PyTuple_CheckExact(__pyx_v_metadata)) {
+    __pyx_t_4 = __pyx_v_metadata; __Pyx_INCREF(__pyx_t_4);
+    __pyx_t_5 = 0;
+    __pyx_t_9 = NULL;
+  } else {
+    __pyx_t_5 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_metadata); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 204, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(6, 204, __pyx_L1_error)
+  }
+  for (;;) {
+    if (likely(!__pyx_t_9)) {
+      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(6, 204, __pyx_L1_error)
+          #endif
+          if (__pyx_t_5 >= __pyx_temp) break;
+        }
+        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+        __pyx_t_8 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_8); __pyx_t_5++; if (unlikely((0 < 0))) __PYX_ERR(6, 204, __pyx_L1_error)
+        #else
+        __pyx_t_8 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 204, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_8);
+        #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(6, 204, __pyx_L1_error)
+          #endif
+          if (__pyx_t_5 >= __pyx_temp) break;
+        }
+        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+        __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_8); __pyx_t_5++; if (unlikely((0 < 0))) __PYX_ERR(6, 204, __pyx_L1_error)
+        #else
+        __pyx_t_8 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 204, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_8);
+        #endif
+      }
+    } else {
+      __pyx_t_8 = __pyx_t_9(__pyx_t_4);
+      if (unlikely(!__pyx_t_8)) {
+        PyObject* exc_type = PyErr_Occurred();
+        if (exc_type) {
+          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
+          else __PYX_ERR(6, 204, __pyx_L1_error)
+        }
+        break;
+      }
+      __Pyx_GOTREF(__pyx_t_8);
+    }
+    __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_8);
+    __pyx_t_8 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":205
+ *         raise TypeError(f'Invalid trailing metadata type, expected {TYPE_METADATA_STRING}: {metadata}')
+ *     for item in metadata:
+ *         if not isinstance(item, tuple):             # <<<<<<<<<<<<<<
+ *             raise TypeError(f'Invalid trailing metadata type, expected {TYPE_METADATA_STRING}: {metadata}')
+ *         if len(item) != 2:
+ */
+    __pyx_t_1 = PyTuple_Check(__pyx_v_item); 
+    __pyx_t_3 = (!__pyx_t_1);
+    if (unlikely(__pyx_t_3)) {
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":206
+ *     for item in metadata:
+ *         if not isinstance(item, tuple):
+ *             raise TypeError(f'Invalid trailing metadata type, expected {TYPE_METADATA_STRING}: {metadata}')             # <<<<<<<<<<<<<<
+ *         if len(item) != 2:
+ *             raise TypeError(f'Invalid trailing metadata type, expected {TYPE_METADATA_STRING}: {metadata}')
+ */
+      __pyx_t_8 = PyTuple_New(4); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 206, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_8);
+      __pyx_t_10 = 0;
+      __pyx_t_6 = 127;
+      __Pyx_INCREF(__pyx_kp_u_Invalid_trailing_metadata_type_e);
+      __pyx_t_10 += 41;
+      __Pyx_GIVEREF(__pyx_kp_u_Invalid_trailing_metadata_type_e);
+      PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_kp_u_Invalid_trailing_metadata_type_e);
+      __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_TYPE_METADATA_STRING); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 206, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_7);
+      __pyx_t_11 = __Pyx_PyObject_FormatSimple(__pyx_t_7, __pyx_empty_unicode); if (unlikely(!__pyx_t_11)) __PYX_ERR(6, 206, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_11);
+      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+      __pyx_t_6 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_11) > __pyx_t_6) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_11) : __pyx_t_6;
+      __pyx_t_10 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_11);
+      __Pyx_GIVEREF(__pyx_t_11);
+      PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_11);
+      __pyx_t_11 = 0;
+      __Pyx_INCREF(__pyx_kp_u__49);
+      __pyx_t_10 += 2;
+      __Pyx_GIVEREF(__pyx_kp_u__49);
+      PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_kp_u__49);
+      __pyx_t_11 = __Pyx_PyObject_FormatSimple(__pyx_v_metadata, __pyx_empty_unicode); if (unlikely(!__pyx_t_11)) __PYX_ERR(6, 206, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_11);
+      __pyx_t_6 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_11) > __pyx_t_6) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_11) : __pyx_t_6;
+      __pyx_t_10 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_11);
+      __Pyx_GIVEREF(__pyx_t_11);
+      PyTuple_SET_ITEM(__pyx_t_8, 3, __pyx_t_11);
+      __pyx_t_11 = 0;
+      __pyx_t_11 = __Pyx_PyUnicode_Join(__pyx_t_8, 4, __pyx_t_10, __pyx_t_6); if (unlikely(!__pyx_t_11)) __PYX_ERR(6, 206, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_11);
+      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+      __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_11); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 206, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_8);
+      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+      __Pyx_Raise(__pyx_t_8, 0, 0, 0);
+      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+      __PYX_ERR(6, 206, __pyx_L1_error)
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":205
+ *         raise TypeError(f'Invalid trailing metadata type, expected {TYPE_METADATA_STRING}: {metadata}')
+ *     for item in metadata:
+ *         if not isinstance(item, tuple):             # <<<<<<<<<<<<<<
+ *             raise TypeError(f'Invalid trailing metadata type, expected {TYPE_METADATA_STRING}: {metadata}')
+ *         if len(item) != 2:
+ */
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":207
+ *         if not isinstance(item, tuple):
+ *             raise TypeError(f'Invalid trailing metadata type, expected {TYPE_METADATA_STRING}: {metadata}')
+ *         if len(item) != 2:             # <<<<<<<<<<<<<<
+ *             raise TypeError(f'Invalid trailing metadata type, expected {TYPE_METADATA_STRING}: {metadata}')
+ *         if not isinstance(item[0], str):
+ */
+    __pyx_t_10 = PyObject_Length(__pyx_v_item); if (unlikely(__pyx_t_10 == ((Py_ssize_t)-1))) __PYX_ERR(6, 207, __pyx_L1_error)
+    __pyx_t_3 = (__pyx_t_10 != 2);
+    if (unlikely(__pyx_t_3)) {
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":208
+ *             raise TypeError(f'Invalid trailing metadata type, expected {TYPE_METADATA_STRING}: {metadata}')
+ *         if len(item) != 2:
+ *             raise TypeError(f'Invalid trailing metadata type, expected {TYPE_METADATA_STRING}: {metadata}')             # <<<<<<<<<<<<<<
+ *         if not isinstance(item[0], str):
+ *             raise TypeError(f'Invalid trailing metadata type, expected {TYPE_METADATA_STRING}: {metadata}')
+ */
+      __pyx_t_8 = PyTuple_New(4); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 208, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_8);
+      __pyx_t_10 = 0;
+      __pyx_t_6 = 127;
+      __Pyx_INCREF(__pyx_kp_u_Invalid_trailing_metadata_type_e);
+      __pyx_t_10 += 41;
+      __Pyx_GIVEREF(__pyx_kp_u_Invalid_trailing_metadata_type_e);
+      PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_kp_u_Invalid_trailing_metadata_type_e);
+      __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_TYPE_METADATA_STRING); if (unlikely(!__pyx_t_11)) __PYX_ERR(6, 208, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_11);
+      __pyx_t_7 = __Pyx_PyObject_FormatSimple(__pyx_t_11, __pyx_empty_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 208, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_7);
+      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+      __pyx_t_6 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_7) > __pyx_t_6) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_7) : __pyx_t_6;
+      __pyx_t_10 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_7);
+      __Pyx_GIVEREF(__pyx_t_7);
+      PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_7);
+      __pyx_t_7 = 0;
+      __Pyx_INCREF(__pyx_kp_u__49);
+      __pyx_t_10 += 2;
+      __Pyx_GIVEREF(__pyx_kp_u__49);
+      PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_kp_u__49);
+      __pyx_t_7 = __Pyx_PyObject_FormatSimple(__pyx_v_metadata, __pyx_empty_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 208, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_7);
+      __pyx_t_6 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_7) > __pyx_t_6) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_7) : __pyx_t_6;
+      __pyx_t_10 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_7);
+      __Pyx_GIVEREF(__pyx_t_7);
+      PyTuple_SET_ITEM(__pyx_t_8, 3, __pyx_t_7);
+      __pyx_t_7 = 0;
+      __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_8, 4, __pyx_t_10, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 208, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_7);
+      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+      __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 208, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_8);
+      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+      __Pyx_Raise(__pyx_t_8, 0, 0, 0);
+      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+      __PYX_ERR(6, 208, __pyx_L1_error)
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":207
+ *         if not isinstance(item, tuple):
+ *             raise TypeError(f'Invalid trailing metadata type, expected {TYPE_METADATA_STRING}: {metadata}')
+ *         if len(item) != 2:             # <<<<<<<<<<<<<<
+ *             raise TypeError(f'Invalid trailing metadata type, expected {TYPE_METADATA_STRING}: {metadata}')
+ *         if not isinstance(item[0], str):
+ */
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":209
+ *         if len(item) != 2:
+ *             raise TypeError(f'Invalid trailing metadata type, expected {TYPE_METADATA_STRING}: {metadata}')
+ *         if not isinstance(item[0], str):             # <<<<<<<<<<<<<<
+ *             raise TypeError(f'Invalid trailing metadata type, expected {TYPE_METADATA_STRING}: {metadata}')
+ *         if not isinstance(item[1], str) and not isinstance(item[1], bytes):
+ */
+    __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_item, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 209, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_8);
+    __pyx_t_3 = PyString_Check(__pyx_t_8); 
+    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+    __pyx_t_1 = (!__pyx_t_3);
+    if (unlikely(__pyx_t_1)) {
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":210
+ *             raise TypeError(f'Invalid trailing metadata type, expected {TYPE_METADATA_STRING}: {metadata}')
+ *         if not isinstance(item[0], str):
+ *             raise TypeError(f'Invalid trailing metadata type, expected {TYPE_METADATA_STRING}: {metadata}')             # <<<<<<<<<<<<<<
+ *         if not isinstance(item[1], str) and not isinstance(item[1], bytes):
+ *             raise TypeError(f'Invalid trailing metadata type, expected {TYPE_METADATA_STRING}: {metadata}')
+ */
+      __pyx_t_8 = PyTuple_New(4); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 210, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_8);
+      __pyx_t_10 = 0;
+      __pyx_t_6 = 127;
+      __Pyx_INCREF(__pyx_kp_u_Invalid_trailing_metadata_type_e);
+      __pyx_t_10 += 41;
+      __Pyx_GIVEREF(__pyx_kp_u_Invalid_trailing_metadata_type_e);
+      PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_kp_u_Invalid_trailing_metadata_type_e);
+      __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_TYPE_METADATA_STRING); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 210, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_7);
+      __pyx_t_11 = __Pyx_PyObject_FormatSimple(__pyx_t_7, __pyx_empty_unicode); if (unlikely(!__pyx_t_11)) __PYX_ERR(6, 210, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_11);
+      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+      __pyx_t_6 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_11) > __pyx_t_6) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_11) : __pyx_t_6;
+      __pyx_t_10 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_11);
+      __Pyx_GIVEREF(__pyx_t_11);
+      PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_11);
+      __pyx_t_11 = 0;
+      __Pyx_INCREF(__pyx_kp_u__49);
+      __pyx_t_10 += 2;
+      __Pyx_GIVEREF(__pyx_kp_u__49);
+      PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_kp_u__49);
+      __pyx_t_11 = __Pyx_PyObject_FormatSimple(__pyx_v_metadata, __pyx_empty_unicode); if (unlikely(!__pyx_t_11)) __PYX_ERR(6, 210, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_11);
+      __pyx_t_6 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_11) > __pyx_t_6) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_11) : __pyx_t_6;
+      __pyx_t_10 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_11);
+      __Pyx_GIVEREF(__pyx_t_11);
+      PyTuple_SET_ITEM(__pyx_t_8, 3, __pyx_t_11);
+      __pyx_t_11 = 0;
+      __pyx_t_11 = __Pyx_PyUnicode_Join(__pyx_t_8, 4, __pyx_t_10, __pyx_t_6); if (unlikely(!__pyx_t_11)) __PYX_ERR(6, 210, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_11);
+      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+      __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_11); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 210, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_8);
+      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+      __Pyx_Raise(__pyx_t_8, 0, 0, 0);
+      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+      __PYX_ERR(6, 210, __pyx_L1_error)
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":209
+ *         if len(item) != 2:
+ *             raise TypeError(f'Invalid trailing metadata type, expected {TYPE_METADATA_STRING}: {metadata}')
+ *         if not isinstance(item[0], str):             # <<<<<<<<<<<<<<
+ *             raise TypeError(f'Invalid trailing metadata type, expected {TYPE_METADATA_STRING}: {metadata}')
+ *         if not isinstance(item[1], str) and not isinstance(item[1], bytes):
+ */
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":211
+ *         if not isinstance(item[0], str):
+ *             raise TypeError(f'Invalid trailing metadata type, expected {TYPE_METADATA_STRING}: {metadata}')
+ *         if not isinstance(item[1], str) and not isinstance(item[1], bytes):             # <<<<<<<<<<<<<<
+ *             raise TypeError(f'Invalid trailing metadata type, expected {TYPE_METADATA_STRING}: {metadata}')
+ */
+    __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_item, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 211, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_8);
+    __pyx_t_3 = PyString_Check(__pyx_t_8); 
+    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+    __pyx_t_2 = (!__pyx_t_3);
+    if (__pyx_t_2) {
+    } else {
+      __pyx_t_1 = __pyx_t_2;
+      goto __pyx_L12_bool_binop_done;
+    }
+    __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_item, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 211, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_8);
+    __pyx_t_2 = PyBytes_Check(__pyx_t_8); 
+    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+    __pyx_t_3 = (!__pyx_t_2);
+    __pyx_t_1 = __pyx_t_3;
+    __pyx_L12_bool_binop_done:;
+    if (unlikely(__pyx_t_1)) {
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":212
+ *             raise TypeError(f'Invalid trailing metadata type, expected {TYPE_METADATA_STRING}: {metadata}')
+ *         if not isinstance(item[1], str) and not isinstance(item[1], bytes):
+ *             raise TypeError(f'Invalid trailing metadata type, expected {TYPE_METADATA_STRING}: {metadata}')             # <<<<<<<<<<<<<<
+ */
+      __pyx_t_8 = PyTuple_New(4); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 212, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_8);
+      __pyx_t_10 = 0;
+      __pyx_t_6 = 127;
+      __Pyx_INCREF(__pyx_kp_u_Invalid_trailing_metadata_type_e);
+      __pyx_t_10 += 41;
+      __Pyx_GIVEREF(__pyx_kp_u_Invalid_trailing_metadata_type_e);
+      PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_kp_u_Invalid_trailing_metadata_type_e);
+      __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_TYPE_METADATA_STRING); if (unlikely(!__pyx_t_11)) __PYX_ERR(6, 212, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_11);
+      __pyx_t_7 = __Pyx_PyObject_FormatSimple(__pyx_t_11, __pyx_empty_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 212, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_7);
+      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+      __pyx_t_6 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_7) > __pyx_t_6) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_7) : __pyx_t_6;
+      __pyx_t_10 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_7);
+      __Pyx_GIVEREF(__pyx_t_7);
+      PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_7);
+      __pyx_t_7 = 0;
+      __Pyx_INCREF(__pyx_kp_u__49);
+      __pyx_t_10 += 2;
+      __Pyx_GIVEREF(__pyx_kp_u__49);
+      PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_kp_u__49);
+      __pyx_t_7 = __Pyx_PyObject_FormatSimple(__pyx_v_metadata, __pyx_empty_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 212, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_7);
+      __pyx_t_6 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_7) > __pyx_t_6) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_7) : __pyx_t_6;
+      __pyx_t_10 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_7);
+      __Pyx_GIVEREF(__pyx_t_7);
+      PyTuple_SET_ITEM(__pyx_t_8, 3, __pyx_t_7);
+      __pyx_t_7 = 0;
+      __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_8, 4, __pyx_t_10, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 212, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_7);
+      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+      __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 212, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_8);
+      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+      __Pyx_Raise(__pyx_t_8, 0, 0, 0);
+      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+      __PYX_ERR(6, 212, __pyx_L1_error)
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":211
+ *         if not isinstance(item[0], str):
+ *             raise TypeError(f'Invalid trailing metadata type, expected {TYPE_METADATA_STRING}: {metadata}')
+ *         if not isinstance(item[1], str) and not isinstance(item[1], bytes):             # <<<<<<<<<<<<<<
+ *             raise TypeError(f'Invalid trailing metadata type, expected {TYPE_METADATA_STRING}: {metadata}')
+ */
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":204
+ *     if not hasattr(metadata, '__iter__') or isinstance(metadata, dict):
+ *         raise TypeError(f'Invalid trailing metadata type, expected {TYPE_METADATA_STRING}: {metadata}')
+ *     for item in metadata:             # <<<<<<<<<<<<<<
+ *         if not isinstance(item, tuple):
+ *             raise TypeError(f'Invalid trailing metadata type, expected {TYPE_METADATA_STRING}: {metadata}')
+ */
+  }
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":201
+ * 
+ * 
+ * def raise_if_not_valid_trailing_metadata(object metadata):             # <<<<<<<<<<<<<<
+ *     if not hasattr(metadata, '__iter__') or isinstance(metadata, dict):
+ *         raise TypeError(f'Invalid trailing metadata type, expected {TYPE_METADATA_STRING}: {metadata}')
+ */
+
+  /* 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_7);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("_cython.cygrpc.raise_if_not_valid_trailing_metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_item);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pyx.pxi":21
+ *     # The final status of gRPC is represented by three trailing metadata:
+ *     # `grpc-status`, `grpc-status-message`, abd `grpc-status-details`.
+ *     def __cinit__(self,             # <<<<<<<<<<<<<<
+ *                   grpc_status_code code,
+ *                   str details,
+ */
+
+/* Python wrapper */
+static int __pyx_pw_7_cython_6cygrpc_12AioRpcStatus_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_7_cython_6cygrpc_12AioRpcStatus_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  grpc_status_code __pyx_v_code;
+  PyObject *__pyx_v_details = 0;
+  PyObject *__pyx_v_trailing_metadata = 0;
+  PyObject *__pyx_v_debug_error_string = 0;
+  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+  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;
+  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);
+  {
+    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_code,&__pyx_n_s_details,&__pyx_n_s_trailing_metadata,&__pyx_n_s_debug_error_string,0};
+    if (__pyx_kwds) {
+      Py_ssize_t kw_args;
+      switch (__pyx_nargs) {
+        case  4: values[3] = __Pyx_Arg_VARARGS(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
+        case  3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
+      switch (__pyx_nargs) {
+        case  0:
+        if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_code)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 21, __pyx_L3_error)
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_details)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 21, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 4, 4, 1); __PYX_ERR(30, 21, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_trailing_metadata)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[2]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 21, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 4, 4, 2); __PYX_ERR(30, 21, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  3:
+        if (likely((values[3] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_debug_error_string)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[3]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 21, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 4, 4, 3); __PYX_ERR(30, 21, __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, "__cinit__") < 0)) __PYX_ERR(30, 21, __pyx_L3_error)
+      }
+    } else if (unlikely(__pyx_nargs != 4)) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+      values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
+      values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
+      values[3] = __Pyx_Arg_VARARGS(__pyx_args, 3);
+    }
+    __pyx_v_code = ((grpc_status_code)__Pyx_PyInt_As_grpc_status_code(values[0])); if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 22, __pyx_L3_error)
+    __pyx_v_details = ((PyObject*)values[1]);
+    __pyx_v_trailing_metadata = ((PyObject*)values[2]);
+    __pyx_v_debug_error_string = ((PyObject*)values[3]);
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 4, 4, __pyx_nargs); __PYX_ERR(30, 21, __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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_AddTraceback("_cython.cygrpc.AioRpcStatus.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_details), (&PyString_Type), 1, "details", 1))) __PYX_ERR(30, 23, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_trailing_metadata), (&PyTuple_Type), 1, "trailing_metadata", 1))) __PYX_ERR(30, 24, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_debug_error_string), (&PyString_Type), 1, "debug_error_string", 1))) __PYX_ERR(30, 25, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_12AioRpcStatus___cinit__(((struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *)__pyx_v_self), __pyx_v_code, __pyx_v_details, __pyx_v_trailing_metadata, __pyx_v_debug_error_string);
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = -1;
+  __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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_7_cython_6cygrpc_12AioRpcStatus___cinit__(struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *__pyx_v_self, grpc_status_code __pyx_v_code, PyObject *__pyx_v_details, PyObject *__pyx_v_trailing_metadata, PyObject *__pyx_v_debug_error_string) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__cinit__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pyx.pxi":26
+ *                   tuple trailing_metadata,
+ *                   str debug_error_string):
+ *         self._code = code             # <<<<<<<<<<<<<<
+ *         self._details = details
+ *         self._trailing_metadata = trailing_metadata
+ */
+  __pyx_v_self->_code = __pyx_v_code;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pyx.pxi":27
+ *                   str debug_error_string):
+ *         self._code = code
+ *         self._details = details             # <<<<<<<<<<<<<<
+ *         self._trailing_metadata = trailing_metadata
+ *         self._debug_error_string = debug_error_string
+ */
+  __Pyx_INCREF(__pyx_v_details);
+  __Pyx_GIVEREF(__pyx_v_details);
+  __Pyx_GOTREF(__pyx_v_self->_details);
+  __Pyx_DECREF(__pyx_v_self->_details);
+  __pyx_v_self->_details = __pyx_v_details;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pyx.pxi":28
+ *         self._code = code
+ *         self._details = details
+ *         self._trailing_metadata = trailing_metadata             # <<<<<<<<<<<<<<
+ *         self._debug_error_string = debug_error_string
+ * 
+ */
+  __Pyx_INCREF(__pyx_v_trailing_metadata);
+  __Pyx_GIVEREF(__pyx_v_trailing_metadata);
+  __Pyx_GOTREF(__pyx_v_self->_trailing_metadata);
+  __Pyx_DECREF(__pyx_v_self->_trailing_metadata);
+  __pyx_v_self->_trailing_metadata = __pyx_v_trailing_metadata;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pyx.pxi":29
+ *         self._details = details
+ *         self._trailing_metadata = trailing_metadata
+ *         self._debug_error_string = debug_error_string             # <<<<<<<<<<<<<<
+ * 
+ *     cpdef grpc_status_code code(self):
+ */
+  __Pyx_INCREF(__pyx_v_debug_error_string);
+  __Pyx_GIVEREF(__pyx_v_debug_error_string);
+  __Pyx_GOTREF(__pyx_v_self->_debug_error_string);
+  __Pyx_DECREF(__pyx_v_self->_debug_error_string);
+  __pyx_v_self->_debug_error_string = __pyx_v_debug_error_string;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pyx.pxi":21
+ *     # The final status of gRPC is represented by three trailing metadata:
+ *     # `grpc-status`, `grpc-status-message`, abd `grpc-status-details`.
+ *     def __cinit__(self,             # <<<<<<<<<<<<<<
+ *                   grpc_status_code code,
+ *                   str details,
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pyx.pxi":31
+ *         self._debug_error_string = debug_error_string
+ * 
+ *     cpdef grpc_status_code code(self):             # <<<<<<<<<<<<<<
+ *         return self._code
+ * 
+ */
+
+static PyObject *__pyx_pw_7_cython_6cygrpc_12AioRpcStatus_3code(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static grpc_status_code __pyx_f_7_cython_6cygrpc_12AioRpcStatus_code(struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *__pyx_v_self, int __pyx_skip_dispatch) {
+  grpc_status_code __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;
+  grpc_status_code __pyx_t_6;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("code", 1);
+  /* Check if called by wrapper */
+  if (unlikely(__pyx_skip_dispatch)) ;
+  /* Check if overridden in Python */
+  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
+    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
+    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
+      PY_UINT64_T __pyx_typedict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
+      #endif
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_code); if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 31, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      if (!__Pyx_IsSameCFunction(__pyx_t_1, (void*) __pyx_pw_7_cython_6cygrpc_12AioRpcStatus_3code)) {
+        __Pyx_INCREF(__pyx_t_1);
+        __pyx_t_3 = __pyx_t_1; __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, 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(30, 31, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_2);
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        }
+        __pyx_t_6 = ((grpc_status_code)__Pyx_PyInt_As_grpc_status_code(__pyx_t_2)); if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 31, __pyx_L1_error)
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        __pyx_r = __pyx_t_6;
+        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+        goto __pyx_L0;
+      }
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
+      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
+      if (unlikely(__pyx_typedict_guard != __pyx_tp_dict_version)) {
+        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
+      }
+      #endif
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+    }
+    #endif
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pyx.pxi":32
+ * 
+ *     cpdef grpc_status_code code(self):
+ *         return self._code             # <<<<<<<<<<<<<<
+ * 
+ *     cpdef str details(self):
+ */
+  __pyx_r = __pyx_v_self->_code;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pyx.pxi":31
+ *         self._debug_error_string = debug_error_string
+ * 
+ *     cpdef grpc_status_code code(self):             # <<<<<<<<<<<<<<
+ *         return self._code
+ * 
+ */
+
+  /* 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("_cython.cygrpc.AioRpcStatus.code", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = (grpc_status_code) 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_12AioRpcStatus_3code(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_12AioRpcStatus_3code = {"code", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_12AioRpcStatus_3code, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_12AioRpcStatus_3code(PyObject *__pyx_v_self, 
+#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("code (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("code", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "code", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_12AioRpcStatus_2code(((struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_12AioRpcStatus_2code(struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  grpc_status_code __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("code", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_7_cython_6cygrpc_12AioRpcStatus_code(__pyx_v_self, 1); if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 31, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_grpc_status_code(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 31, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("_cython.cygrpc.AioRpcStatus.code", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pyx.pxi":34
+ *         return self._code
+ * 
+ *     cpdef str details(self):             # <<<<<<<<<<<<<<
+ *         return self._details
+ * 
+ */
+
+static PyObject *__pyx_pw_7_cython_6cygrpc_12AioRpcStatus_5details(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyObject *__pyx_f_7_cython_6cygrpc_12AioRpcStatus_details(struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *__pyx_v_self, int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  unsigned int __pyx_t_5;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("details", 1);
+  /* Check if called by wrapper */
+  if (unlikely(__pyx_skip_dispatch)) ;
+  /* Check if overridden in Python */
+  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
+    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
+    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
+      PY_UINT64_T __pyx_typedict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
+      #endif
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_details); if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 34, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      if (!__Pyx_IsSameCFunction(__pyx_t_1, (void*) __pyx_pw_7_cython_6cygrpc_12AioRpcStatus_5details)) {
+        __Pyx_XDECREF(__pyx_r);
+        __Pyx_INCREF(__pyx_t_1);
+        __pyx_t_3 = __pyx_t_1; __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, 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(30, 34, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_2);
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        }
+        if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(30, 34, __pyx_L1_error)
+        __pyx_r = ((PyObject*)__pyx_t_2);
+        __pyx_t_2 = 0;
+        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+        goto __pyx_L0;
+      }
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
+      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
+      if (unlikely(__pyx_typedict_guard != __pyx_tp_dict_version)) {
+        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
+      }
+      #endif
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+    }
+    #endif
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pyx.pxi":35
+ * 
+ *     cpdef str details(self):
+ *         return self._details             # <<<<<<<<<<<<<<
+ * 
+ *     cpdef tuple trailing_metadata(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->_details);
+  __pyx_r = __pyx_v_self->_details;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pyx.pxi":34
+ *         return self._code
+ * 
+ *     cpdef str details(self):             # <<<<<<<<<<<<<<
+ *         return self._details
+ * 
+ */
+
+  /* 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("_cython.cygrpc.AioRpcStatus.details", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_12AioRpcStatus_5details(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_12AioRpcStatus_5details = {"details", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_12AioRpcStatus_5details, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_12AioRpcStatus_5details(PyObject *__pyx_v_self, 
+#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("details (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("details", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "details", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_12AioRpcStatus_4details(((struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_12AioRpcStatus_4details(struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *__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("details", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_7_cython_6cygrpc_12AioRpcStatus_details(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 34, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.AioRpcStatus.details", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pyx.pxi":37
+ *         return self._details
+ * 
+ *     cpdef tuple trailing_metadata(self):             # <<<<<<<<<<<<<<
+ *         return self._trailing_metadata
+ * 
+ */
+
+static PyObject *__pyx_pw_7_cython_6cygrpc_12AioRpcStatus_7trailing_metadata(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyObject *__pyx_f_7_cython_6cygrpc_12AioRpcStatus_trailing_metadata(struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *__pyx_v_self, int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  unsigned int __pyx_t_5;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("trailing_metadata", 1);
+  /* Check if called by wrapper */
+  if (unlikely(__pyx_skip_dispatch)) ;
+  /* Check if overridden in Python */
+  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
+    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
+    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
+      PY_UINT64_T __pyx_typedict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
+      #endif
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trailing_metadata); if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 37, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      if (!__Pyx_IsSameCFunction(__pyx_t_1, (void*) __pyx_pw_7_cython_6cygrpc_12AioRpcStatus_7trailing_metadata)) {
+        __Pyx_XDECREF(__pyx_r);
+        __Pyx_INCREF(__pyx_t_1);
+        __pyx_t_3 = __pyx_t_1; __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, 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(30, 37, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_2);
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        }
+        if (!(likely(PyTuple_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_t_2))) __PYX_ERR(30, 37, __pyx_L1_error)
+        __pyx_r = ((PyObject*)__pyx_t_2);
+        __pyx_t_2 = 0;
+        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+        goto __pyx_L0;
+      }
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
+      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
+      if (unlikely(__pyx_typedict_guard != __pyx_tp_dict_version)) {
+        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
+      }
+      #endif
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+    }
+    #endif
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pyx.pxi":38
+ * 
+ *     cpdef tuple trailing_metadata(self):
+ *         return self._trailing_metadata             # <<<<<<<<<<<<<<
+ * 
+ *     cpdef str debug_error_string(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->_trailing_metadata);
+  __pyx_r = __pyx_v_self->_trailing_metadata;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pyx.pxi":37
+ *         return self._details
+ * 
+ *     cpdef tuple trailing_metadata(self):             # <<<<<<<<<<<<<<
+ *         return self._trailing_metadata
+ * 
+ */
+
+  /* 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("_cython.cygrpc.AioRpcStatus.trailing_metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_12AioRpcStatus_7trailing_metadata(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_12AioRpcStatus_7trailing_metadata = {"trailing_metadata", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_12AioRpcStatus_7trailing_metadata, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_12AioRpcStatus_7trailing_metadata(PyObject *__pyx_v_self, 
+#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("trailing_metadata (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("trailing_metadata", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "trailing_metadata", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_12AioRpcStatus_6trailing_metadata(((struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_12AioRpcStatus_6trailing_metadata(struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *__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("trailing_metadata", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_7_cython_6cygrpc_12AioRpcStatus_trailing_metadata(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 37, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.AioRpcStatus.trailing_metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pyx.pxi":40
+ *         return self._trailing_metadata
+ * 
+ *     cpdef str debug_error_string(self):             # <<<<<<<<<<<<<<
+ *         return self._debug_error_string
+ * 
+ */
+
+static PyObject *__pyx_pw_7_cython_6cygrpc_12AioRpcStatus_9debug_error_string(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyObject *__pyx_f_7_cython_6cygrpc_12AioRpcStatus_debug_error_string(struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *__pyx_v_self, int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  unsigned int __pyx_t_5;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("debug_error_string", 1);
+  /* Check if called by wrapper */
+  if (unlikely(__pyx_skip_dispatch)) ;
+  /* Check if overridden in Python */
+  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || __Pyx_PyType_HasFeature(Py_TYPE(((PyObject *)__pyx_v_self)), (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
+    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
+    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
+      PY_UINT64_T __pyx_typedict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
+      #endif
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_debug_error_string); if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 40, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      if (!__Pyx_IsSameCFunction(__pyx_t_1, (void*) __pyx_pw_7_cython_6cygrpc_12AioRpcStatus_9debug_error_string)) {
+        __Pyx_XDECREF(__pyx_r);
+        __Pyx_INCREF(__pyx_t_1);
+        __pyx_t_3 = __pyx_t_1; __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, 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(30, 40, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_2);
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        }
+        if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(30, 40, __pyx_L1_error)
+        __pyx_r = ((PyObject*)__pyx_t_2);
+        __pyx_t_2 = 0;
+        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+        goto __pyx_L0;
+      }
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
+      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
+      if (unlikely(__pyx_typedict_guard != __pyx_tp_dict_version)) {
+        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
+      }
+      #endif
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+    }
+    #endif
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pyx.pxi":41
+ * 
+ *     cpdef str debug_error_string(self):
+ *         return self._debug_error_string             # <<<<<<<<<<<<<<
+ * 
+ *     cdef grpc_status_code c_code(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->_debug_error_string);
+  __pyx_r = __pyx_v_self->_debug_error_string;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pyx.pxi":40
+ *         return self._trailing_metadata
+ * 
+ *     cpdef str debug_error_string(self):             # <<<<<<<<<<<<<<
+ *         return self._debug_error_string
+ * 
+ */
+
+  /* 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("_cython.cygrpc.AioRpcStatus.debug_error_string", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_12AioRpcStatus_9debug_error_string(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_12AioRpcStatus_9debug_error_string = {"debug_error_string", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_12AioRpcStatus_9debug_error_string, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_12AioRpcStatus_9debug_error_string(PyObject *__pyx_v_self, 
+#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("debug_error_string (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("debug_error_string", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "debug_error_string", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_12AioRpcStatus_8debug_error_string(((struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_12AioRpcStatus_8debug_error_string(struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *__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("debug_error_string", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_7_cython_6cygrpc_12AioRpcStatus_debug_error_string(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 40, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.AioRpcStatus.debug_error_string", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pyx.pxi":43
+ *         return self._debug_error_string
+ * 
+ *     cdef grpc_status_code c_code(self):             # <<<<<<<<<<<<<<
+ *         return <grpc_status_code>self._code
+ */
+
+static grpc_status_code __pyx_f_7_cython_6cygrpc_12AioRpcStatus_c_code(struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *__pyx_v_self) {
+  grpc_status_code __pyx_r;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pyx.pxi":44
+ * 
+ *     cdef grpc_status_code c_code(self):
+ *         return <grpc_status_code>self._code             # <<<<<<<<<<<<<<
+ */
+  __pyx_r = ((grpc_status_code)__pyx_v_self->_code);
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pyx.pxi":43
+ *         return self._debug_error_string
+ * 
+ *     cdef grpc_status_code c_code(self):             # <<<<<<<<<<<<<<
+ *         return <grpc_status_code>self._code
+ */
+
+  /* function exit code */
+  __pyx_L0:;
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pxd.pxi":19
+ * cdef class AioRpcStatus(Exception):
+ *     cdef readonly:
+ *         grpc_status_code _code             # <<<<<<<<<<<<<<
+ *         str _details
+ *         # Per the spec, only client-side status has trailing metadata.
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_12AioRpcStatus_5_code_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_12AioRpcStatus_5_code_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_7_cython_6cygrpc_12AioRpcStatus_5_code___get__(((struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_12AioRpcStatus_5_code___get__(struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_grpc_status_code(__pyx_v_self->_code); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 19, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.AioRpcStatus._code.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pxd.pxi":20
+ *     cdef readonly:
+ *         grpc_status_code _code
+ *         str _details             # <<<<<<<<<<<<<<
+ *         # Per the spec, only client-side status has trailing metadata.
+ *         tuple _trailing_metadata
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_12AioRpcStatus_8_details_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_12AioRpcStatus_8_details_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_7_cython_6cygrpc_12AioRpcStatus_8_details___get__(((struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_12AioRpcStatus_8_details___get__(struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->_details);
+  __pyx_r = __pyx_v_self->_details;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pxd.pxi":22
+ *         str _details
+ *         # Per the spec, only client-side status has trailing metadata.
+ *         tuple _trailing_metadata             # <<<<<<<<<<<<<<
+ *         str _debug_error_string
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_12AioRpcStatus_18_trailing_metadata_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_12AioRpcStatus_18_trailing_metadata_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_7_cython_6cygrpc_12AioRpcStatus_18_trailing_metadata___get__(((struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_12AioRpcStatus_18_trailing_metadata___get__(struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->_trailing_metadata);
+  __pyx_r = __pyx_v_self->_trailing_metadata;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pxd.pxi":23
+ *         # Per the spec, only client-side status has trailing metadata.
+ *         tuple _trailing_metadata
+ *         str _debug_error_string             # <<<<<<<<<<<<<<
+ * 
+ *     cpdef grpc_status_code code(self)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_12AioRpcStatus_19_debug_error_string_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_12AioRpcStatus_19_debug_error_string_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_7_cython_6cygrpc_12AioRpcStatus_19_debug_error_string___get__(((struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_12AioRpcStatus_19_debug_error_string___get__(struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->_debug_error_string);
+  __pyx_r = __pyx_v_self->_debug_error_string;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __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_7_cython_6cygrpc_12AioRpcStatus_11__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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_12AioRpcStatus_11__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_12AioRpcStatus_11__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_12AioRpcStatus_11__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_7_cython_6cygrpc_12AioRpcStatus_10__reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_12AioRpcStatus_10__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *__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(10, 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("_cython.cygrpc.AioRpcStatus.__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_7_cython_6cygrpc_12AioRpcStatus_13__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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_12AioRpcStatus_13__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_12AioRpcStatus_13__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_12AioRpcStatus_13__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(10, 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(10, 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(10, 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("_cython.cygrpc.AioRpcStatus.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_12AioRpcStatus_12__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *)__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_7_cython_6cygrpc_12AioRpcStatus_12__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *__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(10, 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("_cython.cygrpc.AioRpcStatus.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":30
+ *     from posix cimport unistd
+ * 
+ *     cdef void _unified_socket_write(int fd) nogil:             # <<<<<<<<<<<<<<
+ *         unistd.write(fd, b"1", 1)
+ * 
+ */
+
+static void __pyx_f_7_cython_6cygrpc__unified_socket_write(int __pyx_v_fd) {
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":31
+ * 
+ *     cdef void _unified_socket_write(int fd) nogil:
+ *         unistd.write(fd, b"1", 1)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  (void)(write(__pyx_v_fd, ((char *)"1"), 1));
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":30
+ *     from posix cimport unistd
+ * 
+ *     cdef void _unified_socket_write(int fd) nogil:             # <<<<<<<<<<<<<<
+ *         unistd.write(fd, b"1", 1)
+ * 
+ */
+
+  /* function exit code */
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":34
+ * 
+ * 
+ * def _handle_callback_wrapper(CallbackWrapper callback_wrapper, int success):             # <<<<<<<<<<<<<<
+ *     CallbackWrapper.functor_run(callback_wrapper.c_functor(), success)
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_125_handle_callback_wrapper(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_125_handle_callback_wrapper = {"_handle_callback_wrapper", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_125_handle_callback_wrapper, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_125_handle_callback_wrapper(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
+) {
+  struct __pyx_obj_7_cython_6cygrpc_CallbackWrapper *__pyx_v_callback_wrapper = 0;
+  int __pyx_v_success;
+  #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("_handle_callback_wrapper (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_callback_wrapper,&__pyx_n_s_success,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_callback_wrapper)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(7, 34, __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_success)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(7, 34, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("_handle_callback_wrapper", 1, 2, 2, 1); __PYX_ERR(7, 34, __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, "_handle_callback_wrapper") < 0)) __PYX_ERR(7, 34, __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_callback_wrapper = ((struct __pyx_obj_7_cython_6cygrpc_CallbackWrapper *)values[0]);
+    __pyx_v_success = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_success == (int)-1) && PyErr_Occurred())) __PYX_ERR(7, 34, __pyx_L3_error)
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("_handle_callback_wrapper", 1, 2, 2, __pyx_nargs); __PYX_ERR(7, 34, __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("_cython.cygrpc._handle_callback_wrapper", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_callback_wrapper), __pyx_ptype_7_cython_6cygrpc_CallbackWrapper, 1, "callback_wrapper", 0))) __PYX_ERR(7, 34, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_124_handle_callback_wrapper(__pyx_self, __pyx_v_callback_wrapper, __pyx_v_success);
+
+  /* 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_7_cython_6cygrpc_124_handle_callback_wrapper(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7_cython_6cygrpc_CallbackWrapper *__pyx_v_callback_wrapper, int __pyx_v_success) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  grpc_completion_queue_functor *__pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_handle_callback_wrapper", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":35
+ * 
+ * def _handle_callback_wrapper(CallbackWrapper callback_wrapper, int success):
+ *     CallbackWrapper.functor_run(callback_wrapper.c_functor(), success)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = ((struct __pyx_vtabstruct_7_cython_6cygrpc_CallbackWrapper *)__pyx_v_callback_wrapper->__pyx_vtab)->c_functor(__pyx_v_callback_wrapper); if (unlikely(PyErr_Occurred())) __PYX_ERR(7, 35, __pyx_L1_error)
+  __pyx_f_7_cython_6cygrpc_15CallbackWrapper_functor_run(__pyx_t_1, __pyx_v_success);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":34
+ * 
+ * 
+ * def _handle_callback_wrapper(CallbackWrapper callback_wrapper, int success):             # <<<<<<<<<<<<<<
+ *     CallbackWrapper.functor_run(callback_wrapper.c_functor(), success)
+ * 
+ */
+
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc._handle_callback_wrapper", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":40
+ * cdef class BaseCompletionQueue:
+ * 
+ *     cdef grpc_completion_queue* c_ptr(self):             # <<<<<<<<<<<<<<
+ *         return self._cq
+ * 
+ */
+
+static grpc_completion_queue *__pyx_f_7_cython_6cygrpc_19BaseCompletionQueue_c_ptr(struct __pyx_obj_7_cython_6cygrpc_BaseCompletionQueue *__pyx_v_self) {
+  grpc_completion_queue *__pyx_r;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":41
+ * 
+ *     cdef grpc_completion_queue* c_ptr(self):
+ *         return self._cq             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_r = __pyx_v_self->_cq;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":40
+ * cdef class BaseCompletionQueue:
+ * 
+ *     cdef grpc_completion_queue* c_ptr(self):             # <<<<<<<<<<<<<<
+ *         return self._cq
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L0:;
+  return __pyx_r;
+}
+
+/* "(tree fragment)":1
+ * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
+ *     raise TypeError, "self._cq cannot be converted to a Python object for pickling"
+ * def __setstate_cython__(self, __pyx_state):
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_19BaseCompletionQueue_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_19BaseCompletionQueue_1__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_19BaseCompletionQueue_1__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_19BaseCompletionQueue_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_7_cython_6cygrpc_19BaseCompletionQueue___reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc_BaseCompletionQueue *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_19BaseCompletionQueue___reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_BaseCompletionQueue *__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._cq cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
+ * def __setstate_cython__(self, __pyx_state):
+ *     raise TypeError, "self._cq cannot be converted to a Python object for pickling"
+ */
+  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self__cq_cannot_be_converted_to, 0, 0);
+  __PYX_ERR(10, 2, __pyx_L1_error)
+
+  /* "(tree fragment)":1
+ * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
+ *     raise TypeError, "self._cq cannot be converted to a Python object for pickling"
+ * def __setstate_cython__(self, __pyx_state):
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc.BaseCompletionQueue.__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._cq cannot be converted to a Python object for pickling"
+ * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
+ *     raise TypeError, "self._cq cannot be converted to a Python object for pickling"
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_19BaseCompletionQueue_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_19BaseCompletionQueue_3__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_19BaseCompletionQueue_3__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_19BaseCompletionQueue_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
+) {
+  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(10, 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(10, 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(10, 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("_cython.cygrpc.BaseCompletionQueue.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_19BaseCompletionQueue_2__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc_BaseCompletionQueue *)__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_7_cython_6cygrpc_19BaseCompletionQueue_2__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_BaseCompletionQueue *__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._cq cannot be converted to a Python object for pickling"
+ * def __setstate_cython__(self, __pyx_state):
+ *     raise TypeError, "self._cq cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
+ */
+  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self__cq_cannot_be_converted_to, 0, 0);
+  __PYX_ERR(10, 4, __pyx_L1_error)
+
+  /* "(tree fragment)":3
+ * def __reduce_cython__(self):
+ *     raise TypeError, "self._cq cannot be converted to a Python object for pickling"
+ * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
+ *     raise TypeError, "self._cq cannot be converted to a Python object for pickling"
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc.BaseCompletionQueue.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":46
+ * cdef class _BoundEventLoop:
+ * 
+ *     def __cinit__(self, object loop, object read_socket, object handler):             # <<<<<<<<<<<<<<
+ *         global _has_fd_monitoring
+ *         self.loop = loop
+ */
+
+/* Python wrapper */
+static int __pyx_pw_7_cython_6cygrpc_15_BoundEventLoop_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_7_cython_6cygrpc_15_BoundEventLoop_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_loop = 0;
+  PyObject *__pyx_v_read_socket = 0;
+  PyObject *__pyx_v_handler = 0;
+  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+  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;
+  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);
+  {
+    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_loop,&__pyx_n_s_read_socket,&__pyx_n_s_handler,0};
+    if (__pyx_kwds) {
+      Py_ssize_t kw_args;
+      switch (__pyx_nargs) {
+        case  3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
+      switch (__pyx_nargs) {
+        case  0:
+        if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_loop)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(7, 46, __pyx_L3_error)
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_read_socket)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(7, 46, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 1); __PYX_ERR(7, 46, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_handler)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[2]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(7, 46, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 2); __PYX_ERR(7, 46, __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, "__cinit__") < 0)) __PYX_ERR(7, 46, __pyx_L3_error)
+      }
+    } else if (unlikely(__pyx_nargs != 3)) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+      values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
+      values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
+    }
+    __pyx_v_loop = values[0];
+    __pyx_v_read_socket = values[1];
+    __pyx_v_handler = values[2];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, __pyx_nargs); __PYX_ERR(7, 46, __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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_AddTraceback("_cython.cygrpc._BoundEventLoop.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_15_BoundEventLoop___cinit__(((struct __pyx_obj_7_cython_6cygrpc__BoundEventLoop *)__pyx_v_self), __pyx_v_loop, __pyx_v_read_socket, __pyx_v_handler);
+
+  /* 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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_7_cython_6cygrpc_15_BoundEventLoop___cinit__(struct __pyx_obj_7_cython_6cygrpc__BoundEventLoop *__pyx_v_self, PyObject *__pyx_v_loop, PyObject *__pyx_v_read_socket, PyObject *__pyx_v_handler) {
+  PyObject *__pyx_v_reader_function = NULL;
+  int __pyx_r;
+  __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;
+  PyObject *__pyx_t_7 = NULL;
+  int __pyx_t_8;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__cinit__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":48
+ *     def __cinit__(self, object loop, object read_socket, object handler):
+ *         global _has_fd_monitoring
+ *         self.loop = loop             # <<<<<<<<<<<<<<
+ *         self.read_socket = read_socket
+ *         reader_function = functools.partial(
+ */
+  __Pyx_INCREF(__pyx_v_loop);
+  __Pyx_GIVEREF(__pyx_v_loop);
+  __Pyx_GOTREF(__pyx_v_self->loop);
+  __Pyx_DECREF(__pyx_v_self->loop);
+  __pyx_v_self->loop = __pyx_v_loop;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":49
+ *         global _has_fd_monitoring
+ *         self.loop = loop
+ *         self.read_socket = read_socket             # <<<<<<<<<<<<<<
+ *         reader_function = functools.partial(
+ *             handler,
+ */
+  __Pyx_INCREF(__pyx_v_read_socket);
+  __Pyx_GIVEREF(__pyx_v_read_socket);
+  __Pyx_GOTREF(__pyx_v_self->read_socket);
+  __Pyx_DECREF(__pyx_v_self->read_socket);
+  __pyx_v_self->read_socket = __pyx_v_read_socket;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":50
+ *         self.loop = loop
+ *         self.read_socket = read_socket
+ *         reader_function = functools.partial(             # <<<<<<<<<<<<<<
+ *             handler,
+ *             loop
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_functools); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 50, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_partial); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 50, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":52
+ *         reader_function = functools.partial(
+ *             handler,
+ *             loop             # <<<<<<<<<<<<<<
+ *         )
+ *         # NOTE(lidiz) There isn't a way to cleanly pre-check if fd monitoring
+ */
+  __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[3] = {__pyx_t_2, __pyx_v_handler, __pyx_v_loop};
+    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 2+__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+    if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 50, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  }
+  __pyx_v_reader_function = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":58
+ *         # good enough. The application can has its own loop implementation, or
+ *         # uses different types of event loops (e.g., 1 Proactor, 3 Selectors).
+ *         if _has_fd_monitoring:             # <<<<<<<<<<<<<<
+ *             try:
+ *                 self.loop.add_reader(self.read_socket, reader_function)
+ */
+  if (__pyx_v_7_cython_6cygrpc__has_fd_monitoring) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":59
+ *         # uses different types of event loops (e.g., 1 Proactor, 3 Selectors).
+ *         if _has_fd_monitoring:
+ *             try:             # <<<<<<<<<<<<<<
+ *                 self.loop.add_reader(self.read_socket, reader_function)
+ *                 self._has_reader = True
+ */
+    {
+      __Pyx_PyThreadState_declare
+      __Pyx_PyThreadState_assign
+      __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+      __Pyx_XGOTREF(__pyx_t_5);
+      __Pyx_XGOTREF(__pyx_t_6);
+      __Pyx_XGOTREF(__pyx_t_7);
+      /*try:*/ {
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":60
+ *         if _has_fd_monitoring:
+ *             try:
+ *                 self.loop.add_reader(self.read_socket, reader_function)             # <<<<<<<<<<<<<<
+ *                 self._has_reader = True
+ *             except NotImplementedError:
+ */
+        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->loop, __pyx_n_s_add_reader); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 60, __pyx_L4_error)
+        __Pyx_GOTREF(__pyx_t_3);
+        __pyx_t_2 = NULL;
+        __pyx_t_4 = 0;
+        #if CYTHON_UNPACK_METHODS
+        if (likely(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[3] = {__pyx_t_2, __pyx_v_self->read_socket, __pyx_v_reader_function};
+          __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 2+__pyx_t_4);
+          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 60, __pyx_L4_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/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":61
+ *             try:
+ *                 self.loop.add_reader(self.read_socket, reader_function)
+ *                 self._has_reader = True             # <<<<<<<<<<<<<<
+ *             except NotImplementedError:
+ *                 _has_fd_monitoring = False
+ */
+        __pyx_v_self->_has_reader = 1;
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":59
+ *         # uses different types of event loops (e.g., 1 Proactor, 3 Selectors).
+ *         if _has_fd_monitoring:
+ *             try:             # <<<<<<<<<<<<<<
+ *                 self.loop.add_reader(self.read_socket, reader_function)
+ *                 self._has_reader = True
+ */
+      }
+      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+      goto __pyx_L9_try_end;
+      __pyx_L4_error:;
+      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":62
+ *                 self.loop.add_reader(self.read_socket, reader_function)
+ *                 self._has_reader = True
+ *             except NotImplementedError:             # <<<<<<<<<<<<<<
+ *                 _has_fd_monitoring = False
+ *                 self._has_reader = False
+ */
+      __pyx_t_8 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_NotImplementedError);
+      if (__pyx_t_8) {
+        __Pyx_AddTraceback("_cython.cygrpc._BoundEventLoop.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+        if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_3, &__pyx_t_2) < 0) __PYX_ERR(7, 62, __pyx_L6_except_error)
+        __Pyx_XGOTREF(__pyx_t_1);
+        __Pyx_XGOTREF(__pyx_t_3);
+        __Pyx_XGOTREF(__pyx_t_2);
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":63
+ *                 self._has_reader = True
+ *             except NotImplementedError:
+ *                 _has_fd_monitoring = False             # <<<<<<<<<<<<<<
+ *                 self._has_reader = False
+ * 
+ */
+        __pyx_v_7_cython_6cygrpc__has_fd_monitoring = 0;
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":64
+ *             except NotImplementedError:
+ *                 _has_fd_monitoring = False
+ *                 self._has_reader = False             # <<<<<<<<<<<<<<
+ * 
+ *     def close(self):
+ */
+        __pyx_v_self->_has_reader = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+        goto __pyx_L5_exception_handled;
+      }
+      goto __pyx_L6_except_error;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":59
+ *         # uses different types of event loops (e.g., 1 Proactor, 3 Selectors).
+ *         if _has_fd_monitoring:
+ *             try:             # <<<<<<<<<<<<<<
+ *                 self.loop.add_reader(self.read_socket, reader_function)
+ *                 self._has_reader = True
+ */
+      __pyx_L6_except_error:;
+      __Pyx_XGIVEREF(__pyx_t_5);
+      __Pyx_XGIVEREF(__pyx_t_6);
+      __Pyx_XGIVEREF(__pyx_t_7);
+      __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+      goto __pyx_L1_error;
+      __pyx_L5_exception_handled:;
+      __Pyx_XGIVEREF(__pyx_t_5);
+      __Pyx_XGIVEREF(__pyx_t_6);
+      __Pyx_XGIVEREF(__pyx_t_7);
+      __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+      __pyx_L9_try_end:;
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":58
+ *         # good enough. The application can has its own loop implementation, or
+ *         # uses different types of event loops (e.g., 1 Proactor, 3 Selectors).
+ *         if _has_fd_monitoring:             # <<<<<<<<<<<<<<
+ *             try:
+ *                 self.loop.add_reader(self.read_socket, reader_function)
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":46
+ * cdef class _BoundEventLoop:
+ * 
+ *     def __cinit__(self, object loop, object read_socket, object handler):             # <<<<<<<<<<<<<<
+ *         global _has_fd_monitoring
+ *         self.loop = loop
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("_cython.cygrpc._BoundEventLoop.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_reader_function);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":66
+ *                 self._has_reader = False
+ * 
+ *     def close(self):             # <<<<<<<<<<<<<<
+ *         if self.loop:
+ *             if self._has_reader:
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_15_BoundEventLoop_3close(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_15_BoundEventLoop_3close = {"close", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_15_BoundEventLoop_3close, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_15_BoundEventLoop_3close(PyObject *__pyx_v_self, 
+#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("close (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("close", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "close", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_15_BoundEventLoop_2close(((struct __pyx_obj_7_cython_6cygrpc__BoundEventLoop *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_15_BoundEventLoop_2close(struct __pyx_obj_7_cython_6cygrpc__BoundEventLoop *__pyx_v_self) {
+  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;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("close", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":67
+ * 
+ *     def close(self):
+ *         if self.loop:             # <<<<<<<<<<<<<<
+ *             if self._has_reader:
+ *                 self.loop.remove_reader(self.read_socket)
+ */
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->loop); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(7, 67, __pyx_L1_error)
+  if (__pyx_t_1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":68
+ *     def close(self):
+ *         if self.loop:
+ *             if self._has_reader:             # <<<<<<<<<<<<<<
+ *                 self.loop.remove_reader(self.read_socket)
+ * 
+ */
+    if (__pyx_v_self->_has_reader) {
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":69
+ *         if self.loop:
+ *             if self._has_reader:
+ *                 self.loop.remove_reader(self.read_socket)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->loop, __pyx_n_s_remove_reader); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 69, __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_self->read_socket};
+        __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(7, 69, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_2);
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      }
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":68
+ *     def close(self):
+ *         if self.loop:
+ *             if self._has_reader:             # <<<<<<<<<<<<<<
+ *                 self.loop.remove_reader(self.read_socket)
+ * 
+ */
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":67
+ * 
+ *     def close(self):
+ *         if self.loop:             # <<<<<<<<<<<<<<
+ *             if self._has_reader:
+ *                 self.loop.remove_reader(self.read_socket)
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":66
+ *                 self._has_reader = False
+ * 
+ *     def close(self):             # <<<<<<<<<<<<<<
+ *         if self.loop:
+ *             if self._has_reader:
+ */
+
+  /* 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_AddTraceback("_cython.cygrpc._BoundEventLoop.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pxd.pxi":36
+ * 
+ * cdef class _BoundEventLoop:
+ *     cdef readonly object loop             # <<<<<<<<<<<<<<
+ *     cdef readonly object read_socket  # socket.socket
+ *     cdef bint _has_reader
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_15_BoundEventLoop_4loop_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_15_BoundEventLoop_4loop_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_7_cython_6cygrpc_15_BoundEventLoop_4loop___get__(((struct __pyx_obj_7_cython_6cygrpc__BoundEventLoop *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_15_BoundEventLoop_4loop___get__(struct __pyx_obj_7_cython_6cygrpc__BoundEventLoop *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->loop);
+  __pyx_r = __pyx_v_self->loop;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pxd.pxi":37
+ * cdef class _BoundEventLoop:
+ *     cdef readonly object loop
+ *     cdef readonly object read_socket  # socket.socket             # <<<<<<<<<<<<<<
+ *     cdef bint _has_reader
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_15_BoundEventLoop_11read_socket_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_15_BoundEventLoop_11read_socket_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_7_cython_6cygrpc_15_BoundEventLoop_11read_socket___get__(((struct __pyx_obj_7_cython_6cygrpc__BoundEventLoop *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_15_BoundEventLoop_11read_socket___get__(struct __pyx_obj_7_cython_6cygrpc__BoundEventLoop *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->read_socket);
+  __pyx_r = __pyx_v_self->read_socket;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __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_7_cython_6cygrpc_15_BoundEventLoop_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_15_BoundEventLoop_5__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_15_BoundEventLoop_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_15_BoundEventLoop_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_7_cython_6cygrpc_15_BoundEventLoop_4__reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc__BoundEventLoop *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_15_BoundEventLoop_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__BoundEventLoop *__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(10, 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("_cython.cygrpc._BoundEventLoop.__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_7_cython_6cygrpc_15_BoundEventLoop_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_15_BoundEventLoop_7__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_15_BoundEventLoop_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_15_BoundEventLoop_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(10, 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(10, 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(10, 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("_cython.cygrpc._BoundEventLoop.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_15_BoundEventLoop_6__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc__BoundEventLoop *)__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_7_cython_6cygrpc_15_BoundEventLoop_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__BoundEventLoop *__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(10, 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("_cython.cygrpc._BoundEventLoop.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":74
+ * cdef class PollerCompletionQueue(BaseCompletionQueue):
+ * 
+ *     def __cinit__(self):             # <<<<<<<<<<<<<<
+ *         self._cq = grpc_completion_queue_create_for_next(NULL)
+ *         self._shutdown = False
+ */
+
+/* Python wrapper */
+static int __pyx_pw_7_cython_6cygrpc_21PollerCompletionQueue_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_7_cython_6cygrpc_21PollerCompletionQueue_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_7_cython_6cygrpc_21PollerCompletionQueue___cinit__(((struct __pyx_obj_7_cython_6cygrpc_PollerCompletionQueue *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_7_cython_6cygrpc_21PollerCompletionQueue___cinit__(struct __pyx_obj_7_cython_6cygrpc_PollerCompletionQueue *__pyx_v_self) {
+  int __pyx_r;
+  __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)(PyObject *);
+  int __pyx_t_7;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__cinit__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":75
+ * 
+ *     def __cinit__(self):
+ *         self._cq = grpc_completion_queue_create_for_next(NULL)             # <<<<<<<<<<<<<<
+ *         self._shutdown = False
+ *         self._poller_thread = threading.Thread(target=self._poll_wrapper, daemon=True)
+ */
+  __pyx_v_self->__pyx_base._cq = grpc_completion_queue_create_for_next(NULL);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":76
+ *     def __cinit__(self):
+ *         self._cq = grpc_completion_queue_create_for_next(NULL)
+ *         self._shutdown = False             # <<<<<<<<<<<<<<
+ *         self._poller_thread = threading.Thread(target=self._poll_wrapper, daemon=True)
+ *         self._poller_thread.start()
+ */
+  __pyx_v_self->_shutdown = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":77
+ *         self._cq = grpc_completion_queue_create_for_next(NULL)
+ *         self._shutdown = False
+ *         self._poller_thread = threading.Thread(target=self._poll_wrapper, daemon=True)             # <<<<<<<<<<<<<<
+ *         self._poller_thread.start()
+ * 
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_threading); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 77, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_Thread); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 77, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 77, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_poll_wrapper); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 77, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_target, __pyx_t_3) < 0) __PYX_ERR(7, 77, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_daemon, Py_True) < 0) __PYX_ERR(7, 77, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 77, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_GIVEREF(__pyx_t_3);
+  __Pyx_GOTREF(__pyx_v_self->_poller_thread);
+  __Pyx_DECREF(__pyx_v_self->_poller_thread);
+  __pyx_v_self->_poller_thread = __pyx_t_3;
+  __pyx_t_3 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":78
+ *         self._shutdown = False
+ *         self._poller_thread = threading.Thread(target=self._poll_wrapper, daemon=True)
+ *         self._poller_thread.start()             # <<<<<<<<<<<<<<
+ * 
+ *         self._read_socket, self._write_socket = socket.socketpair()
+ */
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_poller_thread, __pyx_n_s_start); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 78, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = NULL;
+  __pyx_t_4 = 0;
+  #if CYTHON_UNPACK_METHODS
+  if (likely(PyMethod_Check(__pyx_t_1))) {
+    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
+    if (likely(__pyx_t_2)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+      __Pyx_INCREF(__pyx_t_2);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_1, function);
+      __pyx_t_4 = 1;
+    }
+  }
+  #endif
+  {
+    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
+    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+    if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 78, __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/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":80
+ *         self._poller_thread.start()
+ * 
+ *         self._read_socket, self._write_socket = socket.socketpair()             # <<<<<<<<<<<<<<
+ *         self._write_fd = self._write_socket.fileno()
+ *         self._loops = {}
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_socket); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 80, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_socketpair); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 80, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = NULL;
+  __pyx_t_4 = 0;
+  #if CYTHON_UNPACK_METHODS
+  if (unlikely(PyMethod_Check(__pyx_t_2))) {
+    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
+    if (likely(__pyx_t_1)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_1);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
+      __pyx_t_4 = 1;
+    }
+  }
+  #endif
+  {
+    PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL};
+    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+    if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 80, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  }
+  if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) {
+    PyObject* sequence = __pyx_t_3;
+    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(7, 80, __pyx_L1_error)
+    }
+    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+    if (likely(PyTuple_CheckExact(sequence))) {
+      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
+      __pyx_t_1 = PyTuple_GET_ITEM(sequence, 1); 
+    } else {
+      __pyx_t_2 = PyList_GET_ITEM(sequence, 0); 
+      __pyx_t_1 = PyList_GET_ITEM(sequence, 1); 
+    }
+    __Pyx_INCREF(__pyx_t_2);
+    __Pyx_INCREF(__pyx_t_1);
+    #else
+    __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 80, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_1 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 80, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    #endif
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  } else {
+    Py_ssize_t index = -1;
+    __pyx_t_5 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 80, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __pyx_t_6 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5);
+    index = 0; __pyx_t_2 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed;
+    __Pyx_GOTREF(__pyx_t_2);
+    index = 1; __pyx_t_1 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_1)) goto __pyx_L3_unpacking_failed;
+    __Pyx_GOTREF(__pyx_t_1);
+    if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_5), 2) < 0) __PYX_ERR(7, 80, __pyx_L1_error)
+    __pyx_t_6 = NULL;
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    goto __pyx_L4_unpacking_done;
+    __pyx_L3_unpacking_failed:;
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __pyx_t_6 = NULL;
+    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
+    __PYX_ERR(7, 80, __pyx_L1_error)
+    __pyx_L4_unpacking_done:;
+  }
+  __Pyx_GIVEREF(__pyx_t_2);
+  __Pyx_GOTREF(__pyx_v_self->_read_socket);
+  __Pyx_DECREF(__pyx_v_self->_read_socket);
+  __pyx_v_self->_read_socket = __pyx_t_2;
+  __pyx_t_2 = 0;
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->_write_socket);
+  __Pyx_DECREF(__pyx_v_self->_write_socket);
+  __pyx_v_self->_write_socket = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":81
+ * 
+ *         self._read_socket, self._write_socket = socket.socketpair()
+ *         self._write_fd = self._write_socket.fileno()             # <<<<<<<<<<<<<<
+ *         self._loops = {}
+ * 
+ */
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_write_socket, __pyx_n_s_fileno); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 81, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = NULL;
+  __pyx_t_4 = 0;
+  #if CYTHON_UNPACK_METHODS
+  if (likely(PyMethod_Check(__pyx_t_1))) {
+    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
+    if (likely(__pyx_t_2)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+      __Pyx_INCREF(__pyx_t_2);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_1, function);
+      __pyx_t_4 = 1;
+    }
+  }
+  #endif
+  {
+    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
+    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+    if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 81, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  }
+  __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(7, 81, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_v_self->_write_fd = __pyx_t_7;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":82
+ *         self._read_socket, self._write_socket = socket.socketpair()
+ *         self._write_fd = self._write_socket.fileno()
+ *         self._loops = {}             # <<<<<<<<<<<<<<
+ * 
+ *         # The read socket might be read by multiple threads. But only one of them will
+ */
+  __pyx_t_3 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 82, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_3);
+  __Pyx_GOTREF(__pyx_v_self->_loops);
+  __Pyx_DECREF(__pyx_v_self->_loops);
+  __pyx_v_self->_loops = ((PyObject*)__pyx_t_3);
+  __pyx_t_3 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":87
+ *         # read the 1 byte sent by the poller thread. This setting is essential to allow
+ *         # multiple loops in multiple threads bound to the same poller.
+ *         self._read_socket.setblocking(False)             # <<<<<<<<<<<<<<
+ * 
+ *         self._queue = cpp_event_queue()
+ */
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_read_socket, __pyx_n_s_setblocking); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 87, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = NULL;
+  __pyx_t_4 = 0;
+  #if CYTHON_UNPACK_METHODS
+  if (likely(PyMethod_Check(__pyx_t_1))) {
+    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
+    if (likely(__pyx_t_2)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+      __Pyx_INCREF(__pyx_t_2);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_1, function);
+      __pyx_t_4 = 1;
+    }
+  }
+  #endif
+  {
+    PyObject *__pyx_callargs[2] = {__pyx_t_2, Py_False};
+    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+    if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 87, __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/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":89
+ *         self._read_socket.setblocking(False)
+ * 
+ *         self._queue = cpp_event_queue()             # <<<<<<<<<<<<<<
+ * 
+ *     def bind_loop(self, object loop):
+ */
+  __pyx_v_self->_queue = __pyx_t_7_cython_6cygrpc_cpp_event_queue();
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":74
+ * cdef class PollerCompletionQueue(BaseCompletionQueue):
+ * 
+ *     def __cinit__(self):             # <<<<<<<<<<<<<<
+ *         self._cq = grpc_completion_queue_create_for_next(NULL)
+ *         self._shutdown = False
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  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_AddTraceback("_cython.cygrpc.PollerCompletionQueue.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":91
+ *         self._queue = cpp_event_queue()
+ * 
+ *     def bind_loop(self, object loop):             # <<<<<<<<<<<<<<
+ *         if loop in self._loops:
+ *             return
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_21PollerCompletionQueue_3bind_loop(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_21PollerCompletionQueue_3bind_loop = {"bind_loop", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_21PollerCompletionQueue_3bind_loop, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_21PollerCompletionQueue_3bind_loop(PyObject *__pyx_v_self, 
+#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_loop = 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("bind_loop (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_loop,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_loop)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(7, 91, __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, "bind_loop") < 0)) __PYX_ERR(7, 91, __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_loop = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("bind_loop", 1, 1, 1, __pyx_nargs); __PYX_ERR(7, 91, __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("_cython.cygrpc.PollerCompletionQueue.bind_loop", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_21PollerCompletionQueue_2bind_loop(((struct __pyx_obj_7_cython_6cygrpc_PollerCompletionQueue *)__pyx_v_self), __pyx_v_loop);
+
+  /* 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_7_cython_6cygrpc_21PollerCompletionQueue_2bind_loop(struct __pyx_obj_7_cython_6cygrpc_PollerCompletionQueue *__pyx_v_self, PyObject *__pyx_v_loop) {
+  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("bind_loop", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":92
+ * 
+ *     def bind_loop(self, object loop):
+ *         if loop in self._loops:             # <<<<<<<<<<<<<<
+ *             return
+ *         else:
+ */
+  if (unlikely(__pyx_v_self->_loops == Py_None)) {
+    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
+    __PYX_ERR(7, 92, __pyx_L1_error)
+  }
+  __pyx_t_1 = (__Pyx_PyDict_ContainsTF(__pyx_v_loop, __pyx_v_self->_loops, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(7, 92, __pyx_L1_error)
+  if (__pyx_t_1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":93
+ *     def bind_loop(self, object loop):
+ *         if loop in self._loops:
+ *             return             # <<<<<<<<<<<<<<
+ *         else:
+ *             self._loops[loop] = _BoundEventLoop(loop, self._read_socket, self._handle_events)
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":92
+ * 
+ *     def bind_loop(self, object loop):
+ *         if loop in self._loops:             # <<<<<<<<<<<<<<
+ *             return
+ *         else:
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":95
+ *             return
+ *         else:
+ *             self._loops[loop] = _BoundEventLoop(loop, self._read_socket, self._handle_events)             # <<<<<<<<<<<<<<
+ * 
+ *     cdef void _poll(self) nogil:
+ */
+  /*else*/ {
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_handle_events); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 95, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 95, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_INCREF(__pyx_v_loop);
+    __Pyx_GIVEREF(__pyx_v_loop);
+    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_loop)) __PYX_ERR(7, 95, __pyx_L1_error);
+    __Pyx_INCREF(__pyx_v_self->_read_socket);
+    __Pyx_GIVEREF(__pyx_v_self->_read_socket);
+    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_self->_read_socket)) __PYX_ERR(7, 95, __pyx_L1_error);
+    __Pyx_GIVEREF(__pyx_t_2);
+    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2)) __PYX_ERR(7, 95, __pyx_L1_error);
+    __pyx_t_2 = 0;
+    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_7_cython_6cygrpc__BoundEventLoop), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 95, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (unlikely(__pyx_v_self->_loops == Py_None)) {
+      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+      __PYX_ERR(7, 95, __pyx_L1_error)
+    }
+    if (unlikely((PyDict_SetItem(__pyx_v_self->_loops, __pyx_v_loop, __pyx_t_2) < 0))) __PYX_ERR(7, 95, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":91
+ *         self._queue = cpp_event_queue()
+ * 
+ *     def bind_loop(self, object loop):             # <<<<<<<<<<<<<<
+ *         if loop in self._loops:
+ *             return
+ */
+
+  /* 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_AddTraceback("_cython.cygrpc.PollerCompletionQueue.bind_loop", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":97
+ *             self._loops[loop] = _BoundEventLoop(loop, self._read_socket, self._handle_events)
+ * 
+ *     cdef void _poll(self) nogil:             # <<<<<<<<<<<<<<
+ *         cdef grpc_event event
+ *         cdef CallbackContext *context
+ */
+
+static void __pyx_f_7_cython_6cygrpc_21PollerCompletionQueue__poll(struct __pyx_obj_7_cython_6cygrpc_PollerCompletionQueue *__pyx_v_self) {
+  grpc_event __pyx_v_event;
+  __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;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  #ifdef WITH_THREAD
+  PyGILState_STATE __pyx_gilstate_save;
+  #endif
+  __Pyx_RefNannySetupContext("_poll", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":101
+ *         cdef CallbackContext *context
+ * 
+ *         while not self._shutdown:             # <<<<<<<<<<<<<<
+ *             event = grpc_completion_queue_next(self._cq,
+ *                                                _GPR_INF_FUTURE,
+ */
+  while (1) {
+    __pyx_t_1 = (!__pyx_v_self->_shutdown);
+    if (!__pyx_t_1) break;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":102
+ * 
+ *         while not self._shutdown:
+ *             event = grpc_completion_queue_next(self._cq,             # <<<<<<<<<<<<<<
+ *                                                _GPR_INF_FUTURE,
+ *                                                NULL)
+ */
+    __pyx_v_event = grpc_completion_queue_next(__pyx_v_self->__pyx_base._cq, __pyx_v_7_cython_6cygrpc__GPR_INF_FUTURE, NULL);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":106
+ *                                                NULL)
+ * 
+ *             if event.type == GRPC_QUEUE_TIMEOUT:             # <<<<<<<<<<<<<<
+ *                 with gil:
+ *                     raise AssertionError("Core should not return GRPC_QUEUE_TIMEOUT!")
+ */
+    switch (__pyx_v_event.type) {
+      case GRPC_QUEUE_TIMEOUT:
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":107
+ * 
+ *             if event.type == GRPC_QUEUE_TIMEOUT:
+ *                 with gil:             # <<<<<<<<<<<<<<
+ *                     raise AssertionError("Core should not return GRPC_QUEUE_TIMEOUT!")
+ *             elif event.type == GRPC_QUEUE_SHUTDOWN:
+ */
+      {
+          #ifdef WITH_THREAD
+          PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
+          #endif
+          /*try:*/ {
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":108
+ *             if event.type == GRPC_QUEUE_TIMEOUT:
+ *                 with gil:
+ *                     raise AssertionError("Core should not return GRPC_QUEUE_TIMEOUT!")             # <<<<<<<<<<<<<<
+ *             elif event.type == GRPC_QUEUE_SHUTDOWN:
+ *                 self._shutdown = True
+ */
+            __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_AssertionError, __pyx_tuple__50, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 108, __pyx_L8_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(7, 108, __pyx_L8_error)
+          }
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":107
+ * 
+ *             if event.type == GRPC_QUEUE_TIMEOUT:
+ *                 with gil:             # <<<<<<<<<<<<<<
+ *                     raise AssertionError("Core should not return GRPC_QUEUE_TIMEOUT!")
+ *             elif event.type == GRPC_QUEUE_SHUTDOWN:
+ */
+          /*finally:*/ {
+            __pyx_L8_error: {
+              #ifdef WITH_THREAD
+              __Pyx_PyGILState_Release(__pyx_gilstate_save);
+              #endif
+              goto __pyx_L1_error;
+            }
+          }
+      }
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":106
+ *                                                NULL)
+ * 
+ *             if event.type == GRPC_QUEUE_TIMEOUT:             # <<<<<<<<<<<<<<
+ *                 with gil:
+ *                     raise AssertionError("Core should not return GRPC_QUEUE_TIMEOUT!")
+ */
+      break;
+      case GRPC_QUEUE_SHUTDOWN:
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":110
+ *                     raise AssertionError("Core should not return GRPC_QUEUE_TIMEOUT!")
+ *             elif event.type == GRPC_QUEUE_SHUTDOWN:
+ *                 self._shutdown = True             # <<<<<<<<<<<<<<
+ *             else:
+ *                 self._queue_mutex.lock()
+ */
+      __pyx_v_self->_shutdown = 1;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":109
+ *                 with gil:
+ *                     raise AssertionError("Core should not return GRPC_QUEUE_TIMEOUT!")
+ *             elif event.type == GRPC_QUEUE_SHUTDOWN:             # <<<<<<<<<<<<<<
+ *                 self._shutdown = True
+ *             else:
+ */
+      break;
+      default:
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":112
+ *                 self._shutdown = True
+ *             else:
+ *                 self._queue_mutex.lock()             # <<<<<<<<<<<<<<
+ *                 self._queue.push(event)
+ *                 self._queue_mutex.unlock()
+ */
+      __pyx_v_self->_queue_mutex.lock();
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":113
+ *             else:
+ *                 self._queue_mutex.lock()
+ *                 self._queue.push(event)             # <<<<<<<<<<<<<<
+ *                 self._queue_mutex.unlock()
+ *                 if _has_fd_monitoring:
+ */
+      __pyx_v_self->_queue.push(__pyx_v_event);
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":114
+ *                 self._queue_mutex.lock()
+ *                 self._queue.push(event)
+ *                 self._queue_mutex.unlock()             # <<<<<<<<<<<<<<
+ *                 if _has_fd_monitoring:
+ *                     _unified_socket_write(self._write_fd)
+ */
+      __pyx_v_self->_queue_mutex.unlock();
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":115
+ *                 self._queue.push(event)
+ *                 self._queue_mutex.unlock()
+ *                 if _has_fd_monitoring:             # <<<<<<<<<<<<<<
+ *                     _unified_socket_write(self._write_fd)
+ *                 else:
+ */
+      if (__pyx_v_7_cython_6cygrpc__has_fd_monitoring) {
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":116
+ *                 self._queue_mutex.unlock()
+ *                 if _has_fd_monitoring:
+ *                     _unified_socket_write(self._write_fd)             # <<<<<<<<<<<<<<
+ *                 else:
+ *                     with gil:
+ */
+        __pyx_f_7_cython_6cygrpc__unified_socket_write(__pyx_v_self->_write_fd); if (unlikely(__Pyx_ErrOccurredWithGIL())) __PYX_ERR(7, 116, __pyx_L1_error)
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":115
+ *                 self._queue.push(event)
+ *                 self._queue_mutex.unlock()
+ *                 if _has_fd_monitoring:             # <<<<<<<<<<<<<<
+ *                     _unified_socket_write(self._write_fd)
+ *                 else:
+ */
+        goto __pyx_L10;
+      }
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":118
+ *                     _unified_socket_write(self._write_fd)
+ *                 else:
+ *                     with gil:             # <<<<<<<<<<<<<<
+ *                         # Event loops can be paused or killed at any time. So,
+ *                         # instead of deligate to any thread, the polling thread
+ */
+      /*else*/ {
+        {
+            #ifdef WITH_THREAD
+            PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
+            #endif
+            /*try:*/ {
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":122
+ *                         # instead of deligate to any thread, the polling thread
+ *                         # should handle the distribution of the event.
+ *                         self._handle_events(None)             # <<<<<<<<<<<<<<
+ * 
+ *     def _poll_wrapper(self):
+ */
+              __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_handle_events); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 122, __pyx_L14_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, Py_None};
+                __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(7, 122, __pyx_L14_error)
+                __Pyx_GOTREF(__pyx_t_2);
+                __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+              }
+              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+            }
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":118
+ *                     _unified_socket_write(self._write_fd)
+ *                 else:
+ *                     with gil:             # <<<<<<<<<<<<<<
+ *                         # Event loops can be paused or killed at any time. So,
+ *                         # instead of deligate to any thread, the polling thread
+ */
+            /*finally:*/ {
+              /*normal exit:*/{
+                #ifdef WITH_THREAD
+                __Pyx_PyGILState_Release(__pyx_gilstate_save);
+                #endif
+                goto __pyx_L15;
+              }
+              __pyx_L14_error: {
+                #ifdef WITH_THREAD
+                __Pyx_PyGILState_Release(__pyx_gilstate_save);
+                #endif
+                goto __pyx_L1_error;
+              }
+              __pyx_L15:;
+            }
+        }
+      }
+      __pyx_L10:;
+      break;
+    }
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":97
+ *             self._loops[loop] = _BoundEventLoop(loop, self._read_socket, self._handle_events)
+ * 
+ *     cdef void _poll(self) nogil:             # <<<<<<<<<<<<<<
+ *         cdef grpc_event event
+ *         cdef CallbackContext *context
+ */
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  #ifdef WITH_THREAD
+  __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
+  #endif
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("_cython.cygrpc.PollerCompletionQueue._poll", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  #ifdef WITH_THREAD
+  __Pyx_PyGILState_Release(__pyx_gilstate_save);
+  #endif
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContextNogil()
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":124
+ *                         self._handle_events(None)
+ * 
+ *     def _poll_wrapper(self):             # <<<<<<<<<<<<<<
+ *         with nogil:
+ *             self._poll()
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_21PollerCompletionQueue_5_poll_wrapper(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_21PollerCompletionQueue_5_poll_wrapper = {"_poll_wrapper", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_21PollerCompletionQueue_5_poll_wrapper, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_21PollerCompletionQueue_5_poll_wrapper(PyObject *__pyx_v_self, 
+#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("_poll_wrapper (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("_poll_wrapper", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "_poll_wrapper", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_21PollerCompletionQueue_4_poll_wrapper(((struct __pyx_obj_7_cython_6cygrpc_PollerCompletionQueue *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_21PollerCompletionQueue_4_poll_wrapper(struct __pyx_obj_7_cython_6cygrpc_PollerCompletionQueue *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_poll_wrapper", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":125
+ * 
+ *     def _poll_wrapper(self):
+ *         with nogil:             # <<<<<<<<<<<<<<
+ *             self._poll()
+ * 
+ */
+  {
+      #ifdef WITH_THREAD
+      PyThreadState *_save;
+      _save = NULL;
+      Py_UNBLOCK_THREADS
+      __Pyx_FastGIL_Remember();
+      #endif
+      /*try:*/ {
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":126
+ *     def _poll_wrapper(self):
+ *         with nogil:
+ *             self._poll()             # <<<<<<<<<<<<<<
+ * 
+ *     cdef shutdown(self):
+ */
+        ((struct __pyx_vtabstruct_7_cython_6cygrpc_PollerCompletionQueue *)__pyx_v_self->__pyx_base.__pyx_vtab)->_poll(__pyx_v_self); if (unlikely(__Pyx_ErrOccurredWithGIL())) __PYX_ERR(7, 126, __pyx_L4_error)
+      }
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":125
+ * 
+ *     def _poll_wrapper(self):
+ *         with nogil:             # <<<<<<<<<<<<<<
+ *             self._poll()
+ * 
+ */
+      /*finally:*/ {
+        /*normal exit:*/{
+          #ifdef WITH_THREAD
+          __Pyx_FastGIL_Forget();
+          Py_BLOCK_THREADS
+          #endif
+          goto __pyx_L5;
+        }
+        __pyx_L4_error: {
+          #ifdef WITH_THREAD
+          __Pyx_FastGIL_Forget();
+          Py_BLOCK_THREADS
+          #endif
+          goto __pyx_L1_error;
+        }
+        __pyx_L5:;
+      }
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":124
+ *                         self._handle_events(None)
+ * 
+ *     def _poll_wrapper(self):             # <<<<<<<<<<<<<<
+ *         with nogil:
+ *             self._poll()
+ */
+
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc.PollerCompletionQueue._poll_wrapper", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":128
+ *             self._poll()
+ * 
+ *     cdef shutdown(self):             # <<<<<<<<<<<<<<
+ *         # Removes the socket hook from loops
+ *         for loop in self._loops:
+ */
+
+static PyObject *__pyx_f_7_cython_6cygrpc_21PollerCompletionQueue_shutdown(struct __pyx_obj_7_cython_6cygrpc_PollerCompletionQueue *__pyx_v_self) {
+  PyObject *__pyx_v_loop = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  Py_ssize_t __pyx_t_2;
+  Py_ssize_t __pyx_t_3;
+  int __pyx_t_4;
+  PyObject *__pyx_t_5 = NULL;
+  int __pyx_t_6;
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
+  unsigned int __pyx_t_9;
+  int __pyx_t_10;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("shutdown", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":130
+ *     cdef shutdown(self):
+ *         # Removes the socket hook from loops
+ *         for loop in self._loops:             # <<<<<<<<<<<<<<
+ *             self._loops.get(loop).close()
+ * 
+ */
+  __pyx_t_2 = 0;
+  if (unlikely(__pyx_v_self->_loops == Py_None)) {
+    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
+    __PYX_ERR(7, 130, __pyx_L1_error)
+  }
+  __pyx_t_5 = __Pyx_dict_iterator(__pyx_v_self->_loops, 1, ((PyObject *)NULL), (&__pyx_t_3), (&__pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 130, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_1);
+  __pyx_t_1 = __pyx_t_5;
+  __pyx_t_5 = 0;
+  while (1) {
+    __pyx_t_6 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_3, &__pyx_t_2, &__pyx_t_5, NULL, NULL, __pyx_t_4);
+    if (unlikely(__pyx_t_6 == 0)) break;
+    if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(7, 130, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_XDECREF_SET(__pyx_v_loop, __pyx_t_5);
+    __pyx_t_5 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":131
+ *         # Removes the socket hook from loops
+ *         for loop in self._loops:
+ *             self._loops.get(loop).close()             # <<<<<<<<<<<<<<
+ * 
+ *         # TODO(https://github.com/grpc/grpc/issues/22365) perform graceful shutdown
+ */
+    if (unlikely(__pyx_v_self->_loops == Py_None)) {
+      PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
+      __PYX_ERR(7, 131, __pyx_L1_error)
+    }
+    __pyx_t_7 = __Pyx_PyDict_GetItemDefault(__pyx_v_self->_loops, __pyx_v_loop, Py_None); if (unlikely(!__pyx_t_7)) __PYX_ERR(7, 131, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_7);
+    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_close); if (unlikely(!__pyx_t_8)) __PYX_ERR(7, 131, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_8);
+    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    __pyx_t_7 = NULL;
+    __pyx_t_9 = 0;
+    #if CYTHON_UNPACK_METHODS
+    if (likely(PyMethod_Check(__pyx_t_8))) {
+      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8);
+      if (likely(__pyx_t_7)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
+        __Pyx_INCREF(__pyx_t_7);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_8, function);
+        __pyx_t_9 = 1;
+      }
+    }
+    #endif
+    {
+      PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL};
+      __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_9, 0+__pyx_t_9);
+      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+      if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 131, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_5);
+      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  }
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":134
+ * 
+ *         # TODO(https://github.com/grpc/grpc/issues/22365) perform graceful shutdown
+ *         grpc_completion_queue_shutdown(self._cq)             # <<<<<<<<<<<<<<
+ *         while not self._shutdown:
+ *             self._poller_thread.join(timeout=_POLL_AWAKE_INTERVAL_S)
+ */
+  grpc_completion_queue_shutdown(__pyx_v_self->__pyx_base._cq);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":135
+ *         # TODO(https://github.com/grpc/grpc/issues/22365) perform graceful shutdown
+ *         grpc_completion_queue_shutdown(self._cq)
+ *         while not self._shutdown:             # <<<<<<<<<<<<<<
+ *             self._poller_thread.join(timeout=_POLL_AWAKE_INTERVAL_S)
+ *         grpc_completion_queue_destroy(self._cq)
+ */
+  while (1) {
+    __pyx_t_10 = (!__pyx_v_self->_shutdown);
+    if (!__pyx_t_10) break;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":136
+ *         grpc_completion_queue_shutdown(self._cq)
+ *         while not self._shutdown:
+ *             self._poller_thread.join(timeout=_POLL_AWAKE_INTERVAL_S)             # <<<<<<<<<<<<<<
+ *         grpc_completion_queue_destroy(self._cq)
+ * 
+ */
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_poller_thread, __pyx_n_s_join); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 136, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 136, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_8 = PyFloat_FromDouble(__pyx_v_7_cython_6cygrpc__POLL_AWAKE_INTERVAL_S); if (unlikely(!__pyx_t_8)) __PYX_ERR(7, 136, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_8);
+    if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_timeout, __pyx_t_8) < 0) __PYX_ERR(7, 136, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+    __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(7, 136, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_8);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":137
+ *         while not self._shutdown:
+ *             self._poller_thread.join(timeout=_POLL_AWAKE_INTERVAL_S)
+ *         grpc_completion_queue_destroy(self._cq)             # <<<<<<<<<<<<<<
+ * 
+ *         # Clean up socket resources
+ */
+  grpc_completion_queue_destroy(__pyx_v_self->__pyx_base._cq);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":140
+ * 
+ *         # Clean up socket resources
+ *         self._read_socket.close()             # <<<<<<<<<<<<<<
+ *         self._write_socket.close()
+ * 
+ */
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_read_socket, __pyx_n_s_close); if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 140, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = NULL;
+  __pyx_t_9 = 0;
+  #if CYTHON_UNPACK_METHODS
+  if (likely(PyMethod_Check(__pyx_t_5))) {
+    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5);
+    if (likely(__pyx_t_1)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+      __Pyx_INCREF(__pyx_t_1);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_5, function);
+      __pyx_t_9 = 1;
+    }
+  }
+  #endif
+  {
+    PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL};
+    __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_9, 0+__pyx_t_9);
+    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+    if (unlikely(!__pyx_t_8)) __PYX_ERR(7, 140, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_8);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  }
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":141
+ *         # Clean up socket resources
+ *         self._read_socket.close()
+ *         self._write_socket.close()             # <<<<<<<<<<<<<<
+ * 
+ *     def _handle_events(self, object context_loop):
+ */
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_write_socket, __pyx_n_s_close); if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 141, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = NULL;
+  __pyx_t_9 = 0;
+  #if CYTHON_UNPACK_METHODS
+  if (likely(PyMethod_Check(__pyx_t_5))) {
+    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5);
+    if (likely(__pyx_t_1)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+      __Pyx_INCREF(__pyx_t_1);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_5, function);
+      __pyx_t_9 = 1;
+    }
+  }
+  #endif
+  {
+    PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL};
+    __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_9, 0+__pyx_t_9);
+    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+    if (unlikely(!__pyx_t_8)) __PYX_ERR(7, 141, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_8);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  }
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":128
+ *             self._poll()
+ * 
+ *     cdef shutdown(self):             # <<<<<<<<<<<<<<
+ *         # Removes the socket hook from loops
+ *         for loop in self._loops:
+ */
+
+  /* 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_7);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_AddTraceback("_cython.cygrpc.PollerCompletionQueue.shutdown", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_loop);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":143
+ *         self._write_socket.close()
+ * 
+ *     def _handle_events(self, object context_loop):             # <<<<<<<<<<<<<<
+ *         cdef bytes data
+ *         if _has_fd_monitoring:
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_21PollerCompletionQueue_7_handle_events(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_21PollerCompletionQueue_7_handle_events = {"_handle_events", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_21PollerCompletionQueue_7_handle_events, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_21PollerCompletionQueue_7_handle_events(PyObject *__pyx_v_self, 
+#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_context_loop = 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("_handle_events (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_context_loop,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_context_loop)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(7, 143, __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, "_handle_events") < 0)) __PYX_ERR(7, 143, __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_context_loop = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("_handle_events", 1, 1, 1, __pyx_nargs); __PYX_ERR(7, 143, __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("_cython.cygrpc.PollerCompletionQueue._handle_events", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_21PollerCompletionQueue_6_handle_events(((struct __pyx_obj_7_cython_6cygrpc_PollerCompletionQueue *)__pyx_v_self), __pyx_v_context_loop);
+
+  /* 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_7_cython_6cygrpc_21PollerCompletionQueue_6_handle_events(struct __pyx_obj_7_cython_6cygrpc_PollerCompletionQueue *__pyx_v_self, PyObject *__pyx_v_context_loop) {
+  CYTHON_UNUSED PyObject *__pyx_v_data = 0;
+  grpc_event __pyx_v_event;
+  struct __pyx_t_7_cython_6cygrpc_CallbackContext *__pyx_v_context;
+  PyObject *__pyx_v_loop = 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;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_handle_events", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":145
+ *     def _handle_events(self, object context_loop):
+ *         cdef bytes data
+ *         if _has_fd_monitoring:             # <<<<<<<<<<<<<<
+ *             # If fd monitoring is working, clean the socket without blocking.
+ *             data = self._read_socket.recv(1)
+ */
+  if (__pyx_v_7_cython_6cygrpc__has_fd_monitoring) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":147
+ *         if _has_fd_monitoring:
+ *             # If fd monitoring is working, clean the socket without blocking.
+ *             data = self._read_socket.recv(1)             # <<<<<<<<<<<<<<
+ *         cdef grpc_event event
+ *         cdef CallbackContext *context
+ */
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_read_socket, __pyx_n_s_recv); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 147, __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_int_1};
+      __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(7, 147, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    }
+    if (!(likely(PyBytes_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("bytes", __pyx_t_1))) __PYX_ERR(7, 147, __pyx_L1_error)
+    __pyx_v_data = ((PyObject*)__pyx_t_1);
+    __pyx_t_1 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":145
+ *     def _handle_events(self, object context_loop):
+ *         cdef bytes data
+ *         if _has_fd_monitoring:             # <<<<<<<<<<<<<<
+ *             # If fd monitoring is working, clean the socket without blocking.
+ *             data = self._read_socket.recv(1)
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":151
+ *         cdef CallbackContext *context
+ * 
+ *         while True:             # <<<<<<<<<<<<<<
+ *             self._queue_mutex.lock()
+ *             if self._queue.empty():
+ */
+  while (1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":152
+ * 
+ *         while True:
+ *             self._queue_mutex.lock()             # <<<<<<<<<<<<<<
+ *             if self._queue.empty():
+ *                 self._queue_mutex.unlock()
+ */
+    __pyx_v_self->_queue_mutex.lock();
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":153
+ *         while True:
+ *             self._queue_mutex.lock()
+ *             if self._queue.empty():             # <<<<<<<<<<<<<<
+ *                 self._queue_mutex.unlock()
+ *                 break
+ */
+    __pyx_t_5 = __pyx_v_self->_queue.empty();
+    if (__pyx_t_5) {
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":154
+ *             self._queue_mutex.lock()
+ *             if self._queue.empty():
+ *                 self._queue_mutex.unlock()             # <<<<<<<<<<<<<<
+ *                 break
+ *             else:
+ */
+      __pyx_v_self->_queue_mutex.unlock();
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":155
+ *             if self._queue.empty():
+ *                 self._queue_mutex.unlock()
+ *                 break             # <<<<<<<<<<<<<<
+ *             else:
+ *                 event = self._queue.front()
+ */
+      goto __pyx_L5_break;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":153
+ *         while True:
+ *             self._queue_mutex.lock()
+ *             if self._queue.empty():             # <<<<<<<<<<<<<<
+ *                 self._queue_mutex.unlock()
+ *                 break
+ */
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":157
+ *                 break
+ *             else:
+ *                 event = self._queue.front()             # <<<<<<<<<<<<<<
+ *                 self._queue.pop()
+ *                 self._queue_mutex.unlock()
+ */
+    /*else*/ {
+      __pyx_v_event = __pyx_v_self->_queue.front();
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":158
+ *             else:
+ *                 event = self._queue.front()
+ *                 self._queue.pop()             # <<<<<<<<<<<<<<
+ *                 self._queue_mutex.unlock()
+ * 
+ */
+      __pyx_v_self->_queue.pop();
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":159
+ *                 event = self._queue.front()
+ *                 self._queue.pop()
+ *                 self._queue_mutex.unlock()             # <<<<<<<<<<<<<<
+ * 
+ *             context = <CallbackContext *>event.tag
+ */
+      __pyx_v_self->_queue_mutex.unlock();
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":161
+ *                 self._queue_mutex.unlock()
+ * 
+ *             context = <CallbackContext *>event.tag             # <<<<<<<<<<<<<<
+ *             loop = <object>context.loop
+ *             if loop is context_loop:
+ */
+    __pyx_v_context = ((struct __pyx_t_7_cython_6cygrpc_CallbackContext *)__pyx_v_event.tag);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":162
+ * 
+ *             context = <CallbackContext *>event.tag
+ *             loop = <object>context.loop             # <<<<<<<<<<<<<<
+ *             if loop is context_loop:
+ *                 # Executes callbacks: complete the future
+ */
+    __pyx_t_1 = ((PyObject *)__pyx_v_context->loop);
+    __Pyx_INCREF(__pyx_t_1);
+    __Pyx_XDECREF_SET(__pyx_v_loop, __pyx_t_1);
+    __pyx_t_1 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":163
+ *             context = <CallbackContext *>event.tag
+ *             loop = <object>context.loop
+ *             if loop is context_loop:             # <<<<<<<<<<<<<<
+ *                 # Executes callbacks: complete the future
+ *                 CallbackWrapper.functor_run(
+ */
+    __pyx_t_5 = (__pyx_v_loop == __pyx_v_context_loop);
+    if (__pyx_t_5) {
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":165
+ *             if loop is context_loop:
+ *                 # Executes callbacks: complete the future
+ *                 CallbackWrapper.functor_run(             # <<<<<<<<<<<<<<
+ *                     <grpc_completion_queue_functor *>event.tag,
+ *                     event.success
+ */
+      __pyx_f_7_cython_6cygrpc_15CallbackWrapper_functor_run(((grpc_completion_queue_functor *)__pyx_v_event.tag), __pyx_v_event.success);
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":163
+ *             context = <CallbackContext *>event.tag
+ *             loop = <object>context.loop
+ *             if loop is context_loop:             # <<<<<<<<<<<<<<
+ *                 # Executes callbacks: complete the future
+ *                 CallbackWrapper.functor_run(
+ */
+      goto __pyx_L7;
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":170
+ *                 )
+ *             else:
+ *                 loop.call_soon_threadsafe(             # <<<<<<<<<<<<<<
+ *                     _handle_callback_wrapper,
+ *                     <CallbackWrapper>context.callback_wrapper,
+ */
+    /*else*/ {
+      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_loop, __pyx_n_s_call_soon_threadsafe); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 170, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":171
+ *             else:
+ *                 loop.call_soon_threadsafe(
+ *                     _handle_callback_wrapper,             # <<<<<<<<<<<<<<
+ *                     <CallbackWrapper>context.callback_wrapper,
+ *                     event.success
+ */
+      __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_handle_callback_wrapper); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 171, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":173
+ *                     _handle_callback_wrapper,
+ *                     <CallbackWrapper>context.callback_wrapper,
+ *                     event.success             # <<<<<<<<<<<<<<
+ *                 )
+ */
+      __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_event.success); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 173, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_6);
+      __pyx_t_7 = NULL;
+      __pyx_t_4 = 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_4 = 1;
+        }
+      }
+      #endif
+      {
+        PyObject *__pyx_callargs[4] = {__pyx_t_7, __pyx_t_3, ((PyObject *)__pyx_v_context->callback_wrapper), __pyx_t_6};
+        __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 3+__pyx_t_4);
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+        if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 170, __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;
+    }
+    __pyx_L7:;
+  }
+  __pyx_L5_break:;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":143
+ *         self._write_socket.close()
+ * 
+ *     def _handle_events(self, object context_loop):             # <<<<<<<<<<<<<<
+ *         cdef bytes data
+ *         if _has_fd_monitoring:
+ */
+
+  /* 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_6);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_AddTraceback("_cython.cygrpc.PollerCompletionQueue._handle_events", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_data);
+  __Pyx_XDECREF(__pyx_v_loop);
+  __Pyx_XGIVEREF(__pyx_r);
+  __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_7_cython_6cygrpc_21PollerCompletionQueue_9__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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_21PollerCompletionQueue_9__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_21PollerCompletionQueue_9__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_21PollerCompletionQueue_9__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_7_cython_6cygrpc_21PollerCompletionQueue_8__reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc_PollerCompletionQueue *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_21PollerCompletionQueue_8__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_PollerCompletionQueue *__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(10, 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("_cython.cygrpc.PollerCompletionQueue.__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_7_cython_6cygrpc_21PollerCompletionQueue_11__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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_21PollerCompletionQueue_11__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_21PollerCompletionQueue_11__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_21PollerCompletionQueue_11__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(10, 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(10, 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(10, 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("_cython.cygrpc.PollerCompletionQueue.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_21PollerCompletionQueue_10__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc_PollerCompletionQueue *)__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_7_cython_6cygrpc_21PollerCompletionQueue_10__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_PollerCompletionQueue *__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(10, 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("_cython.cygrpc.PollerCompletionQueue.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":18
+ * cdef class CallbackFailureHandler:
+ * 
+ *     def __cinit__(self,             # <<<<<<<<<<<<<<
+ *                   str core_function_name,
+ *                   object error_details,
+ */
+
+/* Python wrapper */
+static int __pyx_pw_7_cython_6cygrpc_22CallbackFailureHandler_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_7_cython_6cygrpc_22CallbackFailureHandler_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_core_function_name = 0;
+  PyObject *__pyx_v_error_details = 0;
+  PyObject *__pyx_v_exception_type = 0;
+  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+  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;
+  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);
+  {
+    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_core_function_name,&__pyx_n_s_error_details,&__pyx_n_s_exception_type,0};
+    if (__pyx_kwds) {
+      Py_ssize_t kw_args;
+      switch (__pyx_nargs) {
+        case  3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
+      switch (__pyx_nargs) {
+        case  0:
+        if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_core_function_name)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 18, __pyx_L3_error)
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_error_details)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 18, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 1); __PYX_ERR(32, 18, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_exception_type)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[2]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 18, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 2); __PYX_ERR(32, 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, "__cinit__") < 0)) __PYX_ERR(32, 18, __pyx_L3_error)
+      }
+    } else if (unlikely(__pyx_nargs != 3)) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+      values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
+      values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
+    }
+    __pyx_v_core_function_name = ((PyObject*)values[0]);
+    __pyx_v_error_details = values[1];
+    __pyx_v_exception_type = values[2];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, __pyx_nargs); __PYX_ERR(32, 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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_AddTraceback("_cython.cygrpc.CallbackFailureHandler.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_core_function_name), (&PyString_Type), 1, "core_function_name", 1))) __PYX_ERR(32, 19, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_22CallbackFailureHandler___cinit__(((struct __pyx_obj_7_cython_6cygrpc_CallbackFailureHandler *)__pyx_v_self), __pyx_v_core_function_name, __pyx_v_error_details, __pyx_v_exception_type);
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = -1;
+  __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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_7_cython_6cygrpc_22CallbackFailureHandler___cinit__(struct __pyx_obj_7_cython_6cygrpc_CallbackFailureHandler *__pyx_v_self, PyObject *__pyx_v_core_function_name, PyObject *__pyx_v_error_details, PyObject *__pyx_v_exception_type) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__cinit__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":23
+ *                   object exception_type):
+ *         """Handles failure by raising exception."""
+ *         self._core_function_name = core_function_name             # <<<<<<<<<<<<<<
+ *         self._error_details = error_details
+ *         self._exception_type = exception_type
+ */
+  __Pyx_INCREF(__pyx_v_core_function_name);
+  __Pyx_GIVEREF(__pyx_v_core_function_name);
+  __Pyx_GOTREF(__pyx_v_self->_core_function_name);
+  __Pyx_DECREF(__pyx_v_self->_core_function_name);
+  __pyx_v_self->_core_function_name = __pyx_v_core_function_name;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":24
+ *         """Handles failure by raising exception."""
+ *         self._core_function_name = core_function_name
+ *         self._error_details = error_details             # <<<<<<<<<<<<<<
+ *         self._exception_type = exception_type
+ * 
+ */
+  __Pyx_INCREF(__pyx_v_error_details);
+  __Pyx_GIVEREF(__pyx_v_error_details);
+  __Pyx_GOTREF(__pyx_v_self->_error_details);
+  __Pyx_DECREF(__pyx_v_self->_error_details);
+  __pyx_v_self->_error_details = __pyx_v_error_details;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":25
+ *         self._core_function_name = core_function_name
+ *         self._error_details = error_details
+ *         self._exception_type = exception_type             # <<<<<<<<<<<<<<
+ * 
+ *     cdef handle(self, object future):
+ */
+  __Pyx_INCREF(__pyx_v_exception_type);
+  __Pyx_GIVEREF(__pyx_v_exception_type);
+  __Pyx_GOTREF(__pyx_v_self->_exception_type);
+  __Pyx_DECREF(__pyx_v_self->_exception_type);
+  __pyx_v_self->_exception_type = __pyx_v_exception_type;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":18
+ * cdef class CallbackFailureHandler:
+ * 
+ *     def __cinit__(self,             # <<<<<<<<<<<<<<
+ *                   str core_function_name,
+ *                   object error_details,
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":27
+ *         self._exception_type = exception_type
+ * 
+ *     cdef handle(self, object future):             # <<<<<<<<<<<<<<
+ *         future.set_exception(self._exception_type(
+ *             'Failed "%s": %s' % (self._core_function_name, self._error_details)
+ */
+
+static PyObject *__pyx_f_7_cython_6cygrpc_22CallbackFailureHandler_handle(struct __pyx_obj_7_cython_6cygrpc_CallbackFailureHandler *__pyx_v_self, PyObject *__pyx_v_future) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  unsigned int __pyx_t_7;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("handle", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":28
+ * 
+ *     cdef handle(self, object future):
+ *         future.set_exception(self._exception_type(             # <<<<<<<<<<<<<<
+ *             'Failed "%s": %s' % (self._core_function_name, self._error_details)
+ *         ))
+ */
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_future, __pyx_n_s_set_exception); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 28, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":29
+ *     cdef handle(self, object future):
+ *         future.set_exception(self._exception_type(
+ *             'Failed "%s": %s' % (self._core_function_name, self._error_details)             # <<<<<<<<<<<<<<
+ *         ))
+ * 
+ */
+  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(32, 29, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_INCREF(__pyx_v_self->_core_function_name);
+  __Pyx_GIVEREF(__pyx_v_self->_core_function_name);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_self->_core_function_name)) __PYX_ERR(32, 29, __pyx_L1_error);
+  __Pyx_INCREF(__pyx_v_self->_error_details);
+  __Pyx_GIVEREF(__pyx_v_self->_error_details);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_self->_error_details)) __PYX_ERR(32, 29, __pyx_L1_error);
+  __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_Failed_s_s, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(32, 29, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __Pyx_INCREF(__pyx_v_self->_exception_type);
+  __pyx_t_4 = __pyx_v_self->_exception_type; __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, __pyx_t_5};
+    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 28, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  }
+  __pyx_t_4 = NULL;
+  __pyx_t_7 = 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_7 = 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_7, 1+__pyx_t_7);
+    __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(32, 28, __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/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":27
+ *         self._exception_type = exception_type
+ * 
+ *     cdef handle(self, object future):             # <<<<<<<<<<<<<<
+ *         future.set_exception(self._exception_type(
+ *             'Failed "%s": %s' % (self._core_function_name, self._error_details)
+ */
+
+  /* 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_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("_cython.cygrpc.CallbackFailureHandler.handle", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __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_7_cython_6cygrpc_22CallbackFailureHandler_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_22CallbackFailureHandler_3__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_22CallbackFailureHandler_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_22CallbackFailureHandler_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_7_cython_6cygrpc_22CallbackFailureHandler_2__reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc_CallbackFailureHandler *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_22CallbackFailureHandler_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_CallbackFailureHandler *__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(10, 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("_cython.cygrpc.CallbackFailureHandler.__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_7_cython_6cygrpc_22CallbackFailureHandler_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_22CallbackFailureHandler_5__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_22CallbackFailureHandler_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_22CallbackFailureHandler_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(10, 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(10, 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(10, 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("_cython.cygrpc.CallbackFailureHandler.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_22CallbackFailureHandler_4__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc_CallbackFailureHandler *)__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_7_cython_6cygrpc_22CallbackFailureHandler_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_CallbackFailureHandler *__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(10, 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("_cython.cygrpc.CallbackFailureHandler.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":35
+ * cdef class CallbackWrapper:
+ * 
+ *     def __cinit__(self, object future, object loop, CallbackFailureHandler failure_handler):             # <<<<<<<<<<<<<<
+ *         self.context.functor.functor_run = self.functor_run
+ *         self.context.waiter = <cpython.PyObject*>future
+ */
+
+/* Python wrapper */
+static int __pyx_pw_7_cython_6cygrpc_15CallbackWrapper_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_7_cython_6cygrpc_15CallbackWrapper_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_future = 0;
+  PyObject *__pyx_v_loop = 0;
+  struct __pyx_obj_7_cython_6cygrpc_CallbackFailureHandler *__pyx_v_failure_handler = 0;
+  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+  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;
+  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);
+  {
+    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_future,&__pyx_n_s_loop,&__pyx_n_s_failure_handler,0};
+    if (__pyx_kwds) {
+      Py_ssize_t kw_args;
+      switch (__pyx_nargs) {
+        case  3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
+      switch (__pyx_nargs) {
+        case  0:
+        if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_future)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 35, __pyx_L3_error)
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_loop)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 35, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 1); __PYX_ERR(32, 35, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_failure_handler)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[2]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 35, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 2); __PYX_ERR(32, 35, __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, "__cinit__") < 0)) __PYX_ERR(32, 35, __pyx_L3_error)
+      }
+    } else if (unlikely(__pyx_nargs != 3)) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+      values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
+      values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
+    }
+    __pyx_v_future = values[0];
+    __pyx_v_loop = values[1];
+    __pyx_v_failure_handler = ((struct __pyx_obj_7_cython_6cygrpc_CallbackFailureHandler *)values[2]);
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, __pyx_nargs); __PYX_ERR(32, 35, __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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_AddTraceback("_cython.cygrpc.CallbackWrapper.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_failure_handler), __pyx_ptype_7_cython_6cygrpc_CallbackFailureHandler, 1, "failure_handler", 0))) __PYX_ERR(32, 35, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_15CallbackWrapper___cinit__(((struct __pyx_obj_7_cython_6cygrpc_CallbackWrapper *)__pyx_v_self), __pyx_v_future, __pyx_v_loop, __pyx_v_failure_handler);
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = -1;
+  __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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_7_cython_6cygrpc_15CallbackWrapper___cinit__(struct __pyx_obj_7_cython_6cygrpc_CallbackWrapper *__pyx_v_self, PyObject *__pyx_v_future, PyObject *__pyx_v_loop, struct __pyx_obj_7_cython_6cygrpc_CallbackFailureHandler *__pyx_v_failure_handler) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  void (*__pyx_t_1)(grpc_completion_queue_functor *, int);
+  __Pyx_RefNannySetupContext("__cinit__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":36
+ * 
+ *     def __cinit__(self, object future, object loop, CallbackFailureHandler failure_handler):
+ *         self.context.functor.functor_run = self.functor_run             # <<<<<<<<<<<<<<
+ *         self.context.waiter = <cpython.PyObject*>future
+ *         self.context.loop = <cpython.PyObject*>loop
+ */
+  __pyx_t_1 = ((struct __pyx_vtabstruct_7_cython_6cygrpc_CallbackWrapper *)__pyx_v_self->__pyx_vtab)->functor_run;
+  __pyx_v_self->context.functor.functor_run = __pyx_t_1;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":37
+ *     def __cinit__(self, object future, object loop, CallbackFailureHandler failure_handler):
+ *         self.context.functor.functor_run = self.functor_run
+ *         self.context.waiter = <cpython.PyObject*>future             # <<<<<<<<<<<<<<
+ *         self.context.loop = <cpython.PyObject*>loop
+ *         self.context.failure_handler = <cpython.PyObject*>failure_handler
+ */
+  __pyx_v_self->context.waiter = ((PyObject *)__pyx_v_future);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":38
+ *         self.context.functor.functor_run = self.functor_run
+ *         self.context.waiter = <cpython.PyObject*>future
+ *         self.context.loop = <cpython.PyObject*>loop             # <<<<<<<<<<<<<<
+ *         self.context.failure_handler = <cpython.PyObject*>failure_handler
+ *         self.context.callback_wrapper = <cpython.PyObject*>self
+ */
+  __pyx_v_self->context.loop = ((PyObject *)__pyx_v_loop);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":39
+ *         self.context.waiter = <cpython.PyObject*>future
+ *         self.context.loop = <cpython.PyObject*>loop
+ *         self.context.failure_handler = <cpython.PyObject*>failure_handler             # <<<<<<<<<<<<<<
+ *         self.context.callback_wrapper = <cpython.PyObject*>self
+ *         # NOTE(lidiz) Not using a list here, because this class is critical in
+ */
+  __pyx_v_self->context.failure_handler = ((PyObject *)__pyx_v_failure_handler);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":40
+ *         self.context.loop = <cpython.PyObject*>loop
+ *         self.context.failure_handler = <cpython.PyObject*>failure_handler
+ *         self.context.callback_wrapper = <cpython.PyObject*>self             # <<<<<<<<<<<<<<
+ *         # NOTE(lidiz) Not using a list here, because this class is critical in
+ *         # data path. We should make it as efficient as possible.
+ */
+  __pyx_v_self->context.callback_wrapper = ((PyObject *)__pyx_v_self);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":43
+ *         # NOTE(lidiz) Not using a list here, because this class is critical in
+ *         # data path. We should make it as efficient as possible.
+ *         self._reference_of_future = future             # <<<<<<<<<<<<<<
+ *         self._reference_of_failure_handler = failure_handler
+ *         # NOTE(lidiz) We need to ensure when Core invokes our callback, the
+ */
+  __Pyx_INCREF(__pyx_v_future);
+  __Pyx_GIVEREF(__pyx_v_future);
+  __Pyx_GOTREF(__pyx_v_self->_reference_of_future);
+  __Pyx_DECREF(__pyx_v_self->_reference_of_future);
+  __pyx_v_self->_reference_of_future = __pyx_v_future;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":44
+ *         # data path. We should make it as efficient as possible.
+ *         self._reference_of_future = future
+ *         self._reference_of_failure_handler = failure_handler             # <<<<<<<<<<<<<<
+ *         # NOTE(lidiz) We need to ensure when Core invokes our callback, the
+ *         # callback function itself is not deallocated. Othersise, we will get
+ */
+  __Pyx_INCREF((PyObject *)__pyx_v_failure_handler);
+  __Pyx_GIVEREF((PyObject *)__pyx_v_failure_handler);
+  __Pyx_GOTREF(__pyx_v_self->_reference_of_failure_handler);
+  __Pyx_DECREF(__pyx_v_self->_reference_of_failure_handler);
+  __pyx_v_self->_reference_of_failure_handler = ((PyObject *)__pyx_v_failure_handler);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":48
+ *         # callback function itself is not deallocated. Othersise, we will get
+ *         # a segfault. We can view this as Core holding a ref.
+ *         cpython.Py_INCREF(self)             # <<<<<<<<<<<<<<
+ * 
+ *     @staticmethod
+ */
+  Py_INCREF(((PyObject *)__pyx_v_self));
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":35
+ * cdef class CallbackWrapper:
+ * 
+ *     def __cinit__(self, object future, object loop, CallbackFailureHandler failure_handler):             # <<<<<<<<<<<<<<
+ *         self.context.functor.functor_run = self.functor_run
+ *         self.context.waiter = <cpython.PyObject*>future
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":51
+ * 
+ *     @staticmethod
+ *     cdef void functor_run(             # <<<<<<<<<<<<<<
+ *             grpc_completion_queue_functor* functor,
+ *             int success) noexcept:
+ */
+
+static void __pyx_f_7_cython_6cygrpc_15CallbackWrapper_functor_run(grpc_completion_queue_functor *__pyx_v_functor, int __pyx_v_success) {
+  struct __pyx_t_7_cython_6cygrpc_CallbackContext *__pyx_v_context;
+  PyObject *__pyx_v_waiter = 0;
+  __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_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("functor_run", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":54
+ *             grpc_completion_queue_functor* functor,
+ *             int success) noexcept:
+ *         cdef CallbackContext *context = <CallbackContext *>functor             # <<<<<<<<<<<<<<
+ *         cdef object waiter = <object>context.waiter
+ *         if not waiter.cancelled():
+ */
+  __pyx_v_context = ((struct __pyx_t_7_cython_6cygrpc_CallbackContext *)__pyx_v_functor);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":55
+ *             int success) noexcept:
+ *         cdef CallbackContext *context = <CallbackContext *>functor
+ *         cdef object waiter = <object>context.waiter             # <<<<<<<<<<<<<<
+ *         if not waiter.cancelled():
+ *             if success == 0:
+ */
+  __pyx_t_1 = ((PyObject *)__pyx_v_context->waiter);
+  __Pyx_INCREF(__pyx_t_1);
+  __pyx_v_waiter = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":56
+ *         cdef CallbackContext *context = <CallbackContext *>functor
+ *         cdef object waiter = <object>context.waiter
+ *         if not waiter.cancelled():             # <<<<<<<<<<<<<<
+ *             if success == 0:
+ *                 (<CallbackFailureHandler>context.failure_handler).handle(waiter)
+ */
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_waiter, __pyx_n_s_cancelled); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 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(32, 56, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  }
+  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(32, 56, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_6 = (!__pyx_t_5);
+  if (__pyx_t_6) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":57
+ *         cdef object waiter = <object>context.waiter
+ *         if not waiter.cancelled():
+ *             if success == 0:             # <<<<<<<<<<<<<<
+ *                 (<CallbackFailureHandler>context.failure_handler).handle(waiter)
+ *             else:
+ */
+    __pyx_t_6 = (__pyx_v_success == 0);
+    if (__pyx_t_6) {
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":58
+ *         if not waiter.cancelled():
+ *             if success == 0:
+ *                 (<CallbackFailureHandler>context.failure_handler).handle(waiter)             # <<<<<<<<<<<<<<
+ *             else:
+ *                 waiter.set_result(None)
+ */
+      __pyx_t_1 = ((struct __pyx_vtabstruct_7_cython_6cygrpc_CallbackFailureHandler *)((struct __pyx_obj_7_cython_6cygrpc_CallbackFailureHandler *)__pyx_v_context->failure_handler)->__pyx_vtab)->handle(((struct __pyx_obj_7_cython_6cygrpc_CallbackFailureHandler *)__pyx_v_context->failure_handler), __pyx_v_waiter); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 58, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":57
+ *         cdef object waiter = <object>context.waiter
+ *         if not waiter.cancelled():
+ *             if success == 0:             # <<<<<<<<<<<<<<
+ *                 (<CallbackFailureHandler>context.failure_handler).handle(waiter)
+ *             else:
+ */
+      goto __pyx_L4;
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":60
+ *                 (<CallbackFailureHandler>context.failure_handler).handle(waiter)
+ *             else:
+ *                 waiter.set_result(None)             # <<<<<<<<<<<<<<
+ *         cpython.Py_DECREF(<object>context.callback_wrapper)
+ * 
+ */
+    /*else*/ {
+      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_waiter, __pyx_n_s_set_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 60, __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, Py_None};
+        __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(32, 60, __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;
+    }
+    __pyx_L4:;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":56
+ *         cdef CallbackContext *context = <CallbackContext *>functor
+ *         cdef object waiter = <object>context.waiter
+ *         if not waiter.cancelled():             # <<<<<<<<<<<<<<
+ *             if success == 0:
+ *                 (<CallbackFailureHandler>context.failure_handler).handle(waiter)
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":61
+ *             else:
+ *                 waiter.set_result(None)
+ *         cpython.Py_DECREF(<object>context.callback_wrapper)             # <<<<<<<<<<<<<<
+ * 
+ *     cdef grpc_completion_queue_functor *c_functor(self):
+ */
+  __pyx_t_1 = ((PyObject *)__pyx_v_context->callback_wrapper);
+  __Pyx_INCREF(__pyx_t_1);
+  Py_DECREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":51
+ * 
+ *     @staticmethod
+ *     cdef void functor_run(             # <<<<<<<<<<<<<<
+ *             grpc_completion_queue_functor* functor,
+ *             int success) noexcept:
+ */
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_WriteUnraisable("_cython.cygrpc.CallbackWrapper.functor_run", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_waiter);
+  __Pyx_RefNannyFinishContext();
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":63
+ *         cpython.Py_DECREF(<object>context.callback_wrapper)
+ * 
+ *     cdef grpc_completion_queue_functor *c_functor(self):             # <<<<<<<<<<<<<<
+ *         return &self.context.functor
+ * 
+ */
+
+static grpc_completion_queue_functor *__pyx_f_7_cython_6cygrpc_15CallbackWrapper_c_functor(struct __pyx_obj_7_cython_6cygrpc_CallbackWrapper *__pyx_v_self) {
+  grpc_completion_queue_functor *__pyx_r;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":64
+ * 
+ *     cdef grpc_completion_queue_functor *c_functor(self):
+ *         return &self.context.functor             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_r = (&__pyx_v_self->context.functor);
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":63
+ *         cpython.Py_DECREF(<object>context.callback_wrapper)
+ * 
+ *     cdef grpc_completion_queue_functor *c_functor(self):             # <<<<<<<<<<<<<<
+ *         return &self.context.functor
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L0:;
+  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_7_cython_6cygrpc_15CallbackWrapper_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_15CallbackWrapper_3__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_15CallbackWrapper_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_15CallbackWrapper_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_7_cython_6cygrpc_15CallbackWrapper_2__reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc_CallbackWrapper *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_15CallbackWrapper_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_CallbackWrapper *__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(10, 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("_cython.cygrpc.CallbackWrapper.__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_7_cython_6cygrpc_15CallbackWrapper_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_15CallbackWrapper_5__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_15CallbackWrapper_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_15CallbackWrapper_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(10, 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(10, 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(10, 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("_cython.cygrpc.CallbackWrapper.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_15CallbackWrapper_4__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc_CallbackWrapper *)__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_7_cython_6cygrpc_15CallbackWrapper_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_CallbackWrapper *__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(10, 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("_cython.cygrpc.CallbackWrapper.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+static PyObject *__pyx_gb_7_cython_6cygrpc_128generator2(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":77
+ * 
+ * 
+ * async def execute_batch(GrpcCallWrapper grpc_call_wrapper,             # <<<<<<<<<<<<<<
+ *                                tuple operations,
+ *                                object loop):
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_127execute_batch(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_7_cython_6cygrpc_126execute_batch, "The callback version of start batch operations.");
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_127execute_batch = {"execute_batch", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_127execute_batch, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7_cython_6cygrpc_126execute_batch};
+static PyObject *__pyx_pw_7_cython_6cygrpc_127execute_batch(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
+) {
+  struct __pyx_obj_7_cython_6cygrpc_GrpcCallWrapper *__pyx_v_grpc_call_wrapper = 0;
+  PyObject *__pyx_v_operations = 0;
+  PyObject *__pyx_v_loop = 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("execute_batch (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_grpc_call_wrapper,&__pyx_n_s_operations,&__pyx_n_s_loop,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_grpc_call_wrapper)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 77, __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_operations)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 77, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("execute_batch", 1, 3, 3, 1); __PYX_ERR(32, 77, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_loop)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 77, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("execute_batch", 1, 3, 3, 2); __PYX_ERR(32, 77, __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, "execute_batch") < 0)) __PYX_ERR(32, 77, __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_grpc_call_wrapper = ((struct __pyx_obj_7_cython_6cygrpc_GrpcCallWrapper *)values[0]);
+    __pyx_v_operations = ((PyObject*)values[1]);
+    __pyx_v_loop = values[2];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("execute_batch", 1, 3, 3, __pyx_nargs); __PYX_ERR(32, 77, __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("_cython.cygrpc.execute_batch", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_grpc_call_wrapper), __pyx_ptype_7_cython_6cygrpc_GrpcCallWrapper, 1, "grpc_call_wrapper", 0))) __PYX_ERR(32, 77, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_operations), (&PyTuple_Type), 1, "operations", 1))) __PYX_ERR(32, 78, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_126execute_batch(__pyx_self, __pyx_v_grpc_call_wrapper, __pyx_v_operations, __pyx_v_loop);
+
+  /* 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_7_cython_6cygrpc_126execute_batch(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7_cython_6cygrpc_GrpcCallWrapper *__pyx_v_grpc_call_wrapper, PyObject *__pyx_v_operations, PyObject *__pyx_v_loop) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch *__pyx_cur_scope;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("execute_batch", 0);
+  __pyx_cur_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch, __pyx_empty_tuple, NULL);
+  if (unlikely(!__pyx_cur_scope)) {
+    __pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch *)Py_None);
+    __Pyx_INCREF(Py_None);
+    __PYX_ERR(32, 77, __pyx_L1_error)
+  } else {
+    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+  }
+  __pyx_cur_scope->__pyx_v_grpc_call_wrapper = __pyx_v_grpc_call_wrapper;
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_grpc_call_wrapper);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_grpc_call_wrapper);
+  __pyx_cur_scope->__pyx_v_operations = __pyx_v_operations;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_operations);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_operations);
+  __pyx_cur_scope->__pyx_v_loop = __pyx_v_loop;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
+  {
+    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7_cython_6cygrpc_128generator2, __pyx_codeobj__51, (PyObject *) __pyx_cur_scope, __pyx_n_s_execute_batch, __pyx_n_s_execute_batch, __pyx_n_s_cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(32, 77, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_cur_scope);
+    __Pyx_RefNannyFinishContext();
+    return (PyObject *) gen;
+  }
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc.execute_batch", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_gb_7_cython_6cygrpc_128generator2(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
+{
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch *__pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch *)__pyx_generator->closure);
+  PyObject *__pyx_r = NULL;
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  unsigned int __pyx_t_4;
+  grpc_completion_queue_functor *__pyx_t_5;
+  int __pyx_t_6;
+  char const *__pyx_t_7;
+  Py_ssize_t __pyx_t_8;
+  PyObject *__pyx_t_9 = NULL;
+  PyObject *__pyx_t_10 = NULL;
+  PyObject *__pyx_t_11 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("execute_batch", 0);
+  switch (__pyx_generator->resume_label) {
+    case 0: goto __pyx_L3_first_run;
+    case 1: goto __pyx_L5_resume_from_await;
+    default: /* CPython raises the right error here */
+    __Pyx_RefNannyFinishContext();
+    return NULL;
+  }
+  __pyx_L3_first_run:;
+  if (unlikely(!__pyx_sent_value)) __PYX_ERR(32, 77, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":81
+ *                                object loop):
+ *     """The callback version of start batch operations."""
+ *     cdef _BatchOperationTag batch_operation_tag = _BatchOperationTag(None, operations, None)             # <<<<<<<<<<<<<<
+ *     batch_operation_tag.prepare()
+ * 
+ */
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 81, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(Py_None);
+  __Pyx_GIVEREF(Py_None);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, Py_None)) __PYX_ERR(32, 81, __pyx_L1_error);
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_operations);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_operations);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_cur_scope->__pyx_v_operations)) __PYX_ERR(32, 81, __pyx_L1_error);
+  __Pyx_INCREF(Py_None);
+  __Pyx_GIVEREF(Py_None);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None)) __PYX_ERR(32, 81, __pyx_L1_error);
+  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_7_cython_6cygrpc__BatchOperationTag), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 81, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_GIVEREF(__pyx_t_2);
+  __pyx_cur_scope->__pyx_v_batch_operation_tag = ((struct __pyx_obj_7_cython_6cygrpc__BatchOperationTag *)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":82
+ *     """The callback version of start batch operations."""
+ *     cdef _BatchOperationTag batch_operation_tag = _BatchOperationTag(None, operations, None)
+ *     batch_operation_tag.prepare()             # <<<<<<<<<<<<<<
+ * 
+ *     cdef object future = loop.create_future()
+ */
+  ((struct __pyx_vtabstruct_7_cython_6cygrpc__BatchOperationTag *)__pyx_cur_scope->__pyx_v_batch_operation_tag->__pyx_base.__pyx_vtab)->prepare(__pyx_cur_scope->__pyx_v_batch_operation_tag); if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 82, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":84
+ *     batch_operation_tag.prepare()
+ * 
+ *     cdef object future = loop.create_future()             # <<<<<<<<<<<<<<
+ *     cdef CallbackWrapper wrapper = CallbackWrapper(
+ *         future,
+ */
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_loop, __pyx_n_s_create_future); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 84, __pyx_L1_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, NULL};
+    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 84, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  }
+  __Pyx_GIVEREF(__pyx_t_2);
+  __pyx_cur_scope->__pyx_v_future = __pyx_t_2;
+  __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":88
+ *         future,
+ *         loop,
+ *         CallbackFailureHandler('execute_batch', operations, ExecuteBatchError))             # <<<<<<<<<<<<<<
+ *     cdef grpc_call_error error = grpc_call_start_batch(
+ *         grpc_call_wrapper.call,
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_ExecuteBatchError); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 88, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 88, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(__pyx_n_s_execute_batch);
+  __Pyx_GIVEREF(__pyx_n_s_execute_batch);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_execute_batch)) __PYX_ERR(32, 88, __pyx_L1_error);
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_operations);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_operations);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_cur_scope->__pyx_v_operations)) __PYX_ERR(32, 88, __pyx_L1_error);
+  __Pyx_GIVEREF(__pyx_t_2);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_2)) __PYX_ERR(32, 88, __pyx_L1_error);
+  __pyx_t_2 = 0;
+  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_7_cython_6cygrpc_CallbackFailureHandler), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 88, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":85
+ * 
+ *     cdef object future = loop.create_future()
+ *     cdef CallbackWrapper wrapper = CallbackWrapper(             # <<<<<<<<<<<<<<
+ *         future,
+ *         loop,
+ */
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 85, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_future);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_future);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_cur_scope->__pyx_v_future)) __PYX_ERR(32, 85, __pyx_L1_error);
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_cur_scope->__pyx_v_loop)) __PYX_ERR(32, 85, __pyx_L1_error);
+  __Pyx_GIVEREF(__pyx_t_2);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_2)) __PYX_ERR(32, 85, __pyx_L1_error);
+  __pyx_t_2 = 0;
+  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_7_cython_6cygrpc_CallbackWrapper), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 85, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_GIVEREF(__pyx_t_2);
+  __pyx_cur_scope->__pyx_v_wrapper = ((struct __pyx_obj_7_cython_6cygrpc_CallbackWrapper *)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":93
+ *         batch_operation_tag.c_ops,
+ *         batch_operation_tag.c_nops,
+ *         wrapper.c_functor(), NULL)             # <<<<<<<<<<<<<<
+ * 
+ *     if error != GRPC_CALL_OK:
+ */
+  __pyx_t_5 = ((struct __pyx_vtabstruct_7_cython_6cygrpc_CallbackWrapper *)__pyx_cur_scope->__pyx_v_wrapper->__pyx_vtab)->c_functor(__pyx_cur_scope->__pyx_v_wrapper); if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 93, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":89
+ *         loop,
+ *         CallbackFailureHandler('execute_batch', operations, ExecuteBatchError))
+ *     cdef grpc_call_error error = grpc_call_start_batch(             # <<<<<<<<<<<<<<
+ *         grpc_call_wrapper.call,
+ *         batch_operation_tag.c_ops,
+ */
+  __pyx_cur_scope->__pyx_v_error = grpc_call_start_batch(__pyx_cur_scope->__pyx_v_grpc_call_wrapper->call, __pyx_cur_scope->__pyx_v_batch_operation_tag->c_ops, __pyx_cur_scope->__pyx_v_batch_operation_tag->c_nops, __pyx_t_5, NULL);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":95
+ *         wrapper.c_functor(), NULL)
+ * 
+ *     if error != GRPC_CALL_OK:             # <<<<<<<<<<<<<<
+ *         grpc_call_error_string = grpc_call_error_to_string(error).decode()
+ *         raise ExecuteBatchError("Failed grpc_call_start_batch: {} with grpc_call_error value: '{}'".format(error, grpc_call_error_string))
+ */
+  __pyx_t_6 = (__pyx_cur_scope->__pyx_v_error != GRPC_CALL_OK);
+  if (unlikely(__pyx_t_6)) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":96
+ * 
+ *     if error != GRPC_CALL_OK:
+ *         grpc_call_error_string = grpc_call_error_to_string(error).decode()             # <<<<<<<<<<<<<<
+ *         raise ExecuteBatchError("Failed grpc_call_start_batch: {} with grpc_call_error value: '{}'".format(error, grpc_call_error_string))
+ * 
+ */
+    __pyx_t_7 = grpc_call_error_to_string(__pyx_cur_scope->__pyx_v_error);
+    __pyx_t_8 = __Pyx_ssize_strlen(__pyx_t_7); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(32, 96, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_decode_c_string(__pyx_t_7, 0, __pyx_t_8, NULL, NULL, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 96, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_INCREF(__pyx_t_2);
+    __Pyx_GIVEREF(__pyx_t_2);
+    __pyx_cur_scope->__pyx_v_grpc_call_error_string = __pyx_t_2;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":97
+ *     if error != GRPC_CALL_OK:
+ *         grpc_call_error_string = grpc_call_error_to_string(error).decode()
+ *         raise ExecuteBatchError("Failed grpc_call_start_batch: {} with grpc_call_error value: '{}'".format(error, grpc_call_error_string))             # <<<<<<<<<<<<<<
+ * 
+ *     await future
+ */
+    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_ExecuteBatchError); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 97, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_Failed_grpc_call_start_batch_wit, __pyx_n_s_format); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 97, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_9);
+    __pyx_t_10 = __Pyx_PyInt_From_grpc_call_error(__pyx_cur_scope->__pyx_v_error); if (unlikely(!__pyx_t_10)) __PYX_ERR(32, 97, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_10);
+    __pyx_t_11 = NULL;
+    __pyx_t_4 = 0;
+    #if CYTHON_UNPACK_METHODS
+    if (likely(PyMethod_Check(__pyx_t_9))) {
+      __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_9);
+      if (likely(__pyx_t_11)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
+        __Pyx_INCREF(__pyx_t_11);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_9, function);
+        __pyx_t_4 = 1;
+      }
+    }
+    #endif
+    {
+      PyObject *__pyx_callargs[3] = {__pyx_t_11, __pyx_t_10, __pyx_cur_scope->__pyx_v_grpc_call_error_string};
+      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+1-__pyx_t_4, 2+__pyx_t_4);
+      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
+      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+      if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 97, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
+      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+    }
+    __pyx_t_9 = NULL;
+    __pyx_t_4 = 0;
+    #if CYTHON_UNPACK_METHODS
+    if (unlikely(PyMethod_Check(__pyx_t_1))) {
+      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_1);
+      if (likely(__pyx_t_9)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+        __Pyx_INCREF(__pyx_t_9);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_1, function);
+        __pyx_t_4 = 1;
+      }
+    }
+    #endif
+    {
+      PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_t_3};
+      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __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_2)) __PYX_ERR(32, 97, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    }
+    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __PYX_ERR(32, 97, __pyx_L1_error)
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":95
+ *         wrapper.c_functor(), NULL)
+ * 
+ *     if error != GRPC_CALL_OK:             # <<<<<<<<<<<<<<
+ *         grpc_call_error_string = grpc_call_error_to_string(error).decode()
+ *         raise ExecuteBatchError("Failed grpc_call_start_batch: {} with grpc_call_error value: '{}'".format(error, grpc_call_error_string))
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":99
+ *         raise ExecuteBatchError("Failed grpc_call_start_batch: {} with grpc_call_error value: '{}'".format(error, grpc_call_error_string))
+ * 
+ *     await future             # <<<<<<<<<<<<<<
+ * 
+ *     cdef grpc_event c_event
+ */
+  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_cur_scope->__pyx_v_future);
+  __Pyx_XGOTREF(__pyx_r);
+  if (likely(__pyx_r)) {
+    __Pyx_XGIVEREF(__pyx_r);
+    __Pyx_RefNannyFinishContext();
+    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+    /* return from generator, awaiting value */
+    __pyx_generator->resume_label = 1;
+    return __pyx_r;
+    __pyx_L5_resume_from_await:;
+    if (unlikely(!__pyx_sent_value)) __PYX_ERR(32, 99, __pyx_L1_error)
+  } else {
+    PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType();
+    if (exc_type) {
+      if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
+      else __PYX_ERR(32, 99, __pyx_L1_error)
+    }
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":103
+ *     cdef grpc_event c_event
+ *     # Tag.event must be called, otherwise messages won't be parsed from C
+ *     batch_operation_tag.event(c_event)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_2 = ((PyObject *)((struct __pyx_vtabstruct_7_cython_6cygrpc__BatchOperationTag *)__pyx_cur_scope->__pyx_v_batch_operation_tag->__pyx_base.__pyx_vtab)->event(__pyx_cur_scope->__pyx_v_batch_operation_tag, __pyx_cur_scope->__pyx_v_c_event)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 103, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":77
+ * 
+ * 
+ * async def execute_batch(GrpcCallWrapper grpc_call_wrapper,             # <<<<<<<<<<<<<<
+ *                                tuple operations,
+ *                                object loop):
+ */
+
+  /* function exit code */
+  PyErr_SetNone(PyExc_StopIteration);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_Generator_Replace_StopIteration(0);
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("execute_batch", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
+  #if !CYTHON_USE_EXC_INFO_STACK
+  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+  #endif
+  __pyx_generator->resume_label = -1;
+  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":106
+ * 
+ * 
+ * cdef prepend_send_initial_metadata_op(tuple ops, tuple metadata):             # <<<<<<<<<<<<<<
+ *     # Eventually, this function should be the only function that produces
+ *     # SendInitialMetadataOperation. So we have more control over the flag.
+ */
+
+static PyObject *__pyx_f_7_cython_6cygrpc_prepend_send_initial_metadata_op(PyObject *__pyx_v_ops, PyObject *__pyx_v_metadata) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("prepend_send_initial_metadata_op", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":109
+ *     # Eventually, this function should be the only function that produces
+ *     # SendInitialMetadataOperation. So we have more control over the flag.
+ *     return (SendInitialMetadataOperation(             # <<<<<<<<<<<<<<
+ *         metadata,
+ *         _EMPTY_FLAG
+ */
+  __Pyx_XDECREF(__pyx_r);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":111
+ *     return (SendInitialMetadataOperation(
+ *         metadata,
+ *         _EMPTY_FLAG             # <<<<<<<<<<<<<<
+ *     ),) + ops
+ * 
+ */
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_7_cython_6cygrpc__EMPTY_FLAG); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 111, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":109
+ *     # Eventually, this function should be the only function that produces
+ *     # SendInitialMetadataOperation. So we have more control over the flag.
+ *     return (SendInitialMetadataOperation(             # <<<<<<<<<<<<<<
+ *         metadata,
+ *         _EMPTY_FLAG
+ */
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 109, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_v_metadata);
+  __Pyx_GIVEREF(__pyx_v_metadata);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_metadata)) __PYX_ERR(32, 109, __pyx_L1_error);
+  __Pyx_GIVEREF(__pyx_t_1);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1)) __PYX_ERR(32, 109, __pyx_L1_error);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_7_cython_6cygrpc_SendInitialMetadataOperation), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 109, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 109, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_1);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1)) __PYX_ERR(32, 109, __pyx_L1_error);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":112
+ *         metadata,
+ *         _EMPTY_FLAG
+ *     ),) + ops             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = PyNumber_Add(__pyx_t_2, __pyx_v_ops); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 112, __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/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":106
+ * 
+ * 
+ * cdef prepend_send_initial_metadata_op(tuple ops, tuple metadata):             # <<<<<<<<<<<<<<
+ *     # Eventually, this function should be the only function that produces
+ *     # SendInitialMetadataOperation. So we have more control over the flag.
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("_cython.cygrpc.prepend_send_initial_metadata_op", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+static PyObject *__pyx_gb_7_cython_6cygrpc_131generator3(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":115
+ * 
+ * 
+ * async def _receive_message(GrpcCallWrapper grpc_call_wrapper,             # <<<<<<<<<<<<<<
+ *                            object loop):
+ *     """Retrives parsed messages from Core.
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_130_receive_message(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_7_cython_6cygrpc_129_receive_message, "Retrives parsed messages from Core.\n\n    The messages maybe already in Core's buffer, so there isn't a 1-to-1\n    mapping between this and the underlying \"socket.read()\". Also, eventually,\n    this function will end with an EOF, which reads empty message.\n    ");
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_130_receive_message = {"_receive_message", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_130_receive_message, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7_cython_6cygrpc_129_receive_message};
+static PyObject *__pyx_pw_7_cython_6cygrpc_130_receive_message(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
+) {
+  struct __pyx_obj_7_cython_6cygrpc_GrpcCallWrapper *__pyx_v_grpc_call_wrapper = 0;
+  PyObject *__pyx_v_loop = 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("_receive_message (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_grpc_call_wrapper,&__pyx_n_s_loop,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_grpc_call_wrapper)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 115, __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_loop)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 115, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("_receive_message", 1, 2, 2, 1); __PYX_ERR(32, 115, __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, "_receive_message") < 0)) __PYX_ERR(32, 115, __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_grpc_call_wrapper = ((struct __pyx_obj_7_cython_6cygrpc_GrpcCallWrapper *)values[0]);
+    __pyx_v_loop = values[1];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("_receive_message", 1, 2, 2, __pyx_nargs); __PYX_ERR(32, 115, __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("_cython.cygrpc._receive_message", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_grpc_call_wrapper), __pyx_ptype_7_cython_6cygrpc_GrpcCallWrapper, 1, "grpc_call_wrapper", 0))) __PYX_ERR(32, 115, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_129_receive_message(__pyx_self, __pyx_v_grpc_call_wrapper, __pyx_v_loop);
+
+  /* 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_7_cython_6cygrpc_129_receive_message(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7_cython_6cygrpc_GrpcCallWrapper *__pyx_v_grpc_call_wrapper, PyObject *__pyx_v_loop) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_13__receive_message *__pyx_cur_scope;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_receive_message", 0);
+  __pyx_cur_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_13__receive_message *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_13__receive_message(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_13__receive_message, __pyx_empty_tuple, NULL);
+  if (unlikely(!__pyx_cur_scope)) {
+    __pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_13__receive_message *)Py_None);
+    __Pyx_INCREF(Py_None);
+    __PYX_ERR(32, 115, __pyx_L1_error)
+  } else {
+    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+  }
+  __pyx_cur_scope->__pyx_v_grpc_call_wrapper = __pyx_v_grpc_call_wrapper;
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_grpc_call_wrapper);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_grpc_call_wrapper);
+  __pyx_cur_scope->__pyx_v_loop = __pyx_v_loop;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
+  {
+    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7_cython_6cygrpc_131generator3, __pyx_codeobj__52, (PyObject *) __pyx_cur_scope, __pyx_n_s_receive_message, __pyx_n_s_receive_message, __pyx_n_s_cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(32, 115, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_cur_scope);
+    __Pyx_RefNannyFinishContext();
+    return (PyObject *) gen;
+  }
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc._receive_message", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_gb_7_cython_6cygrpc_131generator3(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
+{
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_13__receive_message *__pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_13__receive_message *)__pyx_generator->closure);
+  PyObject *__pyx_r = NULL;
+  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;
+  unsigned int __pyx_t_7;
+  PyObject *__pyx_t_8 = NULL;
+  int __pyx_t_9;
+  PyObject *__pyx_t_10 = NULL;
+  PyObject *__pyx_t_11 = NULL;
+  int __pyx_t_12;
+  char const *__pyx_t_13;
+  PyObject *__pyx_t_14 = NULL;
+  PyObject *__pyx_t_15 = NULL;
+  PyObject *__pyx_t_16 = NULL;
+  PyObject *__pyx_t_17 = NULL;
+  PyObject *__pyx_t_18 = NULL;
+  PyObject *__pyx_t_19 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("_receive_message", 0);
+  switch (__pyx_generator->resume_label) {
+    case 0: goto __pyx_L3_first_run;
+    case 1: goto __pyx_L10_resume_from_await;
+    default: /* CPython raises the right error here */
+    __Pyx_RefNannyFinishContext();
+    return NULL;
+  }
+  __pyx_L3_first_run:;
+  if (unlikely(!__pyx_sent_value)) __PYX_ERR(32, 115, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":123
+ *     this function will end with an EOF, which reads empty message.
+ *     """
+ *     cdef ReceiveMessageOperation receive_op = ReceiveMessageOperation(_EMPTY_FLAG)             # <<<<<<<<<<<<<<
+ *     cdef tuple ops = (receive_op,)
+ *     try:
+ */
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_7_cython_6cygrpc__EMPTY_FLAG); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 123, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_7_cython_6cygrpc_ReceiveMessageOperation), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 123, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_GIVEREF(__pyx_t_2);
+  __pyx_cur_scope->__pyx_v_receive_op = ((struct __pyx_obj_7_cython_6cygrpc_ReceiveMessageOperation *)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":124
+ *     """
+ *     cdef ReceiveMessageOperation receive_op = ReceiveMessageOperation(_EMPTY_FLAG)
+ *     cdef tuple ops = (receive_op,)             # <<<<<<<<<<<<<<
+ *     try:
+ *         await execute_batch(grpc_call_wrapper, ops, loop)
+ */
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 124, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_receive_op);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_receive_op);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_receive_op))) __PYX_ERR(32, 124, __pyx_L1_error);
+  __Pyx_GIVEREF(__pyx_t_2);
+  __pyx_cur_scope->__pyx_v_ops = ((PyObject*)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":125
+ *     cdef ReceiveMessageOperation receive_op = ReceiveMessageOperation(_EMPTY_FLAG)
+ *     cdef tuple ops = (receive_op,)
+ *     try:             # <<<<<<<<<<<<<<
+ *         await execute_batch(grpc_call_wrapper, ops, loop)
+ *     except ExecuteBatchError as e:
+ */
+  {
+    __Pyx_ExceptionSave(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5);
+    __Pyx_XGOTREF(__pyx_t_3);
+    __Pyx_XGOTREF(__pyx_t_4);
+    __Pyx_XGOTREF(__pyx_t_5);
+    /*try:*/ {
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":126
+ *     cdef tuple ops = (receive_op,)
+ *     try:
+ *         await execute_batch(grpc_call_wrapper, ops, loop)             # <<<<<<<<<<<<<<
+ *     except ExecuteBatchError as e:
+ *         # NOTE(lidiz) The receive message operation has two ways to indicate
+ */
+      __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_execute_batch); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 126, __pyx_L4_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __pyx_t_6 = NULL;
+      __pyx_t_7 = 0;
+      #if CYTHON_UNPACK_METHODS
+      if (unlikely(PyMethod_Check(__pyx_t_1))) {
+        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
+        if (likely(__pyx_t_6)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_6);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_1, function);
+          __pyx_t_7 = 1;
+        }
+      }
+      #endif
+      {
+        PyObject *__pyx_callargs[4] = {__pyx_t_6, ((PyObject *)__pyx_cur_scope->__pyx_v_grpc_call_wrapper), __pyx_cur_scope->__pyx_v_ops, __pyx_cur_scope->__pyx_v_loop};
+        __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_7, 3+__pyx_t_7);
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 126, __pyx_L4_error)
+        __Pyx_GOTREF(__pyx_t_2);
+        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      }
+      __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_2);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_XGOTREF(__pyx_r);
+      if (likely(__pyx_r)) {
+        __Pyx_XGIVEREF(__pyx_t_3);
+        __pyx_cur_scope->__pyx_t_0 = __pyx_t_3;
+        __Pyx_XGIVEREF(__pyx_t_4);
+        __pyx_cur_scope->__pyx_t_1 = __pyx_t_4;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __pyx_cur_scope->__pyx_t_2 = __pyx_t_5;
+        __Pyx_XGIVEREF(__pyx_r);
+        __Pyx_RefNannyFinishContext();
+        __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+        /* return from generator, awaiting value */
+        __pyx_generator->resume_label = 1;
+        return __pyx_r;
+        __pyx_L10_resume_from_await:;
+        __pyx_t_3 = __pyx_cur_scope->__pyx_t_0;
+        __pyx_cur_scope->__pyx_t_0 = 0;
+        __Pyx_XGOTREF(__pyx_t_3);
+        __pyx_t_4 = __pyx_cur_scope->__pyx_t_1;
+        __pyx_cur_scope->__pyx_t_1 = 0;
+        __Pyx_XGOTREF(__pyx_t_4);
+        __pyx_t_5 = __pyx_cur_scope->__pyx_t_2;
+        __pyx_cur_scope->__pyx_t_2 = 0;
+        __Pyx_XGOTREF(__pyx_t_5);
+        if (unlikely(!__pyx_sent_value)) __PYX_ERR(32, 126, __pyx_L4_error)
+      } else {
+        PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType();
+        if (exc_type) {
+          if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
+          else __PYX_ERR(32, 126, __pyx_L4_error)
+        }
+      }
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":125
+ *     cdef ReceiveMessageOperation receive_op = ReceiveMessageOperation(_EMPTY_FLAG)
+ *     cdef tuple ops = (receive_op,)
+ *     try:             # <<<<<<<<<<<<<<
+ *         await execute_batch(grpc_call_wrapper, ops, loop)
+ *     except ExecuteBatchError as e:
+ */
+    }
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+    goto __pyx_L9_try_end;
+    __pyx_L4_error:;
+    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":127
+ *     try:
+ *         await execute_batch(grpc_call_wrapper, ops, loop)
+ *     except ExecuteBatchError as e:             # <<<<<<<<<<<<<<
+ *         # NOTE(lidiz) The receive message operation has two ways to indicate
+ *         # finish state : 1) returns empty message due to EOF; 2) fails inside
+ */
+    __Pyx_ErrFetch(&__pyx_t_2, &__pyx_t_1, &__pyx_t_6);
+    __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_ExecuteBatchError); if (unlikely(!__pyx_t_8)) __PYX_ERR(32, 127, __pyx_L6_except_error)
+    __Pyx_GOTREF(__pyx_t_8);
+    __pyx_t_9 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_2, __pyx_t_8);
+    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+    __Pyx_ErrRestore(__pyx_t_2, __pyx_t_1, __pyx_t_6);
+    __pyx_t_2 = 0; __pyx_t_1 = 0; __pyx_t_6 = 0;
+    if (__pyx_t_9) {
+      __Pyx_AddTraceback("_cython.cygrpc._receive_message", __pyx_clineno, __pyx_lineno, __pyx_filename);
+      if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_1, &__pyx_t_2) < 0) __PYX_ERR(32, 127, __pyx_L6_except_error)
+      __Pyx_XGOTREF(__pyx_t_6);
+      __Pyx_XGOTREF(__pyx_t_1);
+      __Pyx_XGOTREF(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_1);
+      __Pyx_GIVEREF(__pyx_t_1);
+      __pyx_cur_scope->__pyx_v_e = __pyx_t_1;
+      /*try:*/ {
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":133
+ *         #
+ *         # Since they all indicates finish, they are better be merged.
+ *         _LOGGER.debug('Failed to receive any message from Core')             # <<<<<<<<<<<<<<
+ *     # NOTE(lidiz) The returned message might be an empty bytes (aka. b'').
+ *     # Please explicitly check if it is None or falsey string object!
+ */
+        __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_LOGGER); if (unlikely(!__pyx_t_10)) __PYX_ERR(32, 133, __pyx_L16_error)
+        __Pyx_GOTREF(__pyx_t_10);
+        __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_debug); if (unlikely(!__pyx_t_11)) __PYX_ERR(32, 133, __pyx_L16_error)
+        __Pyx_GOTREF(__pyx_t_11);
+        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+        __pyx_t_10 = NULL;
+        __pyx_t_7 = 0;
+        #if CYTHON_UNPACK_METHODS
+        if (unlikely(PyMethod_Check(__pyx_t_11))) {
+          __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_11);
+          if (likely(__pyx_t_10)) {
+            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
+            __Pyx_INCREF(__pyx_t_10);
+            __Pyx_INCREF(function);
+            __Pyx_DECREF_SET(__pyx_t_11, function);
+            __pyx_t_7 = 1;
+          }
+        }
+        #endif
+        {
+          PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_kp_s_Failed_to_receive_any_message_fr};
+          __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_11, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
+          __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+          if (unlikely(!__pyx_t_8)) __PYX_ERR(32, 133, __pyx_L16_error)
+          __Pyx_GOTREF(__pyx_t_8);
+          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+        }
+        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+      }
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":127
+ *     try:
+ *         await execute_batch(grpc_call_wrapper, ops, loop)
+ *     except ExecuteBatchError as e:             # <<<<<<<<<<<<<<
+ *         # NOTE(lidiz) The receive message operation has two ways to indicate
+ *         # finish state : 1) returns empty message due to EOF; 2) fails inside
+ */
+      /*finally:*/ {
+        /*normal exit:*/{
+          __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e);
+          __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0;
+          goto __pyx_L17;
+        }
+        __pyx_L16_error:;
+        /*exception exit:*/{
+          __Pyx_PyThreadState_assign
+          __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0;
+          __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+          __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
+          __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+          if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
+          if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16) < 0)) __Pyx_ErrFetch(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16);
+          __Pyx_XGOTREF(__pyx_t_14);
+          __Pyx_XGOTREF(__pyx_t_15);
+          __Pyx_XGOTREF(__pyx_t_16);
+          __Pyx_XGOTREF(__pyx_t_17);
+          __Pyx_XGOTREF(__pyx_t_18);
+          __Pyx_XGOTREF(__pyx_t_19);
+          __pyx_t_9 = __pyx_lineno; __pyx_t_12 = __pyx_clineno; __pyx_t_13 = __pyx_filename;
+          {
+            __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e);
+            __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0;
+          }
+          if (PY_MAJOR_VERSION >= 3) {
+            __Pyx_XGIVEREF(__pyx_t_17);
+            __Pyx_XGIVEREF(__pyx_t_18);
+            __Pyx_XGIVEREF(__pyx_t_19);
+            __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19);
+          }
+          __Pyx_XGIVEREF(__pyx_t_14);
+          __Pyx_XGIVEREF(__pyx_t_15);
+          __Pyx_XGIVEREF(__pyx_t_16);
+          __Pyx_ErrRestore(__pyx_t_14, __pyx_t_15, __pyx_t_16);
+          __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0;
+          __pyx_lineno = __pyx_t_9; __pyx_clineno = __pyx_t_12; __pyx_filename = __pyx_t_13;
+          goto __pyx_L6_except_error;
+        }
+        __pyx_L17:;
+      }
+      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+      goto __pyx_L5_exception_handled;
+    }
+    goto __pyx_L6_except_error;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":125
+ *     cdef ReceiveMessageOperation receive_op = ReceiveMessageOperation(_EMPTY_FLAG)
+ *     cdef tuple ops = (receive_op,)
+ *     try:             # <<<<<<<<<<<<<<
+ *         await execute_batch(grpc_call_wrapper, ops, loop)
+ *     except ExecuteBatchError as e:
+ */
+    __pyx_L6_except_error:;
+    __Pyx_XGIVEREF(__pyx_t_3);
+    __Pyx_XGIVEREF(__pyx_t_4);
+    __Pyx_XGIVEREF(__pyx_t_5);
+    __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
+    goto __pyx_L1_error;
+    __pyx_L5_exception_handled:;
+    __Pyx_XGIVEREF(__pyx_t_3);
+    __Pyx_XGIVEREF(__pyx_t_4);
+    __Pyx_XGIVEREF(__pyx_t_5);
+    __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
+    __pyx_L9_try_end:;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":136
+ *     # NOTE(lidiz) The returned message might be an empty bytes (aka. b'').
+ *     # Please explicitly check if it is None or falsey string object!
+ *     return receive_op.message()             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_receive_op), __pyx_n_s_message); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 136, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_6 = NULL;
+  __pyx_t_7 = 0;
+  #if CYTHON_UNPACK_METHODS
+  if (likely(PyMethod_Check(__pyx_t_1))) {
+    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
+    if (likely(__pyx_t_6)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+      __Pyx_INCREF(__pyx_t_6);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_1, function);
+      __pyx_t_7 = 1;
+    }
+  }
+  #endif
+  {
+    PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
+    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 136, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  }
+  __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  goto __pyx_L0;
+  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":115
+ * 
+ * 
+ * async def _receive_message(GrpcCallWrapper grpc_call_wrapper,             # <<<<<<<<<<<<<<
+ *                            object loop):
+ *     """Retrives parsed messages from Core.
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_Generator_Replace_StopIteration(0);
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("_receive_message", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
+  #if !CYTHON_USE_EXC_INFO_STACK
+  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+  #endif
+  __pyx_generator->resume_label = -1;
+  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+static PyObject *__pyx_gb_7_cython_6cygrpc_134generator4(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":139
+ * 
+ * 
+ * async def _send_message(GrpcCallWrapper grpc_call_wrapper,             # <<<<<<<<<<<<<<
+ *                         bytes message,
+ *                         Operation send_initial_metadata_op,
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_133_send_message(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_133_send_message = {"_send_message", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_133_send_message, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_133_send_message(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
+) {
+  struct __pyx_obj_7_cython_6cygrpc_GrpcCallWrapper *__pyx_v_grpc_call_wrapper = 0;
+  PyObject *__pyx_v_message = 0;
+  struct __pyx_obj_7_cython_6cygrpc_Operation *__pyx_v_send_initial_metadata_op = 0;
+  int __pyx_v_write_flag;
+  PyObject *__pyx_v_loop = 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("_send_message (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_grpc_call_wrapper,&__pyx_n_s_message,&__pyx_n_s_send_initial_metadata_op,&__pyx_n_s_write_flag,&__pyx_n_s_loop,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_grpc_call_wrapper)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 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_message)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 139, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("_send_message", 1, 5, 5, 1); __PYX_ERR(32, 139, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_send_initial_metadata_op)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 139, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("_send_message", 1, 5, 5, 2); __PYX_ERR(32, 139, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  3:
+        if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_write_flag)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 139, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("_send_message", 1, 5, 5, 3); __PYX_ERR(32, 139, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  4:
+        if (likely((values[4] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_loop)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[4]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 139, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("_send_message", 1, 5, 5, 4); __PYX_ERR(32, 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, "_send_message") < 0)) __PYX_ERR(32, 139, __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_grpc_call_wrapper = ((struct __pyx_obj_7_cython_6cygrpc_GrpcCallWrapper *)values[0]);
+    __pyx_v_message = ((PyObject*)values[1]);
+    __pyx_v_send_initial_metadata_op = ((struct __pyx_obj_7_cython_6cygrpc_Operation *)values[2]);
+    __pyx_v_write_flag = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_write_flag == (int)-1) && PyErr_Occurred())) __PYX_ERR(32, 142, __pyx_L3_error)
+    __pyx_v_loop = values[4];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("_send_message", 1, 5, 5, __pyx_nargs); __PYX_ERR(32, 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("_cython.cygrpc._send_message", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_grpc_call_wrapper), __pyx_ptype_7_cython_6cygrpc_GrpcCallWrapper, 1, "grpc_call_wrapper", 0))) __PYX_ERR(32, 139, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_message), (&PyBytes_Type), 1, "message", 1))) __PYX_ERR(32, 140, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_send_initial_metadata_op), __pyx_ptype_7_cython_6cygrpc_Operation, 1, "send_initial_metadata_op", 0))) __PYX_ERR(32, 141, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_132_send_message(__pyx_self, __pyx_v_grpc_call_wrapper, __pyx_v_message, __pyx_v_send_initial_metadata_op, __pyx_v_write_flag, __pyx_v_loop);
+
+  /* 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_7_cython_6cygrpc_132_send_message(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7_cython_6cygrpc_GrpcCallWrapper *__pyx_v_grpc_call_wrapper, PyObject *__pyx_v_message, struct __pyx_obj_7_cython_6cygrpc_Operation *__pyx_v_send_initial_metadata_op, int __pyx_v_write_flag, PyObject *__pyx_v_loop) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_14__send_message *__pyx_cur_scope;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_send_message", 0);
+  __pyx_cur_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_14__send_message *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_14__send_message(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_14__send_message, __pyx_empty_tuple, NULL);
+  if (unlikely(!__pyx_cur_scope)) {
+    __pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_14__send_message *)Py_None);
+    __Pyx_INCREF(Py_None);
+    __PYX_ERR(32, 139, __pyx_L1_error)
+  } else {
+    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+  }
+  __pyx_cur_scope->__pyx_v_grpc_call_wrapper = __pyx_v_grpc_call_wrapper;
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_grpc_call_wrapper);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_grpc_call_wrapper);
+  __pyx_cur_scope->__pyx_v_message = __pyx_v_message;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_message);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_message);
+  __pyx_cur_scope->__pyx_v_send_initial_metadata_op = __pyx_v_send_initial_metadata_op;
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_send_initial_metadata_op);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_send_initial_metadata_op);
+  __pyx_cur_scope->__pyx_v_write_flag = __pyx_v_write_flag;
+  __pyx_cur_scope->__pyx_v_loop = __pyx_v_loop;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
+  {
+    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7_cython_6cygrpc_134generator4, __pyx_codeobj__53, (PyObject *) __pyx_cur_scope, __pyx_n_s_send_message, __pyx_n_s_send_message, __pyx_n_s_cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(32, 139, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_cur_scope);
+    __Pyx_RefNannyFinishContext();
+    return (PyObject *) gen;
+  }
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc._send_message", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_gb_7_cython_6cygrpc_134generator4(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
+{
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_14__send_message *__pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_14__send_message *)__pyx_generator->closure);
+  PyObject *__pyx_r = NULL;
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_t_3;
+  PyObject *__pyx_t_4 = NULL;
+  unsigned int __pyx_t_5;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("_send_message", 0);
+  switch (__pyx_generator->resume_label) {
+    case 0: goto __pyx_L3_first_run;
+    case 1: goto __pyx_L5_resume_from_await;
+    default: /* CPython raises the right error here */
+    __Pyx_RefNannyFinishContext();
+    return NULL;
+  }
+  __pyx_L3_first_run:;
+  if (unlikely(!__pyx_sent_value)) __PYX_ERR(32, 139, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":144
+ *                         int write_flag,
+ *                         object loop):
+ *     cdef SendMessageOperation op = SendMessageOperation(message, write_flag)             # <<<<<<<<<<<<<<
+ *     cdef tuple ops = (op,)
+ *     if send_initial_metadata_op is not None:
+ */
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_cur_scope->__pyx_v_write_flag); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 144, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 144, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_message);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_message);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_cur_scope->__pyx_v_message)) __PYX_ERR(32, 144, __pyx_L1_error);
+  __Pyx_GIVEREF(__pyx_t_1);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1)) __PYX_ERR(32, 144, __pyx_L1_error);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_7_cython_6cygrpc_SendMessageOperation), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 144, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_GIVEREF(__pyx_t_1);
+  __pyx_cur_scope->__pyx_v_op = ((struct __pyx_obj_7_cython_6cygrpc_SendMessageOperation *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":145
+ *                         object loop):
+ *     cdef SendMessageOperation op = SendMessageOperation(message, write_flag)
+ *     cdef tuple ops = (op,)             # <<<<<<<<<<<<<<
+ *     if send_initial_metadata_op is not None:
+ *         ops = (send_initial_metadata_op,) + ops
+ */
+  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 145, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_op);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_op);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_op))) __PYX_ERR(32, 145, __pyx_L1_error);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __pyx_cur_scope->__pyx_v_ops = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":146
+ *     cdef SendMessageOperation op = SendMessageOperation(message, write_flag)
+ *     cdef tuple ops = (op,)
+ *     if send_initial_metadata_op is not None:             # <<<<<<<<<<<<<<
+ *         ops = (send_initial_metadata_op,) + ops
+ *     await execute_batch(grpc_call_wrapper, ops, loop)
+ */
+  __pyx_t_3 = (((PyObject *)__pyx_cur_scope->__pyx_v_send_initial_metadata_op) != Py_None);
+  if (__pyx_t_3) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":147
+ *     cdef tuple ops = (op,)
+ *     if send_initial_metadata_op is not None:
+ *         ops = (send_initial_metadata_op,) + ops             # <<<<<<<<<<<<<<
+ *     await execute_batch(grpc_call_wrapper, ops, loop)
+ * 
+ */
+    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 147, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_send_initial_metadata_op);
+    __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_send_initial_metadata_op);
+    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_send_initial_metadata_op))) __PYX_ERR(32, 147, __pyx_L1_error);
+    __pyx_t_2 = PyNumber_Add(__pyx_t_1, __pyx_cur_scope->__pyx_v_ops); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 147, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_ops);
+    __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_ops, ((PyObject*)__pyx_t_2));
+    __Pyx_GIVEREF(__pyx_t_2);
+    __pyx_t_2 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":146
+ *     cdef SendMessageOperation op = SendMessageOperation(message, write_flag)
+ *     cdef tuple ops = (op,)
+ *     if send_initial_metadata_op is not None:             # <<<<<<<<<<<<<<
+ *         ops = (send_initial_metadata_op,) + ops
+ *     await execute_batch(grpc_call_wrapper, ops, loop)
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":148
+ *     if send_initial_metadata_op is not None:
+ *         ops = (send_initial_metadata_op,) + ops
+ *     await execute_batch(grpc_call_wrapper, ops, loop)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_execute_batch); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 148, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_4 = NULL;
+  __pyx_t_5 = 0;
+  #if CYTHON_UNPACK_METHODS
+  if (unlikely(PyMethod_Check(__pyx_t_1))) {
+    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
+    if (likely(__pyx_t_4)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+      __Pyx_INCREF(__pyx_t_4);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_1, function);
+      __pyx_t_5 = 1;
+    }
+  }
+  #endif
+  {
+    PyObject *__pyx_callargs[4] = {__pyx_t_4, ((PyObject *)__pyx_cur_scope->__pyx_v_grpc_call_wrapper), __pyx_cur_scope->__pyx_v_ops, __pyx_cur_scope->__pyx_v_loop};
+    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
+    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 148, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  }
+  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_2);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_XGOTREF(__pyx_r);
+  if (likely(__pyx_r)) {
+    __Pyx_XGIVEREF(__pyx_r);
+    __Pyx_RefNannyFinishContext();
+    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+    /* return from generator, awaiting value */
+    __pyx_generator->resume_label = 1;
+    return __pyx_r;
+    __pyx_L5_resume_from_await:;
+    if (unlikely(!__pyx_sent_value)) __PYX_ERR(32, 148, __pyx_L1_error)
+  } else {
+    PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType();
+    if (exc_type) {
+      if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
+      else __PYX_ERR(32, 148, __pyx_L1_error)
+    }
+  }
+  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":139
+ * 
+ * 
+ * async def _send_message(GrpcCallWrapper grpc_call_wrapper,             # <<<<<<<<<<<<<<
+ *                         bytes message,
+ *                         Operation send_initial_metadata_op,
+ */
+
+  /* function exit code */
+  PyErr_SetNone(PyExc_StopIteration);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_Generator_Replace_StopIteration(0);
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("_send_message", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
+  #if !CYTHON_USE_EXC_INFO_STACK
+  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+  #endif
+  __pyx_generator->resume_label = -1;
+  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+static PyObject *__pyx_gb_7_cython_6cygrpc_137generator5(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":151
+ * 
+ * 
+ * async def _send_initial_metadata(GrpcCallWrapper grpc_call_wrapper,             # <<<<<<<<<<<<<<
+ *                                  tuple metadata,
+ *                                  int flags,
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_136_send_initial_metadata(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_136_send_initial_metadata = {"_send_initial_metadata", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_136_send_initial_metadata, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_136_send_initial_metadata(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
+) {
+  struct __pyx_obj_7_cython_6cygrpc_GrpcCallWrapper *__pyx_v_grpc_call_wrapper = 0;
+  PyObject *__pyx_v_metadata = 0;
+  int __pyx_v_flags;
+  PyObject *__pyx_v_loop = 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("_send_initial_metadata (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_grpc_call_wrapper,&__pyx_n_s_metadata,&__pyx_n_s_flags,&__pyx_n_s_loop,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_grpc_call_wrapper)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 151, __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_metadata)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 151, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("_send_initial_metadata", 1, 4, 4, 1); __PYX_ERR(32, 151, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_flags)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 151, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("_send_initial_metadata", 1, 4, 4, 2); __PYX_ERR(32, 151, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  3:
+        if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_loop)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 151, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("_send_initial_metadata", 1, 4, 4, 3); __PYX_ERR(32, 151, __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, "_send_initial_metadata") < 0)) __PYX_ERR(32, 151, __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_grpc_call_wrapper = ((struct __pyx_obj_7_cython_6cygrpc_GrpcCallWrapper *)values[0]);
+    __pyx_v_metadata = ((PyObject*)values[1]);
+    __pyx_v_flags = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_flags == (int)-1) && PyErr_Occurred())) __PYX_ERR(32, 153, __pyx_L3_error)
+    __pyx_v_loop = values[3];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("_send_initial_metadata", 1, 4, 4, __pyx_nargs); __PYX_ERR(32, 151, __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("_cython.cygrpc._send_initial_metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_grpc_call_wrapper), __pyx_ptype_7_cython_6cygrpc_GrpcCallWrapper, 1, "grpc_call_wrapper", 0))) __PYX_ERR(32, 151, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_metadata), (&PyTuple_Type), 1, "metadata", 1))) __PYX_ERR(32, 152, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_135_send_initial_metadata(__pyx_self, __pyx_v_grpc_call_wrapper, __pyx_v_metadata, __pyx_v_flags, __pyx_v_loop);
+
+  /* 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_7_cython_6cygrpc_135_send_initial_metadata(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7_cython_6cygrpc_GrpcCallWrapper *__pyx_v_grpc_call_wrapper, PyObject *__pyx_v_metadata, int __pyx_v_flags, PyObject *__pyx_v_loop) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata *__pyx_cur_scope;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_send_initial_metadata", 0);
+  __pyx_cur_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata, __pyx_empty_tuple, NULL);
+  if (unlikely(!__pyx_cur_scope)) {
+    __pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata *)Py_None);
+    __Pyx_INCREF(Py_None);
+    __PYX_ERR(32, 151, __pyx_L1_error)
+  } else {
+    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+  }
+  __pyx_cur_scope->__pyx_v_grpc_call_wrapper = __pyx_v_grpc_call_wrapper;
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_grpc_call_wrapper);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_grpc_call_wrapper);
+  __pyx_cur_scope->__pyx_v_metadata = __pyx_v_metadata;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_metadata);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_metadata);
+  __pyx_cur_scope->__pyx_v_flags = __pyx_v_flags;
+  __pyx_cur_scope->__pyx_v_loop = __pyx_v_loop;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
+  {
+    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7_cython_6cygrpc_137generator5, __pyx_codeobj__54, (PyObject *) __pyx_cur_scope, __pyx_n_s_send_initial_metadata, __pyx_n_s_send_initial_metadata, __pyx_n_s_cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(32, 151, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_cur_scope);
+    __Pyx_RefNannyFinishContext();
+    return (PyObject *) gen;
+  }
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc._send_initial_metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_gb_7_cython_6cygrpc_137generator5(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
+{
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata *__pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata *)__pyx_generator->closure);
+  PyObject *__pyx_r = NULL;
+  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_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("_send_initial_metadata", 0);
+  switch (__pyx_generator->resume_label) {
+    case 0: goto __pyx_L3_first_run;
+    case 1: goto __pyx_L4_resume_from_await;
+    default: /* CPython raises the right error here */
+    __Pyx_RefNannyFinishContext();
+    return NULL;
+  }
+  __pyx_L3_first_run:;
+  if (unlikely(!__pyx_sent_value)) __PYX_ERR(32, 151, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":157
+ *     cdef SendInitialMetadataOperation op = SendInitialMetadataOperation(
+ *         metadata,
+ *         flags)             # <<<<<<<<<<<<<<
+ *     cdef tuple ops = (op,)
+ *     await execute_batch(grpc_call_wrapper, ops, loop)
+ */
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_cur_scope->__pyx_v_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 157, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":155
+ *                                  int flags,
+ *                                  object loop):
+ *     cdef SendInitialMetadataOperation op = SendInitialMetadataOperation(             # <<<<<<<<<<<<<<
+ *         metadata,
+ *         flags)
+ */
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 155, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_metadata);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_metadata);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_cur_scope->__pyx_v_metadata)) __PYX_ERR(32, 155, __pyx_L1_error);
+  __Pyx_GIVEREF(__pyx_t_1);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1)) __PYX_ERR(32, 155, __pyx_L1_error);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_7_cython_6cygrpc_SendInitialMetadataOperation), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 155, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_GIVEREF(__pyx_t_1);
+  __pyx_cur_scope->__pyx_v_op = ((struct __pyx_obj_7_cython_6cygrpc_SendInitialMetadataOperation *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":158
+ *         metadata,
+ *         flags)
+ *     cdef tuple ops = (op,)             # <<<<<<<<<<<<<<
+ *     await execute_batch(grpc_call_wrapper, ops, loop)
+ * 
+ */
+  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 158, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_op);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_op);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_op))) __PYX_ERR(32, 158, __pyx_L1_error);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __pyx_cur_scope->__pyx_v_ops = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":159
+ *         flags)
+ *     cdef tuple ops = (op,)
+ *     await execute_batch(grpc_call_wrapper, ops, loop)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_execute_batch); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 159, __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[4] = {__pyx_t_3, ((PyObject *)__pyx_cur_scope->__pyx_v_grpc_call_wrapper), __pyx_cur_scope->__pyx_v_ops, __pyx_cur_scope->__pyx_v_loop};
+    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 3+__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 159, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  }
+  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_XGOTREF(__pyx_r);
+  if (likely(__pyx_r)) {
+    __Pyx_XGIVEREF(__pyx_r);
+    __Pyx_RefNannyFinishContext();
+    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+    /* return from generator, awaiting value */
+    __pyx_generator->resume_label = 1;
+    return __pyx_r;
+    __pyx_L4_resume_from_await:;
+    if (unlikely(!__pyx_sent_value)) __PYX_ERR(32, 159, __pyx_L1_error)
+  } else {
+    PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType();
+    if (exc_type) {
+      if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
+      else __PYX_ERR(32, 159, __pyx_L1_error)
+    }
+  }
+  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":151
+ * 
+ * 
+ * async def _send_initial_metadata(GrpcCallWrapper grpc_call_wrapper,             # <<<<<<<<<<<<<<
+ *                                  tuple metadata,
+ *                                  int flags,
+ */
+
+  /* function exit code */
+  PyErr_SetNone(PyExc_StopIteration);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_Generator_Replace_StopIteration(0);
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("_send_initial_metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
+  #if !CYTHON_USE_EXC_INFO_STACK
+  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+  #endif
+  __pyx_generator->resume_label = -1;
+  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+static PyObject *__pyx_gb_7_cython_6cygrpc_140generator6(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":162
+ * 
+ * 
+ * async def _receive_initial_metadata(GrpcCallWrapper grpc_call_wrapper,             # <<<<<<<<<<<<<<
+ *                                     object loop):
+ *     cdef ReceiveInitialMetadataOperation op = ReceiveInitialMetadataOperation(_EMPTY_FLAGS)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_139_receive_initial_metadata(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_139_receive_initial_metadata = {"_receive_initial_metadata", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_139_receive_initial_metadata, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_139_receive_initial_metadata(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
+) {
+  struct __pyx_obj_7_cython_6cygrpc_GrpcCallWrapper *__pyx_v_grpc_call_wrapper = 0;
+  PyObject *__pyx_v_loop = 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("_receive_initial_metadata (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_grpc_call_wrapper,&__pyx_n_s_loop,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_grpc_call_wrapper)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 162, __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_loop)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 162, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("_receive_initial_metadata", 1, 2, 2, 1); __PYX_ERR(32, 162, __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, "_receive_initial_metadata") < 0)) __PYX_ERR(32, 162, __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_grpc_call_wrapper = ((struct __pyx_obj_7_cython_6cygrpc_GrpcCallWrapper *)values[0]);
+    __pyx_v_loop = values[1];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("_receive_initial_metadata", 1, 2, 2, __pyx_nargs); __PYX_ERR(32, 162, __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("_cython.cygrpc._receive_initial_metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_grpc_call_wrapper), __pyx_ptype_7_cython_6cygrpc_GrpcCallWrapper, 1, "grpc_call_wrapper", 0))) __PYX_ERR(32, 162, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_138_receive_initial_metadata(__pyx_self, __pyx_v_grpc_call_wrapper, __pyx_v_loop);
+
+  /* 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_7_cython_6cygrpc_138_receive_initial_metadata(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7_cython_6cygrpc_GrpcCallWrapper *__pyx_v_grpc_call_wrapper, PyObject *__pyx_v_loop) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata *__pyx_cur_scope;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_receive_initial_metadata", 0);
+  __pyx_cur_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata, __pyx_empty_tuple, NULL);
+  if (unlikely(!__pyx_cur_scope)) {
+    __pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata *)Py_None);
+    __Pyx_INCREF(Py_None);
+    __PYX_ERR(32, 162, __pyx_L1_error)
+  } else {
+    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+  }
+  __pyx_cur_scope->__pyx_v_grpc_call_wrapper = __pyx_v_grpc_call_wrapper;
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_grpc_call_wrapper);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_grpc_call_wrapper);
+  __pyx_cur_scope->__pyx_v_loop = __pyx_v_loop;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
+  {
+    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7_cython_6cygrpc_140generator6, __pyx_codeobj__55, (PyObject *) __pyx_cur_scope, __pyx_n_s_receive_initial_metadata, __pyx_n_s_receive_initial_metadata, __pyx_n_s_cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(32, 162, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_cur_scope);
+    __Pyx_RefNannyFinishContext();
+    return (PyObject *) gen;
+  }
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc._receive_initial_metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_gb_7_cython_6cygrpc_140generator6(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
+{
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata *__pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata *)__pyx_generator->closure);
+  PyObject *__pyx_r = NULL;
+  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_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("_receive_initial_metadata", 0);
+  switch (__pyx_generator->resume_label) {
+    case 0: goto __pyx_L3_first_run;
+    case 1: goto __pyx_L4_resume_from_await;
+    default: /* CPython raises the right error here */
+    __Pyx_RefNannyFinishContext();
+    return NULL;
+  }
+  __pyx_L3_first_run:;
+  if (unlikely(!__pyx_sent_value)) __PYX_ERR(32, 162, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":164
+ * async def _receive_initial_metadata(GrpcCallWrapper grpc_call_wrapper,
+ *                                     object loop):
+ *     cdef ReceiveInitialMetadataOperation op = ReceiveInitialMetadataOperation(_EMPTY_FLAGS)             # <<<<<<<<<<<<<<
+ *     cdef tuple ops = (op,)
+ *     await execute_batch(grpc_call_wrapper, ops, loop)
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_EMPTY_FLAGS); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 164, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_7_cython_6cygrpc_ReceiveInitialMetadataOperation), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 164, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_GIVEREF(__pyx_t_2);
+  __pyx_cur_scope->__pyx_v_op = ((struct __pyx_obj_7_cython_6cygrpc_ReceiveInitialMetadataOperation *)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":165
+ *                                     object loop):
+ *     cdef ReceiveInitialMetadataOperation op = ReceiveInitialMetadataOperation(_EMPTY_FLAGS)
+ *     cdef tuple ops = (op,)             # <<<<<<<<<<<<<<
+ *     await execute_batch(grpc_call_wrapper, ops, loop)
+ *     return op.initial_metadata()
+ */
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 165, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_op);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_op);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_op))) __PYX_ERR(32, 165, __pyx_L1_error);
+  __Pyx_GIVEREF(__pyx_t_2);
+  __pyx_cur_scope->__pyx_v_ops = ((PyObject*)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":166
+ *     cdef ReceiveInitialMetadataOperation op = ReceiveInitialMetadataOperation(_EMPTY_FLAGS)
+ *     cdef tuple ops = (op,)
+ *     await execute_batch(grpc_call_wrapper, ops, loop)             # <<<<<<<<<<<<<<
+ *     return op.initial_metadata()
+ * 
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_execute_batch); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 166, __pyx_L1_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[4] = {__pyx_t_3, ((PyObject *)__pyx_cur_scope->__pyx_v_grpc_call_wrapper), __pyx_cur_scope->__pyx_v_ops, __pyx_cur_scope->__pyx_v_loop};
+    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 3+__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 166, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  }
+  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_2);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_XGOTREF(__pyx_r);
+  if (likely(__pyx_r)) {
+    __Pyx_XGIVEREF(__pyx_r);
+    __Pyx_RefNannyFinishContext();
+    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+    /* return from generator, awaiting value */
+    __pyx_generator->resume_label = 1;
+    return __pyx_r;
+    __pyx_L4_resume_from_await:;
+    if (unlikely(!__pyx_sent_value)) __PYX_ERR(32, 166, __pyx_L1_error)
+  } else {
+    PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType();
+    if (exc_type) {
+      if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
+      else __PYX_ERR(32, 166, __pyx_L1_error)
+    }
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":167
+ *     cdef tuple ops = (op,)
+ *     await execute_batch(grpc_call_wrapper, ops, loop)
+ *     return op.initial_metadata()             # <<<<<<<<<<<<<<
+ * 
+ * async def _send_error_status_from_server(GrpcCallWrapper grpc_call_wrapper,
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_op), __pyx_n_s_initial_metadata); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 167, __pyx_L1_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, NULL};
+    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 167, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  }
+  __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  goto __pyx_L0;
+  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":162
+ * 
+ * 
+ * async def _receive_initial_metadata(GrpcCallWrapper grpc_call_wrapper,             # <<<<<<<<<<<<<<
+ *                                     object loop):
+ *     cdef ReceiveInitialMetadataOperation op = ReceiveInitialMetadataOperation(_EMPTY_FLAGS)
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_Generator_Replace_StopIteration(0);
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("_receive_initial_metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
+  #if !CYTHON_USE_EXC_INFO_STACK
+  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+  #endif
+  __pyx_generator->resume_label = -1;
+  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+static PyObject *__pyx_gb_7_cython_6cygrpc_143generator7(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":169
+ *     return op.initial_metadata()
+ * 
+ * async def _send_error_status_from_server(GrpcCallWrapper grpc_call_wrapper,             # <<<<<<<<<<<<<<
+ *                                          grpc_status_code code,
+ *                                          str details,
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_142_send_error_status_from_server(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_142_send_error_status_from_server = {"_send_error_status_from_server", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_142_send_error_status_from_server, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_142_send_error_status_from_server(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
+) {
+  struct __pyx_obj_7_cython_6cygrpc_GrpcCallWrapper *__pyx_v_grpc_call_wrapper = 0;
+  grpc_status_code __pyx_v_code;
+  PyObject *__pyx_v_details = 0;
+  PyObject *__pyx_v_trailing_metadata = 0;
+  struct __pyx_obj_7_cython_6cygrpc_Operation *__pyx_v_send_initial_metadata_op = 0;
+  PyObject *__pyx_v_loop = 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("_send_error_status_from_server (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_grpc_call_wrapper,&__pyx_n_s_code,&__pyx_n_s_details,&__pyx_n_s_trailing_metadata,&__pyx_n_s_send_initial_metadata_op,&__pyx_n_s_loop,0};
+    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_grpc_call_wrapper)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 169, __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_code)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 169, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("_send_error_status_from_server", 1, 6, 6, 1); __PYX_ERR(32, 169, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_details)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 169, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("_send_error_status_from_server", 1, 6, 6, 2); __PYX_ERR(32, 169, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  3:
+        if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_trailing_metadata)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 169, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("_send_error_status_from_server", 1, 6, 6, 3); __PYX_ERR(32, 169, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  4:
+        if (likely((values[4] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_send_initial_metadata_op)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[4]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 169, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("_send_error_status_from_server", 1, 6, 6, 4); __PYX_ERR(32, 169, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  5:
+        if (likely((values[5] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_loop)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[5]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 169, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("_send_error_status_from_server", 1, 6, 6, 5); __PYX_ERR(32, 169, __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, "_send_error_status_from_server") < 0)) __PYX_ERR(32, 169, __pyx_L3_error)
+      }
+    } else if (unlikely(__pyx_nargs != 6)) {
+      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);
+      values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
+    }
+    __pyx_v_grpc_call_wrapper = ((struct __pyx_obj_7_cython_6cygrpc_GrpcCallWrapper *)values[0]);
+    __pyx_v_code = ((grpc_status_code)__Pyx_PyInt_As_grpc_status_code(values[1])); if (unlikely(PyErr_Occurred())) __PYX_ERR(32, 170, __pyx_L3_error)
+    __pyx_v_details = ((PyObject*)values[2]);
+    __pyx_v_trailing_metadata = ((PyObject*)values[3]);
+    __pyx_v_send_initial_metadata_op = ((struct __pyx_obj_7_cython_6cygrpc_Operation *)values[4]);
+    __pyx_v_loop = values[5];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("_send_error_status_from_server", 1, 6, 6, __pyx_nargs); __PYX_ERR(32, 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("_cython.cygrpc._send_error_status_from_server", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_grpc_call_wrapper), __pyx_ptype_7_cython_6cygrpc_GrpcCallWrapper, 1, "grpc_call_wrapper", 0))) __PYX_ERR(32, 169, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_details), (&PyString_Type), 1, "details", 1))) __PYX_ERR(32, 171, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_trailing_metadata), (&PyTuple_Type), 1, "trailing_metadata", 1))) __PYX_ERR(32, 172, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_send_initial_metadata_op), __pyx_ptype_7_cython_6cygrpc_Operation, 1, "send_initial_metadata_op", 0))) __PYX_ERR(32, 173, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_141_send_error_status_from_server(__pyx_self, __pyx_v_grpc_call_wrapper, __pyx_v_code, __pyx_v_details, __pyx_v_trailing_metadata, __pyx_v_send_initial_metadata_op, __pyx_v_loop);
+
+  /* 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_7_cython_6cygrpc_141_send_error_status_from_server(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7_cython_6cygrpc_GrpcCallWrapper *__pyx_v_grpc_call_wrapper, grpc_status_code __pyx_v_code, PyObject *__pyx_v_details, PyObject *__pyx_v_trailing_metadata, struct __pyx_obj_7_cython_6cygrpc_Operation *__pyx_v_send_initial_metadata_op, PyObject *__pyx_v_loop) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server *__pyx_cur_scope;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_send_error_status_from_server", 0);
+  __pyx_cur_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server, __pyx_empty_tuple, NULL);
+  if (unlikely(!__pyx_cur_scope)) {
+    __pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server *)Py_None);
+    __Pyx_INCREF(Py_None);
+    __PYX_ERR(32, 169, __pyx_L1_error)
+  } else {
+    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+  }
+  __pyx_cur_scope->__pyx_v_grpc_call_wrapper = __pyx_v_grpc_call_wrapper;
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_grpc_call_wrapper);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_grpc_call_wrapper);
+  __pyx_cur_scope->__pyx_v_code = __pyx_v_code;
+  __pyx_cur_scope->__pyx_v_details = __pyx_v_details;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_details);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_details);
+  __pyx_cur_scope->__pyx_v_trailing_metadata = __pyx_v_trailing_metadata;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_trailing_metadata);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_trailing_metadata);
+  __pyx_cur_scope->__pyx_v_send_initial_metadata_op = __pyx_v_send_initial_metadata_op;
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_send_initial_metadata_op);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_send_initial_metadata_op);
+  __pyx_cur_scope->__pyx_v_loop = __pyx_v_loop;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
+  {
+    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7_cython_6cygrpc_143generator7, __pyx_codeobj__56, (PyObject *) __pyx_cur_scope, __pyx_n_s_send_error_status_from_server, __pyx_n_s_send_error_status_from_server, __pyx_n_s_cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(32, 169, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_cur_scope);
+    __Pyx_RefNannyFinishContext();
+    return (PyObject *) gen;
+  }
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc._send_error_status_from_server", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_gb_7_cython_6cygrpc_143generator7(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
+{
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server *__pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server *)__pyx_generator->closure);
+  PyObject *__pyx_r = NULL;
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  int __pyx_t_4;
+  unsigned int __pyx_t_5;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("_send_error_status_from_server", 0);
+  switch (__pyx_generator->resume_label) {
+    case 0: goto __pyx_L3_first_run;
+    case 1: goto __pyx_L5_resume_from_await;
+    default: /* CPython raises the right error here */
+    __Pyx_RefNannyFinishContext();
+    return NULL;
+  }
+  __pyx_L3_first_run:;
+  if (unlikely(!__pyx_sent_value)) __PYX_ERR(32, 169, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":175
+ *                                          Operation send_initial_metadata_op,
+ *                                          object loop):
+ *     assert code != StatusCode.ok, 'Expecting non-ok status code.'             # <<<<<<<<<<<<<<
+ *     cdef SendStatusFromServerOperation op = SendStatusFromServerOperation(
+ *         trailing_metadata,
+ */
+  #ifndef CYTHON_WITHOUT_ASSERTIONS
+  if (unlikely(__pyx_assertions_enabled())) {
+    __pyx_t_1 = __Pyx_PyInt_From_grpc_status_code(__pyx_cur_scope->__pyx_v_code); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 175, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_StatusCode); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 175, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_ok); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 175, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_NE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 175, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(32, 175, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    if (unlikely(!__pyx_t_4)) {
+      __Pyx_Raise(__pyx_builtin_AssertionError, __pyx_kp_s_Expecting_non_ok_status_code, 0, 0);
+      __PYX_ERR(32, 175, __pyx_L1_error)
+    }
+  }
+  #else
+  if ((1)); else __PYX_ERR(32, 175, __pyx_L1_error)
+  #endif
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":178
+ *     cdef SendStatusFromServerOperation op = SendStatusFromServerOperation(
+ *         trailing_metadata,
+ *         code,             # <<<<<<<<<<<<<<
+ *         details,
+ *         _EMPTY_FLAGS,
+ */
+  __pyx_t_2 = __Pyx_PyInt_From_grpc_status_code(__pyx_cur_scope->__pyx_v_code); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 178, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":180
+ *         code,
+ *         details,
+ *         _EMPTY_FLAGS,             # <<<<<<<<<<<<<<
+ *     )
+ *     cdef tuple ops = (op,)
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_EMPTY_FLAGS); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 180, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":176
+ *                                          object loop):
+ *     assert code != StatusCode.ok, 'Expecting non-ok status code.'
+ *     cdef SendStatusFromServerOperation op = SendStatusFromServerOperation(             # <<<<<<<<<<<<<<
+ *         trailing_metadata,
+ *         code,
+ */
+  __pyx_t_1 = PyTuple_New(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 176, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_trailing_metadata);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_trailing_metadata);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_cur_scope->__pyx_v_trailing_metadata)) __PYX_ERR(32, 176, __pyx_L1_error);
+  __Pyx_GIVEREF(__pyx_t_2);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2)) __PYX_ERR(32, 176, __pyx_L1_error);
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_details);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_details);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_cur_scope->__pyx_v_details)) __PYX_ERR(32, 176, __pyx_L1_error);
+  __Pyx_GIVEREF(__pyx_t_3);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_t_3)) __PYX_ERR(32, 176, __pyx_L1_error);
+  __pyx_t_2 = 0;
+  __pyx_t_3 = 0;
+  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_7_cython_6cygrpc_SendStatusFromServerOperation), __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 176, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_GIVEREF(__pyx_t_3);
+  __pyx_cur_scope->__pyx_v_op = ((struct __pyx_obj_7_cython_6cygrpc_SendStatusFromServerOperation *)__pyx_t_3);
+  __pyx_t_3 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":182
+ *         _EMPTY_FLAGS,
+ *     )
+ *     cdef tuple ops = (op,)             # <<<<<<<<<<<<<<
+ *     if send_initial_metadata_op is not None:
+ *         ops = (send_initial_metadata_op,) + ops
+ */
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 182, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_op);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_op);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_op))) __PYX_ERR(32, 182, __pyx_L1_error);
+  __Pyx_GIVEREF(__pyx_t_3);
+  __pyx_cur_scope->__pyx_v_ops = ((PyObject*)__pyx_t_3);
+  __pyx_t_3 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":183
+ *     )
+ *     cdef tuple ops = (op,)
+ *     if send_initial_metadata_op is not None:             # <<<<<<<<<<<<<<
+ *         ops = (send_initial_metadata_op,) + ops
+ *     await execute_batch(grpc_call_wrapper, ops, loop)
+ */
+  __pyx_t_4 = (((PyObject *)__pyx_cur_scope->__pyx_v_send_initial_metadata_op) != Py_None);
+  if (__pyx_t_4) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":184
+ *     cdef tuple ops = (op,)
+ *     if send_initial_metadata_op is not None:
+ *         ops = (send_initial_metadata_op,) + ops             # <<<<<<<<<<<<<<
+ *     await execute_batch(grpc_call_wrapper, ops, loop)
+ */
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 184, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_send_initial_metadata_op);
+    __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_send_initial_metadata_op);
+    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_send_initial_metadata_op))) __PYX_ERR(32, 184, __pyx_L1_error);
+    __pyx_t_1 = PyNumber_Add(__pyx_t_3, __pyx_cur_scope->__pyx_v_ops); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 184, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_ops);
+    __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_ops, ((PyObject*)__pyx_t_1));
+    __Pyx_GIVEREF(__pyx_t_1);
+    __pyx_t_1 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":183
+ *     )
+ *     cdef tuple ops = (op,)
+ *     if send_initial_metadata_op is not None:             # <<<<<<<<<<<<<<
+ *         ops = (send_initial_metadata_op,) + ops
+ *     await execute_batch(grpc_call_wrapper, ops, loop)
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":185
+ *     if send_initial_metadata_op is not None:
+ *         ops = (send_initial_metadata_op,) + ops
+ *     await execute_batch(grpc_call_wrapper, ops, loop)             # <<<<<<<<<<<<<<
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_execute_batch); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 185, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_2 = NULL;
+  __pyx_t_5 = 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_5 = 1;
+    }
+  }
+  #endif
+  {
+    PyObject *__pyx_callargs[4] = {__pyx_t_2, ((PyObject *)__pyx_cur_scope->__pyx_v_grpc_call_wrapper), __pyx_cur_scope->__pyx_v_ops, __pyx_cur_scope->__pyx_v_loop};
+    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
+    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+    if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 185, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  }
+  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_XGOTREF(__pyx_r);
+  if (likely(__pyx_r)) {
+    __Pyx_XGIVEREF(__pyx_r);
+    __Pyx_RefNannyFinishContext();
+    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+    /* return from generator, awaiting value */
+    __pyx_generator->resume_label = 1;
+    return __pyx_r;
+    __pyx_L5_resume_from_await:;
+    if (unlikely(!__pyx_sent_value)) __PYX_ERR(32, 185, __pyx_L1_error)
+  } else {
+    PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType();
+    if (exc_type) {
+      if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
+      else __PYX_ERR(32, 185, __pyx_L1_error)
+    }
+  }
+  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":169
+ *     return op.initial_metadata()
+ * 
+ * async def _send_error_status_from_server(GrpcCallWrapper grpc_call_wrapper,             # <<<<<<<<<<<<<<
+ *                                          grpc_status_code code,
+ *                                          str details,
+ */
+
+  /* function exit code */
+  PyErr_SetNone(PyExc_StopIteration);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_Generator_Replace_StopIteration(0);
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("_send_error_status_from_server", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
+  #if !CYTHON_USE_EXC_INFO_STACK
+  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+  #endif
+  __pyx_generator->resume_label = -1;
+  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":28
+ * 
+ * 
+ * cdef _default_asyncio_engine():             # <<<<<<<<<<<<<<
+ *     return AsyncIOEngine.POLLER
+ * 
+ */
+
+static PyObject *__pyx_f_7_cython_6cygrpc__default_asyncio_engine(void) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_default_asyncio_engine", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":29
+ * 
+ * cdef _default_asyncio_engine():
+ *     return AsyncIOEngine.POLLER             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_AsyncIOEngine); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 29, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_POLLER); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 29, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":28
+ * 
+ * 
+ * cdef _default_asyncio_engine():             # <<<<<<<<<<<<<<
+ *     return AsyncIOEngine.POLLER
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("_cython.cygrpc._default_asyncio_engine", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":32
+ * 
+ * 
+ * cdef grpc_completion_queue *global_completion_queue():             # <<<<<<<<<<<<<<
+ *     return _global_aio_state.cq.c_ptr()
+ * 
+ */
+
+static grpc_completion_queue *__pyx_f_7_cython_6cygrpc_global_completion_queue(void) {
+  grpc_completion_queue *__pyx_r;
+  grpc_completion_queue *__pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":33
+ * 
+ * cdef grpc_completion_queue *global_completion_queue():
+ *     return _global_aio_state.cq.c_ptr()             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = ((struct __pyx_vtabstruct_7_cython_6cygrpc_BaseCompletionQueue *)__pyx_v_7_cython_6cygrpc__global_aio_state->cq->__pyx_vtab)->c_ptr(__pyx_v_7_cython_6cygrpc__global_aio_state->cq); if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 33, __pyx_L1_error)
+  __pyx_r = __pyx_t_1;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":32
+ * 
+ * 
+ * cdef grpc_completion_queue *global_completion_queue():             # <<<<<<<<<<<<<<
+ *     return _global_aio_state.cq.c_ptr()
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc.global_completion_queue", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":38
+ * cdef class _AioState:
+ * 
+ *     def __cinit__(self):             # <<<<<<<<<<<<<<
+ *         self.lock = threading.RLock()
+ *         self.refcount = 0
+ */
+
+/* Python wrapper */
+static int __pyx_pw_7_cython_6cygrpc_9_AioState_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_7_cython_6cygrpc_9_AioState_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_7_cython_6cygrpc_9_AioState___cinit__(((struct __pyx_obj_7_cython_6cygrpc__AioState *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_7_cython_6cygrpc_9_AioState___cinit__(struct __pyx_obj_7_cython_6cygrpc__AioState *__pyx_v_self) {
+  int __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;
+  __Pyx_RefNannySetupContext("__cinit__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":39
+ * 
+ *     def __cinit__(self):
+ *         self.lock = threading.RLock()             # <<<<<<<<<<<<<<
+ *         self.refcount = 0
+ *         self.engine = None
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_threading); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 39, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_RLock); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 39, __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(33, 39, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  }
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->lock);
+  __Pyx_DECREF(__pyx_v_self->lock);
+  __pyx_v_self->lock = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":40
+ *     def __cinit__(self):
+ *         self.lock = threading.RLock()
+ *         self.refcount = 0             # <<<<<<<<<<<<<<
+ *         self.engine = None
+ *         self.cq = None
+ */
+  __pyx_v_self->refcount = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":41
+ *         self.lock = threading.RLock()
+ *         self.refcount = 0
+ *         self.engine = None             # <<<<<<<<<<<<<<
+ *         self.cq = None
+ * 
+ */
+  __Pyx_INCREF(Py_None);
+  __Pyx_GIVEREF(Py_None);
+  __Pyx_GOTREF(__pyx_v_self->engine);
+  __Pyx_DECREF(__pyx_v_self->engine);
+  __pyx_v_self->engine = Py_None;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":42
+ *         self.refcount = 0
+ *         self.engine = None
+ *         self.cq = None             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_INCREF(Py_None);
+  __Pyx_GIVEREF(Py_None);
+  __Pyx_GOTREF((PyObject *)__pyx_v_self->cq);
+  __Pyx_DECREF((PyObject *)__pyx_v_self->cq);
+  __pyx_v_self->cq = ((struct __pyx_obj_7_cython_6cygrpc_BaseCompletionQueue *)Py_None);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":38
+ * cdef class _AioState:
+ * 
+ *     def __cinit__(self):             # <<<<<<<<<<<<<<
+ *         self.lock = threading.RLock()
+ *         self.refcount = 0
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("_cython.cygrpc._AioState.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __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_7_cython_6cygrpc_9_AioState_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_9_AioState_3__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_9_AioState_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_9_AioState_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_7_cython_6cygrpc_9_AioState_2__reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc__AioState *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_9_AioState_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__AioState *__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(10, 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("_cython.cygrpc._AioState.__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_7_cython_6cygrpc_9_AioState_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_9_AioState_5__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_9_AioState_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_9_AioState_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(10, 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(10, 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(10, 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("_cython.cygrpc._AioState.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_9_AioState_4__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc__AioState *)__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_7_cython_6cygrpc_9_AioState_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__AioState *__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(10, 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("_cython.cygrpc._AioState.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":45
+ * 
+ * 
+ * cdef _initialize_poller():             # <<<<<<<<<<<<<<
+ *     # Initializes gRPC Core, must be called before other Core API
+ *     grpc_init()
+ */
+
+static PyObject *__pyx_f_7_cython_6cygrpc__initialize_poller(void) {
+  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("_initialize_poller", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":47
+ * cdef _initialize_poller():
+ *     # Initializes gRPC Core, must be called before other Core API
+ *     grpc_init()             # <<<<<<<<<<<<<<
+ * 
+ *     # Creates the only completion queue
+ */
+  grpc_init();
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":50
+ * 
+ *     # Creates the only completion queue
+ *     _global_aio_state.cq = PollerCompletionQueue()             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_7_cython_6cygrpc_PollerCompletionQueue)); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 50, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF((PyObject *)__pyx_v_7_cython_6cygrpc__global_aio_state->cq);
+  __Pyx_DECREF((PyObject *)__pyx_v_7_cython_6cygrpc__global_aio_state->cq);
+  __pyx_v_7_cython_6cygrpc__global_aio_state->cq = ((struct __pyx_obj_7_cython_6cygrpc_BaseCompletionQueue *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":45
+ * 
+ * 
+ * cdef _initialize_poller():             # <<<<<<<<<<<<<<
+ *     # Initializes gRPC Core, must be called before other Core API
+ *     grpc_init()
+ */
+
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc._initialize_poller", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":53
+ * 
+ * 
+ * cdef _actual_aio_initialization():             # <<<<<<<<<<<<<<
+ *     # Picks the engine for gRPC AsyncIO Stack
+ *     _global_aio_state.engine = AsyncIOEngine.__members__.get(
+ */
+
+static PyObject *__pyx_f_7_cython_6cygrpc__actual_aio_initialization(void) {
+  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_t_6;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_actual_aio_initialization", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":55
+ * cdef _actual_aio_initialization():
+ *     # Picks the engine for gRPC AsyncIO Stack
+ *     _global_aio_state.engine = AsyncIOEngine.__members__.get(             # <<<<<<<<<<<<<<
+ *         _GRPC_ASYNCIO_ENGINE,
+ *         _default_asyncio_engine(),
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_AsyncIOEngine); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 55, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_members); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 55, __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_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 55, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":57
+ *     _global_aio_state.engine = AsyncIOEngine.__members__.get(
+ *         _GRPC_ASYNCIO_ENGINE,
+ *         _default_asyncio_engine(),             # <<<<<<<<<<<<<<
+ *     )
+ *     _LOGGER.debug('Using %s as I/O engine', _global_aio_state.engine)
+ */
+  __pyx_t_3 = __pyx_f_7_cython_6cygrpc__default_asyncio_engine(); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 57, __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_v_7_cython_6cygrpc__GRPC_ASYNCIO_ENGINE, __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(33, 55, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":55
+ * cdef _actual_aio_initialization():
+ *     # Picks the engine for gRPC AsyncIO Stack
+ *     _global_aio_state.engine = AsyncIOEngine.__members__.get(             # <<<<<<<<<<<<<<
+ *         _GRPC_ASYNCIO_ENGINE,
+ *         _default_asyncio_engine(),
+ */
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_7_cython_6cygrpc__global_aio_state->engine);
+  __Pyx_DECREF(__pyx_v_7_cython_6cygrpc__global_aio_state->engine);
+  __pyx_v_7_cython_6cygrpc__global_aio_state->engine = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":59
+ *         _default_asyncio_engine(),
+ *     )
+ *     _LOGGER.debug('Using %s as I/O engine', _global_aio_state.engine)             # <<<<<<<<<<<<<<
+ * 
+ *     # Initializes the process-level state accordingly
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_LOGGER); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 59, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_debug); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 59, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = NULL;
+  __pyx_t_5 = 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_5 = 1;
+    }
+  }
+  #endif
+  {
+    PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_kp_s_Using_s_as_I_O_engine, __pyx_v_7_cython_6cygrpc__global_aio_state->engine};
+    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5);
+    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+    if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 59, __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/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":62
+ * 
+ *     # Initializes the process-level state accordingly
+ *     if _global_aio_state.engine is AsyncIOEngine.POLLER:             # <<<<<<<<<<<<<<
+ *         _initialize_poller()
+ *     else:
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_AsyncIOEngine); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 62, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_POLLER); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 62, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_6 = (__pyx_v_7_cython_6cygrpc__global_aio_state->engine == __pyx_t_3);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  if (likely(__pyx_t_6)) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":63
+ *     # Initializes the process-level state accordingly
+ *     if _global_aio_state.engine is AsyncIOEngine.POLLER:
+ *         _initialize_poller()             # <<<<<<<<<<<<<<
+ *     else:
+ *         raise ValueError('Unsupported engine type [%s]' % _global_aio_state.engine)
+ */
+    __pyx_t_3 = __pyx_f_7_cython_6cygrpc__initialize_poller(); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 63, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":62
+ * 
+ *     # Initializes the process-level state accordingly
+ *     if _global_aio_state.engine is AsyncIOEngine.POLLER:             # <<<<<<<<<<<<<<
+ *         _initialize_poller()
+ *     else:
+ */
+    goto __pyx_L3;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":65
+ *         _initialize_poller()
+ *     else:
+ *         raise ValueError('Unsupported engine type [%s]' % _global_aio_state.engine)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  /*else*/ {
+    __pyx_t_3 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Unsupported_engine_type_s, __pyx_v_7_cython_6cygrpc__global_aio_state->engine); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 65, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 65, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __PYX_ERR(33, 65, __pyx_L1_error)
+  }
+  __pyx_L3:;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":53
+ * 
+ * 
+ * cdef _actual_aio_initialization():             # <<<<<<<<<<<<<<
+ *     # Picks the engine for gRPC AsyncIO Stack
+ *     _global_aio_state.engine = AsyncIOEngine.__members__.get(
+ */
+
+  /* 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("_cython.cygrpc._actual_aio_initialization", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":68
+ * 
+ * 
+ * def _grpc_shutdown_wrapper(_):             # <<<<<<<<<<<<<<
+ *     """A thin Python wrapper of Core's shutdown function.
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_145_grpc_shutdown_wrapper(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_7_cython_6cygrpc_144_grpc_shutdown_wrapper, "A thin Python wrapper of Core's shutdown function.\n\n    Define functions are not allowed in \"cdef\" functions, and Cython complains\n    about a simple lambda with a C function.\n    ");
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_145_grpc_shutdown_wrapper = {"_grpc_shutdown_wrapper", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_145_grpc_shutdown_wrapper, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7_cython_6cygrpc_144_grpc_shutdown_wrapper};
+static PyObject *__pyx_pw_7_cython_6cygrpc_145_grpc_shutdown_wrapper(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
+) {
+  CYTHON_UNUSED PyObject *__pyx_v__ = 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("_grpc_shutdown_wrapper (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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__57,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__57)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 68, __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, "_grpc_shutdown_wrapper") < 0)) __PYX_ERR(33, 68, __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__ = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("_grpc_shutdown_wrapper", 1, 1, 1, __pyx_nargs); __PYX_ERR(33, 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("_cython.cygrpc._grpc_shutdown_wrapper", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_144_grpc_shutdown_wrapper(__pyx_self, __pyx_v__);
+
+  /* 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_7_cython_6cygrpc_144_grpc_shutdown_wrapper(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v__) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("_grpc_shutdown_wrapper", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":74
+ *     about a simple lambda with a C function.
+ *     """
+ *     grpc_shutdown()             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  grpc_shutdown();
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":68
+ * 
+ * 
+ * def _grpc_shutdown_wrapper(_):             # <<<<<<<<<<<<<<
+ *     """A thin Python wrapper of Core's shutdown function.
+ * 
+ */
+
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":77
+ * 
+ * 
+ * cdef _actual_aio_shutdown():             # <<<<<<<<<<<<<<
+ *     if _global_aio_state.engine is AsyncIOEngine.POLLER:
+ *         (<PollerCompletionQueue>_global_aio_state.cq).shutdown()
+ */
+
+static PyObject *__pyx_f_7_cython_6cygrpc__actual_aio_shutdown(void) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_t_3;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_actual_aio_shutdown", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":78
+ * 
+ * cdef _actual_aio_shutdown():
+ *     if _global_aio_state.engine is AsyncIOEngine.POLLER:             # <<<<<<<<<<<<<<
+ *         (<PollerCompletionQueue>_global_aio_state.cq).shutdown()
+ *         grpc_shutdown()
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_AsyncIOEngine); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 78, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_POLLER); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 78, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_3 = (__pyx_v_7_cython_6cygrpc__global_aio_state->engine == __pyx_t_2);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (likely(__pyx_t_3)) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":79
+ * cdef _actual_aio_shutdown():
+ *     if _global_aio_state.engine is AsyncIOEngine.POLLER:
+ *         (<PollerCompletionQueue>_global_aio_state.cq).shutdown()             # <<<<<<<<<<<<<<
+ *         grpc_shutdown()
+ *     else:
+ */
+    __pyx_t_2 = ((struct __pyx_vtabstruct_7_cython_6cygrpc_PollerCompletionQueue *)((struct __pyx_obj_7_cython_6cygrpc_PollerCompletionQueue *)__pyx_v_7_cython_6cygrpc__global_aio_state->cq)->__pyx_base.__pyx_vtab)->shutdown(((struct __pyx_obj_7_cython_6cygrpc_PollerCompletionQueue *)__pyx_v_7_cython_6cygrpc__global_aio_state->cq)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 79, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":80
+ *     if _global_aio_state.engine is AsyncIOEngine.POLLER:
+ *         (<PollerCompletionQueue>_global_aio_state.cq).shutdown()
+ *         grpc_shutdown()             # <<<<<<<<<<<<<<
+ *     else:
+ *         raise ValueError('Unsupported engine type [%s]' % _global_aio_state.engine)
+ */
+    grpc_shutdown();
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":78
+ * 
+ * cdef _actual_aio_shutdown():
+ *     if _global_aio_state.engine is AsyncIOEngine.POLLER:             # <<<<<<<<<<<<<<
+ *         (<PollerCompletionQueue>_global_aio_state.cq).shutdown()
+ *         grpc_shutdown()
+ */
+    goto __pyx_L3;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":82
+ *         grpc_shutdown()
+ *     else:
+ *         raise ValueError('Unsupported engine type [%s]' % _global_aio_state.engine)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  /*else*/ {
+    __pyx_t_2 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Unsupported_engine_type_s, __pyx_v_7_cython_6cygrpc__global_aio_state->engine); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 82, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 82, __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(33, 82, __pyx_L1_error)
+  }
+  __pyx_L3:;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":77
+ * 
+ * 
+ * cdef _actual_aio_shutdown():             # <<<<<<<<<<<<<<
+ *     if _global_aio_state.engine is AsyncIOEngine.POLLER:
+ *         (<PollerCompletionQueue>_global_aio_state.cq).shutdown()
+ */
+
+  /* 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_AddTraceback("_cython.cygrpc._actual_aio_shutdown", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":85
+ * 
+ * 
+ * cdef _initialize_per_loop():             # <<<<<<<<<<<<<<
+ *     cdef object loop = get_working_loop()
+ *     if _global_aio_state.engine is AsyncIOEngine.POLLER:
+ */
+
+static PyObject *__pyx_f_7_cython_6cygrpc__initialize_per_loop(void) {
+  PyObject *__pyx_v_loop = 0;
+  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("_initialize_per_loop", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":86
+ * 
+ * cdef _initialize_per_loop():
+ *     cdef object loop = get_working_loop()             # <<<<<<<<<<<<<<
+ *     if _global_aio_state.engine is AsyncIOEngine.POLLER:
+ *         _global_aio_state.cq.bind_loop(loop)
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_get_working_loop); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 86, __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, 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(33, 86, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  }
+  __pyx_v_loop = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":87
+ * cdef _initialize_per_loop():
+ *     cdef object loop = get_working_loop()
+ *     if _global_aio_state.engine is AsyncIOEngine.POLLER:             # <<<<<<<<<<<<<<
+ *         _global_aio_state.cq.bind_loop(loop)
+ * 
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_AsyncIOEngine); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 87, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_POLLER); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 87, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_5 = (__pyx_v_7_cython_6cygrpc__global_aio_state->engine == __pyx_t_2);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (__pyx_t_5) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":88
+ *     cdef object loop = get_working_loop()
+ *     if _global_aio_state.engine is AsyncIOEngine.POLLER:
+ *         _global_aio_state.cq.bind_loop(loop)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_7_cython_6cygrpc__global_aio_state->cq), __pyx_n_s_bind_loop); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 88, __pyx_L1_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_v_loop};
+      __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(33, 88, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":87
+ * cdef _initialize_per_loop():
+ *     cdef object loop = get_working_loop()
+ *     if _global_aio_state.engine is AsyncIOEngine.POLLER:             # <<<<<<<<<<<<<<
+ *         _global_aio_state.cq.bind_loop(loop)
+ * 
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":85
+ * 
+ * 
+ * cdef _initialize_per_loop():             # <<<<<<<<<<<<<<
+ *     cdef object loop = get_working_loop()
+ *     if _global_aio_state.engine is AsyncIOEngine.POLLER:
+ */
+
+  /* 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("_cython.cygrpc._initialize_per_loop", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_loop);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":91
+ * 
+ * 
+ * cpdef init_grpc_aio():             # <<<<<<<<<<<<<<
+ *     """Initializes the gRPC AsyncIO module.
+ * 
+ */
+
+static PyObject *__pyx_pw_7_cython_6cygrpc_147init_grpc_aio(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyObject *__pyx_f_7_cython_6cygrpc_init_grpc_aio(CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  unsigned int __pyx_t_5;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
+  int __pyx_t_9;
+  PyObject *__pyx_t_10 = NULL;
+  PyObject *__pyx_t_11 = NULL;
+  int __pyx_t_12;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("init_grpc_aio", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":97
+ *     E.g., AioChannel, AioServer.
+ *     """
+ *     with _global_aio_state.lock:             # <<<<<<<<<<<<<<
+ *         _global_aio_state.refcount += 1
+ *         if _global_aio_state.refcount == 1:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_v_7_cython_6cygrpc__global_aio_state->lock, __pyx_n_s_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 97, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_v_7_cython_6cygrpc__global_aio_state->lock, __pyx_n_s_enter); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 97, __pyx_L3_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(33, 97, __pyx_L3_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    /*try:*/ {
+      {
+        __Pyx_PyThreadState_declare
+        __Pyx_PyThreadState_assign
+        __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_8);
+        /*try:*/ {
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":98
+ *     """
+ *     with _global_aio_state.lock:
+ *         _global_aio_state.refcount += 1             # <<<<<<<<<<<<<<
+ *         if _global_aio_state.refcount == 1:
+ *             _actual_aio_initialization()
+ */
+          __pyx_v_7_cython_6cygrpc__global_aio_state->refcount = (__pyx_v_7_cython_6cygrpc__global_aio_state->refcount + 1);
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":99
+ *     with _global_aio_state.lock:
+ *         _global_aio_state.refcount += 1
+ *         if _global_aio_state.refcount == 1:             # <<<<<<<<<<<<<<
+ *             _actual_aio_initialization()
+ *         _initialize_per_loop()
+ */
+          __pyx_t_9 = (__pyx_v_7_cython_6cygrpc__global_aio_state->refcount == 1);
+          if (__pyx_t_9) {
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":100
+ *         _global_aio_state.refcount += 1
+ *         if _global_aio_state.refcount == 1:
+ *             _actual_aio_initialization()             # <<<<<<<<<<<<<<
+ *         _initialize_per_loop()
+ * 
+ */
+            __pyx_t_2 = __pyx_f_7_cython_6cygrpc__actual_aio_initialization(); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 100, __pyx_L7_error)
+            __Pyx_GOTREF(__pyx_t_2);
+            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":99
+ *     with _global_aio_state.lock:
+ *         _global_aio_state.refcount += 1
+ *         if _global_aio_state.refcount == 1:             # <<<<<<<<<<<<<<
+ *             _actual_aio_initialization()
+ *         _initialize_per_loop()
+ */
+          }
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":101
+ *         if _global_aio_state.refcount == 1:
+ *             _actual_aio_initialization()
+ *         _initialize_per_loop()             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+          __pyx_t_2 = __pyx_f_7_cython_6cygrpc__initialize_per_loop(); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 101, __pyx_L7_error)
+          __Pyx_GOTREF(__pyx_t_2);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":97
+ *     E.g., AioChannel, AioServer.
+ *     """
+ *     with _global_aio_state.lock:             # <<<<<<<<<<<<<<
+ *         _global_aio_state.refcount += 1
+ *         if _global_aio_state.refcount == 1:
+ */
+        }
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+        goto __pyx_L12_try_end;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        /*except:*/ {
+          __Pyx_AddTraceback("_cython.cygrpc.init_grpc_aio", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4) < 0) __PYX_ERR(33, 97, __pyx_L9_except_error)
+          __Pyx_XGOTREF(__pyx_t_2);
+          __Pyx_XGOTREF(__pyx_t_3);
+          __Pyx_XGOTREF(__pyx_t_4);
+          __pyx_t_10 = PyTuple_Pack(3, __pyx_t_2, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(33, 97, __pyx_L9_except_error)
+          __Pyx_GOTREF(__pyx_t_10);
+          __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_10, NULL);
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+          if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 97, __pyx_L9_except_error)
+          __Pyx_GOTREF(__pyx_t_11);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_11);
+          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+          if (__pyx_t_9 < 0) __PYX_ERR(33, 97, __pyx_L9_except_error)
+          __pyx_t_12 = (!__pyx_t_9);
+          if (unlikely(__pyx_t_12)) {
+            __Pyx_GIVEREF(__pyx_t_2);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_XGIVEREF(__pyx_t_4);
+            __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_3, __pyx_t_4);
+            __pyx_t_2 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0; 
+            __PYX_ERR(33, 97, __pyx_L9_except_error)
+          }
+          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_XGIVEREF(__pyx_t_8);
+        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_XGIVEREF(__pyx_t_8);
+        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
+        __pyx_L12_try_end:;
+      }
+    }
+    /*finally:*/ {
+      /*normal exit:*/{
+        if (__pyx_t_1) {
+          __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__11, NULL);
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 97, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_8);
+          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+        }
+        goto __pyx_L6;
+      }
+      __pyx_L6:;
+    }
+    goto __pyx_L17;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    goto __pyx_L1_error;
+    __pyx_L17:;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":91
+ * 
+ * 
+ * cpdef init_grpc_aio():             # <<<<<<<<<<<<<<
+ *     """Initializes the gRPC AsyncIO module.
+ * 
+ */
+
+  /* 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_10);
+  __Pyx_AddTraceback("_cython.cygrpc.init_grpc_aio", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_147init_grpc_aio(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+PyDoc_STRVAR(__pyx_doc_7_cython_6cygrpc_146init_grpc_aio, "Initializes the gRPC AsyncIO module.\n\n    Expected to be invoked on critical class constructors.\n    E.g., AioChannel, AioServer.\n    ");
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_147init_grpc_aio = {"init_grpc_aio", (PyCFunction)__pyx_pw_7_cython_6cygrpc_147init_grpc_aio, METH_NOARGS, __pyx_doc_7_cython_6cygrpc_146init_grpc_aio};
+static PyObject *__pyx_pw_7_cython_6cygrpc_147init_grpc_aio(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("init_grpc_aio (wrapper)", 0);
+  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_146init_grpc_aio(__pyx_self);
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_146init_grpc_aio(CYTHON_UNUSED PyObject *__pyx_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("init_grpc_aio", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_7_cython_6cygrpc_init_grpc_aio(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 91, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.init_grpc_aio", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":104
+ * 
+ * 
+ * cpdef shutdown_grpc_aio():             # <<<<<<<<<<<<<<
+ *     """Shuts down the gRPC AsyncIO module.
+ * 
+ */
+
+static PyObject *__pyx_pw_7_cython_6cygrpc_149shutdown_grpc_aio(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyObject *__pyx_f_7_cython_6cygrpc_shutdown_grpc_aio(CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  unsigned int __pyx_t_5;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
+  int __pyx_t_9;
+  PyObject *__pyx_t_10 = NULL;
+  PyObject *__pyx_t_11 = NULL;
+  int __pyx_t_12;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("shutdown_grpc_aio", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":110
+ *     E.g., AioChannel, AioServer.
+ *     """
+ *     with _global_aio_state.lock:             # <<<<<<<<<<<<<<
+ *         assert _global_aio_state.refcount > 0
+ *         _global_aio_state.refcount -= 1
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_v_7_cython_6cygrpc__global_aio_state->lock, __pyx_n_s_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 110, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_v_7_cython_6cygrpc__global_aio_state->lock, __pyx_n_s_enter); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 110, __pyx_L3_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(33, 110, __pyx_L3_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    /*try:*/ {
+      {
+        __Pyx_PyThreadState_declare
+        __Pyx_PyThreadState_assign
+        __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_8);
+        /*try:*/ {
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":111
+ *     """
+ *     with _global_aio_state.lock:
+ *         assert _global_aio_state.refcount > 0             # <<<<<<<<<<<<<<
+ *         _global_aio_state.refcount -= 1
+ *         if not _global_aio_state.refcount:
+ */
+          #ifndef CYTHON_WITHOUT_ASSERTIONS
+          if (unlikely(__pyx_assertions_enabled())) {
+            __pyx_t_9 = (__pyx_v_7_cython_6cygrpc__global_aio_state->refcount > 0);
+            if (unlikely(!__pyx_t_9)) {
+              __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
+              __PYX_ERR(33, 111, __pyx_L7_error)
+            }
+          }
+          #else
+          if ((1)); else __PYX_ERR(33, 111, __pyx_L7_error)
+          #endif
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":112
+ *     with _global_aio_state.lock:
+ *         assert _global_aio_state.refcount > 0
+ *         _global_aio_state.refcount -= 1             # <<<<<<<<<<<<<<
+ *         if not _global_aio_state.refcount:
+ *             _actual_aio_shutdown()
+ */
+          __pyx_v_7_cython_6cygrpc__global_aio_state->refcount = (__pyx_v_7_cython_6cygrpc__global_aio_state->refcount - 1);
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":113
+ *         assert _global_aio_state.refcount > 0
+ *         _global_aio_state.refcount -= 1
+ *         if not _global_aio_state.refcount:             # <<<<<<<<<<<<<<
+ *             _actual_aio_shutdown()
+ */
+          __pyx_t_9 = (!(__pyx_v_7_cython_6cygrpc__global_aio_state->refcount != 0));
+          if (__pyx_t_9) {
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":114
+ *         _global_aio_state.refcount -= 1
+ *         if not _global_aio_state.refcount:
+ *             _actual_aio_shutdown()             # <<<<<<<<<<<<<<
+ */
+            __pyx_t_2 = __pyx_f_7_cython_6cygrpc__actual_aio_shutdown(); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 114, __pyx_L7_error)
+            __Pyx_GOTREF(__pyx_t_2);
+            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":113
+ *         assert _global_aio_state.refcount > 0
+ *         _global_aio_state.refcount -= 1
+ *         if not _global_aio_state.refcount:             # <<<<<<<<<<<<<<
+ *             _actual_aio_shutdown()
+ */
+          }
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":110
+ *     E.g., AioChannel, AioServer.
+ *     """
+ *     with _global_aio_state.lock:             # <<<<<<<<<<<<<<
+ *         assert _global_aio_state.refcount > 0
+ *         _global_aio_state.refcount -= 1
+ */
+        }
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+        goto __pyx_L12_try_end;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        /*except:*/ {
+          __Pyx_AddTraceback("_cython.cygrpc.shutdown_grpc_aio", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4) < 0) __PYX_ERR(33, 110, __pyx_L9_except_error)
+          __Pyx_XGOTREF(__pyx_t_2);
+          __Pyx_XGOTREF(__pyx_t_3);
+          __Pyx_XGOTREF(__pyx_t_4);
+          __pyx_t_10 = PyTuple_Pack(3, __pyx_t_2, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(33, 110, __pyx_L9_except_error)
+          __Pyx_GOTREF(__pyx_t_10);
+          __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_10, NULL);
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+          if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 110, __pyx_L9_except_error)
+          __Pyx_GOTREF(__pyx_t_11);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_11);
+          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+          if (__pyx_t_9 < 0) __PYX_ERR(33, 110, __pyx_L9_except_error)
+          __pyx_t_12 = (!__pyx_t_9);
+          if (unlikely(__pyx_t_12)) {
+            __Pyx_GIVEREF(__pyx_t_2);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_XGIVEREF(__pyx_t_4);
+            __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_3, __pyx_t_4);
+            __pyx_t_2 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0; 
+            __PYX_ERR(33, 110, __pyx_L9_except_error)
+          }
+          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_XGIVEREF(__pyx_t_8);
+        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_XGIVEREF(__pyx_t_8);
+        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
+        __pyx_L12_try_end:;
+      }
+    }
+    /*finally:*/ {
+      /*normal exit:*/{
+        if (__pyx_t_1) {
+          __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__11, NULL);
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 110, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_8);
+          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+        }
+        goto __pyx_L6;
+      }
+      __pyx_L6:;
+    }
+    goto __pyx_L17;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    goto __pyx_L1_error;
+    __pyx_L17:;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":104
+ * 
+ * 
+ * cpdef shutdown_grpc_aio():             # <<<<<<<<<<<<<<
+ *     """Shuts down the gRPC AsyncIO module.
+ * 
+ */
+
+  /* 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_10);
+  __Pyx_AddTraceback("_cython.cygrpc.shutdown_grpc_aio", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_149shutdown_grpc_aio(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+PyDoc_STRVAR(__pyx_doc_7_cython_6cygrpc_148shutdown_grpc_aio, "Shuts down the gRPC AsyncIO module.\n\n    Expected to be invoked on critical class destructors.\n    E.g., AioChannel, AioServer.\n    ");
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_149shutdown_grpc_aio = {"shutdown_grpc_aio", (PyCFunction)__pyx_pw_7_cython_6cygrpc_149shutdown_grpc_aio, METH_NOARGS, __pyx_doc_7_cython_6cygrpc_148shutdown_grpc_aio};
+static PyObject *__pyx_pw_7_cython_6cygrpc_149shutdown_grpc_aio(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("shutdown_grpc_aio (wrapper)", 0);
+  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_148shutdown_grpc_aio(__pyx_self);
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_148shutdown_grpc_aio(CYTHON_UNUSED PyObject *__pyx_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("shutdown_grpc_aio", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_7_cython_6cygrpc_shutdown_grpc_aio(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 104, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.shutdown_grpc_aio", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":33
+ * 
+ * 
+ * cdef int _get_send_initial_metadata_flags(object wait_for_ready) except *:             # <<<<<<<<<<<<<<
+ *     cdef int flags = 0
+ *     # Wait-for-ready can be None, which means using default value in Core.
+ */
+
+static int __pyx_f_7_cython_6cygrpc__get_send_initial_metadata_flags(PyObject *__pyx_v_wait_for_ready) {
+  int __pyx_v_flags;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  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("_get_send_initial_metadata_flags", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":34
+ * 
+ * cdef int _get_send_initial_metadata_flags(object wait_for_ready) except *:
+ *     cdef int flags = 0             # <<<<<<<<<<<<<<
+ *     # Wait-for-ready can be None, which means using default value in Core.
+ *     if wait_for_ready is not None:
+ */
+  __pyx_v_flags = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":36
+ *     cdef int flags = 0
+ *     # Wait-for-ready can be None, which means using default value in Core.
+ *     if wait_for_ready is not None:             # <<<<<<<<<<<<<<
+ *         flags |= InitialMetadataFlags.wait_for_ready_explicitly_set
+ *         if wait_for_ready:
+ */
+  __pyx_t_1 = (__pyx_v_wait_for_ready != Py_None);
+  if (__pyx_t_1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":37
+ *     # Wait-for-ready can be None, which means using default value in Core.
+ *     if wait_for_ready is not None:
+ *         flags |= InitialMetadataFlags.wait_for_ready_explicitly_set             # <<<<<<<<<<<<<<
+ *         if wait_for_ready:
+ *             flags |= InitialMetadataFlags.wait_for_ready
+ */
+    __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_flags); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 37, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_InitialMetadataFlags); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 37, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_wait_for_ready_explicitly_set); if (unlikely(!__pyx_t_4)) __PYX_ERR(34, 37, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __pyx_t_3 = PyNumber_InPlaceOr(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 37, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(34, 37, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __pyx_v_flags = __pyx_t_5;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":38
+ *     if wait_for_ready is not None:
+ *         flags |= InitialMetadataFlags.wait_for_ready_explicitly_set
+ *         if wait_for_ready:             # <<<<<<<<<<<<<<
+ *             flags |= InitialMetadataFlags.wait_for_ready
+ * 
+ */
+    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_wait_for_ready); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(34, 38, __pyx_L1_error)
+    if (__pyx_t_1) {
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":39
+ *         flags |= InitialMetadataFlags.wait_for_ready_explicitly_set
+ *         if wait_for_ready:
+ *             flags |= InitialMetadataFlags.wait_for_ready             # <<<<<<<<<<<<<<
+ * 
+ *     flags &= InitialMetadataFlags.used_mask
+ */
+      __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_flags); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 39, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
+      __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_InitialMetadataFlags); if (unlikely(!__pyx_t_4)) __PYX_ERR(34, 39, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_wait_for_ready); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 39, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __pyx_t_4 = PyNumber_InPlaceOr(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(34, 39, __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_t_5 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(34, 39, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __pyx_v_flags = __pyx_t_5;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":38
+ *     if wait_for_ready is not None:
+ *         flags |= InitialMetadataFlags.wait_for_ready_explicitly_set
+ *         if wait_for_ready:             # <<<<<<<<<<<<<<
+ *             flags |= InitialMetadataFlags.wait_for_ready
+ * 
+ */
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":36
+ *     cdef int flags = 0
+ *     # Wait-for-ready can be None, which means using default value in Core.
+ *     if wait_for_ready is not None:             # <<<<<<<<<<<<<<
+ *         flags |= InitialMetadataFlags.wait_for_ready_explicitly_set
+ *         if wait_for_ready:
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":41
+ *             flags |= InitialMetadataFlags.wait_for_ready
+ * 
+ *     flags &= InitialMetadataFlags.used_mask             # <<<<<<<<<<<<<<
+ *     return flags
+ * 
+ */
+  __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_flags); if (unlikely(!__pyx_t_4)) __PYX_ERR(34, 41, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_InitialMetadataFlags); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 41, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_used_mask); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 41, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = PyNumber_InPlaceAnd(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 41, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(34, 41, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_v_flags = __pyx_t_5;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":42
+ * 
+ *     flags &= InitialMetadataFlags.used_mask
+ *     return flags             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_r = __pyx_v_flags;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":33
+ * 
+ * 
+ * cdef int _get_send_initial_metadata_flags(object wait_for_ready) except *:             # <<<<<<<<<<<<<<
+ *     cdef int flags = 0
+ *     # Wait-for-ready can be None, which means using default value in Core.
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("_cython.cygrpc._get_send_initial_metadata_flags", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":47
+ * cdef class _AioCall(GrpcCallWrapper):
+ * 
+ *     def __cinit__(self, AioChannel channel, object deadline,             # <<<<<<<<<<<<<<
+ *                   bytes method, CallCredentials call_credentials, object wait_for_ready):
+ *         init_grpc_aio()
+ */
+
+/* Python wrapper */
+static int __pyx_pw_7_cython_6cygrpc_8_AioCall_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_7_cython_6cygrpc_8_AioCall_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct __pyx_obj_7_cython_6cygrpc_AioChannel *__pyx_v_channel = 0;
+  PyObject *__pyx_v_deadline = 0;
+  PyObject *__pyx_v_method = 0;
+  struct __pyx_obj_7_cython_6cygrpc_CallCredentials *__pyx_v_call_credentials = 0;
+  PyObject *__pyx_v_wait_for_ready = 0;
+  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+  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;
+  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);
+  {
+    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_channel,&__pyx_n_s_deadline,&__pyx_n_s_method,&__pyx_n_s_call_credentials,&__pyx_n_s_wait_for_ready,0};
+    if (__pyx_kwds) {
+      Py_ssize_t kw_args;
+      switch (__pyx_nargs) {
+        case  5: values[4] = __Pyx_Arg_VARARGS(__pyx_args, 4);
+        CYTHON_FALLTHROUGH;
+        case  4: values[3] = __Pyx_Arg_VARARGS(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
+        case  3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
+      switch (__pyx_nargs) {
+        case  0:
+        if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_channel)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 47, __pyx_L3_error)
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_deadline)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 47, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 5, 5, 1); __PYX_ERR(34, 47, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_method)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[2]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 47, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 5, 5, 2); __PYX_ERR(34, 47, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  3:
+        if (likely((values[3] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_call_credentials)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[3]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 47, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 5, 5, 3); __PYX_ERR(34, 47, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  4:
+        if (likely((values[4] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_wait_for_ready)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[4]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 47, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 5, 5, 4); __PYX_ERR(34, 47, __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, "__cinit__") < 0)) __PYX_ERR(34, 47, __pyx_L3_error)
+      }
+    } else if (unlikely(__pyx_nargs != 5)) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+      values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
+      values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
+      values[3] = __Pyx_Arg_VARARGS(__pyx_args, 3);
+      values[4] = __Pyx_Arg_VARARGS(__pyx_args, 4);
+    }
+    __pyx_v_channel = ((struct __pyx_obj_7_cython_6cygrpc_AioChannel *)values[0]);
+    __pyx_v_deadline = values[1];
+    __pyx_v_method = ((PyObject*)values[2]);
+    __pyx_v_call_credentials = ((struct __pyx_obj_7_cython_6cygrpc_CallCredentials *)values[3]);
+    __pyx_v_wait_for_ready = values[4];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 5, 5, __pyx_nargs); __PYX_ERR(34, 47, __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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_AddTraceback("_cython.cygrpc._AioCall.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_channel), __pyx_ptype_7_cython_6cygrpc_AioChannel, 1, "channel", 0))) __PYX_ERR(34, 47, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_method), (&PyBytes_Type), 1, "method", 1))) __PYX_ERR(34, 48, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_call_credentials), __pyx_ptype_7_cython_6cygrpc_CallCredentials, 1, "call_credentials", 0))) __PYX_ERR(34, 48, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_8_AioCall___cinit__(((struct __pyx_obj_7_cython_6cygrpc__AioCall *)__pyx_v_self), __pyx_v_channel, __pyx_v_deadline, __pyx_v_method, __pyx_v_call_credentials, __pyx_v_wait_for_ready);
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = -1;
+  __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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_7_cython_6cygrpc_8_AioCall___cinit__(struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self, struct __pyx_obj_7_cython_6cygrpc_AioChannel *__pyx_v_channel, PyObject *__pyx_v_deadline, PyObject *__pyx_v_method, struct __pyx_obj_7_cython_6cygrpc_CallCredentials *__pyx_v_call_credentials, PyObject *__pyx_v_wait_for_ready) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_t_2;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__cinit__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":49
+ *     def __cinit__(self, AioChannel channel, object deadline,
+ *                   bytes method, CallCredentials call_credentials, object wait_for_ready):
+ *         init_grpc_aio()             # <<<<<<<<<<<<<<
+ *         self.call = NULL
+ *         self._channel = channel
+ */
+  __pyx_t_1 = __pyx_f_7_cython_6cygrpc_init_grpc_aio(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 49, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":50
+ *                   bytes method, CallCredentials call_credentials, object wait_for_ready):
+ *         init_grpc_aio()
+ *         self.call = NULL             # <<<<<<<<<<<<<<
+ *         self._channel = channel
+ *         self._loop = channel.loop
+ */
+  __pyx_v_self->__pyx_base.call = NULL;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":51
+ *         init_grpc_aio()
+ *         self.call = NULL
+ *         self._channel = channel             # <<<<<<<<<<<<<<
+ *         self._loop = channel.loop
+ *         self._references = []
+ */
+  __Pyx_INCREF((PyObject *)__pyx_v_channel);
+  __Pyx_GIVEREF((PyObject *)__pyx_v_channel);
+  __Pyx_GOTREF((PyObject *)__pyx_v_self->_channel);
+  __Pyx_DECREF((PyObject *)__pyx_v_self->_channel);
+  __pyx_v_self->_channel = __pyx_v_channel;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":52
+ *         self.call = NULL
+ *         self._channel = channel
+ *         self._loop = channel.loop             # <<<<<<<<<<<<<<
+ *         self._references = []
+ *         self._status = None
+ */
+  __pyx_t_1 = __pyx_v_channel->loop;
+  __Pyx_INCREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->_loop);
+  __Pyx_DECREF(__pyx_v_self->_loop);
+  __pyx_v_self->_loop = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":53
+ *         self._channel = channel
+ *         self._loop = channel.loop
+ *         self._references = []             # <<<<<<<<<<<<<<
+ *         self._status = None
+ *         self._initial_metadata = None
+ */
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 53, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->_references);
+  __Pyx_DECREF(__pyx_v_self->_references);
+  __pyx_v_self->_references = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":54
+ *         self._loop = channel.loop
+ *         self._references = []
+ *         self._status = None             # <<<<<<<<<<<<<<
+ *         self._initial_metadata = None
+ *         self._waiters_status = []
+ */
+  __Pyx_INCREF(Py_None);
+  __Pyx_GIVEREF(Py_None);
+  __Pyx_GOTREF((PyObject *)__pyx_v_self->_status);
+  __Pyx_DECREF((PyObject *)__pyx_v_self->_status);
+  __pyx_v_self->_status = ((struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *)Py_None);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":55
+ *         self._references = []
+ *         self._status = None
+ *         self._initial_metadata = None             # <<<<<<<<<<<<<<
+ *         self._waiters_status = []
+ *         self._waiters_initial_metadata = []
+ */
+  __Pyx_INCREF(Py_None);
+  __Pyx_GIVEREF(Py_None);
+  __Pyx_GOTREF(__pyx_v_self->_initial_metadata);
+  __Pyx_DECREF(__pyx_v_self->_initial_metadata);
+  __pyx_v_self->_initial_metadata = ((PyObject*)Py_None);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":56
+ *         self._status = None
+ *         self._initial_metadata = None
+ *         self._waiters_status = []             # <<<<<<<<<<<<<<
+ *         self._waiters_initial_metadata = []
+ *         self._done_callbacks = []
+ */
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 56, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->_waiters_status);
+  __Pyx_DECREF(__pyx_v_self->_waiters_status);
+  __pyx_v_self->_waiters_status = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":57
+ *         self._initial_metadata = None
+ *         self._waiters_status = []
+ *         self._waiters_initial_metadata = []             # <<<<<<<<<<<<<<
+ *         self._done_callbacks = []
+ *         self._is_locally_cancelled = False
+ */
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 57, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->_waiters_initial_metadata);
+  __Pyx_DECREF(__pyx_v_self->_waiters_initial_metadata);
+  __pyx_v_self->_waiters_initial_metadata = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":58
+ *         self._waiters_status = []
+ *         self._waiters_initial_metadata = []
+ *         self._done_callbacks = []             # <<<<<<<<<<<<<<
+ *         self._is_locally_cancelled = False
+ *         self._deadline = deadline
+ */
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 58, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->_done_callbacks);
+  __Pyx_DECREF(__pyx_v_self->_done_callbacks);
+  __pyx_v_self->_done_callbacks = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":59
+ *         self._waiters_initial_metadata = []
+ *         self._done_callbacks = []
+ *         self._is_locally_cancelled = False             # <<<<<<<<<<<<<<
+ *         self._deadline = deadline
+ *         self._send_initial_metadata_flags = _get_send_initial_metadata_flags(wait_for_ready)
+ */
+  __pyx_v_self->_is_locally_cancelled = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":60
+ *         self._done_callbacks = []
+ *         self._is_locally_cancelled = False
+ *         self._deadline = deadline             # <<<<<<<<<<<<<<
+ *         self._send_initial_metadata_flags = _get_send_initial_metadata_flags(wait_for_ready)
+ *         self._create_grpc_call(deadline, method, call_credentials)
+ */
+  __Pyx_INCREF(__pyx_v_deadline);
+  __Pyx_GIVEREF(__pyx_v_deadline);
+  __Pyx_GOTREF(__pyx_v_self->_deadline);
+  __Pyx_DECREF(__pyx_v_self->_deadline);
+  __pyx_v_self->_deadline = __pyx_v_deadline;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":61
+ *         self._is_locally_cancelled = False
+ *         self._deadline = deadline
+ *         self._send_initial_metadata_flags = _get_send_initial_metadata_flags(wait_for_ready)             # <<<<<<<<<<<<<<
+ *         self._create_grpc_call(deadline, method, call_credentials)
+ * 
+ */
+  __pyx_t_2 = __pyx_f_7_cython_6cygrpc__get_send_initial_metadata_flags(__pyx_v_wait_for_ready); if (unlikely(__pyx_t_2 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(34, 61, __pyx_L1_error)
+  __pyx_v_self->_send_initial_metadata_flags = __pyx_t_2;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":62
+ *         self._deadline = deadline
+ *         self._send_initial_metadata_flags = _get_send_initial_metadata_flags(wait_for_ready)
+ *         self._create_grpc_call(deadline, method, call_credentials)             # <<<<<<<<<<<<<<
+ * 
+ *     def __dealloc__(self):
+ */
+  ((struct __pyx_vtabstruct_7_cython_6cygrpc__AioCall *)__pyx_v_self->__pyx_vtab)->_create_grpc_call(__pyx_v_self, __pyx_v_deadline, __pyx_v_method, __pyx_v_call_credentials); if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 62, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":47
+ * cdef class _AioCall(GrpcCallWrapper):
+ * 
+ *     def __cinit__(self, AioChannel channel, object deadline,             # <<<<<<<<<<<<<<
+ *                   bytes method, CallCredentials call_credentials, object wait_for_ready):
+ *         init_grpc_aio()
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc._AioCall.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":64
+ *         self._create_grpc_call(deadline, method, call_credentials)
+ * 
+ *     def __dealloc__(self):             # <<<<<<<<<<<<<<
+ *         if self.call:
+ *             grpc_call_unref(self.call)
+ */
+
+/* Python wrapper */
+static void __pyx_pw_7_cython_6cygrpc_8_AioCall_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
+static void __pyx_pw_7_cython_6cygrpc_8_AioCall_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_7_cython_6cygrpc_8_AioCall_2__dealloc__(((struct __pyx_obj_7_cython_6cygrpc__AioCall *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+}
+
+static void __pyx_pf_7_cython_6cygrpc_8_AioCall_2__dealloc__(struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self) {
+  __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("__dealloc__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":65
+ * 
+ *     def __dealloc__(self):
+ *         if self.call:             # <<<<<<<<<<<<<<
+ *             grpc_call_unref(self.call)
+ *         shutdown_grpc_aio()
+ */
+  __pyx_t_1 = (__pyx_v_self->__pyx_base.call != 0);
+  if (__pyx_t_1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":66
+ *     def __dealloc__(self):
+ *         if self.call:
+ *             grpc_call_unref(self.call)             # <<<<<<<<<<<<<<
+ *         shutdown_grpc_aio()
+ * 
+ */
+    grpc_call_unref(__pyx_v_self->__pyx_base.call);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":65
+ * 
+ *     def __dealloc__(self):
+ *         if self.call:             # <<<<<<<<<<<<<<
+ *             grpc_call_unref(self.call)
+ *         shutdown_grpc_aio()
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":67
+ *         if self.call:
+ *             grpc_call_unref(self.call)
+ *         shutdown_grpc_aio()             # <<<<<<<<<<<<<<
+ * 
+ *     def _repr(self) -> str:
+ */
+  __pyx_t_2 = __pyx_f_7_cython_6cygrpc_shutdown_grpc_aio(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 67, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":64
+ *         self._create_grpc_call(deadline, method, call_credentials)
+ * 
+ *     def __dealloc__(self):             # <<<<<<<<<<<<<<
+ *         if self.call:
+ *             grpc_call_unref(self.call)
+ */
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_WriteUnraisable("_cython.cygrpc._AioCall.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":69
+ *         shutdown_grpc_aio()
+ * 
+ *     def _repr(self) -> str:             # <<<<<<<<<<<<<<
+ *         """Assembles the RPC representation string."""
+ *         # This needs to be loaded at run time once everything
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_8_AioCall_5_repr(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+PyDoc_STRVAR(__pyx_doc_7_cython_6cygrpc_8_AioCall_4_repr, "Assembles the RPC representation string.");
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_8_AioCall_5_repr = {"_repr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_8_AioCall_5_repr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7_cython_6cygrpc_8_AioCall_4_repr};
+static PyObject *__pyx_pw_7_cython_6cygrpc_8_AioCall_5_repr(PyObject *__pyx_v_self, 
+#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 (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "_repr", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_8_AioCall_4_repr(((struct __pyx_obj_7_cython_6cygrpc__AioCall *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_8_AioCall_4_repr(struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self) {
+  PyObject *__pyx_v__common = 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;
+  PyObject *__pyx_t_7 = NULL;
+  grpc_status_code __pyx_t_8;
+  PyObject *__pyx_t_9 = NULL;
+  PyObject *__pyx_t_10 = NULL;
+  PyObject *__pyx_t_11 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_repr", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":73
+ *         # This needs to be loaded at run time once everything
+ *         # has been loaded.
+ *         from grpc import _common             # <<<<<<<<<<<<<<
+ * 
+ *         if not self.done():
+ */
+  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 73, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(__pyx_n_s_common);
+  __Pyx_GIVEREF(__pyx_n_s_common);
+  if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_common)) __PYX_ERR(34, 73, __pyx_L1_error);
+  __pyx_t_2 = __Pyx_Import(__pyx_n_s_grpc, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 73, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_common); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 73, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(__pyx_t_1);
+  __pyx_v__common = __pyx_t_1;
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":75
+ *         from grpc import _common
+ * 
+ *         if not self.done():             # <<<<<<<<<<<<<<
+ *             return '<{} object>'.format(self.__class__.__name__)
+ * 
+ */
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_done); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 75, __pyx_L1_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, NULL};
+    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 75, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  }
+  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(34, 75, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_6 = (!__pyx_t_5);
+  if (__pyx_t_6) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":76
+ * 
+ *         if not self.done():
+ *             return '<{} object>'.format(self.__class__.__name__)             # <<<<<<<<<<<<<<
+ * 
+ *         if self._status.code() is StatusCode.ok:
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_object_2, __pyx_n_s_format); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 76, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 76, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_name_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(34, 76, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_7);
+    __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_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_t_7};
+      __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;
+      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+      if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 76, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    }
+    if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_2))) __PYX_ERR(34, 76, __pyx_L1_error)
+    __pyx_r = ((PyObject*)__pyx_t_2);
+    __pyx_t_2 = 0;
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":75
+ *         from grpc import _common
+ * 
+ *         if not self.done():             # <<<<<<<<<<<<<<
+ *             return '<{} object>'.format(self.__class__.__name__)
+ * 
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":78
+ *             return '<{} object>'.format(self.__class__.__name__)
+ * 
+ *         if self._status.code() is StatusCode.ok:             # <<<<<<<<<<<<<<
+ *             return _OK_CALL_REPRESENTATION.format(
+ *                 self.__class__.__name__,
+ */
+  __pyx_t_8 = ((struct __pyx_vtabstruct_7_cython_6cygrpc_AioRpcStatus *)__pyx_v_self->_status->__pyx_vtab)->code(__pyx_v_self->_status, 0); if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 78, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_grpc_status_code(__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 78, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_StatusCode); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 78, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ok); if (unlikely(!__pyx_t_7)) __PYX_ERR(34, 78, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_6 = (__pyx_t_2 == __pyx_t_7);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  if (__pyx_t_6) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":79
+ * 
+ *         if self._status.code() is StatusCode.ok:
+ *             return _OK_CALL_REPRESENTATION.format(             # <<<<<<<<<<<<<<
+ *                 self.__class__.__name__,
+ *                 _common.CYGRPC_STATUS_CODE_TO_STATUS_CODE[self._status.code()],
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_OK_CALL_REPRESENTATION); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 79, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_format); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 79, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":80
+ *         if self._status.code() is StatusCode.ok:
+ *             return _OK_CALL_REPRESENTATION.format(
+ *                 self.__class__.__name__,             # <<<<<<<<<<<<<<
+ *                 _common.CYGRPC_STATUS_CODE_TO_STATUS_CODE[self._status.code()],
+ *                 self._status.details())
+ */
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 80, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_name_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 80, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":81
+ *             return _OK_CALL_REPRESENTATION.format(
+ *                 self.__class__.__name__,
+ *                 _common.CYGRPC_STATUS_CODE_TO_STATUS_CODE[self._status.code()],             # <<<<<<<<<<<<<<
+ *                 self._status.details())
+ *         else:
+ */
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v__common, __pyx_n_s_CYGRPC_STATUS_CODE_TO_STATUS_COD); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 81, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_8 = ((struct __pyx_vtabstruct_7_cython_6cygrpc_AioRpcStatus *)__pyx_v_self->_status->__pyx_vtab)->code(__pyx_v_self->_status, 0); if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 81, __pyx_L1_error)
+    __pyx_t_9 = __Pyx_PyInt_From_grpc_status_code(__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(34, 81, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_9);
+    __pyx_t_10 = __Pyx_PyObject_GetItem(__pyx_t_2, __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(34, 81, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_10);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":82
+ *                 self.__class__.__name__,
+ *                 _common.CYGRPC_STATUS_CODE_TO_STATUS_CODE[self._status.code()],
+ *                 self._status.details())             # <<<<<<<<<<<<<<
+ *         else:
+ *             return _NON_OK_CALL_REPRESENTATION.format(
+ */
+    __pyx_t_9 = ((struct __pyx_vtabstruct_7_cython_6cygrpc_AioRpcStatus *)__pyx_v_self->_status->__pyx_vtab)->details(__pyx_v_self->_status, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(34, 82, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_9);
+    __pyx_t_2 = NULL;
+    __pyx_t_4 = 0;
+    #if CYTHON_UNPACK_METHODS
+    if (unlikely(PyMethod_Check(__pyx_t_1))) {
+      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
+      if (likely(__pyx_t_2)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+        __Pyx_INCREF(__pyx_t_2);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_1, function);
+        __pyx_t_4 = 1;
+      }
+    }
+    #endif
+    {
+      PyObject *__pyx_callargs[4] = {__pyx_t_2, __pyx_t_3, __pyx_t_10, __pyx_t_9};
+      __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 3+__pyx_t_4);
+      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+      if (unlikely(!__pyx_t_7)) __PYX_ERR(34, 79, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_7);
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":79
+ * 
+ *         if self._status.code() is StatusCode.ok:
+ *             return _OK_CALL_REPRESENTATION.format(             # <<<<<<<<<<<<<<
+ *                 self.__class__.__name__,
+ *                 _common.CYGRPC_STATUS_CODE_TO_STATUS_CODE[self._status.code()],
+ */
+    if (!(likely(PyString_CheckExact(__pyx_t_7))||((__pyx_t_7) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_7))) __PYX_ERR(34, 79, __pyx_L1_error)
+    __pyx_r = ((PyObject*)__pyx_t_7);
+    __pyx_t_7 = 0;
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":78
+ *             return '<{} object>'.format(self.__class__.__name__)
+ * 
+ *         if self._status.code() is StatusCode.ok:             # <<<<<<<<<<<<<<
+ *             return _OK_CALL_REPRESENTATION.format(
+ *                 self.__class__.__name__,
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":84
+ *                 self._status.details())
+ *         else:
+ *             return _NON_OK_CALL_REPRESENTATION.format(             # <<<<<<<<<<<<<<
+ *                 self.__class__.__name__,
+ *                 self._status.details(),
+ */
+  /*else*/ {
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_NON_OK_CALL_REPRESENTATION); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 84, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_format); if (unlikely(!__pyx_t_9)) __PYX_ERR(34, 84, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_9);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":85
+ *         else:
+ *             return _NON_OK_CALL_REPRESENTATION.format(
+ *                 self.__class__.__name__,             # <<<<<<<<<<<<<<
+ *                 self._status.details(),
+ *                 _common.CYGRPC_STATUS_CODE_TO_STATUS_CODE[self._status.code()],
+ */
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 85, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_name_2); if (unlikely(!__pyx_t_10)) __PYX_ERR(34, 85, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_10);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":86
+ *             return _NON_OK_CALL_REPRESENTATION.format(
+ *                 self.__class__.__name__,
+ *                 self._status.details(),             # <<<<<<<<<<<<<<
+ *                 _common.CYGRPC_STATUS_CODE_TO_STATUS_CODE[self._status.code()],
+ *                 self._status.debug_error_string())
+ */
+    __pyx_t_1 = ((struct __pyx_vtabstruct_7_cython_6cygrpc_AioRpcStatus *)__pyx_v_self->_status->__pyx_vtab)->details(__pyx_v_self->_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 86, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":87
+ *                 self.__class__.__name__,
+ *                 self._status.details(),
+ *                 _common.CYGRPC_STATUS_CODE_TO_STATUS_CODE[self._status.code()],             # <<<<<<<<<<<<<<
+ *                 self._status.debug_error_string())
+ * 
+ */
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v__common, __pyx_n_s_CYGRPC_STATUS_CODE_TO_STATUS_COD); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 87, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_8 = ((struct __pyx_vtabstruct_7_cython_6cygrpc_AioRpcStatus *)__pyx_v_self->_status->__pyx_vtab)->code(__pyx_v_self->_status, 0); if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 87, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyInt_From_grpc_status_code(__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 87, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_11)) __PYX_ERR(34, 87, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_11);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":88
+ *                 self._status.details(),
+ *                 _common.CYGRPC_STATUS_CODE_TO_STATUS_CODE[self._status.code()],
+ *                 self._status.debug_error_string())             # <<<<<<<<<<<<<<
+ * 
+ *     def __repr__(self) -> str:
+ */
+    __pyx_t_2 = ((struct __pyx_vtabstruct_7_cython_6cygrpc_AioRpcStatus *)__pyx_v_self->_status->__pyx_vtab)->debug_error_string(__pyx_v_self->_status, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 88, __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_9))) {
+      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_9);
+      if (likely(__pyx_t_3)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
+        __Pyx_INCREF(__pyx_t_3);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_9, function);
+        __pyx_t_4 = 1;
+      }
+    }
+    #endif
+    {
+      PyObject *__pyx_callargs[5] = {__pyx_t_3, __pyx_t_10, __pyx_t_1, __pyx_t_11, __pyx_t_2};
+      __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+1-__pyx_t_4, 4+__pyx_t_4);
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      if (unlikely(!__pyx_t_7)) __PYX_ERR(34, 84, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_7);
+      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":84
+ *                 self._status.details())
+ *         else:
+ *             return _NON_OK_CALL_REPRESENTATION.format(             # <<<<<<<<<<<<<<
+ *                 self.__class__.__name__,
+ *                 self._status.details(),
+ */
+    if (!(likely(PyString_CheckExact(__pyx_t_7))||((__pyx_t_7) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_7))) __PYX_ERR(34, 84, __pyx_L1_error)
+    __pyx_r = ((PyObject*)__pyx_t_7);
+    __pyx_t_7 = 0;
+    goto __pyx_L0;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":69
+ *         shutdown_grpc_aio()
+ * 
+ *     def _repr(self) -> str:             # <<<<<<<<<<<<<<
+ *         """Assembles the RPC representation string."""
+ *         # This needs to be loaded at run time once everything
+ */
+
+  /* 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_7);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("_cython.cygrpc._AioCall._repr", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v__common);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":90
+ *                 self._status.debug_error_string())
+ * 
+ *     def __repr__(self) -> str:             # <<<<<<<<<<<<<<
+ *         return self._repr()
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_8_AioCall_7__repr__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_8_AioCall_7__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_7_cython_6cygrpc_8_AioCall_6__repr__(((struct __pyx_obj_7_cython_6cygrpc__AioCall *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_8_AioCall_6__repr__(struct __pyx_obj_7_cython_6cygrpc__AioCall *__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("__repr__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":91
+ * 
+ *     def __repr__(self) -> str:
+ *         return self._repr()             # <<<<<<<<<<<<<<
+ * 
+ *     def __str__(self) -> str:
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_repr); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 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(34, 91, __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/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":90
+ *                 self._status.debug_error_string())
+ * 
+ *     def __repr__(self) -> str:             # <<<<<<<<<<<<<<
+ *         return self._repr()
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("_cython.cygrpc._AioCall.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":93
+ *         return self._repr()
+ * 
+ *     def __str__(self) -> str:             # <<<<<<<<<<<<<<
+ *         return self._repr()
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_8_AioCall_9__str__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_8_AioCall_9__str__(PyObject *__pyx_v_self) {
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
+  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_8_AioCall_8__str__(((struct __pyx_obj_7_cython_6cygrpc__AioCall *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_8_AioCall_8__str__(struct __pyx_obj_7_cython_6cygrpc__AioCall *__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("__str__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":94
+ * 
+ *     def __str__(self) -> str:
+ *         return self._repr()             # <<<<<<<<<<<<<<
+ * 
+ *     cdef void _create_grpc_call(self,
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_repr); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 94, __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(34, 94, __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/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":93
+ *         return self._repr()
+ * 
+ *     def __str__(self) -> str:             # <<<<<<<<<<<<<<
+ *         return self._repr()
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("_cython.cygrpc._AioCall.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":96
+ *         return self._repr()
+ * 
+ *     cdef void _create_grpc_call(self,             # <<<<<<<<<<<<<<
+ *                                 object deadline,
+ *                                 bytes method,
+ */
+
+static void __pyx_f_7_cython_6cygrpc_8_AioCall__create_grpc_call(struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self, PyObject *__pyx_v_deadline, PyObject *__pyx_v_method, struct __pyx_obj_7_cython_6cygrpc_CallCredentials *__pyx_v_credentials) {
+  grpc_slice __pyx_v_method_slice;
+  gpr_timespec __pyx_v_c_deadline;
+  grpc_call_error __pyx_v_set_credentials_error;
+  __Pyx_RefNannyDeclarations
+  gpr_timespec __pyx_t_1;
+  char const *__pyx_t_2;
+  Py_ssize_t __pyx_t_3;
+  PyObject *__pyx_t_4 = NULL;
+  __pyx_t_7_cython_6cygrpc_uint32_t __pyx_t_5;
+  grpc_completion_queue *__pyx_t_6;
+  int __pyx_t_7;
+  grpc_call_credentials *__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;
+  unsigned int __pyx_t_14;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_create_grpc_call", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":109
+ *         """
+ *         cdef grpc_slice method_slice
+ *         cdef gpr_timespec c_deadline = _timespec_from_time(deadline)             # <<<<<<<<<<<<<<
+ *         cdef grpc_call_error set_credentials_error
+ * 
+ */
+  __pyx_t_1 = __pyx_f_7_cython_6cygrpc__timespec_from_time(__pyx_v_deadline); if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 109, __pyx_L1_error)
+  __pyx_v_c_deadline = __pyx_t_1;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":113
+ * 
+ *         method_slice = grpc_slice_from_copied_buffer(
+ *             <const char *> method,             # <<<<<<<<<<<<<<
+ *             <size_t> len(method)
+ *         )
+ */
+  if (unlikely(__pyx_v_method == Py_None)) {
+    PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
+    __PYX_ERR(34, 113, __pyx_L1_error)
+  }
+  __pyx_t_2 = __Pyx_PyBytes_AsString(__pyx_v_method); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(34, 113, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":114
+ *         method_slice = grpc_slice_from_copied_buffer(
+ *             <const char *> method,
+ *             <size_t> len(method)             # <<<<<<<<<<<<<<
+ *         )
+ *         self.call = grpc_channel_create_call(
+ */
+  if (unlikely(__pyx_v_method == Py_None)) {
+    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
+    __PYX_ERR(34, 114, __pyx_L1_error)
+  }
+  __pyx_t_3 = __Pyx_PyBytes_GET_SIZE(__pyx_v_method); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(34, 114, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":112
+ *         cdef grpc_call_error set_credentials_error
+ * 
+ *         method_slice = grpc_slice_from_copied_buffer(             # <<<<<<<<<<<<<<
+ *             <const char *> method,
+ *             <size_t> len(method)
+ */
+  __pyx_v_method_slice = grpc_slice_from_copied_buffer(((char const *)__pyx_t_2), ((size_t)__pyx_t_3));
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":119
+ *             self._channel.channel,
+ *             NULL,
+ *             _EMPTY_MASK,             # <<<<<<<<<<<<<<
+ *             global_completion_queue(),
+ *             method_slice,
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_EMPTY_MASK); if (unlikely(!__pyx_t_4)) __PYX_ERR(34, 119, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyInt_As_unsigned_int(__pyx_t_4); if (unlikely((__pyx_t_5 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(34, 119, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":120
+ *             NULL,
+ *             _EMPTY_MASK,
+ *             global_completion_queue(),             # <<<<<<<<<<<<<<
+ *             method_slice,
+ *             NULL,
+ */
+  __pyx_t_6 = __pyx_f_7_cython_6cygrpc_global_completion_queue(); if (unlikely(__pyx_t_6 == ((grpc_completion_queue *)NULL) && PyErr_Occurred())) __PYX_ERR(34, 120, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":116
+ *             <size_t> len(method)
+ *         )
+ *         self.call = grpc_channel_create_call(             # <<<<<<<<<<<<<<
+ *             self._channel.channel,
+ *             NULL,
+ */
+  __pyx_v_self->__pyx_base.call = grpc_channel_create_call(__pyx_v_self->_channel->channel, NULL, __pyx_t_5, __pyx_t_6, __pyx_v_method_slice, NULL, __pyx_v_c_deadline, NULL);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":127
+ *         )
+ * 
+ *         if credentials is not None:             # <<<<<<<<<<<<<<
+ *             set_credentials_error = grpc_call_set_credentials(self.call, credentials.c())
+ *             if set_credentials_error != GRPC_CALL_OK:
+ */
+  __pyx_t_7 = (((PyObject *)__pyx_v_credentials) != Py_None);
+  if (__pyx_t_7) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":128
+ * 
+ *         if credentials is not None:
+ *             set_credentials_error = grpc_call_set_credentials(self.call, credentials.c())             # <<<<<<<<<<<<<<
+ *             if set_credentials_error != GRPC_CALL_OK:
+ *                 raise InternalError("Credentials couldn't have been set: {0}".format(set_credentials_error))
+ */
+    __pyx_t_8 = ((struct __pyx_vtabstruct_7_cython_6cygrpc_CallCredentials *)__pyx_v_credentials->__pyx_vtab)->c(__pyx_v_credentials); if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 128, __pyx_L1_error)
+    __pyx_v_set_credentials_error = grpc_call_set_credentials(__pyx_v_self->__pyx_base.call, __pyx_t_8);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":129
+ *         if credentials is not None:
+ *             set_credentials_error = grpc_call_set_credentials(self.call, credentials.c())
+ *             if set_credentials_error != GRPC_CALL_OK:             # <<<<<<<<<<<<<<
+ *                 raise InternalError("Credentials couldn't have been set: {0}".format(set_credentials_error))
+ * 
+ */
+    __pyx_t_7 = (__pyx_v_set_credentials_error != GRPC_CALL_OK);
+    if (unlikely(__pyx_t_7)) {
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":130
+ *             set_credentials_error = grpc_call_set_credentials(self.call, credentials.c())
+ *             if set_credentials_error != GRPC_CALL_OK:
+ *                 raise InternalError("Credentials couldn't have been set: {0}".format(set_credentials_error))             # <<<<<<<<<<<<<<
+ * 
+ *         grpc_slice_unref(method_slice)
+ */
+      __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_InternalError); if (unlikely(!__pyx_t_9)) __PYX_ERR(34, 130, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_9);
+      __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_Credentials_couldn_t_have_been_s, __pyx_n_s_format); if (unlikely(!__pyx_t_11)) __PYX_ERR(34, 130, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_11);
+      __pyx_t_12 = __Pyx_PyInt_From_grpc_call_error(__pyx_v_set_credentials_error); if (unlikely(!__pyx_t_12)) __PYX_ERR(34, 130, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_12);
+      __pyx_t_13 = NULL;
+      __pyx_t_14 = 0;
+      #if CYTHON_UNPACK_METHODS
+      if (likely(PyMethod_Check(__pyx_t_11))) {
+        __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_11);
+        if (likely(__pyx_t_13)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_13);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_11, function);
+          __pyx_t_14 = 1;
+        }
+      }
+      #endif
+      {
+        PyObject *__pyx_callargs[2] = {__pyx_t_13, __pyx_t_12};
+        __pyx_t_10 = __Pyx_PyObject_FastCall(__pyx_t_11, __pyx_callargs+1-__pyx_t_14, 1+__pyx_t_14);
+        __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
+        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+        if (unlikely(!__pyx_t_10)) __PYX_ERR(34, 130, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_10);
+        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+      }
+      __pyx_t_11 = NULL;
+      __pyx_t_14 = 0;
+      #if CYTHON_UNPACK_METHODS
+      if (unlikely(PyMethod_Check(__pyx_t_9))) {
+        __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_9);
+        if (likely(__pyx_t_11)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
+          __Pyx_INCREF(__pyx_t_11);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_9, function);
+          __pyx_t_14 = 1;
+        }
+      }
+      #endif
+      {
+        PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_t_10};
+        __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+1-__pyx_t_14, 1+__pyx_t_14);
+        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
+        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+        if (unlikely(!__pyx_t_4)) __PYX_ERR(34, 130, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_4);
+        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+      }
+      __Pyx_Raise(__pyx_t_4, 0, 0, 0);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __PYX_ERR(34, 130, __pyx_L1_error)
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":129
+ *         if credentials is not None:
+ *             set_credentials_error = grpc_call_set_credentials(self.call, credentials.c())
+ *             if set_credentials_error != GRPC_CALL_OK:             # <<<<<<<<<<<<<<
+ *                 raise InternalError("Credentials couldn't have been set: {0}".format(set_credentials_error))
+ * 
+ */
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":127
+ *         )
+ * 
+ *         if credentials is not None:             # <<<<<<<<<<<<<<
+ *             set_credentials_error = grpc_call_set_credentials(self.call, credentials.c())
+ *             if set_credentials_error != GRPC_CALL_OK:
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":132
+ *                 raise InternalError("Credentials couldn't have been set: {0}".format(set_credentials_error))
+ * 
+ *         grpc_slice_unref(method_slice)             # <<<<<<<<<<<<<<
+ * 
+ *     cdef void _set_status(self, AioRpcStatus status) except *:
+ */
+  grpc_slice_unref(__pyx_v_method_slice);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":96
+ *         return self._repr()
+ * 
+ *     cdef void _create_grpc_call(self,             # <<<<<<<<<<<<<<
+ *                                 object deadline,
+ *                                 bytes method,
+ */
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_XDECREF(__pyx_t_12);
+  __Pyx_XDECREF(__pyx_t_13);
+  __Pyx_AddTraceback("_cython.cygrpc._AioCall._create_grpc_call", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":134
+ *         grpc_slice_unref(method_slice)
+ * 
+ *     cdef void _set_status(self, AioRpcStatus status) except *:             # <<<<<<<<<<<<<<
+ *         cdef list waiters
+ * 
+ */
+
+static void __pyx_f_7_cython_6cygrpc_8_AioCall__set_status(struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self, struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *__pyx_v_status) {
+  PyObject *__pyx_v_waiter = NULL;
+  PyObject *__pyx_v_callback = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  Py_ssize_t __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_t_8;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_set_status", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":138
+ * 
+ *         # No more waiters should be expected since status has been set.
+ *         self._status = status             # <<<<<<<<<<<<<<
+ * 
+ *         if self._initial_metadata is None:
+ */
+  __Pyx_INCREF((PyObject *)__pyx_v_status);
+  __Pyx_GIVEREF((PyObject *)__pyx_v_status);
+  __Pyx_GOTREF((PyObject *)__pyx_v_self->_status);
+  __Pyx_DECREF((PyObject *)__pyx_v_self->_status);
+  __pyx_v_self->_status = __pyx_v_status;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":140
+ *         self._status = status
+ * 
+ *         if self._initial_metadata is None:             # <<<<<<<<<<<<<<
+ *             self._set_initial_metadata(_IMMUTABLE_EMPTY_METADATA)
+ * 
+ */
+  __pyx_t_1 = (__pyx_v_self->_initial_metadata == ((PyObject*)Py_None));
+  if (__pyx_t_1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":141
+ * 
+ *         if self._initial_metadata is None:
+ *             self._set_initial_metadata(_IMMUTABLE_EMPTY_METADATA)             # <<<<<<<<<<<<<<
+ * 
+ *         for waiter in self._waiters_status:
+ */
+    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_IMMUTABLE_EMPTY_METADATA); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 141, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    if (!(likely(PyTuple_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_t_2))) __PYX_ERR(34, 141, __pyx_L1_error)
+    ((struct __pyx_vtabstruct_7_cython_6cygrpc__AioCall *)__pyx_v_self->__pyx_vtab)->_set_initial_metadata(__pyx_v_self, ((PyObject*)__pyx_t_2)); if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 141, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":140
+ *         self._status = status
+ * 
+ *         if self._initial_metadata is None:             # <<<<<<<<<<<<<<
+ *             self._set_initial_metadata(_IMMUTABLE_EMPTY_METADATA)
+ * 
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":143
+ *             self._set_initial_metadata(_IMMUTABLE_EMPTY_METADATA)
+ * 
+ *         for waiter in self._waiters_status:             # <<<<<<<<<<<<<<
+ *             if not waiter.done():
+ *                 waiter.set_result(None)
+ */
+  if (unlikely(__pyx_v_self->_waiters_status == Py_None)) {
+    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
+    __PYX_ERR(34, 143, __pyx_L1_error)
+  }
+  __pyx_t_2 = __pyx_v_self->_waiters_status; __Pyx_INCREF(__pyx_t_2);
+  __pyx_t_3 = 0;
+  for (;;) {
+    {
+      Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
+      #if !CYTHON_ASSUME_SAFE_MACROS
+      if (unlikely((__pyx_temp < 0))) __PYX_ERR(34, 143, __pyx_L1_error)
+      #endif
+      if (__pyx_t_3 >= __pyx_temp) break;
+    }
+    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+    __pyx_t_4 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_4); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(34, 143, __pyx_L1_error)
+    #else
+    __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_4)) __PYX_ERR(34, 143, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    #endif
+    __Pyx_XDECREF_SET(__pyx_v_waiter, __pyx_t_4);
+    __pyx_t_4 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":144
+ * 
+ *         for waiter in self._waiters_status:
+ *             if not waiter.done():             # <<<<<<<<<<<<<<
+ *                 waiter.set_result(None)
+ *         self._waiters_status = []
+ */
+    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_waiter, __pyx_n_s_done); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 144, __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(34, 144, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    }
+    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(34, 144, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_t_8 = (!__pyx_t_1);
+    if (__pyx_t_8) {
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":145
+ *         for waiter in self._waiters_status:
+ *             if not waiter.done():
+ *                 waiter.set_result(None)             # <<<<<<<<<<<<<<
+ *         self._waiters_status = []
+ * 
+ */
+      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_waiter, __pyx_n_s_set_result); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 145, __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, Py_None};
+        __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        if (unlikely(!__pyx_t_4)) __PYX_ERR(34, 145, __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/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":144
+ * 
+ *         for waiter in self._waiters_status:
+ *             if not waiter.done():             # <<<<<<<<<<<<<<
+ *                 waiter.set_result(None)
+ *         self._waiters_status = []
+ */
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":143
+ *             self._set_initial_metadata(_IMMUTABLE_EMPTY_METADATA)
+ * 
+ *         for waiter in self._waiters_status:             # <<<<<<<<<<<<<<
+ *             if not waiter.done():
+ *                 waiter.set_result(None)
+ */
+  }
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":146
+ *             if not waiter.done():
+ *                 waiter.set_result(None)
+ *         self._waiters_status = []             # <<<<<<<<<<<<<<
+ * 
+ *         for callback in self._done_callbacks:
+ */
+  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 146, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_2);
+  __Pyx_GOTREF(__pyx_v_self->_waiters_status);
+  __Pyx_DECREF(__pyx_v_self->_waiters_status);
+  __pyx_v_self->_waiters_status = ((PyObject*)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":148
+ *         self._waiters_status = []
+ * 
+ *         for callback in self._done_callbacks:             # <<<<<<<<<<<<<<
+ *             callback()
+ * 
+ */
+  if (unlikely(__pyx_v_self->_done_callbacks == Py_None)) {
+    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
+    __PYX_ERR(34, 148, __pyx_L1_error)
+  }
+  __pyx_t_2 = __pyx_v_self->_done_callbacks; __Pyx_INCREF(__pyx_t_2);
+  __pyx_t_3 = 0;
+  for (;;) {
+    {
+      Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
+      #if !CYTHON_ASSUME_SAFE_MACROS
+      if (unlikely((__pyx_temp < 0))) __PYX_ERR(34, 148, __pyx_L1_error)
+      #endif
+      if (__pyx_t_3 >= __pyx_temp) break;
+    }
+    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+    __pyx_t_4 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_4); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(34, 148, __pyx_L1_error)
+    #else
+    __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_4)) __PYX_ERR(34, 148, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    #endif
+    __Pyx_XDECREF_SET(__pyx_v_callback, __pyx_t_4);
+    __pyx_t_4 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":149
+ * 
+ *         for callback in self._done_callbacks:
+ *             callback()             # <<<<<<<<<<<<<<
+ * 
+ *     cdef void _set_initial_metadata(self, tuple initial_metadata) except *:
+ */
+    __Pyx_INCREF(__pyx_v_callback);
+    __pyx_t_5 = __pyx_v_callback; __pyx_t_6 = NULL;
+    __pyx_t_7 = 0;
+    #if CYTHON_UNPACK_METHODS
+    if (unlikely(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(34, 149, __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/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":148
+ *         self._waiters_status = []
+ * 
+ *         for callback in self._done_callbacks:             # <<<<<<<<<<<<<<
+ *             callback()
+ * 
+ */
+  }
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":134
+ *         grpc_slice_unref(method_slice)
+ * 
+ *     cdef void _set_status(self, AioRpcStatus status) except *:             # <<<<<<<<<<<<<<
+ *         cdef list waiters
+ * 
+ */
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("_cython.cygrpc._AioCall._set_status", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_waiter);
+  __Pyx_XDECREF(__pyx_v_callback);
+  __Pyx_RefNannyFinishContext();
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":151
+ *             callback()
+ * 
+ *     cdef void _set_initial_metadata(self, tuple initial_metadata) except *:             # <<<<<<<<<<<<<<
+ *         if self._initial_metadata is not None:
+ *             # Some gRPC calls might end before the initial metadata arrived in
+ */
+
+static void __pyx_f_7_cython_6cygrpc_8_AioCall__set_initial_metadata(struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self, PyObject *__pyx_v_initial_metadata) {
+  PyObject *__pyx_v_waiter = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  Py_ssize_t __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_t_8;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_set_initial_metadata", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":152
+ * 
+ *     cdef void _set_initial_metadata(self, tuple initial_metadata) except *:
+ *         if self._initial_metadata is not None:             # <<<<<<<<<<<<<<
+ *             # Some gRPC calls might end before the initial metadata arrived in
+ *             # the Call object. That causes this method to be invoked twice: 1.
+ */
+  __pyx_t_1 = (__pyx_v_self->_initial_metadata != ((PyObject*)Py_None));
+  if (__pyx_t_1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":157
+ *             # filled with an empty metadata; 2. updated with the actual user
+ *             # provided metadata.
+ *             return             # <<<<<<<<<<<<<<
+ * 
+ *         cdef list waiters
+ */
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":152
+ * 
+ *     cdef void _set_initial_metadata(self, tuple initial_metadata) except *:
+ *         if self._initial_metadata is not None:             # <<<<<<<<<<<<<<
+ *             # Some gRPC calls might end before the initial metadata arrived in
+ *             # the Call object. That causes this method to be invoked twice: 1.
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":163
+ *         # No more waiters should be expected since initial metadata has been
+ *         # set.
+ *         self._initial_metadata = initial_metadata             # <<<<<<<<<<<<<<
+ * 
+ *         for waiter in self._waiters_initial_metadata:
+ */
+  __Pyx_INCREF(__pyx_v_initial_metadata);
+  __Pyx_GIVEREF(__pyx_v_initial_metadata);
+  __Pyx_GOTREF(__pyx_v_self->_initial_metadata);
+  __Pyx_DECREF(__pyx_v_self->_initial_metadata);
+  __pyx_v_self->_initial_metadata = __pyx_v_initial_metadata;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":165
+ *         self._initial_metadata = initial_metadata
+ * 
+ *         for waiter in self._waiters_initial_metadata:             # <<<<<<<<<<<<<<
+ *             if not waiter.done():
+ *                 waiter.set_result(None)
+ */
+  if (unlikely(__pyx_v_self->_waiters_initial_metadata == Py_None)) {
+    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
+    __PYX_ERR(34, 165, __pyx_L1_error)
+  }
+  __pyx_t_2 = __pyx_v_self->_waiters_initial_metadata; __Pyx_INCREF(__pyx_t_2);
+  __pyx_t_3 = 0;
+  for (;;) {
+    {
+      Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
+      #if !CYTHON_ASSUME_SAFE_MACROS
+      if (unlikely((__pyx_temp < 0))) __PYX_ERR(34, 165, __pyx_L1_error)
+      #endif
+      if (__pyx_t_3 >= __pyx_temp) break;
+    }
+    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+    __pyx_t_4 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_4); __pyx_t_3++; if (unlikely((0 < 0))) __PYX_ERR(34, 165, __pyx_L1_error)
+    #else
+    __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_4)) __PYX_ERR(34, 165, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    #endif
+    __Pyx_XDECREF_SET(__pyx_v_waiter, __pyx_t_4);
+    __pyx_t_4 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":166
+ * 
+ *         for waiter in self._waiters_initial_metadata:
+ *             if not waiter.done():             # <<<<<<<<<<<<<<
+ *                 waiter.set_result(None)
+ *         self._waiters_initial_metadata = []
+ */
+    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_waiter, __pyx_n_s_done); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 166, __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(34, 166, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    }
+    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(34, 166, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_t_8 = (!__pyx_t_1);
+    if (__pyx_t_8) {
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":167
+ *         for waiter in self._waiters_initial_metadata:
+ *             if not waiter.done():
+ *                 waiter.set_result(None)             # <<<<<<<<<<<<<<
+ *         self._waiters_initial_metadata = []
+ * 
+ */
+      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_waiter, __pyx_n_s_set_result); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 167, __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, Py_None};
+        __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        if (unlikely(!__pyx_t_4)) __PYX_ERR(34, 167, __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/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":166
+ * 
+ *         for waiter in self._waiters_initial_metadata:
+ *             if not waiter.done():             # <<<<<<<<<<<<<<
+ *                 waiter.set_result(None)
+ *         self._waiters_initial_metadata = []
+ */
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":165
+ *         self._initial_metadata = initial_metadata
+ * 
+ *         for waiter in self._waiters_initial_metadata:             # <<<<<<<<<<<<<<
+ *             if not waiter.done():
+ *                 waiter.set_result(None)
+ */
+  }
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":168
+ *             if not waiter.done():
+ *                 waiter.set_result(None)
+ *         self._waiters_initial_metadata = []             # <<<<<<<<<<<<<<
+ * 
+ *     def add_done_callback(self, callback):
+ */
+  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 168, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_2);
+  __Pyx_GOTREF(__pyx_v_self->_waiters_initial_metadata);
+  __Pyx_DECREF(__pyx_v_self->_waiters_initial_metadata);
+  __pyx_v_self->_waiters_initial_metadata = ((PyObject*)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":151
+ *             callback()
+ * 
+ *     cdef void _set_initial_metadata(self, tuple initial_metadata) except *:             # <<<<<<<<<<<<<<
+ *         if self._initial_metadata is not None:
+ *             # Some gRPC calls might end before the initial metadata arrived in
+ */
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("_cython.cygrpc._AioCall._set_initial_metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_waiter);
+  __Pyx_RefNannyFinishContext();
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":170
+ *         self._waiters_initial_metadata = []
+ * 
+ *     def add_done_callback(self, callback):             # <<<<<<<<<<<<<<
+ *         if self.done():
+ *             callback()
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_8_AioCall_11add_done_callback(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_8_AioCall_11add_done_callback = {"add_done_callback", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_8_AioCall_11add_done_callback, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_8_AioCall_11add_done_callback(PyObject *__pyx_v_self, 
+#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_callback = 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("add_done_callback (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_callback,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_callback)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 170, __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, "add_done_callback") < 0)) __PYX_ERR(34, 170, __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_callback = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("add_done_callback", 1, 1, 1, __pyx_nargs); __PYX_ERR(34, 170, __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("_cython.cygrpc._AioCall.add_done_callback", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_8_AioCall_10add_done_callback(((struct __pyx_obj_7_cython_6cygrpc__AioCall *)__pyx_v_self), __pyx_v_callback);
+
+  /* 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_7_cython_6cygrpc_8_AioCall_10add_done_callback(struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self, PyObject *__pyx_v_callback) {
+  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_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("add_done_callback", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":171
+ * 
+ *     def add_done_callback(self, callback):
+ *         if self.done():             # <<<<<<<<<<<<<<
+ *             callback()
+ *         else:
+ */
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_done); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 171, __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(34, 171, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  }
+  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(34, 171, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (__pyx_t_5) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":172
+ *     def add_done_callback(self, callback):
+ *         if self.done():
+ *             callback()             # <<<<<<<<<<<<<<
+ *         else:
+ *             self._done_callbacks.append(callback)
+ */
+    __Pyx_INCREF(__pyx_v_callback);
+    __pyx_t_2 = __pyx_v_callback; __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, 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(34, 172, __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/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":171
+ * 
+ *     def add_done_callback(self, callback):
+ *         if self.done():             # <<<<<<<<<<<<<<
+ *             callback()
+ *         else:
+ */
+    goto __pyx_L3;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":174
+ *             callback()
+ *         else:
+ *             self._done_callbacks.append(callback)             # <<<<<<<<<<<<<<
+ * 
+ *     def time_remaining(self):
+ */
+  /*else*/ {
+    if (unlikely(__pyx_v_self->_done_callbacks == Py_None)) {
+      PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
+      __PYX_ERR(34, 174, __pyx_L1_error)
+    }
+    __pyx_t_6 = __Pyx_PyList_Append(__pyx_v_self->_done_callbacks, __pyx_v_callback); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(34, 174, __pyx_L1_error)
+  }
+  __pyx_L3:;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":170
+ *         self._waiters_initial_metadata = []
+ * 
+ *     def add_done_callback(self, callback):             # <<<<<<<<<<<<<<
+ *         if self.done():
+ *             callback()
+ */
+
+  /* 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("_cython.cygrpc._AioCall.add_done_callback", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":176
+ *             self._done_callbacks.append(callback)
+ * 
+ *     def time_remaining(self):             # <<<<<<<<<<<<<<
+ *         if self._deadline is None:
+ *             return None
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_8_AioCall_13time_remaining(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_8_AioCall_13time_remaining = {"time_remaining", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_8_AioCall_13time_remaining, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_8_AioCall_13time_remaining(PyObject *__pyx_v_self, 
+#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("time_remaining (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("time_remaining", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "time_remaining", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_8_AioCall_12time_remaining(((struct __pyx_obj_7_cython_6cygrpc__AioCall *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_8_AioCall_12time_remaining(struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self) {
+  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;
+  long __pyx_t_6;
+  PyObject *__pyx_t_7 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("time_remaining", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":177
+ * 
+ *     def time_remaining(self):
+ *         if self._deadline is None:             # <<<<<<<<<<<<<<
+ *             return None
+ *         else:
+ */
+  __pyx_t_1 = (__pyx_v_self->_deadline == Py_None);
+  if (__pyx_t_1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":178
+ *     def time_remaining(self):
+ *         if self._deadline is None:
+ *             return None             # <<<<<<<<<<<<<<
+ *         else:
+ *             return max(0, self._deadline - time.time())
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":177
+ * 
+ *     def time_remaining(self):
+ *         if self._deadline is None:             # <<<<<<<<<<<<<<
+ *             return None
+ *         else:
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":180
+ *             return None
+ *         else:
+ *             return max(0, self._deadline - time.time())             # <<<<<<<<<<<<<<
+ * 
+ *     def cancel(self, str details):
+ */
+  /*else*/ {
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_time); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 180, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_time); if (unlikely(!__pyx_t_4)) __PYX_ERR(34, 180, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __pyx_t_3 = NULL;
+    __pyx_t_5 = 0;
+    #if CYTHON_UNPACK_METHODS
+    if (unlikely(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[2] = {__pyx_t_3, NULL};
+      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 180, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    }
+    __pyx_t_4 = PyNumber_Subtract(__pyx_v_self->_deadline, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(34, 180, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_t_6 = 0;
+    __pyx_t_3 = __Pyx_PyInt_From_long(__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 180, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_7 = PyObject_RichCompare(__pyx_t_4, __pyx_t_3, Py_GT); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(34, 180, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(34, 180, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    if (__pyx_t_1) {
+      __Pyx_INCREF(__pyx_t_4);
+      __pyx_t_2 = __pyx_t_4;
+    } else {
+      __pyx_t_7 = __Pyx_PyInt_From_long(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(34, 180, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_7);
+      __pyx_t_2 = __pyx_t_7;
+      __pyx_t_7 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_INCREF(__pyx_t_2);
+    __pyx_r = __pyx_t_2;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L0;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":176
+ *             self._done_callbacks.append(callback)
+ * 
+ *     def time_remaining(self):             # <<<<<<<<<<<<<<
+ *         if self._deadline is None:
+ *             return None
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_AddTraceback("_cython.cygrpc._AioCall.time_remaining", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":182
+ *             return max(0, self._deadline - time.time())
+ * 
+ *     def cancel(self, str details):             # <<<<<<<<<<<<<<
+ *         """Cancels the RPC in Core with given RPC status.
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_8_AioCall_15cancel(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+PyDoc_STRVAR(__pyx_doc_7_cython_6cygrpc_8_AioCall_14cancel, "Cancels the RPC in Core with given RPC status.\n\n        Above abstractions must invoke this method to set Core objects into\n        proper state.\n        ");
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_8_AioCall_15cancel = {"cancel", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_8_AioCall_15cancel, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7_cython_6cygrpc_8_AioCall_14cancel};
+static PyObject *__pyx_pw_7_cython_6cygrpc_8_AioCall_15cancel(PyObject *__pyx_v_self, 
+#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_details = 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("cancel (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_details,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_details)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 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, "cancel") < 0)) __PYX_ERR(34, 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_details = ((PyObject*)values[0]);
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("cancel", 1, 1, 1, __pyx_nargs); __PYX_ERR(34, 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("_cython.cygrpc._AioCall.cancel", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_details), (&PyString_Type), 1, "details", 1))) __PYX_ERR(34, 182, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_8_AioCall_14cancel(((struct __pyx_obj_7_cython_6cygrpc__AioCall *)__pyx_v_self), __pyx_v_details);
+
+  /* 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_7_cython_6cygrpc_8_AioCall_14cancel(struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self, PyObject *__pyx_v_details) {
+  PyObject *__pyx_v_details_bytes = 0;
+  char *__pyx_v_c_details;
+  grpc_call_error __pyx_v_error;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_t_3;
+  char *__pyx_t_4;
+  grpc_status_code __pyx_t_5;
+  int __pyx_t_6;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("cancel", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":188
+ *         proper state.
+ *         """
+ *         self._is_locally_cancelled = True             # <<<<<<<<<<<<<<
+ * 
+ *         cdef object details_bytes
+ */
+  __pyx_v_self->_is_locally_cancelled = 1;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":195
+ * 
+ *         self._set_status(AioRpcStatus(
+ *             StatusCode.cancelled,             # <<<<<<<<<<<<<<
+ *             details,
+ *             None,
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_StatusCode); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 195, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_cancelled); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 195, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":194
+ *         cdef grpc_call_error error
+ * 
+ *         self._set_status(AioRpcStatus(             # <<<<<<<<<<<<<<
+ *             StatusCode.cancelled,
+ *             details,
+ */
+  __pyx_t_1 = PyTuple_New(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 194, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_2);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2)) __PYX_ERR(34, 194, __pyx_L1_error);
+  __Pyx_INCREF(__pyx_v_details);
+  __Pyx_GIVEREF(__pyx_v_details);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_details)) __PYX_ERR(34, 194, __pyx_L1_error);
+  __Pyx_INCREF(Py_None);
+  __Pyx_GIVEREF(Py_None);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None)) __PYX_ERR(34, 194, __pyx_L1_error);
+  __Pyx_INCREF(Py_None);
+  __Pyx_GIVEREF(Py_None);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 3, Py_None)) __PYX_ERR(34, 194, __pyx_L1_error);
+  __pyx_t_2 = 0;
+  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_7_cython_6cygrpc_AioRpcStatus), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 194, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  ((struct __pyx_vtabstruct_7_cython_6cygrpc__AioCall *)__pyx_v_self->__pyx_vtab)->_set_status(__pyx_v_self, ((struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *)__pyx_t_2)); if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 194, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":201
+ *         ))
+ * 
+ *         details_bytes = str_to_bytes(details)             # <<<<<<<<<<<<<<
+ *         self._references.append(details_bytes)
+ *         c_details = <char *>details_bytes
+ */
+  __pyx_t_2 = __pyx_f_7_cython_6cygrpc_str_to_bytes(__pyx_v_details); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 201, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_v_details_bytes = __pyx_t_2;
+  __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":202
+ * 
+ *         details_bytes = str_to_bytes(details)
+ *         self._references.append(details_bytes)             # <<<<<<<<<<<<<<
+ *         c_details = <char *>details_bytes
+ *         # By implementation, grpc_call_cancel_with_status always return OK
+ */
+  if (unlikely(__pyx_v_self->_references == Py_None)) {
+    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
+    __PYX_ERR(34, 202, __pyx_L1_error)
+  }
+  __pyx_t_3 = __Pyx_PyList_Append(__pyx_v_self->_references, __pyx_v_details_bytes); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(34, 202, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":203
+ *         details_bytes = str_to_bytes(details)
+ *         self._references.append(details_bytes)
+ *         c_details = <char *>details_bytes             # <<<<<<<<<<<<<<
+ *         # By implementation, grpc_call_cancel_with_status always return OK
+ *         error = grpc_call_cancel_with_status(
+ */
+  __pyx_t_4 = __Pyx_PyObject_AsWritableString(__pyx_v_details_bytes); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(34, 203, __pyx_L1_error)
+  __pyx_v_c_details = ((char *)__pyx_t_4);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":207
+ *         error = grpc_call_cancel_with_status(
+ *             self.call,
+ *             StatusCode.cancelled,             # <<<<<<<<<<<<<<
+ *             c_details,
+ *             NULL,
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_StatusCode); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 207, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_cancelled); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 207, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_5 = ((grpc_status_code)__Pyx_PyInt_As_grpc_status_code(__pyx_t_1)); if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 207, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":205
+ *         c_details = <char *>details_bytes
+ *         # By implementation, grpc_call_cancel_with_status always return OK
+ *         error = grpc_call_cancel_with_status(             # <<<<<<<<<<<<<<
+ *             self.call,
+ *             StatusCode.cancelled,
+ */
+  __pyx_v_error = grpc_call_cancel_with_status(__pyx_v_self->__pyx_base.call, __pyx_t_5, __pyx_v_c_details, NULL);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":211
+ *             NULL,
+ *         )
+ *         assert error == GRPC_CALL_OK             # <<<<<<<<<<<<<<
+ * 
+ *     def done(self):
+ */
+  #ifndef CYTHON_WITHOUT_ASSERTIONS
+  if (unlikely(__pyx_assertions_enabled())) {
+    __pyx_t_6 = (__pyx_v_error == GRPC_CALL_OK);
+    if (unlikely(!__pyx_t_6)) {
+      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
+      __PYX_ERR(34, 211, __pyx_L1_error)
+    }
+  }
+  #else
+  if ((1)); else __PYX_ERR(34, 211, __pyx_L1_error)
+  #endif
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":182
+ *             return max(0, self._deadline - time.time())
+ * 
+ *     def cancel(self, str details):             # <<<<<<<<<<<<<<
+ *         """Cancels the RPC in Core with given RPC status.
+ * 
+ */
+
+  /* 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_AddTraceback("_cython.cygrpc._AioCall.cancel", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_details_bytes);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":213
+ *         assert error == GRPC_CALL_OK
+ * 
+ *     def done(self):             # <<<<<<<<<<<<<<
+ *         """Returns if the RPC call has finished.
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_8_AioCall_17done(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+PyDoc_STRVAR(__pyx_doc_7_cython_6cygrpc_8_AioCall_16done, "Returns if the RPC call has finished.\n\n        Checks if the status has been provided, either\n        because the RPC finished or because was cancelled..\n\n        Returns:\n            True if the RPC can be considered finished.\n        ");
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_8_AioCall_17done = {"done", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_8_AioCall_17done, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7_cython_6cygrpc_8_AioCall_16done};
+static PyObject *__pyx_pw_7_cython_6cygrpc_8_AioCall_17done(PyObject *__pyx_v_self, 
+#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("done (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("done", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "done", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_8_AioCall_16done(((struct __pyx_obj_7_cython_6cygrpc__AioCall *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_8_AioCall_16done(struct __pyx_obj_7_cython_6cygrpc__AioCall *__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("done", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":222
+ *             True if the RPC can be considered finished.
+ *         """
+ *         return self._status is not None             # <<<<<<<<<<<<<<
+ * 
+ *     def cancelled(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = (((PyObject *)__pyx_v_self->_status) != Py_None);
+  __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 222, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":213
+ *         assert error == GRPC_CALL_OK
+ * 
+ *     def done(self):             # <<<<<<<<<<<<<<
+ *         """Returns if the RPC call has finished.
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("_cython.cygrpc._AioCall.done", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":224
+ *         return self._status is not None
+ * 
+ *     def cancelled(self):             # <<<<<<<<<<<<<<
+ *         """Returns if the RPC was cancelled.
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_8_AioCall_19cancelled(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+PyDoc_STRVAR(__pyx_doc_7_cython_6cygrpc_8_AioCall_18cancelled, "Returns if the RPC was cancelled.\n\n        Returns:\n            True if the RPC was cancelled.\n        ");
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_8_AioCall_19cancelled = {"cancelled", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_8_AioCall_19cancelled, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7_cython_6cygrpc_8_AioCall_18cancelled};
+static PyObject *__pyx_pw_7_cython_6cygrpc_8_AioCall_19cancelled(PyObject *__pyx_v_self, 
+#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("cancelled (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("cancelled", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "cancelled", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_8_AioCall_18cancelled(((struct __pyx_obj_7_cython_6cygrpc__AioCall *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_8_AioCall_18cancelled(struct __pyx_obj_7_cython_6cygrpc__AioCall *__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_t_5;
+  int __pyx_t_6;
+  grpc_status_code __pyx_t_7;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("cancelled", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":230
+ *             True if the RPC was cancelled.
+ *         """
+ *         if not self.done():             # <<<<<<<<<<<<<<
+ *             return False
+ * 
+ */
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_done); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 230, __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(34, 230, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  }
+  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(34, 230, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_6 = (!__pyx_t_5);
+  if (__pyx_t_6) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":231
+ *         """
+ *         if not self.done():
+ *             return False             # <<<<<<<<<<<<<<
+ * 
+ *         return self._status.code() == StatusCode.cancelled
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_INCREF(Py_False);
+    __pyx_r = Py_False;
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":230
+ *             True if the RPC was cancelled.
+ *         """
+ *         if not self.done():             # <<<<<<<<<<<<<<
+ *             return False
+ * 
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":233
+ *             return False
+ * 
+ *         return self._status.code() == StatusCode.cancelled             # <<<<<<<<<<<<<<
+ * 
+ *     async def status(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_7 = ((struct __pyx_vtabstruct_7_cython_6cygrpc_AioRpcStatus *)__pyx_v_self->_status->__pyx_vtab)->code(__pyx_v_self->_status, 0); if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 233, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_grpc_status_code(__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 233, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_StatusCode); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 233, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_cancelled); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 233, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 233, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":224
+ *         return self._status is not None
+ * 
+ *     def cancelled(self):             # <<<<<<<<<<<<<<
+ *         """Returns if the RPC was cancelled.
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("_cython.cygrpc._AioCall.cancelled", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+static PyObject *__pyx_gb_7_cython_6cygrpc_8_AioCall_22generator8(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":235
+ *         return self._status.code() == StatusCode.cancelled
+ * 
+ *     async def status(self):             # <<<<<<<<<<<<<<
+ *         """Returns the status of the RPC call.
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_8_AioCall_21status(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+PyDoc_STRVAR(__pyx_doc_7_cython_6cygrpc_8_AioCall_20status, "Returns the status of the RPC call.\n\n        It returns the finshed status of the RPC. If the RPC\n        has not finished yet this function will wait until the RPC\n        gets finished.\n\n        Returns:\n            Finished status of the RPC as an AioRpcStatus object.\n        ");
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_8_AioCall_21status = {"status", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_8_AioCall_21status, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7_cython_6cygrpc_8_AioCall_20status};
+static PyObject *__pyx_pw_7_cython_6cygrpc_8_AioCall_21status(PyObject *__pyx_v_self, 
+#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("status (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("status", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "status", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_8_AioCall_20status(((struct __pyx_obj_7_cython_6cygrpc__AioCall *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_8_AioCall_20status(struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_18_status *__pyx_cur_scope;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("status", 0);
+  __pyx_cur_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_18_status *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_18_status(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_18_status, __pyx_empty_tuple, NULL);
+  if (unlikely(!__pyx_cur_scope)) {
+    __pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_18_status *)Py_None);
+    __Pyx_INCREF(Py_None);
+    __PYX_ERR(34, 235, __pyx_L1_error)
+  } else {
+    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+  }
+  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
+  {
+    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7_cython_6cygrpc_8_AioCall_22generator8, __pyx_codeobj__59, (PyObject *) __pyx_cur_scope, __pyx_n_s_status, __pyx_n_s_AioCall_status, __pyx_n_s_cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(34, 235, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_cur_scope);
+    __Pyx_RefNannyFinishContext();
+    return (PyObject *) gen;
+  }
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc._AioCall.status", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_gb_7_cython_6cygrpc_8_AioCall_22generator8(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
+{
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_18_status *__pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_18_status *)__pyx_generator->closure);
+  PyObject *__pyx_r = NULL;
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  unsigned int __pyx_t_5;
+  int __pyx_t_6;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("status", 0);
+  switch (__pyx_generator->resume_label) {
+    case 0: goto __pyx_L3_first_run;
+    case 1: goto __pyx_L5_resume_from_await;
+    default: /* CPython raises the right error here */
+    __Pyx_RefNannyFinishContext();
+    return NULL;
+  }
+  __pyx_L3_first_run:;
+  if (unlikely(!__pyx_sent_value)) __PYX_ERR(34, 235, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":245
+ *             Finished status of the RPC as an AioRpcStatus object.
+ *         """
+ *         if self._status is not None:             # <<<<<<<<<<<<<<
+ *             return self._status
+ * 
+ */
+  __pyx_t_1 = (((PyObject *)__pyx_cur_scope->__pyx_v_self->_status) != Py_None);
+  if (__pyx_t_1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":246
+ *         """
+ *         if self._status is not None:
+ *             return self._status             # <<<<<<<<<<<<<<
+ * 
+ *         future = self._loop.create_future()
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_r = NULL; __Pyx_ReturnWithStopIteration(((PyObject *)__pyx_cur_scope->__pyx_v_self->_status));
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":245
+ *             Finished status of the RPC as an AioRpcStatus object.
+ *         """
+ *         if self._status is not None:             # <<<<<<<<<<<<<<
+ *             return self._status
+ * 
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":248
+ *             return self._status
+ * 
+ *         future = self._loop.create_future()             # <<<<<<<<<<<<<<
+ *         self._waiters_status.append(future)
+ *         await future
+ */
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self->_loop, __pyx_n_s_create_future); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 248, __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(34, 248, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  }
+  __Pyx_GIVEREF(__pyx_t_2);
+  __pyx_cur_scope->__pyx_v_future = __pyx_t_2;
+  __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":249
+ * 
+ *         future = self._loop.create_future()
+ *         self._waiters_status.append(future)             # <<<<<<<<<<<<<<
+ *         await future
+ * 
+ */
+  if (unlikely(__pyx_cur_scope->__pyx_v_self->_waiters_status == Py_None)) {
+    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
+    __PYX_ERR(34, 249, __pyx_L1_error)
+  }
+  __pyx_t_6 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_self->_waiters_status, __pyx_cur_scope->__pyx_v_future); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(34, 249, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":250
+ *         future = self._loop.create_future()
+ *         self._waiters_status.append(future)
+ *         await future             # <<<<<<<<<<<<<<
+ * 
+ *         return self._status
+ */
+  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_cur_scope->__pyx_v_future);
+  __Pyx_XGOTREF(__pyx_r);
+  if (likely(__pyx_r)) {
+    __Pyx_XGIVEREF(__pyx_r);
+    __Pyx_RefNannyFinishContext();
+    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+    /* return from generator, awaiting value */
+    __pyx_generator->resume_label = 1;
+    return __pyx_r;
+    __pyx_L5_resume_from_await:;
+    if (unlikely(!__pyx_sent_value)) __PYX_ERR(34, 250, __pyx_L1_error)
+  } else {
+    PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType();
+    if (exc_type) {
+      if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
+      else __PYX_ERR(34, 250, __pyx_L1_error)
+    }
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":252
+ *         await future
+ * 
+ *         return self._status             # <<<<<<<<<<<<<<
+ * 
+ *     def is_ok(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_r = NULL; __Pyx_ReturnWithStopIteration(((PyObject *)__pyx_cur_scope->__pyx_v_self->_status));
+  goto __pyx_L0;
+  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":235
+ *         return self._status.code() == StatusCode.cancelled
+ * 
+ *     async def status(self):             # <<<<<<<<<<<<<<
+ *         """Returns the status of the RPC call.
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_Generator_Replace_StopIteration(0);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("status", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
+  #if !CYTHON_USE_EXC_INFO_STACK
+  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+  #endif
+  __pyx_generator->resume_label = -1;
+  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":254
+ *         return self._status
+ * 
+ *     def is_ok(self):             # <<<<<<<<<<<<<<
+ *         """Returns if the RPC is ended with ok."""
+ *         return self.done() and self._status.code() == StatusCode.ok
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_8_AioCall_24is_ok(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+PyDoc_STRVAR(__pyx_doc_7_cython_6cygrpc_8_AioCall_23is_ok, "Returns if the RPC is ended with ok.");
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_8_AioCall_24is_ok = {"is_ok", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_8_AioCall_24is_ok, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7_cython_6cygrpc_8_AioCall_23is_ok};
+static PyObject *__pyx_pw_7_cython_6cygrpc_8_AioCall_24is_ok(PyObject *__pyx_v_self, 
+#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("is_ok (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("is_ok", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "is_ok", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_8_AioCall_23is_ok(((struct __pyx_obj_7_cython_6cygrpc__AioCall *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_8_AioCall_23is_ok(struct __pyx_obj_7_cython_6cygrpc__AioCall *__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_t_6;
+  grpc_status_code __pyx_t_7;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("is_ok", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":256
+ *     def is_ok(self):
+ *         """Returns if the RPC is ended with ok."""
+ *         return self.done() and self._status.code() == StatusCode.ok             # <<<<<<<<<<<<<<
+ * 
+ *     async def initial_metadata(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_done); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 256, __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(34, 256, __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(34, 256, __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_7 = ((struct __pyx_vtabstruct_7_cython_6cygrpc_AioRpcStatus *)__pyx_v_self->_status->__pyx_vtab)->code(__pyx_v_self->_status, 0); if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 256, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_grpc_status_code(__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 256, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_StatusCode); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 256, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_ok); if (unlikely(!__pyx_t_4)) __PYX_ERR(34, 256, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_t_3 = PyObject_RichCompare(__pyx_t_2, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 256, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __Pyx_INCREF(__pyx_t_3);
+  __pyx_t_1 = __pyx_t_3;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_L3_bool_binop_done:;
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":254
+ *         return self._status
+ * 
+ *     def is_ok(self):             # <<<<<<<<<<<<<<
+ *         """Returns if the RPC is ended with ok."""
+ *         return self.done() and self._status.code() == StatusCode.ok
+ */
+
+  /* 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("_cython.cygrpc._AioCall.is_ok", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+static PyObject *__pyx_gb_7_cython_6cygrpc_8_AioCall_27generator9(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":258
+ *         return self.done() and self._status.code() == StatusCode.ok
+ * 
+ *     async def initial_metadata(self):             # <<<<<<<<<<<<<<
+ *         """Returns the initial metadata of the RPC call.
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_8_AioCall_26initial_metadata(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+PyDoc_STRVAR(__pyx_doc_7_cython_6cygrpc_8_AioCall_25initial_metadata, "Returns the initial metadata of the RPC call.\n\n        If the initial metadata has not been received yet this function will\n        wait until the RPC gets finished.\n\n        Returns:\n            The tuple object with the initial metadata.\n        ");
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_8_AioCall_26initial_metadata = {"initial_metadata", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_8_AioCall_26initial_metadata, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7_cython_6cygrpc_8_AioCall_25initial_metadata};
+static PyObject *__pyx_pw_7_cython_6cygrpc_8_AioCall_26initial_metadata(PyObject *__pyx_v_self, 
+#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("initial_metadata (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("initial_metadata", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "initial_metadata", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_8_AioCall_25initial_metadata(((struct __pyx_obj_7_cython_6cygrpc__AioCall *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_8_AioCall_25initial_metadata(struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata *__pyx_cur_scope;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("initial_metadata", 0);
+  __pyx_cur_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata, __pyx_empty_tuple, NULL);
+  if (unlikely(!__pyx_cur_scope)) {
+    __pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata *)Py_None);
+    __Pyx_INCREF(Py_None);
+    __PYX_ERR(34, 258, __pyx_L1_error)
+  } else {
+    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+  }
+  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
+  {
+    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7_cython_6cygrpc_8_AioCall_27generator9, __pyx_codeobj__60, (PyObject *) __pyx_cur_scope, __pyx_n_s_initial_metadata, __pyx_n_s_AioCall_initial_metadata, __pyx_n_s_cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(34, 258, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_cur_scope);
+    __Pyx_RefNannyFinishContext();
+    return (PyObject *) gen;
+  }
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc._AioCall.initial_metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_gb_7_cython_6cygrpc_8_AioCall_27generator9(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
+{
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata *__pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata *)__pyx_generator->closure);
+  PyObject *__pyx_r = NULL;
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  unsigned int __pyx_t_5;
+  int __pyx_t_6;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("initial_metadata", 0);
+  switch (__pyx_generator->resume_label) {
+    case 0: goto __pyx_L3_first_run;
+    case 1: goto __pyx_L5_resume_from_await;
+    default: /* CPython raises the right error here */
+    __Pyx_RefNannyFinishContext();
+    return NULL;
+  }
+  __pyx_L3_first_run:;
+  if (unlikely(!__pyx_sent_value)) __PYX_ERR(34, 258, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":267
+ *             The tuple object with the initial metadata.
+ *         """
+ *         if self._initial_metadata is not None:             # <<<<<<<<<<<<<<
+ *             return self._initial_metadata
+ * 
+ */
+  __pyx_t_1 = (__pyx_cur_scope->__pyx_v_self->_initial_metadata != ((PyObject*)Py_None));
+  if (__pyx_t_1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":268
+ *         """
+ *         if self._initial_metadata is not None:
+ *             return self._initial_metadata             # <<<<<<<<<<<<<<
+ * 
+ *         future = self._loop.create_future()
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_cur_scope->__pyx_v_self->_initial_metadata);
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":267
+ *             The tuple object with the initial metadata.
+ *         """
+ *         if self._initial_metadata is not None:             # <<<<<<<<<<<<<<
+ *             return self._initial_metadata
+ * 
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":270
+ *             return self._initial_metadata
+ * 
+ *         future = self._loop.create_future()             # <<<<<<<<<<<<<<
+ *         self._waiters_initial_metadata.append(future)
+ *         await future
+ */
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self->_loop, __pyx_n_s_create_future); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 270, __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(34, 270, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  }
+  __Pyx_GIVEREF(__pyx_t_2);
+  __pyx_cur_scope->__pyx_v_future = __pyx_t_2;
+  __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":271
+ * 
+ *         future = self._loop.create_future()
+ *         self._waiters_initial_metadata.append(future)             # <<<<<<<<<<<<<<
+ *         await future
+ * 
+ */
+  if (unlikely(__pyx_cur_scope->__pyx_v_self->_waiters_initial_metadata == Py_None)) {
+    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
+    __PYX_ERR(34, 271, __pyx_L1_error)
+  }
+  __pyx_t_6 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_self->_waiters_initial_metadata, __pyx_cur_scope->__pyx_v_future); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(34, 271, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":272
+ *         future = self._loop.create_future()
+ *         self._waiters_initial_metadata.append(future)
+ *         await future             # <<<<<<<<<<<<<<
+ * 
+ *         return self._initial_metadata
+ */
+  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_cur_scope->__pyx_v_future);
+  __Pyx_XGOTREF(__pyx_r);
+  if (likely(__pyx_r)) {
+    __Pyx_XGIVEREF(__pyx_r);
+    __Pyx_RefNannyFinishContext();
+    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+    /* return from generator, awaiting value */
+    __pyx_generator->resume_label = 1;
+    return __pyx_r;
+    __pyx_L5_resume_from_await:;
+    if (unlikely(!__pyx_sent_value)) __PYX_ERR(34, 272, __pyx_L1_error)
+  } else {
+    PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType();
+    if (exc_type) {
+      if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
+      else __PYX_ERR(34, 272, __pyx_L1_error)
+    }
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":274
+ *         await future
+ * 
+ *         return self._initial_metadata             # <<<<<<<<<<<<<<
+ * 
+ *     def is_locally_cancelled(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_cur_scope->__pyx_v_self->_initial_metadata);
+  goto __pyx_L0;
+  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":258
+ *         return self.done() and self._status.code() == StatusCode.ok
+ * 
+ *     async def initial_metadata(self):             # <<<<<<<<<<<<<<
+ *         """Returns the initial metadata of the RPC call.
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_Generator_Replace_StopIteration(0);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("initial_metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
+  #if !CYTHON_USE_EXC_INFO_STACK
+  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+  #endif
+  __pyx_generator->resume_label = -1;
+  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":276
+ *         return self._initial_metadata
+ * 
+ *     def is_locally_cancelled(self):             # <<<<<<<<<<<<<<
+ *         """Returns if the RPC was cancelled locally.
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_8_AioCall_29is_locally_cancelled(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+PyDoc_STRVAR(__pyx_doc_7_cython_6cygrpc_8_AioCall_28is_locally_cancelled, "Returns if the RPC was cancelled locally.\n\n        Returns:\n            True when was cancelled locally, False when was cancelled remotelly or\n            is still ongoing.\n        ");
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_8_AioCall_29is_locally_cancelled = {"is_locally_cancelled", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_8_AioCall_29is_locally_cancelled, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7_cython_6cygrpc_8_AioCall_28is_locally_cancelled};
+static PyObject *__pyx_pw_7_cython_6cygrpc_8_AioCall_29is_locally_cancelled(PyObject *__pyx_v_self, 
+#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("is_locally_cancelled (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("is_locally_cancelled", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "is_locally_cancelled", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_8_AioCall_28is_locally_cancelled(((struct __pyx_obj_7_cython_6cygrpc__AioCall *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_8_AioCall_28is_locally_cancelled(struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("is_locally_cancelled", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":283
+ *             is still ongoing.
+ *         """
+ *         if self._is_locally_cancelled:             # <<<<<<<<<<<<<<
+ *             return True
+ * 
+ */
+  if (__pyx_v_self->_is_locally_cancelled) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":284
+ *         """
+ *         if self._is_locally_cancelled:
+ *             return True             # <<<<<<<<<<<<<<
+ * 
+ *         return False
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_INCREF(Py_True);
+    __pyx_r = Py_True;
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":283
+ *             is still ongoing.
+ *         """
+ *         if self._is_locally_cancelled:             # <<<<<<<<<<<<<<
+ *             return True
+ * 
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":286
+ *             return True
+ * 
+ *         return False             # <<<<<<<<<<<<<<
+ * 
+ *     def set_internal_error(self, str error_str):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(Py_False);
+  __pyx_r = Py_False;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":276
+ *         return self._initial_metadata
+ * 
+ *     def is_locally_cancelled(self):             # <<<<<<<<<<<<<<
+ *         """Returns if the RPC was cancelled locally.
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":288
+ *         return False
+ * 
+ *     def set_internal_error(self, str error_str):             # <<<<<<<<<<<<<<
+ *         self._set_status(AioRpcStatus(
+ *             StatusCode.internal,
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_8_AioCall_31set_internal_error(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_8_AioCall_31set_internal_error = {"set_internal_error", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_8_AioCall_31set_internal_error, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_8_AioCall_31set_internal_error(PyObject *__pyx_v_self, 
+#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_error_str = 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("set_internal_error (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_error_str,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_error_str)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 288, __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, "set_internal_error") < 0)) __PYX_ERR(34, 288, __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_error_str = ((PyObject*)values[0]);
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("set_internal_error", 1, 1, 1, __pyx_nargs); __PYX_ERR(34, 288, __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("_cython.cygrpc._AioCall.set_internal_error", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_error_str), (&PyString_Type), 1, "error_str", 1))) __PYX_ERR(34, 288, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_8_AioCall_30set_internal_error(((struct __pyx_obj_7_cython_6cygrpc__AioCall *)__pyx_v_self), __pyx_v_error_str);
+
+  /* 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_7_cython_6cygrpc_8_AioCall_30set_internal_error(struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self, PyObject *__pyx_v_error_str) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_internal_error", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":290
+ *     def set_internal_error(self, str error_str):
+ *         self._set_status(AioRpcStatus(
+ *             StatusCode.internal,             # <<<<<<<<<<<<<<
+ *             'Internal error from Core',
+ *             (),
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_StatusCode); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 290, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_internal); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 290, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":289
+ * 
+ *     def set_internal_error(self, str error_str):
+ *         self._set_status(AioRpcStatus(             # <<<<<<<<<<<<<<
+ *             StatusCode.internal,
+ *             'Internal error from Core',
+ */
+  __pyx_t_1 = PyTuple_New(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 289, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_2);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2)) __PYX_ERR(34, 289, __pyx_L1_error);
+  __Pyx_INCREF(__pyx_kp_s_Internal_error_from_Core);
+  __Pyx_GIVEREF(__pyx_kp_s_Internal_error_from_Core);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_kp_s_Internal_error_from_Core)) __PYX_ERR(34, 289, __pyx_L1_error);
+  __Pyx_INCREF(__pyx_empty_tuple);
+  __Pyx_GIVEREF(__pyx_empty_tuple);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_empty_tuple)) __PYX_ERR(34, 289, __pyx_L1_error);
+  __Pyx_INCREF(__pyx_v_error_str);
+  __Pyx_GIVEREF(__pyx_v_error_str);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_v_error_str)) __PYX_ERR(34, 289, __pyx_L1_error);
+  __pyx_t_2 = 0;
+  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_7_cython_6cygrpc_AioRpcStatus), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 289, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  ((struct __pyx_vtabstruct_7_cython_6cygrpc__AioCall *)__pyx_v_self->__pyx_vtab)->_set_status(__pyx_v_self, ((struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *)__pyx_t_2)); if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 289, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":288
+ *         return False
+ * 
+ *     def set_internal_error(self, str error_str):             # <<<<<<<<<<<<<<
+ *         self._set_status(AioRpcStatus(
+ *             StatusCode.internal,
+ */
+
+  /* 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_AddTraceback("_cython.cygrpc._AioCall.set_internal_error", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+static PyObject *__pyx_gb_7_cython_6cygrpc_8_AioCall_34generator10(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":296
+ *         ))
+ * 
+ *     async def unary_unary(self,             # <<<<<<<<<<<<<<
+ *                           bytes request,
+ *                           tuple outbound_initial_metadata,
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_8_AioCall_33unary_unary(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+PyDoc_STRVAR(__pyx_doc_7_cython_6cygrpc_8_AioCall_32unary_unary, "Performs a unary unary RPC.\n\n        Args:\n          request: the serialized requests in bytes.\n          outbound_initial_metadata: optional outbound metadata.\n          context: instrumentation context.\n        ");
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_8_AioCall_33unary_unary = {"unary_unary", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_8_AioCall_33unary_unary, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7_cython_6cygrpc_8_AioCall_32unary_unary};
+static PyObject *__pyx_pw_7_cython_6cygrpc_8_AioCall_33unary_unary(PyObject *__pyx_v_self, 
+#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_request = 0;
+  PyObject *__pyx_v_outbound_initial_metadata = 0;
+  PyObject *__pyx_v_context = 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("unary_unary (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_request,&__pyx_n_s_outbound_initial_metadata,&__pyx_n_s_context,0};
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":299
+ *                           bytes request,
+ *                           tuple outbound_initial_metadata,
+ *                           object context = None):             # <<<<<<<<<<<<<<
+ *         """Performs a unary unary RPC.
+ * 
+ */
+    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
+    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_request)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 296, __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_outbound_initial_metadata)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 296, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("unary_unary", 0, 2, 3, 1); __PYX_ERR(34, 296, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (kw_args > 0) {
+          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_context);
+          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
+          else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 296, __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, "unary_unary") < 0)) __PYX_ERR(34, 296, __pyx_L3_error)
+      }
+    } else {
+      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);
+        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+        break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_request = ((PyObject*)values[0]);
+    __pyx_v_outbound_initial_metadata = ((PyObject*)values[1]);
+    __pyx_v_context = values[2];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("unary_unary", 0, 2, 3, __pyx_nargs); __PYX_ERR(34, 296, __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("_cython.cygrpc._AioCall.unary_unary", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_request), (&PyBytes_Type), 1, "request", 1))) __PYX_ERR(34, 297, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_outbound_initial_metadata), (&PyTuple_Type), 1, "outbound_initial_metadata", 1))) __PYX_ERR(34, 298, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_8_AioCall_32unary_unary(((struct __pyx_obj_7_cython_6cygrpc__AioCall *)__pyx_v_self), __pyx_v_request, __pyx_v_outbound_initial_metadata, __pyx_v_context);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":296
+ *         ))
+ * 
+ *     async def unary_unary(self,             # <<<<<<<<<<<<<<
+ *                           bytes request,
+ *                           tuple outbound_initial_metadata,
+ */
+
+  /* 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_7_cython_6cygrpc_8_AioCall_32unary_unary(struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self, PyObject *__pyx_v_request, PyObject *__pyx_v_outbound_initial_metadata, PyObject *__pyx_v_context) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary *__pyx_cur_scope;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("unary_unary", 0);
+  __pyx_cur_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary, __pyx_empty_tuple, NULL);
+  if (unlikely(!__pyx_cur_scope)) {
+    __pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary *)Py_None);
+    __Pyx_INCREF(Py_None);
+    __PYX_ERR(34, 296, __pyx_L1_error)
+  } else {
+    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+  }
+  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
+  __pyx_cur_scope->__pyx_v_request = __pyx_v_request;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_request);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_request);
+  __pyx_cur_scope->__pyx_v_outbound_initial_metadata = __pyx_v_outbound_initial_metadata;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_outbound_initial_metadata);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_outbound_initial_metadata);
+  __pyx_cur_scope->__pyx_v_context = __pyx_v_context;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_context);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_context);
+  {
+    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7_cython_6cygrpc_8_AioCall_34generator10, __pyx_codeobj__61, (PyObject *) __pyx_cur_scope, __pyx_n_s_unary_unary, __pyx_n_s_AioCall_unary_unary, __pyx_n_s_cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(34, 296, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_cur_scope);
+    __Pyx_RefNannyFinishContext();
+    return (PyObject *) gen;
+  }
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc._AioCall.unary_unary", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_gb_7_cython_6cygrpc_8_AioCall_34generator10(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
+{
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary *__pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary *)__pyx_generator->closure);
+  PyObject *__pyx_r = NULL;
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_t_3;
+  PyObject *__pyx_t_4 = NULL;
+  unsigned int __pyx_t_5;
+  grpc_status_code __pyx_t_6;
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
+  PyObject *__pyx_t_9 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("unary_unary", 0);
+  switch (__pyx_generator->resume_label) {
+    case 0: goto __pyx_L3_first_run;
+    case 1: goto __pyx_L5_resume_from_await;
+    default: /* CPython raises the right error here */
+    __Pyx_RefNannyFinishContext();
+    return NULL;
+  }
+  __pyx_L3_first_run:;
+  if (unlikely(!__pyx_sent_value)) __PYX_ERR(34, 296, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":311
+ *         cdef SendInitialMetadataOperation initial_metadata_op = SendInitialMetadataOperation(
+ *             outbound_initial_metadata,
+ *             self._send_initial_metadata_flags)             # <<<<<<<<<<<<<<
+ *         cdef SendMessageOperation send_message_op = SendMessageOperation(request, _EMPTY_FLAGS)
+ *         cdef SendCloseFromClientOperation send_close_op = SendCloseFromClientOperation(_EMPTY_FLAGS)
+ */
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_cur_scope->__pyx_v_self->_send_initial_metadata_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 311, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":309
+ *         cdef tuple ops
+ * 
+ *         cdef SendInitialMetadataOperation initial_metadata_op = SendInitialMetadataOperation(             # <<<<<<<<<<<<<<
+ *             outbound_initial_metadata,
+ *             self._send_initial_metadata_flags)
+ */
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 309, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_outbound_initial_metadata);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_outbound_initial_metadata);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_cur_scope->__pyx_v_outbound_initial_metadata)) __PYX_ERR(34, 309, __pyx_L1_error);
+  __Pyx_GIVEREF(__pyx_t_1);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1)) __PYX_ERR(34, 309, __pyx_L1_error);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_7_cython_6cygrpc_SendInitialMetadataOperation), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 309, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_GIVEREF(__pyx_t_1);
+  __pyx_cur_scope->__pyx_v_initial_metadata_op = ((struct __pyx_obj_7_cython_6cygrpc_SendInitialMetadataOperation *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":312
+ *             outbound_initial_metadata,
+ *             self._send_initial_metadata_flags)
+ *         cdef SendMessageOperation send_message_op = SendMessageOperation(request, _EMPTY_FLAGS)             # <<<<<<<<<<<<<<
+ *         cdef SendCloseFromClientOperation send_close_op = SendCloseFromClientOperation(_EMPTY_FLAGS)
+ *         cdef ReceiveInitialMetadataOperation receive_initial_metadata_op = ReceiveInitialMetadataOperation(_EMPTY_FLAGS)
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_EMPTY_FLAGS); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 312, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 312, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_request);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_request);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_cur_scope->__pyx_v_request)) __PYX_ERR(34, 312, __pyx_L1_error);
+  __Pyx_GIVEREF(__pyx_t_1);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1)) __PYX_ERR(34, 312, __pyx_L1_error);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_7_cython_6cygrpc_SendMessageOperation), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 312, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_GIVEREF(__pyx_t_1);
+  __pyx_cur_scope->__pyx_v_send_message_op = ((struct __pyx_obj_7_cython_6cygrpc_SendMessageOperation *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":313
+ *             self._send_initial_metadata_flags)
+ *         cdef SendMessageOperation send_message_op = SendMessageOperation(request, _EMPTY_FLAGS)
+ *         cdef SendCloseFromClientOperation send_close_op = SendCloseFromClientOperation(_EMPTY_FLAGS)             # <<<<<<<<<<<<<<
+ *         cdef ReceiveInitialMetadataOperation receive_initial_metadata_op = ReceiveInitialMetadataOperation(_EMPTY_FLAGS)
+ *         cdef ReceiveMessageOperation receive_message_op = ReceiveMessageOperation(_EMPTY_FLAGS)
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_EMPTY_FLAGS); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 313, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_7_cython_6cygrpc_SendCloseFromClientOperation), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 313, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_GIVEREF(__pyx_t_2);
+  __pyx_cur_scope->__pyx_v_send_close_op = ((struct __pyx_obj_7_cython_6cygrpc_SendCloseFromClientOperation *)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":314
+ *         cdef SendMessageOperation send_message_op = SendMessageOperation(request, _EMPTY_FLAGS)
+ *         cdef SendCloseFromClientOperation send_close_op = SendCloseFromClientOperation(_EMPTY_FLAGS)
+ *         cdef ReceiveInitialMetadataOperation receive_initial_metadata_op = ReceiveInitialMetadataOperation(_EMPTY_FLAGS)             # <<<<<<<<<<<<<<
+ *         cdef ReceiveMessageOperation receive_message_op = ReceiveMessageOperation(_EMPTY_FLAGS)
+ *         cdef ReceiveStatusOnClientOperation receive_status_on_client_op = ReceiveStatusOnClientOperation(_EMPTY_FLAGS)
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_EMPTY_FLAGS); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 314, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_7_cython_6cygrpc_ReceiveInitialMetadataOperation), __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 314, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_GIVEREF(__pyx_t_1);
+  __pyx_cur_scope->__pyx_v_receive_initial_metadata_op = ((struct __pyx_obj_7_cython_6cygrpc_ReceiveInitialMetadataOperation *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":315
+ *         cdef SendCloseFromClientOperation send_close_op = SendCloseFromClientOperation(_EMPTY_FLAGS)
+ *         cdef ReceiveInitialMetadataOperation receive_initial_metadata_op = ReceiveInitialMetadataOperation(_EMPTY_FLAGS)
+ *         cdef ReceiveMessageOperation receive_message_op = ReceiveMessageOperation(_EMPTY_FLAGS)             # <<<<<<<<<<<<<<
+ *         cdef ReceiveStatusOnClientOperation receive_status_on_client_op = ReceiveStatusOnClientOperation(_EMPTY_FLAGS)
+ * 
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_EMPTY_FLAGS); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 315, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_7_cython_6cygrpc_ReceiveMessageOperation), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 315, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_GIVEREF(__pyx_t_2);
+  __pyx_cur_scope->__pyx_v_receive_message_op = ((struct __pyx_obj_7_cython_6cygrpc_ReceiveMessageOperation *)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":316
+ *         cdef ReceiveInitialMetadataOperation receive_initial_metadata_op = ReceiveInitialMetadataOperation(_EMPTY_FLAGS)
+ *         cdef ReceiveMessageOperation receive_message_op = ReceiveMessageOperation(_EMPTY_FLAGS)
+ *         cdef ReceiveStatusOnClientOperation receive_status_on_client_op = ReceiveStatusOnClientOperation(_EMPTY_FLAGS)             # <<<<<<<<<<<<<<
+ * 
+ *         if context is not None:
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_EMPTY_FLAGS); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 316, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_7_cython_6cygrpc_ReceiveStatusOnClientOperation), __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 316, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_GIVEREF(__pyx_t_1);
+  __pyx_cur_scope->__pyx_v_receive_status_on_client_op = ((struct __pyx_obj_7_cython_6cygrpc_ReceiveStatusOnClientOperation *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":318
+ *         cdef ReceiveStatusOnClientOperation receive_status_on_client_op = ReceiveStatusOnClientOperation(_EMPTY_FLAGS)
+ * 
+ *         if context is not None:             # <<<<<<<<<<<<<<
+ *             set_instrumentation_context_on_call_aio(self, context)
+ *         ops = (initial_metadata_op, send_message_op, send_close_op,
+ */
+  __pyx_t_3 = (__pyx_cur_scope->__pyx_v_context != Py_None);
+  if (__pyx_t_3) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":319
+ * 
+ *         if context is not None:
+ *             set_instrumentation_context_on_call_aio(self, context)             # <<<<<<<<<<<<<<
+ *         ops = (initial_metadata_op, send_message_op, send_close_op,
+ *                receive_initial_metadata_op, receive_message_op,
+ */
+    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_set_instrumentation_context_on_c); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 319, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __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[3] = {__pyx_t_4, ((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_cur_scope->__pyx_v_context};
+      __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;
+      if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 319, __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/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":318
+ *         cdef ReceiveStatusOnClientOperation receive_status_on_client_op = ReceiveStatusOnClientOperation(_EMPTY_FLAGS)
+ * 
+ *         if context is not None:             # <<<<<<<<<<<<<<
+ *             set_instrumentation_context_on_call_aio(self, context)
+ *         ops = (initial_metadata_op, send_message_op, send_close_op,
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":320
+ *         if context is not None:
+ *             set_instrumentation_context_on_call_aio(self, context)
+ *         ops = (initial_metadata_op, send_message_op, send_close_op,             # <<<<<<<<<<<<<<
+ *                receive_initial_metadata_op, receive_message_op,
+ *                receive_status_on_client_op)
+ */
+  __pyx_t_1 = PyTuple_New(6); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 320, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_initial_metadata_op);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_initial_metadata_op);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_initial_metadata_op))) __PYX_ERR(34, 320, __pyx_L1_error);
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_send_message_op);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_send_message_op);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_cur_scope->__pyx_v_send_message_op))) __PYX_ERR(34, 320, __pyx_L1_error);
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_send_close_op);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_send_close_op);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, ((PyObject *)__pyx_cur_scope->__pyx_v_send_close_op))) __PYX_ERR(34, 320, __pyx_L1_error);
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_receive_initial_metadata_op);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_receive_initial_metadata_op);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 3, ((PyObject *)__pyx_cur_scope->__pyx_v_receive_initial_metadata_op))) __PYX_ERR(34, 320, __pyx_L1_error);
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_receive_message_op);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_receive_message_op);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 4, ((PyObject *)__pyx_cur_scope->__pyx_v_receive_message_op))) __PYX_ERR(34, 320, __pyx_L1_error);
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_receive_status_on_client_op);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_receive_status_on_client_op);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 5, ((PyObject *)__pyx_cur_scope->__pyx_v_receive_status_on_client_op))) __PYX_ERR(34, 320, __pyx_L1_error);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __pyx_cur_scope->__pyx_v_ops = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":326
+ *         # Executes all operations in one batch.
+ *         # Might raise CancelledError, handling it in Python UnaryUnaryCall.
+ *         await execute_batch(self,             # <<<<<<<<<<<<<<
+ *                             ops,
+ *                             self._loop)
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_execute_batch); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 326, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":328
+ *         await execute_batch(self,
+ *                             ops,
+ *                             self._loop)             # <<<<<<<<<<<<<<
+ * 
+ *         self._set_initial_metadata(receive_initial_metadata_op.initial_metadata())
+ */
+  __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[4] = {__pyx_t_4, ((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_cur_scope->__pyx_v_ops, __pyx_cur_scope->__pyx_v_self->_loop};
+    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
+    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 326, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  }
+  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_XGOTREF(__pyx_r);
+  if (likely(__pyx_r)) {
+    __Pyx_XGIVEREF(__pyx_r);
+    __Pyx_RefNannyFinishContext();
+    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+    /* return from generator, awaiting value */
+    __pyx_generator->resume_label = 1;
+    return __pyx_r;
+    __pyx_L5_resume_from_await:;
+    if (unlikely(!__pyx_sent_value)) __PYX_ERR(34, 326, __pyx_L1_error)
+  } else {
+    PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType();
+    if (exc_type) {
+      if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
+      else __PYX_ERR(34, 326, __pyx_L1_error)
+    }
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":330
+ *                             self._loop)
+ * 
+ *         self._set_initial_metadata(receive_initial_metadata_op.initial_metadata())             # <<<<<<<<<<<<<<
+ * 
+ *         cdef grpc_status_code code
+ */
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_receive_initial_metadata_op), __pyx_n_s_initial_metadata); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 330, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __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, NULL};
+    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __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(34, 330, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  }
+  if (!(likely(PyTuple_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_t_1))) __PYX_ERR(34, 330, __pyx_L1_error)
+  ((struct __pyx_vtabstruct_7_cython_6cygrpc__AioCall *)__pyx_cur_scope->__pyx_v_self->__pyx_vtab)->_set_initial_metadata(__pyx_cur_scope->__pyx_v_self, ((PyObject*)__pyx_t_1)); if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 330, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":333
+ * 
+ *         cdef grpc_status_code code
+ *         code = receive_status_on_client_op.code()             # <<<<<<<<<<<<<<
+ * 
+ *         self._set_status(AioRpcStatus(
+ */
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_receive_status_on_client_op), __pyx_n_s_code); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 333, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __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, NULL};
+    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __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(34, 333, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  }
+  __pyx_t_6 = ((grpc_status_code)__Pyx_PyInt_As_grpc_status_code(__pyx_t_1)); if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 333, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_cur_scope->__pyx_v_code = __pyx_t_6;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":336
+ * 
+ *         self._set_status(AioRpcStatus(
+ *             code,             # <<<<<<<<<<<<<<
+ *             receive_status_on_client_op.details(),
+ *             receive_status_on_client_op.trailing_metadata(),
+ */
+  __pyx_t_1 = __Pyx_PyInt_From_grpc_status_code(__pyx_cur_scope->__pyx_v_code); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 336, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":337
+ *         self._set_status(AioRpcStatus(
+ *             code,
+ *             receive_status_on_client_op.details(),             # <<<<<<<<<<<<<<
+ *             receive_status_on_client_op.trailing_metadata(),
+ *             receive_status_on_client_op.error_string(),
+ */
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_receive_status_on_client_op), __pyx_n_s_details); if (unlikely(!__pyx_t_4)) __PYX_ERR(34, 337, __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_4))) {
+    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4);
+    if (likely(__pyx_t_7)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+      __Pyx_INCREF(__pyx_t_7);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_4, function);
+      __pyx_t_5 = 1;
+    }
+  }
+  #endif
+  {
+    PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL};
+    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
+    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+    if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 337, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":338
+ *             code,
+ *             receive_status_on_client_op.details(),
+ *             receive_status_on_client_op.trailing_metadata(),             # <<<<<<<<<<<<<<
+ *             receive_status_on_client_op.error_string(),
+ *         ))
+ */
+  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_receive_status_on_client_op), __pyx_n_s_trailing_metadata); if (unlikely(!__pyx_t_7)) __PYX_ERR(34, 338, __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(34, 338, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":339
+ *             receive_status_on_client_op.details(),
+ *             receive_status_on_client_op.trailing_metadata(),
+ *             receive_status_on_client_op.error_string(),             # <<<<<<<<<<<<<<
+ *         ))
+ * 
+ */
+  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_receive_status_on_client_op), __pyx_n_s_error_string); if (unlikely(!__pyx_t_8)) __PYX_ERR(34, 339, __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(34, 339, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_7);
+    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":335
+ *         code = receive_status_on_client_op.code()
+ * 
+ *         self._set_status(AioRpcStatus(             # <<<<<<<<<<<<<<
+ *             code,
+ *             receive_status_on_client_op.details(),
+ */
+  __pyx_t_8 = PyTuple_New(4); if (unlikely(!__pyx_t_8)) __PYX_ERR(34, 335, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_8);
+  __Pyx_GIVEREF(__pyx_t_1);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_1)) __PYX_ERR(34, 335, __pyx_L1_error);
+  __Pyx_GIVEREF(__pyx_t_2);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_2)) __PYX_ERR(34, 335, __pyx_L1_error);
+  __Pyx_GIVEREF(__pyx_t_4);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_t_4)) __PYX_ERR(34, 335, __pyx_L1_error);
+  __Pyx_GIVEREF(__pyx_t_7);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 3, __pyx_t_7)) __PYX_ERR(34, 335, __pyx_L1_error);
+  __pyx_t_1 = 0;
+  __pyx_t_2 = 0;
+  __pyx_t_4 = 0;
+  __pyx_t_7 = 0;
+  __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_7_cython_6cygrpc_AioRpcStatus), __pyx_t_8, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(34, 335, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+  ((struct __pyx_vtabstruct_7_cython_6cygrpc__AioCall *)__pyx_cur_scope->__pyx_v_self->__pyx_vtab)->_set_status(__pyx_cur_scope->__pyx_v_self, ((struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *)__pyx_t_7)); if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 335, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":342
+ *         ))
+ * 
+ *         if code == StatusCode.ok:             # <<<<<<<<<<<<<<
+ *             return receive_message_op.message()
+ *         else:
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_grpc_status_code(__pyx_cur_scope->__pyx_v_code); if (unlikely(!__pyx_t_7)) __PYX_ERR(34, 342, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_StatusCode); if (unlikely(!__pyx_t_8)) __PYX_ERR(34, 342, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_8);
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_ok); if (unlikely(!__pyx_t_4)) __PYX_ERR(34, 342, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+  __pyx_t_8 = PyObject_RichCompare(__pyx_t_7, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(34, 342, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(34, 342, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+  if (__pyx_t_3) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":343
+ * 
+ *         if code == StatusCode.ok:
+ *             return receive_message_op.message()             # <<<<<<<<<<<<<<
+ *         else:
+ *             return None
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_receive_message_op), __pyx_n_s_message); if (unlikely(!__pyx_t_4)) __PYX_ERR(34, 343, __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_4))) {
+      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_7)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_7);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+        __pyx_t_5 = 1;
+      }
+    }
+    #endif
+    {
+      PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL};
+      __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
+      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+      if (unlikely(!__pyx_t_8)) __PYX_ERR(34, 343, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_8);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    }
+    __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_t_8);
+    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":342
+ *         ))
+ * 
+ *         if code == StatusCode.ok:             # <<<<<<<<<<<<<<
+ *             return receive_message_op.message()
+ *         else:
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":345
+ *             return receive_message_op.message()
+ *         else:
+ *             return None             # <<<<<<<<<<<<<<
+ * 
+ *     async def _handle_status_once_received(self):
+ */
+  /*else*/ {
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_r = NULL;
+    goto __pyx_L0;
+  }
+  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":296
+ *         ))
+ * 
+ *     async def unary_unary(self,             # <<<<<<<<<<<<<<
+ *                           bytes request,
+ *                           tuple outbound_initial_metadata,
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_Generator_Replace_StopIteration(0);
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_AddTraceback("unary_unary", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
+  #if !CYTHON_USE_EXC_INFO_STACK
+  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+  #endif
+  __pyx_generator->resume_label = -1;
+  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+static PyObject *__pyx_gb_7_cython_6cygrpc_8_AioCall_37generator11(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":347
+ *             return None
+ * 
+ *     async def _handle_status_once_received(self):             # <<<<<<<<<<<<<<
+ *         """Handles the status sent by peer once received."""
+ *         cdef ReceiveStatusOnClientOperation op = ReceiveStatusOnClientOperation(_EMPTY_FLAGS)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_8_AioCall_36_handle_status_once_received(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+PyDoc_STRVAR(__pyx_doc_7_cython_6cygrpc_8_AioCall_35_handle_status_once_received, "Handles the status sent by peer once received.");
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_8_AioCall_36_handle_status_once_received = {"_handle_status_once_received", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_8_AioCall_36_handle_status_once_received, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7_cython_6cygrpc_8_AioCall_35_handle_status_once_received};
+static PyObject *__pyx_pw_7_cython_6cygrpc_8_AioCall_36_handle_status_once_received(PyObject *__pyx_v_self, 
+#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("_handle_status_once_received (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("_handle_status_once_received", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "_handle_status_once_received", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_8_AioCall_35_handle_status_once_received(((struct __pyx_obj_7_cython_6cygrpc__AioCall *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_8_AioCall_35_handle_status_once_received(struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received *__pyx_cur_scope;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_handle_status_once_received", 0);
+  __pyx_cur_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received, __pyx_empty_tuple, NULL);
+  if (unlikely(!__pyx_cur_scope)) {
+    __pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received *)Py_None);
+    __Pyx_INCREF(Py_None);
+    __PYX_ERR(34, 347, __pyx_L1_error)
+  } else {
+    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+  }
+  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
+  {
+    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7_cython_6cygrpc_8_AioCall_37generator11, __pyx_codeobj__62, (PyObject *) __pyx_cur_scope, __pyx_n_s_handle_status_once_received, __pyx_n_s_AioCall__handle_status_once_rec, __pyx_n_s_cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(34, 347, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_cur_scope);
+    __Pyx_RefNannyFinishContext();
+    return (PyObject *) gen;
+  }
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc._AioCall._handle_status_once_received", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_gb_7_cython_6cygrpc_8_AioCall_37generator11(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
+{
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received *__pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received *)__pyx_generator->closure);
+  PyObject *__pyx_r = NULL;
+  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;
+  PyObject *__pyx_t_7 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("_handle_status_once_received", 0);
+  switch (__pyx_generator->resume_label) {
+    case 0: goto __pyx_L3_first_run;
+    case 1: goto __pyx_L4_resume_from_await;
+    default: /* CPython raises the right error here */
+    __Pyx_RefNannyFinishContext();
+    return NULL;
+  }
+  __pyx_L3_first_run:;
+  if (unlikely(!__pyx_sent_value)) __PYX_ERR(34, 347, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":349
+ *     async def _handle_status_once_received(self):
+ *         """Handles the status sent by peer once received."""
+ *         cdef ReceiveStatusOnClientOperation op = ReceiveStatusOnClientOperation(_EMPTY_FLAGS)             # <<<<<<<<<<<<<<
+ *         cdef tuple ops = (op,)
+ *         await execute_batch(self, ops, self._loop)
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_EMPTY_FLAGS); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 349, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_7_cython_6cygrpc_ReceiveStatusOnClientOperation), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 349, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_GIVEREF(__pyx_t_2);
+  __pyx_cur_scope->__pyx_v_op = ((struct __pyx_obj_7_cython_6cygrpc_ReceiveStatusOnClientOperation *)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":350
+ *         """Handles the status sent by peer once received."""
+ *         cdef ReceiveStatusOnClientOperation op = ReceiveStatusOnClientOperation(_EMPTY_FLAGS)
+ *         cdef tuple ops = (op,)             # <<<<<<<<<<<<<<
+ *         await execute_batch(self, ops, self._loop)
+ * 
+ */
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 350, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_op);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_op);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_op))) __PYX_ERR(34, 350, __pyx_L1_error);
+  __Pyx_GIVEREF(__pyx_t_2);
+  __pyx_cur_scope->__pyx_v_ops = ((PyObject*)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":351
+ *         cdef ReceiveStatusOnClientOperation op = ReceiveStatusOnClientOperation(_EMPTY_FLAGS)
+ *         cdef tuple ops = (op,)
+ *         await execute_batch(self, ops, self._loop)             # <<<<<<<<<<<<<<
+ * 
+ *         # Halts if the RPC is locally cancelled
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_execute_batch); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 351, __pyx_L1_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[4] = {__pyx_t_3, ((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_cur_scope->__pyx_v_ops, __pyx_cur_scope->__pyx_v_self->_loop};
+    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 3+__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 351, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  }
+  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_2);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_XGOTREF(__pyx_r);
+  if (likely(__pyx_r)) {
+    __Pyx_XGIVEREF(__pyx_r);
+    __Pyx_RefNannyFinishContext();
+    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+    /* return from generator, awaiting value */
+    __pyx_generator->resume_label = 1;
+    return __pyx_r;
+    __pyx_L4_resume_from_await:;
+    if (unlikely(!__pyx_sent_value)) __PYX_ERR(34, 351, __pyx_L1_error)
+  } else {
+    PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType();
+    if (exc_type) {
+      if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
+      else __PYX_ERR(34, 351, __pyx_L1_error)
+    }
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":354
+ * 
+ *         # Halts if the RPC is locally cancelled
+ *         if self._is_locally_cancelled:             # <<<<<<<<<<<<<<
+ *             return
+ * 
+ */
+  if (__pyx_cur_scope->__pyx_v_self->_is_locally_cancelled) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":355
+ *         # Halts if the RPC is locally cancelled
+ *         if self._is_locally_cancelled:
+ *             return             # <<<<<<<<<<<<<<
+ * 
+ *         self._set_status(AioRpcStatus(
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_r = NULL;
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":354
+ * 
+ *         # Halts if the RPC is locally cancelled
+ *         if self._is_locally_cancelled:             # <<<<<<<<<<<<<<
+ *             return
+ * 
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":358
+ * 
+ *         self._set_status(AioRpcStatus(
+ *             op.code(),             # <<<<<<<<<<<<<<
+ *             op.details(),
+ *             op.trailing_metadata(),
+ */
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_op), __pyx_n_s_code); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 358, __pyx_L1_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, NULL};
+    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 358, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":359
+ *         self._set_status(AioRpcStatus(
+ *             op.code(),
+ *             op.details(),             # <<<<<<<<<<<<<<
+ *             op.trailing_metadata(),
+ *             op.error_string(),
+ */
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_op), __pyx_n_s_details); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 359, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_5 = NULL;
+  __pyx_t_4 = 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_4 = 1;
+    }
+  }
+  #endif
+  {
+    PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
+    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 359, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":360
+ *             op.code(),
+ *             op.details(),
+ *             op.trailing_metadata(),             # <<<<<<<<<<<<<<
+ *             op.error_string(),
+ *         ))
+ */
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_op), __pyx_n_s_trailing_metadata); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 360, __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(34, 360, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":361
+ *             op.details(),
+ *             op.trailing_metadata(),
+ *             op.error_string(),             # <<<<<<<<<<<<<<
+ *         ))
+ * 
+ */
+  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_op), __pyx_n_s_error_string); if (unlikely(!__pyx_t_6)) __PYX_ERR(34, 361, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  __pyx_t_7 = NULL;
+  __pyx_t_4 = 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_4 = 1;
+    }
+  }
+  #endif
+  {
+    PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL};
+    __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+    if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 361, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":357
+ *             return
+ * 
+ *         self._set_status(AioRpcStatus(             # <<<<<<<<<<<<<<
+ *             op.code(),
+ *             op.details(),
+ */
+  __pyx_t_6 = PyTuple_New(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(34, 357, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  __Pyx_GIVEREF(__pyx_t_2);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2)) __PYX_ERR(34, 357, __pyx_L1_error);
+  __Pyx_GIVEREF(__pyx_t_1);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_1)) __PYX_ERR(34, 357, __pyx_L1_error);
+  __Pyx_GIVEREF(__pyx_t_3);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_3)) __PYX_ERR(34, 357, __pyx_L1_error);
+  __Pyx_GIVEREF(__pyx_t_5);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 3, __pyx_t_5)) __PYX_ERR(34, 357, __pyx_L1_error);
+  __pyx_t_2 = 0;
+  __pyx_t_1 = 0;
+  __pyx_t_3 = 0;
+  __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_7_cython_6cygrpc_AioRpcStatus), __pyx_t_6, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 357, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  ((struct __pyx_vtabstruct_7_cython_6cygrpc__AioCall *)__pyx_cur_scope->__pyx_v_self->__pyx_vtab)->_set_status(__pyx_cur_scope->__pyx_v_self, ((struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *)__pyx_t_5)); if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 357, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":347
+ *             return None
+ * 
+ *     async def _handle_status_once_received(self):             # <<<<<<<<<<<<<<
+ *         """Handles the status sent by peer once received."""
+ *         cdef ReceiveStatusOnClientOperation op = ReceiveStatusOnClientOperation(_EMPTY_FLAGS)
+ */
+
+  /* function exit code */
+  PyErr_SetNone(PyExc_StopIteration);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_Generator_Replace_StopIteration(0);
+  __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_XDECREF(__pyx_t_7);
+  __Pyx_AddTraceback("_handle_status_once_received", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
+  #if !CYTHON_USE_EXC_INFO_STACK
+  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+  #endif
+  __pyx_generator->resume_label = -1;
+  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+static PyObject *__pyx_gb_7_cython_6cygrpc_8_AioCall_40generator12(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":364
+ *         ))
+ * 
+ *     async def receive_serialized_message(self):             # <<<<<<<<<<<<<<
+ *         """Receives one single raw message in bytes."""
+ *         cdef bytes received_message
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_8_AioCall_39receive_serialized_message(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+PyDoc_STRVAR(__pyx_doc_7_cython_6cygrpc_8_AioCall_38receive_serialized_message, "Receives one single raw message in bytes.");
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_8_AioCall_39receive_serialized_message = {"receive_serialized_message", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_8_AioCall_39receive_serialized_message, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7_cython_6cygrpc_8_AioCall_38receive_serialized_message};
+static PyObject *__pyx_pw_7_cython_6cygrpc_8_AioCall_39receive_serialized_message(PyObject *__pyx_v_self, 
+#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("receive_serialized_message (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("receive_serialized_message", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "receive_serialized_message", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_8_AioCall_38receive_serialized_message(((struct __pyx_obj_7_cython_6cygrpc__AioCall *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_8_AioCall_38receive_serialized_message(struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message *__pyx_cur_scope;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("receive_serialized_message", 0);
+  __pyx_cur_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message, __pyx_empty_tuple, NULL);
+  if (unlikely(!__pyx_cur_scope)) {
+    __pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message *)Py_None);
+    __Pyx_INCREF(Py_None);
+    __PYX_ERR(34, 364, __pyx_L1_error)
+  } else {
+    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+  }
+  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
+  {
+    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7_cython_6cygrpc_8_AioCall_40generator12, __pyx_codeobj__63, (PyObject *) __pyx_cur_scope, __pyx_n_s_receive_serialized_message, __pyx_n_s_AioCall_receive_serialized_mess, __pyx_n_s_cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(34, 364, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_cur_scope);
+    __Pyx_RefNannyFinishContext();
+    return (PyObject *) gen;
+  }
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc._AioCall.receive_serialized_message", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_gb_7_cython_6cygrpc_8_AioCall_40generator12(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
+{
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message *__pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message *)__pyx_generator->closure);
+  PyObject *__pyx_r = NULL;
+  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_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("receive_serialized_message", 0);
+  switch (__pyx_generator->resume_label) {
+    case 0: goto __pyx_L3_first_run;
+    case 1: goto __pyx_L4_resume_from_await;
+    default: /* CPython raises the right error here */
+    __Pyx_RefNannyFinishContext();
+    return NULL;
+  }
+  __pyx_L3_first_run:;
+  if (unlikely(!__pyx_sent_value)) __PYX_ERR(34, 364, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":372
+ *         # * The client application cancels;
+ *         # * The server sends final status.
+ *         received_message = await _receive_message(             # <<<<<<<<<<<<<<
+ *             self,
+ *             self._loop
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_receive_message); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 372, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":374
+ *         received_message = await _receive_message(
+ *             self,
+ *             self._loop             # <<<<<<<<<<<<<<
+ *         )
+ *         if received_message is not None:
+ */
+  __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[3] = {__pyx_t_3, ((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_cur_scope->__pyx_v_self->_loop};
+    __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(34, 372, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  }
+  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_XGOTREF(__pyx_r);
+  if (likely(__pyx_r)) {
+    __Pyx_XGIVEREF(__pyx_r);
+    __Pyx_RefNannyFinishContext();
+    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+    /* return from generator, awaiting value */
+    __pyx_generator->resume_label = 1;
+    return __pyx_r;
+    __pyx_L4_resume_from_await:;
+    if (unlikely(!__pyx_sent_value)) __PYX_ERR(34, 372, __pyx_L1_error)
+    __pyx_t_1 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_1);
+  } else {
+    __pyx_t_1 = NULL;
+    if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_1) < 0) __PYX_ERR(34, 372, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":372
+ *         # * The client application cancels;
+ *         # * The server sends final status.
+ *         received_message = await _receive_message(             # <<<<<<<<<<<<<<
+ *             self,
+ *             self._loop
+ */
+  if (!(likely(PyBytes_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("bytes", __pyx_t_1))) __PYX_ERR(34, 372, __pyx_L1_error)
+  __Pyx_GIVEREF(__pyx_t_1);
+  __pyx_cur_scope->__pyx_v_received_message = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":376
+ *             self._loop
+ *         )
+ *         if received_message is not None:             # <<<<<<<<<<<<<<
+ *             return received_message
+ *         else:
+ */
+  __pyx_t_5 = (__pyx_cur_scope->__pyx_v_received_message != ((PyObject*)Py_None));
+  if (__pyx_t_5) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":377
+ *         )
+ *         if received_message is not None:
+ *             return received_message             # <<<<<<<<<<<<<<
+ *         else:
+ *             return EOF
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_cur_scope->__pyx_v_received_message);
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":376
+ *             self._loop
+ *         )
+ *         if received_message is not None:             # <<<<<<<<<<<<<<
+ *             return received_message
+ *         else:
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":379
+ *             return received_message
+ *         else:
+ *             return EOF             # <<<<<<<<<<<<<<
+ * 
+ *     async def send_serialized_message(self, bytes message):
+ */
+  /*else*/ {
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_EOF); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 379, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    goto __pyx_L0;
+  }
+  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":364
+ *         ))
+ * 
+ *     async def receive_serialized_message(self):             # <<<<<<<<<<<<<<
+ *         """Receives one single raw message in bytes."""
+ *         cdef bytes received_message
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_Generator_Replace_StopIteration(0);
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("receive_serialized_message", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
+  #if !CYTHON_USE_EXC_INFO_STACK
+  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+  #endif
+  __pyx_generator->resume_label = -1;
+  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+static PyObject *__pyx_gb_7_cython_6cygrpc_8_AioCall_43generator13(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":381
+ *             return EOF
+ * 
+ *     async def send_serialized_message(self, bytes message):             # <<<<<<<<<<<<<<
+ *         """Sends one single raw message in bytes."""
+ *         await _send_message(self,
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_8_AioCall_42send_serialized_message(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+PyDoc_STRVAR(__pyx_doc_7_cython_6cygrpc_8_AioCall_41send_serialized_message, "Sends one single raw message in bytes.");
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_8_AioCall_42send_serialized_message = {"send_serialized_message", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_8_AioCall_42send_serialized_message, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7_cython_6cygrpc_8_AioCall_41send_serialized_message};
+static PyObject *__pyx_pw_7_cython_6cygrpc_8_AioCall_42send_serialized_message(PyObject *__pyx_v_self, 
+#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_message = 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("send_serialized_message (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_message,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_message)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 381, __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, "send_serialized_message") < 0)) __PYX_ERR(34, 381, __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_message = ((PyObject*)values[0]);
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("send_serialized_message", 1, 1, 1, __pyx_nargs); __PYX_ERR(34, 381, __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("_cython.cygrpc._AioCall.send_serialized_message", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_message), (&PyBytes_Type), 1, "message", 1))) __PYX_ERR(34, 381, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_8_AioCall_41send_serialized_message(((struct __pyx_obj_7_cython_6cygrpc__AioCall *)__pyx_v_self), __pyx_v_message);
+
+  /* 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_7_cython_6cygrpc_8_AioCall_41send_serialized_message(struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self, PyObject *__pyx_v_message) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message *__pyx_cur_scope;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("send_serialized_message", 0);
+  __pyx_cur_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message, __pyx_empty_tuple, NULL);
+  if (unlikely(!__pyx_cur_scope)) {
+    __pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message *)Py_None);
+    __Pyx_INCREF(Py_None);
+    __PYX_ERR(34, 381, __pyx_L1_error)
+  } else {
+    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+  }
+  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
+  __pyx_cur_scope->__pyx_v_message = __pyx_v_message;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_message);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_message);
+  {
+    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7_cython_6cygrpc_8_AioCall_43generator13, __pyx_codeobj__64, (PyObject *) __pyx_cur_scope, __pyx_n_s_send_serialized_message, __pyx_n_s_AioCall_send_serialized_message, __pyx_n_s_cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(34, 381, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_cur_scope);
+    __Pyx_RefNannyFinishContext();
+    return (PyObject *) gen;
+  }
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc._AioCall.send_serialized_message", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_gb_7_cython_6cygrpc_8_AioCall_43generator13(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
+{
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message *__pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message *)__pyx_generator->closure);
+  PyObject *__pyx_r = NULL;
+  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_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("send_serialized_message", 0);
+  switch (__pyx_generator->resume_label) {
+    case 0: goto __pyx_L3_first_run;
+    case 1: goto __pyx_L4_resume_from_await;
+    default: /* CPython raises the right error here */
+    __Pyx_RefNannyFinishContext();
+    return NULL;
+  }
+  __pyx_L3_first_run:;
+  if (unlikely(!__pyx_sent_value)) __PYX_ERR(34, 381, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":383
+ *     async def send_serialized_message(self, bytes message):
+ *         """Sends one single raw message in bytes."""
+ *         await _send_message(self,             # <<<<<<<<<<<<<<
+ *                             message,
+ *                             None,
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_send_message); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 383, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":387
+ *                             None,
+ *                             False,
+ *                             self._loop)             # <<<<<<<<<<<<<<
+ * 
+ *     async def send_receive_close(self):
+ */
+  __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[6] = {__pyx_t_3, ((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_cur_scope->__pyx_v_message, Py_None, Py_False, __pyx_cur_scope->__pyx_v_self->_loop};
+    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 5+__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 383, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  }
+  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_XGOTREF(__pyx_r);
+  if (likely(__pyx_r)) {
+    __Pyx_XGIVEREF(__pyx_r);
+    __Pyx_RefNannyFinishContext();
+    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+    /* return from generator, awaiting value */
+    __pyx_generator->resume_label = 1;
+    return __pyx_r;
+    __pyx_L4_resume_from_await:;
+    if (unlikely(!__pyx_sent_value)) __PYX_ERR(34, 383, __pyx_L1_error)
+  } else {
+    PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType();
+    if (exc_type) {
+      if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
+      else __PYX_ERR(34, 383, __pyx_L1_error)
+    }
+  }
+  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":381
+ *             return EOF
+ * 
+ *     async def send_serialized_message(self, bytes message):             # <<<<<<<<<<<<<<
+ *         """Sends one single raw message in bytes."""
+ *         await _send_message(self,
+ */
+
+  /* function exit code */
+  PyErr_SetNone(PyExc_StopIteration);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_Generator_Replace_StopIteration(0);
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("send_serialized_message", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
+  #if !CYTHON_USE_EXC_INFO_STACK
+  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+  #endif
+  __pyx_generator->resume_label = -1;
+  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+static PyObject *__pyx_gb_7_cython_6cygrpc_8_AioCall_46generator14(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":389
+ *                             self._loop)
+ * 
+ *     async def send_receive_close(self):             # <<<<<<<<<<<<<<
+ *         """Half close the RPC on the client-side."""
+ *         cdef SendCloseFromClientOperation op = SendCloseFromClientOperation(_EMPTY_FLAGS)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_8_AioCall_45send_receive_close(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+PyDoc_STRVAR(__pyx_doc_7_cython_6cygrpc_8_AioCall_44send_receive_close, "Half close the RPC on the client-side.");
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_8_AioCall_45send_receive_close = {"send_receive_close", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_8_AioCall_45send_receive_close, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7_cython_6cygrpc_8_AioCall_44send_receive_close};
+static PyObject *__pyx_pw_7_cython_6cygrpc_8_AioCall_45send_receive_close(PyObject *__pyx_v_self, 
+#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("send_receive_close (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("send_receive_close", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "send_receive_close", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_8_AioCall_44send_receive_close(((struct __pyx_obj_7_cython_6cygrpc__AioCall *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_8_AioCall_44send_receive_close(struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close *__pyx_cur_scope;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("send_receive_close", 0);
+  __pyx_cur_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close, __pyx_empty_tuple, NULL);
+  if (unlikely(!__pyx_cur_scope)) {
+    __pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close *)Py_None);
+    __Pyx_INCREF(Py_None);
+    __PYX_ERR(34, 389, __pyx_L1_error)
+  } else {
+    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+  }
+  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
+  {
+    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7_cython_6cygrpc_8_AioCall_46generator14, __pyx_codeobj__65, (PyObject *) __pyx_cur_scope, __pyx_n_s_send_receive_close, __pyx_n_s_AioCall_send_receive_close, __pyx_n_s_cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(34, 389, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_cur_scope);
+    __Pyx_RefNannyFinishContext();
+    return (PyObject *) gen;
+  }
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc._AioCall.send_receive_close", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_gb_7_cython_6cygrpc_8_AioCall_46generator14(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
+{
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close *__pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close *)__pyx_generator->closure);
+  PyObject *__pyx_r = NULL;
+  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_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("send_receive_close", 0);
+  switch (__pyx_generator->resume_label) {
+    case 0: goto __pyx_L3_first_run;
+    case 1: goto __pyx_L4_resume_from_await;
+    default: /* CPython raises the right error here */
+    __Pyx_RefNannyFinishContext();
+    return NULL;
+  }
+  __pyx_L3_first_run:;
+  if (unlikely(!__pyx_sent_value)) __PYX_ERR(34, 389, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":391
+ *     async def send_receive_close(self):
+ *         """Half close the RPC on the client-side."""
+ *         cdef SendCloseFromClientOperation op = SendCloseFromClientOperation(_EMPTY_FLAGS)             # <<<<<<<<<<<<<<
+ *         cdef tuple ops = (op,)
+ *         await execute_batch(self, ops, self._loop)
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_EMPTY_FLAGS); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 391, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_7_cython_6cygrpc_SendCloseFromClientOperation), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 391, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_GIVEREF(__pyx_t_2);
+  __pyx_cur_scope->__pyx_v_op = ((struct __pyx_obj_7_cython_6cygrpc_SendCloseFromClientOperation *)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":392
+ *         """Half close the RPC on the client-side."""
+ *         cdef SendCloseFromClientOperation op = SendCloseFromClientOperation(_EMPTY_FLAGS)
+ *         cdef tuple ops = (op,)             # <<<<<<<<<<<<<<
+ *         await execute_batch(self, ops, self._loop)
+ * 
+ */
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 392, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_op);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_op);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_op))) __PYX_ERR(34, 392, __pyx_L1_error);
+  __Pyx_GIVEREF(__pyx_t_2);
+  __pyx_cur_scope->__pyx_v_ops = ((PyObject*)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":393
+ *         cdef SendCloseFromClientOperation op = SendCloseFromClientOperation(_EMPTY_FLAGS)
+ *         cdef tuple ops = (op,)
+ *         await execute_batch(self, ops, self._loop)             # <<<<<<<<<<<<<<
+ * 
+ *     async def initiate_unary_stream(self,
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_execute_batch); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 393, __pyx_L1_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[4] = {__pyx_t_3, ((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_cur_scope->__pyx_v_ops, __pyx_cur_scope->__pyx_v_self->_loop};
+    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 3+__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 393, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  }
+  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_2);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_XGOTREF(__pyx_r);
+  if (likely(__pyx_r)) {
+    __Pyx_XGIVEREF(__pyx_r);
+    __Pyx_RefNannyFinishContext();
+    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+    /* return from generator, awaiting value */
+    __pyx_generator->resume_label = 1;
+    return __pyx_r;
+    __pyx_L4_resume_from_await:;
+    if (unlikely(!__pyx_sent_value)) __PYX_ERR(34, 393, __pyx_L1_error)
+  } else {
+    PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType();
+    if (exc_type) {
+      if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
+      else __PYX_ERR(34, 393, __pyx_L1_error)
+    }
+  }
+  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":389
+ *                             self._loop)
+ * 
+ *     async def send_receive_close(self):             # <<<<<<<<<<<<<<
+ *         """Half close the RPC on the client-side."""
+ *         cdef SendCloseFromClientOperation op = SendCloseFromClientOperation(_EMPTY_FLAGS)
+ */
+
+  /* function exit code */
+  PyErr_SetNone(PyExc_StopIteration);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_Generator_Replace_StopIteration(0);
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("send_receive_close", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
+  #if !CYTHON_USE_EXC_INFO_STACK
+  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+  #endif
+  __pyx_generator->resume_label = -1;
+  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+static PyObject *__pyx_gb_7_cython_6cygrpc_8_AioCall_49generator15(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":395
+ *         await execute_batch(self, ops, self._loop)
+ * 
+ *     async def initiate_unary_stream(self,             # <<<<<<<<<<<<<<
+ *                            bytes request,
+ *                            tuple outbound_initial_metadata,
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_8_AioCall_48initiate_unary_stream(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+PyDoc_STRVAR(__pyx_doc_7_cython_6cygrpc_8_AioCall_47initiate_unary_stream, "Implementation of the start of a unary-stream call.");
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_8_AioCall_48initiate_unary_stream = {"initiate_unary_stream", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_8_AioCall_48initiate_unary_stream, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7_cython_6cygrpc_8_AioCall_47initiate_unary_stream};
+static PyObject *__pyx_pw_7_cython_6cygrpc_8_AioCall_48initiate_unary_stream(PyObject *__pyx_v_self, 
+#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_request = 0;
+  PyObject *__pyx_v_outbound_initial_metadata = 0;
+  PyObject *__pyx_v_context = 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("initiate_unary_stream (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_request,&__pyx_n_s_outbound_initial_metadata,&__pyx_n_s_context,0};
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":398
+ *                            bytes request,
+ *                            tuple outbound_initial_metadata,
+ *                            object context = None):             # <<<<<<<<<<<<<<
+ *         """Implementation of the start of a unary-stream call."""
+ *         # Peer may prematurely end this RPC at any point. We need a corutine
+ */
+    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
+    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_request)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 395, __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_outbound_initial_metadata)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 395, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("initiate_unary_stream", 0, 2, 3, 1); __PYX_ERR(34, 395, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (kw_args > 0) {
+          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_context);
+          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
+          else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 395, __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, "initiate_unary_stream") < 0)) __PYX_ERR(34, 395, __pyx_L3_error)
+      }
+    } else {
+      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);
+        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+        break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_request = ((PyObject*)values[0]);
+    __pyx_v_outbound_initial_metadata = ((PyObject*)values[1]);
+    __pyx_v_context = values[2];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("initiate_unary_stream", 0, 2, 3, __pyx_nargs); __PYX_ERR(34, 395, __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("_cython.cygrpc._AioCall.initiate_unary_stream", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_request), (&PyBytes_Type), 1, "request", 1))) __PYX_ERR(34, 396, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_outbound_initial_metadata), (&PyTuple_Type), 1, "outbound_initial_metadata", 1))) __PYX_ERR(34, 397, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_8_AioCall_47initiate_unary_stream(((struct __pyx_obj_7_cython_6cygrpc__AioCall *)__pyx_v_self), __pyx_v_request, __pyx_v_outbound_initial_metadata, __pyx_v_context);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":395
+ *         await execute_batch(self, ops, self._loop)
+ * 
+ *     async def initiate_unary_stream(self,             # <<<<<<<<<<<<<<
+ *                            bytes request,
+ *                            tuple outbound_initial_metadata,
+ */
+
+  /* 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_7_cython_6cygrpc_8_AioCall_47initiate_unary_stream(struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self, PyObject *__pyx_v_request, PyObject *__pyx_v_outbound_initial_metadata, PyObject *__pyx_v_context) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream *__pyx_cur_scope;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("initiate_unary_stream", 0);
+  __pyx_cur_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream, __pyx_empty_tuple, NULL);
+  if (unlikely(!__pyx_cur_scope)) {
+    __pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream *)Py_None);
+    __Pyx_INCREF(Py_None);
+    __PYX_ERR(34, 395, __pyx_L1_error)
+  } else {
+    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+  }
+  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
+  __pyx_cur_scope->__pyx_v_request = __pyx_v_request;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_request);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_request);
+  __pyx_cur_scope->__pyx_v_outbound_initial_metadata = __pyx_v_outbound_initial_metadata;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_outbound_initial_metadata);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_outbound_initial_metadata);
+  __pyx_cur_scope->__pyx_v_context = __pyx_v_context;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_context);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_context);
+  {
+    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7_cython_6cygrpc_8_AioCall_49generator15, __pyx_codeobj__66, (PyObject *) __pyx_cur_scope, __pyx_n_s_initiate_unary_stream, __pyx_n_s_AioCall_initiate_unary_stream, __pyx_n_s_cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(34, 395, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_cur_scope);
+    __Pyx_RefNannyFinishContext();
+    return (PyObject *) gen;
+  }
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc._AioCall.initiate_unary_stream", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_gb_7_cython_6cygrpc_8_AioCall_49generator15(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
+{
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream *__pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream *)__pyx_generator->closure);
+  PyObject *__pyx_r = NULL;
+  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_t_7;
+  PyObject *__pyx_t_8 = NULL;
+  PyObject *__pyx_t_9 = NULL;
+  PyObject *__pyx_t_10 = NULL;
+  int __pyx_t_11;
+  int __pyx_t_12;
+  char const *__pyx_t_13;
+  PyObject *__pyx_t_14 = NULL;
+  PyObject *__pyx_t_15 = NULL;
+  PyObject *__pyx_t_16 = NULL;
+  PyObject *__pyx_t_17 = NULL;
+  PyObject *__pyx_t_18 = NULL;
+  PyObject *__pyx_t_19 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("initiate_unary_stream", 0);
+  switch (__pyx_generator->resume_label) {
+    case 0: goto __pyx_L3_first_run;
+    case 1: goto __pyx_L11_resume_from_await;
+    case 2: goto __pyx_L12_resume_from_await;
+    case 3: goto __pyx_L20_resume_from_await;
+    default: /* CPython raises the right error here */
+    __Pyx_RefNannyFinishContext();
+    return NULL;
+  }
+  __pyx_L3_first_run:;
+  if (unlikely(!__pyx_sent_value)) __PYX_ERR(34, 395, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":402
+ *         # Peer may prematurely end this RPC at any point. We need a corutine
+ *         # that watches if the server sends the final status.
+ *         status_task = self._loop.create_task(self._handle_status_once_received())             # <<<<<<<<<<<<<<
+ * 
+ *         cdef tuple outbound_ops
+ */
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self->_loop, __pyx_n_s_create_task); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 402, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_handle_status_once_received); if (unlikely(!__pyx_t_4)) __PYX_ERR(34, 402, __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, NULL};
+    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
+    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 402, __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[2] = {__pyx_t_4, __pyx_t_3};
+    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_6, 1+__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(34, 402, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  }
+  __Pyx_GIVEREF(__pyx_t_1);
+  __pyx_cur_scope->__pyx_v_status_task = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":407
+ *         cdef Operation initial_metadata_op = SendInitialMetadataOperation(
+ *             outbound_initial_metadata,
+ *             self._send_initial_metadata_flags)             # <<<<<<<<<<<<<<
+ *         cdef Operation send_message_op = SendMessageOperation(
+ *             request,
+ */
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_cur_scope->__pyx_v_self->_send_initial_metadata_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 407, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":405
+ * 
+ *         cdef tuple outbound_ops
+ *         cdef Operation initial_metadata_op = SendInitialMetadataOperation(             # <<<<<<<<<<<<<<
+ *             outbound_initial_metadata,
+ *             self._send_initial_metadata_flags)
+ */
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 405, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_outbound_initial_metadata);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_outbound_initial_metadata);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_cur_scope->__pyx_v_outbound_initial_metadata)) __PYX_ERR(34, 405, __pyx_L1_error);
+  __Pyx_GIVEREF(__pyx_t_1);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1)) __PYX_ERR(34, 405, __pyx_L1_error);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_7_cython_6cygrpc_SendInitialMetadataOperation), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 405, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_GIVEREF(__pyx_t_1);
+  __pyx_cur_scope->__pyx_v_initial_metadata_op = ((struct __pyx_obj_7_cython_6cygrpc_Operation *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":410
+ *         cdef Operation send_message_op = SendMessageOperation(
+ *             request,
+ *             _EMPTY_FLAGS)             # <<<<<<<<<<<<<<
+ *         cdef Operation send_close_op = SendCloseFromClientOperation(
+ *             _EMPTY_FLAGS)
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_EMPTY_FLAGS); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 410, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":408
+ *             outbound_initial_metadata,
+ *             self._send_initial_metadata_flags)
+ *         cdef Operation send_message_op = SendMessageOperation(             # <<<<<<<<<<<<<<
+ *             request,
+ *             _EMPTY_FLAGS)
+ */
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 408, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_request);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_request);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_cur_scope->__pyx_v_request)) __PYX_ERR(34, 408, __pyx_L1_error);
+  __Pyx_GIVEREF(__pyx_t_1);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1)) __PYX_ERR(34, 408, __pyx_L1_error);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_7_cython_6cygrpc_SendMessageOperation), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 408, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_GIVEREF(__pyx_t_1);
+  __pyx_cur_scope->__pyx_v_send_message_op = ((struct __pyx_obj_7_cython_6cygrpc_Operation *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":412
+ *             _EMPTY_FLAGS)
+ *         cdef Operation send_close_op = SendCloseFromClientOperation(
+ *             _EMPTY_FLAGS)             # <<<<<<<<<<<<<<
+ * 
+ *         if context is not None:
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_EMPTY_FLAGS); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 412, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":411
+ *             request,
+ *             _EMPTY_FLAGS)
+ *         cdef Operation send_close_op = SendCloseFromClientOperation(             # <<<<<<<<<<<<<<
+ *             _EMPTY_FLAGS)
+ * 
+ */
+  __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_7_cython_6cygrpc_SendCloseFromClientOperation), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 411, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_GIVEREF(__pyx_t_2);
+  __pyx_cur_scope->__pyx_v_send_close_op = ((struct __pyx_obj_7_cython_6cygrpc_Operation *)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":414
+ *             _EMPTY_FLAGS)
+ * 
+ *         if context is not None:             # <<<<<<<<<<<<<<
+ *             set_instrumentation_context_on_call_aio(self, context)
+ *         outbound_ops = (
+ */
+  __pyx_t_7 = (__pyx_cur_scope->__pyx_v_context != Py_None);
+  if (__pyx_t_7) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":415
+ * 
+ *         if context is not None:
+ *             set_instrumentation_context_on_call_aio(self, context)             # <<<<<<<<<<<<<<
+ *         outbound_ops = (
+ *             initial_metadata_op,
+ */
+    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_set_instrumentation_context_on_c); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 415, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_3 = NULL;
+    __pyx_t_6 = 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_6 = 1;
+      }
+    }
+    #endif
+    {
+      PyObject *__pyx_callargs[3] = {__pyx_t_3, ((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_cur_scope->__pyx_v_context};
+      __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;
+      if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 415, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":414
+ *             _EMPTY_FLAGS)
+ * 
+ *         if context is not None:             # <<<<<<<<<<<<<<
+ *             set_instrumentation_context_on_call_aio(self, context)
+ *         outbound_ops = (
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":417
+ *             set_instrumentation_context_on_call_aio(self, context)
+ *         outbound_ops = (
+ *             initial_metadata_op,             # <<<<<<<<<<<<<<
+ *             send_message_op,
+ *             send_close_op,
+ */
+  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 417, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_initial_metadata_op);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_initial_metadata_op);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_initial_metadata_op))) __PYX_ERR(34, 417, __pyx_L1_error);
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_send_message_op);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_send_message_op);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_cur_scope->__pyx_v_send_message_op))) __PYX_ERR(34, 417, __pyx_L1_error);
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_send_close_op);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_send_close_op);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 2, ((PyObject *)__pyx_cur_scope->__pyx_v_send_close_op))) __PYX_ERR(34, 417, __pyx_L1_error);
+  __Pyx_GIVEREF(__pyx_t_2);
+  __pyx_cur_scope->__pyx_v_outbound_ops = ((PyObject*)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":422
+ *         )
+ * 
+ *         try:             # <<<<<<<<<<<<<<
+ *             # Sends out the request message.
+ *             await execute_batch(self,
+ */
+  {
+    __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+    __Pyx_XGOTREF(__pyx_t_8);
+    __Pyx_XGOTREF(__pyx_t_9);
+    __Pyx_XGOTREF(__pyx_t_10);
+    /*try:*/ {
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":424
+ *         try:
+ *             # Sends out the request message.
+ *             await execute_batch(self,             # <<<<<<<<<<<<<<
+ *                                 outbound_ops,
+ *                                 self._loop)
+ */
+      __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_execute_batch); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 424, __pyx_L5_error)
+      __Pyx_GOTREF(__pyx_t_1);
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":426
+ *             await execute_batch(self,
+ *                                 outbound_ops,
+ *                                 self._loop)             # <<<<<<<<<<<<<<
+ * 
+ *             # Receives initial metadata.
+ */
+      __pyx_t_3 = NULL;
+      __pyx_t_6 = 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_6 = 1;
+        }
+      }
+      #endif
+      {
+        PyObject *__pyx_callargs[4] = {__pyx_t_3, ((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_cur_scope->__pyx_v_outbound_ops, __pyx_cur_scope->__pyx_v_self->_loop};
+        __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_6, 3+__pyx_t_6);
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 424, __pyx_L5_error)
+        __Pyx_GOTREF(__pyx_t_2);
+        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      }
+      __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_2);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_XGOTREF(__pyx_r);
+      if (likely(__pyx_r)) {
+        __Pyx_XGIVEREF(__pyx_t_8);
+        __pyx_cur_scope->__pyx_t_0 = __pyx_t_8;
+        __Pyx_XGIVEREF(__pyx_t_9);
+        __pyx_cur_scope->__pyx_t_1 = __pyx_t_9;
+        __Pyx_XGIVEREF(__pyx_t_10);
+        __pyx_cur_scope->__pyx_t_2 = __pyx_t_10;
+        __Pyx_XGIVEREF(__pyx_r);
+        __Pyx_RefNannyFinishContext();
+        __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+        /* return from generator, awaiting value */
+        __pyx_generator->resume_label = 1;
+        return __pyx_r;
+        __pyx_L11_resume_from_await:;
+        __pyx_t_8 = __pyx_cur_scope->__pyx_t_0;
+        __pyx_cur_scope->__pyx_t_0 = 0;
+        __Pyx_XGOTREF(__pyx_t_8);
+        __pyx_t_9 = __pyx_cur_scope->__pyx_t_1;
+        __pyx_cur_scope->__pyx_t_1 = 0;
+        __Pyx_XGOTREF(__pyx_t_9);
+        __pyx_t_10 = __pyx_cur_scope->__pyx_t_2;
+        __pyx_cur_scope->__pyx_t_2 = 0;
+        __Pyx_XGOTREF(__pyx_t_10);
+        if (unlikely(!__pyx_sent_value)) __PYX_ERR(34, 424, __pyx_L5_error)
+      } else {
+        PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType();
+        if (exc_type) {
+          if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
+          else __PYX_ERR(34, 424, __pyx_L5_error)
+        }
+      }
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":430
+ *             # Receives initial metadata.
+ *             self._set_initial_metadata(
+ *                 await _receive_initial_metadata(self,             # <<<<<<<<<<<<<<
+ *                                                 self._loop),
+ *             )
+ */
+      __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_receive_initial_metadata); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 430, __pyx_L5_error)
+      __Pyx_GOTREF(__pyx_t_1);
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":431
+ *             self._set_initial_metadata(
+ *                 await _receive_initial_metadata(self,
+ *                                                 self._loop),             # <<<<<<<<<<<<<<
+ *             )
+ *         except ExecuteBatchError as batch_error:
+ */
+      __pyx_t_3 = NULL;
+      __pyx_t_6 = 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_6 = 1;
+        }
+      }
+      #endif
+      {
+        PyObject *__pyx_callargs[3] = {__pyx_t_3, ((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_cur_scope->__pyx_v_self->_loop};
+        __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;
+        if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 430, __pyx_L5_error)
+        __Pyx_GOTREF(__pyx_t_2);
+        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      }
+      __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_2);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_XGOTREF(__pyx_r);
+      if (likely(__pyx_r)) {
+        __Pyx_XGIVEREF(__pyx_t_8);
+        __pyx_cur_scope->__pyx_t_0 = __pyx_t_8;
+        __Pyx_XGIVEREF(__pyx_t_9);
+        __pyx_cur_scope->__pyx_t_1 = __pyx_t_9;
+        __Pyx_XGIVEREF(__pyx_t_10);
+        __pyx_cur_scope->__pyx_t_2 = __pyx_t_10;
+        __Pyx_XGIVEREF(__pyx_r);
+        __Pyx_RefNannyFinishContext();
+        __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+        /* return from generator, awaiting value */
+        __pyx_generator->resume_label = 2;
+        return __pyx_r;
+        __pyx_L12_resume_from_await:;
+        __pyx_t_8 = __pyx_cur_scope->__pyx_t_0;
+        __pyx_cur_scope->__pyx_t_0 = 0;
+        __Pyx_XGOTREF(__pyx_t_8);
+        __pyx_t_9 = __pyx_cur_scope->__pyx_t_1;
+        __pyx_cur_scope->__pyx_t_1 = 0;
+        __Pyx_XGOTREF(__pyx_t_9);
+        __pyx_t_10 = __pyx_cur_scope->__pyx_t_2;
+        __pyx_cur_scope->__pyx_t_2 = 0;
+        __Pyx_XGOTREF(__pyx_t_10);
+        if (unlikely(!__pyx_sent_value)) __PYX_ERR(34, 430, __pyx_L5_error)
+        __pyx_t_2 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_2);
+      } else {
+        __pyx_t_2 = NULL;
+        if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_2) < 0) __PYX_ERR(34, 430, __pyx_L5_error)
+        __Pyx_GOTREF(__pyx_t_2);
+      }
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":430
+ *             # Receives initial metadata.
+ *             self._set_initial_metadata(
+ *                 await _receive_initial_metadata(self,             # <<<<<<<<<<<<<<
+ *                                                 self._loop),
+ *             )
+ */
+      if (!(likely(PyTuple_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_t_2))) __PYX_ERR(34, 430, __pyx_L5_error)
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":429
+ * 
+ *             # Receives initial metadata.
+ *             self._set_initial_metadata(             # <<<<<<<<<<<<<<
+ *                 await _receive_initial_metadata(self,
+ *                                                 self._loop),
+ */
+      ((struct __pyx_vtabstruct_7_cython_6cygrpc__AioCall *)__pyx_cur_scope->__pyx_v_self->__pyx_vtab)->_set_initial_metadata(__pyx_cur_scope->__pyx_v_self, ((PyObject*)__pyx_t_2)); if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 429, __pyx_L5_error)
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":422
+ *         )
+ * 
+ *         try:             # <<<<<<<<<<<<<<
+ *             # Sends out the request message.
+ *             await execute_batch(self,
+ */
+    }
+    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+    __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+    goto __pyx_L10_try_end;
+    __pyx_L5_error:;
+    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":433
+ *                                                 self._loop),
+ *             )
+ *         except ExecuteBatchError as batch_error:             # <<<<<<<<<<<<<<
+ *             # Core should explain why this batch failed
+ *             await status_task
+ */
+    __Pyx_ErrFetch(&__pyx_t_2, &__pyx_t_1, &__pyx_t_3);
+    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_ExecuteBatchError); if (unlikely(!__pyx_t_4)) __PYX_ERR(34, 433, __pyx_L7_except_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_11 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_2, __pyx_t_4);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_ErrRestore(__pyx_t_2, __pyx_t_1, __pyx_t_3);
+    __pyx_t_2 = 0; __pyx_t_1 = 0; __pyx_t_3 = 0;
+    if (__pyx_t_11) {
+      __Pyx_AddTraceback("_cython.cygrpc._AioCall.initiate_unary_stream", __pyx_clineno, __pyx_lineno, __pyx_filename);
+      if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_1, &__pyx_t_2) < 0) __PYX_ERR(34, 433, __pyx_L7_except_error)
+      __Pyx_XGOTREF(__pyx_t_3);
+      __Pyx_XGOTREF(__pyx_t_1);
+      __Pyx_XGOTREF(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_1);
+      __Pyx_GIVEREF(__pyx_t_1);
+      __pyx_cur_scope->__pyx_v_batch_error = __pyx_t_1;
+      /*try:*/ {
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":435
+ *         except ExecuteBatchError as batch_error:
+ *             # Core should explain why this batch failed
+ *             await status_task             # <<<<<<<<<<<<<<
+ * 
+ *     async def stream_unary(self,
+ */
+        __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_cur_scope->__pyx_v_status_task);
+        __Pyx_XGOTREF(__pyx_r);
+        if (likely(__pyx_r)) {
+          __Pyx_XGIVEREF(__pyx_t_1);
+          __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
+          __Pyx_XGIVEREF(__pyx_t_2);
+          __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
+          __Pyx_XGIVEREF(__pyx_t_3);
+          __pyx_cur_scope->__pyx_t_2 = __pyx_t_3;
+          __Pyx_XGIVEREF(__pyx_t_8);
+          __pyx_cur_scope->__pyx_t_3 = __pyx_t_8;
+          __Pyx_XGIVEREF(__pyx_t_9);
+          __pyx_cur_scope->__pyx_t_4 = __pyx_t_9;
+          __Pyx_XGIVEREF(__pyx_t_10);
+          __pyx_cur_scope->__pyx_t_5 = __pyx_t_10;
+          __Pyx_XGIVEREF(__pyx_r);
+          __Pyx_RefNannyFinishContext();
+          __Pyx_Coroutine_SwapException(__pyx_generator);
+          /* return from generator, awaiting value */
+          __pyx_generator->resume_label = 3;
+          return __pyx_r;
+          __pyx_L20_resume_from_await:;
+          __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
+          __pyx_cur_scope->__pyx_t_0 = 0;
+          __Pyx_XGOTREF(__pyx_t_1);
+          __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
+          __pyx_cur_scope->__pyx_t_1 = 0;
+          __Pyx_XGOTREF(__pyx_t_2);
+          __pyx_t_3 = __pyx_cur_scope->__pyx_t_2;
+          __pyx_cur_scope->__pyx_t_2 = 0;
+          __Pyx_XGOTREF(__pyx_t_3);
+          __pyx_t_8 = __pyx_cur_scope->__pyx_t_3;
+          __pyx_cur_scope->__pyx_t_3 = 0;
+          __Pyx_XGOTREF(__pyx_t_8);
+          __pyx_t_9 = __pyx_cur_scope->__pyx_t_4;
+          __pyx_cur_scope->__pyx_t_4 = 0;
+          __Pyx_XGOTREF(__pyx_t_9);
+          __pyx_t_10 = __pyx_cur_scope->__pyx_t_5;
+          __pyx_cur_scope->__pyx_t_5 = 0;
+          __Pyx_XGOTREF(__pyx_t_10);
+          if (unlikely(!__pyx_sent_value)) __PYX_ERR(34, 435, __pyx_L18_error)
+        } else {
+          PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType();
+          if (exc_type) {
+            if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
+            else __PYX_ERR(34, 435, __pyx_L18_error)
+          }
+        }
+      }
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":433
+ *                                                 self._loop),
+ *             )
+ *         except ExecuteBatchError as batch_error:             # <<<<<<<<<<<<<<
+ *             # Core should explain why this batch failed
+ *             await status_task
+ */
+      /*finally:*/ {
+        /*normal exit:*/{
+          __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_batch_error);
+          __Pyx_DECREF(__pyx_cur_scope->__pyx_v_batch_error); __pyx_cur_scope->__pyx_v_batch_error = 0;
+          goto __pyx_L19;
+        }
+        __pyx_L18_error:;
+        /*exception exit:*/{
+          __Pyx_PyThreadState_assign
+          __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0;
+          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+          if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
+          if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16) < 0)) __Pyx_ErrFetch(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16);
+          __Pyx_XGOTREF(__pyx_t_14);
+          __Pyx_XGOTREF(__pyx_t_15);
+          __Pyx_XGOTREF(__pyx_t_16);
+          __Pyx_XGOTREF(__pyx_t_17);
+          __Pyx_XGOTREF(__pyx_t_18);
+          __Pyx_XGOTREF(__pyx_t_19);
+          __pyx_t_11 = __pyx_lineno; __pyx_t_12 = __pyx_clineno; __pyx_t_13 = __pyx_filename;
+          {
+            __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_batch_error);
+            __Pyx_DECREF(__pyx_cur_scope->__pyx_v_batch_error); __pyx_cur_scope->__pyx_v_batch_error = 0;
+          }
+          if (PY_MAJOR_VERSION >= 3) {
+            __Pyx_XGIVEREF(__pyx_t_17);
+            __Pyx_XGIVEREF(__pyx_t_18);
+            __Pyx_XGIVEREF(__pyx_t_19);
+            __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19);
+          }
+          __Pyx_XGIVEREF(__pyx_t_14);
+          __Pyx_XGIVEREF(__pyx_t_15);
+          __Pyx_XGIVEREF(__pyx_t_16);
+          __Pyx_ErrRestore(__pyx_t_14, __pyx_t_15, __pyx_t_16);
+          __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0;
+          __pyx_lineno = __pyx_t_11; __pyx_clineno = __pyx_t_12; __pyx_filename = __pyx_t_13;
+          goto __pyx_L7_except_error;
+        }
+        __pyx_L19:;
+      }
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+      goto __pyx_L6_exception_handled;
+    }
+    goto __pyx_L7_except_error;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":422
+ *         )
+ * 
+ *         try:             # <<<<<<<<<<<<<<
+ *             # Sends out the request message.
+ *             await execute_batch(self,
+ */
+    __pyx_L7_except_error:;
+    __Pyx_XGIVEREF(__pyx_t_8);
+    __Pyx_XGIVEREF(__pyx_t_9);
+    __Pyx_XGIVEREF(__pyx_t_10);
+    __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+    goto __pyx_L1_error;
+    __pyx_L6_exception_handled:;
+    __Pyx_XGIVEREF(__pyx_t_8);
+    __Pyx_XGIVEREF(__pyx_t_9);
+    __Pyx_XGIVEREF(__pyx_t_10);
+    __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+    __pyx_L10_try_end:;
+  }
+  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":395
+ *         await execute_batch(self, ops, self._loop)
+ * 
+ *     async def initiate_unary_stream(self,             # <<<<<<<<<<<<<<
+ *                            bytes request,
+ *                            tuple outbound_initial_metadata,
+ */
+
+  /* function exit code */
+  PyErr_SetNone(PyExc_StopIteration);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_Generator_Replace_StopIteration(0);
+  __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("initiate_unary_stream", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
+  #if !CYTHON_USE_EXC_INFO_STACK
+  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+  #endif
+  __pyx_generator->resume_label = -1;
+  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+static PyObject *__pyx_gb_7_cython_6cygrpc_8_AioCall_52generator16(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":437
+ *             await status_task
+ * 
+ *     async def stream_unary(self,             # <<<<<<<<<<<<<<
+ *                            tuple outbound_initial_metadata,
+ *                            object metadata_sent_observer,
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_8_AioCall_51stream_unary(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+PyDoc_STRVAR(__pyx_doc_7_cython_6cygrpc_8_AioCall_50stream_unary, "Actual implementation of the complete unary-stream call.\n\n        Needs to pay extra attention to the raise mechanism. If we want to\n        propagate the final status exception, then we have to raise it.\n        Othersize, it would end normally and raise `StopAsyncIteration()`.\n        ");
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_8_AioCall_51stream_unary = {"stream_unary", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_8_AioCall_51stream_unary, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7_cython_6cygrpc_8_AioCall_50stream_unary};
+static PyObject *__pyx_pw_7_cython_6cygrpc_8_AioCall_51stream_unary(PyObject *__pyx_v_self, 
+#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_outbound_initial_metadata = 0;
+  PyObject *__pyx_v_metadata_sent_observer = 0;
+  PyObject *__pyx_v_context = 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("stream_unary (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_outbound_initial_metadata,&__pyx_n_s_metadata_sent_observer,&__pyx_n_s_context,0};
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":440
+ *                            tuple outbound_initial_metadata,
+ *                            object metadata_sent_observer,
+ *                            object context = None):             # <<<<<<<<<<<<<<
+ *         """Actual implementation of the complete unary-stream call.
+ * 
+ */
+    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
+    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_outbound_initial_metadata)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 437, __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_metadata_sent_observer)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 437, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("stream_unary", 0, 2, 3, 1); __PYX_ERR(34, 437, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (kw_args > 0) {
+          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_context);
+          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
+          else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 437, __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, "stream_unary") < 0)) __PYX_ERR(34, 437, __pyx_L3_error)
+      }
+    } else {
+      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);
+        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+        break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_outbound_initial_metadata = ((PyObject*)values[0]);
+    __pyx_v_metadata_sent_observer = values[1];
+    __pyx_v_context = values[2];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("stream_unary", 0, 2, 3, __pyx_nargs); __PYX_ERR(34, 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("_cython.cygrpc._AioCall.stream_unary", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_outbound_initial_metadata), (&PyTuple_Type), 1, "outbound_initial_metadata", 1))) __PYX_ERR(34, 438, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_8_AioCall_50stream_unary(((struct __pyx_obj_7_cython_6cygrpc__AioCall *)__pyx_v_self), __pyx_v_outbound_initial_metadata, __pyx_v_metadata_sent_observer, __pyx_v_context);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":437
+ *             await status_task
+ * 
+ *     async def stream_unary(self,             # <<<<<<<<<<<<<<
+ *                            tuple outbound_initial_metadata,
+ *                            object metadata_sent_observer,
+ */
+
+  /* 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_7_cython_6cygrpc_8_AioCall_50stream_unary(struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self, PyObject *__pyx_v_outbound_initial_metadata, PyObject *__pyx_v_metadata_sent_observer, PyObject *__pyx_v_context) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary *__pyx_cur_scope;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("stream_unary", 0);
+  __pyx_cur_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary, __pyx_empty_tuple, NULL);
+  if (unlikely(!__pyx_cur_scope)) {
+    __pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary *)Py_None);
+    __Pyx_INCREF(Py_None);
+    __PYX_ERR(34, 437, __pyx_L1_error)
+  } else {
+    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+  }
+  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
+  __pyx_cur_scope->__pyx_v_outbound_initial_metadata = __pyx_v_outbound_initial_metadata;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_outbound_initial_metadata);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_outbound_initial_metadata);
+  __pyx_cur_scope->__pyx_v_metadata_sent_observer = __pyx_v_metadata_sent_observer;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_metadata_sent_observer);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_metadata_sent_observer);
+  __pyx_cur_scope->__pyx_v_context = __pyx_v_context;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_context);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_context);
+  {
+    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7_cython_6cygrpc_8_AioCall_52generator16, __pyx_codeobj__67, (PyObject *) __pyx_cur_scope, __pyx_n_s_stream_unary, __pyx_n_s_AioCall_stream_unary, __pyx_n_s_cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(34, 437, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_cur_scope);
+    __Pyx_RefNannyFinishContext();
+    return (PyObject *) gen;
+  }
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc._AioCall.stream_unary", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_gb_7_cython_6cygrpc_8_AioCall_52generator16(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
+{
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary *__pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary *)__pyx_generator->closure);
+  PyObject *__pyx_r = NULL;
+  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_t_9;
+  PyObject *__pyx_t_10 = NULL;
+  PyObject *__pyx_t_11 = NULL;
+  int __pyx_t_12;
+  grpc_status_code __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("stream_unary", 0);
+  switch (__pyx_generator->resume_label) {
+    case 0: goto __pyx_L3_first_run;
+    case 1: goto __pyx_L10_resume_from_await;
+    case 2: goto __pyx_L11_resume_from_await;
+    case 3: goto __pyx_L14_resume_from_await;
+    case 4: goto __pyx_L16_resume_from_await;
+    default: /* CPython raises the right error here */
+    __Pyx_RefNannyFinishContext();
+    return NULL;
+  }
+  __pyx_L3_first_run:;
+  if (unlikely(!__pyx_sent_value)) __PYX_ERR(34, 437, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":447
+ *         Othersize, it would end normally and raise `StopAsyncIteration()`.
+ *         """
+ *         try:             # <<<<<<<<<<<<<<
+ *             # Sends out initial_metadata ASAP.
+ *             await _send_initial_metadata(self,
+ */
+  {
+    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
+    __Pyx_XGOTREF(__pyx_t_1);
+    __Pyx_XGOTREF(__pyx_t_2);
+    __Pyx_XGOTREF(__pyx_t_3);
+    /*try:*/ {
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":449
+ *         try:
+ *             # Sends out initial_metadata ASAP.
+ *             await _send_initial_metadata(self,             # <<<<<<<<<<<<<<
+ *                                         outbound_initial_metadata,
+ *                                         self._send_initial_metadata_flags,
+ */
+      __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_send_initial_metadata); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 449, __pyx_L4_error)
+      __Pyx_GOTREF(__pyx_t_5);
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":451
+ *             await _send_initial_metadata(self,
+ *                                         outbound_initial_metadata,
+ *                                         self._send_initial_metadata_flags,             # <<<<<<<<<<<<<<
+ *                                         self._loop)
+ *             # Notify upper level that sending messages are allowed now.
+ */
+      __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_cur_scope->__pyx_v_self->_send_initial_metadata_flags); if (unlikely(!__pyx_t_6)) __PYX_ERR(34, 451, __pyx_L4_error)
+      __Pyx_GOTREF(__pyx_t_6);
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":452
+ *                                         outbound_initial_metadata,
+ *                                         self._send_initial_metadata_flags,
+ *                                         self._loop)             # <<<<<<<<<<<<<<
+ *             # Notify upper level that sending messages are allowed now.
+ *             metadata_sent_observer()
+ */
+      __pyx_t_7 = NULL;
+      __pyx_t_8 = 0;
+      #if CYTHON_UNPACK_METHODS
+      if (unlikely(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[5] = {__pyx_t_7, ((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_cur_scope->__pyx_v_outbound_initial_metadata, __pyx_t_6, __pyx_cur_scope->__pyx_v_self->_loop};
+        __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_8, 4+__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_4)) __PYX_ERR(34, 449, __pyx_L4_error)
+        __Pyx_GOTREF(__pyx_t_4);
+        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      }
+      __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_4);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_XGOTREF(__pyx_r);
+      if (likely(__pyx_r)) {
+        __Pyx_XGIVEREF(__pyx_t_1);
+        __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
+        __Pyx_XGIVEREF(__pyx_t_2);
+        __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
+        __Pyx_XGIVEREF(__pyx_t_3);
+        __pyx_cur_scope->__pyx_t_2 = __pyx_t_3;
+        __Pyx_XGIVEREF(__pyx_r);
+        __Pyx_RefNannyFinishContext();
+        __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+        /* return from generator, awaiting value */
+        __pyx_generator->resume_label = 1;
+        return __pyx_r;
+        __pyx_L10_resume_from_await:;
+        __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
+        __pyx_cur_scope->__pyx_t_0 = 0;
+        __Pyx_XGOTREF(__pyx_t_1);
+        __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
+        __pyx_cur_scope->__pyx_t_1 = 0;
+        __Pyx_XGOTREF(__pyx_t_2);
+        __pyx_t_3 = __pyx_cur_scope->__pyx_t_2;
+        __pyx_cur_scope->__pyx_t_2 = 0;
+        __Pyx_XGOTREF(__pyx_t_3);
+        if (unlikely(!__pyx_sent_value)) __PYX_ERR(34, 449, __pyx_L4_error)
+      } else {
+        PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType();
+        if (exc_type) {
+          if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
+          else __PYX_ERR(34, 449, __pyx_L4_error)
+        }
+      }
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":454
+ *                                         self._loop)
+ *             # Notify upper level that sending messages are allowed now.
+ *             metadata_sent_observer()             # <<<<<<<<<<<<<<
+ * 
+ *             # Receives initial metadata.
+ */
+      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_metadata_sent_observer);
+      __pyx_t_5 = __pyx_cur_scope->__pyx_v_metadata_sent_observer; __pyx_t_6 = NULL;
+      __pyx_t_8 = 0;
+      #if CYTHON_UNPACK_METHODS
+      if (unlikely(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, NULL};
+        __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_8, 0+__pyx_t_8);
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        if (unlikely(!__pyx_t_4)) __PYX_ERR(34, 454, __pyx_L4_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/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":458
+ *             # Receives initial metadata.
+ *             self._set_initial_metadata(
+ *                 await _receive_initial_metadata(self, self._loop)             # <<<<<<<<<<<<<<
+ *             )
+ *         except ExecuteBatchError:
+ */
+      __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_receive_initial_metadata); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 458, __pyx_L4_error)
+      __Pyx_GOTREF(__pyx_t_5);
+      __pyx_t_6 = NULL;
+      __pyx_t_8 = 0;
+      #if CYTHON_UNPACK_METHODS
+      if (unlikely(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[3] = {__pyx_t_6, ((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_cur_scope->__pyx_v_self->_loop};
+        __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_8, 2+__pyx_t_8);
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        if (unlikely(!__pyx_t_4)) __PYX_ERR(34, 458, __pyx_L4_error)
+        __Pyx_GOTREF(__pyx_t_4);
+        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      }
+      __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_4);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_XGOTREF(__pyx_r);
+      if (likely(__pyx_r)) {
+        __Pyx_XGIVEREF(__pyx_t_1);
+        __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
+        __Pyx_XGIVEREF(__pyx_t_2);
+        __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
+        __Pyx_XGIVEREF(__pyx_t_3);
+        __pyx_cur_scope->__pyx_t_2 = __pyx_t_3;
+        __Pyx_XGIVEREF(__pyx_r);
+        __Pyx_RefNannyFinishContext();
+        __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+        /* return from generator, awaiting value */
+        __pyx_generator->resume_label = 2;
+        return __pyx_r;
+        __pyx_L11_resume_from_await:;
+        __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
+        __pyx_cur_scope->__pyx_t_0 = 0;
+        __Pyx_XGOTREF(__pyx_t_1);
+        __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
+        __pyx_cur_scope->__pyx_t_1 = 0;
+        __Pyx_XGOTREF(__pyx_t_2);
+        __pyx_t_3 = __pyx_cur_scope->__pyx_t_2;
+        __pyx_cur_scope->__pyx_t_2 = 0;
+        __Pyx_XGOTREF(__pyx_t_3);
+        if (unlikely(!__pyx_sent_value)) __PYX_ERR(34, 458, __pyx_L4_error)
+        __pyx_t_4 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_4);
+      } else {
+        __pyx_t_4 = NULL;
+        if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_4) < 0) __PYX_ERR(34, 458, __pyx_L4_error)
+        __Pyx_GOTREF(__pyx_t_4);
+      }
+      if (!(likely(PyTuple_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_t_4))) __PYX_ERR(34, 458, __pyx_L4_error)
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":457
+ * 
+ *             # Receives initial metadata.
+ *             self._set_initial_metadata(             # <<<<<<<<<<<<<<
+ *                 await _receive_initial_metadata(self, self._loop)
+ *             )
+ */
+      ((struct __pyx_vtabstruct_7_cython_6cygrpc__AioCall *)__pyx_cur_scope->__pyx_v_self->__pyx_vtab)->_set_initial_metadata(__pyx_cur_scope->__pyx_v_self, ((PyObject*)__pyx_t_4)); if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 457, __pyx_L4_error)
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":447
+ *         Othersize, it would end normally and raise `StopAsyncIteration()`.
+ *         """
+ *         try:             # <<<<<<<<<<<<<<
+ *             # Sends out initial_metadata ASAP.
+ *             await _send_initial_metadata(self,
+ */
+    }
+    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    goto __pyx_L9_try_end;
+    __pyx_L4_error:;
+    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":460
+ *                 await _receive_initial_metadata(self, self._loop)
+ *             )
+ *         except ExecuteBatchError:             # <<<<<<<<<<<<<<
+ *             # Core should explain why this batch failed
+ *             await self._handle_status_once_received()
+ */
+    __Pyx_ErrFetch(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6);
+    __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_ExecuteBatchError); if (unlikely(!__pyx_t_7)) __PYX_ERR(34, 460, __pyx_L6_except_error)
+    __Pyx_GOTREF(__pyx_t_7);
+    __pyx_t_9 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_4, __pyx_t_7);
+    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    __Pyx_ErrRestore(__pyx_t_4, __pyx_t_5, __pyx_t_6);
+    __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_6 = 0;
+    if (__pyx_t_9) {
+      __Pyx_AddTraceback("_cython.cygrpc._AioCall.stream_unary", __pyx_clineno, __pyx_lineno, __pyx_filename);
+      if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_5, &__pyx_t_4) < 0) __PYX_ERR(34, 460, __pyx_L6_except_error)
+      __Pyx_XGOTREF(__pyx_t_6);
+      __Pyx_XGOTREF(__pyx_t_5);
+      __Pyx_XGOTREF(__pyx_t_4);
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":462
+ *         except ExecuteBatchError:
+ *             # Core should explain why this batch failed
+ *             await self._handle_status_once_received()             # <<<<<<<<<<<<<<
+ * 
+ *             # Allow upper layer to proceed only if the status is set
+ */
+      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_handle_status_once_received); if (unlikely(!__pyx_t_10)) __PYX_ERR(34, 462, __pyx_L6_except_error)
+      __Pyx_GOTREF(__pyx_t_10);
+      __pyx_t_11 = NULL;
+      __pyx_t_8 = 0;
+      #if CYTHON_UNPACK_METHODS
+      if (likely(PyMethod_Check(__pyx_t_10))) {
+        __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_10);
+        if (likely(__pyx_t_11)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
+          __Pyx_INCREF(__pyx_t_11);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_10, function);
+          __pyx_t_8 = 1;
+        }
+      }
+      #endif
+      {
+        PyObject *__pyx_callargs[2] = {__pyx_t_11, NULL};
+        __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_8, 0+__pyx_t_8);
+        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
+        if (unlikely(!__pyx_t_7)) __PYX_ERR(34, 462, __pyx_L6_except_error)
+        __Pyx_GOTREF(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+      }
+      __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_7);
+      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+      __Pyx_XGOTREF(__pyx_r);
+      if (likely(__pyx_r)) {
+        __Pyx_XGIVEREF(__pyx_t_1);
+        __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
+        __Pyx_XGIVEREF(__pyx_t_2);
+        __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
+        __Pyx_XGIVEREF(__pyx_t_3);
+        __pyx_cur_scope->__pyx_t_2 = __pyx_t_3;
+        __Pyx_XGIVEREF(__pyx_t_4);
+        __pyx_cur_scope->__pyx_t_3 = __pyx_t_4;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __pyx_cur_scope->__pyx_t_4 = __pyx_t_5;
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __pyx_cur_scope->__pyx_t_5 = __pyx_t_6;
+        __Pyx_XGIVEREF(__pyx_r);
+        __Pyx_RefNannyFinishContext();
+        __Pyx_Coroutine_SwapException(__pyx_generator);
+        /* return from generator, awaiting value */
+        __pyx_generator->resume_label = 3;
+        return __pyx_r;
+        __pyx_L14_resume_from_await:;
+        __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
+        __pyx_cur_scope->__pyx_t_0 = 0;
+        __Pyx_XGOTREF(__pyx_t_1);
+        __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
+        __pyx_cur_scope->__pyx_t_1 = 0;
+        __Pyx_XGOTREF(__pyx_t_2);
+        __pyx_t_3 = __pyx_cur_scope->__pyx_t_2;
+        __pyx_cur_scope->__pyx_t_2 = 0;
+        __Pyx_XGOTREF(__pyx_t_3);
+        __pyx_t_4 = __pyx_cur_scope->__pyx_t_3;
+        __pyx_cur_scope->__pyx_t_3 = 0;
+        __Pyx_XGOTREF(__pyx_t_4);
+        __pyx_t_5 = __pyx_cur_scope->__pyx_t_4;
+        __pyx_cur_scope->__pyx_t_4 = 0;
+        __Pyx_XGOTREF(__pyx_t_5);
+        __pyx_t_6 = __pyx_cur_scope->__pyx_t_5;
+        __pyx_cur_scope->__pyx_t_5 = 0;
+        __Pyx_XGOTREF(__pyx_t_6);
+        if (unlikely(!__pyx_sent_value)) __PYX_ERR(34, 462, __pyx_L6_except_error)
+      } else {
+        PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType();
+        if (exc_type) {
+          if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
+          else __PYX_ERR(34, 462, __pyx_L6_except_error)
+        }
+      }
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":465
+ * 
+ *             # Allow upper layer to proceed only if the status is set
+ *             metadata_sent_observer()             # <<<<<<<<<<<<<<
+ *             return None
+ * 
+ */
+      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_metadata_sent_observer);
+      __pyx_t_10 = __pyx_cur_scope->__pyx_v_metadata_sent_observer; __pyx_t_11 = NULL;
+      __pyx_t_8 = 0;
+      #if CYTHON_UNPACK_METHODS
+      if (unlikely(PyMethod_Check(__pyx_t_10))) {
+        __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_10);
+        if (likely(__pyx_t_11)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
+          __Pyx_INCREF(__pyx_t_11);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_10, function);
+          __pyx_t_8 = 1;
+        }
+      }
+      #endif
+      {
+        PyObject *__pyx_callargs[2] = {__pyx_t_11, NULL};
+        __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_8, 0+__pyx_t_8);
+        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
+        if (unlikely(!__pyx_t_7)) __PYX_ERR(34, 465, __pyx_L6_except_error)
+        __Pyx_GOTREF(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+      }
+      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":466
+ *             # Allow upper layer to proceed only if the status is set
+ *             metadata_sent_observer()
+ *             return None             # <<<<<<<<<<<<<<
+ * 
+ *         cdef tuple inbound_ops
+ */
+      __Pyx_XDECREF(__pyx_r);
+      __pyx_r = NULL;
+      __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;
+      goto __pyx_L7_except_return;
+    }
+    goto __pyx_L6_except_error;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":447
+ *         Othersize, it would end normally and raise `StopAsyncIteration()`.
+ *         """
+ *         try:             # <<<<<<<<<<<<<<
+ *             # Sends out initial_metadata ASAP.
+ *             await _send_initial_metadata(self,
+ */
+    __pyx_L6_except_error:;
+    __Pyx_XGIVEREF(__pyx_t_1);
+    __Pyx_XGIVEREF(__pyx_t_2);
+    __Pyx_XGIVEREF(__pyx_t_3);
+    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+    goto __pyx_L1_error;
+    __pyx_L7_except_return:;
+    __Pyx_XGIVEREF(__pyx_t_1);
+    __Pyx_XGIVEREF(__pyx_t_2);
+    __Pyx_XGIVEREF(__pyx_t_3);
+    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+    goto __pyx_L0;
+    __pyx_L9_try_end:;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":469
+ * 
+ *         cdef tuple inbound_ops
+ *         cdef ReceiveMessageOperation receive_message_op = ReceiveMessageOperation(_EMPTY_FLAGS)             # <<<<<<<<<<<<<<
+ *         cdef ReceiveStatusOnClientOperation receive_status_on_client_op = ReceiveStatusOnClientOperation(_EMPTY_FLAGS)
+ * 
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_EMPTY_FLAGS); if (unlikely(!__pyx_t_4)) __PYX_ERR(34, 469, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_7_cython_6cygrpc_ReceiveMessageOperation), __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 469, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __Pyx_GIVEREF(__pyx_t_5);
+  __pyx_cur_scope->__pyx_v_receive_message_op = ((struct __pyx_obj_7_cython_6cygrpc_ReceiveMessageOperation *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":470
+ *         cdef tuple inbound_ops
+ *         cdef ReceiveMessageOperation receive_message_op = ReceiveMessageOperation(_EMPTY_FLAGS)
+ *         cdef ReceiveStatusOnClientOperation receive_status_on_client_op = ReceiveStatusOnClientOperation(_EMPTY_FLAGS)             # <<<<<<<<<<<<<<
+ * 
+ *         if context is not None:
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_EMPTY_FLAGS); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 470, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_4 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_7_cython_6cygrpc_ReceiveStatusOnClientOperation), __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(34, 470, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __Pyx_GIVEREF(__pyx_t_4);
+  __pyx_cur_scope->__pyx_v_receive_status_on_client_op = ((struct __pyx_obj_7_cython_6cygrpc_ReceiveStatusOnClientOperation *)__pyx_t_4);
+  __pyx_t_4 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":472
+ *         cdef ReceiveStatusOnClientOperation receive_status_on_client_op = ReceiveStatusOnClientOperation(_EMPTY_FLAGS)
+ * 
+ *         if context is not None:             # <<<<<<<<<<<<<<
+ *             set_instrumentation_context_on_call_aio(self, context)
+ *         inbound_ops = (receive_message_op, receive_status_on_client_op)
+ */
+  __pyx_t_12 = (__pyx_cur_scope->__pyx_v_context != Py_None);
+  if (__pyx_t_12) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":473
+ * 
+ *         if context is not None:
+ *             set_instrumentation_context_on_call_aio(self, context)             # <<<<<<<<<<<<<<
+ *         inbound_ops = (receive_message_op, receive_status_on_client_op)
+ * 
+ */
+    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_set_instrumentation_context_on_c); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 473, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_6 = NULL;
+    __pyx_t_8 = 0;
+    #if CYTHON_UNPACK_METHODS
+    if (unlikely(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[3] = {__pyx_t_6, ((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_cur_scope->__pyx_v_context};
+      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_8, 2+__pyx_t_8);
+      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+      if (unlikely(!__pyx_t_4)) __PYX_ERR(34, 473, __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/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":472
+ *         cdef ReceiveStatusOnClientOperation receive_status_on_client_op = ReceiveStatusOnClientOperation(_EMPTY_FLAGS)
+ * 
+ *         if context is not None:             # <<<<<<<<<<<<<<
+ *             set_instrumentation_context_on_call_aio(self, context)
+ *         inbound_ops = (receive_message_op, receive_status_on_client_op)
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":474
+ *         if context is not None:
+ *             set_instrumentation_context_on_call_aio(self, context)
+ *         inbound_ops = (receive_message_op, receive_status_on_client_op)             # <<<<<<<<<<<<<<
+ * 
+ *         # Executes all operations in one batch.
+ */
+  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(34, 474, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_receive_message_op);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_receive_message_op);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_receive_message_op))) __PYX_ERR(34, 474, __pyx_L1_error);
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_receive_status_on_client_op);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_receive_status_on_client_op);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, ((PyObject *)__pyx_cur_scope->__pyx_v_receive_status_on_client_op))) __PYX_ERR(34, 474, __pyx_L1_error);
+  __Pyx_GIVEREF(__pyx_t_4);
+  __pyx_cur_scope->__pyx_v_inbound_ops = ((PyObject*)__pyx_t_4);
+  __pyx_t_4 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":477
+ * 
+ *         # Executes all operations in one batch.
+ *         await execute_batch(self,             # <<<<<<<<<<<<<<
+ *                             inbound_ops,
+ *                             self._loop)
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_execute_batch); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 477, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":479
+ *         await execute_batch(self,
+ *                             inbound_ops,
+ *                             self._loop)             # <<<<<<<<<<<<<<
+ * 
+ *         cdef grpc_status_code code
+ */
+  __pyx_t_6 = NULL;
+  __pyx_t_8 = 0;
+  #if CYTHON_UNPACK_METHODS
+  if (unlikely(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[4] = {__pyx_t_6, ((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_cur_scope->__pyx_v_inbound_ops, __pyx_cur_scope->__pyx_v_self->_loop};
+    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_8, 3+__pyx_t_8);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(34, 477, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  }
+  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_4);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __Pyx_XGOTREF(__pyx_r);
+  if (likely(__pyx_r)) {
+    __Pyx_XGIVEREF(__pyx_r);
+    __Pyx_RefNannyFinishContext();
+    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+    /* return from generator, awaiting value */
+    __pyx_generator->resume_label = 4;
+    return __pyx_r;
+    __pyx_L16_resume_from_await:;
+    if (unlikely(!__pyx_sent_value)) __PYX_ERR(34, 477, __pyx_L1_error)
+  } else {
+    PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType();
+    if (exc_type) {
+      if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
+      else __PYX_ERR(34, 477, __pyx_L1_error)
+    }
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":482
+ * 
+ *         cdef grpc_status_code code
+ *         code = receive_status_on_client_op.code()             # <<<<<<<<<<<<<<
+ * 
+ *         self._set_status(AioRpcStatus(
+ */
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_receive_status_on_client_op), __pyx_n_s_code); if (unlikely(!__pyx_t_5)) __PYX_ERR(34, 482, __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, NULL};
+    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_8, 0+__pyx_t_8);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(34, 482, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  }
+  __pyx_t_13 = ((grpc_status_code)__Pyx_PyInt_As_grpc_status_code(__pyx_t_4)); if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 482, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_cur_scope->__pyx_v_code = __pyx_t_13;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":485
+ * 
+ *         self._set_status(AioRpcStatus(
+ *             code,             # <<<<<<<<<<<<<<
+ *             receive_status_on_client_op.details(),
+ *             receive_status_on_client_op.trailing_metadata(),
+ */
+  __pyx_t_4 = __Pyx_PyInt_From_grpc_status_code(__pyx_cur_scope->__pyx_v_code); if (unlikely(!__pyx_t_4)) __PYX_ERR(34, 485, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":486
+ *         self._set_status(AioRpcStatus(
+ *             code,
+ *             receive_status_on_client_op.details(),             # <<<<<<<<<<<<<<
+ *             receive_status_on_client_op.trailing_metadata(),
+ *             receive_status_on_client_op.error_string(),
+ */
+  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_receive_status_on_client_op), __pyx_n_s_details); if (unlikely(!__pyx_t_6)) __PYX_ERR(34, 486, __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(34, 486, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":487
+ *             code,
+ *             receive_status_on_client_op.details(),
+ *             receive_status_on_client_op.trailing_metadata(),             # <<<<<<<<<<<<<<
+ *             receive_status_on_client_op.error_string(),
+ *         ))
+ */
+  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_receive_status_on_client_op), __pyx_n_s_trailing_metadata); if (unlikely(!__pyx_t_7)) __PYX_ERR(34, 487, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  __pyx_t_10 = NULL;
+  __pyx_t_8 = 0;
+  #if CYTHON_UNPACK_METHODS
+  if (likely(PyMethod_Check(__pyx_t_7))) {
+    __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_7);
+    if (likely(__pyx_t_10)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+      __Pyx_INCREF(__pyx_t_10);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_7, function);
+      __pyx_t_8 = 1;
+    }
+  }
+  #endif
+  {
+    PyObject *__pyx_callargs[2] = {__pyx_t_10, NULL};
+    __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_8, 0+__pyx_t_8);
+    __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+    if (unlikely(!__pyx_t_6)) __PYX_ERR(34, 487, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_6);
+    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":488
+ *             receive_status_on_client_op.details(),
+ *             receive_status_on_client_op.trailing_metadata(),
+ *             receive_status_on_client_op.error_string(),             # <<<<<<<<<<<<<<
+ *         ))
+ * 
+ */
+  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_receive_status_on_client_op), __pyx_n_s_error_string); if (unlikely(!__pyx_t_10)) __PYX_ERR(34, 488, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_10);
+  __pyx_t_11 = NULL;
+  __pyx_t_8 = 0;
+  #if CYTHON_UNPACK_METHODS
+  if (likely(PyMethod_Check(__pyx_t_10))) {
+    __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_10);
+    if (likely(__pyx_t_11)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
+      __Pyx_INCREF(__pyx_t_11);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_10, function);
+      __pyx_t_8 = 1;
+    }
+  }
+  #endif
+  {
+    PyObject *__pyx_callargs[2] = {__pyx_t_11, NULL};
+    __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_8, 0+__pyx_t_8);
+    __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
+    if (unlikely(!__pyx_t_7)) __PYX_ERR(34, 488, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_7);
+    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":484
+ *         code = receive_status_on_client_op.code()
+ * 
+ *         self._set_status(AioRpcStatus(             # <<<<<<<<<<<<<<
+ *             code,
+ *             receive_status_on_client_op.details(),
+ */
+  __pyx_t_10 = PyTuple_New(4); if (unlikely(!__pyx_t_10)) __PYX_ERR(34, 484, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_10);
+  __Pyx_GIVEREF(__pyx_t_4);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_4)) __PYX_ERR(34, 484, __pyx_L1_error);
+  __Pyx_GIVEREF(__pyx_t_5);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_5)) __PYX_ERR(34, 484, __pyx_L1_error);
+  __Pyx_GIVEREF(__pyx_t_6);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_t_6)) __PYX_ERR(34, 484, __pyx_L1_error);
+  __Pyx_GIVEREF(__pyx_t_7);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 3, __pyx_t_7)) __PYX_ERR(34, 484, __pyx_L1_error);
+  __pyx_t_4 = 0;
+  __pyx_t_5 = 0;
+  __pyx_t_6 = 0;
+  __pyx_t_7 = 0;
+  __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_7_cython_6cygrpc_AioRpcStatus), __pyx_t_10, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(34, 484, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+  ((struct __pyx_vtabstruct_7_cython_6cygrpc__AioCall *)__pyx_cur_scope->__pyx_v_self->__pyx_vtab)->_set_status(__pyx_cur_scope->__pyx_v_self, ((struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *)__pyx_t_7)); if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 484, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":491
+ *         ))
+ * 
+ *         if code == StatusCode.ok:             # <<<<<<<<<<<<<<
+ *             return receive_message_op.message()
+ *         else:
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_grpc_status_code(__pyx_cur_scope->__pyx_v_code); if (unlikely(!__pyx_t_7)) __PYX_ERR(34, 491, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_StatusCode); if (unlikely(!__pyx_t_10)) __PYX_ERR(34, 491, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_10);
+  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_ok); if (unlikely(!__pyx_t_6)) __PYX_ERR(34, 491, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+  __pyx_t_10 = PyObject_RichCompare(__pyx_t_7, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(34, 491, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(34, 491, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+  if (__pyx_t_12) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":492
+ * 
+ *         if code == StatusCode.ok:
+ *             return receive_message_op.message()             # <<<<<<<<<<<<<<
+ *         else:
+ *             return None
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_receive_message_op), __pyx_n_s_message); if (unlikely(!__pyx_t_6)) __PYX_ERR(34, 492, __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_10 = __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_10)) __PYX_ERR(34, 492, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_10);
+      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+    }
+    __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_t_10);
+    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":491
+ *         ))
+ * 
+ *         if code == StatusCode.ok:             # <<<<<<<<<<<<<<
+ *             return receive_message_op.message()
+ *         else:
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":494
+ *             return receive_message_op.message()
+ *         else:
+ *             return None             # <<<<<<<<<<<<<<
+ * 
+ *     async def initiate_stream_stream(self,
+ */
+  /*else*/ {
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_r = NULL;
+    goto __pyx_L0;
+  }
+  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":437
+ *             await status_task
+ * 
+ *     async def stream_unary(self,             # <<<<<<<<<<<<<<
+ *                            tuple outbound_initial_metadata,
+ *                            object metadata_sent_observer,
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_Generator_Replace_StopIteration(0);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("stream_unary", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
+  #if !CYTHON_USE_EXC_INFO_STACK
+  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+  #endif
+  __pyx_generator->resume_label = -1;
+  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+static PyObject *__pyx_gb_7_cython_6cygrpc_8_AioCall_55generator17(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":496
+ *             return None
+ * 
+ *     async def initiate_stream_stream(self,             # <<<<<<<<<<<<<<
+ *                            tuple outbound_initial_metadata,
+ *                            object metadata_sent_observer,
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_8_AioCall_54initiate_stream_stream(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+PyDoc_STRVAR(__pyx_doc_7_cython_6cygrpc_8_AioCall_53initiate_stream_stream, "Actual implementation of the complete stream-stream call.\n\n        Needs to pay extra attention to the raise mechanism. If we want to\n        propagate the final status exception, then we have to raise it.\n        Othersize, it would end normally and raise `StopAsyncIteration()`.\n        ");
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_8_AioCall_54initiate_stream_stream = {"initiate_stream_stream", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_8_AioCall_54initiate_stream_stream, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7_cython_6cygrpc_8_AioCall_53initiate_stream_stream};
+static PyObject *__pyx_pw_7_cython_6cygrpc_8_AioCall_54initiate_stream_stream(PyObject *__pyx_v_self, 
+#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_outbound_initial_metadata = 0;
+  PyObject *__pyx_v_metadata_sent_observer = 0;
+  PyObject *__pyx_v_context = 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("initiate_stream_stream (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_outbound_initial_metadata,&__pyx_n_s_metadata_sent_observer,&__pyx_n_s_context,0};
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":499
+ *                            tuple outbound_initial_metadata,
+ *                            object metadata_sent_observer,
+ *                            object context = None):             # <<<<<<<<<<<<<<
+ *         """Actual implementation of the complete stream-stream call.
+ * 
+ */
+    values[2] = __Pyx_Arg_NewRef_FASTCALL(((PyObject *)Py_None));
+    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_outbound_initial_metadata)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 496, __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_metadata_sent_observer)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 496, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("initiate_stream_stream", 0, 2, 3, 1); __PYX_ERR(34, 496, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (kw_args > 0) {
+          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_context);
+          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
+          else if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 496, __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, "initiate_stream_stream") < 0)) __PYX_ERR(34, 496, __pyx_L3_error)
+      }
+    } else {
+      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);
+        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
+        break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_outbound_initial_metadata = ((PyObject*)values[0]);
+    __pyx_v_metadata_sent_observer = values[1];
+    __pyx_v_context = values[2];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("initiate_stream_stream", 0, 2, 3, __pyx_nargs); __PYX_ERR(34, 496, __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("_cython.cygrpc._AioCall.initiate_stream_stream", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_outbound_initial_metadata), (&PyTuple_Type), 1, "outbound_initial_metadata", 1))) __PYX_ERR(34, 497, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_8_AioCall_53initiate_stream_stream(((struct __pyx_obj_7_cython_6cygrpc__AioCall *)__pyx_v_self), __pyx_v_outbound_initial_metadata, __pyx_v_metadata_sent_observer, __pyx_v_context);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":496
+ *             return None
+ * 
+ *     async def initiate_stream_stream(self,             # <<<<<<<<<<<<<<
+ *                            tuple outbound_initial_metadata,
+ *                            object metadata_sent_observer,
+ */
+
+  /* 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_7_cython_6cygrpc_8_AioCall_53initiate_stream_stream(struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self, PyObject *__pyx_v_outbound_initial_metadata, PyObject *__pyx_v_metadata_sent_observer, PyObject *__pyx_v_context) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream *__pyx_cur_scope;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("initiate_stream_stream", 0);
+  __pyx_cur_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream, __pyx_empty_tuple, NULL);
+  if (unlikely(!__pyx_cur_scope)) {
+    __pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream *)Py_None);
+    __Pyx_INCREF(Py_None);
+    __PYX_ERR(34, 496, __pyx_L1_error)
+  } else {
+    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+  }
+  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
+  __pyx_cur_scope->__pyx_v_outbound_initial_metadata = __pyx_v_outbound_initial_metadata;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_outbound_initial_metadata);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_outbound_initial_metadata);
+  __pyx_cur_scope->__pyx_v_metadata_sent_observer = __pyx_v_metadata_sent_observer;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_metadata_sent_observer);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_metadata_sent_observer);
+  __pyx_cur_scope->__pyx_v_context = __pyx_v_context;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_context);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_context);
+  {
+    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7_cython_6cygrpc_8_AioCall_55generator17, __pyx_codeobj__68, (PyObject *) __pyx_cur_scope, __pyx_n_s_initiate_stream_stream, __pyx_n_s_AioCall_initiate_stream_stream, __pyx_n_s_cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(34, 496, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_cur_scope);
+    __Pyx_RefNannyFinishContext();
+    return (PyObject *) gen;
+  }
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc._AioCall.initiate_stream_stream", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_gb_7_cython_6cygrpc_8_AioCall_55generator17(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
+{
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream *__pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream *)__pyx_generator->closure);
+  PyObject *__pyx_r = NULL;
+  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_t_7;
+  PyObject *__pyx_t_8 = NULL;
+  PyObject *__pyx_t_9 = NULL;
+  PyObject *__pyx_t_10 = NULL;
+  int __pyx_t_11;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  char const *__pyx_t_14;
+  PyObject *__pyx_t_15 = NULL;
+  PyObject *__pyx_t_16 = NULL;
+  PyObject *__pyx_t_17 = NULL;
+  PyObject *__pyx_t_18 = NULL;
+  PyObject *__pyx_t_19 = NULL;
+  PyObject *__pyx_t_20 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("initiate_stream_stream", 0);
+  switch (__pyx_generator->resume_label) {
+    case 0: goto __pyx_L3_first_run;
+    case 1: goto __pyx_L11_resume_from_await;
+    case 2: goto __pyx_L12_resume_from_await;
+    case 3: goto __pyx_L20_resume_from_await;
+    default: /* CPython raises the right error here */
+    __Pyx_RefNannyFinishContext();
+    return NULL;
+  }
+  __pyx_L3_first_run:;
+  if (unlikely(!__pyx_sent_value)) __PYX_ERR(34, 496, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":508
+ *         # Peer may prematurely end this RPC at any point. We need a corutine
+ *         # that watches if the server sends the final status.
+ *         status_task = self._loop.create_task(self._handle_status_once_received())             # <<<<<<<<<<<<<<
+ * 
+ *         if context is not None:
+ */
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self->_loop, __pyx_n_s_create_task); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 508, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_handle_status_once_received); if (unlikely(!__pyx_t_4)) __PYX_ERR(34, 508, __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, NULL};
+    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
+    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 508, __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[2] = {__pyx_t_4, __pyx_t_3};
+    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_6, 1+__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(34, 508, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  }
+  __Pyx_GIVEREF(__pyx_t_1);
+  __pyx_cur_scope->__pyx_v_status_task = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":510
+ *         status_task = self._loop.create_task(self._handle_status_once_received())
+ * 
+ *         if context is not None:             # <<<<<<<<<<<<<<
+ *             set_instrumentation_context_on_call_aio(self, context)
+ * 
+ */
+  __pyx_t_7 = (__pyx_cur_scope->__pyx_v_context != Py_None);
+  if (__pyx_t_7) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":511
+ * 
+ *         if context is not None:
+ *             set_instrumentation_context_on_call_aio(self, context)             # <<<<<<<<<<<<<<
+ * 
+ *         try:
+ */
+    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_set_instrumentation_context_on_c); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 511, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = NULL;
+    __pyx_t_6 = 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_6 = 1;
+      }
+    }
+    #endif
+    {
+      PyObject *__pyx_callargs[3] = {__pyx_t_3, ((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_cur_scope->__pyx_v_context};
+      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 511, __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/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":510
+ *         status_task = self._loop.create_task(self._handle_status_once_received())
+ * 
+ *         if context is not None:             # <<<<<<<<<<<<<<
+ *             set_instrumentation_context_on_call_aio(self, context)
+ * 
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":513
+ *             set_instrumentation_context_on_call_aio(self, context)
+ * 
+ *         try:             # <<<<<<<<<<<<<<
+ *             # Sends out initial_metadata ASAP.
+ *             await _send_initial_metadata(self,
+ */
+  {
+    __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+    __Pyx_XGOTREF(__pyx_t_8);
+    __Pyx_XGOTREF(__pyx_t_9);
+    __Pyx_XGOTREF(__pyx_t_10);
+    /*try:*/ {
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":515
+ *         try:
+ *             # Sends out initial_metadata ASAP.
+ *             await _send_initial_metadata(self,             # <<<<<<<<<<<<<<
+ *                                         outbound_initial_metadata,
+ *                                         self._send_initial_metadata_flags,
+ */
+      __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_send_initial_metadata); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 515, __pyx_L5_error)
+      __Pyx_GOTREF(__pyx_t_2);
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":517
+ *             await _send_initial_metadata(self,
+ *                                         outbound_initial_metadata,
+ *                                         self._send_initial_metadata_flags,             # <<<<<<<<<<<<<<
+ *                                         self._loop)
+ *             # Notify upper level that sending messages are allowed now.
+ */
+      __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_cur_scope->__pyx_v_self->_send_initial_metadata_flags); if (unlikely(!__pyx_t_3)) __PYX_ERR(34, 517, __pyx_L5_error)
+      __Pyx_GOTREF(__pyx_t_3);
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":518
+ *                                         outbound_initial_metadata,
+ *                                         self._send_initial_metadata_flags,
+ *                                         self._loop)             # <<<<<<<<<<<<<<
+ *             # Notify upper level that sending messages are allowed now.
+ *             metadata_sent_observer()
+ */
+      __pyx_t_4 = NULL;
+      __pyx_t_6 = 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_6 = 1;
+        }
+      }
+      #endif
+      {
+        PyObject *__pyx_callargs[5] = {__pyx_t_4, ((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_cur_scope->__pyx_v_outbound_initial_metadata, __pyx_t_3, __pyx_cur_scope->__pyx_v_self->_loop};
+        __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_6, 4+__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(34, 515, __pyx_L5_error)
+        __Pyx_GOTREF(__pyx_t_1);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      }
+      __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      __Pyx_XGOTREF(__pyx_r);
+      if (likely(__pyx_r)) {
+        __Pyx_XGIVEREF(__pyx_t_8);
+        __pyx_cur_scope->__pyx_t_0 = __pyx_t_8;
+        __Pyx_XGIVEREF(__pyx_t_9);
+        __pyx_cur_scope->__pyx_t_1 = __pyx_t_9;
+        __Pyx_XGIVEREF(__pyx_t_10);
+        __pyx_cur_scope->__pyx_t_2 = __pyx_t_10;
+        __Pyx_XGIVEREF(__pyx_r);
+        __Pyx_RefNannyFinishContext();
+        __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+        /* return from generator, awaiting value */
+        __pyx_generator->resume_label = 1;
+        return __pyx_r;
+        __pyx_L11_resume_from_await:;
+        __pyx_t_8 = __pyx_cur_scope->__pyx_t_0;
+        __pyx_cur_scope->__pyx_t_0 = 0;
+        __Pyx_XGOTREF(__pyx_t_8);
+        __pyx_t_9 = __pyx_cur_scope->__pyx_t_1;
+        __pyx_cur_scope->__pyx_t_1 = 0;
+        __Pyx_XGOTREF(__pyx_t_9);
+        __pyx_t_10 = __pyx_cur_scope->__pyx_t_2;
+        __pyx_cur_scope->__pyx_t_2 = 0;
+        __Pyx_XGOTREF(__pyx_t_10);
+        if (unlikely(!__pyx_sent_value)) __PYX_ERR(34, 515, __pyx_L5_error)
+      } else {
+        PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType();
+        if (exc_type) {
+          if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
+          else __PYX_ERR(34, 515, __pyx_L5_error)
+        }
+      }
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":520
+ *                                         self._loop)
+ *             # Notify upper level that sending messages are allowed now.
+ *             metadata_sent_observer()             # <<<<<<<<<<<<<<
+ * 
+ *             # Receives initial metadata.
+ */
+      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_metadata_sent_observer);
+      __pyx_t_2 = __pyx_cur_scope->__pyx_v_metadata_sent_observer; __pyx_t_3 = NULL;
+      __pyx_t_6 = 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_6 = 1;
+        }
+      }
+      #endif
+      {
+        PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
+        __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 520, __pyx_L5_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/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":524
+ *             # Receives initial metadata.
+ *             self._set_initial_metadata(
+ *                 await _receive_initial_metadata(self, self._loop)             # <<<<<<<<<<<<<<
+ *             )
+ *         except ExecuteBatchError as batch_error:
+ */
+      __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_receive_initial_metadata); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 524, __pyx_L5_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __pyx_t_3 = NULL;
+      __pyx_t_6 = 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_6 = 1;
+        }
+      }
+      #endif
+      {
+        PyObject *__pyx_callargs[3] = {__pyx_t_3, ((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_cur_scope->__pyx_v_self->_loop};
+        __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 524, __pyx_L5_error)
+        __Pyx_GOTREF(__pyx_t_1);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      }
+      __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      __Pyx_XGOTREF(__pyx_r);
+      if (likely(__pyx_r)) {
+        __Pyx_XGIVEREF(__pyx_t_8);
+        __pyx_cur_scope->__pyx_t_0 = __pyx_t_8;
+        __Pyx_XGIVEREF(__pyx_t_9);
+        __pyx_cur_scope->__pyx_t_1 = __pyx_t_9;
+        __Pyx_XGIVEREF(__pyx_t_10);
+        __pyx_cur_scope->__pyx_t_2 = __pyx_t_10;
+        __Pyx_XGIVEREF(__pyx_r);
+        __Pyx_RefNannyFinishContext();
+        __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+        /* return from generator, awaiting value */
+        __pyx_generator->resume_label = 2;
+        return __pyx_r;
+        __pyx_L12_resume_from_await:;
+        __pyx_t_8 = __pyx_cur_scope->__pyx_t_0;
+        __pyx_cur_scope->__pyx_t_0 = 0;
+        __Pyx_XGOTREF(__pyx_t_8);
+        __pyx_t_9 = __pyx_cur_scope->__pyx_t_1;
+        __pyx_cur_scope->__pyx_t_1 = 0;
+        __Pyx_XGOTREF(__pyx_t_9);
+        __pyx_t_10 = __pyx_cur_scope->__pyx_t_2;
+        __pyx_cur_scope->__pyx_t_2 = 0;
+        __Pyx_XGOTREF(__pyx_t_10);
+        if (unlikely(!__pyx_sent_value)) __PYX_ERR(34, 524, __pyx_L5_error)
+        __pyx_t_1 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_1);
+      } else {
+        __pyx_t_1 = NULL;
+        if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_1) < 0) __PYX_ERR(34, 524, __pyx_L5_error)
+        __Pyx_GOTREF(__pyx_t_1);
+      }
+      if (!(likely(PyTuple_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_t_1))) __PYX_ERR(34, 524, __pyx_L5_error)
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":523
+ * 
+ *             # Receives initial metadata.
+ *             self._set_initial_metadata(             # <<<<<<<<<<<<<<
+ *                 await _receive_initial_metadata(self, self._loop)
+ *             )
+ */
+      ((struct __pyx_vtabstruct_7_cython_6cygrpc__AioCall *)__pyx_cur_scope->__pyx_v_self->__pyx_vtab)->_set_initial_metadata(__pyx_cur_scope->__pyx_v_self, ((PyObject*)__pyx_t_1)); if (unlikely(PyErr_Occurred())) __PYX_ERR(34, 523, __pyx_L5_error)
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":513
+ *             set_instrumentation_context_on_call_aio(self, context)
+ * 
+ *         try:             # <<<<<<<<<<<<<<
+ *             # Sends out initial_metadata ASAP.
+ *             await _send_initial_metadata(self,
+ */
+    }
+    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+    __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+    goto __pyx_L10_try_end;
+    __pyx_L5_error:;
+    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":526
+ *                 await _receive_initial_metadata(self, self._loop)
+ *             )
+ *         except ExecuteBatchError as batch_error:             # <<<<<<<<<<<<<<
+ *             # Core should explain why this batch failed
+ *             await status_task
+ */
+    __Pyx_ErrFetch(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
+    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_ExecuteBatchError); if (unlikely(!__pyx_t_4)) __PYX_ERR(34, 526, __pyx_L7_except_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_11 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_1, __pyx_t_4);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_ErrRestore(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+    __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_3 = 0;
+    if (__pyx_t_11) {
+      __Pyx_AddTraceback("_cython.cygrpc._AioCall.initiate_stream_stream", __pyx_clineno, __pyx_lineno, __pyx_filename);
+      if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1) < 0) __PYX_ERR(34, 526, __pyx_L7_except_error)
+      __Pyx_XGOTREF(__pyx_t_3);
+      __Pyx_XGOTREF(__pyx_t_2);
+      __Pyx_XGOTREF(__pyx_t_1);
+      __Pyx_INCREF(__pyx_t_2);
+      __Pyx_GIVEREF(__pyx_t_2);
+      __pyx_cur_scope->__pyx_v_batch_error = __pyx_t_2;
+      /*try:*/ {
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":528
+ *         except ExecuteBatchError as batch_error:
+ *             # Core should explain why this batch failed
+ *             await status_task             # <<<<<<<<<<<<<<
+ * 
+ *             # Allow upper layer to proceed only if the status is set
+ */
+        __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_cur_scope->__pyx_v_status_task);
+        __Pyx_XGOTREF(__pyx_r);
+        if (likely(__pyx_r)) {
+          __Pyx_XGIVEREF(__pyx_t_1);
+          __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
+          __Pyx_XGIVEREF(__pyx_t_2);
+          __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
+          __Pyx_XGIVEREF(__pyx_t_3);
+          __pyx_cur_scope->__pyx_t_2 = __pyx_t_3;
+          __Pyx_XGIVEREF(__pyx_t_8);
+          __pyx_cur_scope->__pyx_t_3 = __pyx_t_8;
+          __Pyx_XGIVEREF(__pyx_t_9);
+          __pyx_cur_scope->__pyx_t_4 = __pyx_t_9;
+          __Pyx_XGIVEREF(__pyx_t_10);
+          __pyx_cur_scope->__pyx_t_5 = __pyx_t_10;
+          __Pyx_XGIVEREF(__pyx_r);
+          __Pyx_RefNannyFinishContext();
+          __Pyx_Coroutine_SwapException(__pyx_generator);
+          /* return from generator, awaiting value */
+          __pyx_generator->resume_label = 3;
+          return __pyx_r;
+          __pyx_L20_resume_from_await:;
+          __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
+          __pyx_cur_scope->__pyx_t_0 = 0;
+          __Pyx_XGOTREF(__pyx_t_1);
+          __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
+          __pyx_cur_scope->__pyx_t_1 = 0;
+          __Pyx_XGOTREF(__pyx_t_2);
+          __pyx_t_3 = __pyx_cur_scope->__pyx_t_2;
+          __pyx_cur_scope->__pyx_t_2 = 0;
+          __Pyx_XGOTREF(__pyx_t_3);
+          __pyx_t_8 = __pyx_cur_scope->__pyx_t_3;
+          __pyx_cur_scope->__pyx_t_3 = 0;
+          __Pyx_XGOTREF(__pyx_t_8);
+          __pyx_t_9 = __pyx_cur_scope->__pyx_t_4;
+          __pyx_cur_scope->__pyx_t_4 = 0;
+          __Pyx_XGOTREF(__pyx_t_9);
+          __pyx_t_10 = __pyx_cur_scope->__pyx_t_5;
+          __pyx_cur_scope->__pyx_t_5 = 0;
+          __Pyx_XGOTREF(__pyx_t_10);
+          if (unlikely(!__pyx_sent_value)) __PYX_ERR(34, 528, __pyx_L18_error)
+        } else {
+          PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType();
+          if (exc_type) {
+            if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
+            else __PYX_ERR(34, 528, __pyx_L18_error)
+          }
+        }
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":531
+ * 
+ *             # Allow upper layer to proceed only if the status is set
+ *             metadata_sent_observer()             # <<<<<<<<<<<<<<
+ */
+        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_metadata_sent_observer);
+        __pyx_t_5 = __pyx_cur_scope->__pyx_v_metadata_sent_observer; __pyx_t_12 = NULL;
+        __pyx_t_6 = 0;
+        #if CYTHON_UNPACK_METHODS
+        if (unlikely(PyMethod_Check(__pyx_t_5))) {
+          __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_5);
+          if (likely(__pyx_t_12)) {
+            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+            __Pyx_INCREF(__pyx_t_12);
+            __Pyx_INCREF(function);
+            __Pyx_DECREF_SET(__pyx_t_5, function);
+            __pyx_t_6 = 1;
+          }
+        }
+        #endif
+        {
+          PyObject *__pyx_callargs[2] = {__pyx_t_12, NULL};
+          __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
+          __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(!__pyx_t_4)) __PYX_ERR(34, 531, __pyx_L18_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/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":526
+ *                 await _receive_initial_metadata(self, self._loop)
+ *             )
+ *         except ExecuteBatchError as batch_error:             # <<<<<<<<<<<<<<
+ *             # Core should explain why this batch failed
+ *             await status_task
+ */
+      /*finally:*/ {
+        /*normal exit:*/{
+          __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_batch_error);
+          __Pyx_DECREF(__pyx_cur_scope->__pyx_v_batch_error); __pyx_cur_scope->__pyx_v_batch_error = 0;
+          goto __pyx_L19;
+        }
+        __pyx_L18_error:;
+        /*exception exit:*/{
+          __Pyx_PyThreadState_assign
+          __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0;
+          __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
+          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+          if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20);
+          if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17) < 0)) __Pyx_ErrFetch(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
+          __Pyx_XGOTREF(__pyx_t_15);
+          __Pyx_XGOTREF(__pyx_t_16);
+          __Pyx_XGOTREF(__pyx_t_17);
+          __Pyx_XGOTREF(__pyx_t_18);
+          __Pyx_XGOTREF(__pyx_t_19);
+          __Pyx_XGOTREF(__pyx_t_20);
+          __pyx_t_11 = __pyx_lineno; __pyx_t_13 = __pyx_clineno; __pyx_t_14 = __pyx_filename;
+          {
+            __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_batch_error);
+            __Pyx_DECREF(__pyx_cur_scope->__pyx_v_batch_error); __pyx_cur_scope->__pyx_v_batch_error = 0;
+          }
+          if (PY_MAJOR_VERSION >= 3) {
+            __Pyx_XGIVEREF(__pyx_t_18);
+            __Pyx_XGIVEREF(__pyx_t_19);
+            __Pyx_XGIVEREF(__pyx_t_20);
+            __Pyx_ExceptionReset(__pyx_t_18, __pyx_t_19, __pyx_t_20);
+          }
+          __Pyx_XGIVEREF(__pyx_t_15);
+          __Pyx_XGIVEREF(__pyx_t_16);
+          __Pyx_XGIVEREF(__pyx_t_17);
+          __Pyx_ErrRestore(__pyx_t_15, __pyx_t_16, __pyx_t_17);
+          __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0;
+          __pyx_lineno = __pyx_t_11; __pyx_clineno = __pyx_t_13; __pyx_filename = __pyx_t_14;
+          goto __pyx_L7_except_error;
+        }
+        __pyx_L19:;
+      }
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+      goto __pyx_L6_exception_handled;
+    }
+    goto __pyx_L7_except_error;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":513
+ *             set_instrumentation_context_on_call_aio(self, context)
+ * 
+ *         try:             # <<<<<<<<<<<<<<
+ *             # Sends out initial_metadata ASAP.
+ *             await _send_initial_metadata(self,
+ */
+    __pyx_L7_except_error:;
+    __Pyx_XGIVEREF(__pyx_t_8);
+    __Pyx_XGIVEREF(__pyx_t_9);
+    __Pyx_XGIVEREF(__pyx_t_10);
+    __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+    goto __pyx_L1_error;
+    __pyx_L6_exception_handled:;
+    __Pyx_XGIVEREF(__pyx_t_8);
+    __Pyx_XGIVEREF(__pyx_t_9);
+    __Pyx_XGIVEREF(__pyx_t_10);
+    __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+    __pyx_L10_try_end:;
+  }
+  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":496
+ *             return None
+ * 
+ *     async def initiate_stream_stream(self,             # <<<<<<<<<<<<<<
+ *                            tuple outbound_initial_metadata,
+ *                            object metadata_sent_observer,
+ */
+
+  /* function exit code */
+  PyErr_SetNone(PyExc_StopIteration);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_Generator_Replace_StopIteration(0);
+  __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_12);
+  __Pyx_AddTraceback("initiate_stream_stream", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
+  #if !CYTHON_USE_EXC_INFO_STACK
+  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+  #endif
+  __pyx_generator->resume_label = -1;
+  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pxd.pxi":18
+ * cdef class _AioCall(GrpcCallWrapper):
+ *     cdef:
+ *         readonly AioChannel _channel             # <<<<<<<<<<<<<<
+ *         list _references
+ *         object _deadline
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_8_AioCall_8_channel_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_8_AioCall_8_channel_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_7_cython_6cygrpc_8_AioCall_8_channel___get__(((struct __pyx_obj_7_cython_6cygrpc__AioCall *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_8_AioCall_8_channel___get__(struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF((PyObject *)__pyx_v_self->_channel);
+  __pyx_r = ((PyObject *)__pyx_v_self->_channel);
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pxd.pxi":38
+ *         # tasks that are asking for one of the field when they are not yet
+ *         # available.
+ *         readonly AioRpcStatus _status             # <<<<<<<<<<<<<<
+ *         readonly tuple _initial_metadata
+ *         list _waiters_status
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_8_AioCall_7_status_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_8_AioCall_7_status_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_7_cython_6cygrpc_8_AioCall_7_status___get__(((struct __pyx_obj_7_cython_6cygrpc__AioCall *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_8_AioCall_7_status___get__(struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF((PyObject *)__pyx_v_self->_status);
+  __pyx_r = ((PyObject *)__pyx_v_self->_status);
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pxd.pxi":39
+ *         # available.
+ *         readonly AioRpcStatus _status
+ *         readonly tuple _initial_metadata             # <<<<<<<<<<<<<<
+ *         list _waiters_status
+ *         list _waiters_initial_metadata
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_8_AioCall_17_initial_metadata_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_8_AioCall_17_initial_metadata_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_7_cython_6cygrpc_8_AioCall_17_initial_metadata___get__(((struct __pyx_obj_7_cython_6cygrpc__AioCall *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_8_AioCall_17_initial_metadata___get__(struct __pyx_obj_7_cython_6cygrpc__AioCall *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->_initial_metadata);
+  __pyx_r = __pyx_v_self->_initial_metadata;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __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_7_cython_6cygrpc_8_AioCall_57__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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_8_AioCall_57__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_8_AioCall_57__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_8_AioCall_57__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_7_cython_6cygrpc_8_AioCall_56__reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc__AioCall *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_8_AioCall_56__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__AioCall *__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(10, 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("_cython.cygrpc._AioCall.__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_7_cython_6cygrpc_8_AioCall_59__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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_8_AioCall_59__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_8_AioCall_59__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_8_AioCall_59__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(10, 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(10, 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(10, 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("_cython.cygrpc._AioCall.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_8_AioCall_58__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc__AioCall *)__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_7_cython_6cygrpc_8_AioCall_58__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__AioCall *__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(10, 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("_cython.cygrpc._AioCall.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":29
+ * 
+ * cdef class AioChannel:
+ *     def __cinit__(self, bytes target, tuple options, ChannelCredentials credentials, object loop):             # <<<<<<<<<<<<<<
+ *         init_grpc_aio()
+ *         if options is None:
+ */
+
+/* Python wrapper */
+static int __pyx_pw_7_cython_6cygrpc_10AioChannel_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_7_cython_6cygrpc_10AioChannel_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_target = 0;
+  PyObject *__pyx_v_options = 0;
+  struct __pyx_obj_7_cython_6cygrpc_ChannelCredentials *__pyx_v_credentials = 0;
+  PyObject *__pyx_v_loop = 0;
+  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+  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;
+  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);
+  {
+    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_target,&__pyx_n_s_options,&__pyx_n_s_credentials,&__pyx_n_s_loop,0};
+    if (__pyx_kwds) {
+      Py_ssize_t kw_args;
+      switch (__pyx_nargs) {
+        case  4: values[3] = __Pyx_Arg_VARARGS(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
+        case  3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
+      switch (__pyx_nargs) {
+        case  0:
+        if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_target)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(8, 29, __pyx_L3_error)
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_options)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(8, 29, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 4, 4, 1); __PYX_ERR(8, 29, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_credentials)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[2]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(8, 29, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 4, 4, 2); __PYX_ERR(8, 29, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  3:
+        if (likely((values[3] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_loop)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[3]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(8, 29, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 4, 4, 3); __PYX_ERR(8, 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, "__cinit__") < 0)) __PYX_ERR(8, 29, __pyx_L3_error)
+      }
+    } else if (unlikely(__pyx_nargs != 4)) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+      values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
+      values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
+      values[3] = __Pyx_Arg_VARARGS(__pyx_args, 3);
+    }
+    __pyx_v_target = ((PyObject*)values[0]);
+    __pyx_v_options = ((PyObject*)values[1]);
+    __pyx_v_credentials = ((struct __pyx_obj_7_cython_6cygrpc_ChannelCredentials *)values[2]);
+    __pyx_v_loop = values[3];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 4, 4, __pyx_nargs); __PYX_ERR(8, 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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_AddTraceback("_cython.cygrpc.AioChannel.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_target), (&PyBytes_Type), 1, "target", 1))) __PYX_ERR(8, 29, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_options), (&PyTuple_Type), 1, "options", 1))) __PYX_ERR(8, 29, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_credentials), __pyx_ptype_7_cython_6cygrpc_ChannelCredentials, 1, "credentials", 0))) __PYX_ERR(8, 29, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_10AioChannel___cinit__(((struct __pyx_obj_7_cython_6cygrpc_AioChannel *)__pyx_v_self), __pyx_v_target, __pyx_v_options, __pyx_v_credentials, __pyx_v_loop);
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = -1;
+  __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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_7_cython_6cygrpc_10AioChannel___cinit__(struct __pyx_obj_7_cython_6cygrpc_AioChannel *__pyx_v_self, PyObject *__pyx_v_target, PyObject *__pyx_v_options, struct __pyx_obj_7_cython_6cygrpc_ChannelCredentials *__pyx_v_credentials, PyObject *__pyx_v_loop) {
+  struct __pyx_obj_7_cython_6cygrpc__ChannelArgs *__pyx_v_channel_args = 0;
+  grpc_channel_credentials *__pyx_v_creds;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_t_2;
+  char *__pyx_t_3;
+  grpc_channel_args *__pyx_t_4;
+  grpc_channel_credentials *__pyx_t_5;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__cinit__", 0);
+  __Pyx_INCREF(__pyx_v_options);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":30
+ * cdef class AioChannel:
+ *     def __cinit__(self, bytes target, tuple options, ChannelCredentials credentials, object loop):
+ *         init_grpc_aio()             # <<<<<<<<<<<<<<
+ *         if options is None:
+ *             options = ()
+ */
+  __pyx_t_1 = __pyx_f_7_cython_6cygrpc_init_grpc_aio(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 30, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":31
+ *     def __cinit__(self, bytes target, tuple options, ChannelCredentials credentials, object loop):
+ *         init_grpc_aio()
+ *         if options is None:             # <<<<<<<<<<<<<<
+ *             options = ()
+ *         cdef _ChannelArgs channel_args = _ChannelArgs(options)
+ */
+  __pyx_t_2 = (__pyx_v_options == ((PyObject*)Py_None));
+  if (__pyx_t_2) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":32
+ *         init_grpc_aio()
+ *         if options is None:
+ *             options = ()             # <<<<<<<<<<<<<<
+ *         cdef _ChannelArgs channel_args = _ChannelArgs(options)
+ *         self._target = target
+ */
+    __Pyx_INCREF(__pyx_empty_tuple);
+    __Pyx_DECREF_SET(__pyx_v_options, __pyx_empty_tuple);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":31
+ *     def __cinit__(self, bytes target, tuple options, ChannelCredentials credentials, object loop):
+ *         init_grpc_aio()
+ *         if options is None:             # <<<<<<<<<<<<<<
+ *             options = ()
+ *         cdef _ChannelArgs channel_args = _ChannelArgs(options)
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":33
+ *         if options is None:
+ *             options = ()
+ *         cdef _ChannelArgs channel_args = _ChannelArgs(options)             # <<<<<<<<<<<<<<
+ *         self._target = target
+ *         self.loop = loop
+ */
+  __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_7_cython_6cygrpc__ChannelArgs), __pyx_v_options); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 33, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_channel_args = ((struct __pyx_obj_7_cython_6cygrpc__ChannelArgs *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":34
+ *             options = ()
+ *         cdef _ChannelArgs channel_args = _ChannelArgs(options)
+ *         self._target = target             # <<<<<<<<<<<<<<
+ *         self.loop = loop
+ *         self._status = AIO_CHANNEL_STATUS_READY
+ */
+  __Pyx_INCREF(__pyx_v_target);
+  __Pyx_GIVEREF(__pyx_v_target);
+  __Pyx_GOTREF(__pyx_v_self->_target);
+  __Pyx_DECREF(__pyx_v_self->_target);
+  __pyx_v_self->_target = __pyx_v_target;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":35
+ *         cdef _ChannelArgs channel_args = _ChannelArgs(options)
+ *         self._target = target
+ *         self.loop = loop             # <<<<<<<<<<<<<<
+ *         self._status = AIO_CHANNEL_STATUS_READY
+ * 
+ */
+  __Pyx_INCREF(__pyx_v_loop);
+  __Pyx_GIVEREF(__pyx_v_loop);
+  __Pyx_GOTREF(__pyx_v_self->loop);
+  __Pyx_DECREF(__pyx_v_self->loop);
+  __pyx_v_self->loop = __pyx_v_loop;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":36
+ *         self._target = target
+ *         self.loop = loop
+ *         self._status = AIO_CHANNEL_STATUS_READY             # <<<<<<<<<<<<<<
+ * 
+ *         if credentials is None:
+ */
+  __pyx_v_self->_status = __pyx_e_7_cython_6cygrpc_AIO_CHANNEL_STATUS_READY;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":38
+ *         self._status = AIO_CHANNEL_STATUS_READY
+ * 
+ *         if credentials is None:             # <<<<<<<<<<<<<<
+ *             self._is_secure = False
+ *             creds = grpc_insecure_credentials_create();
+ */
+  __pyx_t_2 = (((PyObject *)__pyx_v_credentials) == Py_None);
+  if (__pyx_t_2) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":39
+ * 
+ *         if credentials is None:
+ *             self._is_secure = False             # <<<<<<<<<<<<<<
+ *             creds = grpc_insecure_credentials_create();
+ *             self.channel = grpc_channel_create(<char *>target,
+ */
+    __pyx_v_self->_is_secure = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":40
+ *         if credentials is None:
+ *             self._is_secure = False
+ *             creds = grpc_insecure_credentials_create();             # <<<<<<<<<<<<<<
+ *             self.channel = grpc_channel_create(<char *>target,
+ *                 creds,
+ */
+    __pyx_v_creds = grpc_insecure_credentials_create();
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":41
+ *             self._is_secure = False
+ *             creds = grpc_insecure_credentials_create();
+ *             self.channel = grpc_channel_create(<char *>target,             # <<<<<<<<<<<<<<
+ *                 creds,
+ *                 channel_args.c_args())
+ */
+    if (unlikely(__pyx_v_target == Py_None)) {
+      PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
+      __PYX_ERR(8, 41, __pyx_L1_error)
+    }
+    __pyx_t_3 = __Pyx_PyBytes_AsWritableString(__pyx_v_target); if (unlikely((!__pyx_t_3) && PyErr_Occurred())) __PYX_ERR(8, 41, __pyx_L1_error)
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":43
+ *             self.channel = grpc_channel_create(<char *>target,
+ *                 creds,
+ *                 channel_args.c_args())             # <<<<<<<<<<<<<<
+ *             grpc_channel_credentials_release(creds)
+ *         else:
+ */
+    __pyx_t_4 = ((struct __pyx_vtabstruct_7_cython_6cygrpc__ChannelArgs *)__pyx_v_channel_args->__pyx_vtab)->c_args(__pyx_v_channel_args); if (unlikely(PyErr_Occurred())) __PYX_ERR(8, 43, __pyx_L1_error)
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":41
+ *             self._is_secure = False
+ *             creds = grpc_insecure_credentials_create();
+ *             self.channel = grpc_channel_create(<char *>target,             # <<<<<<<<<<<<<<
+ *                 creds,
+ *                 channel_args.c_args())
+ */
+    __pyx_v_self->channel = grpc_channel_create(((char *)__pyx_t_3), __pyx_v_creds, __pyx_t_4);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":44
+ *                 creds,
+ *                 channel_args.c_args())
+ *             grpc_channel_credentials_release(creds)             # <<<<<<<<<<<<<<
+ *         else:
+ *             self._is_secure = True
+ */
+    grpc_channel_credentials_release(__pyx_v_creds);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":38
+ *         self._status = AIO_CHANNEL_STATUS_READY
+ * 
+ *         if credentials is None:             # <<<<<<<<<<<<<<
+ *             self._is_secure = False
+ *             creds = grpc_insecure_credentials_create();
+ */
+    goto __pyx_L4;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":46
+ *             grpc_channel_credentials_release(creds)
+ *         else:
+ *             self._is_secure = True             # <<<<<<<<<<<<<<
+ *             creds = <grpc_channel_credentials *> credentials.c()
+ *             self.channel = grpc_channel_create(<char *>target,
+ */
+  /*else*/ {
+    __pyx_v_self->_is_secure = 1;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":47
+ *         else:
+ *             self._is_secure = True
+ *             creds = <grpc_channel_credentials *> credentials.c()             # <<<<<<<<<<<<<<
+ *             self.channel = grpc_channel_create(<char *>target,
+ *                 creds,
+ */
+    __pyx_t_5 = ((struct __pyx_vtabstruct_7_cython_6cygrpc_ChannelCredentials *)__pyx_v_credentials->__pyx_vtab)->c(__pyx_v_credentials); if (unlikely(PyErr_Occurred())) __PYX_ERR(8, 47, __pyx_L1_error)
+    __pyx_v_creds = ((grpc_channel_credentials *)__pyx_t_5);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":48
+ *             self._is_secure = True
+ *             creds = <grpc_channel_credentials *> credentials.c()
+ *             self.channel = grpc_channel_create(<char *>target,             # <<<<<<<<<<<<<<
+ *                 creds,
+ *                 channel_args.c_args())
+ */
+    if (unlikely(__pyx_v_target == Py_None)) {
+      PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
+      __PYX_ERR(8, 48, __pyx_L1_error)
+    }
+    __pyx_t_3 = __Pyx_PyBytes_AsWritableString(__pyx_v_target); if (unlikely((!__pyx_t_3) && PyErr_Occurred())) __PYX_ERR(8, 48, __pyx_L1_error)
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":50
+ *             self.channel = grpc_channel_create(<char *>target,
+ *                 creds,
+ *                 channel_args.c_args())             # <<<<<<<<<<<<<<
+ *             grpc_channel_credentials_release(creds)
+ * 
+ */
+    __pyx_t_4 = ((struct __pyx_vtabstruct_7_cython_6cygrpc__ChannelArgs *)__pyx_v_channel_args->__pyx_vtab)->c_args(__pyx_v_channel_args); if (unlikely(PyErr_Occurred())) __PYX_ERR(8, 50, __pyx_L1_error)
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":48
+ *             self._is_secure = True
+ *             creds = <grpc_channel_credentials *> credentials.c()
+ *             self.channel = grpc_channel_create(<char *>target,             # <<<<<<<<<<<<<<
+ *                 creds,
+ *                 channel_args.c_args())
+ */
+    __pyx_v_self->channel = grpc_channel_create(((char *)__pyx_t_3), __pyx_v_creds, __pyx_t_4);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":51
+ *                 creds,
+ *                 channel_args.c_args())
+ *             grpc_channel_credentials_release(creds)             # <<<<<<<<<<<<<<
+ * 
+ *     def __dealloc__(self):
+ */
+    grpc_channel_credentials_release(__pyx_v_creds);
+  }
+  __pyx_L4:;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":29
+ * 
+ * cdef class AioChannel:
+ *     def __cinit__(self, bytes target, tuple options, ChannelCredentials credentials, object loop):             # <<<<<<<<<<<<<<
+ *         init_grpc_aio()
+ *         if options is None:
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.AioChannel.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_channel_args);
+  __Pyx_XDECREF(__pyx_v_options);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":53
+ *             grpc_channel_credentials_release(creds)
+ * 
+ *     def __dealloc__(self):             # <<<<<<<<<<<<<<
+ *         shutdown_grpc_aio()
+ * 
+ */
+
+/* Python wrapper */
+static void __pyx_pw_7_cython_6cygrpc_10AioChannel_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
+static void __pyx_pw_7_cython_6cygrpc_10AioChannel_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_7_cython_6cygrpc_10AioChannel_2__dealloc__(((struct __pyx_obj_7_cython_6cygrpc_AioChannel *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+}
+
+static void __pyx_pf_7_cython_6cygrpc_10AioChannel_2__dealloc__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_AioChannel *__pyx_v_self) {
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__dealloc__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":54
+ * 
+ *     def __dealloc__(self):
+ *         shutdown_grpc_aio()             # <<<<<<<<<<<<<<
+ * 
+ *     def __repr__(self):
+ */
+  __pyx_t_1 = __pyx_f_7_cython_6cygrpc_shutdown_grpc_aio(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 54, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":53
+ *             grpc_channel_credentials_release(creds)
+ * 
+ *     def __dealloc__(self):             # <<<<<<<<<<<<<<
+ *         shutdown_grpc_aio()
+ * 
+ */
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_WriteUnraisable("_cython.cygrpc.AioChannel.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":56
+ *         shutdown_grpc_aio()
+ * 
+ *     def __repr__(self):             # <<<<<<<<<<<<<<
+ *         class_name = self.__class__.__name__
+ *         id_ = id(self)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_10AioChannel_5__repr__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_10AioChannel_5__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_7_cython_6cygrpc_10AioChannel_4__repr__(((struct __pyx_obj_7_cython_6cygrpc_AioChannel *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_10AioChannel_4__repr__(struct __pyx_obj_7_cython_6cygrpc_AioChannel *__pyx_v_self) {
+  PyObject *__pyx_v_class_name = NULL;
+  PyObject *__pyx_v_id_ = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  Py_ssize_t __pyx_t_3;
+  Py_UCS4 __pyx_t_4;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__repr__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":57
+ * 
+ *     def __repr__(self):
+ *         class_name = self.__class__.__name__             # <<<<<<<<<<<<<<
+ *         id_ = id(self)
+ *         return f"<{class_name} {id_}>"
+ */
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 57, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_name_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 57, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_v_class_name = __pyx_t_2;
+  __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":58
+ *     def __repr__(self):
+ *         class_name = self.__class__.__name__
+ *         id_ = id(self)             # <<<<<<<<<<<<<<
+ *         return f"<{class_name} {id_}>"
+ * 
+ */
+  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 58, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_v_id_ = __pyx_t_2;
+  __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":59
+ *         class_name = self.__class__.__name__
+ *         id_ = id(self)
+ *         return f"<{class_name} {id_}>"             # <<<<<<<<<<<<<<
+ * 
+ *     def check_connectivity_state(self, bint try_to_connect):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = PyTuple_New(5); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 59, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = 0;
+  __pyx_t_4 = 127;
+  __Pyx_INCREF(__pyx_kp_u__69);
+  __pyx_t_3 += 1;
+  __Pyx_GIVEREF(__pyx_kp_u__69);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u__69);
+  __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_v_class_name, __pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 59, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_4 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) > __pyx_t_4) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) : __pyx_t_4;
+  __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __Pyx_INCREF(__pyx_kp_u__70);
+  __pyx_t_3 += 1;
+  __Pyx_GIVEREF(__pyx_kp_u__70);
+  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u__70);
+  __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_v_id_, __pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 59, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_4 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) > __pyx_t_4) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) : __pyx_t_4;
+  __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __Pyx_INCREF(__pyx_kp_u__71);
+  __pyx_t_3 += 1;
+  __Pyx_GIVEREF(__pyx_kp_u__71);
+  PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_kp_u__71);
+  __pyx_t_1 = __Pyx_PyUnicode_Join(__pyx_t_2, 5, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 59, __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/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":56
+ *         shutdown_grpc_aio()
+ * 
+ *     def __repr__(self):             # <<<<<<<<<<<<<<
+ *         class_name = self.__class__.__name__
+ *         id_ = id(self)
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("_cython.cygrpc.AioChannel.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_class_name);
+  __Pyx_XDECREF(__pyx_v_id_);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":61
+ *         return f"<{class_name} {id_}>"
+ * 
+ *     def check_connectivity_state(self, bint try_to_connect):             # <<<<<<<<<<<<<<
+ *         """A Cython wrapper for Core's check connectivity state API."""
+ *         if self._status == AIO_CHANNEL_STATUS_DESTROYED:
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_10AioChannel_7check_connectivity_state(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+PyDoc_STRVAR(__pyx_doc_7_cython_6cygrpc_10AioChannel_6check_connectivity_state, "A Cython wrapper for Core's check connectivity state API.");
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_10AioChannel_7check_connectivity_state = {"check_connectivity_state", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_10AioChannel_7check_connectivity_state, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7_cython_6cygrpc_10AioChannel_6check_connectivity_state};
+static PyObject *__pyx_pw_7_cython_6cygrpc_10AioChannel_7check_connectivity_state(PyObject *__pyx_v_self, 
+#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_try_to_connect;
+  #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("check_connectivity_state (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_try_to_connect,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_try_to_connect)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(8, 61, __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, "check_connectivity_state") < 0)) __PYX_ERR(8, 61, __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_try_to_connect = __Pyx_PyObject_IsTrue(values[0]); if (unlikely((__pyx_v_try_to_connect == (int)-1) && PyErr_Occurred())) __PYX_ERR(8, 61, __pyx_L3_error)
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("check_connectivity_state", 1, 1, 1, __pyx_nargs); __PYX_ERR(8, 61, __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("_cython.cygrpc.AioChannel.check_connectivity_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_10AioChannel_6check_connectivity_state(((struct __pyx_obj_7_cython_6cygrpc_AioChannel *)__pyx_v_self), __pyx_v_try_to_connect);
+
+  /* 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_7_cython_6cygrpc_10AioChannel_6check_connectivity_state(struct __pyx_obj_7_cython_6cygrpc_AioChannel *__pyx_v_self, int __pyx_v_try_to_connect) {
+  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("check_connectivity_state", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":63
+ *     def check_connectivity_state(self, bint try_to_connect):
+ *         """A Cython wrapper for Core's check connectivity state API."""
+ *         if self._status == AIO_CHANNEL_STATUS_DESTROYED:             # <<<<<<<<<<<<<<
+ *             return ConnectivityState.shutdown
+ *         else:
+ */
+  __pyx_t_1 = (__pyx_v_self->_status == __pyx_e_7_cython_6cygrpc_AIO_CHANNEL_STATUS_DESTROYED);
+  if (__pyx_t_1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":64
+ *         """A Cython wrapper for Core's check connectivity state API."""
+ *         if self._status == AIO_CHANNEL_STATUS_DESTROYED:
+ *             return ConnectivityState.shutdown             # <<<<<<<<<<<<<<
+ *         else:
+ *             return grpc_channel_check_connectivity_state(
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_ConnectivityState); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 64, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_shutdown); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 64, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_r = __pyx_t_3;
+    __pyx_t_3 = 0;
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":63
+ *     def check_connectivity_state(self, bint try_to_connect):
+ *         """A Cython wrapper for Core's check connectivity state API."""
+ *         if self._status == AIO_CHANNEL_STATUS_DESTROYED:             # <<<<<<<<<<<<<<
+ *             return ConnectivityState.shutdown
+ *         else:
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":66
+ *             return ConnectivityState.shutdown
+ *         else:
+ *             return grpc_channel_check_connectivity_state(             # <<<<<<<<<<<<<<
+ *                 self.channel,
+ *                 try_to_connect,
+ */
+  /*else*/ {
+    __Pyx_XDECREF(__pyx_r);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":68
+ *             return grpc_channel_check_connectivity_state(
+ *                 self.channel,
+ *                 try_to_connect,             # <<<<<<<<<<<<<<
+ *             )
+ * 
+ */
+    __pyx_t_3 = __Pyx_PyInt_From_grpc_connectivity_state(grpc_channel_check_connectivity_state(__pyx_v_self->channel, __pyx_v_try_to_connect)); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 66, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_r = __pyx_t_3;
+    __pyx_t_3 = 0;
+    goto __pyx_L0;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":61
+ *         return f"<{class_name} {id_}>"
+ * 
+ *     def check_connectivity_state(self, bint try_to_connect):             # <<<<<<<<<<<<<<
+ *         """A Cython wrapper for Core's check connectivity state API."""
+ *         if self._status == AIO_CHANNEL_STATUS_DESTROYED:
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("_cython.cygrpc.AioChannel.check_connectivity_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+static PyObject *__pyx_gb_7_cython_6cygrpc_10AioChannel_10generator18(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":71
+ *             )
+ * 
+ *     async def watch_connectivity_state(self,             # <<<<<<<<<<<<<<
+ *                                        grpc_connectivity_state last_observed_state,
+ *                                        object deadline):
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_10AioChannel_9watch_connectivity_state(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+PyDoc_STRVAR(__pyx_doc_7_cython_6cygrpc_10AioChannel_8watch_connectivity_state, "Watch for one connectivity state change.\n\n        Keeps mirroring the behavior from Core, so we can easily switch to\n        other design of API if necessary.\n        ");
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_10AioChannel_9watch_connectivity_state = {"watch_connectivity_state", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_10AioChannel_9watch_connectivity_state, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7_cython_6cygrpc_10AioChannel_8watch_connectivity_state};
+static PyObject *__pyx_pw_7_cython_6cygrpc_10AioChannel_9watch_connectivity_state(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+) {
+  grpc_connectivity_state __pyx_v_last_observed_state;
+  PyObject *__pyx_v_deadline = 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("watch_connectivity_state (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_last_observed_state,&__pyx_n_s_deadline,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_last_observed_state)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(8, 71, __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_deadline)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(8, 71, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("watch_connectivity_state", 1, 2, 2, 1); __PYX_ERR(8, 71, __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, "watch_connectivity_state") < 0)) __PYX_ERR(8, 71, __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_last_observed_state = ((grpc_connectivity_state)__Pyx_PyInt_As_grpc_connectivity_state(values[0])); if (unlikely(PyErr_Occurred())) __PYX_ERR(8, 72, __pyx_L3_error)
+    __pyx_v_deadline = values[1];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("watch_connectivity_state", 1, 2, 2, __pyx_nargs); __PYX_ERR(8, 71, __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("_cython.cygrpc.AioChannel.watch_connectivity_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_10AioChannel_8watch_connectivity_state(((struct __pyx_obj_7_cython_6cygrpc_AioChannel *)__pyx_v_self), __pyx_v_last_observed_state, __pyx_v_deadline);
+
+  /* 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_7_cython_6cygrpc_10AioChannel_8watch_connectivity_state(struct __pyx_obj_7_cython_6cygrpc_AioChannel *__pyx_v_self, grpc_connectivity_state __pyx_v_last_observed_state, PyObject *__pyx_v_deadline) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state *__pyx_cur_scope;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("watch_connectivity_state", 0);
+  __pyx_cur_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state, __pyx_empty_tuple, NULL);
+  if (unlikely(!__pyx_cur_scope)) {
+    __pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state *)Py_None);
+    __Pyx_INCREF(Py_None);
+    __PYX_ERR(8, 71, __pyx_L1_error)
+  } else {
+    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+  }
+  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
+  __pyx_cur_scope->__pyx_v_last_observed_state = __pyx_v_last_observed_state;
+  __pyx_cur_scope->__pyx_v_deadline = __pyx_v_deadline;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_deadline);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_deadline);
+  {
+    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7_cython_6cygrpc_10AioChannel_10generator18, __pyx_codeobj__72, (PyObject *) __pyx_cur_scope, __pyx_n_s_watch_connectivity_state, __pyx_n_s_AioChannel_watch_connectivity_st, __pyx_n_s_cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(8, 71, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_cur_scope);
+    __Pyx_RefNannyFinishContext();
+    return (PyObject *) gen;
+  }
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc.AioChannel.watch_connectivity_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_gb_7_cython_6cygrpc_10AioChannel_10generator18(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
+{
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state *__pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state *)__pyx_generator->closure);
+  PyObject *__pyx_r = NULL;
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  unsigned int __pyx_t_4;
+  gpr_timespec __pyx_t_5;
+  grpc_completion_queue *__pyx_t_6;
+  grpc_completion_queue_functor *__pyx_t_7;
+  PyObject *__pyx_t_8 = NULL;
+  PyObject *__pyx_t_9 = NULL;
+  PyObject *__pyx_t_10 = NULL;
+  PyObject *__pyx_t_11 = NULL;
+  int __pyx_t_12;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("watch_connectivity_state", 0);
+  switch (__pyx_generator->resume_label) {
+    case 0: goto __pyx_L3_first_run;
+    case 1: goto __pyx_L10_resume_from_await;
+    default: /* CPython raises the right error here */
+    __Pyx_RefNannyFinishContext();
+    return NULL;
+  }
+  __pyx_L3_first_run:;
+  if (unlikely(!__pyx_sent_value)) __PYX_ERR(8, 71, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":79
+ *         other design of API if necessary.
+ *         """
+ *         if self._status in (AIO_CHANNEL_STATUS_DESTROYED, AIO_CHANNEL_STATUS_CLOSING):             # <<<<<<<<<<<<<<
+ *             raise UsageError('Channel is closed.')
+ * 
+ */
+  switch (__pyx_cur_scope->__pyx_v_self->_status) {
+    case __pyx_e_7_cython_6cygrpc_AIO_CHANNEL_STATUS_DESTROYED:
+    case __pyx_e_7_cython_6cygrpc_AIO_CHANNEL_STATUS_CLOSING:
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":80
+ *         """
+ *         if self._status in (AIO_CHANNEL_STATUS_DESTROYED, AIO_CHANNEL_STATUS_CLOSING):
+ *             raise UsageError('Channel is closed.')             # <<<<<<<<<<<<<<
+ * 
+ *         cdef gpr_timespec c_deadline = _timespec_from_time(deadline)
+ */
+    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_UsageError); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 80, __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_kp_s_Channel_is_closed};
+      __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(8, 80, __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(8, 80, __pyx_L1_error)
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":79
+ *         other design of API if necessary.
+ *         """
+ *         if self._status in (AIO_CHANNEL_STATUS_DESTROYED, AIO_CHANNEL_STATUS_CLOSING):             # <<<<<<<<<<<<<<
+ *             raise UsageError('Channel is closed.')
+ * 
+ */
+    break;
+    default: break;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":82
+ *             raise UsageError('Channel is closed.')
+ * 
+ *         cdef gpr_timespec c_deadline = _timespec_from_time(deadline)             # <<<<<<<<<<<<<<
+ * 
+ *         cdef object future = self.loop.create_future()
+ */
+  __pyx_t_5 = __pyx_f_7_cython_6cygrpc__timespec_from_time(__pyx_cur_scope->__pyx_v_deadline); if (unlikely(PyErr_Occurred())) __PYX_ERR(8, 82, __pyx_L1_error)
+  __pyx_cur_scope->__pyx_v_c_deadline = __pyx_t_5;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":84
+ *         cdef gpr_timespec c_deadline = _timespec_from_time(deadline)
+ * 
+ *         cdef object future = self.loop.create_future()             # <<<<<<<<<<<<<<
+ *         cdef CallbackWrapper wrapper = CallbackWrapper(
+ *             future,
+ */
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self->loop, __pyx_n_s_create_future); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 84, __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, 84, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  }
+  __Pyx_GIVEREF(__pyx_t_1);
+  __pyx_cur_scope->__pyx_v_future = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":85
+ * 
+ *         cdef object future = self.loop.create_future()
+ *         cdef CallbackWrapper wrapper = CallbackWrapper(             # <<<<<<<<<<<<<<
+ *             future,
+ *             self.loop,
+ */
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 85, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_future);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_future);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_cur_scope->__pyx_v_future)) __PYX_ERR(8, 85, __pyx_L1_error);
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self->loop);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self->loop);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_cur_scope->__pyx_v_self->loop)) __PYX_ERR(8, 85, __pyx_L1_error);
+  __Pyx_INCREF((PyObject *)__pyx_v_7_cython_6cygrpc__WATCH_CONNECTIVITY_FAILURE_HANDLER);
+  __Pyx_GIVEREF((PyObject *)__pyx_v_7_cython_6cygrpc__WATCH_CONNECTIVITY_FAILURE_HANDLER);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, ((PyObject *)__pyx_v_7_cython_6cygrpc__WATCH_CONNECTIVITY_FAILURE_HANDLER))) __PYX_ERR(8, 85, __pyx_L1_error);
+  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_7_cython_6cygrpc_CallbackWrapper), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 85, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_GIVEREF(__pyx_t_2);
+  __pyx_cur_scope->__pyx_v_wrapper = ((struct __pyx_obj_7_cython_6cygrpc_CallbackWrapper *)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":93
+ *             last_observed_state,
+ *             c_deadline,
+ *             global_completion_queue(),             # <<<<<<<<<<<<<<
+ *             wrapper.c_functor())
+ * 
+ */
+  __pyx_t_6 = __pyx_f_7_cython_6cygrpc_global_completion_queue(); if (unlikely(__pyx_t_6 == ((grpc_completion_queue *)NULL) && PyErr_Occurred())) __PYX_ERR(8, 93, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":94
+ *             c_deadline,
+ *             global_completion_queue(),
+ *             wrapper.c_functor())             # <<<<<<<<<<<<<<
+ * 
+ *         try:
+ */
+  __pyx_t_7 = ((struct __pyx_vtabstruct_7_cython_6cygrpc_CallbackWrapper *)__pyx_cur_scope->__pyx_v_wrapper->__pyx_vtab)->c_functor(__pyx_cur_scope->__pyx_v_wrapper); if (unlikely(PyErr_Occurred())) __PYX_ERR(8, 94, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":89
+ *             self.loop,
+ *             _WATCH_CONNECTIVITY_FAILURE_HANDLER)
+ *         grpc_channel_watch_connectivity_state(             # <<<<<<<<<<<<<<
+ *             self.channel,
+ *             last_observed_state,
+ */
+  grpc_channel_watch_connectivity_state(__pyx_cur_scope->__pyx_v_self->channel, __pyx_cur_scope->__pyx_v_last_observed_state, __pyx_cur_scope->__pyx_v_c_deadline, __pyx_t_6, __pyx_t_7);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":96
+ *             wrapper.c_functor())
+ * 
+ *         try:             # <<<<<<<<<<<<<<
+ *             await future
+ *         except _WatchConnectivityFailed:
+ */
+  {
+    __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+    __Pyx_XGOTREF(__pyx_t_8);
+    __Pyx_XGOTREF(__pyx_t_9);
+    __Pyx_XGOTREF(__pyx_t_10);
+    /*try:*/ {
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":97
+ * 
+ *         try:
+ *             await future             # <<<<<<<<<<<<<<
+ *         except _WatchConnectivityFailed:
+ *             return False
+ */
+      __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_cur_scope->__pyx_v_future);
+      __Pyx_XGOTREF(__pyx_r);
+      if (likely(__pyx_r)) {
+        __Pyx_XGIVEREF(__pyx_t_8);
+        __pyx_cur_scope->__pyx_t_0 = __pyx_t_8;
+        __Pyx_XGIVEREF(__pyx_t_9);
+        __pyx_cur_scope->__pyx_t_1 = __pyx_t_9;
+        __Pyx_XGIVEREF(__pyx_t_10);
+        __pyx_cur_scope->__pyx_t_2 = __pyx_t_10;
+        __Pyx_XGIVEREF(__pyx_r);
+        __Pyx_RefNannyFinishContext();
+        __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+        /* return from generator, awaiting value */
+        __pyx_generator->resume_label = 1;
+        return __pyx_r;
+        __pyx_L10_resume_from_await:;
+        __pyx_t_8 = __pyx_cur_scope->__pyx_t_0;
+        __pyx_cur_scope->__pyx_t_0 = 0;
+        __Pyx_XGOTREF(__pyx_t_8);
+        __pyx_t_9 = __pyx_cur_scope->__pyx_t_1;
+        __pyx_cur_scope->__pyx_t_1 = 0;
+        __Pyx_XGOTREF(__pyx_t_9);
+        __pyx_t_10 = __pyx_cur_scope->__pyx_t_2;
+        __pyx_cur_scope->__pyx_t_2 = 0;
+        __Pyx_XGOTREF(__pyx_t_10);
+        if (unlikely(!__pyx_sent_value)) __PYX_ERR(8, 97, __pyx_L4_error)
+      } else {
+        PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType();
+        if (exc_type) {
+          if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
+          else __PYX_ERR(8, 97, __pyx_L4_error)
+        }
+      }
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":96
+ *             wrapper.c_functor())
+ * 
+ *         try:             # <<<<<<<<<<<<<<
+ *             await future
+ *         except _WatchConnectivityFailed:
+ */
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":101
+ *             return False
+ *         else:
+ *             return True             # <<<<<<<<<<<<<<
+ * 
+ *     def closing(self):
+ */
+    /*else:*/ {
+      __Pyx_XDECREF(__pyx_r);
+      __pyx_r = NULL; __Pyx_ReturnWithStopIteration(Py_True);
+      goto __pyx_L7_except_return;
+    }
+    __pyx_L4_error:;
+    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":98
+ *         try:
+ *             await future
+ *         except _WatchConnectivityFailed:             # <<<<<<<<<<<<<<
+ *             return False
+ *         else:
+ */
+    __Pyx_ErrFetch(&__pyx_t_2, &__pyx_t_1, &__pyx_t_3);
+    __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_WatchConnectivityFailed); if (unlikely(!__pyx_t_11)) __PYX_ERR(8, 98, __pyx_L6_except_error)
+    __Pyx_GOTREF(__pyx_t_11);
+    __pyx_t_12 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_2, __pyx_t_11);
+    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+    __Pyx_ErrRestore(__pyx_t_2, __pyx_t_1, __pyx_t_3);
+    __pyx_t_2 = 0; __pyx_t_1 = 0; __pyx_t_3 = 0;
+    if (__pyx_t_12) {
+      __Pyx_AddTraceback("_cython.cygrpc.AioChannel.watch_connectivity_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
+      if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_1, &__pyx_t_2) < 0) __PYX_ERR(8, 98, __pyx_L6_except_error)
+      __Pyx_XGOTREF(__pyx_t_3);
+      __Pyx_XGOTREF(__pyx_t_1);
+      __Pyx_XGOTREF(__pyx_t_2);
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":99
+ *             await future
+ *         except _WatchConnectivityFailed:
+ *             return False             # <<<<<<<<<<<<<<
+ *         else:
+ *             return True
+ */
+      __Pyx_XDECREF(__pyx_r);
+      __pyx_r = NULL; __Pyx_ReturnWithStopIteration(Py_False);
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      goto __pyx_L7_except_return;
+    }
+    goto __pyx_L6_except_error;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":96
+ *             wrapper.c_functor())
+ * 
+ *         try:             # <<<<<<<<<<<<<<
+ *             await future
+ *         except _WatchConnectivityFailed:
+ */
+    __pyx_L6_except_error:;
+    __Pyx_XGIVEREF(__pyx_t_8);
+    __Pyx_XGIVEREF(__pyx_t_9);
+    __Pyx_XGIVEREF(__pyx_t_10);
+    __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+    goto __pyx_L1_error;
+    __pyx_L7_except_return:;
+    __Pyx_XGIVEREF(__pyx_t_8);
+    __Pyx_XGIVEREF(__pyx_t_9);
+    __Pyx_XGIVEREF(__pyx_t_10);
+    __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+    goto __pyx_L0;
+  }
+  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":71
+ *             )
+ * 
+ *     async def watch_connectivity_state(self,             # <<<<<<<<<<<<<<
+ *                                        grpc_connectivity_state last_observed_state,
+ *                                        object deadline):
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_Generator_Replace_StopIteration(0);
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("watch_connectivity_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
+  #if !CYTHON_USE_EXC_INFO_STACK
+  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+  #endif
+  __pyx_generator->resume_label = -1;
+  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":103
+ *             return True
+ * 
+ *     def closing(self):             # <<<<<<<<<<<<<<
+ *         self._status = AIO_CHANNEL_STATUS_CLOSING
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_10AioChannel_12closing(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_10AioChannel_12closing = {"closing", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_10AioChannel_12closing, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_10AioChannel_12closing(PyObject *__pyx_v_self, 
+#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("closing (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("closing", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "closing", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_10AioChannel_11closing(((struct __pyx_obj_7_cython_6cygrpc_AioChannel *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_10AioChannel_11closing(struct __pyx_obj_7_cython_6cygrpc_AioChannel *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("closing", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":104
+ * 
+ *     def closing(self):
+ *         self._status = AIO_CHANNEL_STATUS_CLOSING             # <<<<<<<<<<<<<<
+ * 
+ *     def close(self):
+ */
+  __pyx_v_self->_status = __pyx_e_7_cython_6cygrpc_AIO_CHANNEL_STATUS_CLOSING;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":103
+ *             return True
+ * 
+ *     def closing(self):             # <<<<<<<<<<<<<<
+ *         self._status = AIO_CHANNEL_STATUS_CLOSING
+ * 
+ */
+
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":106
+ *         self._status = AIO_CHANNEL_STATUS_CLOSING
+ * 
+ *     def close(self):             # <<<<<<<<<<<<<<
+ *         self._status = AIO_CHANNEL_STATUS_DESTROYED
+ *         grpc_channel_destroy(self.channel)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_10AioChannel_14close(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_10AioChannel_14close = {"close", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_10AioChannel_14close, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_10AioChannel_14close(PyObject *__pyx_v_self, 
+#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("close (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("close", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "close", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_10AioChannel_13close(((struct __pyx_obj_7_cython_6cygrpc_AioChannel *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_10AioChannel_13close(struct __pyx_obj_7_cython_6cygrpc_AioChannel *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("close", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":107
+ * 
+ *     def close(self):
+ *         self._status = AIO_CHANNEL_STATUS_DESTROYED             # <<<<<<<<<<<<<<
+ *         grpc_channel_destroy(self.channel)
+ * 
+ */
+  __pyx_v_self->_status = __pyx_e_7_cython_6cygrpc_AIO_CHANNEL_STATUS_DESTROYED;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":108
+ *     def close(self):
+ *         self._status = AIO_CHANNEL_STATUS_DESTROYED
+ *         grpc_channel_destroy(self.channel)             # <<<<<<<<<<<<<<
+ * 
+ *     def closed(self):
+ */
+  grpc_channel_destroy(__pyx_v_self->channel);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":106
+ *         self._status = AIO_CHANNEL_STATUS_CLOSING
+ * 
+ *     def close(self):             # <<<<<<<<<<<<<<
+ *         self._status = AIO_CHANNEL_STATUS_DESTROYED
+ *         grpc_channel_destroy(self.channel)
+ */
+
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":110
+ *         grpc_channel_destroy(self.channel)
+ * 
+ *     def closed(self):             # <<<<<<<<<<<<<<
+ *         return self._status in (AIO_CHANNEL_STATUS_CLOSING, AIO_CHANNEL_STATUS_DESTROYED)
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_10AioChannel_16closed(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_10AioChannel_16closed = {"closed", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_10AioChannel_16closed, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_10AioChannel_16closed(PyObject *__pyx_v_self, 
+#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("closed (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("closed", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "closed", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_10AioChannel_15closed(((struct __pyx_obj_7_cython_6cygrpc_AioChannel *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_10AioChannel_15closed(struct __pyx_obj_7_cython_6cygrpc_AioChannel *__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("closed", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":111
+ * 
+ *     def closed(self):
+ *         return self._status in (AIO_CHANNEL_STATUS_CLOSING, AIO_CHANNEL_STATUS_DESTROYED)             # <<<<<<<<<<<<<<
+ * 
+ *     def call(self,
+ */
+  __Pyx_XDECREF(__pyx_r);
+  switch (__pyx_v_self->_status) {
+    case __pyx_e_7_cython_6cygrpc_AIO_CHANNEL_STATUS_CLOSING:
+    case __pyx_e_7_cython_6cygrpc_AIO_CHANNEL_STATUS_DESTROYED:
+    __pyx_t_1 = 1;
+    break;
+    default:
+    __pyx_t_1 = 0;
+    break;
+  }
+  __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 111, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":110
+ *         grpc_channel_destroy(self.channel)
+ * 
+ *     def closed(self):             # <<<<<<<<<<<<<<
+ *         return self._status in (AIO_CHANNEL_STATUS_CLOSING, AIO_CHANNEL_STATUS_DESTROYED)
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("_cython.cygrpc.AioChannel.closed", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":113
+ *         return self._status in (AIO_CHANNEL_STATUS_CLOSING, AIO_CHANNEL_STATUS_DESTROYED)
+ * 
+ *     def call(self,             # <<<<<<<<<<<<<<
+ *              bytes method,
+ *              object deadline,
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_10AioChannel_18call(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+PyDoc_STRVAR(__pyx_doc_7_cython_6cygrpc_10AioChannel_17call, "Assembles a Cython Call object.\n\n        Returns:\n          An _AioCall object.\n        ");
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_10AioChannel_18call = {"call", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_10AioChannel_18call, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7_cython_6cygrpc_10AioChannel_17call};
+static PyObject *__pyx_pw_7_cython_6cygrpc_10AioChannel_18call(PyObject *__pyx_v_self, 
+#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_method = 0;
+  PyObject *__pyx_v_deadline = 0;
+  PyObject *__pyx_v_python_call_credentials = 0;
+  PyObject *__pyx_v_wait_for_ready = 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("call (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_method,&__pyx_n_s_deadline,&__pyx_n_s_python_call_credentials,&__pyx_n_s_wait_for_ready,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_method)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(8, 113, __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_deadline)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(8, 113, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("call", 1, 4, 4, 1); __PYX_ERR(8, 113, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_python_call_credentials)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(8, 113, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("call", 1, 4, 4, 2); __PYX_ERR(8, 113, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  3:
+        if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_wait_for_ready)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(8, 113, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("call", 1, 4, 4, 3); __PYX_ERR(8, 113, __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, "call") < 0)) __PYX_ERR(8, 113, __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_method = ((PyObject*)values[0]);
+    __pyx_v_deadline = values[1];
+    __pyx_v_python_call_credentials = values[2];
+    __pyx_v_wait_for_ready = values[3];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("call", 1, 4, 4, __pyx_nargs); __PYX_ERR(8, 113, __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("_cython.cygrpc.AioChannel.call", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_method), (&PyBytes_Type), 1, "method", 1))) __PYX_ERR(8, 114, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_10AioChannel_17call(((struct __pyx_obj_7_cython_6cygrpc_AioChannel *)__pyx_v_self), __pyx_v_method, __pyx_v_deadline, __pyx_v_python_call_credentials, __pyx_v_wait_for_ready);
+
+  /* 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_7_cython_6cygrpc_10AioChannel_17call(struct __pyx_obj_7_cython_6cygrpc_AioChannel *__pyx_v_self, PyObject *__pyx_v_method, PyObject *__pyx_v_deadline, PyObject *__pyx_v_python_call_credentials, PyObject *__pyx_v_wait_for_ready) {
+  struct __pyx_obj_7_cython_6cygrpc_CallCredentials *__pyx_v_cython_call_credentials = 0;
+  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("call", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":123
+ *           An _AioCall object.
+ *         """
+ *         if self.closed():             # <<<<<<<<<<<<<<
+ *             raise UsageError('Channel is closed.')
+ * 
+ */
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_closed); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 123, __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, 123, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  }
+  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(8, 123, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (unlikely(__pyx_t_5)) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":124
+ *         """
+ *         if self.closed():
+ *             raise UsageError('Channel is closed.')             # <<<<<<<<<<<<<<
+ * 
+ *         cdef CallCredentials cython_call_credentials
+ */
+    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_UsageError); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 124, __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_kp_s_Channel_is_closed};
+      __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(8, 124, __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(8, 124, __pyx_L1_error)
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":123
+ *           An _AioCall object.
+ *         """
+ *         if self.closed():             # <<<<<<<<<<<<<<
+ *             raise UsageError('Channel is closed.')
+ * 
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":127
+ * 
+ *         cdef CallCredentials cython_call_credentials
+ *         if python_call_credentials is not None:             # <<<<<<<<<<<<<<
+ *             if not self._is_secure:
+ *                 raise UsageError("Call credentials are only valid on secure channels")
+ */
+  __pyx_t_5 = (__pyx_v_python_call_credentials != Py_None);
+  if (__pyx_t_5) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":128
+ *         cdef CallCredentials cython_call_credentials
+ *         if python_call_credentials is not None:
+ *             if not self._is_secure:             # <<<<<<<<<<<<<<
+ *                 raise UsageError("Call credentials are only valid on secure channels")
+ * 
+ */
+    __pyx_t_5 = (!__pyx_v_self->_is_secure);
+    if (unlikely(__pyx_t_5)) {
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":129
+ *         if python_call_credentials is not None:
+ *             if not self._is_secure:
+ *                 raise UsageError("Call credentials are only valid on secure channels")             # <<<<<<<<<<<<<<
+ * 
+ *             cython_call_credentials = python_call_credentials._credentials
+ */
+      __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_UsageError); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 129, __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_kp_s_Call_credentials_are_only_valid};
+        __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(8, 129, __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(8, 129, __pyx_L1_error)
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":128
+ *         cdef CallCredentials cython_call_credentials
+ *         if python_call_credentials is not None:
+ *             if not self._is_secure:             # <<<<<<<<<<<<<<
+ *                 raise UsageError("Call credentials are only valid on secure channels")
+ * 
+ */
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":131
+ *                 raise UsageError("Call credentials are only valid on secure channels")
+ * 
+ *             cython_call_credentials = python_call_credentials._credentials             # <<<<<<<<<<<<<<
+ *         else:
+ *             cython_call_credentials = None
+ */
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_python_call_credentials, __pyx_n_s_credentials_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 131, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_7_cython_6cygrpc_CallCredentials))))) __PYX_ERR(8, 131, __pyx_L1_error)
+    __pyx_v_cython_call_credentials = ((struct __pyx_obj_7_cython_6cygrpc_CallCredentials *)__pyx_t_1);
+    __pyx_t_1 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":127
+ * 
+ *         cdef CallCredentials cython_call_credentials
+ *         if python_call_credentials is not None:             # <<<<<<<<<<<<<<
+ *             if not self._is_secure:
+ *                 raise UsageError("Call credentials are only valid on secure channels")
+ */
+    goto __pyx_L4;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":133
+ *             cython_call_credentials = python_call_credentials._credentials
+ *         else:
+ *             cython_call_credentials = None             # <<<<<<<<<<<<<<
+ * 
+ *         return _AioCall(self, deadline, method, cython_call_credentials, wait_for_ready)
+ */
+  /*else*/ {
+    __Pyx_INCREF(Py_None);
+    __pyx_v_cython_call_credentials = ((struct __pyx_obj_7_cython_6cygrpc_CallCredentials *)Py_None);
+  }
+  __pyx_L4:;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":135
+ *             cython_call_credentials = None
+ * 
+ *         return _AioCall(self, deadline, method, cython_call_credentials, wait_for_ready)             # <<<<<<<<<<<<<<
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyTuple_New(5); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 135, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF((PyObject *)__pyx_v_self);
+  __Pyx_GIVEREF((PyObject *)__pyx_v_self);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self))) __PYX_ERR(8, 135, __pyx_L1_error);
+  __Pyx_INCREF(__pyx_v_deadline);
+  __Pyx_GIVEREF(__pyx_v_deadline);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_deadline)) __PYX_ERR(8, 135, __pyx_L1_error);
+  __Pyx_INCREF(__pyx_v_method);
+  __Pyx_GIVEREF(__pyx_v_method);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_method)) __PYX_ERR(8, 135, __pyx_L1_error);
+  __Pyx_INCREF((PyObject *)__pyx_v_cython_call_credentials);
+  __Pyx_GIVEREF((PyObject *)__pyx_v_cython_call_credentials);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 3, ((PyObject *)__pyx_v_cython_call_credentials))) __PYX_ERR(8, 135, __pyx_L1_error);
+  __Pyx_INCREF(__pyx_v_wait_for_ready);
+  __Pyx_GIVEREF(__pyx_v_wait_for_ready);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 4, __pyx_v_wait_for_ready)) __PYX_ERR(8, 135, __pyx_L1_error);
+  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_7_cython_6cygrpc__AioCall), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 135, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":113
+ *         return self._status in (AIO_CHANNEL_STATUS_CLOSING, AIO_CHANNEL_STATUS_DESTROYED)
+ * 
+ *     def call(self,             # <<<<<<<<<<<<<<
+ *              bytes method,
+ *              object deadline,
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("_cython.cygrpc.AioChannel.call", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_cython_call_credentials);
+  __Pyx_XGIVEREF(__pyx_r);
+  __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_7_cython_6cygrpc_10AioChannel_20__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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_10AioChannel_20__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_10AioChannel_20__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_10AioChannel_20__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_7_cython_6cygrpc_10AioChannel_19__reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc_AioChannel *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_10AioChannel_19__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_AioChannel *__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(10, 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("_cython.cygrpc.AioChannel.__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_7_cython_6cygrpc_10AioChannel_22__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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_10AioChannel_22__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_10AioChannel_22__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_10AioChannel_22__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(10, 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(10, 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(10, 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("_cython.cygrpc.AioChannel.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_10AioChannel_21__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc_AioChannel *)__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_7_cython_6cygrpc_10AioChannel_21__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_AioChannel *__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(10, 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("_cython.cygrpc.AioChannel.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":25
+ * cdef str _SERVER_STOPPED_DETAILS = 'Server already stopped.'
+ * 
+ * cdef _augment_metadata(tuple metadata, object compression):             # <<<<<<<<<<<<<<
+ *     if compression is None:
+ *         return metadata
+ */
+
+static PyObject *__pyx_f_7_cython_6cygrpc__augment_metadata(PyObject *__pyx_v_metadata, PyObject *__pyx_v_compression) {
+  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;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_augment_metadata", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":26
+ * 
+ * cdef _augment_metadata(tuple metadata, object compression):
+ *     if compression is None:             # <<<<<<<<<<<<<<
+ *         return metadata
+ *     else:
+ */
+  __pyx_t_1 = (__pyx_v_compression == Py_None);
+  if (__pyx_t_1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":27
+ * cdef _augment_metadata(tuple metadata, object compression):
+ *     if compression is None:
+ *         return metadata             # <<<<<<<<<<<<<<
+ *     else:
+ *         return ((
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_INCREF(__pyx_v_metadata);
+    __pyx_r = __pyx_v_metadata;
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":26
+ * 
+ * cdef _augment_metadata(tuple metadata, object compression):
+ *     if compression is None:             # <<<<<<<<<<<<<<
+ *         return metadata
+ *     else:
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":29
+ *         return metadata
+ *     else:
+ *         return ((             # <<<<<<<<<<<<<<
+ *             GRPC_COMPRESSION_REQUEST_ALGORITHM_MD_KEY,
+ *             _COMPRESSION_METADATA_STRING_MAPPING[compression]
+ */
+  /*else*/ {
+    __Pyx_XDECREF(__pyx_r);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":30
+ *     else:
+ *         return ((
+ *             GRPC_COMPRESSION_REQUEST_ALGORITHM_MD_KEY,             # <<<<<<<<<<<<<<
+ *             _COMPRESSION_METADATA_STRING_MAPPING[compression]
+ *         ),) + metadata
+ */
+    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_GRPC_COMPRESSION_REQUEST_ALGORIT); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 30, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":31
+ *         return ((
+ *             GRPC_COMPRESSION_REQUEST_ALGORITHM_MD_KEY,
+ *             _COMPRESSION_METADATA_STRING_MAPPING[compression]             # <<<<<<<<<<<<<<
+ *         ),) + metadata
+ * 
+ */
+    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_COMPRESSION_METADATA_STRING_MAP); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 31, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_t_3, __pyx_v_compression); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 31, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":30
+ *     else:
+ *         return ((
+ *             GRPC_COMPRESSION_REQUEST_ALGORITHM_MD_KEY,             # <<<<<<<<<<<<<<
+ *             _COMPRESSION_METADATA_STRING_MAPPING[compression]
+ *         ),) + metadata
+ */
+    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 30, __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(9, 30, __pyx_L1_error);
+    __Pyx_GIVEREF(__pyx_t_4);
+    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_4)) __PYX_ERR(9, 30, __pyx_L1_error);
+    __pyx_t_2 = 0;
+    __pyx_t_4 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":29
+ *         return metadata
+ *     else:
+ *         return ((             # <<<<<<<<<<<<<<
+ *             GRPC_COMPRESSION_REQUEST_ALGORITHM_MD_KEY,
+ *             _COMPRESSION_METADATA_STRING_MAPPING[compression]
+ */
+    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 29, __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(9, 29, __pyx_L1_error);
+    __pyx_t_3 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":32
+ *             GRPC_COMPRESSION_REQUEST_ALGORITHM_MD_KEY,
+ *             _COMPRESSION_METADATA_STRING_MAPPING[compression]
+ *         ),) + metadata             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+    __pyx_t_3 = PyNumber_Add(__pyx_t_4, __pyx_v_metadata); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 32, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_3;
+    __pyx_t_3 = 0;
+    goto __pyx_L0;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":25
+ * cdef str _SERVER_STOPPED_DETAILS = 'Server already stopped.'
+ * 
+ * cdef _augment_metadata(tuple metadata, object compression):             # <<<<<<<<<<<<<<
+ *     if compression is None:
+ *         return metadata
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("_cython.cygrpc._augment_metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":36
+ * 
+ * cdef class _HandlerCallDetails:
+ *     def __cinit__(self, str method, tuple invocation_metadata):             # <<<<<<<<<<<<<<
+ *         self.method = method
+ *         self.invocation_metadata = invocation_metadata
+ */
+
+/* Python wrapper */
+static int __pyx_pw_7_cython_6cygrpc_19_HandlerCallDetails_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_7_cython_6cygrpc_19_HandlerCallDetails_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_method = 0;
+  PyObject *__pyx_v_invocation_metadata = 0;
+  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject* values[2] = {0,0};
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  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);
+  {
+    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_method,&__pyx_n_s_invocation_metadata,0};
+    if (__pyx_kwds) {
+      Py_ssize_t kw_args;
+      switch (__pyx_nargs) {
+        case  2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
+      switch (__pyx_nargs) {
+        case  0:
+        if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_method)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 36, __pyx_L3_error)
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_invocation_metadata)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 36, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, 1); __PYX_ERR(9, 36, __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, "__cinit__") < 0)) __PYX_ERR(9, 36, __pyx_L3_error)
+      }
+    } else if (unlikely(__pyx_nargs != 2)) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+      values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
+    }
+    __pyx_v_method = ((PyObject*)values[0]);
+    __pyx_v_invocation_metadata = ((PyObject*)values[1]);
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, __pyx_nargs); __PYX_ERR(9, 36, __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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_AddTraceback("_cython.cygrpc._HandlerCallDetails.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_method), (&PyString_Type), 1, "method", 1))) __PYX_ERR(9, 36, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_invocation_metadata), (&PyTuple_Type), 1, "invocation_metadata", 1))) __PYX_ERR(9, 36, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_19_HandlerCallDetails___cinit__(((struct __pyx_obj_7_cython_6cygrpc__HandlerCallDetails *)__pyx_v_self), __pyx_v_method, __pyx_v_invocation_metadata);
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = -1;
+  __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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_7_cython_6cygrpc_19_HandlerCallDetails___cinit__(struct __pyx_obj_7_cython_6cygrpc__HandlerCallDetails *__pyx_v_self, PyObject *__pyx_v_method, PyObject *__pyx_v_invocation_metadata) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__cinit__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":37
+ * cdef class _HandlerCallDetails:
+ *     def __cinit__(self, str method, tuple invocation_metadata):
+ *         self.method = method             # <<<<<<<<<<<<<<
+ *         self.invocation_metadata = invocation_metadata
+ * 
+ */
+  __Pyx_INCREF(__pyx_v_method);
+  __Pyx_GIVEREF(__pyx_v_method);
+  __Pyx_GOTREF(__pyx_v_self->method);
+  __Pyx_DECREF(__pyx_v_self->method);
+  __pyx_v_self->method = __pyx_v_method;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":38
+ *     def __cinit__(self, str method, tuple invocation_metadata):
+ *         self.method = method
+ *         self.invocation_metadata = invocation_metadata             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_INCREF(__pyx_v_invocation_metadata);
+  __Pyx_GIVEREF(__pyx_v_invocation_metadata);
+  __Pyx_GOTREF(__pyx_v_self->invocation_metadata);
+  __Pyx_DECREF(__pyx_v_self->invocation_metadata);
+  __pyx_v_self->invocation_metadata = __pyx_v_invocation_metadata;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":36
+ * 
+ * cdef class _HandlerCallDetails:
+ *     def __cinit__(self, str method, tuple invocation_metadata):             # <<<<<<<<<<<<<<
+ *         self.method = method
+ *         self.invocation_metadata = invocation_metadata
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pxd.pxi":16
+ * 
+ * cdef class _HandlerCallDetails:
+ *     cdef readonly str method             # <<<<<<<<<<<<<<
+ *     cdef readonly tuple invocation_metadata
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_19_HandlerCallDetails_6method_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_19_HandlerCallDetails_6method_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_7_cython_6cygrpc_19_HandlerCallDetails_6method___get__(((struct __pyx_obj_7_cython_6cygrpc__HandlerCallDetails *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_19_HandlerCallDetails_6method___get__(struct __pyx_obj_7_cython_6cygrpc__HandlerCallDetails *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->method);
+  __pyx_r = __pyx_v_self->method;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pxd.pxi":17
+ * cdef class _HandlerCallDetails:
+ *     cdef readonly str method
+ *     cdef readonly tuple invocation_metadata             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_19_HandlerCallDetails_19invocation_metadata_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_19_HandlerCallDetails_19invocation_metadata_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_7_cython_6cygrpc_19_HandlerCallDetails_19invocation_metadata___get__(((struct __pyx_obj_7_cython_6cygrpc__HandlerCallDetails *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_19_HandlerCallDetails_19invocation_metadata___get__(struct __pyx_obj_7_cython_6cygrpc__HandlerCallDetails *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 1);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->invocation_metadata);
+  __pyx_r = __pyx_v_self->invocation_metadata;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __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_7_cython_6cygrpc_19_HandlerCallDetails_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_19_HandlerCallDetails_3__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_19_HandlerCallDetails_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_19_HandlerCallDetails_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_7_cython_6cygrpc_19_HandlerCallDetails_2__reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc__HandlerCallDetails *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_19_HandlerCallDetails_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__HandlerCallDetails *__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(10, 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("_cython.cygrpc._HandlerCallDetails.__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_7_cython_6cygrpc_19_HandlerCallDetails_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_19_HandlerCallDetails_5__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_19_HandlerCallDetails_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_19_HandlerCallDetails_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(10, 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(10, 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(10, 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("_cython.cygrpc._HandlerCallDetails.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_19_HandlerCallDetails_4__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc__HandlerCallDetails *)__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_7_cython_6cygrpc_19_HandlerCallDetails_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__HandlerCallDetails *__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(10, 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("_cython.cygrpc._HandlerCallDetails.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":47
+ * cdef class RPCState:
+ * 
+ *     def __cinit__(self, AioServer server):             # <<<<<<<<<<<<<<
+ *         init_grpc_aio()
+ *         self.call = NULL
+ */
+
+/* Python wrapper */
+static int __pyx_pw_7_cython_6cygrpc_8RPCState_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_7_cython_6cygrpc_8RPCState_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct __pyx_obj_7_cython_6cygrpc_AioServer *__pyx_v_server = 0;
+  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject* values[1] = {0};
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  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);
+  {
+    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_server,0};
+    if (__pyx_kwds) {
+      Py_ssize_t kw_args;
+      switch (__pyx_nargs) {
+        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
+      switch (__pyx_nargs) {
+        case  0:
+        if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_server)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 47, __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, "__cinit__") < 0)) __PYX_ERR(9, 47, __pyx_L3_error)
+      }
+    } else if (unlikely(__pyx_nargs != 1)) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+    }
+    __pyx_v_server = ((struct __pyx_obj_7_cython_6cygrpc_AioServer *)values[0]);
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 47, __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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_AddTraceback("_cython.cygrpc.RPCState.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_server), __pyx_ptype_7_cython_6cygrpc_AioServer, 1, "server", 0))) __PYX_ERR(9, 47, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_8RPCState___cinit__(((struct __pyx_obj_7_cython_6cygrpc_RPCState *)__pyx_v_self), __pyx_v_server);
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = -1;
+  __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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_7_cython_6cygrpc_8RPCState___cinit__(struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_self, struct __pyx_obj_7_cython_6cygrpc_AioServer *__pyx_v_server) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  grpc_status_code __pyx_t_3;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__cinit__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":48
+ * 
+ *     def __cinit__(self, AioServer server):
+ *         init_grpc_aio()             # <<<<<<<<<<<<<<
+ *         self.call = NULL
+ *         self.server = server
+ */
+  __pyx_t_1 = __pyx_f_7_cython_6cygrpc_init_grpc_aio(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 48, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":49
+ *     def __cinit__(self, AioServer server):
+ *         init_grpc_aio()
+ *         self.call = NULL             # <<<<<<<<<<<<<<
+ *         self.server = server
+ *         grpc_metadata_array_init(&self.request_metadata)
+ */
+  __pyx_v_self->__pyx_base.call = NULL;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":50
+ *         init_grpc_aio()
+ *         self.call = NULL
+ *         self.server = server             # <<<<<<<<<<<<<<
+ *         grpc_metadata_array_init(&self.request_metadata)
+ *         grpc_call_details_init(&self.details)
+ */
+  __Pyx_INCREF((PyObject *)__pyx_v_server);
+  __Pyx_GIVEREF((PyObject *)__pyx_v_server);
+  __Pyx_GOTREF((PyObject *)__pyx_v_self->server);
+  __Pyx_DECREF((PyObject *)__pyx_v_self->server);
+  __pyx_v_self->server = __pyx_v_server;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":51
+ *         self.call = NULL
+ *         self.server = server
+ *         grpc_metadata_array_init(&self.request_metadata)             # <<<<<<<<<<<<<<
+ *         grpc_call_details_init(&self.details)
+ *         self.client_closed = False
+ */
+  grpc_metadata_array_init((&__pyx_v_self->request_metadata));
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":52
+ *         self.server = server
+ *         grpc_metadata_array_init(&self.request_metadata)
+ *         grpc_call_details_init(&self.details)             # <<<<<<<<<<<<<<
+ *         self.client_closed = False
+ *         self.abort_exception = None
+ */
+  grpc_call_details_init((&__pyx_v_self->details));
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":53
+ *         grpc_metadata_array_init(&self.request_metadata)
+ *         grpc_call_details_init(&self.details)
+ *         self.client_closed = False             # <<<<<<<<<<<<<<
+ *         self.abort_exception = None
+ *         self.metadata_sent = False
+ */
+  __pyx_v_self->client_closed = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":54
+ *         grpc_call_details_init(&self.details)
+ *         self.client_closed = False
+ *         self.abort_exception = None             # <<<<<<<<<<<<<<
+ *         self.metadata_sent = False
+ *         self.status_sent = False
+ */
+  __Pyx_INCREF(Py_None);
+  __Pyx_GIVEREF(Py_None);
+  __Pyx_GOTREF(__pyx_v_self->abort_exception);
+  __Pyx_DECREF(__pyx_v_self->abort_exception);
+  __pyx_v_self->abort_exception = Py_None;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":55
+ *         self.client_closed = False
+ *         self.abort_exception = None
+ *         self.metadata_sent = False             # <<<<<<<<<<<<<<
+ *         self.status_sent = False
+ *         self.status_code = StatusCode.ok
+ */
+  __pyx_v_self->metadata_sent = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":56
+ *         self.abort_exception = None
+ *         self.metadata_sent = False
+ *         self.status_sent = False             # <<<<<<<<<<<<<<
+ *         self.status_code = StatusCode.ok
+ *         self.py_status_code = None
+ */
+  __pyx_v_self->status_sent = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":57
+ *         self.metadata_sent = False
+ *         self.status_sent = False
+ *         self.status_code = StatusCode.ok             # <<<<<<<<<<<<<<
+ *         self.py_status_code = None
+ *         self.status_details = ''
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_StatusCode); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 57, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ok); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 57, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_3 = ((grpc_status_code)__Pyx_PyInt_As_grpc_status_code(__pyx_t_2)); if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 57, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_v_self->status_code = __pyx_t_3;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":58
+ *         self.status_sent = False
+ *         self.status_code = StatusCode.ok
+ *         self.py_status_code = None             # <<<<<<<<<<<<<<
+ *         self.status_details = ''
+ *         self.trailing_metadata = _IMMUTABLE_EMPTY_METADATA
+ */
+  __Pyx_INCREF(Py_None);
+  __Pyx_GIVEREF(Py_None);
+  __Pyx_GOTREF(__pyx_v_self->py_status_code);
+  __Pyx_DECREF(__pyx_v_self->py_status_code);
+  __pyx_v_self->py_status_code = Py_None;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":59
+ *         self.status_code = StatusCode.ok
+ *         self.py_status_code = None
+ *         self.status_details = ''             # <<<<<<<<<<<<<<
+ *         self.trailing_metadata = _IMMUTABLE_EMPTY_METADATA
+ *         self.compression_algorithm = None
+ */
+  __Pyx_INCREF(__pyx_kp_s__7);
+  __Pyx_GIVEREF(__pyx_kp_s__7);
+  __Pyx_GOTREF(__pyx_v_self->status_details);
+  __Pyx_DECREF(__pyx_v_self->status_details);
+  __pyx_v_self->status_details = __pyx_kp_s__7;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":60
+ *         self.py_status_code = None
+ *         self.status_details = ''
+ *         self.trailing_metadata = _IMMUTABLE_EMPTY_METADATA             # <<<<<<<<<<<<<<
+ *         self.compression_algorithm = None
+ *         self.disable_next_compression = False
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_IMMUTABLE_EMPTY_METADATA); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 60, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (!(likely(PyTuple_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_t_2))) __PYX_ERR(9, 60, __pyx_L1_error)
+  __Pyx_GIVEREF(__pyx_t_2);
+  __Pyx_GOTREF(__pyx_v_self->trailing_metadata);
+  __Pyx_DECREF(__pyx_v_self->trailing_metadata);
+  __pyx_v_self->trailing_metadata = ((PyObject*)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":61
+ *         self.status_details = ''
+ *         self.trailing_metadata = _IMMUTABLE_EMPTY_METADATA
+ *         self.compression_algorithm = None             # <<<<<<<<<<<<<<
+ *         self.disable_next_compression = False
+ *         self.callbacks = []
+ */
+  __Pyx_INCREF(Py_None);
+  __Pyx_GIVEREF(Py_None);
+  __Pyx_GOTREF(__pyx_v_self->compression_algorithm);
+  __Pyx_DECREF(__pyx_v_self->compression_algorithm);
+  __pyx_v_self->compression_algorithm = Py_None;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":62
+ *         self.trailing_metadata = _IMMUTABLE_EMPTY_METADATA
+ *         self.compression_algorithm = None
+ *         self.disable_next_compression = False             # <<<<<<<<<<<<<<
+ *         self.callbacks = []
+ * 
+ */
+  __pyx_v_self->disable_next_compression = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":63
+ *         self.compression_algorithm = None
+ *         self.disable_next_compression = False
+ *         self.callbacks = []             # <<<<<<<<<<<<<<
+ * 
+ *     cdef bytes method(self):
+ */
+  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 63, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_2);
+  __Pyx_GOTREF(__pyx_v_self->callbacks);
+  __Pyx_DECREF(__pyx_v_self->callbacks);
+  __pyx_v_self->callbacks = __pyx_t_2;
+  __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":47
+ * cdef class RPCState:
+ * 
+ *     def __cinit__(self, AioServer server):             # <<<<<<<<<<<<<<
+ *         init_grpc_aio()
+ *         self.call = NULL
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("_cython.cygrpc.RPCState.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":65
+ *         self.callbacks = []
+ * 
+ *     cdef bytes method(self):             # <<<<<<<<<<<<<<
+ *         return _slice_bytes(self.details.method)
+ * 
+ */
+
+static PyObject *__pyx_f_7_cython_6cygrpc_8RPCState_method(struct __pyx_obj_7_cython_6cygrpc_RPCState *__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("method", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":66
+ * 
+ *     cdef bytes method(self):
+ *         return _slice_bytes(self.details.method)             # <<<<<<<<<<<<<<
+ * 
+ *     cdef tuple invocation_metadata(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_7_cython_6cygrpc__slice_bytes(__pyx_v_self->details.method); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 66, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":65
+ *         self.callbacks = []
+ * 
+ *     cdef bytes method(self):             # <<<<<<<<<<<<<<
+ *         return _slice_bytes(self.details.method)
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.RPCState.method", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":68
+ *         return _slice_bytes(self.details.method)
+ * 
+ *     cdef tuple invocation_metadata(self):             # <<<<<<<<<<<<<<
+ *         return _metadata(&self.request_metadata)
+ * 
+ */
+
+static PyObject *__pyx_f_7_cython_6cygrpc_8RPCState_invocation_metadata(struct __pyx_obj_7_cython_6cygrpc_RPCState *__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("invocation_metadata", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":69
+ * 
+ *     cdef tuple invocation_metadata(self):
+ *         return _metadata(&self.request_metadata)             # <<<<<<<<<<<<<<
+ * 
+ *     cdef void raise_for_termination(self) except *:
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_7_cython_6cygrpc__metadata((&__pyx_v_self->request_metadata)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 69, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":68
+ *         return _slice_bytes(self.details.method)
+ * 
+ *     cdef tuple invocation_metadata(self):             # <<<<<<<<<<<<<<
+ *         return _metadata(&self.request_metadata)
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.RPCState.invocation_metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":71
+ *         return _metadata(&self.request_metadata)
+ * 
+ *     cdef void raise_for_termination(self) except *:             # <<<<<<<<<<<<<<
+ *         """Raise exceptions if RPC is not running.
+ * 
+ */
+
+static void __pyx_f_7_cython_6cygrpc_8RPCState_raise_for_termination(struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_self) {
+  __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;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("raise_for_termination", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":81
+ *         into Core functions, otherwise, segfault.
+ *         """
+ *         if self.abort_exception is not None:             # <<<<<<<<<<<<<<
+ *             raise self.abort_exception
+ *         if self.status_sent:
+ */
+  __pyx_t_1 = (__pyx_v_self->abort_exception != Py_None);
+  if (unlikely(__pyx_t_1)) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":82
+ *         """
+ *         if self.abort_exception is not None:
+ *             raise self.abort_exception             # <<<<<<<<<<<<<<
+ *         if self.status_sent:
+ *             raise UsageError(_RPC_FINISHED_DETAILS)
+ */
+    __Pyx_Raise(__pyx_v_self->abort_exception, 0, 0, 0);
+    __PYX_ERR(9, 82, __pyx_L1_error)
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":81
+ *         into Core functions, otherwise, segfault.
+ *         """
+ *         if self.abort_exception is not None:             # <<<<<<<<<<<<<<
+ *             raise self.abort_exception
+ *         if self.status_sent:
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":83
+ *         if self.abort_exception is not None:
+ *             raise self.abort_exception
+ *         if self.status_sent:             # <<<<<<<<<<<<<<
+ *             raise UsageError(_RPC_FINISHED_DETAILS)
+ *         if self.server._status == AIO_SERVER_STATUS_STOPPED:
+ */
+  if (unlikely(__pyx_v_self->status_sent)) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":84
+ *             raise self.abort_exception
+ *         if self.status_sent:
+ *             raise UsageError(_RPC_FINISHED_DETAILS)             # <<<<<<<<<<<<<<
+ *         if self.server._status == AIO_SERVER_STATUS_STOPPED:
+ *             raise _ServerStoppedError(_SERVER_STOPPED_DETAILS)
+ */
+    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_UsageError); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 84, __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_7_cython_6cygrpc__RPC_FINISHED_DETAILS};
+      __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(9, 84, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    }
+    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __PYX_ERR(9, 84, __pyx_L1_error)
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":83
+ *         if self.abort_exception is not None:
+ *             raise self.abort_exception
+ *         if self.status_sent:             # <<<<<<<<<<<<<<
+ *             raise UsageError(_RPC_FINISHED_DETAILS)
+ *         if self.server._status == AIO_SERVER_STATUS_STOPPED:
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":85
+ *         if self.status_sent:
+ *             raise UsageError(_RPC_FINISHED_DETAILS)
+ *         if self.server._status == AIO_SERVER_STATUS_STOPPED:             # <<<<<<<<<<<<<<
+ *             raise _ServerStoppedError(_SERVER_STOPPED_DETAILS)
+ * 
+ */
+  __pyx_t_1 = (__pyx_v_self->server->_status == __pyx_e_7_cython_6cygrpc_AIO_SERVER_STATUS_STOPPED);
+  if (unlikely(__pyx_t_1)) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":86
+ *             raise UsageError(_RPC_FINISHED_DETAILS)
+ *         if self.server._status == AIO_SERVER_STATUS_STOPPED:
+ *             raise _ServerStoppedError(_SERVER_STOPPED_DETAILS)             # <<<<<<<<<<<<<<
+ * 
+ *     cdef int get_write_flag(self):
+ */
+    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ServerStoppedError); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 86, __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_7_cython_6cygrpc__SERVER_STOPPED_DETAILS};
+      __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(9, 86, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    }
+    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __PYX_ERR(9, 86, __pyx_L1_error)
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":85
+ *         if self.status_sent:
+ *             raise UsageError(_RPC_FINISHED_DETAILS)
+ *         if self.server._status == AIO_SERVER_STATUS_STOPPED:             # <<<<<<<<<<<<<<
+ *             raise _ServerStoppedError(_SERVER_STOPPED_DETAILS)
+ * 
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":71
+ *         return _metadata(&self.request_metadata)
+ * 
+ *     cdef void raise_for_termination(self) except *:             # <<<<<<<<<<<<<<
+ *         """Raise exceptions if RPC is not running.
+ * 
+ */
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("_cython.cygrpc.RPCState.raise_for_termination", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":88
+ *             raise _ServerStoppedError(_SERVER_STOPPED_DETAILS)
+ * 
+ *     cdef int get_write_flag(self):             # <<<<<<<<<<<<<<
+ *         if self.disable_next_compression:
+ *             self.disable_next_compression = False
+ */
+
+static int __pyx_f_7_cython_6cygrpc_8RPCState_get_write_flag(struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_self) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_t_3;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_write_flag", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":89
+ * 
+ *     cdef int get_write_flag(self):
+ *         if self.disable_next_compression:             # <<<<<<<<<<<<<<
+ *             self.disable_next_compression = False
+ *             return WriteFlag.no_compress
+ */
+  if (__pyx_v_self->disable_next_compression) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":90
+ *     cdef int get_write_flag(self):
+ *         if self.disable_next_compression:
+ *             self.disable_next_compression = False             # <<<<<<<<<<<<<<
+ *             return WriteFlag.no_compress
+ *         else:
+ */
+    __pyx_v_self->disable_next_compression = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":91
+ *         if self.disable_next_compression:
+ *             self.disable_next_compression = False
+ *             return WriteFlag.no_compress             # <<<<<<<<<<<<<<
+ *         else:
+ *             return _EMPTY_FLAG
+ */
+    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_WriteFlag); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 91, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_no_compress); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 91, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 91, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_r = __pyx_t_3;
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":89
+ * 
+ *     cdef int get_write_flag(self):
+ *         if self.disable_next_compression:             # <<<<<<<<<<<<<<
+ *             self.disable_next_compression = False
+ *             return WriteFlag.no_compress
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":93
+ *             return WriteFlag.no_compress
+ *         else:
+ *             return _EMPTY_FLAG             # <<<<<<<<<<<<<<
+ * 
+ *     cdef Operation create_send_initial_metadata_op_if_not_sent(self):
+ */
+  /*else*/ {
+    __pyx_r = __pyx_v_7_cython_6cygrpc__EMPTY_FLAG;
+    goto __pyx_L0;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":88
+ *             raise _ServerStoppedError(_SERVER_STOPPED_DETAILS)
+ * 
+ *     cdef int get_write_flag(self):             # <<<<<<<<<<<<<<
+ *         if self.disable_next_compression:
+ *             self.disable_next_compression = False
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("_cython.cygrpc.RPCState.get_write_flag", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":95
+ *             return _EMPTY_FLAG
+ * 
+ *     cdef Operation create_send_initial_metadata_op_if_not_sent(self):             # <<<<<<<<<<<<<<
+ *         cdef SendInitialMetadataOperation op
+ *         if self.metadata_sent:
+ */
+
+static struct __pyx_obj_7_cython_6cygrpc_Operation *__pyx_f_7_cython_6cygrpc_8RPCState_create_send_initial_metadata_op_if_not_sent(struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_self) {
+  struct __pyx_obj_7_cython_6cygrpc_SendInitialMetadataOperation *__pyx_v_op = 0;
+  struct __pyx_obj_7_cython_6cygrpc_Operation *__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("create_send_initial_metadata_op_if_not_sent", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":97
+ *     cdef Operation create_send_initial_metadata_op_if_not_sent(self):
+ *         cdef SendInitialMetadataOperation op
+ *         if self.metadata_sent:             # <<<<<<<<<<<<<<
+ *             return None
+ *         else:
+ */
+  if (__pyx_v_self->metadata_sent) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":98
+ *         cdef SendInitialMetadataOperation op
+ *         if self.metadata_sent:
+ *             return None             # <<<<<<<<<<<<<<
+ *         else:
+ *             op = SendInitialMetadataOperation(
+ */
+    __Pyx_XDECREF((PyObject *)__pyx_r);
+    __pyx_r = ((struct __pyx_obj_7_cython_6cygrpc_Operation *)Py_None); __Pyx_INCREF(Py_None);
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":97
+ *     cdef Operation create_send_initial_metadata_op_if_not_sent(self):
+ *         cdef SendInitialMetadataOperation op
+ *         if self.metadata_sent:             # <<<<<<<<<<<<<<
+ *             return None
+ *         else:
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":100
+ *             return None
+ *         else:
+ *             op = SendInitialMetadataOperation(             # <<<<<<<<<<<<<<
+ *                 _augment_metadata(_IMMUTABLE_EMPTY_METADATA, self.compression_algorithm),
+ *                 _EMPTY_FLAG
+ */
+  /*else*/ {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":101
+ *         else:
+ *             op = SendInitialMetadataOperation(
+ *                 _augment_metadata(_IMMUTABLE_EMPTY_METADATA, self.compression_algorithm),             # <<<<<<<<<<<<<<
+ *                 _EMPTY_FLAG
+ *             )
+ */
+    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_IMMUTABLE_EMPTY_METADATA); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 101, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    if (!(likely(PyTuple_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_t_1))) __PYX_ERR(9, 101, __pyx_L1_error)
+    __pyx_t_2 = __pyx_v_self->compression_algorithm;
+    __Pyx_INCREF(__pyx_t_2);
+    __pyx_t_3 = __pyx_f_7_cython_6cygrpc__augment_metadata(((PyObject*)__pyx_t_1), __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 101, __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;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":102
+ *             op = SendInitialMetadataOperation(
+ *                 _augment_metadata(_IMMUTABLE_EMPTY_METADATA, self.compression_algorithm),
+ *                 _EMPTY_FLAG             # <<<<<<<<<<<<<<
+ *             )
+ *             return op
+ */
+    __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_7_cython_6cygrpc__EMPTY_FLAG); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 102, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":100
+ *             return None
+ *         else:
+ *             op = SendInitialMetadataOperation(             # <<<<<<<<<<<<<<
+ *                 _augment_metadata(_IMMUTABLE_EMPTY_METADATA, self.compression_algorithm),
+ *                 _EMPTY_FLAG
+ */
+    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 100, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_GIVEREF(__pyx_t_3);
+    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3)) __PYX_ERR(9, 100, __pyx_L1_error);
+    __Pyx_GIVEREF(__pyx_t_2);
+    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2)) __PYX_ERR(9, 100, __pyx_L1_error);
+    __pyx_t_3 = 0;
+    __pyx_t_2 = 0;
+    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_7_cython_6cygrpc_SendInitialMetadataOperation), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 100, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __pyx_v_op = ((struct __pyx_obj_7_cython_6cygrpc_SendInitialMetadataOperation *)__pyx_t_2);
+    __pyx_t_2 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":104
+ *                 _EMPTY_FLAG
+ *             )
+ *             return op             # <<<<<<<<<<<<<<
+ * 
+ *     def __dealloc__(self):
+ */
+    __Pyx_XDECREF((PyObject *)__pyx_r);
+    __Pyx_INCREF((PyObject *)__pyx_v_op);
+    __pyx_r = ((struct __pyx_obj_7_cython_6cygrpc_Operation *)__pyx_v_op);
+    goto __pyx_L0;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":95
+ *             return _EMPTY_FLAG
+ * 
+ *     cdef Operation create_send_initial_metadata_op_if_not_sent(self):             # <<<<<<<<<<<<<<
+ *         cdef SendInitialMetadataOperation op
+ *         if self.metadata_sent:
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("_cython.cygrpc.RPCState.create_send_initial_metadata_op_if_not_sent", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_op);
+  __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":106
+ *             return op
+ * 
+ *     def __dealloc__(self):             # <<<<<<<<<<<<<<
+ *         """Cleans the Core objects."""
+ *         grpc_call_details_destroy(&self.details)
+ */
+
+/* Python wrapper */
+static void __pyx_pw_7_cython_6cygrpc_8RPCState_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
+static void __pyx_pw_7_cython_6cygrpc_8RPCState_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_7_cython_6cygrpc_8RPCState_2__dealloc__(((struct __pyx_obj_7_cython_6cygrpc_RPCState *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+}
+
+static void __pyx_pf_7_cython_6cygrpc_8RPCState_2__dealloc__(struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_self) {
+  __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("__dealloc__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":108
+ *     def __dealloc__(self):
+ *         """Cleans the Core objects."""
+ *         grpc_call_details_destroy(&self.details)             # <<<<<<<<<<<<<<
+ *         grpc_metadata_array_destroy(&self.request_metadata)
+ *         if self.call:
+ */
+  grpc_call_details_destroy((&__pyx_v_self->details));
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":109
+ *         """Cleans the Core objects."""
+ *         grpc_call_details_destroy(&self.details)
+ *         grpc_metadata_array_destroy(&self.request_metadata)             # <<<<<<<<<<<<<<
+ *         if self.call:
+ *             grpc_call_unref(self.call)
+ */
+  grpc_metadata_array_destroy((&__pyx_v_self->request_metadata));
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":110
+ *         grpc_call_details_destroy(&self.details)
+ *         grpc_metadata_array_destroy(&self.request_metadata)
+ *         if self.call:             # <<<<<<<<<<<<<<
+ *             grpc_call_unref(self.call)
+ *         shutdown_grpc_aio()
+ */
+  __pyx_t_1 = (__pyx_v_self->__pyx_base.call != 0);
+  if (__pyx_t_1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":111
+ *         grpc_metadata_array_destroy(&self.request_metadata)
+ *         if self.call:
+ *             grpc_call_unref(self.call)             # <<<<<<<<<<<<<<
+ *         shutdown_grpc_aio()
+ * 
+ */
+    grpc_call_unref(__pyx_v_self->__pyx_base.call);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":110
+ *         grpc_call_details_destroy(&self.details)
+ *         grpc_metadata_array_destroy(&self.request_metadata)
+ *         if self.call:             # <<<<<<<<<<<<<<
+ *             grpc_call_unref(self.call)
+ *         shutdown_grpc_aio()
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":112
+ *         if self.call:
+ *             grpc_call_unref(self.call)
+ *         shutdown_grpc_aio()             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_2 = __pyx_f_7_cython_6cygrpc_shutdown_grpc_aio(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 112, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":106
+ *             return op
+ * 
+ *     def __dealloc__(self):             # <<<<<<<<<<<<<<
+ *         """Cleans the Core objects."""
+ *         grpc_call_details_destroy(&self.details)
+ */
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_WriteUnraisable("_cython.cygrpc.RPCState.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+}
+
+/* "(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_7_cython_6cygrpc_8RPCState_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_8RPCState_5__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_8RPCState_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_8RPCState_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_7_cython_6cygrpc_8RPCState_4__reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc_RPCState *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_8RPCState_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_RPCState *__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(10, 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("_cython.cygrpc.RPCState.__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_7_cython_6cygrpc_8RPCState_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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_8RPCState_7__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_8RPCState_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_8RPCState_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(10, 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(10, 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(10, 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("_cython.cygrpc.RPCState.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_8RPCState_6__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc_RPCState *)__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_7_cython_6cygrpc_8RPCState_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc_RPCState *__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(10, 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("_cython.cygrpc.RPCState.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":117
+ * cdef class _ServicerContext:
+ * 
+ *     def __cinit__(self,             # <<<<<<<<<<<<<<
+ *                   RPCState rpc_state,
+ *                   object request_deserializer,
+ */
+
+/* Python wrapper */
+static int __pyx_pw_7_cython_6cygrpc_16_ServicerContext_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_7_cython_6cygrpc_16_ServicerContext_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state = 0;
+  PyObject *__pyx_v_request_deserializer = 0;
+  PyObject *__pyx_v_response_serializer = 0;
+  PyObject *__pyx_v_loop = 0;
+  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+  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;
+  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);
+  {
+    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_rpc_state,&__pyx_n_s_request_deserializer,&__pyx_n_s_response_serializer,&__pyx_n_s_loop,0};
+    if (__pyx_kwds) {
+      Py_ssize_t kw_args;
+      switch (__pyx_nargs) {
+        case  4: values[3] = __Pyx_Arg_VARARGS(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
+        case  3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
+      switch (__pyx_nargs) {
+        case  0:
+        if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_rpc_state)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 117, __pyx_L3_error)
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_request_deserializer)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 117, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 4, 4, 1); __PYX_ERR(9, 117, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_response_serializer)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[2]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 117, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 4, 4, 2); __PYX_ERR(9, 117, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  3:
+        if (likely((values[3] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_loop)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[3]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 117, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 4, 4, 3); __PYX_ERR(9, 117, __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, "__cinit__") < 0)) __PYX_ERR(9, 117, __pyx_L3_error)
+      }
+    } else if (unlikely(__pyx_nargs != 4)) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+      values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
+      values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
+      values[3] = __Pyx_Arg_VARARGS(__pyx_args, 3);
+    }
+    __pyx_v_rpc_state = ((struct __pyx_obj_7_cython_6cygrpc_RPCState *)values[0]);
+    __pyx_v_request_deserializer = values[1];
+    __pyx_v_response_serializer = values[2];
+    __pyx_v_loop = values[3];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 4, 4, __pyx_nargs); __PYX_ERR(9, 117, __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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_AddTraceback("_cython.cygrpc._ServicerContext.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rpc_state), __pyx_ptype_7_cython_6cygrpc_RPCState, 1, "rpc_state", 0))) __PYX_ERR(9, 118, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_16_ServicerContext___cinit__(((struct __pyx_obj_7_cython_6cygrpc__ServicerContext *)__pyx_v_self), __pyx_v_rpc_state, __pyx_v_request_deserializer, __pyx_v_response_serializer, __pyx_v_loop);
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = -1;
+  __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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_7_cython_6cygrpc_16_ServicerContext___cinit__(struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_self, struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state, PyObject *__pyx_v_request_deserializer, PyObject *__pyx_v_response_serializer, PyObject *__pyx_v_loop) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__cinit__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":122
+ *                   object response_serializer,
+ *                   object loop):
+ *         self._rpc_state = rpc_state             # <<<<<<<<<<<<<<
+ *         self._request_deserializer = request_deserializer
+ *         self._response_serializer = response_serializer
+ */
+  __Pyx_INCREF((PyObject *)__pyx_v_rpc_state);
+  __Pyx_GIVEREF((PyObject *)__pyx_v_rpc_state);
+  __Pyx_GOTREF((PyObject *)__pyx_v_self->_rpc_state);
+  __Pyx_DECREF((PyObject *)__pyx_v_self->_rpc_state);
+  __pyx_v_self->_rpc_state = __pyx_v_rpc_state;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":123
+ *                   object loop):
+ *         self._rpc_state = rpc_state
+ *         self._request_deserializer = request_deserializer             # <<<<<<<<<<<<<<
+ *         self._response_serializer = response_serializer
+ *         self._loop = loop
+ */
+  __Pyx_INCREF(__pyx_v_request_deserializer);
+  __Pyx_GIVEREF(__pyx_v_request_deserializer);
+  __Pyx_GOTREF(__pyx_v_self->_request_deserializer);
+  __Pyx_DECREF(__pyx_v_self->_request_deserializer);
+  __pyx_v_self->_request_deserializer = __pyx_v_request_deserializer;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":124
+ *         self._rpc_state = rpc_state
+ *         self._request_deserializer = request_deserializer
+ *         self._response_serializer = response_serializer             # <<<<<<<<<<<<<<
+ *         self._loop = loop
+ * 
+ */
+  __Pyx_INCREF(__pyx_v_response_serializer);
+  __Pyx_GIVEREF(__pyx_v_response_serializer);
+  __Pyx_GOTREF(__pyx_v_self->_response_serializer);
+  __Pyx_DECREF(__pyx_v_self->_response_serializer);
+  __pyx_v_self->_response_serializer = __pyx_v_response_serializer;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":125
+ *         self._request_deserializer = request_deserializer
+ *         self._response_serializer = response_serializer
+ *         self._loop = loop             # <<<<<<<<<<<<<<
+ * 
+ *     async def read(self):
+ */
+  __Pyx_INCREF(__pyx_v_loop);
+  __Pyx_GIVEREF(__pyx_v_loop);
+  __Pyx_GOTREF(__pyx_v_self->_loop);
+  __Pyx_DECREF(__pyx_v_self->_loop);
+  __pyx_v_self->_loop = __pyx_v_loop;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":117
+ * cdef class _ServicerContext:
+ * 
+ *     def __cinit__(self,             # <<<<<<<<<<<<<<
+ *                   RPCState rpc_state,
+ *                   object request_deserializer,
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+static PyObject *__pyx_gb_7_cython_6cygrpc_16_ServicerContext_4generator19(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":127
+ *         self._loop = loop
+ * 
+ *     async def read(self):             # <<<<<<<<<<<<<<
+ *         cdef bytes raw_message
+ *         self._rpc_state.raise_for_termination()
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_ServicerContext_3read(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_16_ServicerContext_3read = {"read", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16_ServicerContext_3read, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_ServicerContext_3read(PyObject *__pyx_v_self, 
+#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("read (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("read", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "read", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_16_ServicerContext_2read(((struct __pyx_obj_7_cython_6cygrpc__ServicerContext *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_16_ServicerContext_2read(struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_self) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_29_read *__pyx_cur_scope;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("read", 0);
+  __pyx_cur_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_29_read *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_29_read(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_29_read, __pyx_empty_tuple, NULL);
+  if (unlikely(!__pyx_cur_scope)) {
+    __pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_29_read *)Py_None);
+    __Pyx_INCREF(Py_None);
+    __PYX_ERR(9, 127, __pyx_L1_error)
+  } else {
+    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+  }
+  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
+  {
+    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7_cython_6cygrpc_16_ServicerContext_4generator19, __pyx_codeobj__73, (PyObject *) __pyx_cur_scope, __pyx_n_s_read, __pyx_n_s_ServicerContext_read, __pyx_n_s_cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(9, 127, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_cur_scope);
+    __Pyx_RefNannyFinishContext();
+    return (PyObject *) gen;
+  }
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc._ServicerContext.read", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_gb_7_cython_6cygrpc_16_ServicerContext_4generator19(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
+{
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_29_read *__pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_29_read *)__pyx_generator->closure);
+  PyObject *__pyx_r = NULL;
+  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_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("read", 0);
+  switch (__pyx_generator->resume_label) {
+    case 0: goto __pyx_L3_first_run;
+    case 1: goto __pyx_L4_resume_from_await;
+    default: /* CPython raises the right error here */
+    __Pyx_RefNannyFinishContext();
+    return NULL;
+  }
+  __pyx_L3_first_run:;
+  if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 127, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":129
+ *     async def read(self):
+ *         cdef bytes raw_message
+ *         self._rpc_state.raise_for_termination()             # <<<<<<<<<<<<<<
+ * 
+ *         raw_message = await _receive_message(self._rpc_state, self._loop)
+ */
+  ((struct __pyx_vtabstruct_7_cython_6cygrpc_RPCState *)__pyx_cur_scope->__pyx_v_self->_rpc_state->__pyx_vtab)->raise_for_termination(__pyx_cur_scope->__pyx_v_self->_rpc_state); if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 129, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":131
+ *         self._rpc_state.raise_for_termination()
+ * 
+ *         raw_message = await _receive_message(self._rpc_state, self._loop)             # <<<<<<<<<<<<<<
+ *         self._rpc_state.raise_for_termination()
+ * 
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_receive_message); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 131, __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[3] = {__pyx_t_3, ((PyObject *)__pyx_cur_scope->__pyx_v_self->_rpc_state), __pyx_cur_scope->__pyx_v_self->_loop};
+    __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(9, 131, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  }
+  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_XGOTREF(__pyx_r);
+  if (likely(__pyx_r)) {
+    __Pyx_XGIVEREF(__pyx_r);
+    __Pyx_RefNannyFinishContext();
+    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+    /* return from generator, awaiting value */
+    __pyx_generator->resume_label = 1;
+    return __pyx_r;
+    __pyx_L4_resume_from_await:;
+    if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 131, __pyx_L1_error)
+    __pyx_t_1 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_1);
+  } else {
+    __pyx_t_1 = NULL;
+    if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_1) < 0) __PYX_ERR(9, 131, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+  }
+  if (!(likely(PyBytes_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("bytes", __pyx_t_1))) __PYX_ERR(9, 131, __pyx_L1_error)
+  __Pyx_GIVEREF(__pyx_t_1);
+  __pyx_cur_scope->__pyx_v_raw_message = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":132
+ * 
+ *         raw_message = await _receive_message(self._rpc_state, self._loop)
+ *         self._rpc_state.raise_for_termination()             # <<<<<<<<<<<<<<
+ * 
+ *         if raw_message is None:
+ */
+  ((struct __pyx_vtabstruct_7_cython_6cygrpc_RPCState *)__pyx_cur_scope->__pyx_v_self->_rpc_state->__pyx_vtab)->raise_for_termination(__pyx_cur_scope->__pyx_v_self->_rpc_state); if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 132, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":134
+ *         self._rpc_state.raise_for_termination()
+ * 
+ *         if raw_message is None:             # <<<<<<<<<<<<<<
+ *             return EOF
+ *         else:
+ */
+  __pyx_t_5 = (__pyx_cur_scope->__pyx_v_raw_message == ((PyObject*)Py_None));
+  if (__pyx_t_5) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":135
+ * 
+ *         if raw_message is None:
+ *             return EOF             # <<<<<<<<<<<<<<
+ *         else:
+ *             return deserialize(self._request_deserializer,
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_EOF); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 135, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":134
+ *         self._rpc_state.raise_for_termination()
+ * 
+ *         if raw_message is None:             # <<<<<<<<<<<<<<
+ *             return EOF
+ *         else:
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":137
+ *             return EOF
+ *         else:
+ *             return deserialize(self._request_deserializer,             # <<<<<<<<<<<<<<
+ *                             raw_message)
+ * 
+ */
+  /*else*/ {
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_1 = __pyx_cur_scope->__pyx_v_self->_request_deserializer;
+    __Pyx_INCREF(__pyx_t_1);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":138
+ *         else:
+ *             return deserialize(self._request_deserializer,
+ *                             raw_message)             # <<<<<<<<<<<<<<
+ * 
+ *     async def write(self, object message):
+ */
+    __pyx_t_2 = __pyx_f_7_cython_6cygrpc_deserialize(__pyx_t_1, __pyx_cur_scope->__pyx_v_raw_message); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 137, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L0;
+  }
+  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":127
+ *         self._loop = loop
+ * 
+ *     async def read(self):             # <<<<<<<<<<<<<<
+ *         cdef bytes raw_message
+ *         self._rpc_state.raise_for_termination()
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_Generator_Replace_StopIteration(0);
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("read", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
+  #if !CYTHON_USE_EXC_INFO_STACK
+  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+  #endif
+  __pyx_generator->resume_label = -1;
+  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+static PyObject *__pyx_gb_7_cython_6cygrpc_16_ServicerContext_7generator20(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":140
+ *                             raw_message)
+ * 
+ *     async def write(self, object message):             # <<<<<<<<<<<<<<
+ *         self._rpc_state.raise_for_termination()
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_ServicerContext_6write(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_16_ServicerContext_6write = {"write", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16_ServicerContext_6write, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_ServicerContext_6write(PyObject *__pyx_v_self, 
+#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_message = 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("write (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_message,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_message)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 140, __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, "write") < 0)) __PYX_ERR(9, 140, __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_message = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("write", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 140, __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("_cython.cygrpc._ServicerContext.write", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_16_ServicerContext_5write(((struct __pyx_obj_7_cython_6cygrpc__ServicerContext *)__pyx_v_self), __pyx_v_message);
+
+  /* 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_7_cython_6cygrpc_16_ServicerContext_5write(struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_self, PyObject *__pyx_v_message) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_30_write *__pyx_cur_scope;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("write", 0);
+  __pyx_cur_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_30_write *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_30_write(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_30_write, __pyx_empty_tuple, NULL);
+  if (unlikely(!__pyx_cur_scope)) {
+    __pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_30_write *)Py_None);
+    __Pyx_INCREF(Py_None);
+    __PYX_ERR(9, 140, __pyx_L1_error)
+  } else {
+    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+  }
+  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
+  __pyx_cur_scope->__pyx_v_message = __pyx_v_message;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_message);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_message);
+  {
+    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7_cython_6cygrpc_16_ServicerContext_7generator20, __pyx_codeobj__74, (PyObject *) __pyx_cur_scope, __pyx_n_s_write, __pyx_n_s_ServicerContext_write, __pyx_n_s_cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(9, 140, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_cur_scope);
+    __Pyx_RefNannyFinishContext();
+    return (PyObject *) gen;
+  }
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc._ServicerContext.write", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_gb_7_cython_6cygrpc_16_ServicerContext_7generator20(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
+{
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_30_write *__pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_30_write *)__pyx_generator->closure);
+  PyObject *__pyx_r = NULL;
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  int __pyx_t_5;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  unsigned int __pyx_t_8;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("write", 0);
+  switch (__pyx_generator->resume_label) {
+    case 0: goto __pyx_L3_first_run;
+    case 1: goto __pyx_L4_resume_from_await;
+    default: /* CPython raises the right error here */
+    __Pyx_RefNannyFinishContext();
+    return NULL;
+  }
+  __pyx_L3_first_run:;
+  if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 140, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":141
+ * 
+ *     async def write(self, object message):
+ *         self._rpc_state.raise_for_termination()             # <<<<<<<<<<<<<<
+ * 
+ *         await _send_message(self._rpc_state,
+ */
+  ((struct __pyx_vtabstruct_7_cython_6cygrpc_RPCState *)__pyx_cur_scope->__pyx_v_self->_rpc_state->__pyx_vtab)->raise_for_termination(__pyx_cur_scope->__pyx_v_self->_rpc_state); if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 141, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":143
+ *         self._rpc_state.raise_for_termination()
+ * 
+ *         await _send_message(self._rpc_state,             # <<<<<<<<<<<<<<
+ *                             serialize(self._response_serializer, message),
+ *                             self._rpc_state.create_send_initial_metadata_op_if_not_sent(),
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_send_message); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 143, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":144
+ * 
+ *         await _send_message(self._rpc_state,
+ *                             serialize(self._response_serializer, message),             # <<<<<<<<<<<<<<
+ *                             self._rpc_state.create_send_initial_metadata_op_if_not_sent(),
+ *                             self._rpc_state.get_write_flag(),
+ */
+  __pyx_t_3 = __pyx_cur_scope->__pyx_v_self->_response_serializer;
+  __Pyx_INCREF(__pyx_t_3);
+  __pyx_t_4 = __pyx_f_7_cython_6cygrpc_serialize(__pyx_t_3, __pyx_cur_scope->__pyx_v_message); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 144, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":145
+ *         await _send_message(self._rpc_state,
+ *                             serialize(self._response_serializer, message),
+ *                             self._rpc_state.create_send_initial_metadata_op_if_not_sent(),             # <<<<<<<<<<<<<<
+ *                             self._rpc_state.get_write_flag(),
+ *                             self._loop)
+ */
+  __pyx_t_3 = ((PyObject *)((struct __pyx_vtabstruct_7_cython_6cygrpc_RPCState *)__pyx_cur_scope->__pyx_v_self->_rpc_state->__pyx_vtab)->create_send_initial_metadata_op_if_not_sent(__pyx_cur_scope->__pyx_v_self->_rpc_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 145, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":146
+ *                             serialize(self._response_serializer, message),
+ *                             self._rpc_state.create_send_initial_metadata_op_if_not_sent(),
+ *                             self._rpc_state.get_write_flag(),             # <<<<<<<<<<<<<<
+ *                             self._loop)
+ *         self._rpc_state.metadata_sent = True
+ */
+  __pyx_t_5 = ((struct __pyx_vtabstruct_7_cython_6cygrpc_RPCState *)__pyx_cur_scope->__pyx_v_self->_rpc_state->__pyx_vtab)->get_write_flag(__pyx_cur_scope->__pyx_v_self->_rpc_state); if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 146, __pyx_L1_error)
+  __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 146, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":147
+ *                             self._rpc_state.create_send_initial_metadata_op_if_not_sent(),
+ *                             self._rpc_state.get_write_flag(),
+ *                             self._loop)             # <<<<<<<<<<<<<<
+ *         self._rpc_state.metadata_sent = True
+ * 
+ */
+  __pyx_t_7 = NULL;
+  __pyx_t_8 = 0;
+  #if CYTHON_UNPACK_METHODS
+  if (unlikely(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, ((PyObject *)__pyx_cur_scope->__pyx_v_self->_rpc_state), __pyx_t_4, __pyx_t_3, __pyx_t_6, __pyx_cur_scope->__pyx_v_self->_loop};
+    __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_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 143, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  }
+  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_XGOTREF(__pyx_r);
+  if (likely(__pyx_r)) {
+    __Pyx_XGIVEREF(__pyx_r);
+    __Pyx_RefNannyFinishContext();
+    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+    /* return from generator, awaiting value */
+    __pyx_generator->resume_label = 1;
+    return __pyx_r;
+    __pyx_L4_resume_from_await:;
+    if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 143, __pyx_L1_error)
+  } else {
+    PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType();
+    if (exc_type) {
+      if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
+      else __PYX_ERR(9, 143, __pyx_L1_error)
+    }
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":148
+ *                             self._rpc_state.get_write_flag(),
+ *                             self._loop)
+ *         self._rpc_state.metadata_sent = True             # <<<<<<<<<<<<<<
+ * 
+ *     async def send_initial_metadata(self, object metadata):
+ */
+  __pyx_cur_scope->__pyx_v_self->_rpc_state->metadata_sent = 1;
+  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":140
+ *                             raw_message)
+ * 
+ *     async def write(self, object message):             # <<<<<<<<<<<<<<
+ *         self._rpc_state.raise_for_termination()
+ * 
+ */
+
+  /* function exit code */
+  PyErr_SetNone(PyExc_StopIteration);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_Generator_Replace_StopIteration(0);
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_AddTraceback("write", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
+  #if !CYTHON_USE_EXC_INFO_STACK
+  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+  #endif
+  __pyx_generator->resume_label = -1;
+  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+static PyObject *__pyx_gb_7_cython_6cygrpc_16_ServicerContext_10generator21(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":150
+ *         self._rpc_state.metadata_sent = True
+ * 
+ *     async def send_initial_metadata(self, object metadata):             # <<<<<<<<<<<<<<
+ *         self._rpc_state.raise_for_termination()
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_ServicerContext_9send_initial_metadata(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_16_ServicerContext_9send_initial_metadata = {"send_initial_metadata", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16_ServicerContext_9send_initial_metadata, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_ServicerContext_9send_initial_metadata(PyObject *__pyx_v_self, 
+#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_metadata = 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("send_initial_metadata (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_metadata,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_metadata)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 150, __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, "send_initial_metadata") < 0)) __PYX_ERR(9, 150, __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_metadata = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("send_initial_metadata", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 150, __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("_cython.cygrpc._ServicerContext.send_initial_metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_16_ServicerContext_8send_initial_metadata(((struct __pyx_obj_7_cython_6cygrpc__ServicerContext *)__pyx_v_self), __pyx_v_metadata);
+
+  /* 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_7_cython_6cygrpc_16_ServicerContext_8send_initial_metadata(struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_self, PyObject *__pyx_v_metadata) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata *__pyx_cur_scope;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("send_initial_metadata", 0);
+  __pyx_cur_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata, __pyx_empty_tuple, NULL);
+  if (unlikely(!__pyx_cur_scope)) {
+    __pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata *)Py_None);
+    __Pyx_INCREF(Py_None);
+    __PYX_ERR(9, 150, __pyx_L1_error)
+  } else {
+    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+  }
+  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
+  __pyx_cur_scope->__pyx_v_metadata = __pyx_v_metadata;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_metadata);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_metadata);
+  {
+    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7_cython_6cygrpc_16_ServicerContext_10generator21, __pyx_codeobj__75, (PyObject *) __pyx_cur_scope, __pyx_n_s_send_initial_metadata_2, __pyx_n_s_ServicerContext_send_initial_me, __pyx_n_s_cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(9, 150, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_cur_scope);
+    __Pyx_RefNannyFinishContext();
+    return (PyObject *) gen;
+  }
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc._ServicerContext.send_initial_metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_gb_7_cython_6cygrpc_16_ServicerContext_10generator21(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
+{
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata *__pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata *)__pyx_generator->closure);
+  PyObject *__pyx_r = NULL;
+  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;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("send_initial_metadata", 0);
+  switch (__pyx_generator->resume_label) {
+    case 0: goto __pyx_L3_first_run;
+    case 1: goto __pyx_L5_resume_from_await;
+    default: /* CPython raises the right error here */
+    __Pyx_RefNannyFinishContext();
+    return NULL;
+  }
+  __pyx_L3_first_run:;
+  if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 150, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":151
+ * 
+ *     async def send_initial_metadata(self, object metadata):
+ *         self._rpc_state.raise_for_termination()             # <<<<<<<<<<<<<<
+ * 
+ *         if self._rpc_state.metadata_sent:
+ */
+  ((struct __pyx_vtabstruct_7_cython_6cygrpc_RPCState *)__pyx_cur_scope->__pyx_v_self->_rpc_state->__pyx_vtab)->raise_for_termination(__pyx_cur_scope->__pyx_v_self->_rpc_state); if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 151, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":153
+ *         self._rpc_state.raise_for_termination()
+ * 
+ *         if self._rpc_state.metadata_sent:             # <<<<<<<<<<<<<<
+ *             raise UsageError('Send initial metadata failed: already sent')
+ *         else:
+ */
+  if (unlikely(__pyx_cur_scope->__pyx_v_self->_rpc_state->metadata_sent)) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":154
+ * 
+ *         if self._rpc_state.metadata_sent:
+ *             raise UsageError('Send initial metadata failed: already sent')             # <<<<<<<<<<<<<<
+ *         else:
+ *             await _send_initial_metadata(
+ */
+    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_UsageError); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 154, __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_kp_s_Send_initial_metadata_failed_alr};
+      __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, 154, __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(9, 154, __pyx_L1_error)
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":153
+ *         self._rpc_state.raise_for_termination()
+ * 
+ *         if self._rpc_state.metadata_sent:             # <<<<<<<<<<<<<<
+ *             raise UsageError('Send initial metadata failed: already sent')
+ *         else:
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":156
+ *             raise UsageError('Send initial metadata failed: already sent')
+ *         else:
+ *             await _send_initial_metadata(             # <<<<<<<<<<<<<<
+ *                 self._rpc_state,
+ *                 _augment_metadata(tuple(metadata), self._rpc_state.compression_algorithm),
+ */
+  /*else*/ {
+    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_send_initial_metadata); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 156, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":158
+ *             await _send_initial_metadata(
+ *                 self._rpc_state,
+ *                 _augment_metadata(tuple(metadata), self._rpc_state.compression_algorithm),             # <<<<<<<<<<<<<<
+ *                 _EMPTY_FLAG,
+ *                 self._loop
+ */
+    __pyx_t_3 = __Pyx_PySequence_Tuple(__pyx_cur_scope->__pyx_v_metadata); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 158, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_5 = __pyx_cur_scope->__pyx_v_self->_rpc_state->compression_algorithm;
+    __Pyx_INCREF(__pyx_t_5);
+    __pyx_t_6 = __pyx_f_7_cython_6cygrpc__augment_metadata(((PyObject*)__pyx_t_3), __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 158, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_6);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":159
+ *                 self._rpc_state,
+ *                 _augment_metadata(tuple(metadata), self._rpc_state.compression_algorithm),
+ *                 _EMPTY_FLAG,             # <<<<<<<<<<<<<<
+ *                 self._loop
+ *             )
+ */
+    __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_7_cython_6cygrpc__EMPTY_FLAG); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 159, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":160
+ *                 _augment_metadata(tuple(metadata), self._rpc_state.compression_algorithm),
+ *                 _EMPTY_FLAG,
+ *                 self._loop             # <<<<<<<<<<<<<<
+ *             )
+ *             self._rpc_state.metadata_sent = True
+ */
+    __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[5] = {__pyx_t_3, ((PyObject *)__pyx_cur_scope->__pyx_v_self->_rpc_state), __pyx_t_6, __pyx_t_5, __pyx_cur_scope->__pyx_v_self->_loop};
+      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 4+__pyx_t_4);
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 156, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    }
+    __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __Pyx_XGOTREF(__pyx_r);
+    if (likely(__pyx_r)) {
+      __Pyx_XGIVEREF(__pyx_r);
+      __Pyx_RefNannyFinishContext();
+      __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+      /* return from generator, awaiting value */
+      __pyx_generator->resume_label = 1;
+      return __pyx_r;
+      __pyx_L5_resume_from_await:;
+      if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 156, __pyx_L1_error)
+    } else {
+      PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType();
+      if (exc_type) {
+        if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
+        else __PYX_ERR(9, 156, __pyx_L1_error)
+      }
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":162
+ *                 self._loop
+ *             )
+ *             self._rpc_state.metadata_sent = True             # <<<<<<<<<<<<<<
+ * 
+ *     async def abort(self,
+ */
+    __pyx_cur_scope->__pyx_v_self->_rpc_state->metadata_sent = 1;
+  }
+  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":150
+ *         self._rpc_state.metadata_sent = True
+ * 
+ *     async def send_initial_metadata(self, object metadata):             # <<<<<<<<<<<<<<
+ *         self._rpc_state.raise_for_termination()
+ * 
+ */
+
+  /* function exit code */
+  PyErr_SetNone(PyExc_StopIteration);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_Generator_Replace_StopIteration(0);
+  __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("send_initial_metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
+  #if !CYTHON_USE_EXC_INFO_STACK
+  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+  #endif
+  __pyx_generator->resume_label = -1;
+  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+static PyObject *__pyx_gb_7_cython_6cygrpc_16_ServicerContext_13generator22(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":164
+ *             self._rpc_state.metadata_sent = True
+ * 
+ *     async def abort(self,             # <<<<<<<<<<<<<<
+ *               object code,
+ *               str details='',
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_ServicerContext_12abort(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_16_ServicerContext_12abort = {"abort", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16_ServicerContext_12abort, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_ServicerContext_12abort(PyObject *__pyx_v_self, 
+#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_code = 0;
+  PyObject *__pyx_v_details = 0;
+  PyObject *__pyx_v_trailing_metadata = 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("abort (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_code,&__pyx_n_s_details,&__pyx_n_s_trailing_metadata,0};
+    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject*)__pyx_kp_s__7));
+    values[2] = __Pyx_Arg_NewRef_FASTCALL(__pyx_k__76);
+    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_code)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 164, __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_details);
+          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
+          else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 164, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (kw_args > 0) {
+          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_trailing_metadata);
+          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
+          else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 164, __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, "abort") < 0)) __PYX_ERR(9, 164, __pyx_L3_error)
+      }
+    } else {
+      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);
+        break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_code = values[0];
+    __pyx_v_details = ((PyObject*)values[1]);
+    __pyx_v_trailing_metadata = ((PyObject*)values[2]);
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("abort", 0, 1, 3, __pyx_nargs); __PYX_ERR(9, 164, __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("_cython.cygrpc._ServicerContext.abort", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_details), (&PyString_Type), 1, "details", 1))) __PYX_ERR(9, 166, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_trailing_metadata), (&PyTuple_Type), 1, "trailing_metadata", 1))) __PYX_ERR(9, 167, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_16_ServicerContext_11abort(((struct __pyx_obj_7_cython_6cygrpc__ServicerContext *)__pyx_v_self), __pyx_v_code, __pyx_v_details, __pyx_v_trailing_metadata);
+
+  /* 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_7_cython_6cygrpc_16_ServicerContext_11abort(struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_self, PyObject *__pyx_v_code, PyObject *__pyx_v_details, PyObject *__pyx_v_trailing_metadata) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_32_abort *__pyx_cur_scope;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("abort", 0);
+  __pyx_cur_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_32_abort *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_32_abort(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_32_abort, __pyx_empty_tuple, NULL);
+  if (unlikely(!__pyx_cur_scope)) {
+    __pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_32_abort *)Py_None);
+    __Pyx_INCREF(Py_None);
+    __PYX_ERR(9, 164, __pyx_L1_error)
+  } else {
+    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+  }
+  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
+  __pyx_cur_scope->__pyx_v_code = __pyx_v_code;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_code);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_code);
+  __pyx_cur_scope->__pyx_v_details = __pyx_v_details;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_details);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_details);
+  __pyx_cur_scope->__pyx_v_trailing_metadata = __pyx_v_trailing_metadata;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_trailing_metadata);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_trailing_metadata);
+  {
+    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7_cython_6cygrpc_16_ServicerContext_13generator22, __pyx_codeobj__77, (PyObject *) __pyx_cur_scope, __pyx_n_s_abort, __pyx_n_s_ServicerContext_abort, __pyx_n_s_cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(9, 164, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_cur_scope);
+    __Pyx_RefNannyFinishContext();
+    return (PyObject *) gen;
+  }
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc._ServicerContext.abort", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_gb_7_cython_6cygrpc_16_ServicerContext_13generator22(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
+{
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_32_abort *__pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_32_abort *)__pyx_generator->closure);
+  PyObject *__pyx_r = NULL;
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  unsigned int __pyx_t_5;
+  int __pyx_t_6;
+  grpc_status_code __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_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("abort", 0);
+  switch (__pyx_generator->resume_label) {
+    case 0: goto __pyx_L3_first_run;
+    case 1: goto __pyx_L11_resume_from_await;
+    default: /* CPython raises the right error here */
+    __Pyx_RefNannyFinishContext();
+    return NULL;
+  }
+  __pyx_L3_first_run:;
+  if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 164, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":168
+ *               str details='',
+ *               tuple trailing_metadata=_IMMUTABLE_EMPTY_METADATA):
+ *         if self._rpc_state.abort_exception is not None:             # <<<<<<<<<<<<<<
+ *             raise UsageError('Abort already called!')
+ *         else:
+ */
+  __pyx_t_1 = (__pyx_cur_scope->__pyx_v_self->_rpc_state->abort_exception != Py_None);
+  if (unlikely(__pyx_t_1)) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":169
+ *               tuple trailing_metadata=_IMMUTABLE_EMPTY_METADATA):
+ *         if self._rpc_state.abort_exception is not None:
+ *             raise UsageError('Abort already called!')             # <<<<<<<<<<<<<<
+ *         else:
+ *             # Keeps track of the exception object. After abort happen, the RPC
+ */
+    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_UsageError); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 169, __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_s_Abort_already_called};
+      __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(9, 169, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    }
+    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __PYX_ERR(9, 169, __pyx_L1_error)
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":168
+ *               str details='',
+ *               tuple trailing_metadata=_IMMUTABLE_EMPTY_METADATA):
+ *         if self._rpc_state.abort_exception is not None:             # <<<<<<<<<<<<<<
+ *             raise UsageError('Abort already called!')
+ *         else:
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":174
+ *             # should stop execution. However, if users decided to suppress it, it
+ *             # could lead to undefined behavior.
+ *             self._rpc_state.abort_exception = AbortError('Locally aborted.')             # <<<<<<<<<<<<<<
+ * 
+ *             if trailing_metadata == _IMMUTABLE_EMPTY_METADATA and self._rpc_state.trailing_metadata:
+ */
+  /*else*/ {
+    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_AbortError); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 174, __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_s_Locally_aborted};
+      __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(9, 174, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    }
+    __Pyx_GIVEREF(__pyx_t_2);
+    __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_self->_rpc_state->abort_exception);
+    __Pyx_DECREF(__pyx_cur_scope->__pyx_v_self->_rpc_state->abort_exception);
+    __pyx_cur_scope->__pyx_v_self->_rpc_state->abort_exception = __pyx_t_2;
+    __pyx_t_2 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":176
+ *             self._rpc_state.abort_exception = AbortError('Locally aborted.')
+ * 
+ *             if trailing_metadata == _IMMUTABLE_EMPTY_METADATA and self._rpc_state.trailing_metadata:             # <<<<<<<<<<<<<<
+ *                 trailing_metadata = self._rpc_state.trailing_metadata
+ *             else:
+ */
+    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_IMMUTABLE_EMPTY_METADATA); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 176, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_trailing_metadata, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 176, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(9, 176, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (__pyx_t_6) {
+    } else {
+      __pyx_t_1 = __pyx_t_6;
+      goto __pyx_L6_bool_binop_done;
+    }
+    __pyx_t_6 = (__pyx_cur_scope->__pyx_v_self->_rpc_state->trailing_metadata != Py_None)&&(PyTuple_GET_SIZE(__pyx_cur_scope->__pyx_v_self->_rpc_state->trailing_metadata) != 0);
+    __pyx_t_1 = __pyx_t_6;
+    __pyx_L6_bool_binop_done:;
+    if (__pyx_t_1) {
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":177
+ * 
+ *             if trailing_metadata == _IMMUTABLE_EMPTY_METADATA and self._rpc_state.trailing_metadata:
+ *                 trailing_metadata = self._rpc_state.trailing_metadata             # <<<<<<<<<<<<<<
+ *             else:
+ *                 raise_if_not_valid_trailing_metadata(trailing_metadata)
+ */
+      __pyx_t_3 = __pyx_cur_scope->__pyx_v_self->_rpc_state->trailing_metadata;
+      __Pyx_INCREF(__pyx_t_3);
+      __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_trailing_metadata);
+      __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_trailing_metadata, ((PyObject*)__pyx_t_3));
+      __Pyx_GIVEREF(__pyx_t_3);
+      __pyx_t_3 = 0;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":176
+ *             self._rpc_state.abort_exception = AbortError('Locally aborted.')
+ * 
+ *             if trailing_metadata == _IMMUTABLE_EMPTY_METADATA and self._rpc_state.trailing_metadata:             # <<<<<<<<<<<<<<
+ *                 trailing_metadata = self._rpc_state.trailing_metadata
+ *             else:
+ */
+      goto __pyx_L5;
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":179
+ *                 trailing_metadata = self._rpc_state.trailing_metadata
+ *             else:
+ *                 raise_if_not_valid_trailing_metadata(trailing_metadata)             # <<<<<<<<<<<<<<
+ *                 self._rpc_state.trailing_metadata = trailing_metadata
+ * 
+ */
+    /*else*/ {
+      __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_raise_if_not_valid_trailing_meta); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 179, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __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_cur_scope->__pyx_v_trailing_metadata};
+        __pyx_t_3 = __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;
+        if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 179, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_3);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      }
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":180
+ *             else:
+ *                 raise_if_not_valid_trailing_metadata(trailing_metadata)
+ *                 self._rpc_state.trailing_metadata = trailing_metadata             # <<<<<<<<<<<<<<
+ * 
+ *             if details == '' and self._rpc_state.status_details:
+ */
+      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_trailing_metadata);
+      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_trailing_metadata);
+      __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_self->_rpc_state->trailing_metadata);
+      __Pyx_DECREF(__pyx_cur_scope->__pyx_v_self->_rpc_state->trailing_metadata);
+      __pyx_cur_scope->__pyx_v_self->_rpc_state->trailing_metadata = __pyx_cur_scope->__pyx_v_trailing_metadata;
+    }
+    __pyx_L5:;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":182
+ *                 self._rpc_state.trailing_metadata = trailing_metadata
+ * 
+ *             if details == '' and self._rpc_state.status_details:             # <<<<<<<<<<<<<<
+ *                 details = self._rpc_state.status_details
+ *             else:
+ */
+    __pyx_t_6 = (__Pyx_PyString_Equals(__pyx_cur_scope->__pyx_v_details, __pyx_kp_s__7, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(9, 182, __pyx_L1_error)
+    if (__pyx_t_6) {
+    } else {
+      __pyx_t_1 = __pyx_t_6;
+      goto __pyx_L9_bool_binop_done;
+    }
+    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_self->_rpc_state->status_details); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(9, 182, __pyx_L1_error)
+    __pyx_t_1 = __pyx_t_6;
+    __pyx_L9_bool_binop_done:;
+    if (__pyx_t_1) {
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":183
+ * 
+ *             if details == '' and self._rpc_state.status_details:
+ *                 details = self._rpc_state.status_details             # <<<<<<<<<<<<<<
+ *             else:
+ *                 self._rpc_state.status_details = details
+ */
+      __pyx_t_3 = __pyx_cur_scope->__pyx_v_self->_rpc_state->status_details;
+      __Pyx_INCREF(__pyx_t_3);
+      __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_details);
+      __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_details, ((PyObject*)__pyx_t_3));
+      __Pyx_GIVEREF(__pyx_t_3);
+      __pyx_t_3 = 0;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":182
+ *                 self._rpc_state.trailing_metadata = trailing_metadata
+ * 
+ *             if details == '' and self._rpc_state.status_details:             # <<<<<<<<<<<<<<
+ *                 details = self._rpc_state.status_details
+ *             else:
+ */
+      goto __pyx_L8;
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":185
+ *                 details = self._rpc_state.status_details
+ *             else:
+ *                 self._rpc_state.status_details = details             # <<<<<<<<<<<<<<
+ * 
+ *             actual_code = get_status_code(code)
+ */
+    /*else*/ {
+      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_details);
+      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_details);
+      __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_self->_rpc_state->status_details);
+      __Pyx_DECREF(__pyx_cur_scope->__pyx_v_self->_rpc_state->status_details);
+      __pyx_cur_scope->__pyx_v_self->_rpc_state->status_details = __pyx_cur_scope->__pyx_v_details;
+    }
+    __pyx_L8:;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":187
+ *                 self._rpc_state.status_details = details
+ * 
+ *             actual_code = get_status_code(code)             # <<<<<<<<<<<<<<
+ *             self._rpc_state.py_status_code = code
+ *             self._rpc_state.status_code = actual_code
+ */
+    __pyx_t_7 = __pyx_f_7_cython_6cygrpc_get_status_code(__pyx_cur_scope->__pyx_v_code); if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 187, __pyx_L1_error)
+    __pyx_cur_scope->__pyx_v_actual_code = __pyx_t_7;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":188
+ * 
+ *             actual_code = get_status_code(code)
+ *             self._rpc_state.py_status_code = code             # <<<<<<<<<<<<<<
+ *             self._rpc_state.status_code = actual_code
+ * 
+ */
+    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_code);
+    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_code);
+    __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_self->_rpc_state->py_status_code);
+    __Pyx_DECREF(__pyx_cur_scope->__pyx_v_self->_rpc_state->py_status_code);
+    __pyx_cur_scope->__pyx_v_self->_rpc_state->py_status_code = __pyx_cur_scope->__pyx_v_code;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":189
+ *             actual_code = get_status_code(code)
+ *             self._rpc_state.py_status_code = code
+ *             self._rpc_state.status_code = actual_code             # <<<<<<<<<<<<<<
+ * 
+ *             self._rpc_state.status_sent = True
+ */
+    __pyx_cur_scope->__pyx_v_self->_rpc_state->status_code = __pyx_cur_scope->__pyx_v_actual_code;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":191
+ *             self._rpc_state.status_code = actual_code
+ * 
+ *             self._rpc_state.status_sent = True             # <<<<<<<<<<<<<<
+ *             await _send_error_status_from_server(
+ *                 self._rpc_state,
+ */
+    __pyx_cur_scope->__pyx_v_self->_rpc_state->status_sent = 1;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":192
+ * 
+ *             self._rpc_state.status_sent = True
+ *             await _send_error_status_from_server(             # <<<<<<<<<<<<<<
+ *                 self._rpc_state,
+ *                 actual_code,
+ */
+    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_send_error_status_from_server); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 192, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":194
+ *             await _send_error_status_from_server(
+ *                 self._rpc_state,
+ *                 actual_code,             # <<<<<<<<<<<<<<
+ *                 details,
+ *                 trailing_metadata,
+ */
+    __pyx_t_4 = __Pyx_PyInt_From_grpc_status_code(__pyx_cur_scope->__pyx_v_actual_code); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 194, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":197
+ *                 details,
+ *                 trailing_metadata,
+ *                 self._rpc_state.create_send_initial_metadata_op_if_not_sent(),             # <<<<<<<<<<<<<<
+ *                 self._loop
+ *             )
+ */
+    __pyx_t_8 = ((PyObject *)((struct __pyx_vtabstruct_7_cython_6cygrpc_RPCState *)__pyx_cur_scope->__pyx_v_self->_rpc_state->__pyx_vtab)->create_send_initial_metadata_op_if_not_sent(__pyx_cur_scope->__pyx_v_self->_rpc_state)); if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 197, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_8);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":198
+ *                 trailing_metadata,
+ *                 self._rpc_state.create_send_initial_metadata_op_if_not_sent(),
+ *                 self._loop             # <<<<<<<<<<<<<<
+ *             )
+ * 
+ */
+    __pyx_t_9 = NULL;
+    __pyx_t_5 = 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_5 = 1;
+      }
+    }
+    #endif
+    {
+      PyObject *__pyx_callargs[7] = {__pyx_t_9, ((PyObject *)__pyx_cur_scope->__pyx_v_self->_rpc_state), __pyx_t_4, __pyx_cur_scope->__pyx_v_details, __pyx_cur_scope->__pyx_v_trailing_metadata, __pyx_t_8, __pyx_cur_scope->__pyx_v_self->_loop};
+      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 6+__pyx_t_5);
+      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+      if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 192, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    }
+    __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_3);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_XGOTREF(__pyx_r);
+    if (likely(__pyx_r)) {
+      __Pyx_XGIVEREF(__pyx_r);
+      __Pyx_RefNannyFinishContext();
+      __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+      /* return from generator, awaiting value */
+      __pyx_generator->resume_label = 1;
+      return __pyx_r;
+      __pyx_L11_resume_from_await:;
+      if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 192, __pyx_L1_error)
+    } else {
+      PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType();
+      if (exc_type) {
+        if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
+        else __PYX_ERR(9, 192, __pyx_L1_error)
+      }
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":201
+ *             )
+ * 
+ *             raise self._rpc_state.abort_exception             # <<<<<<<<<<<<<<
+ * 
+ *     async def abort_with_status(self, object status):
+ */
+    __Pyx_Raise(__pyx_cur_scope->__pyx_v_self->_rpc_state->abort_exception, 0, 0, 0);
+    __PYX_ERR(9, 201, __pyx_L1_error)
+  }
+  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":164
+ *             self._rpc_state.metadata_sent = True
+ * 
+ *     async def abort(self,             # <<<<<<<<<<<<<<
+ *               object code,
+ *               str details='',
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_Generator_Replace_StopIteration(0);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_AddTraceback("abort", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
+  #if !CYTHON_USE_EXC_INFO_STACK
+  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+  #endif
+  __pyx_generator->resume_label = -1;
+  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+static PyObject *__pyx_gb_7_cython_6cygrpc_16_ServicerContext_16generator23(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":203
+ *             raise self._rpc_state.abort_exception
+ * 
+ *     async def abort_with_status(self, object status):             # <<<<<<<<<<<<<<
+ *         await self.abort(status.code, status.details, status.trailing_metadata)
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_ServicerContext_15abort_with_status(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_16_ServicerContext_15abort_with_status = {"abort_with_status", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16_ServicerContext_15abort_with_status, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_ServicerContext_15abort_with_status(PyObject *__pyx_v_self, 
+#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_status = 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("abort_with_status (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_status,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_status)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 203, __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, "abort_with_status") < 0)) __PYX_ERR(9, 203, __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_status = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("abort_with_status", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 203, __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("_cython.cygrpc._ServicerContext.abort_with_status", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_16_ServicerContext_14abort_with_status(((struct __pyx_obj_7_cython_6cygrpc__ServicerContext *)__pyx_v_self), __pyx_v_status);
+
+  /* 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_7_cython_6cygrpc_16_ServicerContext_14abort_with_status(struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_self, PyObject *__pyx_v_status) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status *__pyx_cur_scope;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("abort_with_status", 0);
+  __pyx_cur_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status, __pyx_empty_tuple, NULL);
+  if (unlikely(!__pyx_cur_scope)) {
+    __pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status *)Py_None);
+    __Pyx_INCREF(Py_None);
+    __PYX_ERR(9, 203, __pyx_L1_error)
+  } else {
+    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+  }
+  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
+  __pyx_cur_scope->__pyx_v_status = __pyx_v_status;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_status);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_status);
+  {
+    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7_cython_6cygrpc_16_ServicerContext_16generator23, __pyx_codeobj__78, (PyObject *) __pyx_cur_scope, __pyx_n_s_abort_with_status, __pyx_n_s_ServicerContext_abort_with_stat, __pyx_n_s_cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(9, 203, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_cur_scope);
+    __Pyx_RefNannyFinishContext();
+    return (PyObject *) gen;
+  }
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc._ServicerContext.abort_with_status", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_gb_7_cython_6cygrpc_16_ServicerContext_16generator23(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
+{
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status *__pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status *)__pyx_generator->closure);
+  PyObject *__pyx_r = NULL;
+  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;
+  unsigned int __pyx_t_7;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("abort_with_status", 0);
+  switch (__pyx_generator->resume_label) {
+    case 0: goto __pyx_L3_first_run;
+    case 1: goto __pyx_L4_resume_from_await;
+    default: /* CPython raises the right error here */
+    __Pyx_RefNannyFinishContext();
+    return NULL;
+  }
+  __pyx_L3_first_run:;
+  if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 203, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":204
+ * 
+ *     async def abort_with_status(self, object status):
+ *         await self.abort(status.code, status.details, status.trailing_metadata)             # <<<<<<<<<<<<<<
+ * 
+ *     def set_trailing_metadata(self, object metadata):
+ */
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_abort); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 204, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_status, __pyx_n_s_code); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 204, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_status, __pyx_n_s_details); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 204, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_status, __pyx_n_s_trailing_metadata); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 204, __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_2))) {
+    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
+    if (likely(__pyx_t_6)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_6);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
+      __pyx_t_7 = 1;
+    }
+  }
+  #endif
+  {
+    PyObject *__pyx_callargs[4] = {__pyx_t_6, __pyx_t_3, __pyx_t_4, __pyx_t_5};
+    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 3+__pyx_t_7);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 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;
+    if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 204, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  }
+  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_XGOTREF(__pyx_r);
+  if (likely(__pyx_r)) {
+    __Pyx_XGIVEREF(__pyx_r);
+    __Pyx_RefNannyFinishContext();
+    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+    /* return from generator, awaiting value */
+    __pyx_generator->resume_label = 1;
+    return __pyx_r;
+    __pyx_L4_resume_from_await:;
+    if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 204, __pyx_L1_error)
+  } else {
+    PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType();
+    if (exc_type) {
+      if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
+      else __PYX_ERR(9, 204, __pyx_L1_error)
+    }
+  }
+  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":203
+ *             raise self._rpc_state.abort_exception
+ * 
+ *     async def abort_with_status(self, object status):             # <<<<<<<<<<<<<<
+ *         await self.abort(status.code, status.details, status.trailing_metadata)
+ * 
+ */
+
+  /* function exit code */
+  PyErr_SetNone(PyExc_StopIteration);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_Generator_Replace_StopIteration(0);
+  __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_AddTraceback("abort_with_status", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
+  #if !CYTHON_USE_EXC_INFO_STACK
+  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+  #endif
+  __pyx_generator->resume_label = -1;
+  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":206
+ *         await self.abort(status.code, status.details, status.trailing_metadata)
+ * 
+ *     def set_trailing_metadata(self, object metadata):             # <<<<<<<<<<<<<<
+ *         raise_if_not_valid_trailing_metadata(metadata)
+ *         self._rpc_state.trailing_metadata = tuple(metadata)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_ServicerContext_18set_trailing_metadata(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_16_ServicerContext_18set_trailing_metadata = {"set_trailing_metadata", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16_ServicerContext_18set_trailing_metadata, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_ServicerContext_18set_trailing_metadata(PyObject *__pyx_v_self, 
+#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_metadata = 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("set_trailing_metadata (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_metadata,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_metadata)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 206, __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, "set_trailing_metadata") < 0)) __PYX_ERR(9, 206, __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_metadata = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("set_trailing_metadata", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 206, __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("_cython.cygrpc._ServicerContext.set_trailing_metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_16_ServicerContext_17set_trailing_metadata(((struct __pyx_obj_7_cython_6cygrpc__ServicerContext *)__pyx_v_self), __pyx_v_metadata);
+
+  /* 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_7_cython_6cygrpc_16_ServicerContext_17set_trailing_metadata(struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_self, PyObject *__pyx_v_metadata) {
+  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("set_trailing_metadata", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":207
+ * 
+ *     def set_trailing_metadata(self, object metadata):
+ *         raise_if_not_valid_trailing_metadata(metadata)             # <<<<<<<<<<<<<<
+ *         self._rpc_state.trailing_metadata = tuple(metadata)
+ * 
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_raise_if_not_valid_trailing_meta); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 207, __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_metadata};
+    __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, 207, __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/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":208
+ *     def set_trailing_metadata(self, object metadata):
+ *         raise_if_not_valid_trailing_metadata(metadata)
+ *         self._rpc_state.trailing_metadata = tuple(metadata)             # <<<<<<<<<<<<<<
+ * 
+ *     def trailing_metadata(self):
+ */
+  __pyx_t_1 = __Pyx_PySequence_Tuple(__pyx_v_metadata); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 208, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->_rpc_state->trailing_metadata);
+  __Pyx_DECREF(__pyx_v_self->_rpc_state->trailing_metadata);
+  __pyx_v_self->_rpc_state->trailing_metadata = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":206
+ *         await self.abort(status.code, status.details, status.trailing_metadata)
+ * 
+ *     def set_trailing_metadata(self, object metadata):             # <<<<<<<<<<<<<<
+ *         raise_if_not_valid_trailing_metadata(metadata)
+ *         self._rpc_state.trailing_metadata = tuple(metadata)
+ */
+
+  /* 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("_cython.cygrpc._ServicerContext.set_trailing_metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":210
+ *         self._rpc_state.trailing_metadata = tuple(metadata)
+ * 
+ *     def trailing_metadata(self):             # <<<<<<<<<<<<<<
+ *         return self._rpc_state.trailing_metadata
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_ServicerContext_20trailing_metadata(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_16_ServicerContext_20trailing_metadata = {"trailing_metadata", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16_ServicerContext_20trailing_metadata, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_ServicerContext_20trailing_metadata(PyObject *__pyx_v_self, 
+#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("trailing_metadata (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("trailing_metadata", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "trailing_metadata", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_16_ServicerContext_19trailing_metadata(((struct __pyx_obj_7_cython_6cygrpc__ServicerContext *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_16_ServicerContext_19trailing_metadata(struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("trailing_metadata", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":211
+ * 
+ *     def trailing_metadata(self):
+ *         return self._rpc_state.trailing_metadata             # <<<<<<<<<<<<<<
+ * 
+ *     def invocation_metadata(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->_rpc_state->trailing_metadata);
+  __pyx_r = __pyx_v_self->_rpc_state->trailing_metadata;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":210
+ *         self._rpc_state.trailing_metadata = tuple(metadata)
+ * 
+ *     def trailing_metadata(self):             # <<<<<<<<<<<<<<
+ *         return self._rpc_state.trailing_metadata
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":213
+ *         return self._rpc_state.trailing_metadata
+ * 
+ *     def invocation_metadata(self):             # <<<<<<<<<<<<<<
+ *         return self._rpc_state.invocation_metadata()
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_ServicerContext_22invocation_metadata(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_16_ServicerContext_22invocation_metadata = {"invocation_metadata", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16_ServicerContext_22invocation_metadata, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_ServicerContext_22invocation_metadata(PyObject *__pyx_v_self, 
+#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("invocation_metadata (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("invocation_metadata", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "invocation_metadata", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_16_ServicerContext_21invocation_metadata(((struct __pyx_obj_7_cython_6cygrpc__ServicerContext *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_16_ServicerContext_21invocation_metadata(struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__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("invocation_metadata", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":214
+ * 
+ *     def invocation_metadata(self):
+ *         return self._rpc_state.invocation_metadata()             # <<<<<<<<<<<<<<
+ * 
+ *     def set_code(self, object code):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = ((struct __pyx_vtabstruct_7_cython_6cygrpc_RPCState *)__pyx_v_self->_rpc_state->__pyx_vtab)->invocation_metadata(__pyx_v_self->_rpc_state); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 214, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":213
+ *         return self._rpc_state.trailing_metadata
+ * 
+ *     def invocation_metadata(self):             # <<<<<<<<<<<<<<
+ *         return self._rpc_state.invocation_metadata()
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc._ServicerContext.invocation_metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":216
+ *         return self._rpc_state.invocation_metadata()
+ * 
+ *     def set_code(self, object code):             # <<<<<<<<<<<<<<
+ *         self._rpc_state.status_code = get_status_code(code)
+ *         self._rpc_state.py_status_code = code
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_ServicerContext_24set_code(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_16_ServicerContext_24set_code = {"set_code", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16_ServicerContext_24set_code, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_ServicerContext_24set_code(PyObject *__pyx_v_self, 
+#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_code = 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("set_code (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_code,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_code)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 216, __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, "set_code") < 0)) __PYX_ERR(9, 216, __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_code = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("set_code", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 216, __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("_cython.cygrpc._ServicerContext.set_code", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_16_ServicerContext_23set_code(((struct __pyx_obj_7_cython_6cygrpc__ServicerContext *)__pyx_v_self), __pyx_v_code);
+
+  /* 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_7_cython_6cygrpc_16_ServicerContext_23set_code(struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_self, PyObject *__pyx_v_code) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  grpc_status_code __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_code", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":217
+ * 
+ *     def set_code(self, object code):
+ *         self._rpc_state.status_code = get_status_code(code)             # <<<<<<<<<<<<<<
+ *         self._rpc_state.py_status_code = code
+ * 
+ */
+  __pyx_t_1 = __pyx_f_7_cython_6cygrpc_get_status_code(__pyx_v_code); if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 217, __pyx_L1_error)
+  __pyx_v_self->_rpc_state->status_code = __pyx_t_1;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":218
+ *     def set_code(self, object code):
+ *         self._rpc_state.status_code = get_status_code(code)
+ *         self._rpc_state.py_status_code = code             # <<<<<<<<<<<<<<
+ * 
+ *     def code(self):
+ */
+  __Pyx_INCREF(__pyx_v_code);
+  __Pyx_GIVEREF(__pyx_v_code);
+  __Pyx_GOTREF(__pyx_v_self->_rpc_state->py_status_code);
+  __Pyx_DECREF(__pyx_v_self->_rpc_state->py_status_code);
+  __pyx_v_self->_rpc_state->py_status_code = __pyx_v_code;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":216
+ *         return self._rpc_state.invocation_metadata()
+ * 
+ *     def set_code(self, object code):             # <<<<<<<<<<<<<<
+ *         self._rpc_state.status_code = get_status_code(code)
+ *         self._rpc_state.py_status_code = code
+ */
+
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc._ServicerContext.set_code", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":220
+ *         self._rpc_state.py_status_code = code
+ * 
+ *     def code(self):             # <<<<<<<<<<<<<<
+ *         return self._rpc_state.py_status_code
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_ServicerContext_26code(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_16_ServicerContext_26code = {"code", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16_ServicerContext_26code, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_ServicerContext_26code(PyObject *__pyx_v_self, 
+#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("code (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("code", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "code", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_16_ServicerContext_25code(((struct __pyx_obj_7_cython_6cygrpc__ServicerContext *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_16_ServicerContext_25code(struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("code", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":221
+ * 
+ *     def code(self):
+ *         return self._rpc_state.py_status_code             # <<<<<<<<<<<<<<
+ * 
+ *     def set_details(self, str details):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->_rpc_state->py_status_code);
+  __pyx_r = __pyx_v_self->_rpc_state->py_status_code;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":220
+ *         self._rpc_state.py_status_code = code
+ * 
+ *     def code(self):             # <<<<<<<<<<<<<<
+ *         return self._rpc_state.py_status_code
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":223
+ *         return self._rpc_state.py_status_code
+ * 
+ *     def set_details(self, str details):             # <<<<<<<<<<<<<<
+ *         self._rpc_state.status_details = details
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_ServicerContext_28set_details(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_16_ServicerContext_28set_details = {"set_details", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16_ServicerContext_28set_details, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_ServicerContext_28set_details(PyObject *__pyx_v_self, 
+#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_details = 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("set_details (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_details,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_details)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 223, __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, "set_details") < 0)) __PYX_ERR(9, 223, __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_details = ((PyObject*)values[0]);
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("set_details", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 223, __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("_cython.cygrpc._ServicerContext.set_details", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_details), (&PyString_Type), 1, "details", 1))) __PYX_ERR(9, 223, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_16_ServicerContext_27set_details(((struct __pyx_obj_7_cython_6cygrpc__ServicerContext *)__pyx_v_self), __pyx_v_details);
+
+  /* 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_7_cython_6cygrpc_16_ServicerContext_27set_details(struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_self, PyObject *__pyx_v_details) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_details", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":224
+ * 
+ *     def set_details(self, str details):
+ *         self._rpc_state.status_details = details             # <<<<<<<<<<<<<<
+ * 
+ *     def details(self):
+ */
+  __Pyx_INCREF(__pyx_v_details);
+  __Pyx_GIVEREF(__pyx_v_details);
+  __Pyx_GOTREF(__pyx_v_self->_rpc_state->status_details);
+  __Pyx_DECREF(__pyx_v_self->_rpc_state->status_details);
+  __pyx_v_self->_rpc_state->status_details = __pyx_v_details;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":223
+ *         return self._rpc_state.py_status_code
+ * 
+ *     def set_details(self, str details):             # <<<<<<<<<<<<<<
+ *         self._rpc_state.status_details = details
+ * 
+ */
+
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":226
+ *         self._rpc_state.status_details = details
+ * 
+ *     def details(self):             # <<<<<<<<<<<<<<
+ *         return self._rpc_state.status_details
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_ServicerContext_30details(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_16_ServicerContext_30details = {"details", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16_ServicerContext_30details, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_ServicerContext_30details(PyObject *__pyx_v_self, 
+#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("details (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("details", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "details", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_16_ServicerContext_29details(((struct __pyx_obj_7_cython_6cygrpc__ServicerContext *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_16_ServicerContext_29details(struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("details", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":227
+ * 
+ *     def details(self):
+ *         return self._rpc_state.status_details             # <<<<<<<<<<<<<<
+ * 
+ *     def set_compression(self, object compression):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->_rpc_state->status_details);
+  __pyx_r = __pyx_v_self->_rpc_state->status_details;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":226
+ *         self._rpc_state.status_details = details
+ * 
+ *     def details(self):             # <<<<<<<<<<<<<<
+ *         return self._rpc_state.status_details
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":229
+ *         return self._rpc_state.status_details
+ * 
+ *     def set_compression(self, object compression):             # <<<<<<<<<<<<<<
+ *         if self._rpc_state.metadata_sent:
+ *             raise RuntimeError('Compression setting must be specified before sending initial metadata')
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_ServicerContext_32set_compression(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_16_ServicerContext_32set_compression = {"set_compression", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16_ServicerContext_32set_compression, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_ServicerContext_32set_compression(PyObject *__pyx_v_self, 
+#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_compression = 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("set_compression (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_compression,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_compression)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 229, __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, "set_compression") < 0)) __PYX_ERR(9, 229, __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_compression = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("set_compression", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 229, __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("_cython.cygrpc._ServicerContext.set_compression", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_16_ServicerContext_31set_compression(((struct __pyx_obj_7_cython_6cygrpc__ServicerContext *)__pyx_v_self), __pyx_v_compression);
+
+  /* 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_7_cython_6cygrpc_16_ServicerContext_31set_compression(struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_self, PyObject *__pyx_v_compression) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_compression", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":230
+ * 
+ *     def set_compression(self, object compression):
+ *         if self._rpc_state.metadata_sent:             # <<<<<<<<<<<<<<
+ *             raise RuntimeError('Compression setting must be specified before sending initial metadata')
+ *         else:
+ */
+  if (unlikely(__pyx_v_self->_rpc_state->metadata_sent)) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":231
+ *     def set_compression(self, object compression):
+ *         if self._rpc_state.metadata_sent:
+ *             raise RuntimeError('Compression setting must be specified before sending initial metadata')             # <<<<<<<<<<<<<<
+ *         else:
+ *             self._rpc_state.compression_algorithm = compression
+ */
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__79, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 231, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __PYX_ERR(9, 231, __pyx_L1_error)
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":230
+ * 
+ *     def set_compression(self, object compression):
+ *         if self._rpc_state.metadata_sent:             # <<<<<<<<<<<<<<
+ *             raise RuntimeError('Compression setting must be specified before sending initial metadata')
+ *         else:
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":233
+ *             raise RuntimeError('Compression setting must be specified before sending initial metadata')
+ *         else:
+ *             self._rpc_state.compression_algorithm = compression             # <<<<<<<<<<<<<<
+ * 
+ *     def disable_next_message_compression(self):
+ */
+  /*else*/ {
+    __Pyx_INCREF(__pyx_v_compression);
+    __Pyx_GIVEREF(__pyx_v_compression);
+    __Pyx_GOTREF(__pyx_v_self->_rpc_state->compression_algorithm);
+    __Pyx_DECREF(__pyx_v_self->_rpc_state->compression_algorithm);
+    __pyx_v_self->_rpc_state->compression_algorithm = __pyx_v_compression;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":229
+ *         return self._rpc_state.status_details
+ * 
+ *     def set_compression(self, object compression):             # <<<<<<<<<<<<<<
+ *         if self._rpc_state.metadata_sent:
+ *             raise RuntimeError('Compression setting must be specified before sending initial metadata')
+ */
+
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc._ServicerContext.set_compression", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":235
+ *             self._rpc_state.compression_algorithm = compression
+ * 
+ *     def disable_next_message_compression(self):             # <<<<<<<<<<<<<<
+ *         self._rpc_state.disable_next_compression = True
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_ServicerContext_34disable_next_message_compression(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_16_ServicerContext_34disable_next_message_compression = {"disable_next_message_compression", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16_ServicerContext_34disable_next_message_compression, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_ServicerContext_34disable_next_message_compression(PyObject *__pyx_v_self, 
+#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("disable_next_message_compression (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("disable_next_message_compression", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "disable_next_message_compression", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_16_ServicerContext_33disable_next_message_compression(((struct __pyx_obj_7_cython_6cygrpc__ServicerContext *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_16_ServicerContext_33disable_next_message_compression(struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("disable_next_message_compression", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":236
+ * 
+ *     def disable_next_message_compression(self):
+ *         self._rpc_state.disable_next_compression = True             # <<<<<<<<<<<<<<
+ * 
+ *     def peer(self):
+ */
+  __pyx_v_self->_rpc_state->disable_next_compression = 1;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":235
+ *             self._rpc_state.compression_algorithm = compression
+ * 
+ *     def disable_next_message_compression(self):             # <<<<<<<<<<<<<<
+ *         self._rpc_state.disable_next_compression = True
+ * 
+ */
+
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":238
+ *         self._rpc_state.disable_next_compression = True
+ * 
+ *     def peer(self):             # <<<<<<<<<<<<<<
+ *         cdef char *c_peer = NULL
+ *         c_peer = grpc_call_get_peer(self._rpc_state.call)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_ServicerContext_36peer(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_16_ServicerContext_36peer = {"peer", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16_ServicerContext_36peer, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_ServicerContext_36peer(PyObject *__pyx_v_self, 
+#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("peer (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("peer", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "peer", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_16_ServicerContext_35peer(((struct __pyx_obj_7_cython_6cygrpc__ServicerContext *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_16_ServicerContext_35peer(struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_self) {
+  char *__pyx_v_c_peer;
+  PyObject *__pyx_v_peer = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("peer", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":239
+ * 
+ *     def peer(self):
+ *         cdef char *c_peer = NULL             # <<<<<<<<<<<<<<
+ *         c_peer = grpc_call_get_peer(self._rpc_state.call)
+ *         peer = (<bytes>c_peer).decode('utf8')
+ */
+  __pyx_v_c_peer = NULL;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":240
+ *     def peer(self):
+ *         cdef char *c_peer = NULL
+ *         c_peer = grpc_call_get_peer(self._rpc_state.call)             # <<<<<<<<<<<<<<
+ *         peer = (<bytes>c_peer).decode('utf8')
+ *         gpr_free(c_peer)
+ */
+  __pyx_v_c_peer = grpc_call_get_peer(__pyx_v_self->_rpc_state->__pyx_base.call);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":241
+ *         cdef char *c_peer = NULL
+ *         c_peer = grpc_call_get_peer(self._rpc_state.call)
+ *         peer = (<bytes>c_peer).decode('utf8')             # <<<<<<<<<<<<<<
+ *         gpr_free(c_peer)
+ *         return peer
+ */
+  __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_c_peer); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 241, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  if (unlikely(__pyx_t_1 == Py_None)) {
+    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "decode");
+    __PYX_ERR(9, 241, __pyx_L1_error)
+  }
+  __pyx_t_2 = __Pyx_decode_bytes(((PyObject*)__pyx_t_1), 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 241, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_v_peer = __pyx_t_2;
+  __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":242
+ *         c_peer = grpc_call_get_peer(self._rpc_state.call)
+ *         peer = (<bytes>c_peer).decode('utf8')
+ *         gpr_free(c_peer)             # <<<<<<<<<<<<<<
+ *         return peer
+ * 
+ */
+  gpr_free(__pyx_v_c_peer);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":243
+ *         peer = (<bytes>c_peer).decode('utf8')
+ *         gpr_free(c_peer)
+ *         return peer             # <<<<<<<<<<<<<<
+ * 
+ *     def peer_identities(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_peer);
+  __pyx_r = __pyx_v_peer;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":238
+ *         self._rpc_state.disable_next_compression = True
+ * 
+ *     def peer(self):             # <<<<<<<<<<<<<<
+ *         cdef char *c_peer = NULL
+ *         c_peer = grpc_call_get_peer(self._rpc_state.call)
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("_cython.cygrpc._ServicerContext.peer", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_peer);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":245
+ *         return peer
+ * 
+ *     def peer_identities(self):             # <<<<<<<<<<<<<<
+ *         cdef Call query_call = Call()
+ *         query_call.c_call = self._rpc_state.call
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_ServicerContext_38peer_identities(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_16_ServicerContext_38peer_identities = {"peer_identities", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16_ServicerContext_38peer_identities, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_ServicerContext_38peer_identities(PyObject *__pyx_v_self, 
+#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("peer_identities (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("peer_identities", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "peer_identities", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_16_ServicerContext_37peer_identities(((struct __pyx_obj_7_cython_6cygrpc__ServicerContext *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_16_ServicerContext_37peer_identities(struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_self) {
+  struct __pyx_obj_7_cython_6cygrpc_Call *__pyx_v_query_call = 0;
+  PyObject *__pyx_v_identities = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  grpc_call *__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("peer_identities", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":246
+ * 
+ *     def peer_identities(self):
+ *         cdef Call query_call = Call()             # <<<<<<<<<<<<<<
+ *         query_call.c_call = self._rpc_state.call
+ *         identities = peer_identities(query_call)
+ */
+  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_7_cython_6cygrpc_Call)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 246, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_query_call = ((struct __pyx_obj_7_cython_6cygrpc_Call *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":247
+ *     def peer_identities(self):
+ *         cdef Call query_call = Call()
+ *         query_call.c_call = self._rpc_state.call             # <<<<<<<<<<<<<<
+ *         identities = peer_identities(query_call)
+ *         query_call.c_call = NULL
+ */
+  __pyx_t_2 = __pyx_v_self->_rpc_state->__pyx_base.call;
+  __pyx_v_query_call->c_call = __pyx_t_2;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":248
+ *         cdef Call query_call = Call()
+ *         query_call.c_call = self._rpc_state.call
+ *         identities = peer_identities(query_call)             # <<<<<<<<<<<<<<
+ *         query_call.c_call = NULL
+ *         return identities
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_peer_identities); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 248, __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, ((PyObject *)__pyx_v_query_call)};
+    __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(9, 248, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  }
+  __pyx_v_identities = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":249
+ *         query_call.c_call = self._rpc_state.call
+ *         identities = peer_identities(query_call)
+ *         query_call.c_call = NULL             # <<<<<<<<<<<<<<
+ *         return identities
+ * 
+ */
+  __pyx_v_query_call->c_call = NULL;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":250
+ *         identities = peer_identities(query_call)
+ *         query_call.c_call = NULL
+ *         return identities             # <<<<<<<<<<<<<<
+ * 
+ *     def peer_identity_key(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_identities);
+  __pyx_r = __pyx_v_identities;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":245
+ *         return peer
+ * 
+ *     def peer_identities(self):             # <<<<<<<<<<<<<<
+ *         cdef Call query_call = Call()
+ *         query_call.c_call = self._rpc_state.call
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("_cython.cygrpc._ServicerContext.peer_identities", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_query_call);
+  __Pyx_XDECREF(__pyx_v_identities);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":252
+ *         return identities
+ * 
+ *     def peer_identity_key(self):             # <<<<<<<<<<<<<<
+ *         cdef Call query_call = Call()
+ *         query_call.c_call = self._rpc_state.call
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_ServicerContext_40peer_identity_key(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_16_ServicerContext_40peer_identity_key = {"peer_identity_key", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16_ServicerContext_40peer_identity_key, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_ServicerContext_40peer_identity_key(PyObject *__pyx_v_self, 
+#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("peer_identity_key (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("peer_identity_key", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "peer_identity_key", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_16_ServicerContext_39peer_identity_key(((struct __pyx_obj_7_cython_6cygrpc__ServicerContext *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_16_ServicerContext_39peer_identity_key(struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_self) {
+  struct __pyx_obj_7_cython_6cygrpc_Call *__pyx_v_query_call = 0;
+  PyObject *__pyx_v_identity_key = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  grpc_call *__pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  unsigned int __pyx_t_5;
+  int __pyx_t_6;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("peer_identity_key", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":253
+ * 
+ *     def peer_identity_key(self):
+ *         cdef Call query_call = Call()             # <<<<<<<<<<<<<<
+ *         query_call.c_call = self._rpc_state.call
+ *         identity_key = peer_identity_key(query_call)
+ */
+  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_7_cython_6cygrpc_Call)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 253, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_query_call = ((struct __pyx_obj_7_cython_6cygrpc_Call *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":254
+ *     def peer_identity_key(self):
+ *         cdef Call query_call = Call()
+ *         query_call.c_call = self._rpc_state.call             # <<<<<<<<<<<<<<
+ *         identity_key = peer_identity_key(query_call)
+ *         query_call.c_call = NULL
+ */
+  __pyx_t_2 = __pyx_v_self->_rpc_state->__pyx_base.call;
+  __pyx_v_query_call->c_call = __pyx_t_2;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":255
+ *         cdef Call query_call = Call()
+ *         query_call.c_call = self._rpc_state.call
+ *         identity_key = peer_identity_key(query_call)             # <<<<<<<<<<<<<<
+ *         query_call.c_call = NULL
+ *         if identity_key:
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_peer_identity_key); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 255, __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, ((PyObject *)__pyx_v_query_call)};
+    __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(9, 255, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  }
+  __pyx_v_identity_key = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":256
+ *         query_call.c_call = self._rpc_state.call
+ *         identity_key = peer_identity_key(query_call)
+ *         query_call.c_call = NULL             # <<<<<<<<<<<<<<
+ *         if identity_key:
+ *             return identity_key.decode('utf8')
+ */
+  __pyx_v_query_call->c_call = NULL;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":257
+ *         identity_key = peer_identity_key(query_call)
+ *         query_call.c_call = NULL
+ *         if identity_key:             # <<<<<<<<<<<<<<
+ *             return identity_key.decode('utf8')
+ *         else:
+ */
+  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_identity_key); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(9, 257, __pyx_L1_error)
+  if (__pyx_t_6) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":258
+ *         query_call.c_call = NULL
+ *         if identity_key:
+ *             return identity_key.decode('utf8')             # <<<<<<<<<<<<<<
+ *         else:
+ *             return None
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_identity_key, __pyx_n_s_decode); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 258, __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_n_s_utf8};
+      __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(9, 258, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    }
+    __pyx_r = __pyx_t_1;
+    __pyx_t_1 = 0;
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":257
+ *         identity_key = peer_identity_key(query_call)
+ *         query_call.c_call = NULL
+ *         if identity_key:             # <<<<<<<<<<<<<<
+ *             return identity_key.decode('utf8')
+ *         else:
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":260
+ *             return identity_key.decode('utf8')
+ *         else:
+ *             return None             # <<<<<<<<<<<<<<
+ * 
+ *     def auth_context(self):
+ */
+  /*else*/ {
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+    goto __pyx_L0;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":252
+ *         return identities
+ * 
+ *     def peer_identity_key(self):             # <<<<<<<<<<<<<<
+ *         cdef Call query_call = Call()
+ *         query_call.c_call = self._rpc_state.call
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("_cython.cygrpc._ServicerContext.peer_identity_key", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_query_call);
+  __Pyx_XDECREF(__pyx_v_identity_key);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":262
+ *             return None
+ * 
+ *     def auth_context(self):             # <<<<<<<<<<<<<<
+ *         cdef Call query_call = Call()
+ *         query_call.c_call = self._rpc_state.call
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_ServicerContext_42auth_context(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_16_ServicerContext_42auth_context = {"auth_context", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16_ServicerContext_42auth_context, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_ServicerContext_42auth_context(PyObject *__pyx_v_self, 
+#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("auth_context (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("auth_context", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "auth_context", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_16_ServicerContext_41auth_context(((struct __pyx_obj_7_cython_6cygrpc__ServicerContext *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_16_ServicerContext_41auth_context(struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_self) {
+  struct __pyx_obj_7_cython_6cygrpc_Call *__pyx_v_query_call = 0;
+  PyObject *__pyx_v_bytes_ctx = NULL;
+  PyObject *__pyx_v_ctx = NULL;
+  PyObject *__pyx_v_key = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  grpc_call *__pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  unsigned int __pyx_t_5;
+  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("auth_context", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":263
+ * 
+ *     def auth_context(self):
+ *         cdef Call query_call = Call()             # <<<<<<<<<<<<<<
+ *         query_call.c_call = self._rpc_state.call
+ *         bytes_ctx = auth_context(query_call)
+ */
+  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_7_cython_6cygrpc_Call)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 263, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_query_call = ((struct __pyx_obj_7_cython_6cygrpc_Call *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":264
+ *     def auth_context(self):
+ *         cdef Call query_call = Call()
+ *         query_call.c_call = self._rpc_state.call             # <<<<<<<<<<<<<<
+ *         bytes_ctx = auth_context(query_call)
+ *         query_call.c_call = NULL
+ */
+  __pyx_t_2 = __pyx_v_self->_rpc_state->__pyx_base.call;
+  __pyx_v_query_call->c_call = __pyx_t_2;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":265
+ *         cdef Call query_call = Call()
+ *         query_call.c_call = self._rpc_state.call
+ *         bytes_ctx = auth_context(query_call)             # <<<<<<<<<<<<<<
+ *         query_call.c_call = NULL
+ *         if bytes_ctx:
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_auth_context); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 265, __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, ((PyObject *)__pyx_v_query_call)};
+    __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(9, 265, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  }
+  __pyx_v_bytes_ctx = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":266
+ *         query_call.c_call = self._rpc_state.call
+ *         bytes_ctx = auth_context(query_call)
+ *         query_call.c_call = NULL             # <<<<<<<<<<<<<<
+ *         if bytes_ctx:
+ *             ctx = {}
+ */
+  __pyx_v_query_call->c_call = NULL;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":267
+ *         bytes_ctx = auth_context(query_call)
+ *         query_call.c_call = NULL
+ *         if bytes_ctx:             # <<<<<<<<<<<<<<
+ *             ctx = {}
+ *             for key in bytes_ctx:
+ */
+  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_bytes_ctx); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(9, 267, __pyx_L1_error)
+  if (__pyx_t_6) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":268
+ *         query_call.c_call = NULL
+ *         if bytes_ctx:
+ *             ctx = {}             # <<<<<<<<<<<<<<
+ *             for key in bytes_ctx:
+ *                 ctx[key.decode('utf8')] = bytes_ctx[key]
+ */
+    __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 268, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_v_ctx = ((PyObject*)__pyx_t_1);
+    __pyx_t_1 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":269
+ *         if bytes_ctx:
+ *             ctx = {}
+ *             for key in bytes_ctx:             # <<<<<<<<<<<<<<
+ *                 ctx[key.decode('utf8')] = bytes_ctx[key]
+ *             return ctx
+ */
+    if (likely(PyList_CheckExact(__pyx_v_bytes_ctx)) || PyTuple_CheckExact(__pyx_v_bytes_ctx)) {
+      __pyx_t_1 = __pyx_v_bytes_ctx; __Pyx_INCREF(__pyx_t_1);
+      __pyx_t_7 = 0;
+      __pyx_t_8 = NULL;
+    } else {
+      __pyx_t_7 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_bytes_ctx); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 269, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __pyx_t_8 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 269, __pyx_L1_error)
+    }
+    for (;;) {
+      if (likely(!__pyx_t_8)) {
+        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, 269, __pyx_L1_error)
+            #endif
+            if (__pyx_t_7 >= __pyx_temp) break;
+          }
+          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+          __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_7); __Pyx_INCREF(__pyx_t_3); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(9, 269, __pyx_L1_error)
+          #else
+          __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 269, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_3);
+          #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, 269, __pyx_L1_error)
+            #endif
+            if (__pyx_t_7 >= __pyx_temp) break;
+          }
+          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+          __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_7); __Pyx_INCREF(__pyx_t_3); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(9, 269, __pyx_L1_error)
+          #else
+          __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 269, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_3);
+          #endif
+        }
+      } else {
+        __pyx_t_3 = __pyx_t_8(__pyx_t_1);
+        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, 269, __pyx_L1_error)
+          }
+          break;
+        }
+        __Pyx_GOTREF(__pyx_t_3);
+      }
+      __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_3);
+      __pyx_t_3 = 0;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":270
+ *             ctx = {}
+ *             for key in bytes_ctx:
+ *                 ctx[key.decode('utf8')] = bytes_ctx[key]             # <<<<<<<<<<<<<<
+ *             return ctx
+ *         else:
+ */
+      __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_v_bytes_ctx, __pyx_v_key); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 270, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
+      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_key, __pyx_n_s_decode); if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 270, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_9);
+      __pyx_t_10 = NULL;
+      __pyx_t_5 = 0;
+      #if CYTHON_UNPACK_METHODS
+      if (likely(PyMethod_Check(__pyx_t_9))) {
+        __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9);
+        if (likely(__pyx_t_10)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
+          __Pyx_INCREF(__pyx_t_10);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_9, function);
+          __pyx_t_5 = 1;
+        }
+      }
+      #endif
+      {
+        PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_n_s_utf8};
+        __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
+        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+        if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 270, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_4);
+        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+      }
+      if (unlikely((PyDict_SetItem(__pyx_v_ctx, __pyx_t_4, __pyx_t_3) < 0))) __PYX_ERR(9, 270, __pyx_L1_error)
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":269
+ *         if bytes_ctx:
+ *             ctx = {}
+ *             for key in bytes_ctx:             # <<<<<<<<<<<<<<
+ *                 ctx[key.decode('utf8')] = bytes_ctx[key]
+ *             return ctx
+ */
+    }
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":271
+ *             for key in bytes_ctx:
+ *                 ctx[key.decode('utf8')] = bytes_ctx[key]
+ *             return ctx             # <<<<<<<<<<<<<<
+ *         else:
+ *             return {}
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_INCREF(__pyx_v_ctx);
+    __pyx_r = __pyx_v_ctx;
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":267
+ *         bytes_ctx = auth_context(query_call)
+ *         query_call.c_call = NULL
+ *         if bytes_ctx:             # <<<<<<<<<<<<<<
+ *             ctx = {}
+ *             for key in bytes_ctx:
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":273
+ *             return ctx
+ *         else:
+ *             return {}             # <<<<<<<<<<<<<<
+ * 
+ *     def time_remaining(self):
+ */
+  /*else*/ {
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 273, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_r = __pyx_t_1;
+    __pyx_t_1 = 0;
+    goto __pyx_L0;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":262
+ *             return None
+ * 
+ *     def auth_context(self):             # <<<<<<<<<<<<<<
+ *         cdef Call query_call = Call()
+ *         query_call.c_call = self._rpc_state.call
+ */
+
+  /* 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_9);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_AddTraceback("_cython.cygrpc._ServicerContext.auth_context", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_query_call);
+  __Pyx_XDECREF(__pyx_v_bytes_ctx);
+  __Pyx_XDECREF(__pyx_v_ctx);
+  __Pyx_XDECREF(__pyx_v_key);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":275
+ *             return {}
+ * 
+ *     def time_remaining(self):             # <<<<<<<<<<<<<<
+ *         if self._rpc_state.details.deadline.seconds == _GPR_INF_FUTURE.seconds:
+ *             return None
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_ServicerContext_44time_remaining(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_16_ServicerContext_44time_remaining = {"time_remaining", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16_ServicerContext_44time_remaining, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_ServicerContext_44time_remaining(PyObject *__pyx_v_self, 
+#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("time_remaining (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("time_remaining", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "time_remaining", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_16_ServicerContext_43time_remaining(((struct __pyx_obj_7_cython_6cygrpc__ServicerContext *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_16_ServicerContext_43time_remaining(struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  long __pyx_t_2;
+  double __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("time_remaining", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":276
+ * 
+ *     def time_remaining(self):
+ *         if self._rpc_state.details.deadline.seconds == _GPR_INF_FUTURE.seconds:             # <<<<<<<<<<<<<<
+ *             return None
+ *         else:
+ */
+  __pyx_t_1 = (__pyx_v_self->_rpc_state->details.deadline.tv_sec == __pyx_v_7_cython_6cygrpc__GPR_INF_FUTURE.tv_sec);
+  if (__pyx_t_1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":277
+ *     def time_remaining(self):
+ *         if self._rpc_state.details.deadline.seconds == _GPR_INF_FUTURE.seconds:
+ *             return None             # <<<<<<<<<<<<<<
+ *         else:
+ *             return max(_time_from_timespec(self._rpc_state.details.deadline) - time.time(), 0)
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":276
+ * 
+ *     def time_remaining(self):
+ *         if self._rpc_state.details.deadline.seconds == _GPR_INF_FUTURE.seconds:             # <<<<<<<<<<<<<<
+ *             return None
+ *         else:
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":279
+ *             return None
+ *         else:
+ *             return max(_time_from_timespec(self._rpc_state.details.deadline) - time.time(), 0)             # <<<<<<<<<<<<<<
+ * 
+ *     def add_done_callback(self, callback):
+ */
+  /*else*/ {
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_2 = 0;
+    __pyx_t_3 = __pyx_f_7_cython_6cygrpc__time_from_timespec(__pyx_v_self->_rpc_state->details.deadline); if (unlikely(__pyx_t_3 == ((double)-1) && PyErr_Occurred())) __PYX_ERR(9, 279, __pyx_L1_error)
+    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 279, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_time); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 279, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_6);
+    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_time); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 279, __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, NULL};
+      __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_8, 0+__pyx_t_8);
+      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+      if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 279, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_5);
+      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    }
+    __pyx_t_7 = PyNumber_Subtract(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 279, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_7);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __pyx_t_4 = __Pyx_PyInt_From_long(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 279, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_6 = PyObject_RichCompare(__pyx_t_4, __pyx_t_7, Py_GT); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 279, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(9, 279, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (__pyx_t_1) {
+      __pyx_t_6 = __Pyx_PyInt_From_long(__pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 279, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_6);
+      __pyx_t_5 = __pyx_t_6;
+      __pyx_t_6 = 0;
+    } else {
+      __Pyx_INCREF(__pyx_t_7);
+      __pyx_t_5 = __pyx_t_7;
+    }
+    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    __Pyx_INCREF(__pyx_t_5);
+    __pyx_r = __pyx_t_5;
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    goto __pyx_L0;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":275
+ *             return {}
+ * 
+ *     def time_remaining(self):             # <<<<<<<<<<<<<<
+ *         if self._rpc_state.details.deadline.seconds == _GPR_INF_FUTURE.seconds:
+ *             return None
+ */
+
+  /* function exit code */
+  __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("_cython.cygrpc._ServicerContext.time_remaining", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":281
+ *             return max(_time_from_timespec(self._rpc_state.details.deadline) - time.time(), 0)
+ * 
+ *     def add_done_callback(self, callback):             # <<<<<<<<<<<<<<
+ *         cb = functools.partial(callback, self)
+ *         self._rpc_state.callbacks.append(cb)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_ServicerContext_46add_done_callback(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_16_ServicerContext_46add_done_callback = {"add_done_callback", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16_ServicerContext_46add_done_callback, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_ServicerContext_46add_done_callback(PyObject *__pyx_v_self, 
+#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_callback = 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("add_done_callback (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_callback,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_callback)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 281, __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, "add_done_callback") < 0)) __PYX_ERR(9, 281, __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_callback = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("add_done_callback", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 281, __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("_cython.cygrpc._ServicerContext.add_done_callback", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_16_ServicerContext_45add_done_callback(((struct __pyx_obj_7_cython_6cygrpc__ServicerContext *)__pyx_v_self), __pyx_v_callback);
+
+  /* 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_7_cython_6cygrpc_16_ServicerContext_45add_done_callback(struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_self, PyObject *__pyx_v_callback) {
+  PyObject *__pyx_v_cb = 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_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("add_done_callback", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":282
+ * 
+ *     def add_done_callback(self, callback):
+ *         cb = functools.partial(callback, self)             # <<<<<<<<<<<<<<
+ *         self._rpc_state.callbacks.append(cb)
+ * 
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_functools); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 282, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_partial); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 282, __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[3] = {__pyx_t_2, __pyx_v_callback, ((PyObject *)__pyx_v_self)};
+    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 2+__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+    if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 282, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  }
+  __pyx_v_cb = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":283
+ *     def add_done_callback(self, callback):
+ *         cb = functools.partial(callback, self)
+ *         self._rpc_state.callbacks.append(cb)             # <<<<<<<<<<<<<<
+ * 
+ *     def done(self):
+ */
+  __pyx_t_5 = __Pyx_PyObject_Append(__pyx_v_self->_rpc_state->callbacks, __pyx_v_cb); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(9, 283, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":281
+ *             return max(_time_from_timespec(self._rpc_state.details.deadline) - time.time(), 0)
+ * 
+ *     def add_done_callback(self, callback):             # <<<<<<<<<<<<<<
+ *         cb = functools.partial(callback, self)
+ *         self._rpc_state.callbacks.append(cb)
+ */
+
+  /* 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("_cython.cygrpc._ServicerContext.add_done_callback", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_cb);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":285
+ *         self._rpc_state.callbacks.append(cb)
+ * 
+ *     def done(self):             # <<<<<<<<<<<<<<
+ *         return self._rpc_state.status_sent
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_ServicerContext_48done(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_16_ServicerContext_48done = {"done", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16_ServicerContext_48done, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_ServicerContext_48done(PyObject *__pyx_v_self, 
+#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("done (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("done", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "done", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_16_ServicerContext_47done(((struct __pyx_obj_7_cython_6cygrpc__ServicerContext *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_16_ServicerContext_47done(struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__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("done", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":286
+ * 
+ *     def done(self):
+ *         return self._rpc_state.status_sent             # <<<<<<<<<<<<<<
+ * 
+ *     def cancelled(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->_rpc_state->status_sent); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 286, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":285
+ *         self._rpc_state.callbacks.append(cb)
+ * 
+ *     def done(self):             # <<<<<<<<<<<<<<
+ *         return self._rpc_state.status_sent
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc._ServicerContext.done", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":288
+ *         return self._rpc_state.status_sent
+ * 
+ *     def cancelled(self):             # <<<<<<<<<<<<<<
+ *         return self._rpc_state.status_code == StatusCode.cancelled
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_ServicerContext_50cancelled(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_16_ServicerContext_50cancelled = {"cancelled", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16_ServicerContext_50cancelled, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_ServicerContext_50cancelled(PyObject *__pyx_v_self, 
+#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("cancelled (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("cancelled", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "cancelled", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_16_ServicerContext_49cancelled(((struct __pyx_obj_7_cython_6cygrpc__ServicerContext *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_16_ServicerContext_49cancelled(struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_self) {
+  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("cancelled", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":289
+ * 
+ *     def cancelled(self):
+ *         return self._rpc_state.status_code == StatusCode.cancelled             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_grpc_status_code(__pyx_v_self->_rpc_state->status_code); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 289, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_StatusCode); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 289, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_cancelled); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 289, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 289, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":288
+ *         return self._rpc_state.status_sent
+ * 
+ *     def cancelled(self):             # <<<<<<<<<<<<<<
+ *         return self._rpc_state.status_code == StatusCode.cancelled
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("_cython.cygrpc._ServicerContext.cancelled", __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, "no default __reduce__ due to non-trivial __cinit__"
+ * def __setstate_cython__(self, __pyx_state):
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_ServicerContext_52__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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_16_ServicerContext_52__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16_ServicerContext_52__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_ServicerContext_52__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_7_cython_6cygrpc_16_ServicerContext_51__reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc__ServicerContext *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_16_ServicerContext_51__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__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(10, 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("_cython.cygrpc._ServicerContext.__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_7_cython_6cygrpc_16_ServicerContext_54__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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_16_ServicerContext_54__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16_ServicerContext_54__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_ServicerContext_54__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(10, 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(10, 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(10, 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("_cython.cygrpc._ServicerContext.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_16_ServicerContext_53__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc__ServicerContext *)__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_7_cython_6cygrpc_16_ServicerContext_53__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__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(10, 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("_cython.cygrpc._ServicerContext.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":295
+ *     """Sync servicer context for sync handler compatibility."""
+ * 
+ *     def __cinit__(self,             # <<<<<<<<<<<<<<
+ *                   _ServicerContext context):
+ *         self._context = context
+ */
+
+/* Python wrapper */
+static int __pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_context = 0;
+  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject* values[1] = {0};
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  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);
+  {
+    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_context,0};
+    if (__pyx_kwds) {
+      Py_ssize_t kw_args;
+      switch (__pyx_nargs) {
+        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
+      switch (__pyx_nargs) {
+        case  0:
+        if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_context)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 295, __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, "__cinit__") < 0)) __PYX_ERR(9, 295, __pyx_L3_error)
+      }
+    } else if (unlikely(__pyx_nargs != 1)) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+    }
+    __pyx_v_context = ((struct __pyx_obj_7_cython_6cygrpc__ServicerContext *)values[0]);
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 295, __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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_AddTraceback("_cython.cygrpc._SyncServicerContext.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_context), __pyx_ptype_7_cython_6cygrpc__ServicerContext, 1, "context", 0))) __PYX_ERR(9, 296, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_20_SyncServicerContext___cinit__(((struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *)__pyx_v_self), __pyx_v_context);
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = -1;
+  __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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_7_cython_6cygrpc_20_SyncServicerContext___cinit__(struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *__pyx_v_self, struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_context) {
+  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("__cinit__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":297
+ *     def __cinit__(self,
+ *                   _ServicerContext context):
+ *         self._context = context             # <<<<<<<<<<<<<<
+ *         self._callbacks = []
+ *         self._loop = context._loop
+ */
+  __Pyx_INCREF((PyObject *)__pyx_v_context);
+  __Pyx_GIVEREF((PyObject *)__pyx_v_context);
+  __Pyx_GOTREF((PyObject *)__pyx_v_self->_context);
+  __Pyx_DECREF((PyObject *)__pyx_v_self->_context);
+  __pyx_v_self->_context = __pyx_v_context;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":298
+ *                   _ServicerContext context):
+ *         self._context = context
+ *         self._callbacks = []             # <<<<<<<<<<<<<<
+ *         self._loop = context._loop
+ * 
+ */
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 298, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->_callbacks);
+  __Pyx_DECREF(__pyx_v_self->_callbacks);
+  __pyx_v_self->_callbacks = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":299
+ *         self._context = context
+ *         self._callbacks = []
+ *         self._loop = context._loop             # <<<<<<<<<<<<<<
+ * 
+ *     def abort(self,
+ */
+  __pyx_t_1 = __pyx_v_context->_loop;
+  __Pyx_INCREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->_loop);
+  __Pyx_DECREF(__pyx_v_self->_loop);
+  __pyx_v_self->_loop = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":295
+ *     """Sync servicer context for sync handler compatibility."""
+ * 
+ *     def __cinit__(self,             # <<<<<<<<<<<<<<
+ *                   _ServicerContext context):
+ *         self._context = context
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc._SyncServicerContext.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":301
+ *         self._loop = context._loop
+ * 
+ *     def abort(self,             # <<<<<<<<<<<<<<
+ *               object code,
+ *               str details='',
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_3abort(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_20_SyncServicerContext_3abort = {"abort", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_3abort, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_3abort(PyObject *__pyx_v_self, 
+#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_code = 0;
+  PyObject *__pyx_v_details = 0;
+  PyObject *__pyx_v_trailing_metadata = 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("abort (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_code,&__pyx_n_s_details,&__pyx_n_s_trailing_metadata,0};
+    values[1] = __Pyx_Arg_NewRef_FASTCALL(((PyObject*)__pyx_kp_s__7));
+    values[2] = __Pyx_Arg_NewRef_FASTCALL(__pyx_k__80);
+    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_code)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 301, __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_details);
+          if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
+          else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 301, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (kw_args > 0) {
+          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_trailing_metadata);
+          if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
+          else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 301, __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, "abort") < 0)) __PYX_ERR(9, 301, __pyx_L3_error)
+      }
+    } else {
+      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);
+        break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_code = values[0];
+    __pyx_v_details = ((PyObject*)values[1]);
+    __pyx_v_trailing_metadata = ((PyObject*)values[2]);
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("abort", 0, 1, 3, __pyx_nargs); __PYX_ERR(9, 301, __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("_cython.cygrpc._SyncServicerContext.abort", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_details), (&PyString_Type), 1, "details", 1))) __PYX_ERR(9, 303, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_trailing_metadata), (&PyTuple_Type), 1, "trailing_metadata", 1))) __PYX_ERR(9, 304, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_20_SyncServicerContext_2abort(((struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *)__pyx_v_self), __pyx_v_code, __pyx_v_details, __pyx_v_trailing_metadata);
+
+  /* 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_7_cython_6cygrpc_20_SyncServicerContext_2abort(struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *__pyx_v_self, PyObject *__pyx_v_code, PyObject *__pyx_v_details, PyObject *__pyx_v_trailing_metadata) {
+  PyObject *__pyx_v_future = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  unsigned int __pyx_t_6;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("abort", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":305
+ *               str details='',
+ *               tuple trailing_metadata=_IMMUTABLE_EMPTY_METADATA):
+ *         future = asyncio.run_coroutine_threadsafe(             # <<<<<<<<<<<<<<
+ *             self._context.abort(code, details, trailing_metadata),
+ *             self._loop)
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_asyncio); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 305, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_run_coroutine_threadsafe); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 305, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":306
+ *               tuple trailing_metadata=_IMMUTABLE_EMPTY_METADATA):
+ *         future = asyncio.run_coroutine_threadsafe(
+ *             self._context.abort(code, details, trailing_metadata),             # <<<<<<<<<<<<<<
+ *             self._loop)
+ *         # Abort should raise an AbortError
+ */
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_context), __pyx_n_s_abort); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 306, __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[4] = {__pyx_t_5, __pyx_v_code, __pyx_v_details, __pyx_v_trailing_metadata};
+    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 3+__pyx_t_6);
+    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 306, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":307
+ *         future = asyncio.run_coroutine_threadsafe(
+ *             self._context.abort(code, details, trailing_metadata),
+ *             self._loop)             # <<<<<<<<<<<<<<
+ *         # Abort should raise an AbortError
+ *         future.exception()
+ */
+  __pyx_t_4 = NULL;
+  __pyx_t_6 = 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_6 = 1;
+    }
+  }
+  #endif
+  {
+    PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_2, __pyx_v_self->_loop};
+    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
+    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 305, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  }
+  __pyx_v_future = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":309
+ *             self._loop)
+ *         # Abort should raise an AbortError
+ *         future.exception()             # <<<<<<<<<<<<<<
+ * 
+ *     def send_initial_metadata(self, object metadata):
+ */
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_future, __pyx_n_s_exception); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 309, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_2 = NULL;
+  __pyx_t_6 = 0;
+  #if CYTHON_UNPACK_METHODS
+  if (likely(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_6 = 1;
+    }
+  }
+  #endif
+  {
+    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
+    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
+    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+    if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 309, __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/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":301
+ *         self._loop = context._loop
+ * 
+ *     def abort(self,             # <<<<<<<<<<<<<<
+ *               object code,
+ *               str details='',
+ */
+
+  /* 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("_cython.cygrpc._SyncServicerContext.abort", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_future);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":311
+ *         future.exception()
+ * 
+ *     def send_initial_metadata(self, object metadata):             # <<<<<<<<<<<<<<
+ *         future = asyncio.run_coroutine_threadsafe(
+ *             self._context.send_initial_metadata(metadata),
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_5send_initial_metadata(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_20_SyncServicerContext_5send_initial_metadata = {"send_initial_metadata", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_5send_initial_metadata, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_5send_initial_metadata(PyObject *__pyx_v_self, 
+#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_metadata = 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("send_initial_metadata (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_metadata,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_metadata)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 311, __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, "send_initial_metadata") < 0)) __PYX_ERR(9, 311, __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_metadata = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("send_initial_metadata", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 311, __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("_cython.cygrpc._SyncServicerContext.send_initial_metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_20_SyncServicerContext_4send_initial_metadata(((struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *)__pyx_v_self), __pyx_v_metadata);
+
+  /* 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_7_cython_6cygrpc_20_SyncServicerContext_4send_initial_metadata(struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *__pyx_v_self, PyObject *__pyx_v_metadata) {
+  PyObject *__pyx_v_future = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  unsigned int __pyx_t_6;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("send_initial_metadata", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":312
+ * 
+ *     def send_initial_metadata(self, object metadata):
+ *         future = asyncio.run_coroutine_threadsafe(             # <<<<<<<<<<<<<<
+ *             self._context.send_initial_metadata(metadata),
+ *             self._loop)
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_asyncio); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 312, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_run_coroutine_threadsafe); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 312, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":313
+ *     def send_initial_metadata(self, object metadata):
+ *         future = asyncio.run_coroutine_threadsafe(
+ *             self._context.send_initial_metadata(metadata),             # <<<<<<<<<<<<<<
+ *             self._loop)
+ *         future.result()
+ */
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_context), __pyx_n_s_send_initial_metadata_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 313, __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_metadata};
+    __pyx_t_2 = __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_2)) __PYX_ERR(9, 313, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":314
+ *         future = asyncio.run_coroutine_threadsafe(
+ *             self._context.send_initial_metadata(metadata),
+ *             self._loop)             # <<<<<<<<<<<<<<
+ *         future.result()
+ * 
+ */
+  __pyx_t_4 = NULL;
+  __pyx_t_6 = 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_6 = 1;
+    }
+  }
+  #endif
+  {
+    PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_2, __pyx_v_self->_loop};
+    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
+    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 312, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  }
+  __pyx_v_future = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":315
+ *             self._context.send_initial_metadata(metadata),
+ *             self._loop)
+ *         future.result()             # <<<<<<<<<<<<<<
+ * 
+ *     def set_trailing_metadata(self, object metadata):
+ */
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_future, __pyx_n_s_result); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 315, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_2 = NULL;
+  __pyx_t_6 = 0;
+  #if CYTHON_UNPACK_METHODS
+  if (likely(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_6 = 1;
+    }
+  }
+  #endif
+  {
+    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
+    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
+    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+    if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 315, __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/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":311
+ *         future.exception()
+ * 
+ *     def send_initial_metadata(self, object metadata):             # <<<<<<<<<<<<<<
+ *         future = asyncio.run_coroutine_threadsafe(
+ *             self._context.send_initial_metadata(metadata),
+ */
+
+  /* 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("_cython.cygrpc._SyncServicerContext.send_initial_metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_future);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":317
+ *         future.result()
+ * 
+ *     def set_trailing_metadata(self, object metadata):             # <<<<<<<<<<<<<<
+ *         self._context.set_trailing_metadata(metadata)
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_7set_trailing_metadata(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_20_SyncServicerContext_7set_trailing_metadata = {"set_trailing_metadata", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_7set_trailing_metadata, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_7set_trailing_metadata(PyObject *__pyx_v_self, 
+#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_metadata = 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("set_trailing_metadata (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_metadata,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_metadata)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 317, __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, "set_trailing_metadata") < 0)) __PYX_ERR(9, 317, __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_metadata = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("set_trailing_metadata", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 317, __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("_cython.cygrpc._SyncServicerContext.set_trailing_metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_20_SyncServicerContext_6set_trailing_metadata(((struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *)__pyx_v_self), __pyx_v_metadata);
+
+  /* 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_7_cython_6cygrpc_20_SyncServicerContext_6set_trailing_metadata(struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *__pyx_v_self, PyObject *__pyx_v_metadata) {
+  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("set_trailing_metadata", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":318
+ * 
+ *     def set_trailing_metadata(self, object metadata):
+ *         self._context.set_trailing_metadata(metadata)             # <<<<<<<<<<<<<<
+ * 
+ *     def invocation_metadata(self):
+ */
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_context), __pyx_n_s_set_trailing_metadata); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 318, __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_metadata};
+    __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, 318, __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/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":317
+ *         future.result()
+ * 
+ *     def set_trailing_metadata(self, object metadata):             # <<<<<<<<<<<<<<
+ *         self._context.set_trailing_metadata(metadata)
+ * 
+ */
+
+  /* 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("_cython.cygrpc._SyncServicerContext.set_trailing_metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":320
+ *         self._context.set_trailing_metadata(metadata)
+ * 
+ *     def invocation_metadata(self):             # <<<<<<<<<<<<<<
+ *         return self._context.invocation_metadata()
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_9invocation_metadata(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_20_SyncServicerContext_9invocation_metadata = {"invocation_metadata", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_9invocation_metadata, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_9invocation_metadata(PyObject *__pyx_v_self, 
+#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("invocation_metadata (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("invocation_metadata", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "invocation_metadata", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_20_SyncServicerContext_8invocation_metadata(((struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_20_SyncServicerContext_8invocation_metadata(struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *__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("invocation_metadata", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":321
+ * 
+ *     def invocation_metadata(self):
+ *         return self._context.invocation_metadata()             # <<<<<<<<<<<<<<
+ * 
+ *     def set_code(self, object code):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_context), __pyx_n_s_invocation_metadata); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 321, __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(9, 321, __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/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":320
+ *         self._context.set_trailing_metadata(metadata)
+ * 
+ *     def invocation_metadata(self):             # <<<<<<<<<<<<<<
+ *         return self._context.invocation_metadata()
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("_cython.cygrpc._SyncServicerContext.invocation_metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":323
+ *         return self._context.invocation_metadata()
+ * 
+ *     def set_code(self, object code):             # <<<<<<<<<<<<<<
+ *         self._context.set_code(code)
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_11set_code(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_20_SyncServicerContext_11set_code = {"set_code", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_11set_code, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_11set_code(PyObject *__pyx_v_self, 
+#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_code = 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("set_code (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_code,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_code)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 323, __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, "set_code") < 0)) __PYX_ERR(9, 323, __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_code = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("set_code", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 323, __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("_cython.cygrpc._SyncServicerContext.set_code", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_20_SyncServicerContext_10set_code(((struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *)__pyx_v_self), __pyx_v_code);
+
+  /* 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_7_cython_6cygrpc_20_SyncServicerContext_10set_code(struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *__pyx_v_self, PyObject *__pyx_v_code) {
+  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("set_code", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":324
+ * 
+ *     def set_code(self, object code):
+ *         self._context.set_code(code)             # <<<<<<<<<<<<<<
+ * 
+ *     def set_details(self, str details):
+ */
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_context), __pyx_n_s_set_code); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 324, __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_code};
+    __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, 324, __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/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":323
+ *         return self._context.invocation_metadata()
+ * 
+ *     def set_code(self, object code):             # <<<<<<<<<<<<<<
+ *         self._context.set_code(code)
+ * 
+ */
+
+  /* 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("_cython.cygrpc._SyncServicerContext.set_code", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":326
+ *         self._context.set_code(code)
+ * 
+ *     def set_details(self, str details):             # <<<<<<<<<<<<<<
+ *         self._context.set_details(details)
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_13set_details(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_20_SyncServicerContext_13set_details = {"set_details", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_13set_details, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_13set_details(PyObject *__pyx_v_self, 
+#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_details = 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("set_details (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_details,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_details)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 326, __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, "set_details") < 0)) __PYX_ERR(9, 326, __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_details = ((PyObject*)values[0]);
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("set_details", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 326, __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("_cython.cygrpc._SyncServicerContext.set_details", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_details), (&PyString_Type), 1, "details", 1))) __PYX_ERR(9, 326, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_20_SyncServicerContext_12set_details(((struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *)__pyx_v_self), __pyx_v_details);
+
+  /* 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_7_cython_6cygrpc_20_SyncServicerContext_12set_details(struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *__pyx_v_self, PyObject *__pyx_v_details) {
+  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("set_details", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":327
+ * 
+ *     def set_details(self, str details):
+ *         self._context.set_details(details)             # <<<<<<<<<<<<<<
+ * 
+ *     def set_compression(self, object compression):
+ */
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_context), __pyx_n_s_set_details); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 327, __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_details};
+    __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, 327, __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/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":326
+ *         self._context.set_code(code)
+ * 
+ *     def set_details(self, str details):             # <<<<<<<<<<<<<<
+ *         self._context.set_details(details)
+ * 
+ */
+
+  /* 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("_cython.cygrpc._SyncServicerContext.set_details", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":329
+ *         self._context.set_details(details)
+ * 
+ *     def set_compression(self, object compression):             # <<<<<<<<<<<<<<
+ *         self._context.set_compression(compression)
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_15set_compression(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_20_SyncServicerContext_15set_compression = {"set_compression", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_15set_compression, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_15set_compression(PyObject *__pyx_v_self, 
+#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_compression = 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("set_compression (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_compression,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_compression)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 329, __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, "set_compression") < 0)) __PYX_ERR(9, 329, __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_compression = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("set_compression", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 329, __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("_cython.cygrpc._SyncServicerContext.set_compression", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_20_SyncServicerContext_14set_compression(((struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *)__pyx_v_self), __pyx_v_compression);
+
+  /* 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_7_cython_6cygrpc_20_SyncServicerContext_14set_compression(struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *__pyx_v_self, PyObject *__pyx_v_compression) {
+  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("set_compression", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":330
+ * 
+ *     def set_compression(self, object compression):
+ *         self._context.set_compression(compression)             # <<<<<<<<<<<<<<
+ * 
+ *     def disable_next_message_compression(self):
+ */
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_context), __pyx_n_s_set_compression); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 330, __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_compression};
+    __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, 330, __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/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":329
+ *         self._context.set_details(details)
+ * 
+ *     def set_compression(self, object compression):             # <<<<<<<<<<<<<<
+ *         self._context.set_compression(compression)
+ * 
+ */
+
+  /* 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("_cython.cygrpc._SyncServicerContext.set_compression", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":332
+ *         self._context.set_compression(compression)
+ * 
+ *     def disable_next_message_compression(self):             # <<<<<<<<<<<<<<
+ *         self._context.disable_next_message_compression()
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_17disable_next_message_compression(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_20_SyncServicerContext_17disable_next_message_compression = {"disable_next_message_compression", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_17disable_next_message_compression, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_17disable_next_message_compression(PyObject *__pyx_v_self, 
+#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("disable_next_message_compression (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("disable_next_message_compression", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "disable_next_message_compression", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_20_SyncServicerContext_16disable_next_message_compression(((struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_20_SyncServicerContext_16disable_next_message_compression(struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *__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("disable_next_message_compression", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":333
+ * 
+ *     def disable_next_message_compression(self):
+ *         self._context.disable_next_message_compression()             # <<<<<<<<<<<<<<
+ * 
+ *     def add_callback(self, object callback):
+ */
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_context), __pyx_n_s_disable_next_message_compression); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 333, __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(9, 333, __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/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":332
+ *         self._context.set_compression(compression)
+ * 
+ *     def disable_next_message_compression(self):             # <<<<<<<<<<<<<<
+ *         self._context.disable_next_message_compression()
+ * 
+ */
+
+  /* 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("_cython.cygrpc._SyncServicerContext.disable_next_message_compression", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":335
+ *         self._context.disable_next_message_compression()
+ * 
+ *     def add_callback(self, object callback):             # <<<<<<<<<<<<<<
+ *         self._callbacks.append(callback)
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_19add_callback(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_20_SyncServicerContext_19add_callback = {"add_callback", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_19add_callback, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_19add_callback(PyObject *__pyx_v_self, 
+#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_callback = 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("add_callback (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_callback,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_callback)) != 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, "add_callback") < 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_callback = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("add_callback", 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("_cython.cygrpc._SyncServicerContext.add_callback", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_20_SyncServicerContext_18add_callback(((struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *)__pyx_v_self), __pyx_v_callback);
+
+  /* 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_7_cython_6cygrpc_20_SyncServicerContext_18add_callback(struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *__pyx_v_self, PyObject *__pyx_v_callback) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("add_callback", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":336
+ * 
+ *     def add_callback(self, object callback):
+ *         self._callbacks.append(callback)             # <<<<<<<<<<<<<<
+ * 
+ *     def peer(self):
+ */
+  if (unlikely(__pyx_v_self->_callbacks == Py_None)) {
+    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
+    __PYX_ERR(9, 336, __pyx_L1_error)
+  }
+  __pyx_t_1 = __Pyx_PyList_Append(__pyx_v_self->_callbacks, __pyx_v_callback); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(9, 336, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":335
+ *         self._context.disable_next_message_compression()
+ * 
+ *     def add_callback(self, object callback):             # <<<<<<<<<<<<<<
+ *         self._callbacks.append(callback)
+ * 
+ */
+
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc._SyncServicerContext.add_callback", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":338
+ *         self._callbacks.append(callback)
+ * 
+ *     def peer(self):             # <<<<<<<<<<<<<<
+ *         return self._context.peer()
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_21peer(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_20_SyncServicerContext_21peer = {"peer", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_21peer, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_21peer(PyObject *__pyx_v_self, 
+#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("peer (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("peer", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "peer", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_20_SyncServicerContext_20peer(((struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_20_SyncServicerContext_20peer(struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *__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("peer", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":339
+ * 
+ *     def peer(self):
+ *         return self._context.peer()             # <<<<<<<<<<<<<<
+ * 
+ *     def peer_identities(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_context), __pyx_n_s_peer); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 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, 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(9, 339, __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/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":338
+ *         self._callbacks.append(callback)
+ * 
+ *     def peer(self):             # <<<<<<<<<<<<<<
+ *         return self._context.peer()
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("_cython.cygrpc._SyncServicerContext.peer", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":341
+ *         return self._context.peer()
+ * 
+ *     def peer_identities(self):             # <<<<<<<<<<<<<<
+ *         return self._context.peer_identities()
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_23peer_identities(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_20_SyncServicerContext_23peer_identities = {"peer_identities", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_23peer_identities, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_23peer_identities(PyObject *__pyx_v_self, 
+#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("peer_identities (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("peer_identities", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "peer_identities", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_20_SyncServicerContext_22peer_identities(((struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_20_SyncServicerContext_22peer_identities(struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *__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("peer_identities", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":342
+ * 
+ *     def peer_identities(self):
+ *         return self._context.peer_identities()             # <<<<<<<<<<<<<<
+ * 
+ *     def peer_identity_key(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_context), __pyx_n_s_peer_identities); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 342, __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(9, 342, __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/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":341
+ *         return self._context.peer()
+ * 
+ *     def peer_identities(self):             # <<<<<<<<<<<<<<
+ *         return self._context.peer_identities()
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("_cython.cygrpc._SyncServicerContext.peer_identities", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":344
+ *         return self._context.peer_identities()
+ * 
+ *     def peer_identity_key(self):             # <<<<<<<<<<<<<<
+ *         return self._context.peer_identity_key()
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_25peer_identity_key(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_20_SyncServicerContext_25peer_identity_key = {"peer_identity_key", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_25peer_identity_key, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_25peer_identity_key(PyObject *__pyx_v_self, 
+#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("peer_identity_key (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("peer_identity_key", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "peer_identity_key", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_20_SyncServicerContext_24peer_identity_key(((struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_20_SyncServicerContext_24peer_identity_key(struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *__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("peer_identity_key", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":345
+ * 
+ *     def peer_identity_key(self):
+ *         return self._context.peer_identity_key()             # <<<<<<<<<<<<<<
+ * 
+ *     def auth_context(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_context), __pyx_n_s_peer_identity_key); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 345, __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(9, 345, __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/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":344
+ *         return self._context.peer_identities()
+ * 
+ *     def peer_identity_key(self):             # <<<<<<<<<<<<<<
+ *         return self._context.peer_identity_key()
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("_cython.cygrpc._SyncServicerContext.peer_identity_key", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":347
+ *         return self._context.peer_identity_key()
+ * 
+ *     def auth_context(self):             # <<<<<<<<<<<<<<
+ *         return self._context.auth_context()
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_27auth_context(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_20_SyncServicerContext_27auth_context = {"auth_context", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_27auth_context, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_27auth_context(PyObject *__pyx_v_self, 
+#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("auth_context (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("auth_context", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "auth_context", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_20_SyncServicerContext_26auth_context(((struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_20_SyncServicerContext_26auth_context(struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *__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("auth_context", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":348
+ * 
+ *     def auth_context(self):
+ *         return self._context.auth_context()             # <<<<<<<<<<<<<<
+ * 
+ *     def time_remaining(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_context), __pyx_n_s_auth_context); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 348, __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(9, 348, __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/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":347
+ *         return self._context.peer_identity_key()
+ * 
+ *     def auth_context(self):             # <<<<<<<<<<<<<<
+ *         return self._context.auth_context()
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("_cython.cygrpc._SyncServicerContext.auth_context", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":350
+ *         return self._context.auth_context()
+ * 
+ *     def time_remaining(self):             # <<<<<<<<<<<<<<
+ *         return self._context.time_remaining()
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_29time_remaining(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_20_SyncServicerContext_29time_remaining = {"time_remaining", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_29time_remaining, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_29time_remaining(PyObject *__pyx_v_self, 
+#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("time_remaining (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("time_remaining", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "time_remaining", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_20_SyncServicerContext_28time_remaining(((struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_20_SyncServicerContext_28time_remaining(struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *__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("time_remaining", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":351
+ * 
+ *     def time_remaining(self):
+ *         return self._context.time_remaining()             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_context), __pyx_n_s_time_remaining); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 351, __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(9, 351, __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/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":350
+ *         return self._context.auth_context()
+ * 
+ *     def time_remaining(self):             # <<<<<<<<<<<<<<
+ *         return self._context.time_remaining()
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("_cython.cygrpc._SyncServicerContext.time_remaining", __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, "no default __reduce__ due to non-trivial __cinit__"
+ * def __setstate_cython__(self, __pyx_state):
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_31__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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_20_SyncServicerContext_31__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_31__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_31__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_7_cython_6cygrpc_20_SyncServicerContext_30__reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_20_SyncServicerContext_30__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *__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(10, 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("_cython.cygrpc._SyncServicerContext.__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_7_cython_6cygrpc_20_SyncServicerContext_33__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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_20_SyncServicerContext_33__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_33__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_33__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(10, 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(10, 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(10, 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("_cython.cygrpc._SyncServicerContext.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_20_SyncServicerContext_32__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *)__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_7_cython_6cygrpc_20_SyncServicerContext_32__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *__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(10, 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("_cython.cygrpc._SyncServicerContext.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+static PyObject *__pyx_gb_7_cython_6cygrpc_152generator24(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":354
+ * 
+ * 
+ * async def _run_interceptor(object interceptors, object query_handler,             # <<<<<<<<<<<<<<
+ *                            object handler_call_details):
+ *     interceptor = next(interceptors, None)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_151_run_interceptor(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_151_run_interceptor = {"_run_interceptor", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_151_run_interceptor, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_151_run_interceptor(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_interceptors = 0;
+  PyObject *__pyx_v_query_handler = 0;
+  PyObject *__pyx_v_handler_call_details = 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("_run_interceptor (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_interceptors,&__pyx_n_s_query_handler,&__pyx_n_s_handler_call_details,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_interceptors)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 354, __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_query_handler)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 354, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("_run_interceptor", 1, 3, 3, 1); __PYX_ERR(9, 354, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_handler_call_details)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 354, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("_run_interceptor", 1, 3, 3, 2); __PYX_ERR(9, 354, __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, "_run_interceptor") < 0)) __PYX_ERR(9, 354, __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_interceptors = values[0];
+    __pyx_v_query_handler = values[1];
+    __pyx_v_handler_call_details = values[2];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("_run_interceptor", 1, 3, 3, __pyx_nargs); __PYX_ERR(9, 354, __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("_cython.cygrpc._run_interceptor", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_150_run_interceptor(__pyx_self, __pyx_v_interceptors, __pyx_v_query_handler, __pyx_v_handler_call_details);
+
+  /* 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_7_cython_6cygrpc_150_run_interceptor(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_interceptors, PyObject *__pyx_v_query_handler, PyObject *__pyx_v_handler_call_details) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor *__pyx_cur_scope;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_run_interceptor", 0);
+  __pyx_cur_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor, __pyx_empty_tuple, NULL);
+  if (unlikely(!__pyx_cur_scope)) {
+    __pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor *)Py_None);
+    __Pyx_INCREF(Py_None);
+    __PYX_ERR(9, 354, __pyx_L1_error)
+  } else {
+    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+  }
+  __pyx_cur_scope->__pyx_v_interceptors = __pyx_v_interceptors;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_interceptors);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_interceptors);
+  __pyx_cur_scope->__pyx_v_query_handler = __pyx_v_query_handler;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_query_handler);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_query_handler);
+  __pyx_cur_scope->__pyx_v_handler_call_details = __pyx_v_handler_call_details;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_handler_call_details);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_handler_call_details);
+  {
+    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7_cython_6cygrpc_152generator24, __pyx_codeobj__81, (PyObject *) __pyx_cur_scope, __pyx_n_s_run_interceptor, __pyx_n_s_run_interceptor, __pyx_n_s_cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(9, 354, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_cur_scope);
+    __Pyx_RefNannyFinishContext();
+    return (PyObject *) gen;
+  }
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc._run_interceptor", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_gb_7_cython_6cygrpc_152generator24(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
+{
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor *__pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor *)__pyx_generator->closure);
+  PyObject *__pyx_r = NULL;
+  PyObject *__pyx_t_1 = NULL;
+  int __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_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("_run_interceptor", 0);
+  switch (__pyx_generator->resume_label) {
+    case 0: goto __pyx_L3_first_run;
+    case 1: goto __pyx_L5_resume_from_await;
+    default: /* CPython raises the right error here */
+    __Pyx_RefNannyFinishContext();
+    return NULL;
+  }
+  __pyx_L3_first_run:;
+  if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 354, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":356
+ * async def _run_interceptor(object interceptors, object query_handler,
+ *                            object handler_call_details):
+ *     interceptor = next(interceptors, None)             # <<<<<<<<<<<<<<
+ *     if interceptor:
+ *         continuation = functools.partial(_run_interceptor, interceptors,
+ */
+  __pyx_t_1 = __Pyx_PyIter_Next2(__pyx_cur_scope->__pyx_v_interceptors, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 356, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __pyx_cur_scope->__pyx_v_interceptor = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":357
+ *                            object handler_call_details):
+ *     interceptor = next(interceptors, None)
+ *     if interceptor:             # <<<<<<<<<<<<<<
+ *         continuation = functools.partial(_run_interceptor, interceptors,
+ *                                          query_handler)
+ */
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_interceptor); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(9, 357, __pyx_L1_error)
+  if (__pyx_t_2) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":358
+ *     interceptor = next(interceptors, None)
+ *     if interceptor:
+ *         continuation = functools.partial(_run_interceptor, interceptors,             # <<<<<<<<<<<<<<
+ *                                          query_handler)
+ *         return await interceptor.intercept_service(continuation, handler_call_details)
+ */
+    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_functools); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 358, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_partial); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 358, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_run_interceptor); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 358, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":359
+ *     if interceptor:
+ *         continuation = functools.partial(_run_interceptor, interceptors,
+ *                                          query_handler)             # <<<<<<<<<<<<<<
+ *         return await interceptor.intercept_service(continuation, handler_call_details)
+ *     else:
+ */
+    __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[4] = {__pyx_t_5, __pyx_t_3, __pyx_cur_scope->__pyx_v_interceptors, __pyx_cur_scope->__pyx_v_query_handler};
+      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_4, __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;
+      if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 358, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    }
+    __Pyx_GIVEREF(__pyx_t_1);
+    __pyx_cur_scope->__pyx_v_continuation = __pyx_t_1;
+    __pyx_t_1 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":360
+ *         continuation = functools.partial(_run_interceptor, interceptors,
+ *                                          query_handler)
+ *         return await interceptor.intercept_service(continuation, handler_call_details)             # <<<<<<<<<<<<<<
+ *     else:
+ *         return query_handler(handler_call_details)
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_interceptor, __pyx_n_s_intercept_service); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 360, __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_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_6 = 1;
+      }
+    }
+    #endif
+    {
+      PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_cur_scope->__pyx_v_continuation, __pyx_cur_scope->__pyx_v_handler_call_details};
+      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 360, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    }
+    __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __Pyx_XGOTREF(__pyx_r);
+    if (likely(__pyx_r)) {
+      __Pyx_XGIVEREF(__pyx_r);
+      __Pyx_RefNannyFinishContext();
+      __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+      /* return from generator, awaiting value */
+      __pyx_generator->resume_label = 1;
+      return __pyx_r;
+      __pyx_L5_resume_from_await:;
+      if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 360, __pyx_L1_error)
+      __pyx_t_1 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_1);
+    } else {
+      __pyx_t_1 = NULL;
+      if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_1) < 0) __PYX_ERR(9, 360, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+    }
+    __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":357
+ *                            object handler_call_details):
+ *     interceptor = next(interceptors, None)
+ *     if interceptor:             # <<<<<<<<<<<<<<
+ *         continuation = functools.partial(_run_interceptor, interceptors,
+ *                                          query_handler)
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":362
+ *         return await interceptor.intercept_service(continuation, handler_call_details)
+ *     else:
+ *         return query_handler(handler_call_details)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  /*else*/ {
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_query_handler);
+    __pyx_t_4 = __pyx_cur_scope->__pyx_v_query_handler; __pyx_t_3 = NULL;
+    __pyx_t_6 = 0;
+    #if CYTHON_UNPACK_METHODS
+    if (unlikely(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_6 = 1;
+      }
+    }
+    #endif
+    {
+      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_cur_scope->__pyx_v_handler_call_details};
+      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 362, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    }
+    __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    goto __pyx_L0;
+  }
+  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":354
+ * 
+ * 
+ * async def _run_interceptor(object interceptors, object query_handler,             # <<<<<<<<<<<<<<
+ *                            object handler_call_details):
+ *     interceptor = next(interceptors, None)
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_Generator_Replace_StopIteration(0);
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_AddTraceback("_run_interceptor", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
+  #if !CYTHON_USE_EXC_INFO_STACK
+  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+  #endif
+  __pyx_generator->resume_label = -1;
+  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":365
+ * 
+ * 
+ * def _is_async_handler(object handler):             # <<<<<<<<<<<<<<
+ *     """Inspect if a method handler is async or sync."""
+ *     return inspect.isawaitable(handler) or inspect.iscoroutinefunction(handler) or inspect.isasyncgenfunction(handler)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_154_is_async_handler(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_7_cython_6cygrpc_153_is_async_handler, "Inspect if a method handler is async or sync.");
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_154_is_async_handler = {"_is_async_handler", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_154_is_async_handler, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7_cython_6cygrpc_153_is_async_handler};
+static PyObject *__pyx_pw_7_cython_6cygrpc_154_is_async_handler(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_handler = 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("_is_async_handler (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_handler,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_handler)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 365, __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, "_is_async_handler") < 0)) __PYX_ERR(9, 365, __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_handler = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("_is_async_handler", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 365, __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("_cython.cygrpc._is_async_handler", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_153_is_async_handler(__pyx_self, __pyx_v_handler);
+
+  /* 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_7_cython_6cygrpc_153_is_async_handler(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_handler) {
+  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_t_6;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_is_async_handler", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":367
+ * def _is_async_handler(object handler):
+ *     """Inspect if a method handler is async or sync."""
+ *     return inspect.isawaitable(handler) or inspect.iscoroutinefunction(handler) or inspect.isasyncgenfunction(handler)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_inspect); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 367, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_isawaitable); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 367, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_t_3 = NULL;
+  __pyx_t_5 = 0;
+  #if CYTHON_UNPACK_METHODS
+  if (unlikely(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[2] = {__pyx_t_3, __pyx_v_handler};
+    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 367, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  }
+  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(9, 367, __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_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_inspect); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 367, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_iscoroutinefunction); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 367, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __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_handler};
+    __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(9, 367, __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(9, 367, __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_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_inspect); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 367, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_isasyncgenfunction); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 367, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_t_3 = NULL;
+  __pyx_t_5 = 0;
+  #if CYTHON_UNPACK_METHODS
+  if (unlikely(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[2] = {__pyx_t_3, __pyx_v_handler};
+    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 367, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  }
+  __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_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":365
+ * 
+ * 
+ * def _is_async_handler(object handler):             # <<<<<<<<<<<<<<
+ *     """Inspect if a method handler is async or sync."""
+ *     return inspect.isawaitable(handler) or inspect.iscoroutinefunction(handler) or inspect.isasyncgenfunction(handler)
+ */
+
+  /* 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("_cython.cygrpc._is_async_handler", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+static PyObject *__pyx_gb_7_cython_6cygrpc_157generator25(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":370
+ * 
+ * 
+ * async def _find_method_handler(str method, tuple metadata, list generic_handlers,             # <<<<<<<<<<<<<<
+ *                           tuple interceptors):
+ *     def query_handlers(handler_call_details):
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_156_find_method_handler(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_156_find_method_handler = {"_find_method_handler", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_156_find_method_handler, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_156_find_method_handler(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_method = 0;
+  PyObject *__pyx_v_metadata = 0;
+  PyObject *__pyx_v_generic_handlers = 0;
+  PyObject *__pyx_v_interceptors = 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("_find_method_handler (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_method,&__pyx_n_s_metadata,&__pyx_n_s_generic_handlers,&__pyx_n_s_interceptors,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_method)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 370, __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_metadata)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 370, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("_find_method_handler", 1, 4, 4, 1); __PYX_ERR(9, 370, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_generic_handlers)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 370, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("_find_method_handler", 1, 4, 4, 2); __PYX_ERR(9, 370, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  3:
+        if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_interceptors)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 370, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("_find_method_handler", 1, 4, 4, 3); __PYX_ERR(9, 370, __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, "_find_method_handler") < 0)) __PYX_ERR(9, 370, __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_method = ((PyObject*)values[0]);
+    __pyx_v_metadata = ((PyObject*)values[1]);
+    __pyx_v_generic_handlers = ((PyObject*)values[2]);
+    __pyx_v_interceptors = ((PyObject*)values[3]);
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("_find_method_handler", 1, 4, 4, __pyx_nargs); __PYX_ERR(9, 370, __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("_cython.cygrpc._find_method_handler", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_method), (&PyString_Type), 1, "method", 1))) __PYX_ERR(9, 370, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_metadata), (&PyTuple_Type), 1, "metadata", 1))) __PYX_ERR(9, 370, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_generic_handlers), (&PyList_Type), 1, "generic_handlers", 1))) __PYX_ERR(9, 370, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_interceptors), (&PyTuple_Type), 1, "interceptors", 1))) __PYX_ERR(9, 371, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_155_find_method_handler(__pyx_self, __pyx_v_method, __pyx_v_metadata, __pyx_v_generic_handlers, __pyx_v_interceptors);
+
+  /* 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_7_cython_6cygrpc_155_find_method_handler(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_method, PyObject *__pyx_v_metadata, PyObject *__pyx_v_generic_handlers, PyObject *__pyx_v_interceptors) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler *__pyx_cur_scope;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_find_method_handler", 0);
+  __pyx_cur_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler, __pyx_empty_tuple, NULL);
+  if (unlikely(!__pyx_cur_scope)) {
+    __pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler *)Py_None);
+    __Pyx_INCREF(Py_None);
+    __PYX_ERR(9, 370, __pyx_L1_error)
+  } else {
+    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+  }
+  __pyx_cur_scope->__pyx_v_method = __pyx_v_method;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_method);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_method);
+  __pyx_cur_scope->__pyx_v_metadata = __pyx_v_metadata;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_metadata);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_metadata);
+  __pyx_cur_scope->__pyx_v_generic_handlers = __pyx_v_generic_handlers;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_generic_handlers);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_generic_handlers);
+  __pyx_cur_scope->__pyx_v_interceptors = __pyx_v_interceptors;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_interceptors);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_interceptors);
+  {
+    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7_cython_6cygrpc_157generator25, __pyx_codeobj__82, (PyObject *) __pyx_cur_scope, __pyx_n_s_find_method_handler, __pyx_n_s_find_method_handler, __pyx_n_s_cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(9, 370, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_cur_scope);
+    __Pyx_RefNannyFinishContext();
+    return (PyObject *) gen;
+  }
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc._find_method_handler", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":372
+ * async def _find_method_handler(str method, tuple metadata, list generic_handlers,
+ *                           tuple interceptors):
+ *     def query_handlers(handler_call_details):             # <<<<<<<<<<<<<<
+ *         for generic_handler in generic_handlers:
+ *             method_handler = generic_handler.service(handler_call_details)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_20_find_method_handler_1query_handlers(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_20_find_method_handler_1query_handlers = {"query_handlers", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_20_find_method_handler_1query_handlers, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_20_find_method_handler_1query_handlers(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_handler_call_details = 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("query_handlers (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_handler_call_details,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_handler_call_details)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 372, __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, "query_handlers") < 0)) __PYX_ERR(9, 372, __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_handler_call_details = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("query_handlers", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 372, __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("_cython.cygrpc._find_method_handler.query_handlers", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_20_find_method_handler_query_handlers(__pyx_self, __pyx_v_handler_call_details);
+
+  /* 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_7_cython_6cygrpc_20_find_method_handler_query_handlers(PyObject *__pyx_self, PyObject *__pyx_v_handler_call_details) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler *__pyx_cur_scope;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler *__pyx_outer_scope;
+  PyObject *__pyx_v_generic_handler = NULL;
+  PyObject *__pyx_v_method_handler = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  Py_ssize_t __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_t_7;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("query_handlers", 1);
+  __pyx_outer_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler *) __Pyx_CyFunction_GetClosure(__pyx_self);
+  __pyx_cur_scope = __pyx_outer_scope;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":373
+ *                           tuple interceptors):
+ *     def query_handlers(handler_call_details):
+ *         for generic_handler in generic_handlers:             # <<<<<<<<<<<<<<
+ *             method_handler = generic_handler.service(handler_call_details)
+ *             if method_handler is not None:
+ */
+  if (unlikely(!__pyx_cur_scope->__pyx_v_generic_handlers)) { __Pyx_RaiseClosureNameError("generic_handlers"); __PYX_ERR(9, 373, __pyx_L1_error) }
+  if (unlikely(__pyx_cur_scope->__pyx_v_generic_handlers == Py_None)) {
+    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
+    __PYX_ERR(9, 373, __pyx_L1_error)
+  }
+  __pyx_t_1 = __pyx_cur_scope->__pyx_v_generic_handlers; __Pyx_INCREF(__pyx_t_1);
+  __pyx_t_2 = 0;
+  for (;;) {
+    {
+      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, 373, __pyx_L1_error)
+      #endif
+      if (__pyx_t_2 >= __pyx_temp) break;
+    }
+    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+    __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(9, 373, __pyx_L1_error)
+    #else
+    __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 373, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    #endif
+    __Pyx_XDECREF_SET(__pyx_v_generic_handler, __pyx_t_3);
+    __pyx_t_3 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":374
+ *     def query_handlers(handler_call_details):
+ *         for generic_handler in generic_handlers:
+ *             method_handler = generic_handler.service(handler_call_details)             # <<<<<<<<<<<<<<
+ *             if method_handler is not None:
+ *                 return method_handler
+ */
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_generic_handler, __pyx_n_s_service); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 374, __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_handler_call_details};
+      __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(9, 374, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    }
+    __Pyx_XDECREF_SET(__pyx_v_method_handler, __pyx_t_3);
+    __pyx_t_3 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":375
+ *         for generic_handler in generic_handlers:
+ *             method_handler = generic_handler.service(handler_call_details)
+ *             if method_handler is not None:             # <<<<<<<<<<<<<<
+ *                 return method_handler
+ *         return None
+ */
+    __pyx_t_7 = (__pyx_v_method_handler != Py_None);
+    if (__pyx_t_7) {
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":376
+ *             method_handler = generic_handler.service(handler_call_details)
+ *             if method_handler is not None:
+ *                 return method_handler             # <<<<<<<<<<<<<<
+ *         return None
+ * 
+ */
+      __Pyx_XDECREF(__pyx_r);
+      __Pyx_INCREF(__pyx_v_method_handler);
+      __pyx_r = __pyx_v_method_handler;
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      goto __pyx_L0;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":375
+ *         for generic_handler in generic_handlers:
+ *             method_handler = generic_handler.service(handler_call_details)
+ *             if method_handler is not None:             # <<<<<<<<<<<<<<
+ *                 return method_handler
+ *         return None
+ */
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":373
+ *                           tuple interceptors):
+ *     def query_handlers(handler_call_details):
+ *         for generic_handler in generic_handlers:             # <<<<<<<<<<<<<<
+ *             method_handler = generic_handler.service(handler_call_details)
+ *             if method_handler is not None:
+ */
+  }
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":377
+ *             if method_handler is not None:
+ *                 return method_handler
+ *         return None             # <<<<<<<<<<<<<<
+ * 
+ *     cdef _HandlerCallDetails handler_call_details = _HandlerCallDetails(method,
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":372
+ * async def _find_method_handler(str method, tuple metadata, list generic_handlers,
+ *                           tuple interceptors):
+ *     def query_handlers(handler_call_details):             # <<<<<<<<<<<<<<
+ *         for generic_handler in generic_handlers:
+ *             method_handler = generic_handler.service(handler_call_details)
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_AddTraceback("_cython.cygrpc._find_method_handler.query_handlers", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_generic_handler);
+  __Pyx_XDECREF(__pyx_v_method_handler);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":370
+ * 
+ * 
+ * async def _find_method_handler(str method, tuple metadata, list generic_handlers,             # <<<<<<<<<<<<<<
+ *                           tuple interceptors):
+ *     def query_handlers(handler_call_details):
+ */
+
+static PyObject *__pyx_gb_7_cython_6cygrpc_157generator25(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
+{
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler *__pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler *)__pyx_generator->closure);
+  PyObject *__pyx_r = NULL;
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __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_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("_find_method_handler", 0);
+  switch (__pyx_generator->resume_label) {
+    case 0: goto __pyx_L3_first_run;
+    case 1: goto __pyx_L5_resume_from_await;
+    default: /* CPython raises the right error here */
+    __Pyx_RefNannyFinishContext();
+    return NULL;
+  }
+  __pyx_L3_first_run:;
+  if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 370, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":372
+ * async def _find_method_handler(str method, tuple metadata, list generic_handlers,
+ *                           tuple interceptors):
+ *     def query_handlers(handler_call_details):             # <<<<<<<<<<<<<<
+ *         for generic_handler in generic_handlers:
+ *             method_handler = generic_handler.service(handler_call_details)
+ */
+  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_20_find_method_handler_1query_handlers, 0, __pyx_n_s_find_method_handler_locals_quer, ((PyObject*)__pyx_cur_scope), __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__84)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 372, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __pyx_cur_scope->__pyx_v_query_handlers = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":379
+ *         return None
+ * 
+ *     cdef _HandlerCallDetails handler_call_details = _HandlerCallDetails(method,             # <<<<<<<<<<<<<<
+ *                                                                         metadata)
+ *     # interceptor
+ */
+  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 379, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_method);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_method);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_cur_scope->__pyx_v_method)) __PYX_ERR(9, 379, __pyx_L1_error);
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_metadata);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_metadata);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_cur_scope->__pyx_v_metadata)) __PYX_ERR(9, 379, __pyx_L1_error);
+  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_7_cython_6cygrpc__HandlerCallDetails), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 379, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_GIVEREF(__pyx_t_2);
+  __pyx_cur_scope->__pyx_v_handler_call_details = ((struct __pyx_obj_7_cython_6cygrpc__HandlerCallDetails *)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":382
+ *                                                                         metadata)
+ *     # interceptor
+ *     if interceptors:             # <<<<<<<<<<<<<<
+ *         return await _run_interceptor(iter(interceptors), query_handlers,
+ *                                       handler_call_details)
+ */
+  __pyx_t_3 = (__pyx_cur_scope->__pyx_v_interceptors != Py_None)&&(PyTuple_GET_SIZE(__pyx_cur_scope->__pyx_v_interceptors) != 0);
+  if (__pyx_t_3) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":383
+ *     # interceptor
+ *     if interceptors:
+ *         return await _run_interceptor(iter(interceptors), query_handlers,             # <<<<<<<<<<<<<<
+ *                                       handler_call_details)
+ *     else:
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_run_interceptor); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 383, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_4 = PyObject_GetIter(__pyx_cur_scope->__pyx_v_interceptors); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 383, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":384
+ *     if interceptors:
+ *         return await _run_interceptor(iter(interceptors), query_handlers,
+ *                                       handler_call_details)             # <<<<<<<<<<<<<<
+ *     else:
+ *         return query_handlers(handler_call_details)
+ */
+    __pyx_t_5 = NULL;
+    __pyx_t_6 = 0;
+    #if CYTHON_UNPACK_METHODS
+    if (unlikely(PyMethod_Check(__pyx_t_1))) {
+      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
+      if (likely(__pyx_t_5)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+        __Pyx_INCREF(__pyx_t_5);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_1, function);
+        __pyx_t_6 = 1;
+      }
+    }
+    #endif
+    {
+      PyObject *__pyx_callargs[4] = {__pyx_t_5, __pyx_t_4, __pyx_cur_scope->__pyx_v_query_handlers, ((PyObject *)__pyx_cur_scope->__pyx_v_handler_call_details)};
+      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_6, 3+__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_2)) __PYX_ERR(9, 383, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    }
+    __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_2);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_XGOTREF(__pyx_r);
+    if (likely(__pyx_r)) {
+      __Pyx_XGIVEREF(__pyx_r);
+      __Pyx_RefNannyFinishContext();
+      __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+      /* return from generator, awaiting value */
+      __pyx_generator->resume_label = 1;
+      return __pyx_r;
+      __pyx_L5_resume_from_await:;
+      if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 383, __pyx_L1_error)
+      __pyx_t_2 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_2);
+    } else {
+      __pyx_t_2 = NULL;
+      if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_2) < 0) __PYX_ERR(9, 383, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+    }
+    __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":382
+ *                                                                         metadata)
+ *     # interceptor
+ *     if interceptors:             # <<<<<<<<<<<<<<
+ *         return await _run_interceptor(iter(interceptors), query_handlers,
+ *                                       handler_call_details)
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":386
+ *                                       handler_call_details)
+ *     else:
+ *         return query_handlers(handler_call_details)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  /*else*/ {
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_2 = __pyx_pf_7_cython_6cygrpc_20_find_method_handler_query_handlers(__pyx_cur_scope->__pyx_v_query_handlers, ((PyObject *)__pyx_cur_scope->__pyx_v_handler_call_details)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 386, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L0;
+  }
+  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":370
+ * 
+ * 
+ * async def _find_method_handler(str method, tuple metadata, list generic_handlers,             # <<<<<<<<<<<<<<
+ *                           tuple interceptors):
+ *     def query_handlers(handler_call_details):
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_Generator_Replace_StopIteration(0);
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_AddTraceback("_find_method_handler", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
+  #if !CYTHON_USE_EXC_INFO_STACK
+  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+  #endif
+  __pyx_generator->resume_label = -1;
+  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+static PyObject *__pyx_gb_7_cython_6cygrpc_160generator26(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":389
+ * 
+ * 
+ * async def _finish_handler_with_unary_response(RPCState rpc_state,             # <<<<<<<<<<<<<<
+ *                                               object unary_handler,
+ *                                               object request,
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_159_finish_handler_with_unary_response(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_7_cython_6cygrpc_158_finish_handler_with_unary_response, "Finishes server method handler with a single response.\n\n    This function executes the application handler, and handles response\n    sending, as well as errors. It is shared between unary-unary and\n    stream-unary handlers.\n    ");
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_159_finish_handler_with_unary_response = {"_finish_handler_with_unary_response", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_159_finish_handler_with_unary_response, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7_cython_6cygrpc_158_finish_handler_with_unary_response};
+static PyObject *__pyx_pw_7_cython_6cygrpc_159_finish_handler_with_unary_response(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
+) {
+  struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state = 0;
+  PyObject *__pyx_v_unary_handler = 0;
+  PyObject *__pyx_v_request = 0;
+  struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_servicer_context = 0;
+  PyObject *__pyx_v_response_serializer = 0;
+  PyObject *__pyx_v_loop = 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("_finish_handler_with_unary_response (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_rpc_state,&__pyx_n_s_unary_handler,&__pyx_n_s_request,&__pyx_n_s_servicer_context,&__pyx_n_s_response_serializer,&__pyx_n_s_loop,0};
+    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_rpc_state)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 389, __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_unary_handler)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 389, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("_finish_handler_with_unary_response", 1, 6, 6, 1); __PYX_ERR(9, 389, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_request)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 389, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("_finish_handler_with_unary_response", 1, 6, 6, 2); __PYX_ERR(9, 389, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  3:
+        if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_servicer_context)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 389, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("_finish_handler_with_unary_response", 1, 6, 6, 3); __PYX_ERR(9, 389, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  4:
+        if (likely((values[4] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_response_serializer)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[4]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 389, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("_finish_handler_with_unary_response", 1, 6, 6, 4); __PYX_ERR(9, 389, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  5:
+        if (likely((values[5] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_loop)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[5]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 389, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("_finish_handler_with_unary_response", 1, 6, 6, 5); __PYX_ERR(9, 389, __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, "_finish_handler_with_unary_response") < 0)) __PYX_ERR(9, 389, __pyx_L3_error)
+      }
+    } else if (unlikely(__pyx_nargs != 6)) {
+      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);
+      values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
+    }
+    __pyx_v_rpc_state = ((struct __pyx_obj_7_cython_6cygrpc_RPCState *)values[0]);
+    __pyx_v_unary_handler = values[1];
+    __pyx_v_request = values[2];
+    __pyx_v_servicer_context = ((struct __pyx_obj_7_cython_6cygrpc__ServicerContext *)values[3]);
+    __pyx_v_response_serializer = values[4];
+    __pyx_v_loop = values[5];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("_finish_handler_with_unary_response", 1, 6, 6, __pyx_nargs); __PYX_ERR(9, 389, __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("_cython.cygrpc._finish_handler_with_unary_response", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rpc_state), __pyx_ptype_7_cython_6cygrpc_RPCState, 1, "rpc_state", 0))) __PYX_ERR(9, 389, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_servicer_context), __pyx_ptype_7_cython_6cygrpc__ServicerContext, 1, "servicer_context", 0))) __PYX_ERR(9, 392, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_158_finish_handler_with_unary_response(__pyx_self, __pyx_v_rpc_state, __pyx_v_unary_handler, __pyx_v_request, __pyx_v_servicer_context, __pyx_v_response_serializer, __pyx_v_loop);
+
+  /* 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_7_cython_6cygrpc_158_finish_handler_with_unary_response(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state, PyObject *__pyx_v_unary_handler, PyObject *__pyx_v_request, struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_servicer_context, PyObject *__pyx_v_response_serializer, PyObject *__pyx_v_loop) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response *__pyx_cur_scope;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_finish_handler_with_unary_response", 0);
+  __pyx_cur_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response, __pyx_empty_tuple, NULL);
+  if (unlikely(!__pyx_cur_scope)) {
+    __pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response *)Py_None);
+    __Pyx_INCREF(Py_None);
+    __PYX_ERR(9, 389, __pyx_L1_error)
+  } else {
+    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+  }
+  __pyx_cur_scope->__pyx_v_rpc_state = __pyx_v_rpc_state;
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state);
+  __pyx_cur_scope->__pyx_v_unary_handler = __pyx_v_unary_handler;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_unary_handler);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_unary_handler);
+  __pyx_cur_scope->__pyx_v_request = __pyx_v_request;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_request);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_request);
+  __pyx_cur_scope->__pyx_v_servicer_context = __pyx_v_servicer_context;
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context);
+  __pyx_cur_scope->__pyx_v_response_serializer = __pyx_v_response_serializer;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_response_serializer);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_response_serializer);
+  __pyx_cur_scope->__pyx_v_loop = __pyx_v_loop;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
+  {
+    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7_cython_6cygrpc_160generator26, __pyx_codeobj__85, (PyObject *) __pyx_cur_scope, __pyx_n_s_finish_handler_with_unary_respo, __pyx_n_s_finish_handler_with_unary_respo, __pyx_n_s_cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(9, 389, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_cur_scope);
+    __Pyx_RefNannyFinishContext();
+    return (PyObject *) gen;
+  }
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc._finish_handler_with_unary_response", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_gb_7_cython_6cygrpc_160generator26(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
+{
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response *__pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response *)__pyx_generator->closure);
+  PyObject *__pyx_r = NULL;
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  unsigned int __pyx_t_4;
+  int __pyx_t_5;
+  PyObject *__pyx_t_6 = NULL;
+  Py_ssize_t __pyx_t_7;
+  int __pyx_t_8;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("_finish_handler_with_unary_response", 0);
+  switch (__pyx_generator->resume_label) {
+    case 0: goto __pyx_L3_first_run;
+    case 1: goto __pyx_L5_resume_from_await;
+    case 2: goto __pyx_L6_resume_from_await;
+    case 3: goto __pyx_L12_resume_from_await;
+    default: /* CPython raises the right error here */
+    __Pyx_RefNannyFinishContext();
+    return NULL;
+  }
+  __pyx_L3_first_run:;
+  if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 389, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":404
+ *     cdef object response_message
+ *     cdef _SyncServicerContext sync_servicer_context
+ *     install_context_from_request_call_event_aio(rpc_state)             # <<<<<<<<<<<<<<
+ * 
+ *     if _is_async_handler(unary_handler):
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_install_context_from_request_cal); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 404, __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_cur_scope->__pyx_v_rpc_state)};
+    __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, 404, __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/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":406
+ *     install_context_from_request_call_event_aio(rpc_state)
+ * 
+ *     if _is_async_handler(unary_handler):             # <<<<<<<<<<<<<<
+ *         # Run async method handlers in this coroutine
+ *         response_message = await unary_handler(
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_is_async_handler); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 406, __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_cur_scope->__pyx_v_unary_handler};
+    __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, 406, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  }
+  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(9, 406, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (__pyx_t_5) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":410
+ *         response_message = await unary_handler(
+ *             request,
+ *             servicer_context,             # <<<<<<<<<<<<<<
+ *         )
+ *     else:
+ */
+    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_unary_handler);
+    __pyx_t_2 = __pyx_cur_scope->__pyx_v_unary_handler; __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[3] = {__pyx_t_3, __pyx_cur_scope->__pyx_v_request, ((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context)};
+      __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(9, 408, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    }
+    __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __Pyx_XGOTREF(__pyx_r);
+    if (likely(__pyx_r)) {
+      __Pyx_XGIVEREF(__pyx_r);
+      __Pyx_RefNannyFinishContext();
+      __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+      /* return from generator, awaiting value */
+      __pyx_generator->resume_label = 1;
+      return __pyx_r;
+      __pyx_L5_resume_from_await:;
+      if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 408, __pyx_L1_error)
+      __pyx_t_1 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_1);
+    } else {
+      __pyx_t_1 = NULL;
+      if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_1) < 0) __PYX_ERR(9, 408, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+    }
+    __Pyx_GIVEREF(__pyx_t_1);
+    __pyx_cur_scope->__pyx_v_response_message = __pyx_t_1;
+    __pyx_t_1 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":406
+ *     install_context_from_request_call_event_aio(rpc_state)
+ * 
+ *     if _is_async_handler(unary_handler):             # <<<<<<<<<<<<<<
+ *         # Run async method handlers in this coroutine
+ *         response_message = await unary_handler(
+ */
+    goto __pyx_L4;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":414
+ *     else:
+ *         # Run sync method handlers in the thread pool
+ *         sync_servicer_context = _SyncServicerContext(servicer_context)             # <<<<<<<<<<<<<<
+ *         response_message = await loop.run_in_executor(
+ *             rpc_state.server.thread_pool(),
+ */
+  /*else*/ {
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_7_cython_6cygrpc__SyncServicerContext), ((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 414, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_GIVEREF(__pyx_t_1);
+    __pyx_cur_scope->__pyx_v_sync_servicer_context = ((struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *)__pyx_t_1);
+    __pyx_t_1 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":415
+ *         # Run sync method handlers in the thread pool
+ *         sync_servicer_context = _SyncServicerContext(servicer_context)
+ *         response_message = await loop.run_in_executor(             # <<<<<<<<<<<<<<
+ *             rpc_state.server.thread_pool(),
+ *             unary_handler,
+ */
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_loop, __pyx_n_s_run_in_executor); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 415, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":416
+ *         sync_servicer_context = _SyncServicerContext(servicer_context)
+ *         response_message = await loop.run_in_executor(
+ *             rpc_state.server.thread_pool(),             # <<<<<<<<<<<<<<
+ *             unary_handler,
+ *             request,
+ */
+    __pyx_t_3 = ((struct __pyx_vtabstruct_7_cython_6cygrpc_AioServer *)__pyx_cur_scope->__pyx_v_rpc_state->server->__pyx_vtab)->thread_pool(__pyx_cur_scope->__pyx_v_rpc_state->server); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 416, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":419
+ *             unary_handler,
+ *             request,
+ *             sync_servicer_context,             # <<<<<<<<<<<<<<
+ *         )
+ *         # Support sync-stack callback
+ */
+    __pyx_t_6 = NULL;
+    __pyx_t_4 = 0;
+    #if CYTHON_UNPACK_METHODS
+    if (likely(PyMethod_Check(__pyx_t_2))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_2, function);
+        __pyx_t_4 = 1;
+      }
+    }
+    #endif
+    {
+      PyObject *__pyx_callargs[5] = {__pyx_t_6, __pyx_t_3, __pyx_cur_scope->__pyx_v_unary_handler, __pyx_cur_scope->__pyx_v_request, ((PyObject *)__pyx_cur_scope->__pyx_v_sync_servicer_context)};
+      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 4+__pyx_t_4);
+      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 415, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    }
+    __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __Pyx_XGOTREF(__pyx_r);
+    if (likely(__pyx_r)) {
+      __Pyx_XGIVEREF(__pyx_r);
+      __Pyx_RefNannyFinishContext();
+      __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+      /* return from generator, awaiting value */
+      __pyx_generator->resume_label = 2;
+      return __pyx_r;
+      __pyx_L6_resume_from_await:;
+      if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 415, __pyx_L1_error)
+      __pyx_t_1 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_1);
+    } else {
+      __pyx_t_1 = NULL;
+      if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_1) < 0) __PYX_ERR(9, 415, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+    }
+    __Pyx_GIVEREF(__pyx_t_1);
+    __pyx_cur_scope->__pyx_v_response_message = __pyx_t_1;
+    __pyx_t_1 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":422
+ *         )
+ *         # Support sync-stack callback
+ *         for callback in sync_servicer_context._callbacks:             # <<<<<<<<<<<<<<
+ *             callback()
+ * 
+ */
+    if (unlikely(__pyx_cur_scope->__pyx_v_sync_servicer_context->_callbacks == Py_None)) {
+      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
+      __PYX_ERR(9, 422, __pyx_L1_error)
+    }
+    __pyx_t_1 = __pyx_cur_scope->__pyx_v_sync_servicer_context->_callbacks; __Pyx_INCREF(__pyx_t_1);
+    __pyx_t_7 = 0;
+    for (;;) {
+      {
+        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, 422, __pyx_L1_error)
+        #endif
+        if (__pyx_t_7 >= __pyx_temp) break;
+      }
+      #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+      __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_7); __Pyx_INCREF(__pyx_t_2); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(9, 422, __pyx_L1_error)
+      #else
+      __pyx_t_2 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 422, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      #endif
+      __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_callback);
+      __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_callback, __pyx_t_2);
+      __Pyx_GIVEREF(__pyx_t_2);
+      __pyx_t_2 = 0;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":423
+ *         # Support sync-stack callback
+ *         for callback in sync_servicer_context._callbacks:
+ *             callback()             # <<<<<<<<<<<<<<
+ * 
+ *     # Raises exception if aborted
+ */
+      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_callback);
+      __pyx_t_3 = __pyx_cur_scope->__pyx_v_callback; __pyx_t_6 = NULL;
+      __pyx_t_4 = 0;
+      #if CYTHON_UNPACK_METHODS
+      if (unlikely(PyMethod_Check(__pyx_t_3))) {
+        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
+        if (likely(__pyx_t_6)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+          __Pyx_INCREF(__pyx_t_6);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_3, function);
+          __pyx_t_4 = 1;
+        }
+      }
+      #endif
+      {
+        PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
+        __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 423, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_2);
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      }
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":422
+ *         )
+ *         # Support sync-stack callback
+ *         for callback in sync_servicer_context._callbacks:             # <<<<<<<<<<<<<<
+ *             callback()
+ * 
+ */
+    }
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  }
+  __pyx_L4:;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":426
+ * 
+ *     # Raises exception if aborted
+ *     rpc_state.raise_for_termination()             # <<<<<<<<<<<<<<
+ * 
+ *     # Serializes the response message
+ */
+  ((struct __pyx_vtabstruct_7_cython_6cygrpc_RPCState *)__pyx_cur_scope->__pyx_v_rpc_state->__pyx_vtab)->raise_for_termination(__pyx_cur_scope->__pyx_v_rpc_state); if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 426, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":430
+ *     # Serializes the response message
+ *     cdef bytes response_raw
+ *     if rpc_state.status_code == StatusCode.ok:             # <<<<<<<<<<<<<<
+ *         response_raw = serialize(
+ *             response_serializer,
+ */
+  __pyx_t_1 = __Pyx_PyInt_From_grpc_status_code(__pyx_cur_scope->__pyx_v_rpc_state->status_code); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 430, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_StatusCode); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 430, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_ok); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 430, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 430, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(9, 430, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (__pyx_t_5) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":431
+ *     cdef bytes response_raw
+ *     if rpc_state.status_code == StatusCode.ok:
+ *         response_raw = serialize(             # <<<<<<<<<<<<<<
+ *             response_serializer,
+ *             response_message,
+ */
+    __pyx_t_2 = __pyx_f_7_cython_6cygrpc_serialize(__pyx_cur_scope->__pyx_v_response_serializer, __pyx_cur_scope->__pyx_v_response_message); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 431, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_GIVEREF(__pyx_t_2);
+    __pyx_cur_scope->__pyx_v_response_raw = ((PyObject*)__pyx_t_2);
+    __pyx_t_2 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":430
+ *     # Serializes the response message
+ *     cdef bytes response_raw
+ *     if rpc_state.status_code == StatusCode.ok:             # <<<<<<<<<<<<<<
+ *         response_raw = serialize(
+ *             response_serializer,
+ */
+    goto __pyx_L10;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":437
+ *     else:
+ *         # Discards the response message if the status code is non-OK.
+ *         response_raw = b''             # <<<<<<<<<<<<<<
+ * 
+ *     # Assembles the batch operations
+ */
+  /*else*/ {
+    __Pyx_INCREF(__pyx_kp_b__7);
+    __Pyx_GIVEREF(__pyx_kp_b__7);
+    __pyx_cur_scope->__pyx_v_response_raw = __pyx_kp_b__7;
+  }
+  __pyx_L10:;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":442
+ *     cdef tuple finish_ops
+ *     finish_ops = (
+ *         SendMessageOperation(response_raw, rpc_state.get_write_flag()),             # <<<<<<<<<<<<<<
+ *         SendStatusFromServerOperation(
+ *             rpc_state.trailing_metadata,
+ */
+  __pyx_t_8 = ((struct __pyx_vtabstruct_7_cython_6cygrpc_RPCState *)__pyx_cur_scope->__pyx_v_rpc_state->__pyx_vtab)->get_write_flag(__pyx_cur_scope->__pyx_v_rpc_state); if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 442, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 442, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 442, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_response_raw);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_response_raw);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_cur_scope->__pyx_v_response_raw)) __PYX_ERR(9, 442, __pyx_L1_error);
+  __Pyx_GIVEREF(__pyx_t_2);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2)) __PYX_ERR(9, 442, __pyx_L1_error);
+  __pyx_t_2 = 0;
+  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_7_cython_6cygrpc_SendMessageOperation), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 442, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":445
+ *         SendStatusFromServerOperation(
+ *             rpc_state.trailing_metadata,
+ *             rpc_state.status_code,             # <<<<<<<<<<<<<<
+ *             rpc_state.status_details,
+ *             _EMPTY_FLAGS,
+ */
+  __pyx_t_3 = __Pyx_PyInt_From_grpc_status_code(__pyx_cur_scope->__pyx_v_rpc_state->status_code); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 445, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":447
+ *             rpc_state.status_code,
+ *             rpc_state.status_details,
+ *             _EMPTY_FLAGS,             # <<<<<<<<<<<<<<
+ *         ),
+ *     )
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_EMPTY_FLAGS); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 447, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":443
+ *     finish_ops = (
+ *         SendMessageOperation(response_raw, rpc_state.get_write_flag()),
+ *         SendStatusFromServerOperation(             # <<<<<<<<<<<<<<
+ *             rpc_state.trailing_metadata,
+ *             rpc_state.status_code,
+ */
+  __pyx_t_6 = PyTuple_New(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 443, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_rpc_state->trailing_metadata);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_rpc_state->trailing_metadata);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_cur_scope->__pyx_v_rpc_state->trailing_metadata)) __PYX_ERR(9, 443, __pyx_L1_error);
+  __Pyx_GIVEREF(__pyx_t_3);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_3)) __PYX_ERR(9, 443, __pyx_L1_error);
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_rpc_state->status_details);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_rpc_state->status_details);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_cur_scope->__pyx_v_rpc_state->status_details)) __PYX_ERR(9, 443, __pyx_L1_error);
+  __Pyx_GIVEREF(__pyx_t_1);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 3, __pyx_t_1)) __PYX_ERR(9, 443, __pyx_L1_error);
+  __pyx_t_3 = 0;
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_7_cython_6cygrpc_SendStatusFromServerOperation), __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 443, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":442
+ *     cdef tuple finish_ops
+ *     finish_ops = (
+ *         SendMessageOperation(response_raw, rpc_state.get_write_flag()),             # <<<<<<<<<<<<<<
+ *         SendStatusFromServerOperation(
+ *             rpc_state.trailing_metadata,
+ */
+  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 442, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  __Pyx_GIVEREF(__pyx_t_2);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2)) __PYX_ERR(9, 442, __pyx_L1_error);
+  __Pyx_GIVEREF(__pyx_t_1);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_1)) __PYX_ERR(9, 442, __pyx_L1_error);
+  __pyx_t_2 = 0;
+  __pyx_t_1 = 0;
+  __Pyx_GIVEREF(__pyx_t_6);
+  __pyx_cur_scope->__pyx_v_finish_ops = ((PyObject*)__pyx_t_6);
+  __pyx_t_6 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":450
+ *         ),
+ *     )
+ *     if not rpc_state.metadata_sent:             # <<<<<<<<<<<<<<
+ *         finish_ops = prepend_send_initial_metadata_op(
+ *             finish_ops,
+ */
+  __pyx_t_5 = (!__pyx_cur_scope->__pyx_v_rpc_state->metadata_sent);
+  if (__pyx_t_5) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":451
+ *     )
+ *     if not rpc_state.metadata_sent:
+ *         finish_ops = prepend_send_initial_metadata_op(             # <<<<<<<<<<<<<<
+ *             finish_ops,
+ *             None)
+ */
+    __pyx_t_6 = __pyx_f_7_cython_6cygrpc_prepend_send_initial_metadata_op(__pyx_cur_scope->__pyx_v_finish_ops, ((PyObject*)Py_None)); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 451, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_6);
+    if (!(likely(PyTuple_CheckExact(__pyx_t_6))||((__pyx_t_6) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_t_6))) __PYX_ERR(9, 451, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_finish_ops);
+    __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_finish_ops, ((PyObject*)__pyx_t_6));
+    __Pyx_GIVEREF(__pyx_t_6);
+    __pyx_t_6 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":450
+ *         ),
+ *     )
+ *     if not rpc_state.metadata_sent:             # <<<<<<<<<<<<<<
+ *         finish_ops = prepend_send_initial_metadata_op(
+ *             finish_ops,
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":454
+ *             finish_ops,
+ *             None)
+ *     rpc_state.metadata_sent = True             # <<<<<<<<<<<<<<
+ *     rpc_state.status_sent = True
+ *     await execute_batch(rpc_state, finish_ops, loop)
+ */
+  __pyx_cur_scope->__pyx_v_rpc_state->metadata_sent = 1;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":455
+ *             None)
+ *     rpc_state.metadata_sent = True
+ *     rpc_state.status_sent = True             # <<<<<<<<<<<<<<
+ *     await execute_batch(rpc_state, finish_ops, loop)
+ *     uninstall_context()
+ */
+  __pyx_cur_scope->__pyx_v_rpc_state->status_sent = 1;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":456
+ *     rpc_state.metadata_sent = True
+ *     rpc_state.status_sent = True
+ *     await execute_batch(rpc_state, finish_ops, loop)             # <<<<<<<<<<<<<<
+ *     uninstall_context()
+ * 
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_execute_batch); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 456, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = NULL;
+  __pyx_t_4 = 0;
+  #if CYTHON_UNPACK_METHODS
+  if (unlikely(PyMethod_Check(__pyx_t_1))) {
+    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
+    if (likely(__pyx_t_2)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+      __Pyx_INCREF(__pyx_t_2);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_1, function);
+      __pyx_t_4 = 1;
+    }
+  }
+  #endif
+  {
+    PyObject *__pyx_callargs[4] = {__pyx_t_2, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state), __pyx_cur_scope->__pyx_v_finish_ops, __pyx_cur_scope->__pyx_v_loop};
+    __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 3+__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+    if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 456, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_6);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  }
+  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_6);
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  __Pyx_XGOTREF(__pyx_r);
+  if (likely(__pyx_r)) {
+    __Pyx_XGIVEREF(__pyx_r);
+    __Pyx_RefNannyFinishContext();
+    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+    /* return from generator, awaiting value */
+    __pyx_generator->resume_label = 3;
+    return __pyx_r;
+    __pyx_L12_resume_from_await:;
+    if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 456, __pyx_L1_error)
+  } else {
+    PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType();
+    if (exc_type) {
+      if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
+      else __PYX_ERR(9, 456, __pyx_L1_error)
+    }
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":457
+ *     rpc_state.status_sent = True
+ *     await execute_batch(rpc_state, finish_ops, loop)
+ *     uninstall_context()             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_uninstall_context); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 457, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = NULL;
+  __pyx_t_4 = 0;
+  #if CYTHON_UNPACK_METHODS
+  if (unlikely(PyMethod_Check(__pyx_t_1))) {
+    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
+    if (likely(__pyx_t_2)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+      __Pyx_INCREF(__pyx_t_2);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_1, function);
+      __pyx_t_4 = 1;
+    }
+  }
+  #endif
+  {
+    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
+    __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+    if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 457, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_6);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  }
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":389
+ * 
+ * 
+ * async def _finish_handler_with_unary_response(RPCState rpc_state,             # <<<<<<<<<<<<<<
+ *                                               object unary_handler,
+ *                                               object request,
+ */
+
+  /* function exit code */
+  PyErr_SetNone(PyExc_StopIteration);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_Generator_Replace_StopIteration(0);
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("_finish_handler_with_unary_response", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
+  #if !CYTHON_USE_EXC_INFO_STACK
+  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+  #endif
+  __pyx_generator->resume_label = -1;
+  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+static PyObject *__pyx_gb_7_cython_6cygrpc_163generator27(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":460
+ * 
+ * 
+ * async def _finish_handler_with_stream_responses(RPCState rpc_state,             # <<<<<<<<<<<<<<
+ *                                                 object stream_handler,
+ *                                                 object request,
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_162_finish_handler_with_stream_responses(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_7_cython_6cygrpc_161_finish_handler_with_stream_responses, "Finishes server method handler with multiple responses.\n\n    This function executes the application handler, and handles response\n    sending, as well as errors. It is shared between unary-stream and\n    stream-stream handlers.\n    ");
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_162_finish_handler_with_stream_responses = {"_finish_handler_with_stream_responses", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_162_finish_handler_with_stream_responses, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7_cython_6cygrpc_161_finish_handler_with_stream_responses};
+static PyObject *__pyx_pw_7_cython_6cygrpc_162_finish_handler_with_stream_responses(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
+) {
+  struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state = 0;
+  PyObject *__pyx_v_stream_handler = 0;
+  PyObject *__pyx_v_request = 0;
+  struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_servicer_context = 0;
+  PyObject *__pyx_v_loop = 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("_finish_handler_with_stream_responses (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_rpc_state,&__pyx_n_s_stream_handler,&__pyx_n_s_request,&__pyx_n_s_servicer_context,&__pyx_n_s_loop,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_rpc_state)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 460, __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_stream_handler)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 460, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("_finish_handler_with_stream_responses", 1, 5, 5, 1); __PYX_ERR(9, 460, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_request)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 460, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("_finish_handler_with_stream_responses", 1, 5, 5, 2); __PYX_ERR(9, 460, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  3:
+        if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_servicer_context)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 460, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("_finish_handler_with_stream_responses", 1, 5, 5, 3); __PYX_ERR(9, 460, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  4:
+        if (likely((values[4] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_loop)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[4]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 460, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("_finish_handler_with_stream_responses", 1, 5, 5, 4); __PYX_ERR(9, 460, __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, "_finish_handler_with_stream_responses") < 0)) __PYX_ERR(9, 460, __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_rpc_state = ((struct __pyx_obj_7_cython_6cygrpc_RPCState *)values[0]);
+    __pyx_v_stream_handler = values[1];
+    __pyx_v_request = values[2];
+    __pyx_v_servicer_context = ((struct __pyx_obj_7_cython_6cygrpc__ServicerContext *)values[3]);
+    __pyx_v_loop = values[4];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("_finish_handler_with_stream_responses", 1, 5, 5, __pyx_nargs); __PYX_ERR(9, 460, __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("_cython.cygrpc._finish_handler_with_stream_responses", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rpc_state), __pyx_ptype_7_cython_6cygrpc_RPCState, 1, "rpc_state", 0))) __PYX_ERR(9, 460, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_servicer_context), __pyx_ptype_7_cython_6cygrpc__ServicerContext, 1, "servicer_context", 0))) __PYX_ERR(9, 463, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_161_finish_handler_with_stream_responses(__pyx_self, __pyx_v_rpc_state, __pyx_v_stream_handler, __pyx_v_request, __pyx_v_servicer_context, __pyx_v_loop);
+
+  /* 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_7_cython_6cygrpc_161_finish_handler_with_stream_responses(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state, PyObject *__pyx_v_stream_handler, PyObject *__pyx_v_request, struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_servicer_context, PyObject *__pyx_v_loop) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses *__pyx_cur_scope;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_finish_handler_with_stream_responses", 0);
+  __pyx_cur_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses, __pyx_empty_tuple, NULL);
+  if (unlikely(!__pyx_cur_scope)) {
+    __pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses *)Py_None);
+    __Pyx_INCREF(Py_None);
+    __PYX_ERR(9, 460, __pyx_L1_error)
+  } else {
+    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+  }
+  __pyx_cur_scope->__pyx_v_rpc_state = __pyx_v_rpc_state;
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state);
+  __pyx_cur_scope->__pyx_v_stream_handler = __pyx_v_stream_handler;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_stream_handler);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_stream_handler);
+  __pyx_cur_scope->__pyx_v_request = __pyx_v_request;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_request);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_request);
+  __pyx_cur_scope->__pyx_v_servicer_context = __pyx_v_servicer_context;
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context);
+  __pyx_cur_scope->__pyx_v_loop = __pyx_v_loop;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
+  {
+    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7_cython_6cygrpc_163generator27, __pyx_codeobj__86, (PyObject *) __pyx_cur_scope, __pyx_n_s_finish_handler_with_stream_resp, __pyx_n_s_finish_handler_with_stream_resp, __pyx_n_s_cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(9, 460, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_cur_scope);
+    __Pyx_RefNannyFinishContext();
+    return (PyObject *) gen;
+  }
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc._finish_handler_with_stream_responses", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_gb_7_cython_6cygrpc_163generator27(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
+{
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses *__pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses *)__pyx_generator->closure);
+  PyObject *__pyx_r = NULL;
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  unsigned int __pyx_t_4;
+  int __pyx_t_5;
+  PyObject *__pyx_t_6 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("_finish_handler_with_stream_responses", 0);
+  switch (__pyx_generator->resume_label) {
+    case 0: goto __pyx_L3_first_run;
+    case 1: goto __pyx_L5_resume_from_await;
+    case 2: goto __pyx_L9_resume_from_await;
+    case 3: goto __pyx_L10_resume_from_await;
+    case 4: goto __pyx_L13_resume_from_await;
+    default: /* CPython raises the right error here */
+    __Pyx_RefNannyFinishContext();
+    return NULL;
+  }
+  __pyx_L3_first_run:;
+  if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 460, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":473
+ *     cdef object async_response_generator
+ *     cdef object response_message
+ *     install_context_from_request_call_event_aio(rpc_state)             # <<<<<<<<<<<<<<
+ * 
+ *     if inspect.iscoroutinefunction(stream_handler):
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_install_context_from_request_cal); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 473, __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_cur_scope->__pyx_v_rpc_state)};
+    __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, 473, __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/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":475
+ *     install_context_from_request_call_event_aio(rpc_state)
+ * 
+ *     if inspect.iscoroutinefunction(stream_handler):             # <<<<<<<<<<<<<<
+ *         # Case 1: Coroutine async handler - using reader-writer API
+ *         # The handler uses reader / writer API, returns None.
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_inspect); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 475, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_iscoroutinefunction); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 475, __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, __pyx_cur_scope->__pyx_v_stream_handler};
+    __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(9, 475, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  }
+  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(9, 475, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (__pyx_t_5) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":480
+ *         await stream_handler(
+ *             request,
+ *             servicer_context,             # <<<<<<<<<<<<<<
+ *         )
+ *     else:
+ */
+    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_stream_handler);
+    __pyx_t_3 = __pyx_cur_scope->__pyx_v_stream_handler; __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[3] = {__pyx_t_2, __pyx_cur_scope->__pyx_v_request, ((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context)};
+      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 2+__pyx_t_4);
+      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+      if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 478, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    }
+    __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __Pyx_XGOTREF(__pyx_r);
+    if (likely(__pyx_r)) {
+      __Pyx_XGIVEREF(__pyx_r);
+      __Pyx_RefNannyFinishContext();
+      __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+      /* return from generator, awaiting value */
+      __pyx_generator->resume_label = 1;
+      return __pyx_r;
+      __pyx_L5_resume_from_await:;
+      if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 478, __pyx_L1_error)
+    } else {
+      PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType();
+      if (exc_type) {
+        if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
+        else __PYX_ERR(9, 478, __pyx_L1_error)
+      }
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":475
+ *     install_context_from_request_call_event_aio(rpc_state)
+ * 
+ *     if inspect.iscoroutinefunction(stream_handler):             # <<<<<<<<<<<<<<
+ *         # Case 1: Coroutine async handler - using reader-writer API
+ *         # The handler uses reader / writer API, returns None.
+ */
+    goto __pyx_L4;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":483
+ *         )
+ *     else:
+ *         if inspect.isasyncgenfunction(stream_handler):             # <<<<<<<<<<<<<<
+ *             # Case 2: Async handler - async generator
+ *             # The handler uses async generator API
+ */
+  /*else*/ {
+    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_inspect); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 483, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_isasyncgenfunction); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 483, __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 (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_cur_scope->__pyx_v_stream_handler};
+      __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, 483, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    }
+    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(9, 483, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    if (__pyx_t_5) {
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":488
+ *             async_response_generator = stream_handler(
+ *                 request,
+ *                 servicer_context,             # <<<<<<<<<<<<<<
+ *             )
+ *         else:
+ */
+      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_stream_handler);
+      __pyx_t_2 = __pyx_cur_scope->__pyx_v_stream_handler; __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[3] = {__pyx_t_3, __pyx_cur_scope->__pyx_v_request, ((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context)};
+        __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(9, 486, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_1);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      }
+      __Pyx_GIVEREF(__pyx_t_1);
+      __pyx_cur_scope->__pyx_v_async_response_generator = __pyx_t_1;
+      __pyx_t_1 = 0;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":483
+ *         )
+ *     else:
+ *         if inspect.isasyncgenfunction(stream_handler):             # <<<<<<<<<<<<<<
+ *             # Case 2: Async handler - async generator
+ *             # The handler uses async generator API
+ */
+      goto __pyx_L6;
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":494
+ *             # NOTE(lidiz) Streaming handler in sync stack is either a generator
+ *             # function or a function returns a generator.
+ *             sync_servicer_context = _SyncServicerContext(servicer_context)             # <<<<<<<<<<<<<<
+ *             gen = stream_handler(request, sync_servicer_context)
+ *             async_response_generator = generator_to_async_generator(gen,
+ */
+    /*else*/ {
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_7_cython_6cygrpc__SyncServicerContext), ((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 494, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_GIVEREF(__pyx_t_1);
+      __pyx_cur_scope->__pyx_v_sync_servicer_context = ((struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *)__pyx_t_1);
+      __pyx_t_1 = 0;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":495
+ *             # function or a function returns a generator.
+ *             sync_servicer_context = _SyncServicerContext(servicer_context)
+ *             gen = stream_handler(request, sync_servicer_context)             # <<<<<<<<<<<<<<
+ *             async_response_generator = generator_to_async_generator(gen,
+ *                                                                     loop,
+ */
+      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_stream_handler);
+      __pyx_t_2 = __pyx_cur_scope->__pyx_v_stream_handler; __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[3] = {__pyx_t_3, __pyx_cur_scope->__pyx_v_request, ((PyObject *)__pyx_cur_scope->__pyx_v_sync_servicer_context)};
+        __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(9, 495, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_1);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      }
+      __Pyx_GIVEREF(__pyx_t_1);
+      __pyx_cur_scope->__pyx_v_gen = __pyx_t_1;
+      __pyx_t_1 = 0;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":496
+ *             sync_servicer_context = _SyncServicerContext(servicer_context)
+ *             gen = stream_handler(request, sync_servicer_context)
+ *             async_response_generator = generator_to_async_generator(gen,             # <<<<<<<<<<<<<<
+ *                                                                     loop,
+ *                                                                     rpc_state.server.thread_pool())
+ */
+      __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_generator_to_async_generator); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 496, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":498
+ *             async_response_generator = generator_to_async_generator(gen,
+ *                                                                     loop,
+ *                                                                     rpc_state.server.thread_pool())             # <<<<<<<<<<<<<<
+ * 
+ *         # Consumes messages from the generator
+ */
+      __pyx_t_3 = ((struct __pyx_vtabstruct_7_cython_6cygrpc_AioServer *)__pyx_cur_scope->__pyx_v_rpc_state->server->__pyx_vtab)->thread_pool(__pyx_cur_scope->__pyx_v_rpc_state->server); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 498, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
+      __pyx_t_6 = NULL;
+      __pyx_t_4 = 0;
+      #if CYTHON_UNPACK_METHODS
+      if (unlikely(PyMethod_Check(__pyx_t_2))) {
+        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
+        if (likely(__pyx_t_6)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+          __Pyx_INCREF(__pyx_t_6);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_2, function);
+          __pyx_t_4 = 1;
+        }
+      }
+      #endif
+      {
+        PyObject *__pyx_callargs[4] = {__pyx_t_6, __pyx_cur_scope->__pyx_v_gen, __pyx_cur_scope->__pyx_v_loop, __pyx_t_3};
+        __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 3+__pyx_t_4);
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 496, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_1);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      }
+      __Pyx_GIVEREF(__pyx_t_1);
+      __pyx_cur_scope->__pyx_v_async_response_generator = __pyx_t_1;
+      __pyx_t_1 = 0;
+    }
+    __pyx_L6:;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":501
+ * 
+ *         # Consumes messages from the generator
+ *         async for response_message in async_response_generator:             # <<<<<<<<<<<<<<
+ *             # Raises exception if aborted
+ *             rpc_state.raise_for_termination()
+ */
+    __pyx_t_1 = __Pyx_Coroutine_GetAsyncIter(__pyx_cur_scope->__pyx_v_async_response_generator); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 501, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    for (;;) {
+      __pyx_t_2 = __Pyx_Coroutine_AsyncIterNext(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 501, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_2);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_XGOTREF(__pyx_r);
+      if (likely(__pyx_r)) {
+        __Pyx_XGIVEREF(__pyx_t_1);
+        __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
+        __Pyx_XGIVEREF(__pyx_r);
+        __Pyx_RefNannyFinishContext();
+        __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+        /* return from generator, awaiting value */
+        __pyx_generator->resume_label = 2;
+        return __pyx_r;
+        __pyx_L9_resume_from_await:;
+        __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
+        __pyx_cur_scope->__pyx_t_0 = 0;
+        __Pyx_XGOTREF(__pyx_t_1);
+        if (unlikely(!__pyx_sent_value)) {
+          PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType();
+          if (unlikely(exc_type && (exc_type == __Pyx_PyExc_StopAsyncIteration || ( exc_type != PyExc_StopIteration && exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, __Pyx_PyExc_StopAsyncIteration))))) {
+            PyErr_Clear();
+            break;
+          }
+          __PYX_ERR(9, 501, __pyx_L1_error)
+        }
+        __pyx_t_2 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_2);
+      } else {
+        PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType();
+        if (unlikely(exc_type && (exc_type == __Pyx_PyExc_StopAsyncIteration || ( exc_type != PyExc_StopIteration && exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, __Pyx_PyExc_StopAsyncIteration))))) {
+          PyErr_Clear();
+          break;
+        }
+        __pyx_t_2 = NULL;
+        if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_2) < 0) __PYX_ERR(9, 501, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_2);
+      }
+      __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_response_message);
+      __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_response_message, __pyx_t_2);
+      __Pyx_GIVEREF(__pyx_t_2);
+      __pyx_t_2 = 0;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":503
+ *         async for response_message in async_response_generator:
+ *             # Raises exception if aborted
+ *             rpc_state.raise_for_termination()             # <<<<<<<<<<<<<<
+ * 
+ *             await servicer_context.write(response_message)
+ */
+      ((struct __pyx_vtabstruct_7_cython_6cygrpc_RPCState *)__pyx_cur_scope->__pyx_v_rpc_state->__pyx_vtab)->raise_for_termination(__pyx_cur_scope->__pyx_v_rpc_state); if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 503, __pyx_L1_error)
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":505
+ *             rpc_state.raise_for_termination()
+ * 
+ *             await servicer_context.write(response_message)             # <<<<<<<<<<<<<<
+ * 
+ *     # Raises exception if aborted
+ */
+      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context), __pyx_n_s_write); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 505, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
+      __pyx_t_6 = NULL;
+      __pyx_t_4 = 0;
+      #if CYTHON_UNPACK_METHODS
+      if (likely(PyMethod_Check(__pyx_t_3))) {
+        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
+        if (likely(__pyx_t_6)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+          __Pyx_INCREF(__pyx_t_6);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_3, function);
+          __pyx_t_4 = 1;
+        }
+      }
+      #endif
+      {
+        PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_cur_scope->__pyx_v_response_message};
+        __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 505, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_2);
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      }
+      __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_2);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_XGOTREF(__pyx_r);
+      if (likely(__pyx_r)) {
+        __Pyx_XGIVEREF(__pyx_t_1);
+        __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
+        __Pyx_XGIVEREF(__pyx_r);
+        __Pyx_RefNannyFinishContext();
+        __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+        /* return from generator, awaiting value */
+        __pyx_generator->resume_label = 3;
+        return __pyx_r;
+        __pyx_L10_resume_from_await:;
+        __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
+        __pyx_cur_scope->__pyx_t_0 = 0;
+        __Pyx_XGOTREF(__pyx_t_1);
+        if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 505, __pyx_L1_error)
+      } else {
+        PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType();
+        if (exc_type) {
+          if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
+          else __PYX_ERR(9, 505, __pyx_L1_error)
+        }
+      }
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":501
+ * 
+ *         # Consumes messages from the generator
+ *         async for response_message in async_response_generator:             # <<<<<<<<<<<<<<
+ *             # Raises exception if aborted
+ *             rpc_state.raise_for_termination()
+ */
+    }
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  }
+  __pyx_L4:;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":508
+ * 
+ *     # Raises exception if aborted
+ *     rpc_state.raise_for_termination()             # <<<<<<<<<<<<<<
+ * 
+ *     # Sends the final status of this RPC
+ */
+  ((struct __pyx_vtabstruct_7_cython_6cygrpc_RPCState *)__pyx_cur_scope->__pyx_v_rpc_state->__pyx_vtab)->raise_for_termination(__pyx_cur_scope->__pyx_v_rpc_state); if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 508, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":513
+ *     cdef SendStatusFromServerOperation op = SendStatusFromServerOperation(
+ *         rpc_state.trailing_metadata,
+ *         rpc_state.status_code,             # <<<<<<<<<<<<<<
+ *         rpc_state.status_details,
+ *         _EMPTY_FLAGS,
+ */
+  __pyx_t_1 = __Pyx_PyInt_From_grpc_status_code(__pyx_cur_scope->__pyx_v_rpc_state->status_code); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 513, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":515
+ *         rpc_state.status_code,
+ *         rpc_state.status_details,
+ *         _EMPTY_FLAGS,             # <<<<<<<<<<<<<<
+ *     )
+ * 
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_EMPTY_FLAGS); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 515, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":511
+ * 
+ *     # Sends the final status of this RPC
+ *     cdef SendStatusFromServerOperation op = SendStatusFromServerOperation(             # <<<<<<<<<<<<<<
+ *         rpc_state.trailing_metadata,
+ *         rpc_state.status_code,
+ */
+  __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 511, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_rpc_state->trailing_metadata);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_rpc_state->trailing_metadata);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_cur_scope->__pyx_v_rpc_state->trailing_metadata)) __PYX_ERR(9, 511, __pyx_L1_error);
+  __Pyx_GIVEREF(__pyx_t_1);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1)) __PYX_ERR(9, 511, __pyx_L1_error);
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_rpc_state->status_details);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_rpc_state->status_details);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_cur_scope->__pyx_v_rpc_state->status_details)) __PYX_ERR(9, 511, __pyx_L1_error);
+  __Pyx_GIVEREF(__pyx_t_2);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_t_2)) __PYX_ERR(9, 511, __pyx_L1_error);
+  __pyx_t_1 = 0;
+  __pyx_t_2 = 0;
+  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_7_cython_6cygrpc_SendStatusFromServerOperation), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 511, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_GIVEREF(__pyx_t_2);
+  __pyx_cur_scope->__pyx_v_op = ((struct __pyx_obj_7_cython_6cygrpc_SendStatusFromServerOperation *)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":518
+ *     )
+ * 
+ *     cdef tuple finish_ops = (op,)             # <<<<<<<<<<<<<<
+ *     if not rpc_state.metadata_sent:
+ *         finish_ops = prepend_send_initial_metadata_op(
+ */
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 518, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_op);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_op);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_op))) __PYX_ERR(9, 518, __pyx_L1_error);
+  __Pyx_GIVEREF(__pyx_t_2);
+  __pyx_cur_scope->__pyx_v_finish_ops = ((PyObject*)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":519
+ * 
+ *     cdef tuple finish_ops = (op,)
+ *     if not rpc_state.metadata_sent:             # <<<<<<<<<<<<<<
+ *         finish_ops = prepend_send_initial_metadata_op(
+ *             finish_ops,
+ */
+  __pyx_t_5 = (!__pyx_cur_scope->__pyx_v_rpc_state->metadata_sent);
+  if (__pyx_t_5) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":520
+ *     cdef tuple finish_ops = (op,)
+ *     if not rpc_state.metadata_sent:
+ *         finish_ops = prepend_send_initial_metadata_op(             # <<<<<<<<<<<<<<
+ *             finish_ops,
+ *             None
+ */
+    __pyx_t_2 = __pyx_f_7_cython_6cygrpc_prepend_send_initial_metadata_op(__pyx_cur_scope->__pyx_v_finish_ops, ((PyObject*)Py_None)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 520, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    if (!(likely(PyTuple_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_t_2))) __PYX_ERR(9, 520, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_finish_ops);
+    __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_finish_ops, ((PyObject*)__pyx_t_2));
+    __Pyx_GIVEREF(__pyx_t_2);
+    __pyx_t_2 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":519
+ * 
+ *     cdef tuple finish_ops = (op,)
+ *     if not rpc_state.metadata_sent:             # <<<<<<<<<<<<<<
+ *         finish_ops = prepend_send_initial_metadata_op(
+ *             finish_ops,
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":524
+ *             None
+ *         )
+ *     rpc_state.metadata_sent = True             # <<<<<<<<<<<<<<
+ *     rpc_state.status_sent = True
+ *     await execute_batch(rpc_state, finish_ops, loop)
+ */
+  __pyx_cur_scope->__pyx_v_rpc_state->metadata_sent = 1;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":525
+ *         )
+ *     rpc_state.metadata_sent = True
+ *     rpc_state.status_sent = True             # <<<<<<<<<<<<<<
+ *     await execute_batch(rpc_state, finish_ops, loop)
+ *     uninstall_context()
+ */
+  __pyx_cur_scope->__pyx_v_rpc_state->status_sent = 1;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":526
+ *     rpc_state.metadata_sent = True
+ *     rpc_state.status_sent = True
+ *     await execute_batch(rpc_state, finish_ops, loop)             # <<<<<<<<<<<<<<
+ *     uninstall_context()
+ * 
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_execute_batch); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 526, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __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[4] = {__pyx_t_1, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state), __pyx_cur_scope->__pyx_v_finish_ops, __pyx_cur_scope->__pyx_v_loop};
+    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 3+__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+    if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 526, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  }
+  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_2);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_XGOTREF(__pyx_r);
+  if (likely(__pyx_r)) {
+    __Pyx_XGIVEREF(__pyx_r);
+    __Pyx_RefNannyFinishContext();
+    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+    /* return from generator, awaiting value */
+    __pyx_generator->resume_label = 4;
+    return __pyx_r;
+    __pyx_L13_resume_from_await:;
+    if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 526, __pyx_L1_error)
+  } else {
+    PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType();
+    if (exc_type) {
+      if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
+      else __PYX_ERR(9, 526, __pyx_L1_error)
+    }
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":527
+ *     rpc_state.status_sent = True
+ *     await execute_batch(rpc_state, finish_ops, loop)
+ *     uninstall_context()             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_uninstall_context); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 527, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __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, NULL};
+    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+    if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 527, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  }
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":460
+ * 
+ * 
+ * async def _finish_handler_with_stream_responses(RPCState rpc_state,             # <<<<<<<<<<<<<<
+ *                                                 object stream_handler,
+ *                                                 object request,
+ */
+
+  /* function exit code */
+  PyErr_SetNone(PyExc_StopIteration);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_Generator_Replace_StopIteration(0);
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("_finish_handler_with_stream_responses", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
+  #if !CYTHON_USE_EXC_INFO_STACK
+  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+  #endif
+  __pyx_generator->resume_label = -1;
+  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+static PyObject *__pyx_gb_7_cython_6cygrpc_166generator28(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":530
+ * 
+ * 
+ * async def _handle_unary_unary_rpc(object method_handler,             # <<<<<<<<<<<<<<
+ *                                   RPCState rpc_state,
+ *                                   object loop):
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_165_handle_unary_unary_rpc(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_165_handle_unary_unary_rpc = {"_handle_unary_unary_rpc", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_165_handle_unary_unary_rpc, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_165_handle_unary_unary_rpc(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_method_handler = 0;
+  struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state = 0;
+  PyObject *__pyx_v_loop = 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("_handle_unary_unary_rpc (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_method_handler,&__pyx_n_s_rpc_state,&__pyx_n_s_loop,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_method_handler)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 530, __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_rpc_state)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 530, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("_handle_unary_unary_rpc", 1, 3, 3, 1); __PYX_ERR(9, 530, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_loop)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 530, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("_handle_unary_unary_rpc", 1, 3, 3, 2); __PYX_ERR(9, 530, __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, "_handle_unary_unary_rpc") < 0)) __PYX_ERR(9, 530, __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_method_handler = values[0];
+    __pyx_v_rpc_state = ((struct __pyx_obj_7_cython_6cygrpc_RPCState *)values[1]);
+    __pyx_v_loop = values[2];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("_handle_unary_unary_rpc", 1, 3, 3, __pyx_nargs); __PYX_ERR(9, 530, __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("_cython.cygrpc._handle_unary_unary_rpc", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rpc_state), __pyx_ptype_7_cython_6cygrpc_RPCState, 1, "rpc_state", 0))) __PYX_ERR(9, 531, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_164_handle_unary_unary_rpc(__pyx_self, __pyx_v_method_handler, __pyx_v_rpc_state, __pyx_v_loop);
+
+  /* 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_7_cython_6cygrpc_164_handle_unary_unary_rpc(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_method_handler, struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state, PyObject *__pyx_v_loop) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc *__pyx_cur_scope;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_handle_unary_unary_rpc", 0);
+  __pyx_cur_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc, __pyx_empty_tuple, NULL);
+  if (unlikely(!__pyx_cur_scope)) {
+    __pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc *)Py_None);
+    __Pyx_INCREF(Py_None);
+    __PYX_ERR(9, 530, __pyx_L1_error)
+  } else {
+    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+  }
+  __pyx_cur_scope->__pyx_v_method_handler = __pyx_v_method_handler;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_method_handler);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_method_handler);
+  __pyx_cur_scope->__pyx_v_rpc_state = __pyx_v_rpc_state;
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state);
+  __pyx_cur_scope->__pyx_v_loop = __pyx_v_loop;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
+  {
+    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7_cython_6cygrpc_166generator28, __pyx_codeobj__87, (PyObject *) __pyx_cur_scope, __pyx_n_s_handle_unary_unary_rpc, __pyx_n_s_handle_unary_unary_rpc, __pyx_n_s_cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(9, 530, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_cur_scope);
+    __Pyx_RefNannyFinishContext();
+    return (PyObject *) gen;
+  }
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc._handle_unary_unary_rpc", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_gb_7_cython_6cygrpc_166generator28(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
+{
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc *__pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc *)__pyx_generator->closure);
+  PyObject *__pyx_r = NULL;
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  unsigned int __pyx_t_4;
+  int __pyx_t_5;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("_handle_unary_unary_rpc", 0);
+  switch (__pyx_generator->resume_label) {
+    case 0: goto __pyx_L3_first_run;
+    case 1: goto __pyx_L4_resume_from_await;
+    case 2: goto __pyx_L6_resume_from_await;
+    default: /* CPython raises the right error here */
+    __Pyx_RefNannyFinishContext();
+    return NULL;
+  }
+  __pyx_L3_first_run:;
+  if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 530, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":534
+ *                                   object loop):
+ *     # Receives request message
+ *     cdef bytes request_raw = await _receive_message(rpc_state, loop)             # <<<<<<<<<<<<<<
+ *     if request_raw is None:
+ *         # The RPC was cancelled immediately after start on client side.
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_receive_message); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 534, __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[3] = {__pyx_t_3, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state), __pyx_cur_scope->__pyx_v_loop};
+    __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(9, 534, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  }
+  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_XGOTREF(__pyx_r);
+  if (likely(__pyx_r)) {
+    __Pyx_XGIVEREF(__pyx_r);
+    __Pyx_RefNannyFinishContext();
+    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+    /* return from generator, awaiting value */
+    __pyx_generator->resume_label = 1;
+    return __pyx_r;
+    __pyx_L4_resume_from_await:;
+    if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 534, __pyx_L1_error)
+    __pyx_t_1 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_1);
+  } else {
+    __pyx_t_1 = NULL;
+    if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_1) < 0) __PYX_ERR(9, 534, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+  }
+  if (!(likely(PyBytes_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("bytes", __pyx_t_1))) __PYX_ERR(9, 534, __pyx_L1_error)
+  __Pyx_GIVEREF(__pyx_t_1);
+  __pyx_cur_scope->__pyx_v_request_raw = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":535
+ *     # Receives request message
+ *     cdef bytes request_raw = await _receive_message(rpc_state, loop)
+ *     if request_raw is None:             # <<<<<<<<<<<<<<
+ *         # The RPC was cancelled immediately after start on client side.
+ *         return
+ */
+  __pyx_t_5 = (__pyx_cur_scope->__pyx_v_request_raw == ((PyObject*)Py_None));
+  if (__pyx_t_5) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":537
+ *     if request_raw is None:
+ *         # The RPC was cancelled immediately after start on client side.
+ *         return             # <<<<<<<<<<<<<<
+ * 
+ *     # Deserializes the request message
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_r = NULL;
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":535
+ *     # Receives request message
+ *     cdef bytes request_raw = await _receive_message(rpc_state, loop)
+ *     if request_raw is None:             # <<<<<<<<<<<<<<
+ *         # The RPC was cancelled immediately after start on client side.
+ *         return
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":541
+ *     # Deserializes the request message
+ *     cdef object request_message = deserialize(
+ *         method_handler.request_deserializer,             # <<<<<<<<<<<<<<
+ *         request_raw,
+ *     )
+ */
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_method_handler, __pyx_n_s_request_deserializer); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 541, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":540
+ * 
+ *     # Deserializes the request message
+ *     cdef object request_message = deserialize(             # <<<<<<<<<<<<<<
+ *         method_handler.request_deserializer,
+ *         request_raw,
+ */
+  __pyx_t_2 = __pyx_f_7_cython_6cygrpc_deserialize(__pyx_t_1, __pyx_cur_scope->__pyx_v_request_raw); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 540, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_GIVEREF(__pyx_t_2);
+  __pyx_cur_scope->__pyx_v_request_message = __pyx_t_2;
+  __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":546
+ * 
+ *     # Creates a dedecated ServicerContext
+ *     cdef _ServicerContext servicer_context = _ServicerContext(             # <<<<<<<<<<<<<<
+ *         rpc_state,
+ *         None,
+ */
+  __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 546, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state))) __PYX_ERR(9, 546, __pyx_L1_error);
+  __Pyx_INCREF(Py_None);
+  __Pyx_GIVEREF(Py_None);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, Py_None)) __PYX_ERR(9, 546, __pyx_L1_error);
+  __Pyx_INCREF(Py_None);
+  __Pyx_GIVEREF(Py_None);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None)) __PYX_ERR(9, 546, __pyx_L1_error);
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_cur_scope->__pyx_v_loop)) __PYX_ERR(9, 546, __pyx_L1_error);
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_7_cython_6cygrpc__ServicerContext), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 546, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_GIVEREF(__pyx_t_1);
+  __pyx_cur_scope->__pyx_v_servicer_context = ((struct __pyx_obj_7_cython_6cygrpc__ServicerContext *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":554
+ * 
+ *     # Finishes the application handler
+ *     await _finish_handler_with_unary_response(             # <<<<<<<<<<<<<<
+ *         rpc_state,
+ *         method_handler.unary_unary,
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_finish_handler_with_unary_respo); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 554, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":556
+ *     await _finish_handler_with_unary_response(
+ *         rpc_state,
+ *         method_handler.unary_unary,             # <<<<<<<<<<<<<<
+ *         request_message,
+ *         servicer_context,
+ */
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_method_handler, __pyx_n_s_unary_unary); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 556, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":559
+ *         request_message,
+ *         servicer_context,
+ *         method_handler.response_serializer,             # <<<<<<<<<<<<<<
+ *         loop
+ *     )
+ */
+  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_method_handler, __pyx_n_s_response_serializer); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 559, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":560
+ *         servicer_context,
+ *         method_handler.response_serializer,
+ *         loop             # <<<<<<<<<<<<<<
+ *     )
+ * 
+ */
+  __pyx_t_7 = NULL;
+  __pyx_t_4 = 0;
+  #if CYTHON_UNPACK_METHODS
+  if (unlikely(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_4 = 1;
+    }
+  }
+  #endif
+  {
+    PyObject *__pyx_callargs[7] = {__pyx_t_7, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state), __pyx_t_3, __pyx_cur_scope->__pyx_v_request_message, ((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context), __pyx_t_6, __pyx_cur_scope->__pyx_v_loop};
+    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 6+__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 554, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  }
+  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_XGOTREF(__pyx_r);
+  if (likely(__pyx_r)) {
+    __Pyx_XGIVEREF(__pyx_r);
+    __Pyx_RefNannyFinishContext();
+    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+    /* return from generator, awaiting value */
+    __pyx_generator->resume_label = 2;
+    return __pyx_r;
+    __pyx_L6_resume_from_await:;
+    if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 554, __pyx_L1_error)
+  } else {
+    PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType();
+    if (exc_type) {
+      if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
+      else __PYX_ERR(9, 554, __pyx_L1_error)
+    }
+  }
+  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":530
+ * 
+ * 
+ * async def _handle_unary_unary_rpc(object method_handler,             # <<<<<<<<<<<<<<
+ *                                   RPCState rpc_state,
+ *                                   object loop):
+ */
+
+  /* function exit code */
+  PyErr_SetNone(PyExc_StopIteration);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_Generator_Replace_StopIteration(0);
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_AddTraceback("_handle_unary_unary_rpc", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
+  #if !CYTHON_USE_EXC_INFO_STACK
+  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+  #endif
+  __pyx_generator->resume_label = -1;
+  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+static PyObject *__pyx_gb_7_cython_6cygrpc_169generator29(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":564
+ * 
+ * 
+ * async def _handle_unary_stream_rpc(object method_handler,             # <<<<<<<<<<<<<<
+ *                                    RPCState rpc_state,
+ *                                    object loop):
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_168_handle_unary_stream_rpc(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_168_handle_unary_stream_rpc = {"_handle_unary_stream_rpc", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_168_handle_unary_stream_rpc, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_168_handle_unary_stream_rpc(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_method_handler = 0;
+  struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state = 0;
+  PyObject *__pyx_v_loop = 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("_handle_unary_stream_rpc (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_method_handler,&__pyx_n_s_rpc_state,&__pyx_n_s_loop,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_method_handler)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 564, __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_rpc_state)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 564, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("_handle_unary_stream_rpc", 1, 3, 3, 1); __PYX_ERR(9, 564, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_loop)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 564, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("_handle_unary_stream_rpc", 1, 3, 3, 2); __PYX_ERR(9, 564, __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, "_handle_unary_stream_rpc") < 0)) __PYX_ERR(9, 564, __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_method_handler = values[0];
+    __pyx_v_rpc_state = ((struct __pyx_obj_7_cython_6cygrpc_RPCState *)values[1]);
+    __pyx_v_loop = values[2];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("_handle_unary_stream_rpc", 1, 3, 3, __pyx_nargs); __PYX_ERR(9, 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("_cython.cygrpc._handle_unary_stream_rpc", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rpc_state), __pyx_ptype_7_cython_6cygrpc_RPCState, 1, "rpc_state", 0))) __PYX_ERR(9, 565, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_167_handle_unary_stream_rpc(__pyx_self, __pyx_v_method_handler, __pyx_v_rpc_state, __pyx_v_loop);
+
+  /* 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_7_cython_6cygrpc_167_handle_unary_stream_rpc(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_method_handler, struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state, PyObject *__pyx_v_loop) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc *__pyx_cur_scope;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_handle_unary_stream_rpc", 0);
+  __pyx_cur_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc, __pyx_empty_tuple, NULL);
+  if (unlikely(!__pyx_cur_scope)) {
+    __pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc *)Py_None);
+    __Pyx_INCREF(Py_None);
+    __PYX_ERR(9, 564, __pyx_L1_error)
+  } else {
+    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+  }
+  __pyx_cur_scope->__pyx_v_method_handler = __pyx_v_method_handler;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_method_handler);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_method_handler);
+  __pyx_cur_scope->__pyx_v_rpc_state = __pyx_v_rpc_state;
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state);
+  __pyx_cur_scope->__pyx_v_loop = __pyx_v_loop;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
+  {
+    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7_cython_6cygrpc_169generator29, __pyx_codeobj__88, (PyObject *) __pyx_cur_scope, __pyx_n_s_handle_unary_stream_rpc, __pyx_n_s_handle_unary_stream_rpc, __pyx_n_s_cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(9, 564, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_cur_scope);
+    __Pyx_RefNannyFinishContext();
+    return (PyObject *) gen;
+  }
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc._handle_unary_stream_rpc", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_gb_7_cython_6cygrpc_169generator29(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
+{
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc *__pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc *)__pyx_generator->closure);
+  PyObject *__pyx_r = NULL;
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  unsigned int __pyx_t_4;
+  int __pyx_t_5;
+  PyObject *__pyx_t_6 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("_handle_unary_stream_rpc", 0);
+  switch (__pyx_generator->resume_label) {
+    case 0: goto __pyx_L3_first_run;
+    case 1: goto __pyx_L4_resume_from_await;
+    case 2: goto __pyx_L6_resume_from_await;
+    default: /* CPython raises the right error here */
+    __Pyx_RefNannyFinishContext();
+    return NULL;
+  }
+  __pyx_L3_first_run:;
+  if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 564, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":568
+ *                                    object loop):
+ *     # Receives request message
+ *     cdef bytes request_raw = await _receive_message(rpc_state, loop)             # <<<<<<<<<<<<<<
+ *     if request_raw is None:
+ *         return
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_receive_message); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 568, __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[3] = {__pyx_t_3, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state), __pyx_cur_scope->__pyx_v_loop};
+    __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(9, 568, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  }
+  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_XGOTREF(__pyx_r);
+  if (likely(__pyx_r)) {
+    __Pyx_XGIVEREF(__pyx_r);
+    __Pyx_RefNannyFinishContext();
+    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+    /* return from generator, awaiting value */
+    __pyx_generator->resume_label = 1;
+    return __pyx_r;
+    __pyx_L4_resume_from_await:;
+    if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 568, __pyx_L1_error)
+    __pyx_t_1 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_1);
+  } else {
+    __pyx_t_1 = NULL;
+    if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_1) < 0) __PYX_ERR(9, 568, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+  }
+  if (!(likely(PyBytes_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("bytes", __pyx_t_1))) __PYX_ERR(9, 568, __pyx_L1_error)
+  __Pyx_GIVEREF(__pyx_t_1);
+  __pyx_cur_scope->__pyx_v_request_raw = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":569
+ *     # Receives request message
+ *     cdef bytes request_raw = await _receive_message(rpc_state, loop)
+ *     if request_raw is None:             # <<<<<<<<<<<<<<
+ *         return
+ * 
+ */
+  __pyx_t_5 = (__pyx_cur_scope->__pyx_v_request_raw == ((PyObject*)Py_None));
+  if (__pyx_t_5) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":570
+ *     cdef bytes request_raw = await _receive_message(rpc_state, loop)
+ *     if request_raw is None:
+ *         return             # <<<<<<<<<<<<<<
+ * 
+ *     # Deserializes the request message
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_r = NULL;
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":569
+ *     # Receives request message
+ *     cdef bytes request_raw = await _receive_message(rpc_state, loop)
+ *     if request_raw is None:             # <<<<<<<<<<<<<<
+ *         return
+ * 
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":574
+ *     # Deserializes the request message
+ *     cdef object request_message = deserialize(
+ *         method_handler.request_deserializer,             # <<<<<<<<<<<<<<
+ *         request_raw,
+ *     )
+ */
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_method_handler, __pyx_n_s_request_deserializer); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 574, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":573
+ * 
+ *     # Deserializes the request message
+ *     cdef object request_message = deserialize(             # <<<<<<<<<<<<<<
+ *         method_handler.request_deserializer,
+ *         request_raw,
+ */
+  __pyx_t_2 = __pyx_f_7_cython_6cygrpc_deserialize(__pyx_t_1, __pyx_cur_scope->__pyx_v_request_raw); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 573, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_GIVEREF(__pyx_t_2);
+  __pyx_cur_scope->__pyx_v_request_message = __pyx_t_2;
+  __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":581
+ *     cdef _ServicerContext servicer_context = _ServicerContext(
+ *         rpc_state,
+ *         method_handler.request_deserializer,             # <<<<<<<<<<<<<<
+ *         method_handler.response_serializer,
+ *         loop,
+ */
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_method_handler, __pyx_n_s_request_deserializer); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 581, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":582
+ *         rpc_state,
+ *         method_handler.request_deserializer,
+ *         method_handler.response_serializer,             # <<<<<<<<<<<<<<
+ *         loop,
+ *     )
+ */
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_method_handler, __pyx_n_s_response_serializer); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 582, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":579
+ * 
+ *     # Creates a dedecated ServicerContext
+ *     cdef _ServicerContext servicer_context = _ServicerContext(             # <<<<<<<<<<<<<<
+ *         rpc_state,
+ *         method_handler.request_deserializer,
+ */
+  __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 579, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state))) __PYX_ERR(9, 579, __pyx_L1_error);
+  __Pyx_GIVEREF(__pyx_t_2);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2)) __PYX_ERR(9, 579, __pyx_L1_error);
+  __Pyx_GIVEREF(__pyx_t_1);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_1)) __PYX_ERR(9, 579, __pyx_L1_error);
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_cur_scope->__pyx_v_loop)) __PYX_ERR(9, 579, __pyx_L1_error);
+  __pyx_t_2 = 0;
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_7_cython_6cygrpc__ServicerContext), __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 579, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_GIVEREF(__pyx_t_1);
+  __pyx_cur_scope->__pyx_v_servicer_context = ((struct __pyx_obj_7_cython_6cygrpc__ServicerContext *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":587
+ * 
+ *     # Finishes the application handler
+ *     await _finish_handler_with_stream_responses(             # <<<<<<<<<<<<<<
+ *         rpc_state,
+ *         method_handler.unary_stream,
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_finish_handler_with_stream_resp); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 587, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":589
+ *     await _finish_handler_with_stream_responses(
+ *         rpc_state,
+ *         method_handler.unary_stream,             # <<<<<<<<<<<<<<
+ *         request_message,
+ *         servicer_context,
+ */
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_method_handler, __pyx_n_s_unary_stream); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 589, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":592
+ *         request_message,
+ *         servicer_context,
+ *         loop,             # <<<<<<<<<<<<<<
+ *     )
+ * 
+ */
+  __pyx_t_6 = NULL;
+  __pyx_t_4 = 0;
+  #if CYTHON_UNPACK_METHODS
+  if (unlikely(PyMethod_Check(__pyx_t_3))) {
+    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
+    if (likely(__pyx_t_6)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+      __Pyx_INCREF(__pyx_t_6);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_3, function);
+      __pyx_t_4 = 1;
+    }
+  }
+  #endif
+  {
+    PyObject *__pyx_callargs[6] = {__pyx_t_6, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state), __pyx_t_2, __pyx_cur_scope->__pyx_v_request_message, ((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context), __pyx_cur_scope->__pyx_v_loop};
+    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 5+__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 587, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  }
+  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_XGOTREF(__pyx_r);
+  if (likely(__pyx_r)) {
+    __Pyx_XGIVEREF(__pyx_r);
+    __Pyx_RefNannyFinishContext();
+    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+    /* return from generator, awaiting value */
+    __pyx_generator->resume_label = 2;
+    return __pyx_r;
+    __pyx_L6_resume_from_await:;
+    if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 587, __pyx_L1_error)
+  } else {
+    PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType();
+    if (exc_type) {
+      if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
+      else __PYX_ERR(9, 587, __pyx_L1_error)
+    }
+  }
+  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":564
+ * 
+ * 
+ * async def _handle_unary_stream_rpc(object method_handler,             # <<<<<<<<<<<<<<
+ *                                    RPCState rpc_state,
+ *                                    object loop):
+ */
+
+  /* function exit code */
+  PyErr_SetNone(PyExc_StopIteration);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_Generator_Replace_StopIteration(0);
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("_handle_unary_stream_rpc", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
+  #if !CYTHON_USE_EXC_INFO_STACK
+  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+  #endif
+  __pyx_generator->resume_label = -1;
+  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":599
+ *     """Bridge between the async generator API and the reader-writer API."""
+ * 
+ *     def __cinit__(self, _ServicerContext servicer_context):             # <<<<<<<<<<<<<<
+ *         self._servicer_context = servicer_context
+ *         self._agen = None
+ */
+
+/* Python wrapper */
+static int __pyx_pw_7_cython_6cygrpc_16_MessageReceiver_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_7_cython_6cygrpc_16_MessageReceiver_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_servicer_context = 0;
+  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject* values[1] = {0};
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  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);
+  {
+    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_servicer_context,0};
+    if (__pyx_kwds) {
+      Py_ssize_t kw_args;
+      switch (__pyx_nargs) {
+        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
+      switch (__pyx_nargs) {
+        case  0:
+        if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_servicer_context)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 599, __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, "__cinit__") < 0)) __PYX_ERR(9, 599, __pyx_L3_error)
+      }
+    } else if (unlikely(__pyx_nargs != 1)) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+    }
+    __pyx_v_servicer_context = ((struct __pyx_obj_7_cython_6cygrpc__ServicerContext *)values[0]);
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 599, __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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_AddTraceback("_cython.cygrpc._MessageReceiver.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_servicer_context), __pyx_ptype_7_cython_6cygrpc__ServicerContext, 1, "servicer_context", 0))) __PYX_ERR(9, 599, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_16_MessageReceiver___cinit__(((struct __pyx_obj_7_cython_6cygrpc__MessageReceiver *)__pyx_v_self), __pyx_v_servicer_context);
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = -1;
+  __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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_7_cython_6cygrpc_16_MessageReceiver___cinit__(struct __pyx_obj_7_cython_6cygrpc__MessageReceiver *__pyx_v_self, struct __pyx_obj_7_cython_6cygrpc__ServicerContext *__pyx_v_servicer_context) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__cinit__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":600
+ * 
+ *     def __cinit__(self, _ServicerContext servicer_context):
+ *         self._servicer_context = servicer_context             # <<<<<<<<<<<<<<
+ *         self._agen = None
+ * 
+ */
+  __Pyx_INCREF((PyObject *)__pyx_v_servicer_context);
+  __Pyx_GIVEREF((PyObject *)__pyx_v_servicer_context);
+  __Pyx_GOTREF((PyObject *)__pyx_v_self->_servicer_context);
+  __Pyx_DECREF((PyObject *)__pyx_v_self->_servicer_context);
+  __pyx_v_self->_servicer_context = __pyx_v_servicer_context;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":601
+ *     def __cinit__(self, _ServicerContext servicer_context):
+ *         self._servicer_context = servicer_context
+ *         self._agen = None             # <<<<<<<<<<<<<<
+ * 
+ *     async def _async_message_receiver(self):
+ */
+  __Pyx_INCREF(Py_None);
+  __Pyx_GIVEREF(Py_None);
+  __Pyx_GOTREF(__pyx_v_self->_agen);
+  __Pyx_DECREF(__pyx_v_self->_agen);
+  __pyx_v_self->_agen = Py_None;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":599
+ *     """Bridge between the async generator API and the reader-writer API."""
+ * 
+ *     def __cinit__(self, _ServicerContext servicer_context):             # <<<<<<<<<<<<<<
+ *         self._servicer_context = servicer_context
+ *         self._agen = None
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+static PyObject *__pyx_gb_7_cython_6cygrpc_16_MessageReceiver_4generator30(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":603
+ *         self._agen = None
+ * 
+ *     async def _async_message_receiver(self):             # <<<<<<<<<<<<<<
+ *         """An async generator that receives messages."""
+ *         cdef object message
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_MessageReceiver_3_async_message_receiver(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+PyDoc_STRVAR(__pyx_doc_7_cython_6cygrpc_16_MessageReceiver_2_async_message_receiver, "An async generator that receives messages.");
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_16_MessageReceiver_3_async_message_receiver = {"_async_message_receiver", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16_MessageReceiver_3_async_message_receiver, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7_cython_6cygrpc_16_MessageReceiver_2_async_message_receiver};
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_MessageReceiver_3_async_message_receiver(PyObject *__pyx_v_self, 
+#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("_async_message_receiver (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("_async_message_receiver", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "_async_message_receiver", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_16_MessageReceiver_2_async_message_receiver(((struct __pyx_obj_7_cython_6cygrpc__MessageReceiver *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_16_MessageReceiver_2_async_message_receiver(struct __pyx_obj_7_cython_6cygrpc__MessageReceiver *__pyx_v_self) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver *__pyx_cur_scope;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_async_message_receiver", 0);
+  __pyx_cur_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver, __pyx_empty_tuple, NULL);
+  if (unlikely(!__pyx_cur_scope)) {
+    __pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver *)Py_None);
+    __Pyx_INCREF(Py_None);
+    __PYX_ERR(9, 603, __pyx_L1_error)
+  } else {
+    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+  }
+  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
+  {
+    __pyx_CoroutineObject *gen = __Pyx_AsyncGen_New((__pyx_coroutine_body_t) __pyx_gb_7_cython_6cygrpc_16_MessageReceiver_4generator30, __pyx_codeobj__89, (PyObject *) __pyx_cur_scope, __pyx_n_s_async_message_receiver, __pyx_n_s_MessageReceiver__async_message, __pyx_n_s_cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(9, 603, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_cur_scope);
+    __Pyx_RefNannyFinishContext();
+    return (PyObject *) gen;
+  }
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc._MessageReceiver._async_message_receiver", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_gb_7_cython_6cygrpc_16_MessageReceiver_4generator30(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
+{
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver *__pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver *)__pyx_generator->closure);
+  PyObject *__pyx_r = NULL;
+  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_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("_async_message_receiver", 0);
+  switch (__pyx_generator->resume_label) {
+    case 0: goto __pyx_L3_first_run;
+    case 1: goto __pyx_L6_resume_from_await;
+    case 2: goto __pyx_L8_resume_from_yield;
+    default: /* CPython raises the right error here */
+    __Pyx_RefNannyFinishContext();
+    return NULL;
+  }
+  __pyx_L3_first_run:;
+  if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 603, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":606
+ *         """An async generator that receives messages."""
+ *         cdef object message
+ *         while True:             # <<<<<<<<<<<<<<
+ *             message = await self._servicer_context.read()
+ *             if message is not EOF:
+ */
+  while (1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":607
+ *         cdef object message
+ *         while True:
+ *             message = await self._servicer_context.read()             # <<<<<<<<<<<<<<
+ *             if message is not EOF:
+ *                 yield message
+ */
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self->_servicer_context), __pyx_n_s_read); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 607, __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(9, 607, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    }
+    __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __Pyx_XGOTREF(__pyx_r);
+    if (likely(__pyx_r)) {
+      __Pyx_XGIVEREF(__pyx_r);
+      __Pyx_RefNannyFinishContext();
+      __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+      /* return from async generator, awaiting value */
+      __pyx_generator->resume_label = 1;
+      return __pyx_r;
+      __pyx_L6_resume_from_await:;
+      if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 607, __pyx_L1_error)
+      __pyx_t_1 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_1);
+    } else {
+      __pyx_t_1 = NULL;
+      if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_1) < 0) __PYX_ERR(9, 607, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+    }
+    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_message);
+    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_message, __pyx_t_1);
+    __Pyx_GIVEREF(__pyx_t_1);
+    __pyx_t_1 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":608
+ *         while True:
+ *             message = await self._servicer_context.read()
+ *             if message is not EOF:             # <<<<<<<<<<<<<<
+ *                 yield message
+ *             else:
+ */
+    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_EOF); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 608, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_5 = (__pyx_cur_scope->__pyx_v_message != __pyx_t_1);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    if (__pyx_t_5) {
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":609
+ *             message = await self._servicer_context.read()
+ *             if message is not EOF:
+ *                 yield message             # <<<<<<<<<<<<<<
+ *             else:
+ *                 break
+ */
+      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_message);
+      __pyx_r = __pyx_cur_scope->__pyx_v_message;
+      __Pyx_XGIVEREF(__pyx_r);
+      __Pyx_RefNannyFinishContext();
+      __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+      /* return from async generator, yielding value */
+      __pyx_generator->resume_label = 2;
+      return __Pyx__PyAsyncGenValueWrapperNew(__pyx_r);
+      __pyx_L8_resume_from_yield:;
+      if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 609, __pyx_L1_error)
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":608
+ *         while True:
+ *             message = await self._servicer_context.read()
+ *             if message is not EOF:             # <<<<<<<<<<<<<<
+ *                 yield message
+ *             else:
+ */
+      goto __pyx_L7;
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":611
+ *                 yield message
+ *             else:
+ *                 break             # <<<<<<<<<<<<<<
+ * 
+ *     def __aiter__(self):
+ */
+    /*else*/ {
+      goto __pyx_L5_break;
+    }
+    __pyx_L7:;
+  }
+  __pyx_L5_break:;
+  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":603
+ *         self._agen = None
+ * 
+ *     async def _async_message_receiver(self):             # <<<<<<<<<<<<<<
+ *         """An async generator that receives messages."""
+ *         cdef object message
+ */
+
+  /* function exit code */
+  PyErr_SetNone(__Pyx_PyExc_StopAsyncIteration);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_Generator_Replace_StopIteration(1);
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("_async_message_receiver", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
+  #if !CYTHON_USE_EXC_INFO_STACK
+  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+  #endif
+  __pyx_generator->resume_label = -1;
+  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":613
+ *                 break
+ * 
+ *     def __aiter__(self):             # <<<<<<<<<<<<<<
+ *         # Prevents never awaited warning if application never used the async generator
+ *         if self._agen is None:
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_MessageReceiver_6__aiter__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_MessageReceiver_6__aiter__(PyObject *__pyx_v_self) {
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__aiter__ (wrapper)", 0);
+  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_16_MessageReceiver_5__aiter__(((struct __pyx_obj_7_cython_6cygrpc__MessageReceiver *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_16_MessageReceiver_5__aiter__(struct __pyx_obj_7_cython_6cygrpc__MessageReceiver *__pyx_v_self) {
+  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;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__aiter__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":615
+ *     def __aiter__(self):
+ *         # Prevents never awaited warning if application never used the async generator
+ *         if self._agen is None:             # <<<<<<<<<<<<<<
+ *             self._agen = self._async_message_receiver()
+ *         return self._agen
+ */
+  __pyx_t_1 = (__pyx_v_self->_agen == Py_None);
+  if (__pyx_t_1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":616
+ *         # Prevents never awaited warning if application never used the async generator
+ *         if self._agen is None:
+ *             self._agen = self._async_message_receiver()             # <<<<<<<<<<<<<<
+ *         return self._agen
+ * 
+ */
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_async_message_receiver); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 616, __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(9, 616, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    }
+    __Pyx_GIVEREF(__pyx_t_2);
+    __Pyx_GOTREF(__pyx_v_self->_agen);
+    __Pyx_DECREF(__pyx_v_self->_agen);
+    __pyx_v_self->_agen = __pyx_t_2;
+    __pyx_t_2 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":615
+ *     def __aiter__(self):
+ *         # Prevents never awaited warning if application never used the async generator
+ *         if self._agen is None:             # <<<<<<<<<<<<<<
+ *             self._agen = self._async_message_receiver()
+ *         return self._agen
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":617
+ *         if self._agen is None:
+ *             self._agen = self._async_message_receiver()
+ *         return self._agen             # <<<<<<<<<<<<<<
+ * 
+ *     async def __anext__(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->_agen);
+  __pyx_r = __pyx_v_self->_agen;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":613
+ *                 break
+ * 
+ *     def __aiter__(self):             # <<<<<<<<<<<<<<
+ *         # Prevents never awaited warning if application never used the async generator
+ *         if self._agen is None:
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("_cython.cygrpc._MessageReceiver.__aiter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+static PyObject *__pyx_gb_7_cython_6cygrpc_16_MessageReceiver_9generator31(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":619
+ *         return self._agen
+ * 
+ *     async def __anext__(self):             # <<<<<<<<<<<<<<
+ *         return await self.__aiter__().__anext__()
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_MessageReceiver_8__anext__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_MessageReceiver_8__anext__(PyObject *__pyx_v_self) {
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__anext__ (wrapper)", 0);
+  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_16_MessageReceiver_7__anext__(((struct __pyx_obj_7_cython_6cygrpc__MessageReceiver *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_16_MessageReceiver_7__anext__(struct __pyx_obj_7_cython_6cygrpc__MessageReceiver *__pyx_v_self) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_41___anext__ *__pyx_cur_scope;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__anext__", 0);
+  __pyx_cur_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_41___anext__ *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_41___anext__(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_41___anext__, __pyx_empty_tuple, NULL);
+  if (unlikely(!__pyx_cur_scope)) {
+    __pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_41___anext__ *)Py_None);
+    __Pyx_INCREF(Py_None);
+    __PYX_ERR(9, 619, __pyx_L1_error)
+  } else {
+    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+  }
+  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
+  {
+    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7_cython_6cygrpc_16_MessageReceiver_9generator31, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_anext, __pyx_n_s_MessageReceiver___anext, __pyx_n_s_cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(9, 619, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_cur_scope);
+    __Pyx_RefNannyFinishContext();
+    return (PyObject *) gen;
+  }
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc._MessageReceiver.__anext__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_gb_7_cython_6cygrpc_16_MessageReceiver_9generator31(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
+{
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_41___anext__ *__pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_41___anext__ *)__pyx_generator->closure);
+  PyObject *__pyx_r = NULL;
+  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_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__anext__", 0);
+  switch (__pyx_generator->resume_label) {
+    case 0: goto __pyx_L3_first_run;
+    case 1: goto __pyx_L4_resume_from_await;
+    default: /* CPython raises the right error here */
+    __Pyx_RefNannyFinishContext();
+    return NULL;
+  }
+  __pyx_L3_first_run:;
+  if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 619, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":620
+ * 
+ *     async def __anext__(self):
+ *         return await self.__aiter__().__anext__()             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_aiter); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 620, __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(9, 620, __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_anext); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 620, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = NULL;
+  __pyx_t_5 = 0;
+  #if CYTHON_UNPACK_METHODS
+  if (likely(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_5 = 1;
+    }
+  }
+  #endif
+  {
+    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
+    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
+    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+    if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 620, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  }
+  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_XGOTREF(__pyx_r);
+  if (likely(__pyx_r)) {
+    __Pyx_XGIVEREF(__pyx_r);
+    __Pyx_RefNannyFinishContext();
+    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+    /* return from generator, awaiting value */
+    __pyx_generator->resume_label = 1;
+    return __pyx_r;
+    __pyx_L4_resume_from_await:;
+    if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 620, __pyx_L1_error)
+    __pyx_t_1 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_1);
+  } else {
+    __pyx_t_1 = NULL;
+    if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_1) < 0) __PYX_ERR(9, 620, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+  }
+  __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  goto __pyx_L0;
+  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":619
+ *         return self._agen
+ * 
+ *     async def __anext__(self):             # <<<<<<<<<<<<<<
+ *         return await self.__aiter__().__anext__()
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_Generator_Replace_StopIteration(0);
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("__anext__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
+  #if !CYTHON_USE_EXC_INFO_STACK
+  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+  #endif
+  __pyx_generator->resume_label = -1;
+  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "(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_7_cython_6cygrpc_16_MessageReceiver_11__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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_16_MessageReceiver_11__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16_MessageReceiver_11__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_MessageReceiver_11__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_7_cython_6cygrpc_16_MessageReceiver_10__reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc__MessageReceiver *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_16_MessageReceiver_10__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__MessageReceiver *__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(10, 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("_cython.cygrpc._MessageReceiver.__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_7_cython_6cygrpc_16_MessageReceiver_13__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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_16_MessageReceiver_13__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16_MessageReceiver_13__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_16_MessageReceiver_13__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(10, 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(10, 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(10, 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("_cython.cygrpc._MessageReceiver.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_16_MessageReceiver_12__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc__MessageReceiver *)__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_7_cython_6cygrpc_16_MessageReceiver_12__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__MessageReceiver *__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(10, 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("_cython.cygrpc._MessageReceiver.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+static PyObject *__pyx_gb_7_cython_6cygrpc_172generator32(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":623
+ * 
+ * 
+ * async def _handle_stream_unary_rpc(object method_handler,             # <<<<<<<<<<<<<<
+ *                                    RPCState rpc_state,
+ *                                    object loop):
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_171_handle_stream_unary_rpc(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_171_handle_stream_unary_rpc = {"_handle_stream_unary_rpc", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_171_handle_stream_unary_rpc, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_171_handle_stream_unary_rpc(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_method_handler = 0;
+  struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state = 0;
+  PyObject *__pyx_v_loop = 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("_handle_stream_unary_rpc (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_method_handler,&__pyx_n_s_rpc_state,&__pyx_n_s_loop,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_method_handler)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 623, __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_rpc_state)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 623, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("_handle_stream_unary_rpc", 1, 3, 3, 1); __PYX_ERR(9, 623, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_loop)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 623, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("_handle_stream_unary_rpc", 1, 3, 3, 2); __PYX_ERR(9, 623, __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, "_handle_stream_unary_rpc") < 0)) __PYX_ERR(9, 623, __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_method_handler = values[0];
+    __pyx_v_rpc_state = ((struct __pyx_obj_7_cython_6cygrpc_RPCState *)values[1]);
+    __pyx_v_loop = values[2];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("_handle_stream_unary_rpc", 1, 3, 3, __pyx_nargs); __PYX_ERR(9, 623, __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("_cython.cygrpc._handle_stream_unary_rpc", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rpc_state), __pyx_ptype_7_cython_6cygrpc_RPCState, 1, "rpc_state", 0))) __PYX_ERR(9, 624, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_170_handle_stream_unary_rpc(__pyx_self, __pyx_v_method_handler, __pyx_v_rpc_state, __pyx_v_loop);
+
+  /* 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_7_cython_6cygrpc_170_handle_stream_unary_rpc(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_method_handler, struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state, PyObject *__pyx_v_loop) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc *__pyx_cur_scope;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_handle_stream_unary_rpc", 0);
+  __pyx_cur_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc, __pyx_empty_tuple, NULL);
+  if (unlikely(!__pyx_cur_scope)) {
+    __pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc *)Py_None);
+    __Pyx_INCREF(Py_None);
+    __PYX_ERR(9, 623, __pyx_L1_error)
+  } else {
+    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+  }
+  __pyx_cur_scope->__pyx_v_method_handler = __pyx_v_method_handler;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_method_handler);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_method_handler);
+  __pyx_cur_scope->__pyx_v_rpc_state = __pyx_v_rpc_state;
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state);
+  __pyx_cur_scope->__pyx_v_loop = __pyx_v_loop;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
+  {
+    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7_cython_6cygrpc_172generator32, __pyx_codeobj__90, (PyObject *) __pyx_cur_scope, __pyx_n_s_handle_stream_unary_rpc, __pyx_n_s_handle_stream_unary_rpc, __pyx_n_s_cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(9, 623, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_cur_scope);
+    __Pyx_RefNannyFinishContext();
+    return (PyObject *) gen;
+  }
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc._handle_stream_unary_rpc", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_gb_7_cython_6cygrpc_172generator32(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
+{
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc *__pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc *)__pyx_generator->closure);
+  PyObject *__pyx_r = NULL;
+  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;
+  PyObject *__pyx_t_7 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("_handle_stream_unary_rpc", 0);
+  switch (__pyx_generator->resume_label) {
+    case 0: goto __pyx_L3_first_run;
+    case 1: goto __pyx_L5_resume_from_await;
+    default: /* CPython raises the right error here */
+    __Pyx_RefNannyFinishContext();
+    return NULL;
+  }
+  __pyx_L3_first_run:;
+  if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 623, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":629
+ *     cdef _ServicerContext servicer_context = _ServicerContext(
+ *         rpc_state,
+ *         method_handler.request_deserializer,             # <<<<<<<<<<<<<<
+ *         None,
+ *         loop,
+ */
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_method_handler, __pyx_n_s_request_deserializer); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 629, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":627
+ *                                    object loop):
+ *     # Creates a dedecated ServicerContext
+ *     cdef _ServicerContext servicer_context = _ServicerContext(             # <<<<<<<<<<<<<<
+ *         rpc_state,
+ *         method_handler.request_deserializer,
+ */
+  __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 627, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state))) __PYX_ERR(9, 627, __pyx_L1_error);
+  __Pyx_GIVEREF(__pyx_t_1);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1)) __PYX_ERR(9, 627, __pyx_L1_error);
+  __Pyx_INCREF(Py_None);
+  __Pyx_GIVEREF(Py_None);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None)) __PYX_ERR(9, 627, __pyx_L1_error);
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_cur_scope->__pyx_v_loop)) __PYX_ERR(9, 627, __pyx_L1_error);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_7_cython_6cygrpc__ServicerContext), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 627, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_GIVEREF(__pyx_t_1);
+  __pyx_cur_scope->__pyx_v_servicer_context = ((struct __pyx_obj_7_cython_6cygrpc__ServicerContext *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":636
+ *     # Prepares the request generator
+ *     cdef object request_iterator
+ *     if _is_async_handler(method_handler.stream_unary):             # <<<<<<<<<<<<<<
+ *         request_iterator = _MessageReceiver(servicer_context)
+ *     else:
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_is_async_handler); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 636, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_method_handler, __pyx_n_s_stream_unary); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 636, __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(9, 636, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  }
+  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(9, 636, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (__pyx_t_6) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":637
+ *     cdef object request_iterator
+ *     if _is_async_handler(method_handler.stream_unary):
+ *         request_iterator = _MessageReceiver(servicer_context)             # <<<<<<<<<<<<<<
+ *     else:
+ *         request_iterator = async_generator_to_generator(
+ */
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_7_cython_6cygrpc__MessageReceiver), ((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 637, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_GIVEREF(__pyx_t_1);
+    __pyx_cur_scope->__pyx_v_request_iterator = __pyx_t_1;
+    __pyx_t_1 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":636
+ *     # Prepares the request generator
+ *     cdef object request_iterator
+ *     if _is_async_handler(method_handler.stream_unary):             # <<<<<<<<<<<<<<
+ *         request_iterator = _MessageReceiver(servicer_context)
+ *     else:
+ */
+    goto __pyx_L4;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":639
+ *         request_iterator = _MessageReceiver(servicer_context)
+ *     else:
+ *         request_iterator = async_generator_to_generator(             # <<<<<<<<<<<<<<
+ *             _MessageReceiver(servicer_context),
+ *             loop
+ */
+  /*else*/ {
+    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_async_generator_to_generator); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 639, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":640
+ *     else:
+ *         request_iterator = async_generator_to_generator(
+ *             _MessageReceiver(servicer_context),             # <<<<<<<<<<<<<<
+ *             loop
+ *         )
+ */
+    __pyx_t_3 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_7_cython_6cygrpc__MessageReceiver), ((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context)); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 640, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":641
+ *         request_iterator = async_generator_to_generator(
+ *             _MessageReceiver(servicer_context),
+ *             loop             # <<<<<<<<<<<<<<
+ *         )
+ * 
+ */
+    __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[3] = {__pyx_t_4, __pyx_t_3, __pyx_cur_scope->__pyx_v_loop};
+      __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(9, 639, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    }
+    __Pyx_GIVEREF(__pyx_t_1);
+    __pyx_cur_scope->__pyx_v_request_iterator = __pyx_t_1;
+    __pyx_t_1 = 0;
+  }
+  __pyx_L4:;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":645
+ * 
+ *     # Finishes the application handler
+ *     await _finish_handler_with_unary_response(             # <<<<<<<<<<<<<<
+ *         rpc_state,
+ *         method_handler.stream_unary,
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_finish_handler_with_unary_respo); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 645, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":647
+ *     await _finish_handler_with_unary_response(
+ *         rpc_state,
+ *         method_handler.stream_unary,             # <<<<<<<<<<<<<<
+ *         request_iterator,
+ *         servicer_context,
+ */
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_method_handler, __pyx_n_s_stream_unary); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 647, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":650
+ *         request_iterator,
+ *         servicer_context,
+ *         method_handler.response_serializer,             # <<<<<<<<<<<<<<
+ *         loop
+ *     )
+ */
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_method_handler, __pyx_n_s_response_serializer); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 650, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":651
+ *         servicer_context,
+ *         method_handler.response_serializer,
+ *         loop             # <<<<<<<<<<<<<<
+ *     )
+ * 
+ */
+  __pyx_t_7 = NULL;
+  __pyx_t_5 = 0;
+  #if CYTHON_UNPACK_METHODS
+  if (unlikely(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_5 = 1;
+    }
+  }
+  #endif
+  {
+    PyObject *__pyx_callargs[7] = {__pyx_t_7, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state), __pyx_t_3, __pyx_cur_scope->__pyx_v_request_iterator, ((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context), __pyx_t_4, __pyx_cur_scope->__pyx_v_loop};
+    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 6+__pyx_t_5);
+    __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;
+    if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 645, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  }
+  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_XGOTREF(__pyx_r);
+  if (likely(__pyx_r)) {
+    __Pyx_XGIVEREF(__pyx_r);
+    __Pyx_RefNannyFinishContext();
+    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+    /* return from generator, awaiting value */
+    __pyx_generator->resume_label = 1;
+    return __pyx_r;
+    __pyx_L5_resume_from_await:;
+    if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 645, __pyx_L1_error)
+  } else {
+    PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType();
+    if (exc_type) {
+      if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
+      else __PYX_ERR(9, 645, __pyx_L1_error)
+    }
+  }
+  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":623
+ * 
+ * 
+ * async def _handle_stream_unary_rpc(object method_handler,             # <<<<<<<<<<<<<<
+ *                                    RPCState rpc_state,
+ *                                    object loop):
+ */
+
+  /* function exit code */
+  PyErr_SetNone(PyExc_StopIteration);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_Generator_Replace_StopIteration(0);
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_AddTraceback("_handle_stream_unary_rpc", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
+  #if !CYTHON_USE_EXC_INFO_STACK
+  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+  #endif
+  __pyx_generator->resume_label = -1;
+  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+static PyObject *__pyx_gb_7_cython_6cygrpc_175generator33(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":655
+ * 
+ * 
+ * async def _handle_stream_stream_rpc(object method_handler,             # <<<<<<<<<<<<<<
+ *                                     RPCState rpc_state,
+ *                                     object loop):
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_174_handle_stream_stream_rpc(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_174_handle_stream_stream_rpc = {"_handle_stream_stream_rpc", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_174_handle_stream_stream_rpc, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_174_handle_stream_stream_rpc(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_method_handler = 0;
+  struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state = 0;
+  PyObject *__pyx_v_loop = 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("_handle_stream_stream_rpc (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_method_handler,&__pyx_n_s_rpc_state,&__pyx_n_s_loop,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_method_handler)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 655, __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_rpc_state)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 655, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("_handle_stream_stream_rpc", 1, 3, 3, 1); __PYX_ERR(9, 655, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_loop)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 655, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("_handle_stream_stream_rpc", 1, 3, 3, 2); __PYX_ERR(9, 655, __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, "_handle_stream_stream_rpc") < 0)) __PYX_ERR(9, 655, __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_method_handler = values[0];
+    __pyx_v_rpc_state = ((struct __pyx_obj_7_cython_6cygrpc_RPCState *)values[1]);
+    __pyx_v_loop = values[2];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("_handle_stream_stream_rpc", 1, 3, 3, __pyx_nargs); __PYX_ERR(9, 655, __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("_cython.cygrpc._handle_stream_stream_rpc", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rpc_state), __pyx_ptype_7_cython_6cygrpc_RPCState, 1, "rpc_state", 0))) __PYX_ERR(9, 656, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_173_handle_stream_stream_rpc(__pyx_self, __pyx_v_method_handler, __pyx_v_rpc_state, __pyx_v_loop);
+
+  /* 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_7_cython_6cygrpc_173_handle_stream_stream_rpc(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_method_handler, struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state, PyObject *__pyx_v_loop) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc *__pyx_cur_scope;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_handle_stream_stream_rpc", 0);
+  __pyx_cur_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc, __pyx_empty_tuple, NULL);
+  if (unlikely(!__pyx_cur_scope)) {
+    __pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc *)Py_None);
+    __Pyx_INCREF(Py_None);
+    __PYX_ERR(9, 655, __pyx_L1_error)
+  } else {
+    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+  }
+  __pyx_cur_scope->__pyx_v_method_handler = __pyx_v_method_handler;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_method_handler);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_method_handler);
+  __pyx_cur_scope->__pyx_v_rpc_state = __pyx_v_rpc_state;
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state);
+  __pyx_cur_scope->__pyx_v_loop = __pyx_v_loop;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
+  {
+    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7_cython_6cygrpc_175generator33, __pyx_codeobj__91, (PyObject *) __pyx_cur_scope, __pyx_n_s_handle_stream_stream_rpc, __pyx_n_s_handle_stream_stream_rpc, __pyx_n_s_cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(9, 655, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_cur_scope);
+    __Pyx_RefNannyFinishContext();
+    return (PyObject *) gen;
+  }
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc._handle_stream_stream_rpc", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_gb_7_cython_6cygrpc_175generator33(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
+{
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc *__pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc *)__pyx_generator->closure);
+  PyObject *__pyx_r = NULL;
+  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;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("_handle_stream_stream_rpc", 0);
+  switch (__pyx_generator->resume_label) {
+    case 0: goto __pyx_L3_first_run;
+    case 1: goto __pyx_L5_resume_from_await;
+    default: /* CPython raises the right error here */
+    __Pyx_RefNannyFinishContext();
+    return NULL;
+  }
+  __pyx_L3_first_run:;
+  if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 655, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":661
+ *     cdef _ServicerContext servicer_context = _ServicerContext(
+ *         rpc_state,
+ *         method_handler.request_deserializer,             # <<<<<<<<<<<<<<
+ *         method_handler.response_serializer,
+ *         loop,
+ */
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_method_handler, __pyx_n_s_request_deserializer); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 661, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":662
+ *         rpc_state,
+ *         method_handler.request_deserializer,
+ *         method_handler.response_serializer,             # <<<<<<<<<<<<<<
+ *         loop,
+ *     )
+ */
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_method_handler, __pyx_n_s_response_serializer); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 662, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":659
+ *                                     object loop):
+ *     # Creates a dedecated ServicerContext
+ *     cdef _ServicerContext servicer_context = _ServicerContext(             # <<<<<<<<<<<<<<
+ *         rpc_state,
+ *         method_handler.request_deserializer,
+ */
+  __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 659, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state))) __PYX_ERR(9, 659, __pyx_L1_error);
+  __Pyx_GIVEREF(__pyx_t_1);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1)) __PYX_ERR(9, 659, __pyx_L1_error);
+  __Pyx_GIVEREF(__pyx_t_2);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2)) __PYX_ERR(9, 659, __pyx_L1_error);
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_cur_scope->__pyx_v_loop)) __PYX_ERR(9, 659, __pyx_L1_error);
+  __pyx_t_1 = 0;
+  __pyx_t_2 = 0;
+  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_7_cython_6cygrpc__ServicerContext), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 659, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_GIVEREF(__pyx_t_2);
+  __pyx_cur_scope->__pyx_v_servicer_context = ((struct __pyx_obj_7_cython_6cygrpc__ServicerContext *)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":668
+ *     # Prepares the request generator
+ *     cdef object request_iterator
+ *     if _is_async_handler(method_handler.stream_stream):             # <<<<<<<<<<<<<<
+ *         request_iterator = _MessageReceiver(servicer_context)
+ *     else:
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_is_async_handler); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 668, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_method_handler, __pyx_n_s_stream_stream); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 668, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __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_t_1};
+    __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;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 668, __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(9, 668, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (__pyx_t_6) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":669
+ *     cdef object request_iterator
+ *     if _is_async_handler(method_handler.stream_stream):
+ *         request_iterator = _MessageReceiver(servicer_context)             # <<<<<<<<<<<<<<
+ *     else:
+ *         request_iterator = async_generator_to_generator(
+ */
+    __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_7_cython_6cygrpc__MessageReceiver), ((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 669, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_GIVEREF(__pyx_t_2);
+    __pyx_cur_scope->__pyx_v_request_iterator = __pyx_t_2;
+    __pyx_t_2 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":668
+ *     # Prepares the request generator
+ *     cdef object request_iterator
+ *     if _is_async_handler(method_handler.stream_stream):             # <<<<<<<<<<<<<<
+ *         request_iterator = _MessageReceiver(servicer_context)
+ *     else:
+ */
+    goto __pyx_L4;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":671
+ *         request_iterator = _MessageReceiver(servicer_context)
+ *     else:
+ *         request_iterator = async_generator_to_generator(             # <<<<<<<<<<<<<<
+ *             _MessageReceiver(servicer_context),
+ *             loop
+ */
+  /*else*/ {
+    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_async_generator_to_generator); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 671, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":672
+ *     else:
+ *         request_iterator = async_generator_to_generator(
+ *             _MessageReceiver(servicer_context),             # <<<<<<<<<<<<<<
+ *             loop
+ *         )
+ */
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_7_cython_6cygrpc__MessageReceiver), ((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 672, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":673
+ *         request_iterator = async_generator_to_generator(
+ *             _MessageReceiver(servicer_context),
+ *             loop             # <<<<<<<<<<<<<<
+ *         )
+ * 
+ */
+    __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[3] = {__pyx_t_4, __pyx_t_1, __pyx_cur_scope->__pyx_v_loop};
+      __pyx_t_2 = __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;
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 671, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    }
+    __Pyx_GIVEREF(__pyx_t_2);
+    __pyx_cur_scope->__pyx_v_request_iterator = __pyx_t_2;
+    __pyx_t_2 = 0;
+  }
+  __pyx_L4:;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":677
+ * 
+ *     # Finishes the application handler
+ *     await _finish_handler_with_stream_responses(             # <<<<<<<<<<<<<<
+ *         rpc_state,
+ *         method_handler.stream_stream,
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_finish_handler_with_stream_resp); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 677, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":679
+ *     await _finish_handler_with_stream_responses(
+ *         rpc_state,
+ *         method_handler.stream_stream,             # <<<<<<<<<<<<<<
+ *         request_iterator,
+ *         servicer_context,
+ */
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_method_handler, __pyx_n_s_stream_stream); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 679, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":682
+ *         request_iterator,
+ *         servicer_context,
+ *         loop,             # <<<<<<<<<<<<<<
+ *     )
+ * 
+ */
+  __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[6] = {__pyx_t_4, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state), __pyx_t_1, __pyx_cur_scope->__pyx_v_request_iterator, ((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context), __pyx_cur_scope->__pyx_v_loop};
+    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 5+__pyx_t_5);
+    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 677, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  }
+  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_2);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_XGOTREF(__pyx_r);
+  if (likely(__pyx_r)) {
+    __Pyx_XGIVEREF(__pyx_r);
+    __Pyx_RefNannyFinishContext();
+    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+    /* return from generator, awaiting value */
+    __pyx_generator->resume_label = 1;
+    return __pyx_r;
+    __pyx_L5_resume_from_await:;
+    if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 677, __pyx_L1_error)
+  } else {
+    PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType();
+    if (exc_type) {
+      if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
+      else __PYX_ERR(9, 677, __pyx_L1_error)
+    }
+  }
+  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":655
+ * 
+ * 
+ * async def _handle_stream_stream_rpc(object method_handler,             # <<<<<<<<<<<<<<
+ *                                     RPCState rpc_state,
+ *                                     object loop):
+ */
+
+  /* function exit code */
+  PyErr_SetNone(PyExc_StopIteration);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_Generator_Replace_StopIteration(0);
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("_handle_stream_stream_rpc", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
+  #if !CYTHON_USE_EXC_INFO_STACK
+  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+  #endif
+  __pyx_generator->resume_label = -1;
+  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+static PyObject *__pyx_gb_7_cython_6cygrpc_178generator34(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":686
+ * 
+ * 
+ * async def _handle_exceptions(RPCState rpc_state, object rpc_coro, object loop):             # <<<<<<<<<<<<<<
+ *     try:
+ *         try:
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_177_handle_exceptions(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_177_handle_exceptions = {"_handle_exceptions", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_177_handle_exceptions, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_177_handle_exceptions(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
+) {
+  struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state = 0;
+  PyObject *__pyx_v_rpc_coro = 0;
+  PyObject *__pyx_v_loop = 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("_handle_exceptions (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_rpc_state,&__pyx_n_s_rpc_coro,&__pyx_n_s_loop,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_rpc_state)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 686, __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_rpc_coro)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 686, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("_handle_exceptions", 1, 3, 3, 1); __PYX_ERR(9, 686, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_loop)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 686, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("_handle_exceptions", 1, 3, 3, 2); __PYX_ERR(9, 686, __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, "_handle_exceptions") < 0)) __PYX_ERR(9, 686, __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_rpc_state = ((struct __pyx_obj_7_cython_6cygrpc_RPCState *)values[0]);
+    __pyx_v_rpc_coro = values[1];
+    __pyx_v_loop = values[2];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("_handle_exceptions", 1, 3, 3, __pyx_nargs); __PYX_ERR(9, 686, __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("_cython.cygrpc._handle_exceptions", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rpc_state), __pyx_ptype_7_cython_6cygrpc_RPCState, 1, "rpc_state", 0))) __PYX_ERR(9, 686, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_176_handle_exceptions(__pyx_self, __pyx_v_rpc_state, __pyx_v_rpc_coro, __pyx_v_loop);
+
+  /* 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_7_cython_6cygrpc_176_handle_exceptions(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state, PyObject *__pyx_v_rpc_coro, PyObject *__pyx_v_loop) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions *__pyx_cur_scope;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_handle_exceptions", 0);
+  __pyx_cur_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions, __pyx_empty_tuple, NULL);
+  if (unlikely(!__pyx_cur_scope)) {
+    __pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions *)Py_None);
+    __Pyx_INCREF(Py_None);
+    __PYX_ERR(9, 686, __pyx_L1_error)
+  } else {
+    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+  }
+  __pyx_cur_scope->__pyx_v_rpc_state = __pyx_v_rpc_state;
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state);
+  __pyx_cur_scope->__pyx_v_rpc_coro = __pyx_v_rpc_coro;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_rpc_coro);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_rpc_coro);
+  __pyx_cur_scope->__pyx_v_loop = __pyx_v_loop;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
+  {
+    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7_cython_6cygrpc_178generator34, __pyx_codeobj__92, (PyObject *) __pyx_cur_scope, __pyx_n_s_handle_exceptions, __pyx_n_s_handle_exceptions, __pyx_n_s_cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(9, 686, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_cur_scope);
+    __Pyx_RefNannyFinishContext();
+    return (PyObject *) gen;
+  }
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc._handle_exceptions", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_gb_7_cython_6cygrpc_178generator34(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
+{
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions *__pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions *)__pyx_generator->closure);
+  PyObject *__pyx_r = NULL;
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  int __pyx_t_7;
+  PyObject *__pyx_t_8 = NULL;
+  PyObject *__pyx_t_9 = NULL;
+  PyObject *__pyx_t_10 = NULL;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  unsigned int __pyx_t_13;
+  int __pyx_t_14;
+  int __pyx_t_15;
+  char const *__pyx_t_16;
+  PyObject *__pyx_t_17 = NULL;
+  PyObject *__pyx_t_18 = NULL;
+  PyObject *__pyx_t_19 = NULL;
+  PyObject *__pyx_t_20 = NULL;
+  PyObject *__pyx_t_21 = NULL;
+  PyObject *__pyx_t_22 = NULL;
+  PyObject *__pyx_t_23 = NULL;
+  PyObject *__pyx_t_24 = NULL;
+  PyObject *__pyx_t_25 = NULL;
+  PyObject *__pyx_t_26 = NULL;
+  int __pyx_t_27;
+  PyObject *__pyx_t_28 = NULL;
+  char const *__pyx_t_29;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("_handle_exceptions", 0);
+  switch (__pyx_generator->resume_label) {
+    case 0: goto __pyx_L3_first_run;
+    case 1: goto __pyx_L16_resume_from_await;
+    case 2: goto __pyx_L57_resume_from_await;
+    default: /* CPython raises the right error here */
+    __Pyx_RefNannyFinishContext();
+    return NULL;
+  }
+  __pyx_L3_first_run:;
+  if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 686, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":687
+ * 
+ * async def _handle_exceptions(RPCState rpc_state, object rpc_coro, object loop):
+ *     try:             # <<<<<<<<<<<<<<
+ *         try:
+ *             await rpc_coro
+ */
+  {
+    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
+    __Pyx_XGOTREF(__pyx_t_1);
+    __Pyx_XGOTREF(__pyx_t_2);
+    __Pyx_XGOTREF(__pyx_t_3);
+    /*try:*/ {
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":688
+ * async def _handle_exceptions(RPCState rpc_state, object rpc_coro, object loop):
+ *     try:
+ *         try:             # <<<<<<<<<<<<<<
+ *             await rpc_coro
+ *         except AbortError as e:
+ */
+      {
+        __Pyx_ExceptionSave(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_4);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        /*try:*/ {
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":689
+ *     try:
+ *         try:
+ *             await rpc_coro             # <<<<<<<<<<<<<<
+ *         except AbortError as e:
+ *             # Caught AbortError check if it is the same one
+ */
+          __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_cur_scope->__pyx_v_rpc_coro);
+          __Pyx_XGOTREF(__pyx_r);
+          if (likely(__pyx_r)) {
+            __Pyx_XGIVEREF(__pyx_t_1);
+            __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
+            __Pyx_XGIVEREF(__pyx_t_2);
+            __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
+            __Pyx_XGIVEREF(__pyx_t_3);
+            __pyx_cur_scope->__pyx_t_2 = __pyx_t_3;
+            __Pyx_XGIVEREF(__pyx_t_4);
+            __pyx_cur_scope->__pyx_t_3 = __pyx_t_4;
+            __Pyx_XGIVEREF(__pyx_t_5);
+            __pyx_cur_scope->__pyx_t_4 = __pyx_t_5;
+            __Pyx_XGIVEREF(__pyx_t_6);
+            __pyx_cur_scope->__pyx_t_5 = __pyx_t_6;
+            __Pyx_XGIVEREF(__pyx_r);
+            __Pyx_RefNannyFinishContext();
+            __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+            /* return from generator, awaiting value */
+            __pyx_generator->resume_label = 1;
+            return __pyx_r;
+            __pyx_L16_resume_from_await:;
+            __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
+            __pyx_cur_scope->__pyx_t_0 = 0;
+            __Pyx_XGOTREF(__pyx_t_1);
+            __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
+            __pyx_cur_scope->__pyx_t_1 = 0;
+            __Pyx_XGOTREF(__pyx_t_2);
+            __pyx_t_3 = __pyx_cur_scope->__pyx_t_2;
+            __pyx_cur_scope->__pyx_t_2 = 0;
+            __Pyx_XGOTREF(__pyx_t_3);
+            __pyx_t_4 = __pyx_cur_scope->__pyx_t_3;
+            __pyx_cur_scope->__pyx_t_3 = 0;
+            __Pyx_XGOTREF(__pyx_t_4);
+            __pyx_t_5 = __pyx_cur_scope->__pyx_t_4;
+            __pyx_cur_scope->__pyx_t_4 = 0;
+            __Pyx_XGOTREF(__pyx_t_5);
+            __pyx_t_6 = __pyx_cur_scope->__pyx_t_5;
+            __pyx_cur_scope->__pyx_t_5 = 0;
+            __Pyx_XGOTREF(__pyx_t_6);
+            if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 689, __pyx_L10_error)
+          } else {
+            PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType();
+            if (exc_type) {
+              if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
+              else __PYX_ERR(9, 689, __pyx_L10_error)
+            }
+          }
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":688
+ * async def _handle_exceptions(RPCState rpc_state, object rpc_coro, object loop):
+ *     try:
+ *         try:             # <<<<<<<<<<<<<<
+ *             await rpc_coro
+ *         except AbortError as e:
+ */
+        }
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":696
+ *         else:
+ *             # Check if the abort exception got suppressed
+ *             if rpc_state.abort_exception is not None:             # <<<<<<<<<<<<<<
+ *                 _LOGGER.error(
+ *                     'Abort error unexpectedly suppressed: %s',
+ */
+        /*else:*/ {
+          __pyx_t_7 = (__pyx_cur_scope->__pyx_v_rpc_state->abort_exception != Py_None);
+          if (__pyx_t_7) {
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":697
+ *             # Check if the abort exception got suppressed
+ *             if rpc_state.abort_exception is not None:
+ *                 _LOGGER.error(             # <<<<<<<<<<<<<<
+ *                     'Abort error unexpectedly suppressed: %s',
+ *                     traceback.format_exception(rpc_state.abort_exception)
+ */
+            __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_LOGGER); if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 697, __pyx_L12_except_error)
+            __Pyx_GOTREF(__pyx_t_9);
+            __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_error); if (unlikely(!__pyx_t_10)) __PYX_ERR(9, 697, __pyx_L12_except_error)
+            __Pyx_GOTREF(__pyx_t_10);
+            __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":699
+ *                 _LOGGER.error(
+ *                     'Abort error unexpectedly suppressed: %s',
+ *                     traceback.format_exception(rpc_state.abort_exception)             # <<<<<<<<<<<<<<
+ *                 )
+ *     except (KeyboardInterrupt, SystemExit):
+ */
+            __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_traceback); if (unlikely(!__pyx_t_11)) __PYX_ERR(9, 699, __pyx_L12_except_error)
+            __Pyx_GOTREF(__pyx_t_11);
+            __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_format_exception); if (unlikely(!__pyx_t_12)) __PYX_ERR(9, 699, __pyx_L12_except_error)
+            __Pyx_GOTREF(__pyx_t_12);
+            __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+            __pyx_t_11 = NULL;
+            __pyx_t_13 = 0;
+            #if CYTHON_UNPACK_METHODS
+            if (unlikely(PyMethod_Check(__pyx_t_12))) {
+              __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_12);
+              if (likely(__pyx_t_11)) {
+                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
+                __Pyx_INCREF(__pyx_t_11);
+                __Pyx_INCREF(function);
+                __Pyx_DECREF_SET(__pyx_t_12, function);
+                __pyx_t_13 = 1;
+              }
+            }
+            #endif
+            {
+              PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_cur_scope->__pyx_v_rpc_state->abort_exception};
+              __pyx_t_9 = __Pyx_PyObject_FastCall(__pyx_t_12, __pyx_callargs+1-__pyx_t_13, 1+__pyx_t_13);
+              __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
+              if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 699, __pyx_L12_except_error)
+              __Pyx_GOTREF(__pyx_t_9);
+              __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+            }
+            __pyx_t_12 = NULL;
+            __pyx_t_13 = 0;
+            #if CYTHON_UNPACK_METHODS
+            if (unlikely(PyMethod_Check(__pyx_t_10))) {
+              __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_10);
+              if (likely(__pyx_t_12)) {
+                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
+                __Pyx_INCREF(__pyx_t_12);
+                __Pyx_INCREF(function);
+                __Pyx_DECREF_SET(__pyx_t_10, function);
+                __pyx_t_13 = 1;
+              }
+            }
+            #endif
+            {
+              PyObject *__pyx_callargs[3] = {__pyx_t_12, __pyx_kp_s_Abort_error_unexpectedly_suppres, __pyx_t_9};
+              __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_13, 2+__pyx_t_13);
+              __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
+              __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+              if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 697, __pyx_L12_except_error)
+              __Pyx_GOTREF(__pyx_t_8);
+              __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+            }
+            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":696
+ *         else:
+ *             # Check if the abort exception got suppressed
+ *             if rpc_state.abort_exception is not None:             # <<<<<<<<<<<<<<
+ *                 _LOGGER.error(
+ *                     'Abort error unexpectedly suppressed: %s',
+ */
+          }
+        }
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        goto __pyx_L15_try_end;
+        __pyx_L10_error:;
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":690
+ *         try:
+ *             await rpc_coro
+ *         except AbortError as e:             # <<<<<<<<<<<<<<
+ *             # Caught AbortError check if it is the same one
+ *             assert rpc_state.abort_exception is e, 'Abort error has been replaced!'
+ */
+        __Pyx_ErrFetch(&__pyx_t_8, &__pyx_t_10, &__pyx_t_9);
+        __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_AbortError); if (unlikely(!__pyx_t_12)) __PYX_ERR(9, 690, __pyx_L12_except_error)
+        __Pyx_GOTREF(__pyx_t_12);
+        __pyx_t_14 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_8, __pyx_t_12);
+        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+        __Pyx_ErrRestore(__pyx_t_8, __pyx_t_10, __pyx_t_9);
+        __pyx_t_8 = 0; __pyx_t_10 = 0; __pyx_t_9 = 0;
+        if (__pyx_t_14) {
+          __Pyx_AddTraceback("_cython.cygrpc._handle_exceptions", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_9, &__pyx_t_10, &__pyx_t_8) < 0) __PYX_ERR(9, 690, __pyx_L12_except_error)
+          __Pyx_XGOTREF(__pyx_t_9);
+          __Pyx_XGOTREF(__pyx_t_10);
+          __Pyx_XGOTREF(__pyx_t_8);
+          __Pyx_INCREF(__pyx_t_10);
+          __Pyx_GIVEREF(__pyx_t_10);
+          __pyx_cur_scope->__pyx_v_e = __pyx_t_10;
+          /*try:*/ {
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":692
+ *         except AbortError as e:
+ *             # Caught AbortError check if it is the same one
+ *             assert rpc_state.abort_exception is e, 'Abort error has been replaced!'             # <<<<<<<<<<<<<<
+ *             return
+ *         else:
+ */
+            #ifndef CYTHON_WITHOUT_ASSERTIONS
+            if (unlikely(__pyx_assertions_enabled())) {
+              __pyx_t_7 = (__pyx_cur_scope->__pyx_v_rpc_state->abort_exception == __pyx_cur_scope->__pyx_v_e);
+              if (unlikely(!__pyx_t_7)) {
+                __Pyx_Raise(__pyx_builtin_AssertionError, __pyx_kp_s_Abort_error_has_been_replaced, 0, 0);
+                __PYX_ERR(9, 692, __pyx_L23_error)
+              }
+            }
+            #else
+            if ((1)); else __PYX_ERR(9, 692, __pyx_L23_error)
+            #endif
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":693
+ *             # Caught AbortError check if it is the same one
+ *             assert rpc_state.abort_exception is e, 'Abort error has been replaced!'
+ *             return             # <<<<<<<<<<<<<<
+ *         else:
+ *             # Check if the abort exception got suppressed
+ */
+            __Pyx_XDECREF(__pyx_r);
+            __pyx_r = NULL;
+            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+            __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+            goto __pyx_L22_return;
+          }
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":690
+ *         try:
+ *             await rpc_coro
+ *         except AbortError as e:             # <<<<<<<<<<<<<<
+ *             # Caught AbortError check if it is the same one
+ *             assert rpc_state.abort_exception is e, 'Abort error has been replaced!'
+ */
+          /*finally:*/ {
+            __pyx_L23_error:;
+            /*exception exit:*/{
+              __Pyx_PyThreadState_assign
+              __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0;
+              __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
+              __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
+              if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22);
+              if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19) < 0)) __Pyx_ErrFetch(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
+              __Pyx_XGOTREF(__pyx_t_17);
+              __Pyx_XGOTREF(__pyx_t_18);
+              __Pyx_XGOTREF(__pyx_t_19);
+              __Pyx_XGOTREF(__pyx_t_20);
+              __Pyx_XGOTREF(__pyx_t_21);
+              __Pyx_XGOTREF(__pyx_t_22);
+              __pyx_t_14 = __pyx_lineno; __pyx_t_15 = __pyx_clineno; __pyx_t_16 = __pyx_filename;
+              {
+                __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e);
+                __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0;
+              }
+              if (PY_MAJOR_VERSION >= 3) {
+                __Pyx_XGIVEREF(__pyx_t_20);
+                __Pyx_XGIVEREF(__pyx_t_21);
+                __Pyx_XGIVEREF(__pyx_t_22);
+                __Pyx_ExceptionReset(__pyx_t_20, __pyx_t_21, __pyx_t_22);
+              }
+              __Pyx_XGIVEREF(__pyx_t_17);
+              __Pyx_XGIVEREF(__pyx_t_18);
+              __Pyx_XGIVEREF(__pyx_t_19);
+              __Pyx_ErrRestore(__pyx_t_17, __pyx_t_18, __pyx_t_19);
+              __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0;
+              __pyx_lineno = __pyx_t_14; __pyx_clineno = __pyx_t_15; __pyx_filename = __pyx_t_16;
+              goto __pyx_L12_except_error;
+            }
+            __pyx_L22_return: {
+              __Pyx_PyThreadState_assign
+              __pyx_t_22 = 0; __pyx_t_21 = 0; __pyx_t_20 = 0; __pyx_t_19 = 0; __pyx_t_18 = 0; __pyx_t_17 = 0;
+              if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_19, &__pyx_t_18, &__pyx_t_17);
+              if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_22, &__pyx_t_21, &__pyx_t_20) < 0)) __Pyx_ErrFetch(&__pyx_t_22, &__pyx_t_21, &__pyx_t_20);
+              __Pyx_XGOTREF(__pyx_t_22);
+              __Pyx_XGOTREF(__pyx_t_21);
+              __Pyx_XGOTREF(__pyx_t_20);
+              __Pyx_XGOTREF(__pyx_t_19);
+              __Pyx_XGOTREF(__pyx_t_18);
+              __Pyx_XGOTREF(__pyx_t_17);
+              __pyx_t_23 = __pyx_r;
+              __pyx_r = 0;
+              __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e);
+              __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0;
+              __pyx_r = __pyx_t_23;
+              __pyx_t_23 = 0;
+              if (PY_MAJOR_VERSION >= 3) {
+                __Pyx_XGIVEREF(__pyx_t_19);
+                __Pyx_XGIVEREF(__pyx_t_18);
+                __Pyx_XGIVEREF(__pyx_t_17);
+                __Pyx_ExceptionReset(__pyx_t_19, __pyx_t_18, __pyx_t_17);
+              }
+              __Pyx_XGIVEREF(__pyx_t_22);
+              __Pyx_XGIVEREF(__pyx_t_21);
+              __Pyx_XGIVEREF(__pyx_t_20);
+              __Pyx_ErrRestore(__pyx_t_22, __pyx_t_21, __pyx_t_20);
+              __pyx_t_22 = 0; __pyx_t_21 = 0; __pyx_t_20 = 0; __pyx_t_19 = 0; __pyx_t_18 = 0; __pyx_t_17 = 0;
+              goto __pyx_L13_except_return;
+            }
+          }
+        }
+        goto __pyx_L12_except_error;
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":688
+ * async def _handle_exceptions(RPCState rpc_state, object rpc_coro, object loop):
+ *     try:
+ *         try:             # <<<<<<<<<<<<<<
+ *             await rpc_coro
+ *         except AbortError as e:
+ */
+        __pyx_L12_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_4);
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6);
+        goto __pyx_L4_error;
+        __pyx_L13_except_return:;
+        __Pyx_XGIVEREF(__pyx_t_4);
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6);
+        goto __pyx_L8_try_return;
+        __pyx_L15_try_end:;
+      }
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":687
+ * 
+ * async def _handle_exceptions(RPCState rpc_state, object rpc_coro, object loop):
+ *     try:             # <<<<<<<<<<<<<<
+ *         try:
+ *             await rpc_coro
+ */
+    }
+    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    goto __pyx_L9_try_end;
+    __pyx_L4_error:;
+    __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+    __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
+    __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
+    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":701
+ *                     traceback.format_exception(rpc_state.abort_exception)
+ *                 )
+ *     except (KeyboardInterrupt, SystemExit):             # <<<<<<<<<<<<<<
+ *         raise
+ *     except asyncio.CancelledError:
+ */
+    __pyx_t_15 = __Pyx_PyErr_ExceptionMatches2(__pyx_builtin_KeyboardInterrupt, __pyx_builtin_SystemExit);
+    if (__pyx_t_15) {
+      __Pyx_AddTraceback("_cython.cygrpc._handle_exceptions", __pyx_clineno, __pyx_lineno, __pyx_filename);
+      if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_10, &__pyx_t_9) < 0) __PYX_ERR(9, 701, __pyx_L6_except_error)
+      __Pyx_XGOTREF(__pyx_t_8);
+      __Pyx_XGOTREF(__pyx_t_10);
+      __Pyx_XGOTREF(__pyx_t_9);
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":702
+ *                 )
+ *     except (KeyboardInterrupt, SystemExit):
+ *         raise             # <<<<<<<<<<<<<<
+ *     except asyncio.CancelledError:
+ *         _LOGGER.debug('RPC cancelled for servicer method [%s]', _decode(rpc_state.method()))
+ */
+      __Pyx_GIVEREF(__pyx_t_8);
+      __Pyx_GIVEREF(__pyx_t_10);
+      __Pyx_XGIVEREF(__pyx_t_9);
+      __Pyx_ErrRestoreWithState(__pyx_t_8, __pyx_t_10, __pyx_t_9);
+      __pyx_t_8 = 0; __pyx_t_10 = 0; __pyx_t_9 = 0; 
+      __PYX_ERR(9, 702, __pyx_L6_except_error)
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":703
+ *     except (KeyboardInterrupt, SystemExit):
+ *         raise
+ *     except asyncio.CancelledError:             # <<<<<<<<<<<<<<
+ *         _LOGGER.debug('RPC cancelled for servicer method [%s]', _decode(rpc_state.method()))
+ *     except _ServerStoppedError:
+ */
+    __Pyx_ErrFetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_8);
+    __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_asyncio); if (unlikely(!__pyx_t_12)) __PYX_ERR(9, 703, __pyx_L6_except_error)
+    __Pyx_GOTREF(__pyx_t_12);
+    __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_CancelledError); if (unlikely(!__pyx_t_11)) __PYX_ERR(9, 703, __pyx_L6_except_error)
+    __Pyx_GOTREF(__pyx_t_11);
+    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+    __pyx_t_15 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_9, __pyx_t_11);
+    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+    __Pyx_ErrRestore(__pyx_t_9, __pyx_t_10, __pyx_t_8);
+    __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_8 = 0;
+    if (__pyx_t_15) {
+      __Pyx_AddTraceback("_cython.cygrpc._handle_exceptions", __pyx_clineno, __pyx_lineno, __pyx_filename);
+      if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_10, &__pyx_t_9) < 0) __PYX_ERR(9, 703, __pyx_L6_except_error)
+      __Pyx_XGOTREF(__pyx_t_8);
+      __Pyx_XGOTREF(__pyx_t_10);
+      __Pyx_XGOTREF(__pyx_t_9);
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":704
+ *         raise
+ *     except asyncio.CancelledError:
+ *         _LOGGER.debug('RPC cancelled for servicer method [%s]', _decode(rpc_state.method()))             # <<<<<<<<<<<<<<
+ *     except _ServerStoppedError:
+ *         _LOGGER.warning('Aborting method [%s] due to server stop.', _decode(rpc_state.method()))
+ */
+      __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_LOGGER); if (unlikely(!__pyx_t_12)) __PYX_ERR(9, 704, __pyx_L6_except_error)
+      __Pyx_GOTREF(__pyx_t_12);
+      __pyx_t_24 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_debug); if (unlikely(!__pyx_t_24)) __PYX_ERR(9, 704, __pyx_L6_except_error)
+      __Pyx_GOTREF(__pyx_t_24);
+      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+      __pyx_t_12 = ((struct __pyx_vtabstruct_7_cython_6cygrpc_RPCState *)__pyx_cur_scope->__pyx_v_rpc_state->__pyx_vtab)->method(__pyx_cur_scope->__pyx_v_rpc_state); if (unlikely(!__pyx_t_12)) __PYX_ERR(9, 704, __pyx_L6_except_error)
+      __Pyx_GOTREF(__pyx_t_12);
+      __pyx_t_25 = __pyx_f_7_cython_6cygrpc__decode(((PyObject*)__pyx_t_12)); if (unlikely(!__pyx_t_25)) __PYX_ERR(9, 704, __pyx_L6_except_error)
+      __Pyx_GOTREF(__pyx_t_25);
+      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+      __pyx_t_12 = NULL;
+      __pyx_t_13 = 0;
+      #if CYTHON_UNPACK_METHODS
+      if (unlikely(PyMethod_Check(__pyx_t_24))) {
+        __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_24);
+        if (likely(__pyx_t_12)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_24);
+          __Pyx_INCREF(__pyx_t_12);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_24, function);
+          __pyx_t_13 = 1;
+        }
+      }
+      #endif
+      {
+        PyObject *__pyx_callargs[3] = {__pyx_t_12, __pyx_kp_s_RPC_cancelled_for_servicer_metho, __pyx_t_25};
+        __pyx_t_11 = __Pyx_PyObject_FastCall(__pyx_t_24, __pyx_callargs+1-__pyx_t_13, 2+__pyx_t_13);
+        __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
+        __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
+        if (unlikely(!__pyx_t_11)) __PYX_ERR(9, 704, __pyx_L6_except_error)
+        __Pyx_GOTREF(__pyx_t_11);
+        __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
+      }
+      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+      goto __pyx_L5_exception_handled;
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":705
+ *     except asyncio.CancelledError:
+ *         _LOGGER.debug('RPC cancelled for servicer method [%s]', _decode(rpc_state.method()))
+ *     except _ServerStoppedError:             # <<<<<<<<<<<<<<
+ *         _LOGGER.warning('Aborting method [%s] due to server stop.', _decode(rpc_state.method()))
+ *     except ExecuteBatchError:
+ */
+    __Pyx_ErrFetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_8);
+    __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_ServerStoppedError); if (unlikely(!__pyx_t_11)) __PYX_ERR(9, 705, __pyx_L6_except_error)
+    __Pyx_GOTREF(__pyx_t_11);
+    __pyx_t_15 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_9, __pyx_t_11);
+    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+    __Pyx_ErrRestore(__pyx_t_9, __pyx_t_10, __pyx_t_8);
+    __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_8 = 0;
+    if (__pyx_t_15) {
+      __Pyx_AddTraceback("_cython.cygrpc._handle_exceptions", __pyx_clineno, __pyx_lineno, __pyx_filename);
+      if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_10, &__pyx_t_9) < 0) __PYX_ERR(9, 705, __pyx_L6_except_error)
+      __Pyx_XGOTREF(__pyx_t_8);
+      __Pyx_XGOTREF(__pyx_t_10);
+      __Pyx_XGOTREF(__pyx_t_9);
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":706
+ *         _LOGGER.debug('RPC cancelled for servicer method [%s]', _decode(rpc_state.method()))
+ *     except _ServerStoppedError:
+ *         _LOGGER.warning('Aborting method [%s] due to server stop.', _decode(rpc_state.method()))             # <<<<<<<<<<<<<<
+ *     except ExecuteBatchError:
+ *         # If client closed (aka. cancelled), ignore the failed batch operations.
+ */
+      __Pyx_GetModuleGlobalName(__pyx_t_24, __pyx_n_s_LOGGER); if (unlikely(!__pyx_t_24)) __PYX_ERR(9, 706, __pyx_L6_except_error)
+      __Pyx_GOTREF(__pyx_t_24);
+      __pyx_t_25 = __Pyx_PyObject_GetAttrStr(__pyx_t_24, __pyx_n_s_warning); if (unlikely(!__pyx_t_25)) __PYX_ERR(9, 706, __pyx_L6_except_error)
+      __Pyx_GOTREF(__pyx_t_25);
+      __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
+      __pyx_t_24 = ((struct __pyx_vtabstruct_7_cython_6cygrpc_RPCState *)__pyx_cur_scope->__pyx_v_rpc_state->__pyx_vtab)->method(__pyx_cur_scope->__pyx_v_rpc_state); if (unlikely(!__pyx_t_24)) __PYX_ERR(9, 706, __pyx_L6_except_error)
+      __Pyx_GOTREF(__pyx_t_24);
+      __pyx_t_12 = __pyx_f_7_cython_6cygrpc__decode(((PyObject*)__pyx_t_24)); if (unlikely(!__pyx_t_12)) __PYX_ERR(9, 706, __pyx_L6_except_error)
+      __Pyx_GOTREF(__pyx_t_12);
+      __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
+      __pyx_t_24 = NULL;
+      __pyx_t_13 = 0;
+      #if CYTHON_UNPACK_METHODS
+      if (unlikely(PyMethod_Check(__pyx_t_25))) {
+        __pyx_t_24 = PyMethod_GET_SELF(__pyx_t_25);
+        if (likely(__pyx_t_24)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_25);
+          __Pyx_INCREF(__pyx_t_24);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_25, function);
+          __pyx_t_13 = 1;
+        }
+      }
+      #endif
+      {
+        PyObject *__pyx_callargs[3] = {__pyx_t_24, __pyx_kp_s_Aborting_method_s_due_to_server, __pyx_t_12};
+        __pyx_t_11 = __Pyx_PyObject_FastCall(__pyx_t_25, __pyx_callargs+1-__pyx_t_13, 2+__pyx_t_13);
+        __Pyx_XDECREF(__pyx_t_24); __pyx_t_24 = 0;
+        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+        if (unlikely(!__pyx_t_11)) __PYX_ERR(9, 706, __pyx_L6_except_error)
+        __Pyx_GOTREF(__pyx_t_11);
+        __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
+      }
+      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+      goto __pyx_L5_exception_handled;
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":707
+ *     except _ServerStoppedError:
+ *         _LOGGER.warning('Aborting method [%s] due to server stop.', _decode(rpc_state.method()))
+ *     except ExecuteBatchError:             # <<<<<<<<<<<<<<
+ *         # If client closed (aka. cancelled), ignore the failed batch operations.
+ *         if rpc_state.client_closed:
+ */
+    __Pyx_ErrFetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_8);
+    __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_ExecuteBatchError); if (unlikely(!__pyx_t_11)) __PYX_ERR(9, 707, __pyx_L6_except_error)
+    __Pyx_GOTREF(__pyx_t_11);
+    __pyx_t_15 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_9, __pyx_t_11);
+    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+    __Pyx_ErrRestore(__pyx_t_9, __pyx_t_10, __pyx_t_8);
+    __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_8 = 0;
+    if (__pyx_t_15) {
+      __Pyx_AddTraceback("_cython.cygrpc._handle_exceptions", __pyx_clineno, __pyx_lineno, __pyx_filename);
+      if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_10, &__pyx_t_9) < 0) __PYX_ERR(9, 707, __pyx_L6_except_error)
+      __Pyx_XGOTREF(__pyx_t_8);
+      __Pyx_XGOTREF(__pyx_t_10);
+      __Pyx_XGOTREF(__pyx_t_9);
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":709
+ *     except ExecuteBatchError:
+ *         # If client closed (aka. cancelled), ignore the failed batch operations.
+ *         if rpc_state.client_closed:             # <<<<<<<<<<<<<<
+ *             return
+ *         else:
+ */
+      if (__pyx_cur_scope->__pyx_v_rpc_state->client_closed) {
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":710
+ *         # If client closed (aka. cancelled), ignore the failed batch operations.
+ *         if rpc_state.client_closed:
+ *             return             # <<<<<<<<<<<<<<
+ *         else:
+ *             _LOGGER.exception('ExecuteBatchError raised in core by servicer method [%s]' % (
+ */
+        __Pyx_XDECREF(__pyx_r);
+        __pyx_r = NULL;
+        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+        goto __pyx_L7_except_return;
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":709
+ *     except ExecuteBatchError:
+ *         # If client closed (aka. cancelled), ignore the failed batch operations.
+ *         if rpc_state.client_closed:             # <<<<<<<<<<<<<<
+ *             return
+ *         else:
+ */
+      }
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":712
+ *             return
+ *         else:
+ *             _LOGGER.exception('ExecuteBatchError raised in core by servicer method [%s]' % (             # <<<<<<<<<<<<<<
+ *                 _decode(rpc_state.method())))
+ *             return
+ */
+      /*else*/ {
+        __Pyx_GetModuleGlobalName(__pyx_t_25, __pyx_n_s_LOGGER); if (unlikely(!__pyx_t_25)) __PYX_ERR(9, 712, __pyx_L6_except_error)
+        __Pyx_GOTREF(__pyx_t_25);
+        __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_25, __pyx_n_s_exception); if (unlikely(!__pyx_t_12)) __PYX_ERR(9, 712, __pyx_L6_except_error)
+        __Pyx_GOTREF(__pyx_t_12);
+        __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":713
+ *         else:
+ *             _LOGGER.exception('ExecuteBatchError raised in core by servicer method [%s]' % (
+ *                 _decode(rpc_state.method())))             # <<<<<<<<<<<<<<
+ *             return
+ *     except Exception as e:
+ */
+        __pyx_t_25 = ((struct __pyx_vtabstruct_7_cython_6cygrpc_RPCState *)__pyx_cur_scope->__pyx_v_rpc_state->__pyx_vtab)->method(__pyx_cur_scope->__pyx_v_rpc_state); if (unlikely(!__pyx_t_25)) __PYX_ERR(9, 713, __pyx_L6_except_error)
+        __Pyx_GOTREF(__pyx_t_25);
+        __pyx_t_24 = __pyx_f_7_cython_6cygrpc__decode(((PyObject*)__pyx_t_25)); if (unlikely(!__pyx_t_24)) __PYX_ERR(9, 713, __pyx_L6_except_error)
+        __Pyx_GOTREF(__pyx_t_24);
+        __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":712
+ *             return
+ *         else:
+ *             _LOGGER.exception('ExecuteBatchError raised in core by servicer method [%s]' % (             # <<<<<<<<<<<<<<
+ *                 _decode(rpc_state.method())))
+ *             return
+ */
+        __pyx_t_25 = __Pyx_PyString_Format(__pyx_kp_s_ExecuteBatchError_raised_in_core, __pyx_t_24); if (unlikely(!__pyx_t_25)) __PYX_ERR(9, 712, __pyx_L6_except_error)
+        __Pyx_GOTREF(__pyx_t_25);
+        __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
+        __pyx_t_24 = NULL;
+        __pyx_t_13 = 0;
+        #if CYTHON_UNPACK_METHODS
+        if (unlikely(PyMethod_Check(__pyx_t_12))) {
+          __pyx_t_24 = PyMethod_GET_SELF(__pyx_t_12);
+          if (likely(__pyx_t_24)) {
+            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
+            __Pyx_INCREF(__pyx_t_24);
+            __Pyx_INCREF(function);
+            __Pyx_DECREF_SET(__pyx_t_12, function);
+            __pyx_t_13 = 1;
+          }
+        }
+        #endif
+        {
+          PyObject *__pyx_callargs[2] = {__pyx_t_24, __pyx_t_25};
+          __pyx_t_11 = __Pyx_PyObject_FastCall(__pyx_t_12, __pyx_callargs+1-__pyx_t_13, 1+__pyx_t_13);
+          __Pyx_XDECREF(__pyx_t_24); __pyx_t_24 = 0;
+          __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
+          if (unlikely(!__pyx_t_11)) __PYX_ERR(9, 712, __pyx_L6_except_error)
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+        }
+        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":714
+ *             _LOGGER.exception('ExecuteBatchError raised in core by servicer method [%s]' % (
+ *                 _decode(rpc_state.method())))
+ *             return             # <<<<<<<<<<<<<<
+ *     except Exception as e:
+ *         _LOGGER.exception('Unexpected [%s] raised by servicer method [%s]' % (
+ */
+        __Pyx_XDECREF(__pyx_r);
+        __pyx_r = NULL;
+        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+        goto __pyx_L7_except_return;
+      }
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":715
+ *                 _decode(rpc_state.method())))
+ *             return
+ *     except Exception as e:             # <<<<<<<<<<<<<<
+ *         _LOGGER.exception('Unexpected [%s] raised by servicer method [%s]' % (
+ *             type(e).__name__,
+ */
+    __pyx_t_15 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
+    if (__pyx_t_15) {
+      __Pyx_AddTraceback("_cython.cygrpc._handle_exceptions", __pyx_clineno, __pyx_lineno, __pyx_filename);
+      if (__Pyx_GetException(&__pyx_t_9, &__pyx_t_10, &__pyx_t_8) < 0) __PYX_ERR(9, 715, __pyx_L6_except_error)
+      __Pyx_XGOTREF(__pyx_t_9);
+      __Pyx_XGOTREF(__pyx_t_10);
+      __Pyx_XGOTREF(__pyx_t_8);
+      __Pyx_INCREF(__pyx_t_10);
+      __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_e);
+      __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_e, __pyx_t_10);
+      __Pyx_GIVEREF(__pyx_t_10);
+      /*try:*/ {
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":716
+ *             return
+ *     except Exception as e:
+ *         _LOGGER.exception('Unexpected [%s] raised by servicer method [%s]' % (             # <<<<<<<<<<<<<<
+ *             type(e).__name__,
+ *             _decode(rpc_state.method()),
+ */
+        __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_LOGGER); if (unlikely(!__pyx_t_12)) __PYX_ERR(9, 716, __pyx_L43_error)
+        __Pyx_GOTREF(__pyx_t_12);
+        __pyx_t_25 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_exception); if (unlikely(!__pyx_t_25)) __PYX_ERR(9, 716, __pyx_L43_error)
+        __Pyx_GOTREF(__pyx_t_25);
+        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":717
+ *     except Exception as e:
+ *         _LOGGER.exception('Unexpected [%s] raised by servicer method [%s]' % (
+ *             type(e).__name__,             # <<<<<<<<<<<<<<
+ *             _decode(rpc_state.method()),
+ *         ))
+ */
+        __pyx_t_12 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_cur_scope->__pyx_v_e)), __pyx_n_s_name_2); if (unlikely(!__pyx_t_12)) __PYX_ERR(9, 717, __pyx_L43_error)
+        __Pyx_GOTREF(__pyx_t_12);
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":718
+ *         _LOGGER.exception('Unexpected [%s] raised by servicer method [%s]' % (
+ *             type(e).__name__,
+ *             _decode(rpc_state.method()),             # <<<<<<<<<<<<<<
+ *         ))
+ *         if not rpc_state.status_sent and rpc_state.server._status != AIO_SERVER_STATUS_STOPPED:
+ */
+        __pyx_t_24 = ((struct __pyx_vtabstruct_7_cython_6cygrpc_RPCState *)__pyx_cur_scope->__pyx_v_rpc_state->__pyx_vtab)->method(__pyx_cur_scope->__pyx_v_rpc_state); if (unlikely(!__pyx_t_24)) __PYX_ERR(9, 718, __pyx_L43_error)
+        __Pyx_GOTREF(__pyx_t_24);
+        __pyx_t_26 = __pyx_f_7_cython_6cygrpc__decode(((PyObject*)__pyx_t_24)); if (unlikely(!__pyx_t_26)) __PYX_ERR(9, 718, __pyx_L43_error)
+        __Pyx_GOTREF(__pyx_t_26);
+        __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":717
+ *     except Exception as e:
+ *         _LOGGER.exception('Unexpected [%s] raised by servicer method [%s]' % (
+ *             type(e).__name__,             # <<<<<<<<<<<<<<
+ *             _decode(rpc_state.method()),
+ *         ))
+ */
+        __pyx_t_24 = PyTuple_New(2); if (unlikely(!__pyx_t_24)) __PYX_ERR(9, 717, __pyx_L43_error)
+        __Pyx_GOTREF(__pyx_t_24);
+        __Pyx_GIVEREF(__pyx_t_12);
+        if (__Pyx_PyTuple_SET_ITEM(__pyx_t_24, 0, __pyx_t_12)) __PYX_ERR(9, 717, __pyx_L43_error);
+        __Pyx_GIVEREF(__pyx_t_26);
+        if (__Pyx_PyTuple_SET_ITEM(__pyx_t_24, 1, __pyx_t_26)) __PYX_ERR(9, 717, __pyx_L43_error);
+        __pyx_t_12 = 0;
+        __pyx_t_26 = 0;
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":716
+ *             return
+ *     except Exception as e:
+ *         _LOGGER.exception('Unexpected [%s] raised by servicer method [%s]' % (             # <<<<<<<<<<<<<<
+ *             type(e).__name__,
+ *             _decode(rpc_state.method()),
+ */
+        __pyx_t_26 = __Pyx_PyString_Format(__pyx_kp_s_Unexpected_s_raised_by_servicer, __pyx_t_24); if (unlikely(!__pyx_t_26)) __PYX_ERR(9, 716, __pyx_L43_error)
+        __Pyx_GOTREF(__pyx_t_26);
+        __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
+        __pyx_t_24 = NULL;
+        __pyx_t_13 = 0;
+        #if CYTHON_UNPACK_METHODS
+        if (unlikely(PyMethod_Check(__pyx_t_25))) {
+          __pyx_t_24 = PyMethod_GET_SELF(__pyx_t_25);
+          if (likely(__pyx_t_24)) {
+            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_25);
+            __Pyx_INCREF(__pyx_t_24);
+            __Pyx_INCREF(function);
+            __Pyx_DECREF_SET(__pyx_t_25, function);
+            __pyx_t_13 = 1;
+          }
+        }
+        #endif
+        {
+          PyObject *__pyx_callargs[2] = {__pyx_t_24, __pyx_t_26};
+          __pyx_t_11 = __Pyx_PyObject_FastCall(__pyx_t_25, __pyx_callargs+1-__pyx_t_13, 1+__pyx_t_13);
+          __Pyx_XDECREF(__pyx_t_24); __pyx_t_24 = 0;
+          __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
+          if (unlikely(!__pyx_t_11)) __PYX_ERR(9, 716, __pyx_L43_error)
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
+        }
+        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":720
+ *             _decode(rpc_state.method()),
+ *         ))
+ *         if not rpc_state.status_sent and rpc_state.server._status != AIO_SERVER_STATUS_STOPPED:             # <<<<<<<<<<<<<<
+ *             # Allows users to raise other types of exception with specified status code
+ *             if rpc_state.status_code == StatusCode.ok:
+ */
+        __pyx_t_27 = (!__pyx_cur_scope->__pyx_v_rpc_state->status_sent);
+        if (__pyx_t_27) {
+        } else {
+          __pyx_t_7 = __pyx_t_27;
+          goto __pyx_L46_bool_binop_done;
+        }
+        __pyx_t_27 = (__pyx_cur_scope->__pyx_v_rpc_state->server->_status != __pyx_e_7_cython_6cygrpc_AIO_SERVER_STATUS_STOPPED);
+        __pyx_t_7 = __pyx_t_27;
+        __pyx_L46_bool_binop_done:;
+        if (__pyx_t_7) {
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":722
+ *         if not rpc_state.status_sent and rpc_state.server._status != AIO_SERVER_STATUS_STOPPED:
+ *             # Allows users to raise other types of exception with specified status code
+ *             if rpc_state.status_code == StatusCode.ok:             # <<<<<<<<<<<<<<
+ *                 status_code = StatusCode.unknown
+ *             else:
+ */
+          __pyx_t_11 = __Pyx_PyInt_From_grpc_status_code(__pyx_cur_scope->__pyx_v_rpc_state->status_code); if (unlikely(!__pyx_t_11)) __PYX_ERR(9, 722, __pyx_L43_error)
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_GetModuleGlobalName(__pyx_t_25, __pyx_n_s_StatusCode); if (unlikely(!__pyx_t_25)) __PYX_ERR(9, 722, __pyx_L43_error)
+          __Pyx_GOTREF(__pyx_t_25);
+          __pyx_t_26 = __Pyx_PyObject_GetAttrStr(__pyx_t_25, __pyx_n_s_ok); if (unlikely(!__pyx_t_26)) __PYX_ERR(9, 722, __pyx_L43_error)
+          __Pyx_GOTREF(__pyx_t_26);
+          __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
+          __pyx_t_25 = PyObject_RichCompare(__pyx_t_11, __pyx_t_26, Py_EQ); __Pyx_XGOTREF(__pyx_t_25); if (unlikely(!__pyx_t_25)) __PYX_ERR(9, 722, __pyx_L43_error)
+          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
+          __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_25); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(9, 722, __pyx_L43_error)
+          __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
+          if (__pyx_t_7) {
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":723
+ *             # Allows users to raise other types of exception with specified status code
+ *             if rpc_state.status_code == StatusCode.ok:
+ *                 status_code = StatusCode.unknown             # <<<<<<<<<<<<<<
+ *             else:
+ *                 status_code = rpc_state.status_code
+ */
+            __Pyx_GetModuleGlobalName(__pyx_t_25, __pyx_n_s_StatusCode); if (unlikely(!__pyx_t_25)) __PYX_ERR(9, 723, __pyx_L43_error)
+            __Pyx_GOTREF(__pyx_t_25);
+            __pyx_t_26 = __Pyx_PyObject_GetAttrStr(__pyx_t_25, __pyx_n_s_unknown); if (unlikely(!__pyx_t_26)) __PYX_ERR(9, 723, __pyx_L43_error)
+            __Pyx_GOTREF(__pyx_t_26);
+            __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
+            __Pyx_GIVEREF(__pyx_t_26);
+            __pyx_cur_scope->__pyx_v_status_code = __pyx_t_26;
+            __pyx_t_26 = 0;
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":722
+ *         if not rpc_state.status_sent and rpc_state.server._status != AIO_SERVER_STATUS_STOPPED:
+ *             # Allows users to raise other types of exception with specified status code
+ *             if rpc_state.status_code == StatusCode.ok:             # <<<<<<<<<<<<<<
+ *                 status_code = StatusCode.unknown
+ *             else:
+ */
+            goto __pyx_L48;
+          }
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":725
+ *                 status_code = StatusCode.unknown
+ *             else:
+ *                 status_code = rpc_state.status_code             # <<<<<<<<<<<<<<
+ * 
+ *             rpc_state.status_sent = True
+ */
+          /*else*/ {
+            __pyx_t_26 = __Pyx_PyInt_From_grpc_status_code(__pyx_cur_scope->__pyx_v_rpc_state->status_code); if (unlikely(!__pyx_t_26)) __PYX_ERR(9, 725, __pyx_L43_error)
+            __Pyx_GOTREF(__pyx_t_26);
+            __Pyx_GIVEREF(__pyx_t_26);
+            __pyx_cur_scope->__pyx_v_status_code = __pyx_t_26;
+            __pyx_t_26 = 0;
+          }
+          __pyx_L48:;
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":727
+ *                 status_code = rpc_state.status_code
+ * 
+ *             rpc_state.status_sent = True             # <<<<<<<<<<<<<<
+ *             try:
+ *                 await _send_error_status_from_server(
+ */
+          __pyx_cur_scope->__pyx_v_rpc_state->status_sent = 1;
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":728
+ * 
+ *             rpc_state.status_sent = True
+ *             try:             # <<<<<<<<<<<<<<
+ *                 await _send_error_status_from_server(
+ *                     rpc_state,
+ */
+          {
+            __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_5, &__pyx_t_4);
+            __Pyx_XGOTREF(__pyx_t_6);
+            __Pyx_XGOTREF(__pyx_t_5);
+            __Pyx_XGOTREF(__pyx_t_4);
+            /*try:*/ {
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":729
+ *             rpc_state.status_sent = True
+ *             try:
+ *                 await _send_error_status_from_server(             # <<<<<<<<<<<<<<
+ *                     rpc_state,
+ *                     status_code,
+ */
+              __Pyx_GetModuleGlobalName(__pyx_t_25, __pyx_n_s_send_error_status_from_server); if (unlikely(!__pyx_t_25)) __PYX_ERR(9, 729, __pyx_L49_error)
+              __Pyx_GOTREF(__pyx_t_25);
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":732
+ *                     rpc_state,
+ *                     status_code,
+ *                     'Unexpected %s: %s' % (type(e), e),             # <<<<<<<<<<<<<<
+ *                     rpc_state.trailing_metadata,
+ *                     rpc_state.create_send_initial_metadata_op_if_not_sent(),
+ */
+              __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(9, 732, __pyx_L49_error)
+              __Pyx_GOTREF(__pyx_t_11);
+              __Pyx_INCREF(((PyObject *)Py_TYPE(__pyx_cur_scope->__pyx_v_e)));
+              __Pyx_GIVEREF(((PyObject *)Py_TYPE(__pyx_cur_scope->__pyx_v_e)));
+              if (__Pyx_PyTuple_SET_ITEM(__pyx_t_11, 0, ((PyObject *)Py_TYPE(__pyx_cur_scope->__pyx_v_e)))) __PYX_ERR(9, 732, __pyx_L49_error);
+              __Pyx_INCREF(__pyx_cur_scope->__pyx_v_e);
+              __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_e);
+              if (__Pyx_PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_cur_scope->__pyx_v_e)) __PYX_ERR(9, 732, __pyx_L49_error);
+              __pyx_t_24 = __Pyx_PyString_Format(__pyx_kp_s_Unexpected_s_s, __pyx_t_11); if (unlikely(!__pyx_t_24)) __PYX_ERR(9, 732, __pyx_L49_error)
+              __Pyx_GOTREF(__pyx_t_24);
+              __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":734
+ *                     'Unexpected %s: %s' % (type(e), e),
+ *                     rpc_state.trailing_metadata,
+ *                     rpc_state.create_send_initial_metadata_op_if_not_sent(),             # <<<<<<<<<<<<<<
+ *                     loop
+ *                 )
+ */
+              __pyx_t_11 = ((PyObject *)((struct __pyx_vtabstruct_7_cython_6cygrpc_RPCState *)__pyx_cur_scope->__pyx_v_rpc_state->__pyx_vtab)->create_send_initial_metadata_op_if_not_sent(__pyx_cur_scope->__pyx_v_rpc_state)); if (unlikely(!__pyx_t_11)) __PYX_ERR(9, 734, __pyx_L49_error)
+              __Pyx_GOTREF(__pyx_t_11);
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":735
+ *                     rpc_state.trailing_metadata,
+ *                     rpc_state.create_send_initial_metadata_op_if_not_sent(),
+ *                     loop             # <<<<<<<<<<<<<<
+ *                 )
+ *             except ExecuteBatchError:
+ */
+              __pyx_t_12 = NULL;
+              __pyx_t_13 = 0;
+              #if CYTHON_UNPACK_METHODS
+              if (unlikely(PyMethod_Check(__pyx_t_25))) {
+                __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_25);
+                if (likely(__pyx_t_12)) {
+                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_25);
+                  __Pyx_INCREF(__pyx_t_12);
+                  __Pyx_INCREF(function);
+                  __Pyx_DECREF_SET(__pyx_t_25, function);
+                  __pyx_t_13 = 1;
+                }
+              }
+              #endif
+              {
+                PyObject *__pyx_callargs[7] = {__pyx_t_12, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state), __pyx_cur_scope->__pyx_v_status_code, __pyx_t_24, __pyx_cur_scope->__pyx_v_rpc_state->trailing_metadata, __pyx_t_11, __pyx_cur_scope->__pyx_v_loop};
+                __pyx_t_26 = __Pyx_PyObject_FastCall(__pyx_t_25, __pyx_callargs+1-__pyx_t_13, 6+__pyx_t_13);
+                __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
+                __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
+                __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+                if (unlikely(!__pyx_t_26)) __PYX_ERR(9, 729, __pyx_L49_error)
+                __Pyx_GOTREF(__pyx_t_26);
+                __Pyx_DECREF(__pyx_t_25); __pyx_t_25 = 0;
+              }
+              __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_26);
+              __Pyx_DECREF(__pyx_t_26); __pyx_t_26 = 0;
+              __Pyx_XGOTREF(__pyx_r);
+              if (likely(__pyx_r)) {
+                __Pyx_XGIVEREF(__pyx_t_1);
+                __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
+                __Pyx_XGIVEREF(__pyx_t_2);
+                __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
+                __Pyx_XGIVEREF(__pyx_t_3);
+                __pyx_cur_scope->__pyx_t_2 = __pyx_t_3;
+                __Pyx_XGIVEREF(__pyx_t_4);
+                __pyx_cur_scope->__pyx_t_3 = __pyx_t_4;
+                __Pyx_XGIVEREF(__pyx_t_5);
+                __pyx_cur_scope->__pyx_t_4 = __pyx_t_5;
+                __Pyx_XGIVEREF(__pyx_t_6);
+                __pyx_cur_scope->__pyx_t_5 = __pyx_t_6;
+                __Pyx_XGIVEREF(__pyx_t_8);
+                __pyx_cur_scope->__pyx_t_6 = __pyx_t_8;
+                __Pyx_XGIVEREF(__pyx_t_9);
+                __pyx_cur_scope->__pyx_t_7 = __pyx_t_9;
+                __Pyx_XGIVEREF(__pyx_t_10);
+                __pyx_cur_scope->__pyx_t_8 = __pyx_t_10;
+                __Pyx_XGIVEREF(__pyx_r);
+                __Pyx_RefNannyFinishContext();
+                __Pyx_Coroutine_SwapException(__pyx_generator);
+                /* return from generator, awaiting value */
+                __pyx_generator->resume_label = 2;
+                return __pyx_r;
+                __pyx_L57_resume_from_await:;
+                __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
+                __pyx_cur_scope->__pyx_t_0 = 0;
+                __Pyx_XGOTREF(__pyx_t_1);
+                __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
+                __pyx_cur_scope->__pyx_t_1 = 0;
+                __Pyx_XGOTREF(__pyx_t_2);
+                __pyx_t_3 = __pyx_cur_scope->__pyx_t_2;
+                __pyx_cur_scope->__pyx_t_2 = 0;
+                __Pyx_XGOTREF(__pyx_t_3);
+                __pyx_t_4 = __pyx_cur_scope->__pyx_t_3;
+                __pyx_cur_scope->__pyx_t_3 = 0;
+                __Pyx_XGOTREF(__pyx_t_4);
+                __pyx_t_5 = __pyx_cur_scope->__pyx_t_4;
+                __pyx_cur_scope->__pyx_t_4 = 0;
+                __Pyx_XGOTREF(__pyx_t_5);
+                __pyx_t_6 = __pyx_cur_scope->__pyx_t_5;
+                __pyx_cur_scope->__pyx_t_5 = 0;
+                __Pyx_XGOTREF(__pyx_t_6);
+                __pyx_t_8 = __pyx_cur_scope->__pyx_t_6;
+                __pyx_cur_scope->__pyx_t_6 = 0;
+                __Pyx_XGOTREF(__pyx_t_8);
+                __pyx_t_9 = __pyx_cur_scope->__pyx_t_7;
+                __pyx_cur_scope->__pyx_t_7 = 0;
+                __Pyx_XGOTREF(__pyx_t_9);
+                __pyx_t_10 = __pyx_cur_scope->__pyx_t_8;
+                __pyx_cur_scope->__pyx_t_8 = 0;
+                __Pyx_XGOTREF(__pyx_t_10);
+                if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 729, __pyx_L49_error)
+              } else {
+                PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType();
+                if (exc_type) {
+                  if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
+                  else __PYX_ERR(9, 729, __pyx_L49_error)
+                }
+              }
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":728
+ * 
+ *             rpc_state.status_sent = True
+ *             try:             # <<<<<<<<<<<<<<
+ *                 await _send_error_status_from_server(
+ *                     rpc_state,
+ */
+            }
+            __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+            __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+            __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+            goto __pyx_L56_try_end;
+            __pyx_L49_error:;
+            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
+            __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
+            __Pyx_XDECREF(__pyx_t_24); __pyx_t_24 = 0;
+            __Pyx_XDECREF(__pyx_t_25); __pyx_t_25 = 0;
+            __Pyx_XDECREF(__pyx_t_26); __pyx_t_26 = 0;
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":737
+ *                     loop
+ *                 )
+ *             except ExecuteBatchError:             # <<<<<<<<<<<<<<
+ *                 _LOGGER.exception('Failed sending error status from server')
+ *                 traceback.print_exc()
+ */
+            __Pyx_ErrFetch(&__pyx_t_26, &__pyx_t_25, &__pyx_t_11);
+            __Pyx_GetModuleGlobalName(__pyx_t_24, __pyx_n_s_ExecuteBatchError); if (unlikely(!__pyx_t_24)) __PYX_ERR(9, 737, __pyx_L51_except_error)
+            __Pyx_GOTREF(__pyx_t_24);
+            __pyx_t_15 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_26, __pyx_t_24);
+            __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
+            __Pyx_ErrRestore(__pyx_t_26, __pyx_t_25, __pyx_t_11);
+            __pyx_t_26 = 0; __pyx_t_25 = 0; __pyx_t_11 = 0;
+            if (__pyx_t_15) {
+              __Pyx_AddTraceback("_cython.cygrpc._handle_exceptions", __pyx_clineno, __pyx_lineno, __pyx_filename);
+              if (__Pyx_GetException(&__pyx_t_11, &__pyx_t_25, &__pyx_t_26) < 0) __PYX_ERR(9, 737, __pyx_L51_except_error)
+              __Pyx_XGOTREF(__pyx_t_11);
+              __Pyx_XGOTREF(__pyx_t_25);
+              __Pyx_XGOTREF(__pyx_t_26);
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":738
+ *                 )
+ *             except ExecuteBatchError:
+ *                 _LOGGER.exception('Failed sending error status from server')             # <<<<<<<<<<<<<<
+ *                 traceback.print_exc()
+ * 
+ */
+              __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_LOGGER); if (unlikely(!__pyx_t_12)) __PYX_ERR(9, 738, __pyx_L51_except_error)
+              __Pyx_GOTREF(__pyx_t_12);
+              __pyx_t_28 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_exception); if (unlikely(!__pyx_t_28)) __PYX_ERR(9, 738, __pyx_L51_except_error)
+              __Pyx_GOTREF(__pyx_t_28);
+              __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+              __pyx_t_12 = NULL;
+              __pyx_t_13 = 0;
+              #if CYTHON_UNPACK_METHODS
+              if (unlikely(PyMethod_Check(__pyx_t_28))) {
+                __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_28);
+                if (likely(__pyx_t_12)) {
+                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_28);
+                  __Pyx_INCREF(__pyx_t_12);
+                  __Pyx_INCREF(function);
+                  __Pyx_DECREF_SET(__pyx_t_28, function);
+                  __pyx_t_13 = 1;
+                }
+              }
+              #endif
+              {
+                PyObject *__pyx_callargs[2] = {__pyx_t_12, __pyx_kp_s_Failed_sending_error_status_from};
+                __pyx_t_24 = __Pyx_PyObject_FastCall(__pyx_t_28, __pyx_callargs+1-__pyx_t_13, 1+__pyx_t_13);
+                __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
+                if (unlikely(!__pyx_t_24)) __PYX_ERR(9, 738, __pyx_L51_except_error)
+                __Pyx_GOTREF(__pyx_t_24);
+                __Pyx_DECREF(__pyx_t_28); __pyx_t_28 = 0;
+              }
+              __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
+
+              /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":739
+ *             except ExecuteBatchError:
+ *                 _LOGGER.exception('Failed sending error status from server')
+ *                 traceback.print_exc()             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+              __Pyx_GetModuleGlobalName(__pyx_t_28, __pyx_n_s_traceback); if (unlikely(!__pyx_t_28)) __PYX_ERR(9, 739, __pyx_L51_except_error)
+              __Pyx_GOTREF(__pyx_t_28);
+              __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_28, __pyx_n_s_print_exc); if (unlikely(!__pyx_t_12)) __PYX_ERR(9, 739, __pyx_L51_except_error)
+              __Pyx_GOTREF(__pyx_t_12);
+              __Pyx_DECREF(__pyx_t_28); __pyx_t_28 = 0;
+              __pyx_t_28 = NULL;
+              __pyx_t_13 = 0;
+              #if CYTHON_UNPACK_METHODS
+              if (unlikely(PyMethod_Check(__pyx_t_12))) {
+                __pyx_t_28 = PyMethod_GET_SELF(__pyx_t_12);
+                if (likely(__pyx_t_28)) {
+                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
+                  __Pyx_INCREF(__pyx_t_28);
+                  __Pyx_INCREF(function);
+                  __Pyx_DECREF_SET(__pyx_t_12, function);
+                  __pyx_t_13 = 1;
+                }
+              }
+              #endif
+              {
+                PyObject *__pyx_callargs[2] = {__pyx_t_28, NULL};
+                __pyx_t_24 = __Pyx_PyObject_FastCall(__pyx_t_12, __pyx_callargs+1-__pyx_t_13, 0+__pyx_t_13);
+                __Pyx_XDECREF(__pyx_t_28); __pyx_t_28 = 0;
+                if (unlikely(!__pyx_t_24)) __PYX_ERR(9, 739, __pyx_L51_except_error)
+                __Pyx_GOTREF(__pyx_t_24);
+                __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+              }
+              __Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
+              __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
+              __Pyx_XDECREF(__pyx_t_25); __pyx_t_25 = 0;
+              __Pyx_XDECREF(__pyx_t_26); __pyx_t_26 = 0;
+              goto __pyx_L50_exception_handled;
+            }
+            goto __pyx_L51_except_error;
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":728
+ * 
+ *             rpc_state.status_sent = True
+ *             try:             # <<<<<<<<<<<<<<
+ *                 await _send_error_status_from_server(
+ *                     rpc_state,
+ */
+            __pyx_L51_except_error:;
+            __Pyx_XGIVEREF(__pyx_t_6);
+            __Pyx_XGIVEREF(__pyx_t_5);
+            __Pyx_XGIVEREF(__pyx_t_4);
+            __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_5, __pyx_t_4);
+            goto __pyx_L43_error;
+            __pyx_L50_exception_handled:;
+            __Pyx_XGIVEREF(__pyx_t_6);
+            __Pyx_XGIVEREF(__pyx_t_5);
+            __Pyx_XGIVEREF(__pyx_t_4);
+            __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_5, __pyx_t_4);
+            __pyx_L56_try_end:;
+          }
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":720
+ *             _decode(rpc_state.method()),
+ *         ))
+ *         if not rpc_state.status_sent and rpc_state.server._status != AIO_SERVER_STATUS_STOPPED:             # <<<<<<<<<<<<<<
+ *             # Allows users to raise other types of exception with specified status code
+ *             if rpc_state.status_code == StatusCode.ok:
+ */
+        }
+      }
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":715
+ *                 _decode(rpc_state.method())))
+ *             return
+ *     except Exception as e:             # <<<<<<<<<<<<<<
+ *         _LOGGER.exception('Unexpected [%s] raised by servicer method [%s]' % (
+ *             type(e).__name__,
+ */
+      /*finally:*/ {
+        /*normal exit:*/{
+          __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e);
+          __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0;
+          goto __pyx_L44;
+        }
+        __pyx_L43_error:;
+        /*exception exit:*/{
+          __Pyx_PyThreadState_assign
+          __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_6 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0;
+          __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
+          __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
+          __Pyx_XDECREF(__pyx_t_24); __pyx_t_24 = 0;
+          __Pyx_XDECREF(__pyx_t_25); __pyx_t_25 = 0;
+          __Pyx_XDECREF(__pyx_t_26); __pyx_t_26 = 0;
+          __Pyx_XDECREF(__pyx_t_28); __pyx_t_28 = 0;
+          if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
+          if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6) < 0)) __Pyx_ErrFetch(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6);
+          __Pyx_XGOTREF(__pyx_t_4);
+          __Pyx_XGOTREF(__pyx_t_5);
+          __Pyx_XGOTREF(__pyx_t_6);
+          __Pyx_XGOTREF(__pyx_t_17);
+          __Pyx_XGOTREF(__pyx_t_18);
+          __Pyx_XGOTREF(__pyx_t_19);
+          __pyx_t_15 = __pyx_lineno; __pyx_t_14 = __pyx_clineno; __pyx_t_29 = __pyx_filename;
+          {
+            __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e);
+            __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0;
+          }
+          if (PY_MAJOR_VERSION >= 3) {
+            __Pyx_XGIVEREF(__pyx_t_17);
+            __Pyx_XGIVEREF(__pyx_t_18);
+            __Pyx_XGIVEREF(__pyx_t_19);
+            __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19);
+          }
+          __Pyx_XGIVEREF(__pyx_t_4);
+          __Pyx_XGIVEREF(__pyx_t_5);
+          __Pyx_XGIVEREF(__pyx_t_6);
+          __Pyx_ErrRestore(__pyx_t_4, __pyx_t_5, __pyx_t_6);
+          __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_6 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0;
+          __pyx_lineno = __pyx_t_15; __pyx_clineno = __pyx_t_14; __pyx_filename = __pyx_t_29;
+          goto __pyx_L6_except_error;
+        }
+        __pyx_L44:;
+      }
+      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+      goto __pyx_L5_exception_handled;
+    }
+    goto __pyx_L6_except_error;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":687
+ * 
+ * async def _handle_exceptions(RPCState rpc_state, object rpc_coro, object loop):
+ *     try:             # <<<<<<<<<<<<<<
+ *         try:
+ *             await rpc_coro
+ */
+    __pyx_L6_except_error:;
+    __Pyx_XGIVEREF(__pyx_t_1);
+    __Pyx_XGIVEREF(__pyx_t_2);
+    __Pyx_XGIVEREF(__pyx_t_3);
+    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+    goto __pyx_L1_error;
+    __pyx_L8_try_return:;
+    __Pyx_XGIVEREF(__pyx_t_1);
+    __Pyx_XGIVEREF(__pyx_t_2);
+    __Pyx_XGIVEREF(__pyx_t_3);
+    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+    goto __pyx_L0;
+    __pyx_L7_except_return:;
+    __Pyx_XGIVEREF(__pyx_t_1);
+    __Pyx_XGIVEREF(__pyx_t_2);
+    __Pyx_XGIVEREF(__pyx_t_3);
+    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+    goto __pyx_L0;
+    __pyx_L5_exception_handled:;
+    __Pyx_XGIVEREF(__pyx_t_1);
+    __Pyx_XGIVEREF(__pyx_t_2);
+    __Pyx_XGIVEREF(__pyx_t_3);
+    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+    __pyx_L9_try_end:;
+  }
+  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":686
+ * 
+ * 
+ * async def _handle_exceptions(RPCState rpc_state, object rpc_coro, object loop):             # <<<<<<<<<<<<<<
+ *     try:
+ *         try:
+ */
+
+  /* function exit code */
+  PyErr_SetNone(PyExc_StopIteration);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_Generator_Replace_StopIteration(0);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_XDECREF(__pyx_t_12);
+  __Pyx_XDECREF(__pyx_t_24);
+  __Pyx_XDECREF(__pyx_t_25);
+  __Pyx_XDECREF(__pyx_t_26);
+  __Pyx_XDECREF(__pyx_t_28);
+  __Pyx_AddTraceback("_handle_exceptions", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
+  #if !CYTHON_USE_EXC_INFO_STACK
+  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+  #endif
+  __pyx_generator->resume_label = -1;
+  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":744
+ * cdef _add_callback_handler(object rpc_task, RPCState rpc_state):
+ * 
+ *     def handle_callbacks(object unused_task):             # <<<<<<<<<<<<<<
+ *         try:
+ *             for callback in rpc_state.callbacks:
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_21_add_callback_handler_1handle_callbacks(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_21_add_callback_handler_1handle_callbacks = {"handle_callbacks", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_21_add_callback_handler_1handle_callbacks, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_21_add_callback_handler_1handle_callbacks(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
+) {
+  CYTHON_UNUSED PyObject *__pyx_v_unused_task = 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("handle_callbacks (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_unused_task,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_unused_task)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 744, __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, "handle_callbacks") < 0)) __PYX_ERR(9, 744, __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_unused_task = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("handle_callbacks", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 744, __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("_cython.cygrpc._add_callback_handler.handle_callbacks", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_21_add_callback_handler_handle_callbacks(__pyx_self, __pyx_v_unused_task);
+
+  /* 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_7_cython_6cygrpc_21_add_callback_handler_handle_callbacks(PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_unused_task) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler *__pyx_cur_scope;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler *__pyx_outer_scope;
+  PyObject *__pyx_v_callback = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  Py_ssize_t __pyx_t_5;
+  PyObject *(*__pyx_t_6)(PyObject *);
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
+  PyObject *__pyx_t_9 = NULL;
+  unsigned int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  PyObject *__pyx_t_13 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("handle_callbacks", 1);
+  __pyx_outer_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler *) __Pyx_CyFunction_GetClosure(__pyx_self);
+  __pyx_cur_scope = __pyx_outer_scope;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":745
+ * 
+ *     def handle_callbacks(object unused_task):
+ *         try:             # <<<<<<<<<<<<<<
+ *             for callback in rpc_state.callbacks:
+ *                 # The _ServicerContext object is bound in add_done_callback.
+ */
+  {
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
+    __Pyx_XGOTREF(__pyx_t_1);
+    __Pyx_XGOTREF(__pyx_t_2);
+    __Pyx_XGOTREF(__pyx_t_3);
+    /*try:*/ {
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":746
+ *     def handle_callbacks(object unused_task):
+ *         try:
+ *             for callback in rpc_state.callbacks:             # <<<<<<<<<<<<<<
+ *                 # The _ServicerContext object is bound in add_done_callback.
+ *                 callback()
+ */
+      if (unlikely(!__pyx_cur_scope->__pyx_v_rpc_state)) { __Pyx_RaiseClosureNameError("rpc_state"); __PYX_ERR(9, 746, __pyx_L3_error) }
+      if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_v_rpc_state->callbacks)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_rpc_state->callbacks)) {
+        __pyx_t_4 = __pyx_cur_scope->__pyx_v_rpc_state->callbacks; __Pyx_INCREF(__pyx_t_4);
+        __pyx_t_5 = 0;
+        __pyx_t_6 = NULL;
+      } else {
+        __pyx_t_5 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_cur_scope->__pyx_v_rpc_state->callbacks); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 746, __pyx_L3_error)
+        __Pyx_GOTREF(__pyx_t_4);
+        __pyx_t_6 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 746, __pyx_L3_error)
+      }
+      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, 746, __pyx_L3_error)
+              #endif
+              if (__pyx_t_5 >= __pyx_temp) break;
+            }
+            #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+            __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++; if (unlikely((0 < 0))) __PYX_ERR(9, 746, __pyx_L3_error)
+            #else
+            __pyx_t_7 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 746, __pyx_L3_error)
+            __Pyx_GOTREF(__pyx_t_7);
+            #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, 746, __pyx_L3_error)
+              #endif
+              if (__pyx_t_5 >= __pyx_temp) break;
+            }
+            #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+            __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++; if (unlikely((0 < 0))) __PYX_ERR(9, 746, __pyx_L3_error)
+            #else
+            __pyx_t_7 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 746, __pyx_L3_error)
+            __Pyx_GOTREF(__pyx_t_7);
+            #endif
+          }
+        } else {
+          __pyx_t_7 = __pyx_t_6(__pyx_t_4);
+          if (unlikely(!__pyx_t_7)) {
+            PyObject* exc_type = PyErr_Occurred();
+            if (exc_type) {
+              if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
+              else __PYX_ERR(9, 746, __pyx_L3_error)
+            }
+            break;
+          }
+          __Pyx_GOTREF(__pyx_t_7);
+        }
+        __Pyx_XDECREF_SET(__pyx_v_callback, __pyx_t_7);
+        __pyx_t_7 = 0;
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":748
+ *             for callback in rpc_state.callbacks:
+ *                 # The _ServicerContext object is bound in add_done_callback.
+ *                 callback()             # <<<<<<<<<<<<<<
+ *         except:
+ *             _LOGGER.exception('Error in callback for method [%s]', _decode(rpc_state.method()))
+ */
+        __Pyx_INCREF(__pyx_v_callback);
+        __pyx_t_8 = __pyx_v_callback; __pyx_t_9 = NULL;
+        __pyx_t_10 = 0;
+        #if CYTHON_UNPACK_METHODS
+        if (unlikely(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_10 = 1;
+          }
+        }
+        #endif
+        {
+          PyObject *__pyx_callargs[2] = {__pyx_t_9, NULL};
+          __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_10, 0+__pyx_t_10);
+          __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+          if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 748, __pyx_L3_error)
+          __Pyx_GOTREF(__pyx_t_7);
+          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+        }
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":746
+ *     def handle_callbacks(object unused_task):
+ *         try:
+ *             for callback in rpc_state.callbacks:             # <<<<<<<<<<<<<<
+ *                 # The _ServicerContext object is bound in add_done_callback.
+ *                 callback()
+ */
+      }
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":745
+ * 
+ *     def handle_callbacks(object unused_task):
+ *         try:             # <<<<<<<<<<<<<<
+ *             for callback in rpc_state.callbacks:
+ *                 # The _ServicerContext object is bound in add_done_callback.
+ */
+    }
+    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    goto __pyx_L8_try_end;
+    __pyx_L3_error:;
+    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":749
+ *                 # The _ServicerContext object is bound in add_done_callback.
+ *                 callback()
+ *         except:             # <<<<<<<<<<<<<<
+ *             _LOGGER.exception('Error in callback for method [%s]', _decode(rpc_state.method()))
+ * 
+ */
+    /*except:*/ {
+      __Pyx_AddTraceback("_cython.cygrpc._add_callback_handler.handle_callbacks", __pyx_clineno, __pyx_lineno, __pyx_filename);
+      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_7, &__pyx_t_8) < 0) __PYX_ERR(9, 749, __pyx_L5_except_error)
+      __Pyx_XGOTREF(__pyx_t_4);
+      __Pyx_XGOTREF(__pyx_t_7);
+      __Pyx_XGOTREF(__pyx_t_8);
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":750
+ *                 callback()
+ *         except:
+ *             _LOGGER.exception('Error in callback for method [%s]', _decode(rpc_state.method()))             # <<<<<<<<<<<<<<
+ * 
+ *     rpc_task.add_done_callback(handle_callbacks)
+ */
+      __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_LOGGER); if (unlikely(!__pyx_t_11)) __PYX_ERR(9, 750, __pyx_L5_except_error)
+      __Pyx_GOTREF(__pyx_t_11);
+      __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_exception); if (unlikely(!__pyx_t_12)) __PYX_ERR(9, 750, __pyx_L5_except_error)
+      __Pyx_GOTREF(__pyx_t_12);
+      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+      if (unlikely(!__pyx_cur_scope->__pyx_v_rpc_state)) { __Pyx_RaiseClosureNameError("rpc_state"); __PYX_ERR(9, 750, __pyx_L5_except_error) }
+      __pyx_t_11 = ((struct __pyx_vtabstruct_7_cython_6cygrpc_RPCState *)__pyx_cur_scope->__pyx_v_rpc_state->__pyx_vtab)->method(__pyx_cur_scope->__pyx_v_rpc_state); if (unlikely(!__pyx_t_11)) __PYX_ERR(9, 750, __pyx_L5_except_error)
+      __Pyx_GOTREF(__pyx_t_11);
+      __pyx_t_13 = __pyx_f_7_cython_6cygrpc__decode(((PyObject*)__pyx_t_11)); if (unlikely(!__pyx_t_13)) __PYX_ERR(9, 750, __pyx_L5_except_error)
+      __Pyx_GOTREF(__pyx_t_13);
+      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+      __pyx_t_11 = NULL;
+      __pyx_t_10 = 0;
+      #if CYTHON_UNPACK_METHODS
+      if (unlikely(PyMethod_Check(__pyx_t_12))) {
+        __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_12);
+        if (likely(__pyx_t_11)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
+          __Pyx_INCREF(__pyx_t_11);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_12, function);
+          __pyx_t_10 = 1;
+        }
+      }
+      #endif
+      {
+        PyObject *__pyx_callargs[3] = {__pyx_t_11, __pyx_kp_s_Error_in_callback_for_method_s, __pyx_t_13};
+        __pyx_t_9 = __Pyx_PyObject_FastCall(__pyx_t_12, __pyx_callargs+1-__pyx_t_10, 2+__pyx_t_10);
+        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
+        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+        if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 750, __pyx_L5_except_error)
+        __Pyx_GOTREF(__pyx_t_9);
+        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+      }
+      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+      goto __pyx_L4_exception_handled;
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":745
+ * 
+ *     def handle_callbacks(object unused_task):
+ *         try:             # <<<<<<<<<<<<<<
+ *             for callback in rpc_state.callbacks:
+ *                 # The _ServicerContext object is bound in add_done_callback.
+ */
+    __pyx_L5_except_error:;
+    __Pyx_XGIVEREF(__pyx_t_1);
+    __Pyx_XGIVEREF(__pyx_t_2);
+    __Pyx_XGIVEREF(__pyx_t_3);
+    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+    goto __pyx_L1_error;
+    __pyx_L4_exception_handled:;
+    __Pyx_XGIVEREF(__pyx_t_1);
+    __Pyx_XGIVEREF(__pyx_t_2);
+    __Pyx_XGIVEREF(__pyx_t_3);
+    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+    __pyx_L8_try_end:;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":744
+ * cdef _add_callback_handler(object rpc_task, RPCState rpc_state):
+ * 
+ *     def handle_callbacks(object unused_task):             # <<<<<<<<<<<<<<
+ *         try:
+ *             for callback in rpc_state.callbacks:
+ */
+
+  /* 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_7);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_XDECREF(__pyx_t_12);
+  __Pyx_XDECREF(__pyx_t_13);
+  __Pyx_AddTraceback("_cython.cygrpc._add_callback_handler.handle_callbacks", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_callback);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":742
+ * 
+ * 
+ * cdef _add_callback_handler(object rpc_task, RPCState rpc_state):             # <<<<<<<<<<<<<<
+ * 
+ *     def handle_callbacks(object unused_task):
+ */
+
+static PyObject *__pyx_f_7_cython_6cygrpc__add_callback_handler(PyObject *__pyx_v_rpc_task, struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler *__pyx_cur_scope;
+  PyObject *__pyx_v_handle_callbacks = 0;
+  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("_add_callback_handler", 0);
+  __pyx_cur_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler, __pyx_empty_tuple, NULL);
+  if (unlikely(!__pyx_cur_scope)) {
+    __pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler *)Py_None);
+    __Pyx_INCREF(Py_None);
+    __PYX_ERR(9, 742, __pyx_L1_error)
+  } else {
+    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+  }
+  __pyx_cur_scope->__pyx_v_rpc_state = __pyx_v_rpc_state;
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":744
+ * cdef _add_callback_handler(object rpc_task, RPCState rpc_state):
+ * 
+ *     def handle_callbacks(object unused_task):             # <<<<<<<<<<<<<<
+ *         try:
+ *             for callback in rpc_state.callbacks:
+ */
+  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_21_add_callback_handler_1handle_callbacks, 0, __pyx_n_s_add_callback_handler_locals_han, ((PyObject*)__pyx_cur_scope), __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__94)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 744, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_handle_callbacks = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":752
+ *             _LOGGER.exception('Error in callback for method [%s]', _decode(rpc_state.method()))
+ * 
+ *     rpc_task.add_done_callback(handle_callbacks)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rpc_task, __pyx_n_s_add_done_callback); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 752, __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_handle_callbacks};
+    __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, 752, __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/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":742
+ * 
+ * 
+ * cdef _add_callback_handler(object rpc_task, RPCState rpc_state):             # <<<<<<<<<<<<<<
+ * 
+ *     def handle_callbacks(object unused_task):
+ */
+
+  /* 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("_cython.cygrpc._add_callback_handler", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_handle_callbacks);
+  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+static PyObject *__pyx_gb_7_cython_6cygrpc_181generator35(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":755
+ * 
+ * 
+ * async def _handle_cancellation_from_core(object rpc_task,             # <<<<<<<<<<<<<<
+ *                                          RPCState rpc_state,
+ *                                          object loop):
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_180_handle_cancellation_from_core(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_180_handle_cancellation_from_core = {"_handle_cancellation_from_core", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_180_handle_cancellation_from_core, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_180_handle_cancellation_from_core(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_rpc_task = 0;
+  struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state = 0;
+  PyObject *__pyx_v_loop = 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("_handle_cancellation_from_core (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_rpc_task,&__pyx_n_s_rpc_state,&__pyx_n_s_loop,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_rpc_task)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 755, __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_rpc_state)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 755, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("_handle_cancellation_from_core", 1, 3, 3, 1); __PYX_ERR(9, 755, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_loop)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 755, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("_handle_cancellation_from_core", 1, 3, 3, 2); __PYX_ERR(9, 755, __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, "_handle_cancellation_from_core") < 0)) __PYX_ERR(9, 755, __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_rpc_task = values[0];
+    __pyx_v_rpc_state = ((struct __pyx_obj_7_cython_6cygrpc_RPCState *)values[1]);
+    __pyx_v_loop = values[2];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("_handle_cancellation_from_core", 1, 3, 3, __pyx_nargs); __PYX_ERR(9, 755, __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("_cython.cygrpc._handle_cancellation_from_core", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rpc_state), __pyx_ptype_7_cython_6cygrpc_RPCState, 1, "rpc_state", 0))) __PYX_ERR(9, 756, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_179_handle_cancellation_from_core(__pyx_self, __pyx_v_rpc_task, __pyx_v_rpc_state, __pyx_v_loop);
+
+  /* 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_7_cython_6cygrpc_179_handle_cancellation_from_core(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_rpc_task, struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state, PyObject *__pyx_v_loop) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core *__pyx_cur_scope;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_handle_cancellation_from_core", 0);
+  __pyx_cur_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core, __pyx_empty_tuple, NULL);
+  if (unlikely(!__pyx_cur_scope)) {
+    __pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core *)Py_None);
+    __Pyx_INCREF(Py_None);
+    __PYX_ERR(9, 755, __pyx_L1_error)
+  } else {
+    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+  }
+  __pyx_cur_scope->__pyx_v_rpc_task = __pyx_v_rpc_task;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_rpc_task);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_rpc_task);
+  __pyx_cur_scope->__pyx_v_rpc_state = __pyx_v_rpc_state;
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state);
+  __pyx_cur_scope->__pyx_v_loop = __pyx_v_loop;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
+  {
+    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7_cython_6cygrpc_181generator35, __pyx_codeobj__95, (PyObject *) __pyx_cur_scope, __pyx_n_s_handle_cancellation_from_core, __pyx_n_s_handle_cancellation_from_core, __pyx_n_s_cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(9, 755, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_cur_scope);
+    __Pyx_RefNannyFinishContext();
+    return (PyObject *) gen;
+  }
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc._handle_cancellation_from_core", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_gb_7_cython_6cygrpc_181generator35(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
+{
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core *__pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core *)__pyx_generator->closure);
+  PyObject *__pyx_r = NULL;
+  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;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("_handle_cancellation_from_core", 0);
+  switch (__pyx_generator->resume_label) {
+    case 0: goto __pyx_L3_first_run;
+    case 1: goto __pyx_L4_resume_from_await;
+    default: /* CPython raises the right error here */
+    __Pyx_RefNannyFinishContext();
+    return NULL;
+  }
+  __pyx_L3_first_run:;
+  if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 755, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":758
+ *                                          RPCState rpc_state,
+ *                                          object loop):
+ *     cdef ReceiveCloseOnServerOperation op = ReceiveCloseOnServerOperation(_EMPTY_FLAG)             # <<<<<<<<<<<<<<
+ *     cdef tuple ops = (op,)
+ * 
+ */
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_7_cython_6cygrpc__EMPTY_FLAG); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 758, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_7_cython_6cygrpc_ReceiveCloseOnServerOperation), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 758, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_GIVEREF(__pyx_t_2);
+  __pyx_cur_scope->__pyx_v_op = ((struct __pyx_obj_7_cython_6cygrpc_ReceiveCloseOnServerOperation *)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":759
+ *                                          object loop):
+ *     cdef ReceiveCloseOnServerOperation op = ReceiveCloseOnServerOperation(_EMPTY_FLAG)
+ *     cdef tuple ops = (op,)             # <<<<<<<<<<<<<<
+ * 
+ *     # Awaits cancellation from peer.
+ */
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 759, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_op);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_op);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_op))) __PYX_ERR(9, 759, __pyx_L1_error);
+  __Pyx_GIVEREF(__pyx_t_2);
+  __pyx_cur_scope->__pyx_v_ops = ((PyObject*)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":762
+ * 
+ *     # Awaits cancellation from peer.
+ *     await execute_batch(rpc_state, ops, loop)             # <<<<<<<<<<<<<<
+ *     rpc_state.client_closed = True
+ *     # If 1) received cancel signal; 2) the Task is not finished; 3) the server
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_execute_batch); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 762, __pyx_L1_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[4] = {__pyx_t_3, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state), __pyx_cur_scope->__pyx_v_ops, __pyx_cur_scope->__pyx_v_loop};
+    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 3+__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 762, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  }
+  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_2);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_XGOTREF(__pyx_r);
+  if (likely(__pyx_r)) {
+    __Pyx_XGIVEREF(__pyx_r);
+    __Pyx_RefNannyFinishContext();
+    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+    /* return from generator, awaiting value */
+    __pyx_generator->resume_label = 1;
+    return __pyx_r;
+    __pyx_L4_resume_from_await:;
+    if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 762, __pyx_L1_error)
+  } else {
+    PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType();
+    if (exc_type) {
+      if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
+      else __PYX_ERR(9, 762, __pyx_L1_error)
+    }
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":763
+ *     # Awaits cancellation from peer.
+ *     await execute_batch(rpc_state, ops, loop)
+ *     rpc_state.client_closed = True             # <<<<<<<<<<<<<<
+ *     # If 1) received cancel signal; 2) the Task is not finished; 3) the server
+ *     # wasn't replying final status. For condition 3, it might cause inaccurate
+ */
+  __pyx_cur_scope->__pyx_v_rpc_state->client_closed = 1;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":767
+ *     # wasn't replying final status. For condition 3, it might cause inaccurate
+ *     # log that an RPC is both aborted and cancelled.
+ *     if op.cancelled() and not rpc_task.done() and not rpc_state.status_sent:             # <<<<<<<<<<<<<<
+ *         # Injects `CancelledError` to halt the RPC coroutine
+ *         rpc_task.cancel()
+ */
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_op), __pyx_n_s_cancelled); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 767, __pyx_L1_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, NULL};
+    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 767, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  }
+  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(9, 767, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (__pyx_t_6) {
+  } else {
+    __pyx_t_5 = __pyx_t_6;
+    goto __pyx_L6_bool_binop_done;
+  }
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_rpc_task, __pyx_n_s_done); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 767, __pyx_L1_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, NULL};
+    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 767, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  }
+  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(9, 767, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_7 = (!__pyx_t_6);
+  if (__pyx_t_7) {
+  } else {
+    __pyx_t_5 = __pyx_t_7;
+    goto __pyx_L6_bool_binop_done;
+  }
+  __pyx_t_7 = (!__pyx_cur_scope->__pyx_v_rpc_state->status_sent);
+  __pyx_t_5 = __pyx_t_7;
+  __pyx_L6_bool_binop_done:;
+  if (__pyx_t_5) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":769
+ *     if op.cancelled() and not rpc_task.done() and not rpc_state.status_sent:
+ *         # Injects `CancelledError` to halt the RPC coroutine
+ *         rpc_task.cancel()             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_rpc_task, __pyx_n_s_cancel); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 769, __pyx_L1_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, NULL};
+      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 769, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":767
+ *     # wasn't replying final status. For condition 3, it might cause inaccurate
+ *     # log that an RPC is both aborted and cancelled.
+ *     if op.cancelled() and not rpc_task.done() and not rpc_state.status_sent:             # <<<<<<<<<<<<<<
+ *         # Injects `CancelledError` to halt the RPC coroutine
+ *         rpc_task.cancel()
+ */
+  }
+  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":755
+ * 
+ * 
+ * async def _handle_cancellation_from_core(object rpc_task,             # <<<<<<<<<<<<<<
+ *                                          RPCState rpc_state,
+ *                                          object loop):
+ */
+
+  /* function exit code */
+  PyErr_SetNone(PyExc_StopIteration);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_Generator_Replace_StopIteration(0);
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("_handle_cancellation_from_core", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
+  #if !CYTHON_USE_EXC_INFO_STACK
+  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+  #endif
+  __pyx_generator->resume_label = -1;
+  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+static PyObject *__pyx_gb_7_cython_6cygrpc_184generator36(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":772
+ * 
+ * 
+ * async def _schedule_rpc_coro(object rpc_coro,             # <<<<<<<<<<<<<<
+ *                              RPCState rpc_state,
+ *                              object loop):
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_183_schedule_rpc_coro(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_183_schedule_rpc_coro = {"_schedule_rpc_coro", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_183_schedule_rpc_coro, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_183_schedule_rpc_coro(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_rpc_coro = 0;
+  struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state = 0;
+  PyObject *__pyx_v_loop = 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("_schedule_rpc_coro (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_rpc_coro,&__pyx_n_s_rpc_state,&__pyx_n_s_loop,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_rpc_coro)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 772, __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_rpc_state)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 772, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("_schedule_rpc_coro", 1, 3, 3, 1); __PYX_ERR(9, 772, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_loop)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 772, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("_schedule_rpc_coro", 1, 3, 3, 2); __PYX_ERR(9, 772, __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, "_schedule_rpc_coro") < 0)) __PYX_ERR(9, 772, __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_rpc_coro = values[0];
+    __pyx_v_rpc_state = ((struct __pyx_obj_7_cython_6cygrpc_RPCState *)values[1]);
+    __pyx_v_loop = values[2];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("_schedule_rpc_coro", 1, 3, 3, __pyx_nargs); __PYX_ERR(9, 772, __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("_cython.cygrpc._schedule_rpc_coro", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rpc_state), __pyx_ptype_7_cython_6cygrpc_RPCState, 1, "rpc_state", 0))) __PYX_ERR(9, 773, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_182_schedule_rpc_coro(__pyx_self, __pyx_v_rpc_coro, __pyx_v_rpc_state, __pyx_v_loop);
+
+  /* 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_7_cython_6cygrpc_182_schedule_rpc_coro(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_rpc_coro, struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state, PyObject *__pyx_v_loop) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro *__pyx_cur_scope;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_schedule_rpc_coro", 0);
+  __pyx_cur_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro, __pyx_empty_tuple, NULL);
+  if (unlikely(!__pyx_cur_scope)) {
+    __pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro *)Py_None);
+    __Pyx_INCREF(Py_None);
+    __PYX_ERR(9, 772, __pyx_L1_error)
+  } else {
+    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+  }
+  __pyx_cur_scope->__pyx_v_rpc_coro = __pyx_v_rpc_coro;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_rpc_coro);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_rpc_coro);
+  __pyx_cur_scope->__pyx_v_rpc_state = __pyx_v_rpc_state;
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state);
+  __pyx_cur_scope->__pyx_v_loop = __pyx_v_loop;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
+  {
+    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7_cython_6cygrpc_184generator36, __pyx_codeobj__96, (PyObject *) __pyx_cur_scope, __pyx_n_s_schedule_rpc_coro, __pyx_n_s_schedule_rpc_coro, __pyx_n_s_cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(9, 772, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_cur_scope);
+    __Pyx_RefNannyFinishContext();
+    return (PyObject *) gen;
+  }
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc._schedule_rpc_coro", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_gb_7_cython_6cygrpc_184generator36(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
+{
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro *__pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro *)__pyx_generator->closure);
+  PyObject *__pyx_r = NULL;
+  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_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("_schedule_rpc_coro", 0);
+  switch (__pyx_generator->resume_label) {
+    case 0: goto __pyx_L3_first_run;
+    case 1: goto __pyx_L4_resume_from_await;
+    default: /* CPython raises the right error here */
+    __Pyx_RefNannyFinishContext();
+    return NULL;
+  }
+  __pyx_L3_first_run:;
+  if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 772, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":776
+ *                              object loop):
+ *     # Schedules the RPC coroutine.
+ *     cdef object rpc_task = loop.create_task(_handle_exceptions(             # <<<<<<<<<<<<<<
+ *         rpc_state,
+ *         rpc_coro,
+ */
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_loop, __pyx_n_s_create_task); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 776, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_handle_exceptions); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 776, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":779
+ *         rpc_state,
+ *         rpc_coro,
+ *         loop,             # <<<<<<<<<<<<<<
+ *     ))
+ *     _add_callback_handler(rpc_task, rpc_state)
+ */
+  __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[4] = {__pyx_t_5, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state), __pyx_cur_scope->__pyx_v_rpc_coro, __pyx_cur_scope->__pyx_v_loop};
+    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 3+__pyx_t_6);
+    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 776, __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[2] = {__pyx_t_4, __pyx_t_3};
+    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_6, 1+__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(9, 776, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  }
+  __Pyx_GIVEREF(__pyx_t_1);
+  __pyx_cur_scope->__pyx_v_rpc_task = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":781
+ *         loop,
+ *     ))
+ *     _add_callback_handler(rpc_task, rpc_state)             # <<<<<<<<<<<<<<
+ *     await _handle_cancellation_from_core(rpc_task, rpc_state, loop)
+ * 
+ */
+  __pyx_t_1 = __pyx_f_7_cython_6cygrpc__add_callback_handler(__pyx_cur_scope->__pyx_v_rpc_task, __pyx_cur_scope->__pyx_v_rpc_state); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 781, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":782
+ *     ))
+ *     _add_callback_handler(rpc_task, rpc_state)
+ *     await _handle_cancellation_from_core(rpc_task, rpc_state, loop)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_handle_cancellation_from_core); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 782, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = NULL;
+  __pyx_t_6 = 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_6 = 1;
+    }
+  }
+  #endif
+  {
+    PyObject *__pyx_callargs[4] = {__pyx_t_3, __pyx_cur_scope->__pyx_v_rpc_task, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state), __pyx_cur_scope->__pyx_v_loop};
+    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_6, 3+__pyx_t_6);
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 782, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  }
+  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_XGOTREF(__pyx_r);
+  if (likely(__pyx_r)) {
+    __Pyx_XGIVEREF(__pyx_r);
+    __Pyx_RefNannyFinishContext();
+    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+    /* return from generator, awaiting value */
+    __pyx_generator->resume_label = 1;
+    return __pyx_r;
+    __pyx_L4_resume_from_await:;
+    if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 782, __pyx_L1_error)
+  } else {
+    PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType();
+    if (exc_type) {
+      if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
+      else __PYX_ERR(9, 782, __pyx_L1_error)
+    }
+  }
+  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":772
+ * 
+ * 
+ * async def _schedule_rpc_coro(object rpc_coro,             # <<<<<<<<<<<<<<
+ *                              RPCState rpc_state,
+ *                              object loop):
+ */
+
+  /* function exit code */
+  PyErr_SetNone(PyExc_StopIteration);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_Generator_Replace_StopIteration(0);
+  __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("_schedule_rpc_coro", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
+  #if !CYTHON_USE_EXC_INFO_STACK
+  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+  #endif
+  __pyx_generator->resume_label = -1;
+  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+static PyObject *__pyx_gb_7_cython_6cygrpc_187generator37(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":785
+ * 
+ * 
+ * async def _handle_rpc(list generic_handlers, tuple interceptors,             # <<<<<<<<<<<<<<
+ *                       RPCState rpc_state, object loop, bint concurrency_exceeded):
+ *     cdef object method_handler
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_186_handle_rpc(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_186_handle_rpc = {"_handle_rpc", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_186_handle_rpc, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_186_handle_rpc(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_generic_handlers = 0;
+  PyObject *__pyx_v_interceptors = 0;
+  struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state = 0;
+  PyObject *__pyx_v_loop = 0;
+  int __pyx_v_concurrency_exceeded;
+  #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("_handle_rpc (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_generic_handlers,&__pyx_n_s_interceptors,&__pyx_n_s_rpc_state,&__pyx_n_s_loop,&__pyx_n_s_concurrency_exceeded,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_generic_handlers)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 785, __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_interceptors)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 785, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("_handle_rpc", 1, 5, 5, 1); __PYX_ERR(9, 785, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_rpc_state)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[2]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 785, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("_handle_rpc", 1, 5, 5, 2); __PYX_ERR(9, 785, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  3:
+        if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_loop)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[3]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 785, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("_handle_rpc", 1, 5, 5, 3); __PYX_ERR(9, 785, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  4:
+        if (likely((values[4] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_concurrency_exceeded)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[4]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 785, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("_handle_rpc", 1, 5, 5, 4); __PYX_ERR(9, 785, __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, "_handle_rpc") < 0)) __PYX_ERR(9, 785, __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_generic_handlers = ((PyObject*)values[0]);
+    __pyx_v_interceptors = ((PyObject*)values[1]);
+    __pyx_v_rpc_state = ((struct __pyx_obj_7_cython_6cygrpc_RPCState *)values[2]);
+    __pyx_v_loop = values[3];
+    __pyx_v_concurrency_exceeded = __Pyx_PyObject_IsTrue(values[4]); if (unlikely((__pyx_v_concurrency_exceeded == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 786, __pyx_L3_error)
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("_handle_rpc", 1, 5, 5, __pyx_nargs); __PYX_ERR(9, 785, __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("_cython.cygrpc._handle_rpc", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_generic_handlers), (&PyList_Type), 1, "generic_handlers", 1))) __PYX_ERR(9, 785, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_interceptors), (&PyTuple_Type), 1, "interceptors", 1))) __PYX_ERR(9, 785, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rpc_state), __pyx_ptype_7_cython_6cygrpc_RPCState, 1, "rpc_state", 0))) __PYX_ERR(9, 786, __pyx_L1_error)
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_185_handle_rpc(__pyx_self, __pyx_v_generic_handlers, __pyx_v_interceptors, __pyx_v_rpc_state, __pyx_v_loop, __pyx_v_concurrency_exceeded);
+
+  /* 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_7_cython_6cygrpc_185_handle_rpc(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_generic_handlers, PyObject *__pyx_v_interceptors, struct __pyx_obj_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state, PyObject *__pyx_v_loop, int __pyx_v_concurrency_exceeded) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc *__pyx_cur_scope;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_handle_rpc", 0);
+  __pyx_cur_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc, __pyx_empty_tuple, NULL);
+  if (unlikely(!__pyx_cur_scope)) {
+    __pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc *)Py_None);
+    __Pyx_INCREF(Py_None);
+    __PYX_ERR(9, 785, __pyx_L1_error)
+  } else {
+    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+  }
+  __pyx_cur_scope->__pyx_v_generic_handlers = __pyx_v_generic_handlers;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_generic_handlers);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_generic_handlers);
+  __pyx_cur_scope->__pyx_v_interceptors = __pyx_v_interceptors;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_interceptors);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_interceptors);
+  __pyx_cur_scope->__pyx_v_rpc_state = __pyx_v_rpc_state;
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state);
+  __pyx_cur_scope->__pyx_v_loop = __pyx_v_loop;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
+  __pyx_cur_scope->__pyx_v_concurrency_exceeded = __pyx_v_concurrency_exceeded;
+  {
+    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7_cython_6cygrpc_187generator37, __pyx_codeobj__97, (PyObject *) __pyx_cur_scope, __pyx_n_s_handle_rpc, __pyx_n_s_handle_rpc, __pyx_n_s_cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(9, 785, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_cur_scope);
+    __Pyx_RefNannyFinishContext();
+    return (PyObject *) gen;
+  }
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc._handle_rpc", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_gb_7_cython_6cygrpc_187generator37(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
+{
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc *__pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc *)__pyx_generator->closure);
+  PyObject *__pyx_r = NULL;
+  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_t_7;
+  PyObject *__pyx_t_8 = NULL;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("_handle_rpc", 0);
+  switch (__pyx_generator->resume_label) {
+    case 0: goto __pyx_L3_first_run;
+    case 1: goto __pyx_L4_resume_from_await;
+    case 2: goto __pyx_L6_resume_from_await;
+    case 3: goto __pyx_L8_resume_from_await;
+    case 4: goto __pyx_L12_resume_from_await;
+    case 5: goto __pyx_L16_resume_from_await;
+    case 6: goto __pyx_L20_resume_from_await;
+    case 7: goto __pyx_L24_resume_from_await;
+    default: /* CPython raises the right error here */
+    __Pyx_RefNannyFinishContext();
+    return NULL;
+  }
+  __pyx_L3_first_run:;
+  if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 785, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":789
+ *     cdef object method_handler
+ *     # Finds the method handler (application logic)
+ *     method_handler = await _find_method_handler(             # <<<<<<<<<<<<<<
+ *         rpc_state.method().decode(),
+ *         rpc_state.invocation_metadata(),
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_find_method_handler); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 789, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":790
+ *     # Finds the method handler (application logic)
+ *     method_handler = await _find_method_handler(
+ *         rpc_state.method().decode(),             # <<<<<<<<<<<<<<
+ *         rpc_state.invocation_metadata(),
+ *         generic_handlers,
+ */
+  __pyx_t_3 = ((struct __pyx_vtabstruct_7_cython_6cygrpc_RPCState *)__pyx_cur_scope->__pyx_v_rpc_state->__pyx_vtab)->method(__pyx_cur_scope->__pyx_v_rpc_state); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 790, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  if (unlikely(__pyx_t_3 == Py_None)) {
+    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "decode");
+    __PYX_ERR(9, 790, __pyx_L1_error)
+  }
+  __pyx_t_4 = __Pyx_decode_bytes(__pyx_t_3, 0, PY_SSIZE_T_MAX, NULL, NULL, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 790, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":791
+ *     method_handler = await _find_method_handler(
+ *         rpc_state.method().decode(),
+ *         rpc_state.invocation_metadata(),             # <<<<<<<<<<<<<<
+ *         generic_handlers,
+ *         interceptors,
+ */
+  __pyx_t_3 = ((struct __pyx_vtabstruct_7_cython_6cygrpc_RPCState *)__pyx_cur_scope->__pyx_v_rpc_state->__pyx_vtab)->invocation_metadata(__pyx_cur_scope->__pyx_v_rpc_state); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 791, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":793
+ *         rpc_state.invocation_metadata(),
+ *         generic_handlers,
+ *         interceptors,             # <<<<<<<<<<<<<<
+ *     )
+ *     if method_handler is None:
+ */
+  __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[5] = {__pyx_t_5, __pyx_t_4, __pyx_t_3, __pyx_cur_scope->__pyx_v_generic_handlers, __pyx_cur_scope->__pyx_v_interceptors};
+    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_6, 4+__pyx_t_6);
+    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 789, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  }
+  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_XGOTREF(__pyx_r);
+  if (likely(__pyx_r)) {
+    __Pyx_XGIVEREF(__pyx_r);
+    __Pyx_RefNannyFinishContext();
+    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+    /* return from generator, awaiting value */
+    __pyx_generator->resume_label = 1;
+    return __pyx_r;
+    __pyx_L4_resume_from_await:;
+    if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 789, __pyx_L1_error)
+    __pyx_t_1 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_1);
+  } else {
+    __pyx_t_1 = NULL;
+    if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_1) < 0) __PYX_ERR(9, 789, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+  }
+  __Pyx_GIVEREF(__pyx_t_1);
+  __pyx_cur_scope->__pyx_v_method_handler = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":795
+ *         interceptors,
+ *     )
+ *     if method_handler is None:             # <<<<<<<<<<<<<<
+ *         rpc_state.status_sent = True
+ *         await _send_error_status_from_server(
+ */
+  __pyx_t_7 = (__pyx_cur_scope->__pyx_v_method_handler == Py_None);
+  if (__pyx_t_7) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":796
+ *     )
+ *     if method_handler is None:
+ *         rpc_state.status_sent = True             # <<<<<<<<<<<<<<
+ *         await _send_error_status_from_server(
+ *             rpc_state,
+ */
+    __pyx_cur_scope->__pyx_v_rpc_state->status_sent = 1;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":797
+ *     if method_handler is None:
+ *         rpc_state.status_sent = True
+ *         await _send_error_status_from_server(             # <<<<<<<<<<<<<<
+ *             rpc_state,
+ *             StatusCode.unimplemented,
+ */
+    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_send_error_status_from_server); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 797, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":799
+ *         await _send_error_status_from_server(
+ *             rpc_state,
+ *             StatusCode.unimplemented,             # <<<<<<<<<<<<<<
+ *             'Method not found!',
+ *             _IMMUTABLE_EMPTY_METADATA,
+ */
+    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_StatusCode); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 799, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_unimplemented); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 799, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":801
+ *             StatusCode.unimplemented,
+ *             'Method not found!',
+ *             _IMMUTABLE_EMPTY_METADATA,             # <<<<<<<<<<<<<<
+ *             rpc_state.create_send_initial_metadata_op_if_not_sent(),
+ *             loop
+ */
+    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_IMMUTABLE_EMPTY_METADATA); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 801, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":802
+ *             'Method not found!',
+ *             _IMMUTABLE_EMPTY_METADATA,
+ *             rpc_state.create_send_initial_metadata_op_if_not_sent(),             # <<<<<<<<<<<<<<
+ *             loop
+ *         )
+ */
+    __pyx_t_5 = ((PyObject *)((struct __pyx_vtabstruct_7_cython_6cygrpc_RPCState *)__pyx_cur_scope->__pyx_v_rpc_state->__pyx_vtab)->create_send_initial_metadata_op_if_not_sent(__pyx_cur_scope->__pyx_v_rpc_state)); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 802, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":803
+ *             _IMMUTABLE_EMPTY_METADATA,
+ *             rpc_state.create_send_initial_metadata_op_if_not_sent(),
+ *             loop             # <<<<<<<<<<<<<<
+ *         )
+ *         return
+ */
+    __pyx_t_8 = NULL;
+    __pyx_t_6 = 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_6 = 1;
+      }
+    }
+    #endif
+    {
+      PyObject *__pyx_callargs[7] = {__pyx_t_8, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state), __pyx_t_4, __pyx_kp_s_Method_not_found, __pyx_t_3, __pyx_t_5, __pyx_cur_scope->__pyx_v_loop};
+      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_6, 6+__pyx_t_6);
+      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 797, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    }
+    __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __Pyx_XGOTREF(__pyx_r);
+    if (likely(__pyx_r)) {
+      __Pyx_XGIVEREF(__pyx_r);
+      __Pyx_RefNannyFinishContext();
+      __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+      /* return from generator, awaiting value */
+      __pyx_generator->resume_label = 2;
+      return __pyx_r;
+      __pyx_L6_resume_from_await:;
+      if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 797, __pyx_L1_error)
+    } else {
+      PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType();
+      if (exc_type) {
+        if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
+        else __PYX_ERR(9, 797, __pyx_L1_error)
+      }
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":805
+ *             loop
+ *         )
+ *         return             # <<<<<<<<<<<<<<
+ * 
+ *     if concurrency_exceeded:
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_r = NULL;
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":795
+ *         interceptors,
+ *     )
+ *     if method_handler is None:             # <<<<<<<<<<<<<<
+ *         rpc_state.status_sent = True
+ *         await _send_error_status_from_server(
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":807
+ *         return
+ * 
+ *     if concurrency_exceeded:             # <<<<<<<<<<<<<<
+ *         rpc_state.status_sent = True
+ *         await _send_error_status_from_server(
+ */
+  if (__pyx_cur_scope->__pyx_v_concurrency_exceeded) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":808
+ * 
+ *     if concurrency_exceeded:
+ *         rpc_state.status_sent = True             # <<<<<<<<<<<<<<
+ *         await _send_error_status_from_server(
+ *             rpc_state,
+ */
+    __pyx_cur_scope->__pyx_v_rpc_state->status_sent = 1;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":809
+ *     if concurrency_exceeded:
+ *         rpc_state.status_sent = True
+ *         await _send_error_status_from_server(             # <<<<<<<<<<<<<<
+ *             rpc_state,
+ *             StatusCode.resource_exhausted,
+ */
+    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_send_error_status_from_server); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 809, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":811
+ *         await _send_error_status_from_server(
+ *             rpc_state,
+ *             StatusCode.resource_exhausted,             # <<<<<<<<<<<<<<
+ *             'Concurrent RPC limit exceeded!',
+ *             _IMMUTABLE_EMPTY_METADATA,
+ */
+    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_StatusCode); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 811, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_resource_exhausted); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 811, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":813
+ *             StatusCode.resource_exhausted,
+ *             'Concurrent RPC limit exceeded!',
+ *             _IMMUTABLE_EMPTY_METADATA,             # <<<<<<<<<<<<<<
+ *             rpc_state.create_send_initial_metadata_op_if_not_sent(),
+ *             loop
+ */
+    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_IMMUTABLE_EMPTY_METADATA); if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 813, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":814
+ *             'Concurrent RPC limit exceeded!',
+ *             _IMMUTABLE_EMPTY_METADATA,
+ *             rpc_state.create_send_initial_metadata_op_if_not_sent(),             # <<<<<<<<<<<<<<
+ *             loop
+ *         )
+ */
+    __pyx_t_4 = ((PyObject *)((struct __pyx_vtabstruct_7_cython_6cygrpc_RPCState *)__pyx_cur_scope->__pyx_v_rpc_state->__pyx_vtab)->create_send_initial_metadata_op_if_not_sent(__pyx_cur_scope->__pyx_v_rpc_state)); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 814, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":815
+ *             _IMMUTABLE_EMPTY_METADATA,
+ *             rpc_state.create_send_initial_metadata_op_if_not_sent(),
+ *             loop             # <<<<<<<<<<<<<<
+ *         )
+ *         return
+ */
+    __pyx_t_8 = NULL;
+    __pyx_t_6 = 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_6 = 1;
+      }
+    }
+    #endif
+    {
+      PyObject *__pyx_callargs[7] = {__pyx_t_8, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state), __pyx_t_3, __pyx_kp_s_Concurrent_RPC_limit_exceeded, __pyx_t_5, __pyx_t_4, __pyx_cur_scope->__pyx_v_loop};
+      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_6, 6+__pyx_t_6);
+      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 809, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    }
+    __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __Pyx_XGOTREF(__pyx_r);
+    if (likely(__pyx_r)) {
+      __Pyx_XGIVEREF(__pyx_r);
+      __Pyx_RefNannyFinishContext();
+      __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+      /* return from generator, awaiting value */
+      __pyx_generator->resume_label = 3;
+      return __pyx_r;
+      __pyx_L8_resume_from_await:;
+      if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 809, __pyx_L1_error)
+    } else {
+      PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType();
+      if (exc_type) {
+        if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
+        else __PYX_ERR(9, 809, __pyx_L1_error)
+      }
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":817
+ *             loop
+ *         )
+ *         return             # <<<<<<<<<<<<<<
+ * 
+ *     # Handles unary-unary case
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_r = NULL;
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":807
+ *         return
+ * 
+ *     if concurrency_exceeded:             # <<<<<<<<<<<<<<
+ *         rpc_state.status_sent = True
+ *         await _send_error_status_from_server(
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":820
+ * 
+ *     # Handles unary-unary case
+ *     if not method_handler.request_streaming and not method_handler.response_streaming:             # <<<<<<<<<<<<<<
+ *         await _handle_unary_unary_rpc(method_handler,
+ *                                       rpc_state,
+ */
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_method_handler, __pyx_n_s_request_streaming); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 820, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(9, 820, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_10 = (!__pyx_t_9);
+  if (__pyx_t_10) {
+  } else {
+    __pyx_t_7 = __pyx_t_10;
+    goto __pyx_L10_bool_binop_done;
+  }
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_method_handler, __pyx_n_s_response_streaming); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 820, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(9, 820, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_9 = (!__pyx_t_10);
+  __pyx_t_7 = __pyx_t_9;
+  __pyx_L10_bool_binop_done:;
+  if (__pyx_t_7) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":821
+ *     # Handles unary-unary case
+ *     if not method_handler.request_streaming and not method_handler.response_streaming:
+ *         await _handle_unary_unary_rpc(method_handler,             # <<<<<<<<<<<<<<
+ *                                       rpc_state,
+ *                                       loop)
+ */
+    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_handle_unary_unary_rpc); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 821, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":823
+ *         await _handle_unary_unary_rpc(method_handler,
+ *                                       rpc_state,
+ *                                       loop)             # <<<<<<<<<<<<<<
+ *         return
+ * 
+ */
+    __pyx_t_4 = NULL;
+    __pyx_t_6 = 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_6 = 1;
+      }
+    }
+    #endif
+    {
+      PyObject *__pyx_callargs[4] = {__pyx_t_4, __pyx_cur_scope->__pyx_v_method_handler, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state), __pyx_cur_scope->__pyx_v_loop};
+      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_6, 3+__pyx_t_6);
+      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+      if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 821, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    }
+    __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __Pyx_XGOTREF(__pyx_r);
+    if (likely(__pyx_r)) {
+      __Pyx_XGIVEREF(__pyx_r);
+      __Pyx_RefNannyFinishContext();
+      __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+      /* return from generator, awaiting value */
+      __pyx_generator->resume_label = 4;
+      return __pyx_r;
+      __pyx_L12_resume_from_await:;
+      if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 821, __pyx_L1_error)
+    } else {
+      PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType();
+      if (exc_type) {
+        if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
+        else __PYX_ERR(9, 821, __pyx_L1_error)
+      }
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":824
+ *                                       rpc_state,
+ *                                       loop)
+ *         return             # <<<<<<<<<<<<<<
+ * 
+ *     # Handles unary-stream case
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_r = NULL;
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":820
+ * 
+ *     # Handles unary-unary case
+ *     if not method_handler.request_streaming and not method_handler.response_streaming:             # <<<<<<<<<<<<<<
+ *         await _handle_unary_unary_rpc(method_handler,
+ *                                       rpc_state,
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":827
+ * 
+ *     # Handles unary-stream case
+ *     if not method_handler.request_streaming and method_handler.response_streaming:             # <<<<<<<<<<<<<<
+ *         await _handle_unary_stream_rpc(method_handler,
+ *                                        rpc_state,
+ */
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_method_handler, __pyx_n_s_request_streaming); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 827, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(9, 827, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_10 = (!__pyx_t_9);
+  if (__pyx_t_10) {
+  } else {
+    __pyx_t_7 = __pyx_t_10;
+    goto __pyx_L14_bool_binop_done;
+  }
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_method_handler, __pyx_n_s_response_streaming); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 827, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(9, 827, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_7 = __pyx_t_10;
+  __pyx_L14_bool_binop_done:;
+  if (__pyx_t_7) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":828
+ *     # Handles unary-stream case
+ *     if not method_handler.request_streaming and method_handler.response_streaming:
+ *         await _handle_unary_stream_rpc(method_handler,             # <<<<<<<<<<<<<<
+ *                                        rpc_state,
+ *                                        loop)
+ */
+    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_handle_unary_stream_rpc); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 828, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":830
+ *         await _handle_unary_stream_rpc(method_handler,
+ *                                        rpc_state,
+ *                                        loop)             # <<<<<<<<<<<<<<
+ *         return
+ * 
+ */
+    __pyx_t_4 = NULL;
+    __pyx_t_6 = 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_6 = 1;
+      }
+    }
+    #endif
+    {
+      PyObject *__pyx_callargs[4] = {__pyx_t_4, __pyx_cur_scope->__pyx_v_method_handler, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state), __pyx_cur_scope->__pyx_v_loop};
+      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_6, 3+__pyx_t_6);
+      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+      if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 828, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    }
+    __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __Pyx_XGOTREF(__pyx_r);
+    if (likely(__pyx_r)) {
+      __Pyx_XGIVEREF(__pyx_r);
+      __Pyx_RefNannyFinishContext();
+      __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+      /* return from generator, awaiting value */
+      __pyx_generator->resume_label = 5;
+      return __pyx_r;
+      __pyx_L16_resume_from_await:;
+      if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 828, __pyx_L1_error)
+    } else {
+      PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType();
+      if (exc_type) {
+        if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
+        else __PYX_ERR(9, 828, __pyx_L1_error)
+      }
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":831
+ *                                        rpc_state,
+ *                                        loop)
+ *         return             # <<<<<<<<<<<<<<
+ * 
+ *     # Handles stream-unary case
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_r = NULL;
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":827
+ * 
+ *     # Handles unary-stream case
+ *     if not method_handler.request_streaming and method_handler.response_streaming:             # <<<<<<<<<<<<<<
+ *         await _handle_unary_stream_rpc(method_handler,
+ *                                        rpc_state,
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":834
+ * 
+ *     # Handles stream-unary case
+ *     if method_handler.request_streaming and not method_handler.response_streaming:             # <<<<<<<<<<<<<<
+ *         await _handle_stream_unary_rpc(method_handler,
+ *                                        rpc_state,
+ */
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_method_handler, __pyx_n_s_request_streaming); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 834, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(9, 834, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (__pyx_t_10) {
+  } else {
+    __pyx_t_7 = __pyx_t_10;
+    goto __pyx_L18_bool_binop_done;
+  }
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_method_handler, __pyx_n_s_response_streaming); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 834, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(9, 834, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_9 = (!__pyx_t_10);
+  __pyx_t_7 = __pyx_t_9;
+  __pyx_L18_bool_binop_done:;
+  if (__pyx_t_7) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":835
+ *     # Handles stream-unary case
+ *     if method_handler.request_streaming and not method_handler.response_streaming:
+ *         await _handle_stream_unary_rpc(method_handler,             # <<<<<<<<<<<<<<
+ *                                        rpc_state,
+ *                                        loop)
+ */
+    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_handle_stream_unary_rpc); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 835, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":837
+ *         await _handle_stream_unary_rpc(method_handler,
+ *                                        rpc_state,
+ *                                        loop)             # <<<<<<<<<<<<<<
+ *         return
+ * 
+ */
+    __pyx_t_4 = NULL;
+    __pyx_t_6 = 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_6 = 1;
+      }
+    }
+    #endif
+    {
+      PyObject *__pyx_callargs[4] = {__pyx_t_4, __pyx_cur_scope->__pyx_v_method_handler, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state), __pyx_cur_scope->__pyx_v_loop};
+      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_6, 3+__pyx_t_6);
+      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+      if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 835, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    }
+    __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __Pyx_XGOTREF(__pyx_r);
+    if (likely(__pyx_r)) {
+      __Pyx_XGIVEREF(__pyx_r);
+      __Pyx_RefNannyFinishContext();
+      __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+      /* return from generator, awaiting value */
+      __pyx_generator->resume_label = 6;
+      return __pyx_r;
+      __pyx_L20_resume_from_await:;
+      if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 835, __pyx_L1_error)
+    } else {
+      PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType();
+      if (exc_type) {
+        if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
+        else __PYX_ERR(9, 835, __pyx_L1_error)
+      }
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":838
+ *                                        rpc_state,
+ *                                        loop)
+ *         return             # <<<<<<<<<<<<<<
+ * 
+ *     # Handles stream-stream case
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_r = NULL;
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":834
+ * 
+ *     # Handles stream-unary case
+ *     if method_handler.request_streaming and not method_handler.response_streaming:             # <<<<<<<<<<<<<<
+ *         await _handle_stream_unary_rpc(method_handler,
+ *                                        rpc_state,
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":841
+ * 
+ *     # Handles stream-stream case
+ *     if method_handler.request_streaming and method_handler.response_streaming:             # <<<<<<<<<<<<<<
+ *         await _handle_stream_stream_rpc(method_handler,
+ *                                         rpc_state,
+ */
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_method_handler, __pyx_n_s_request_streaming); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 841, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(9, 841, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (__pyx_t_9) {
+  } else {
+    __pyx_t_7 = __pyx_t_9;
+    goto __pyx_L22_bool_binop_done;
+  }
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_method_handler, __pyx_n_s_response_streaming); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 841, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(9, 841, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_7 = __pyx_t_9;
+  __pyx_L22_bool_binop_done:;
+  if (__pyx_t_7) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":842
+ *     # Handles stream-stream case
+ *     if method_handler.request_streaming and method_handler.response_streaming:
+ *         await _handle_stream_stream_rpc(method_handler,             # <<<<<<<<<<<<<<
+ *                                         rpc_state,
+ *                                         loop)
+ */
+    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_handle_stream_stream_rpc); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 842, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":844
+ *         await _handle_stream_stream_rpc(method_handler,
+ *                                         rpc_state,
+ *                                         loop)             # <<<<<<<<<<<<<<
+ *         return
+ * 
+ */
+    __pyx_t_4 = NULL;
+    __pyx_t_6 = 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_6 = 1;
+      }
+    }
+    #endif
+    {
+      PyObject *__pyx_callargs[4] = {__pyx_t_4, __pyx_cur_scope->__pyx_v_method_handler, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state), __pyx_cur_scope->__pyx_v_loop};
+      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_6, 3+__pyx_t_6);
+      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+      if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 842, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    }
+    __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __Pyx_XGOTREF(__pyx_r);
+    if (likely(__pyx_r)) {
+      __Pyx_XGIVEREF(__pyx_r);
+      __Pyx_RefNannyFinishContext();
+      __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+      /* return from generator, awaiting value */
+      __pyx_generator->resume_label = 7;
+      return __pyx_r;
+      __pyx_L24_resume_from_await:;
+      if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 842, __pyx_L1_error)
+    } else {
+      PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType();
+      if (exc_type) {
+        if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
+        else __PYX_ERR(9, 842, __pyx_L1_error)
+      }
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":845
+ *                                         rpc_state,
+ *                                         loop)
+ *         return             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_r = NULL;
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":841
+ * 
+ *     # Handles stream-stream case
+ *     if method_handler.request_streaming and method_handler.response_streaming:             # <<<<<<<<<<<<<<
+ *         await _handle_stream_stream_rpc(method_handler,
+ *                                         rpc_state,
+ */
+  }
+  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":785
+ * 
+ * 
+ * async def _handle_rpc(list generic_handlers, tuple interceptors,             # <<<<<<<<<<<<<<
+ *                       RPCState rpc_state, object loop, bint concurrency_exceeded):
+ *     cdef object method_handler
+ */
+
+  /* function exit code */
+  PyErr_SetNone(PyExc_StopIteration);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_Generator_Replace_StopIteration(0);
+  __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_8);
+  __Pyx_AddTraceback("_handle_rpc", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
+  #if !CYTHON_USE_EXC_INFO_STACK
+  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+  #endif
+  __pyx_generator->resume_label = -1;
+  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":862
+ * cdef class _ConcurrentRpcLimiter:
+ * 
+ *     def __cinit__(self, int maximum_concurrent_rpcs):             # <<<<<<<<<<<<<<
+ *         if maximum_concurrent_rpcs <= 0:
+ *             raise ValueError("maximum_concurrent_rpcs should be a postive integer")
+ */
+
+/* Python wrapper */
+static int __pyx_pw_7_cython_6cygrpc_21_ConcurrentRpcLimiter_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_7_cython_6cygrpc_21_ConcurrentRpcLimiter_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  int __pyx_v_maximum_concurrent_rpcs;
+  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
+  PyObject* values[1] = {0};
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  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);
+  {
+    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_maximum_concurrent_rpcs,0};
+    if (__pyx_kwds) {
+      Py_ssize_t kw_args;
+      switch (__pyx_nargs) {
+        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
+      switch (__pyx_nargs) {
+        case  0:
+        if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_maximum_concurrent_rpcs)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 862, __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, "__cinit__") < 0)) __PYX_ERR(9, 862, __pyx_L3_error)
+      }
+    } else if (unlikely(__pyx_nargs != 1)) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+    }
+    __pyx_v_maximum_concurrent_rpcs = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_maximum_concurrent_rpcs == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 862, __pyx_L3_error)
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 862, __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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_AddTraceback("_cython.cygrpc._ConcurrentRpcLimiter.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_21_ConcurrentRpcLimiter___cinit__(((struct __pyx_obj_7_cython_6cygrpc__ConcurrentRpcLimiter *)__pyx_v_self), __pyx_v_maximum_concurrent_rpcs);
+
+  /* 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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_7_cython_6cygrpc_21_ConcurrentRpcLimiter___cinit__(struct __pyx_obj_7_cython_6cygrpc__ConcurrentRpcLimiter *__pyx_v_self, int __pyx_v_maximum_concurrent_rpcs) {
+  int __pyx_r;
+  __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("__cinit__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":863
+ * 
+ *     def __cinit__(self, int maximum_concurrent_rpcs):
+ *         if maximum_concurrent_rpcs <= 0:             # <<<<<<<<<<<<<<
+ *             raise ValueError("maximum_concurrent_rpcs should be a postive integer")
+ *         self._maximum_concurrent_rpcs = maximum_concurrent_rpcs
+ */
+  __pyx_t_1 = (__pyx_v_maximum_concurrent_rpcs <= 0);
+  if (unlikely(__pyx_t_1)) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":864
+ *     def __cinit__(self, int maximum_concurrent_rpcs):
+ *         if maximum_concurrent_rpcs <= 0:
+ *             raise ValueError("maximum_concurrent_rpcs should be a postive integer")             # <<<<<<<<<<<<<<
+ *         self._maximum_concurrent_rpcs = maximum_concurrent_rpcs
+ *         self._active_rpcs = 0
+ */
+    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__98, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 864, __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, 864, __pyx_L1_error)
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":863
+ * 
+ *     def __cinit__(self, int maximum_concurrent_rpcs):
+ *         if maximum_concurrent_rpcs <= 0:             # <<<<<<<<<<<<<<
+ *             raise ValueError("maximum_concurrent_rpcs should be a postive integer")
+ *         self._maximum_concurrent_rpcs = maximum_concurrent_rpcs
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":865
+ *         if maximum_concurrent_rpcs <= 0:
+ *             raise ValueError("maximum_concurrent_rpcs should be a postive integer")
+ *         self._maximum_concurrent_rpcs = maximum_concurrent_rpcs             # <<<<<<<<<<<<<<
+ *         self._active_rpcs = 0
+ *         self.limiter_concurrency_exceeded = False
+ */
+  __pyx_v_self->_maximum_concurrent_rpcs = __pyx_v_maximum_concurrent_rpcs;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":866
+ *             raise ValueError("maximum_concurrent_rpcs should be a postive integer")
+ *         self._maximum_concurrent_rpcs = maximum_concurrent_rpcs
+ *         self._active_rpcs = 0             # <<<<<<<<<<<<<<
+ *         self.limiter_concurrency_exceeded = False
+ * 
+ */
+  __pyx_v_self->_active_rpcs = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":867
+ *         self._maximum_concurrent_rpcs = maximum_concurrent_rpcs
+ *         self._active_rpcs = 0
+ *         self.limiter_concurrency_exceeded = False             # <<<<<<<<<<<<<<
+ * 
+ *     def check_before_request_call(self):
+ */
+  __pyx_v_self->limiter_concurrency_exceeded = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":862
+ * cdef class _ConcurrentRpcLimiter:
+ * 
+ *     def __cinit__(self, int maximum_concurrent_rpcs):             # <<<<<<<<<<<<<<
+ *         if maximum_concurrent_rpcs <= 0:
+ *             raise ValueError("maximum_concurrent_rpcs should be a postive integer")
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("_cython.cygrpc._ConcurrentRpcLimiter.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":869
+ *         self.limiter_concurrency_exceeded = False
+ * 
+ *     def check_before_request_call(self):             # <<<<<<<<<<<<<<
+ *         if self._active_rpcs >= self._maximum_concurrent_rpcs:
+ *             self.limiter_concurrency_exceeded = True
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_21_ConcurrentRpcLimiter_3check_before_request_call(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_21_ConcurrentRpcLimiter_3check_before_request_call = {"check_before_request_call", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_21_ConcurrentRpcLimiter_3check_before_request_call, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_21_ConcurrentRpcLimiter_3check_before_request_call(PyObject *__pyx_v_self, 
+#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("check_before_request_call (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("check_before_request_call", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "check_before_request_call", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_21_ConcurrentRpcLimiter_2check_before_request_call(((struct __pyx_obj_7_cython_6cygrpc__ConcurrentRpcLimiter *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_21_ConcurrentRpcLimiter_2check_before_request_call(struct __pyx_obj_7_cython_6cygrpc__ConcurrentRpcLimiter *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  __Pyx_RefNannySetupContext("check_before_request_call", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":870
+ * 
+ *     def check_before_request_call(self):
+ *         if self._active_rpcs >= self._maximum_concurrent_rpcs:             # <<<<<<<<<<<<<<
+ *             self.limiter_concurrency_exceeded = True
+ *         else:
+ */
+  __pyx_t_1 = (__pyx_v_self->_active_rpcs >= __pyx_v_self->_maximum_concurrent_rpcs);
+  if (__pyx_t_1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":871
+ *     def check_before_request_call(self):
+ *         if self._active_rpcs >= self._maximum_concurrent_rpcs:
+ *             self.limiter_concurrency_exceeded = True             # <<<<<<<<<<<<<<
+ *         else:
+ *             self._active_rpcs += 1
+ */
+    __pyx_v_self->limiter_concurrency_exceeded = 1;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":870
+ * 
+ *     def check_before_request_call(self):
+ *         if self._active_rpcs >= self._maximum_concurrent_rpcs:             # <<<<<<<<<<<<<<
+ *             self.limiter_concurrency_exceeded = True
+ *         else:
+ */
+    goto __pyx_L3;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":873
+ *             self.limiter_concurrency_exceeded = True
+ *         else:
+ *             self._active_rpcs += 1             # <<<<<<<<<<<<<<
+ * 
+ *     def _decrease_active_rpcs_count(self, unused_future):
+ */
+  /*else*/ {
+    __pyx_v_self->_active_rpcs = (__pyx_v_self->_active_rpcs + 1);
+  }
+  __pyx_L3:;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":869
+ *         self.limiter_concurrency_exceeded = False
+ * 
+ *     def check_before_request_call(self):             # <<<<<<<<<<<<<<
+ *         if self._active_rpcs >= self._maximum_concurrent_rpcs:
+ *             self.limiter_concurrency_exceeded = True
+ */
+
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":875
+ *             self._active_rpcs += 1
+ * 
+ *     def _decrease_active_rpcs_count(self, unused_future):             # <<<<<<<<<<<<<<
+ *         self._active_rpcs -= 1
+ *         if self._active_rpcs < self._maximum_concurrent_rpcs:
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_21_ConcurrentRpcLimiter_5_decrease_active_rpcs_count(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_21_ConcurrentRpcLimiter_5_decrease_active_rpcs_count = {"_decrease_active_rpcs_count", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_21_ConcurrentRpcLimiter_5_decrease_active_rpcs_count, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_21_ConcurrentRpcLimiter_5_decrease_active_rpcs_count(PyObject *__pyx_v_self, 
+#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_unused_future = 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("_decrease_active_rpcs_count (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_unused_future,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_unused_future)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 875, __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, "_decrease_active_rpcs_count") < 0)) __PYX_ERR(9, 875, __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_unused_future = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("_decrease_active_rpcs_count", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 875, __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("_cython.cygrpc._ConcurrentRpcLimiter._decrease_active_rpcs_count", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_21_ConcurrentRpcLimiter_4_decrease_active_rpcs_count(((struct __pyx_obj_7_cython_6cygrpc__ConcurrentRpcLimiter *)__pyx_v_self), __pyx_v_unused_future);
+
+  /* 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_7_cython_6cygrpc_21_ConcurrentRpcLimiter_4_decrease_active_rpcs_count(struct __pyx_obj_7_cython_6cygrpc__ConcurrentRpcLimiter *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_unused_future) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  __Pyx_RefNannySetupContext("_decrease_active_rpcs_count", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":876
+ * 
+ *     def _decrease_active_rpcs_count(self, unused_future):
+ *         self._active_rpcs -= 1             # <<<<<<<<<<<<<<
+ *         if self._active_rpcs < self._maximum_concurrent_rpcs:
+ *             self.limiter_concurrency_exceeded = False
+ */
+  __pyx_v_self->_active_rpcs = (__pyx_v_self->_active_rpcs - 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":877
+ *     def _decrease_active_rpcs_count(self, unused_future):
+ *         self._active_rpcs -= 1
+ *         if self._active_rpcs < self._maximum_concurrent_rpcs:             # <<<<<<<<<<<<<<
+ *             self.limiter_concurrency_exceeded = False
+ * 
+ */
+  __pyx_t_1 = (__pyx_v_self->_active_rpcs < __pyx_v_self->_maximum_concurrent_rpcs);
+  if (__pyx_t_1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":878
+ *         self._active_rpcs -= 1
+ *         if self._active_rpcs < self._maximum_concurrent_rpcs:
+ *             self.limiter_concurrency_exceeded = False             # <<<<<<<<<<<<<<
+ * 
+ *     def decrease_once_finished(self, object rpc_task):
+ */
+    __pyx_v_self->limiter_concurrency_exceeded = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":877
+ *     def _decrease_active_rpcs_count(self, unused_future):
+ *         self._active_rpcs -= 1
+ *         if self._active_rpcs < self._maximum_concurrent_rpcs:             # <<<<<<<<<<<<<<
+ *             self.limiter_concurrency_exceeded = False
+ * 
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":875
+ *             self._active_rpcs += 1
+ * 
+ *     def _decrease_active_rpcs_count(self, unused_future):             # <<<<<<<<<<<<<<
+ *         self._active_rpcs -= 1
+ *         if self._active_rpcs < self._maximum_concurrent_rpcs:
+ */
+
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":880
+ *             self.limiter_concurrency_exceeded = False
+ * 
+ *     def decrease_once_finished(self, object rpc_task):             # <<<<<<<<<<<<<<
+ *         rpc_task.add_done_callback(self._decrease_active_rpcs_count)
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_21_ConcurrentRpcLimiter_7decrease_once_finished(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_21_ConcurrentRpcLimiter_7decrease_once_finished = {"decrease_once_finished", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_21_ConcurrentRpcLimiter_7decrease_once_finished, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_21_ConcurrentRpcLimiter_7decrease_once_finished(PyObject *__pyx_v_self, 
+#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_rpc_task = 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("decrease_once_finished (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_rpc_task,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_rpc_task)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 880, __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, "decrease_once_finished") < 0)) __PYX_ERR(9, 880, __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_rpc_task = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("decrease_once_finished", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 880, __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("_cython.cygrpc._ConcurrentRpcLimiter.decrease_once_finished", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_21_ConcurrentRpcLimiter_6decrease_once_finished(((struct __pyx_obj_7_cython_6cygrpc__ConcurrentRpcLimiter *)__pyx_v_self), __pyx_v_rpc_task);
+
+  /* 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_7_cython_6cygrpc_21_ConcurrentRpcLimiter_6decrease_once_finished(struct __pyx_obj_7_cython_6cygrpc__ConcurrentRpcLimiter *__pyx_v_self, PyObject *__pyx_v_rpc_task) {
+  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("decrease_once_finished", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":881
+ * 
+ *     def decrease_once_finished(self, object rpc_task):
+ *         rpc_task.add_done_callback(self._decrease_active_rpcs_count)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rpc_task, __pyx_n_s_add_done_callback); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 881, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_decrease_active_rpcs_count); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 881, __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(9, 881, __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/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":880
+ *             self.limiter_concurrency_exceeded = False
+ * 
+ *     def decrease_once_finished(self, object rpc_task):             # <<<<<<<<<<<<<<
+ *         rpc_task.add_done_callback(self._decrease_active_rpcs_count)
+ * 
+ */
+
+  /* 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("_cython.cygrpc._ConcurrentRpcLimiter.decrease_once_finished", __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, "no default __reduce__ due to non-trivial __cinit__"
+ * def __setstate_cython__(self, __pyx_state):
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_21_ConcurrentRpcLimiter_9__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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_21_ConcurrentRpcLimiter_9__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_21_ConcurrentRpcLimiter_9__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_21_ConcurrentRpcLimiter_9__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_7_cython_6cygrpc_21_ConcurrentRpcLimiter_8__reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc__ConcurrentRpcLimiter *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_21_ConcurrentRpcLimiter_8__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__ConcurrentRpcLimiter *__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(10, 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("_cython.cygrpc._ConcurrentRpcLimiter.__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_7_cython_6cygrpc_21_ConcurrentRpcLimiter_11__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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_21_ConcurrentRpcLimiter_11__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_21_ConcurrentRpcLimiter_11__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_21_ConcurrentRpcLimiter_11__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(10, 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(10, 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(10, 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("_cython.cygrpc._ConcurrentRpcLimiter.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_21_ConcurrentRpcLimiter_10__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc__ConcurrentRpcLimiter *)__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_7_cython_6cygrpc_21_ConcurrentRpcLimiter_10__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7_cython_6cygrpc__ConcurrentRpcLimiter *__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(10, 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("_cython.cygrpc._ConcurrentRpcLimiter.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":886
+ * cdef class AioServer:
+ * 
+ *     def __init__(self, loop, thread_pool, generic_handlers, interceptors,             # <<<<<<<<<<<<<<
+ *                  options, maximum_concurrent_rpcs):
+ *         init_grpc_aio()
+ */
+
+/* Python wrapper */
+static int __pyx_pw_7_cython_6cygrpc_9AioServer_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_7_cython_6cygrpc_9AioServer_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_loop = 0;
+  PyObject *__pyx_v_thread_pool = 0;
+  PyObject *__pyx_v_generic_handlers = 0;
+  PyObject *__pyx_v_interceptors = 0;
+  PyObject *__pyx_v_options = 0;
+  PyObject *__pyx_v_maximum_concurrent_rpcs = 0;
+  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
+  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;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__init__ (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);
+  {
+    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_loop,&__pyx_n_s_thread_pool,&__pyx_n_s_generic_handlers,&__pyx_n_s_interceptors,&__pyx_n_s_options,&__pyx_n_s_maximum_concurrent_rpcs,0};
+    if (__pyx_kwds) {
+      Py_ssize_t kw_args;
+      switch (__pyx_nargs) {
+        case  6: values[5] = __Pyx_Arg_VARARGS(__pyx_args, 5);
+        CYTHON_FALLTHROUGH;
+        case  5: values[4] = __Pyx_Arg_VARARGS(__pyx_args, 4);
+        CYTHON_FALLTHROUGH;
+        case  4: values[3] = __Pyx_Arg_VARARGS(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
+        case  3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
+      switch (__pyx_nargs) {
+        case  0:
+        if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_loop)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 886, __pyx_L3_error)
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_thread_pool)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 886, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__init__", 1, 6, 6, 1); __PYX_ERR(9, 886, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_generic_handlers)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[2]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 886, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__init__", 1, 6, 6, 2); __PYX_ERR(9, 886, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  3:
+        if (likely((values[3] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_interceptors)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[3]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 886, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__init__", 1, 6, 6, 3); __PYX_ERR(9, 886, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  4:
+        if (likely((values[4] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_options)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[4]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 886, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__init__", 1, 6, 6, 4); __PYX_ERR(9, 886, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  5:
+        if (likely((values[5] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_maximum_concurrent_rpcs)) != 0)) {
+          (void)__Pyx_Arg_NewRef_VARARGS(values[5]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 886, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__init__", 1, 6, 6, 5); __PYX_ERR(9, 886, __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, "__init__") < 0)) __PYX_ERR(9, 886, __pyx_L3_error)
+      }
+    } else if (unlikely(__pyx_nargs != 6)) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
+      values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
+      values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
+      values[3] = __Pyx_Arg_VARARGS(__pyx_args, 3);
+      values[4] = __Pyx_Arg_VARARGS(__pyx_args, 4);
+      values[5] = __Pyx_Arg_VARARGS(__pyx_args, 5);
+    }
+    __pyx_v_loop = values[0];
+    __pyx_v_thread_pool = values[1];
+    __pyx_v_generic_handlers = values[2];
+    __pyx_v_interceptors = values[3];
+    __pyx_v_options = values[4];
+    __pyx_v_maximum_concurrent_rpcs = values[5];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__init__", 1, 6, 6, __pyx_nargs); __PYX_ERR(9, 886, __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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_AddTraceback("_cython.cygrpc.AioServer.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_9AioServer___init__(((struct __pyx_obj_7_cython_6cygrpc_AioServer *)__pyx_v_self), __pyx_v_loop, __pyx_v_thread_pool, __pyx_v_generic_handlers, __pyx_v_interceptors, __pyx_v_options, __pyx_v_maximum_concurrent_rpcs);
+
+  /* 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_VARARGS(values[__pyx_temp]);
+    }
+  }
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_7_cython_6cygrpc_9AioServer___init__(struct __pyx_obj_7_cython_6cygrpc_AioServer *__pyx_v_self, PyObject *__pyx_v_loop, PyObject *__pyx_v_thread_pool, PyObject *__pyx_v_generic_handlers, PyObject *__pyx_v_interceptors, PyObject *__pyx_v_options, PyObject *__pyx_v_maximum_concurrent_rpcs) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  grpc_completion_queue *__pyx_t_3;
+  PyObject *__pyx_t_4 = NULL;
+  unsigned int __pyx_t_5;
+  int __pyx_t_6;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__init__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":888
+ *     def __init__(self, loop, thread_pool, generic_handlers, interceptors,
+ *                  options, maximum_concurrent_rpcs):
+ *         init_grpc_aio()             # <<<<<<<<<<<<<<
+ *         # NOTE(lidiz) Core objects won't be deallocated automatically.
+ *         # If AioServer.shutdown is not called, those objects will leak.
+ */
+  __pyx_t_1 = __pyx_f_7_cython_6cygrpc_init_grpc_aio(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 888, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":892
+ *         # If AioServer.shutdown is not called, those objects will leak.
+ *         # TODO(rbellevi): Support xDS in aio server.
+ *         self._server = Server(options, False)             # <<<<<<<<<<<<<<
+ *         grpc_server_register_completion_queue(
+ *             self._server.c_server,
+ */
+  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 892, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(__pyx_v_options);
+  __Pyx_GIVEREF(__pyx_v_options);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_options)) __PYX_ERR(9, 892, __pyx_L1_error);
+  __Pyx_INCREF(Py_False);
+  __Pyx_GIVEREF(Py_False);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, Py_False)) __PYX_ERR(9, 892, __pyx_L1_error);
+  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_7_cython_6cygrpc_Server), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 892, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_GIVEREF(__pyx_t_2);
+  __Pyx_GOTREF((PyObject *)__pyx_v_self->_server);
+  __Pyx_DECREF((PyObject *)__pyx_v_self->_server);
+  __pyx_v_self->_server = ((struct __pyx_obj_7_cython_6cygrpc_Server *)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":895
+ *         grpc_server_register_completion_queue(
+ *             self._server.c_server,
+ *             global_completion_queue(),             # <<<<<<<<<<<<<<
+ *             NULL
+ *         )
+ */
+  __pyx_t_3 = __pyx_f_7_cython_6cygrpc_global_completion_queue(); if (unlikely(__pyx_t_3 == ((grpc_completion_queue *)NULL) && PyErr_Occurred())) __PYX_ERR(9, 895, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":893
+ *         # TODO(rbellevi): Support xDS in aio server.
+ *         self._server = Server(options, False)
+ *         grpc_server_register_completion_queue(             # <<<<<<<<<<<<<<
+ *             self._server.c_server,
+ *             global_completion_queue(),
+ */
+  grpc_server_register_completion_queue(__pyx_v_self->_server->c_server, __pyx_t_3, NULL);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":899
+ *         )
+ * 
+ *         self._loop = loop             # <<<<<<<<<<<<<<
+ *         self._status = AIO_SERVER_STATUS_READY
+ *         self._generic_handlers = []
+ */
+  __Pyx_INCREF(__pyx_v_loop);
+  __Pyx_GIVEREF(__pyx_v_loop);
+  __Pyx_GOTREF(__pyx_v_self->_loop);
+  __Pyx_DECREF(__pyx_v_self->_loop);
+  __pyx_v_self->_loop = __pyx_v_loop;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":900
+ * 
+ *         self._loop = loop
+ *         self._status = AIO_SERVER_STATUS_READY             # <<<<<<<<<<<<<<
+ *         self._generic_handlers = []
+ *         self.add_generic_rpc_handlers(generic_handlers)
+ */
+  __pyx_v_self->_status = __pyx_e_7_cython_6cygrpc_AIO_SERVER_STATUS_READY;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":901
+ *         self._loop = loop
+ *         self._status = AIO_SERVER_STATUS_READY
+ *         self._generic_handlers = []             # <<<<<<<<<<<<<<
+ *         self.add_generic_rpc_handlers(generic_handlers)
+ *         self._serving_task = None
+ */
+  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 901, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_2);
+  __Pyx_GOTREF(__pyx_v_self->_generic_handlers);
+  __Pyx_DECREF(__pyx_v_self->_generic_handlers);
+  __pyx_v_self->_generic_handlers = ((PyObject*)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":902
+ *         self._status = AIO_SERVER_STATUS_READY
+ *         self._generic_handlers = []
+ *         self.add_generic_rpc_handlers(generic_handlers)             # <<<<<<<<<<<<<<
+ *         self._serving_task = None
+ * 
+ */
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_generic_rpc_handlers); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 902, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_4 = NULL;
+  __pyx_t_5 = 0;
+  #if CYTHON_UNPACK_METHODS
+  if (likely(PyMethod_Check(__pyx_t_1))) {
+    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
+    if (likely(__pyx_t_4)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+      __Pyx_INCREF(__pyx_t_4);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_1, function);
+      __pyx_t_5 = 1;
+    }
+  }
+  #endif
+  {
+    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_generic_handlers};
+    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __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(9, 902, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  }
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":903
+ *         self._generic_handlers = []
+ *         self.add_generic_rpc_handlers(generic_handlers)
+ *         self._serving_task = None             # <<<<<<<<<<<<<<
+ * 
+ *         self._shutdown_lock = asyncio.Lock()
+ */
+  __Pyx_INCREF(Py_None);
+  __Pyx_GIVEREF(Py_None);
+  __Pyx_GOTREF(__pyx_v_self->_serving_task);
+  __Pyx_DECREF(__pyx_v_self->_serving_task);
+  __pyx_v_self->_serving_task = Py_None;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":905
+ *         self._serving_task = None
+ * 
+ *         self._shutdown_lock = asyncio.Lock()             # <<<<<<<<<<<<<<
+ *         self._shutdown_completed = self._loop.create_future()
+ *         self._shutdown_callback_wrapper = CallbackWrapper(
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_asyncio); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 905, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_Lock); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 905, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = NULL;
+  __pyx_t_5 = 0;
+  #if CYTHON_UNPACK_METHODS
+  if (unlikely(PyMethod_Check(__pyx_t_4))) {
+    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4);
+    if (likely(__pyx_t_1)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+      __Pyx_INCREF(__pyx_t_1);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_4, function);
+      __pyx_t_5 = 1;
+    }
+  }
+  #endif
+  {
+    PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL};
+    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
+    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+    if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 905, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  }
+  __Pyx_GIVEREF(__pyx_t_2);
+  __Pyx_GOTREF(__pyx_v_self->_shutdown_lock);
+  __Pyx_DECREF(__pyx_v_self->_shutdown_lock);
+  __pyx_v_self->_shutdown_lock = __pyx_t_2;
+  __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":906
+ * 
+ *         self._shutdown_lock = asyncio.Lock()
+ *         self._shutdown_completed = self._loop.create_future()             # <<<<<<<<<<<<<<
+ *         self._shutdown_callback_wrapper = CallbackWrapper(
+ *             self._shutdown_completed,
+ */
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_loop, __pyx_n_s_create_future); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 906, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_1 = NULL;
+  __pyx_t_5 = 0;
+  #if CYTHON_UNPACK_METHODS
+  if (likely(PyMethod_Check(__pyx_t_4))) {
+    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4);
+    if (likely(__pyx_t_1)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+      __Pyx_INCREF(__pyx_t_1);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_4, function);
+      __pyx_t_5 = 1;
+    }
+  }
+  #endif
+  {
+    PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL};
+    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
+    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+    if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 906, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  }
+  __Pyx_GIVEREF(__pyx_t_2);
+  __Pyx_GOTREF(__pyx_v_self->_shutdown_completed);
+  __Pyx_DECREF(__pyx_v_self->_shutdown_completed);
+  __pyx_v_self->_shutdown_completed = __pyx_t_2;
+  __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":907
+ *         self._shutdown_lock = asyncio.Lock()
+ *         self._shutdown_completed = self._loop.create_future()
+ *         self._shutdown_callback_wrapper = CallbackWrapper(             # <<<<<<<<<<<<<<
+ *             self._shutdown_completed,
+ *             self._loop,
+ */
+  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 907, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_v_self->_shutdown_completed);
+  __Pyx_GIVEREF(__pyx_v_self->_shutdown_completed);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_self->_shutdown_completed)) __PYX_ERR(9, 907, __pyx_L1_error);
+  __Pyx_INCREF(__pyx_v_self->_loop);
+  __Pyx_GIVEREF(__pyx_v_self->_loop);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_self->_loop)) __PYX_ERR(9, 907, __pyx_L1_error);
+  __Pyx_INCREF((PyObject *)__pyx_v_7_cython_6cygrpc_SERVER_SHUTDOWN_FAILURE_HANDLER);
+  __Pyx_GIVEREF((PyObject *)__pyx_v_7_cython_6cygrpc_SERVER_SHUTDOWN_FAILURE_HANDLER);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 2, ((PyObject *)__pyx_v_7_cython_6cygrpc_SERVER_SHUTDOWN_FAILURE_HANDLER))) __PYX_ERR(9, 907, __pyx_L1_error);
+  __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_7_cython_6cygrpc_CallbackWrapper), __pyx_t_2, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 907, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_GIVEREF(__pyx_t_4);
+  __Pyx_GOTREF((PyObject *)__pyx_v_self->_shutdown_callback_wrapper);
+  __Pyx_DECREF((PyObject *)__pyx_v_self->_shutdown_callback_wrapper);
+  __pyx_v_self->_shutdown_callback_wrapper = ((struct __pyx_obj_7_cython_6cygrpc_CallbackWrapper *)__pyx_t_4);
+  __pyx_t_4 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":911
+ *             self._loop,
+ *             SERVER_SHUTDOWN_FAILURE_HANDLER)
+ *         self._crash_exception = None             # <<<<<<<<<<<<<<
+ * 
+ *         if interceptors:
+ */
+  __Pyx_INCREF(Py_None);
+  __Pyx_GIVEREF(Py_None);
+  __Pyx_GOTREF(__pyx_v_self->_crash_exception);
+  __Pyx_DECREF(__pyx_v_self->_crash_exception);
+  __pyx_v_self->_crash_exception = Py_None;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":913
+ *         self._crash_exception = None
+ * 
+ *         if interceptors:             # <<<<<<<<<<<<<<
+ *             self._interceptors = tuple(interceptors)
+ *         else:
+ */
+  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_interceptors); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(9, 913, __pyx_L1_error)
+  if (__pyx_t_6) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":914
+ * 
+ *         if interceptors:
+ *             self._interceptors = tuple(interceptors)             # <<<<<<<<<<<<<<
+ *         else:
+ *             self._interceptors = ()
+ */
+    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_interceptors); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 914, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_GIVEREF(__pyx_t_4);
+    __Pyx_GOTREF(__pyx_v_self->_interceptors);
+    __Pyx_DECREF(__pyx_v_self->_interceptors);
+    __pyx_v_self->_interceptors = ((PyObject*)__pyx_t_4);
+    __pyx_t_4 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":913
+ *         self._crash_exception = None
+ * 
+ *         if interceptors:             # <<<<<<<<<<<<<<
+ *             self._interceptors = tuple(interceptors)
+ *         else:
+ */
+    goto __pyx_L3;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":916
+ *             self._interceptors = tuple(interceptors)
+ *         else:
+ *             self._interceptors = ()             # <<<<<<<<<<<<<<
+ * 
+ *         self._thread_pool = thread_pool
+ */
+  /*else*/ {
+    __Pyx_INCREF(__pyx_empty_tuple);
+    __Pyx_GIVEREF(__pyx_empty_tuple);
+    __Pyx_GOTREF(__pyx_v_self->_interceptors);
+    __Pyx_DECREF(__pyx_v_self->_interceptors);
+    __pyx_v_self->_interceptors = __pyx_empty_tuple;
+  }
+  __pyx_L3:;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":918
+ *             self._interceptors = ()
+ * 
+ *         self._thread_pool = thread_pool             # <<<<<<<<<<<<<<
+ *         if maximum_concurrent_rpcs is not None:
+ *             self._limiter = _ConcurrentRpcLimiter(maximum_concurrent_rpcs)
+ */
+  __Pyx_INCREF(__pyx_v_thread_pool);
+  __Pyx_GIVEREF(__pyx_v_thread_pool);
+  __Pyx_GOTREF(__pyx_v_self->_thread_pool);
+  __Pyx_DECREF(__pyx_v_self->_thread_pool);
+  __pyx_v_self->_thread_pool = __pyx_v_thread_pool;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":919
+ * 
+ *         self._thread_pool = thread_pool
+ *         if maximum_concurrent_rpcs is not None:             # <<<<<<<<<<<<<<
+ *             self._limiter = _ConcurrentRpcLimiter(maximum_concurrent_rpcs)
+ * 
+ */
+  __pyx_t_6 = (__pyx_v_maximum_concurrent_rpcs != Py_None);
+  if (__pyx_t_6) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":920
+ *         self._thread_pool = thread_pool
+ *         if maximum_concurrent_rpcs is not None:
+ *             self._limiter = _ConcurrentRpcLimiter(maximum_concurrent_rpcs)             # <<<<<<<<<<<<<<
+ * 
+ *     def add_generic_rpc_handlers(self, object generic_rpc_handlers):
+ */
+    __pyx_t_4 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_7_cython_6cygrpc__ConcurrentRpcLimiter), __pyx_v_maximum_concurrent_rpcs); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 920, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_GIVEREF(__pyx_t_4);
+    __Pyx_GOTREF((PyObject *)__pyx_v_self->_limiter);
+    __Pyx_DECREF((PyObject *)__pyx_v_self->_limiter);
+    __pyx_v_self->_limiter = ((struct __pyx_obj_7_cython_6cygrpc__ConcurrentRpcLimiter *)__pyx_t_4);
+    __pyx_t_4 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":919
+ * 
+ *         self._thread_pool = thread_pool
+ *         if maximum_concurrent_rpcs is not None:             # <<<<<<<<<<<<<<
+ *             self._limiter = _ConcurrentRpcLimiter(maximum_concurrent_rpcs)
+ * 
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":886
+ * cdef class AioServer:
+ * 
+ *     def __init__(self, loop, thread_pool, generic_handlers, interceptors,             # <<<<<<<<<<<<<<
+ *                  options, maximum_concurrent_rpcs):
+ *         init_grpc_aio()
+ */
+
+  /* function exit code */
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("_cython.cygrpc.AioServer.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":922
+ *             self._limiter = _ConcurrentRpcLimiter(maximum_concurrent_rpcs)
+ * 
+ *     def add_generic_rpc_handlers(self, object generic_rpc_handlers):             # <<<<<<<<<<<<<<
+ *         self._generic_handlers.extend(generic_rpc_handlers)
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_9AioServer_3add_generic_rpc_handlers(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_9AioServer_3add_generic_rpc_handlers = {"add_generic_rpc_handlers", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_9AioServer_3add_generic_rpc_handlers, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_9AioServer_3add_generic_rpc_handlers(PyObject *__pyx_v_self, 
+#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_generic_rpc_handlers = 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("add_generic_rpc_handlers (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_generic_rpc_handlers,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_generic_rpc_handlers)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 922, __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, "add_generic_rpc_handlers") < 0)) __PYX_ERR(9, 922, __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_generic_rpc_handlers = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("add_generic_rpc_handlers", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 922, __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("_cython.cygrpc.AioServer.add_generic_rpc_handlers", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_9AioServer_2add_generic_rpc_handlers(((struct __pyx_obj_7_cython_6cygrpc_AioServer *)__pyx_v_self), __pyx_v_generic_rpc_handlers);
+
+  /* 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_7_cython_6cygrpc_9AioServer_2add_generic_rpc_handlers(struct __pyx_obj_7_cython_6cygrpc_AioServer *__pyx_v_self, PyObject *__pyx_v_generic_rpc_handlers) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("add_generic_rpc_handlers", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":923
+ * 
+ *     def add_generic_rpc_handlers(self, object generic_rpc_handlers):
+ *         self._generic_handlers.extend(generic_rpc_handlers)             # <<<<<<<<<<<<<<
+ * 
+ *     def add_insecure_port(self, address):
+ */
+  if (unlikely(__pyx_v_self->_generic_handlers == Py_None)) {
+    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "extend");
+    __PYX_ERR(9, 923, __pyx_L1_error)
+  }
+  __pyx_t_1 = __Pyx_PyList_Extend(__pyx_v_self->_generic_handlers, __pyx_v_generic_rpc_handlers); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(9, 923, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":922
+ *             self._limiter = _ConcurrentRpcLimiter(maximum_concurrent_rpcs)
+ * 
+ *     def add_generic_rpc_handlers(self, object generic_rpc_handlers):             # <<<<<<<<<<<<<<
+ *         self._generic_handlers.extend(generic_rpc_handlers)
+ * 
+ */
+
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc.AioServer.add_generic_rpc_handlers", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":925
+ *         self._generic_handlers.extend(generic_rpc_handlers)
+ * 
+ *     def add_insecure_port(self, address):             # <<<<<<<<<<<<<<
+ *         return self._server.add_http2_port(address)
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_9AioServer_5add_insecure_port(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_9AioServer_5add_insecure_port = {"add_insecure_port", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_9AioServer_5add_insecure_port, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_9AioServer_5add_insecure_port(PyObject *__pyx_v_self, 
+#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_address = 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("add_insecure_port (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_address,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_address)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 925, __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, "add_insecure_port") < 0)) __PYX_ERR(9, 925, __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_address = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("add_insecure_port", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 925, __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("_cython.cygrpc.AioServer.add_insecure_port", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_9AioServer_4add_insecure_port(((struct __pyx_obj_7_cython_6cygrpc_AioServer *)__pyx_v_self), __pyx_v_address);
+
+  /* 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_7_cython_6cygrpc_9AioServer_4add_insecure_port(struct __pyx_obj_7_cython_6cygrpc_AioServer *__pyx_v_self, PyObject *__pyx_v_address) {
+  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("add_insecure_port", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":926
+ * 
+ *     def add_insecure_port(self, address):
+ *         return self._server.add_http2_port(address)             # <<<<<<<<<<<<<<
+ * 
+ *     def add_secure_port(self, address, server_credentials):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_server), __pyx_n_s_add_http2_port); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 926, __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_address};
+    __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, 926, __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/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":925
+ *         self._generic_handlers.extend(generic_rpc_handlers)
+ * 
+ *     def add_insecure_port(self, address):             # <<<<<<<<<<<<<<
+ *         return self._server.add_http2_port(address)
+ * 
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("_cython.cygrpc.AioServer.add_insecure_port", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":928
+ *         return self._server.add_http2_port(address)
+ * 
+ *     def add_secure_port(self, address, server_credentials):             # <<<<<<<<<<<<<<
+ *         return self._server.add_http2_port(address,
+ *                                            server_credentials._credentials)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_9AioServer_7add_secure_port(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_9AioServer_7add_secure_port = {"add_secure_port", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_9AioServer_7add_secure_port, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_9AioServer_7add_secure_port(PyObject *__pyx_v_self, 
+#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_address = 0;
+  PyObject *__pyx_v_server_credentials = 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("add_secure_port (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_address,&__pyx_n_s_server_credentials,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_address)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 928, __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_server_credentials)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[1]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 928, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("add_secure_port", 1, 2, 2, 1); __PYX_ERR(9, 928, __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, "add_secure_port") < 0)) __PYX_ERR(9, 928, __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_address = values[0];
+    __pyx_v_server_credentials = values[1];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("add_secure_port", 1, 2, 2, __pyx_nargs); __PYX_ERR(9, 928, __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("_cython.cygrpc.AioServer.add_secure_port", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_9AioServer_6add_secure_port(((struct __pyx_obj_7_cython_6cygrpc_AioServer *)__pyx_v_self), __pyx_v_address, __pyx_v_server_credentials);
+
+  /* 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_7_cython_6cygrpc_9AioServer_6add_secure_port(struct __pyx_obj_7_cython_6cygrpc_AioServer *__pyx_v_self, PyObject *__pyx_v_address, PyObject *__pyx_v_server_credentials) {
+  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("add_secure_port", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":929
+ * 
+ *     def add_secure_port(self, address, server_credentials):
+ *         return self._server.add_http2_port(address,             # <<<<<<<<<<<<<<
+ *                                            server_credentials._credentials)
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_server), __pyx_n_s_add_http2_port); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 929, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":930
+ *     def add_secure_port(self, address, server_credentials):
+ *         return self._server.add_http2_port(address,
+ *                                            server_credentials._credentials)             # <<<<<<<<<<<<<<
+ * 
+ *     async def _request_call(self):
+ */
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_server_credentials, __pyx_n_s_credentials_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 930, __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_v_address, __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(9, 929, __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/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":928
+ *         return self._server.add_http2_port(address)
+ * 
+ *     def add_secure_port(self, address, server_credentials):             # <<<<<<<<<<<<<<
+ *         return self._server.add_http2_port(address,
+ *                                            server_credentials._credentials)
+ */
+
+  /* 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("_cython.cygrpc.AioServer.add_secure_port", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+static PyObject *__pyx_gb_7_cython_6cygrpc_9AioServer_10generator38(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":932
+ *                                            server_credentials._credentials)
+ * 
+ *     async def _request_call(self):             # <<<<<<<<<<<<<<
+ *         cdef grpc_call_error error
+ *         cdef RPCState rpc_state = RPCState(self)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_9AioServer_9_request_call(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_9AioServer_9_request_call = {"_request_call", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_9AioServer_9_request_call, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_9AioServer_9_request_call(PyObject *__pyx_v_self, 
+#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("_request_call (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("_request_call", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "_request_call", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_9AioServer_8_request_call(((struct __pyx_obj_7_cython_6cygrpc_AioServer *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_9AioServer_8_request_call(struct __pyx_obj_7_cython_6cygrpc_AioServer *__pyx_v_self) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_49__request_call *__pyx_cur_scope;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_request_call", 0);
+  __pyx_cur_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_49__request_call *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_49__request_call(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_49__request_call, __pyx_empty_tuple, NULL);
+  if (unlikely(!__pyx_cur_scope)) {
+    __pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_49__request_call *)Py_None);
+    __Pyx_INCREF(Py_None);
+    __PYX_ERR(9, 932, __pyx_L1_error)
+  } else {
+    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+  }
+  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
+  {
+    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7_cython_6cygrpc_9AioServer_10generator38, __pyx_codeobj__99, (PyObject *) __pyx_cur_scope, __pyx_n_s_request_call, __pyx_n_s_AioServer__request_call, __pyx_n_s_cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(9, 932, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_cur_scope);
+    __Pyx_RefNannyFinishContext();
+    return (PyObject *) gen;
+  }
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc.AioServer._request_call", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_gb_7_cython_6cygrpc_9AioServer_10generator38(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
+{
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_49__request_call *__pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_49__request_call *)__pyx_generator->closure);
+  PyObject *__pyx_r = NULL;
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  unsigned int __pyx_t_4;
+  grpc_completion_queue *__pyx_t_5;
+  grpc_completion_queue *__pyx_t_6;
+  grpc_completion_queue_functor *__pyx_t_7;
+  int __pyx_t_8;
+  PyObject *__pyx_t_9 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("_request_call", 0);
+  switch (__pyx_generator->resume_label) {
+    case 0: goto __pyx_L3_first_run;
+    case 1: goto __pyx_L5_resume_from_await;
+    default: /* CPython raises the right error here */
+    __Pyx_RefNannyFinishContext();
+    return NULL;
+  }
+  __pyx_L3_first_run:;
+  if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 932, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":934
+ *     async def _request_call(self):
+ *         cdef grpc_call_error error
+ *         cdef RPCState rpc_state = RPCState(self)             # <<<<<<<<<<<<<<
+ *         cdef object future = self._loop.create_future()
+ *         cdef CallbackWrapper wrapper = CallbackWrapper(
+ */
+  __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_7_cython_6cygrpc_RPCState), ((PyObject *)__pyx_cur_scope->__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 934, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __pyx_cur_scope->__pyx_v_rpc_state = ((struct __pyx_obj_7_cython_6cygrpc_RPCState *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":935
+ *         cdef grpc_call_error error
+ *         cdef RPCState rpc_state = RPCState(self)
+ *         cdef object future = self._loop.create_future()             # <<<<<<<<<<<<<<
+ *         cdef CallbackWrapper wrapper = CallbackWrapper(
+ *             future,
+ */
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self->_loop, __pyx_n_s_create_future); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 935, __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(9, 935, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  }
+  __Pyx_GIVEREF(__pyx_t_1);
+  __pyx_cur_scope->__pyx_v_future = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":936
+ *         cdef RPCState rpc_state = RPCState(self)
+ *         cdef object future = self._loop.create_future()
+ *         cdef CallbackWrapper wrapper = CallbackWrapper(             # <<<<<<<<<<<<<<
+ *             future,
+ *             self._loop,
+ */
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 936, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_future);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_future);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_cur_scope->__pyx_v_future)) __PYX_ERR(9, 936, __pyx_L1_error);
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self->_loop);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self->_loop);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_cur_scope->__pyx_v_self->_loop)) __PYX_ERR(9, 936, __pyx_L1_error);
+  __Pyx_INCREF((PyObject *)__pyx_v_7_cython_6cygrpc_REQUEST_CALL_FAILURE_HANDLER);
+  __Pyx_GIVEREF((PyObject *)__pyx_v_7_cython_6cygrpc_REQUEST_CALL_FAILURE_HANDLER);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, ((PyObject *)__pyx_v_7_cython_6cygrpc_REQUEST_CALL_FAILURE_HANDLER))) __PYX_ERR(9, 936, __pyx_L1_error);
+  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_7_cython_6cygrpc_CallbackWrapper), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 936, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_GIVEREF(__pyx_t_2);
+  __pyx_cur_scope->__pyx_v_wrapper = ((struct __pyx_obj_7_cython_6cygrpc_CallbackWrapper *)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":943
+ *             self._server.c_server, &rpc_state.call, &rpc_state.details,
+ *             &rpc_state.request_metadata,
+ *             global_completion_queue(), global_completion_queue(),             # <<<<<<<<<<<<<<
+ *             wrapper.c_functor()
+ *         )
+ */
+  __pyx_t_5 = __pyx_f_7_cython_6cygrpc_global_completion_queue(); if (unlikely(__pyx_t_5 == ((grpc_completion_queue *)NULL) && PyErr_Occurred())) __PYX_ERR(9, 943, __pyx_L1_error)
+  __pyx_t_6 = __pyx_f_7_cython_6cygrpc_global_completion_queue(); if (unlikely(__pyx_t_6 == ((grpc_completion_queue *)NULL) && PyErr_Occurred())) __PYX_ERR(9, 943, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":944
+ *             &rpc_state.request_metadata,
+ *             global_completion_queue(), global_completion_queue(),
+ *             wrapper.c_functor()             # <<<<<<<<<<<<<<
+ *         )
+ *         if error != GRPC_CALL_OK:
+ */
+  __pyx_t_7 = ((struct __pyx_vtabstruct_7_cython_6cygrpc_CallbackWrapper *)__pyx_cur_scope->__pyx_v_wrapper->__pyx_vtab)->c_functor(__pyx_cur_scope->__pyx_v_wrapper); if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 944, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":940
+ *             self._loop,
+ *             REQUEST_CALL_FAILURE_HANDLER)
+ *         error = grpc_server_request_call(             # <<<<<<<<<<<<<<
+ *             self._server.c_server, &rpc_state.call, &rpc_state.details,
+ *             &rpc_state.request_metadata,
+ */
+  __pyx_cur_scope->__pyx_v_error = grpc_server_request_call(__pyx_cur_scope->__pyx_v_self->_server->c_server, (&__pyx_cur_scope->__pyx_v_rpc_state->__pyx_base.call), (&__pyx_cur_scope->__pyx_v_rpc_state->details), (&__pyx_cur_scope->__pyx_v_rpc_state->request_metadata), __pyx_t_5, __pyx_t_6, __pyx_t_7);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":946
+ *             wrapper.c_functor()
+ *         )
+ *         if error != GRPC_CALL_OK:             # <<<<<<<<<<<<<<
+ *             raise InternalError("Error in grpc_server_request_call: %s" % error)
+ * 
+ */
+  __pyx_t_8 = (__pyx_cur_scope->__pyx_v_error != GRPC_CALL_OK);
+  if (unlikely(__pyx_t_8)) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":947
+ *         )
+ *         if error != GRPC_CALL_OK:
+ *             raise InternalError("Error in grpc_server_request_call: %s" % error)             # <<<<<<<<<<<<<<
+ * 
+ *         await future
+ */
+    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_InternalError); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 947, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_3 = __Pyx_PyInt_From_grpc_call_error(__pyx_cur_scope->__pyx_v_error); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 947, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_9 = __Pyx_PyString_Format(__pyx_kp_s_Error_in_grpc_server_request_cal, __pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 947, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_9);
+    __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_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_t_9};
+      __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;
+      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+      if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 947, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    }
+    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __PYX_ERR(9, 947, __pyx_L1_error)
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":946
+ *             wrapper.c_functor()
+ *         )
+ *         if error != GRPC_CALL_OK:             # <<<<<<<<<<<<<<
+ *             raise InternalError("Error in grpc_server_request_call: %s" % error)
+ * 
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":949
+ *             raise InternalError("Error in grpc_server_request_call: %s" % error)
+ * 
+ *         await future             # <<<<<<<<<<<<<<
+ *         return rpc_state
+ * 
+ */
+  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_cur_scope->__pyx_v_future);
+  __Pyx_XGOTREF(__pyx_r);
+  if (likely(__pyx_r)) {
+    __Pyx_XGIVEREF(__pyx_r);
+    __Pyx_RefNannyFinishContext();
+    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+    /* return from generator, awaiting value */
+    __pyx_generator->resume_label = 1;
+    return __pyx_r;
+    __pyx_L5_resume_from_await:;
+    if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 949, __pyx_L1_error)
+  } else {
+    PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType();
+    if (exc_type) {
+      if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
+      else __PYX_ERR(9, 949, __pyx_L1_error)
+    }
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":950
+ * 
+ *         await future
+ *         return rpc_state             # <<<<<<<<<<<<<<
+ * 
+ *     async def _server_main_loop(self,
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_r = NULL; __Pyx_ReturnWithStopIteration(((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
+  goto __pyx_L0;
+  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":932
+ *                                            server_credentials._credentials)
+ * 
+ *     async def _request_call(self):             # <<<<<<<<<<<<<<
+ *         cdef grpc_call_error error
+ *         cdef RPCState rpc_state = RPCState(self)
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_Generator_Replace_StopIteration(0);
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_AddTraceback("_request_call", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
+  #if !CYTHON_USE_EXC_INFO_STACK
+  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+  #endif
+  __pyx_generator->resume_label = -1;
+  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+static PyObject *__pyx_gb_7_cython_6cygrpc_9AioServer_13generator39(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":952
+ *         return rpc_state
+ * 
+ *     async def _server_main_loop(self,             # <<<<<<<<<<<<<<
+ *                                 object server_started):
+ *         self._server.start(backup_queue=False)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_9AioServer_12_server_main_loop(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_9AioServer_12_server_main_loop = {"_server_main_loop", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_9AioServer_12_server_main_loop, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_9AioServer_12_server_main_loop(PyObject *__pyx_v_self, 
+#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_server_started = 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("_server_main_loop (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_server_started,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_server_started)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 952, __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, "_server_main_loop") < 0)) __PYX_ERR(9, 952, __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_server_started = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("_server_main_loop", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 952, __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("_cython.cygrpc.AioServer._server_main_loop", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_9AioServer_11_server_main_loop(((struct __pyx_obj_7_cython_6cygrpc_AioServer *)__pyx_v_self), __pyx_v_server_started);
+
+  /* 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_7_cython_6cygrpc_9AioServer_11_server_main_loop(struct __pyx_obj_7_cython_6cygrpc_AioServer *__pyx_v_self, PyObject *__pyx_v_server_started) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop *__pyx_cur_scope;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_server_main_loop", 0);
+  __pyx_cur_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop, __pyx_empty_tuple, NULL);
+  if (unlikely(!__pyx_cur_scope)) {
+    __pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop *)Py_None);
+    __Pyx_INCREF(Py_None);
+    __PYX_ERR(9, 952, __pyx_L1_error)
+  } else {
+    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+  }
+  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
+  __pyx_cur_scope->__pyx_v_server_started = __pyx_v_server_started;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_server_started);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_server_started);
+  {
+    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7_cython_6cygrpc_9AioServer_13generator39, __pyx_codeobj__100, (PyObject *) __pyx_cur_scope, __pyx_n_s_server_main_loop, __pyx_n_s_AioServer__server_main_loop, __pyx_n_s_cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(9, 952, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_cur_scope);
+    __Pyx_RefNannyFinishContext();
+    return (PyObject *) gen;
+  }
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc.AioServer._server_main_loop", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_gb_7_cython_6cygrpc_9AioServer_13generator39(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
+{
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop *__pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop *)__pyx_generator->closure);
+  PyObject *__pyx_r = NULL;
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  unsigned int __pyx_t_4;
+  int __pyx_t_5;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("_server_main_loop", 0);
+  switch (__pyx_generator->resume_label) {
+    case 0: goto __pyx_L3_first_run;
+    case 1: goto __pyx_L8_resume_from_await;
+    default: /* CPython raises the right error here */
+    __Pyx_RefNannyFinishContext();
+    return NULL;
+  }
+  __pyx_L3_first_run:;
+  if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 952, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":954
+ *     async def _server_main_loop(self,
+ *                                 object server_started):
+ *         self._server.start(backup_queue=False)             # <<<<<<<<<<<<<<
+ *         cdef RPCState rpc_state
+ *         server_started.set_result(True)
+ */
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self->_server), __pyx_n_s_start); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 954, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 954, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_backup_queue, Py_False) < 0) __PYX_ERR(9, 954, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 954, __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_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":956
+ *         self._server.start(backup_queue=False)
+ *         cdef RPCState rpc_state
+ *         server_started.set_result(True)             # <<<<<<<<<<<<<<
+ * 
+ *         while True:
+ */
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_server_started, __pyx_n_s_set_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 956, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_1 = NULL;
+  __pyx_t_4 = 0;
+  #if CYTHON_UNPACK_METHODS
+  if (likely(PyMethod_Check(__pyx_t_2))) {
+    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
+    if (likely(__pyx_t_1)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_1);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
+      __pyx_t_4 = 1;
+    }
+  }
+  #endif
+  {
+    PyObject *__pyx_callargs[2] = {__pyx_t_1, Py_True};
+    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+    if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 956, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  }
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":958
+ *         server_started.set_result(True)
+ * 
+ *         while True:             # <<<<<<<<<<<<<<
+ *             # When shutdown begins, no more new connections.
+ *             if self._status != AIO_SERVER_STATUS_RUNNING:
+ */
+  while (1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":960
+ *         while True:
+ *             # When shutdown begins, no more new connections.
+ *             if self._status != AIO_SERVER_STATUS_RUNNING:             # <<<<<<<<<<<<<<
+ *                 break
+ * 
+ */
+    __pyx_t_5 = (__pyx_cur_scope->__pyx_v_self->_status != __pyx_e_7_cython_6cygrpc_AIO_SERVER_STATUS_RUNNING);
+    if (__pyx_t_5) {
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":961
+ *             # When shutdown begins, no more new connections.
+ *             if self._status != AIO_SERVER_STATUS_RUNNING:
+ *                 break             # <<<<<<<<<<<<<<
+ * 
+ *             concurrency_exceeded = False
+ */
+      goto __pyx_L5_break;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":960
+ *         while True:
+ *             # When shutdown begins, no more new connections.
+ *             if self._status != AIO_SERVER_STATUS_RUNNING:             # <<<<<<<<<<<<<<
+ *                 break
+ * 
+ */
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":963
+ *                 break
+ * 
+ *             concurrency_exceeded = False             # <<<<<<<<<<<<<<
+ *             if self._limiter is not None:
+ *                 self._limiter.check_before_request_call()
+ */
+    __pyx_cur_scope->__pyx_v_concurrency_exceeded = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":964
+ * 
+ *             concurrency_exceeded = False
+ *             if self._limiter is not None:             # <<<<<<<<<<<<<<
+ *                 self._limiter.check_before_request_call()
+ *                 concurrency_exceeded = self._limiter.limiter_concurrency_exceeded
+ */
+    __pyx_t_5 = (((PyObject *)__pyx_cur_scope->__pyx_v_self->_limiter) != Py_None);
+    if (__pyx_t_5) {
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":965
+ *             concurrency_exceeded = False
+ *             if self._limiter is not None:
+ *                 self._limiter.check_before_request_call()             # <<<<<<<<<<<<<<
+ *                 concurrency_exceeded = self._limiter.limiter_concurrency_exceeded
+ * 
+ */
+      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self->_limiter), __pyx_n_s_check_before_request_call); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 965, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __pyx_t_1 = NULL;
+      __pyx_t_4 = 0;
+      #if CYTHON_UNPACK_METHODS
+      if (likely(PyMethod_Check(__pyx_t_2))) {
+        __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
+        if (likely(__pyx_t_1)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+          __Pyx_INCREF(__pyx_t_1);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_2, function);
+          __pyx_t_4 = 1;
+        }
+      }
+      #endif
+      {
+        PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL};
+        __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+        if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 965, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_3);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      }
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":966
+ *             if self._limiter is not None:
+ *                 self._limiter.check_before_request_call()
+ *                 concurrency_exceeded = self._limiter.limiter_concurrency_exceeded             # <<<<<<<<<<<<<<
+ * 
+ *             # Accepts new request from Core
+ */
+      __pyx_t_5 = __pyx_cur_scope->__pyx_v_self->_limiter->limiter_concurrency_exceeded;
+      __pyx_cur_scope->__pyx_v_concurrency_exceeded = __pyx_t_5;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":964
+ * 
+ *             concurrency_exceeded = False
+ *             if self._limiter is not None:             # <<<<<<<<<<<<<<
+ *                 self._limiter.check_before_request_call()
+ *                 concurrency_exceeded = self._limiter.limiter_concurrency_exceeded
+ */
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":969
+ * 
+ *             # Accepts new request from Core
+ *             rpc_state = await self._request_call()             # <<<<<<<<<<<<<<
+ * 
+ *             # Creates the dedicated RPC coroutine. If we schedule it right now,
+ */
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_request_call); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 969, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_1 = NULL;
+    __pyx_t_4 = 0;
+    #if CYTHON_UNPACK_METHODS
+    if (likely(PyMethod_Check(__pyx_t_2))) {
+      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
+      if (likely(__pyx_t_1)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+        __Pyx_INCREF(__pyx_t_1);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_2, function);
+        __pyx_t_4 = 1;
+      }
+    }
+    #endif
+    {
+      PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL};
+      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
+      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+      if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 969, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    }
+    __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_3);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_XGOTREF(__pyx_r);
+    if (likely(__pyx_r)) {
+      __Pyx_XGIVEREF(__pyx_r);
+      __Pyx_RefNannyFinishContext();
+      __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+      /* return from generator, awaiting value */
+      __pyx_generator->resume_label = 1;
+      return __pyx_r;
+      __pyx_L8_resume_from_await:;
+      if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 969, __pyx_L1_error)
+      __pyx_t_3 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_3);
+    } else {
+      __pyx_t_3 = NULL;
+      if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_3) < 0) __PYX_ERR(9, 969, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
+    }
+    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_7_cython_6cygrpc_RPCState))))) __PYX_ERR(9, 969, __pyx_L1_error)
+    __Pyx_XGOTREF((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state);
+    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_rpc_state, ((struct __pyx_obj_7_cython_6cygrpc_RPCState *)__pyx_t_3));
+    __Pyx_GIVEREF(__pyx_t_3);
+    __pyx_t_3 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":976
+ *             # the coroutine onto event loop inside of the cancellation
+ *             # coroutine.
+ *             rpc_coro = _handle_rpc(self._generic_handlers,             # <<<<<<<<<<<<<<
+ *                                    self._interceptors,
+ *                                    rpc_state,
+ */
+    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_handle_rpc); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 976, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":980
+ *                                    rpc_state,
+ *                                    self._loop,
+ *                                    concurrency_exceeded)             # <<<<<<<<<<<<<<
+ * 
+ *             # Fires off a task that listens on the cancellation from client.
+ */
+    __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_cur_scope->__pyx_v_concurrency_exceeded); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 980, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_6 = NULL;
+    __pyx_t_4 = 0;
+    #if CYTHON_UNPACK_METHODS
+    if (unlikely(PyMethod_Check(__pyx_t_2))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_2, function);
+        __pyx_t_4 = 1;
+      }
+    }
+    #endif
+    {
+      PyObject *__pyx_callargs[6] = {__pyx_t_6, __pyx_cur_scope->__pyx_v_self->_generic_handlers, __pyx_cur_scope->__pyx_v_self->_interceptors, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state), __pyx_cur_scope->__pyx_v_self->_loop, __pyx_t_1};
+      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 5+__pyx_t_4);
+      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 976, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    }
+    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_rpc_coro);
+    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_rpc_coro, __pyx_t_3);
+    __Pyx_GIVEREF(__pyx_t_3);
+    __pyx_t_3 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":983
+ * 
+ *             # Fires off a task that listens on the cancellation from client.
+ *             rpc_task = self._loop.create_task(             # <<<<<<<<<<<<<<
+ *                 _schedule_rpc_coro(
+ *                     rpc_coro,
+ */
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self->_loop, __pyx_n_s_create_task); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 983, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":984
+ *             # Fires off a task that listens on the cancellation from client.
+ *             rpc_task = self._loop.create_task(
+ *                 _schedule_rpc_coro(             # <<<<<<<<<<<<<<
+ *                     rpc_coro,
+ *                     rpc_state,
+ */
+    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_schedule_rpc_coro); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 984, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_6);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":987
+ *                     rpc_coro,
+ *                     rpc_state,
+ *                     self._loop             # <<<<<<<<<<<<<<
+ *                 )
+ *             )
+ */
+    __pyx_t_7 = NULL;
+    __pyx_t_4 = 0;
+    #if CYTHON_UNPACK_METHODS
+    if (unlikely(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_4 = 1;
+      }
+    }
+    #endif
+    {
+      PyObject *__pyx_callargs[4] = {__pyx_t_7, __pyx_cur_scope->__pyx_v_rpc_coro, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state), __pyx_cur_scope->__pyx_v_self->_loop};
+      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_4, 3+__pyx_t_4);
+      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+      if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 984, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+    }
+    __pyx_t_6 = NULL;
+    __pyx_t_4 = 0;
+    #if CYTHON_UNPACK_METHODS
+    if (likely(PyMethod_Check(__pyx_t_2))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_2, function);
+        __pyx_t_4 = 1;
+      }
+    }
+    #endif
+    {
+      PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_1};
+      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
+      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 983, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_3);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    }
+    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_rpc_task);
+    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_rpc_task, __pyx_t_3);
+    __Pyx_GIVEREF(__pyx_t_3);
+    __pyx_t_3 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":991
+ *             )
+ * 
+ *             if self._limiter is not None:             # <<<<<<<<<<<<<<
+ *                 self._limiter.decrease_once_finished(rpc_task)
+ * 
+ */
+    __pyx_t_5 = (((PyObject *)__pyx_cur_scope->__pyx_v_self->_limiter) != Py_None);
+    if (__pyx_t_5) {
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":992
+ * 
+ *             if self._limiter is not None:
+ *                 self._limiter.decrease_once_finished(rpc_task)             # <<<<<<<<<<<<<<
+ * 
+ *     def _serving_task_crash_handler(self, object task):
+ */
+      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self->_limiter), __pyx_n_s_decrease_once_finished); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 992, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __pyx_t_1 = NULL;
+      __pyx_t_4 = 0;
+      #if CYTHON_UNPACK_METHODS
+      if (likely(PyMethod_Check(__pyx_t_2))) {
+        __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
+        if (likely(__pyx_t_1)) {
+          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+          __Pyx_INCREF(__pyx_t_1);
+          __Pyx_INCREF(function);
+          __Pyx_DECREF_SET(__pyx_t_2, function);
+          __pyx_t_4 = 1;
+        }
+      }
+      #endif
+      {
+        PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_cur_scope->__pyx_v_rpc_task};
+        __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+        if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 992, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_3);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      }
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":991
+ *             )
+ * 
+ *             if self._limiter is not None:             # <<<<<<<<<<<<<<
+ *                 self._limiter.decrease_once_finished(rpc_task)
+ * 
+ */
+    }
+  }
+  __pyx_L5_break:;
+  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":952
+ *         return rpc_state
+ * 
+ *     async def _server_main_loop(self,             # <<<<<<<<<<<<<<
+ *                                 object server_started):
+ *         self._server.start(backup_queue=False)
+ */
+
+  /* function exit code */
+  PyErr_SetNone(PyExc_StopIteration);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_Generator_Replace_StopIteration(0);
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_AddTraceback("_server_main_loop", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
+  #if !CYTHON_USE_EXC_INFO_STACK
+  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+  #endif
+  __pyx_generator->resume_label = -1;
+  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":994
+ *                 self._limiter.decrease_once_finished(rpc_task)
+ * 
+ *     def _serving_task_crash_handler(self, object task):             # <<<<<<<<<<<<<<
+ *         """Shutdown the server immediately if unexpectedly exited."""
+ *         if task.cancelled():
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_9AioServer_15_serving_task_crash_handler(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+PyDoc_STRVAR(__pyx_doc_7_cython_6cygrpc_9AioServer_14_serving_task_crash_handler, "Shutdown the server immediately if unexpectedly exited.");
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_9AioServer_15_serving_task_crash_handler = {"_serving_task_crash_handler", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_9AioServer_15_serving_task_crash_handler, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7_cython_6cygrpc_9AioServer_14_serving_task_crash_handler};
+static PyObject *__pyx_pw_7_cython_6cygrpc_9AioServer_15_serving_task_crash_handler(PyObject *__pyx_v_self, 
+#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_task = 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("_serving_task_crash_handler (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_task,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_task)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 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, "_serving_task_crash_handler") < 0)) __PYX_ERR(9, 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_task = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("_serving_task_crash_handler", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 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("_cython.cygrpc.AioServer._serving_task_crash_handler", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_9AioServer_14_serving_task_crash_handler(((struct __pyx_obj_7_cython_6cygrpc_AioServer *)__pyx_v_self), __pyx_v_task);
+
+  /* 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_7_cython_6cygrpc_9AioServer_14_serving_task_crash_handler(struct __pyx_obj_7_cython_6cygrpc_AioServer *__pyx_v_self, PyObject *__pyx_v_task) {
+  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;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_serving_task_crash_handler", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":996
+ *     def _serving_task_crash_handler(self, object task):
+ *         """Shutdown the server immediately if unexpectedly exited."""
+ *         if task.cancelled():             # <<<<<<<<<<<<<<
+ *             return
+ *         if task.exception() is None:
+ */
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_task, __pyx_n_s_cancelled); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 996, __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(9, 996, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  }
+  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(9, 996, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (__pyx_t_5) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":997
+ *         """Shutdown the server immediately if unexpectedly exited."""
+ *         if task.cancelled():
+ *             return             # <<<<<<<<<<<<<<
+ *         if task.exception() is None:
+ *             return
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":996
+ *     def _serving_task_crash_handler(self, object task):
+ *         """Shutdown the server immediately if unexpectedly exited."""
+ *         if task.cancelled():             # <<<<<<<<<<<<<<
+ *             return
+ *         if task.exception() is None:
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":998
+ *         if task.cancelled():
+ *             return
+ *         if task.exception() is None:             # <<<<<<<<<<<<<<
+ *             return
+ *         if self._status != AIO_SERVER_STATUS_STOPPING:
+ */
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_task, __pyx_n_s_exception); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 998, __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(9, 998, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  }
+  __pyx_t_5 = (__pyx_t_1 == Py_None);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (__pyx_t_5) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":999
+ *             return
+ *         if task.exception() is None:
+ *             return             # <<<<<<<<<<<<<<
+ *         if self._status != AIO_SERVER_STATUS_STOPPING:
+ *             self._crash_exception = task.exception()
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":998
+ *         if task.cancelled():
+ *             return
+ *         if task.exception() is None:             # <<<<<<<<<<<<<<
+ *             return
+ *         if self._status != AIO_SERVER_STATUS_STOPPING:
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1000
+ *         if task.exception() is None:
+ *             return
+ *         if self._status != AIO_SERVER_STATUS_STOPPING:             # <<<<<<<<<<<<<<
+ *             self._crash_exception = task.exception()
+ *             _LOGGER.exception(self._crash_exception)
+ */
+  __pyx_t_5 = (__pyx_v_self->_status != __pyx_e_7_cython_6cygrpc_AIO_SERVER_STATUS_STOPPING);
+  if (__pyx_t_5) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1001
+ *             return
+ *         if self._status != AIO_SERVER_STATUS_STOPPING:
+ *             self._crash_exception = task.exception()             # <<<<<<<<<<<<<<
+ *             _LOGGER.exception(self._crash_exception)
+ *             self._loop.create_task(self.shutdown(None))
+ */
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_task, __pyx_n_s_exception); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1001, __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(9, 1001, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    }
+    __Pyx_GIVEREF(__pyx_t_1);
+    __Pyx_GOTREF(__pyx_v_self->_crash_exception);
+    __Pyx_DECREF(__pyx_v_self->_crash_exception);
+    __pyx_v_self->_crash_exception = __pyx_t_1;
+    __pyx_t_1 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1002
+ *         if self._status != AIO_SERVER_STATUS_STOPPING:
+ *             self._crash_exception = task.exception()
+ *             _LOGGER.exception(self._crash_exception)             # <<<<<<<<<<<<<<
+ *             self._loop.create_task(self.shutdown(None))
+ * 
+ */
+    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_LOGGER); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1002, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_exception); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1002, __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, __pyx_v_self->_crash_exception};
+      __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(9, 1002, __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/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1003
+ *             self._crash_exception = task.exception()
+ *             _LOGGER.exception(self._crash_exception)
+ *             self._loop.create_task(self.shutdown(None))             # <<<<<<<<<<<<<<
+ * 
+ *     async def start(self):
+ */
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_loop, __pyx_n_s_create_task); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1003, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_shutdown); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1003, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_6);
+    __pyx_t_7 = NULL;
+    __pyx_t_4 = 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_4 = 1;
+      }
+    }
+    #endif
+    {
+      PyObject *__pyx_callargs[2] = {__pyx_t_7, Py_None};
+      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
+      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+      if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1003, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+    }
+    __pyx_t_6 = NULL;
+    __pyx_t_4 = 0;
+    #if CYTHON_UNPACK_METHODS
+    if (likely(PyMethod_Check(__pyx_t_3))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_3, function);
+        __pyx_t_4 = 1;
+      }
+    }
+    #endif
+    {
+      PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_2};
+      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
+      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1003, __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/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1000
+ *         if task.exception() is None:
+ *             return
+ *         if self._status != AIO_SERVER_STATUS_STOPPING:             # <<<<<<<<<<<<<<
+ *             self._crash_exception = task.exception()
+ *             _LOGGER.exception(self._crash_exception)
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":994
+ *                 self._limiter.decrease_once_finished(rpc_task)
+ * 
+ *     def _serving_task_crash_handler(self, object task):             # <<<<<<<<<<<<<<
+ *         """Shutdown the server immediately if unexpectedly exited."""
+ *         if task.cancelled():
+ */
+
+  /* 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_6);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_AddTraceback("_cython.cygrpc.AioServer._serving_task_crash_handler", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+static PyObject *__pyx_gb_7_cython_6cygrpc_9AioServer_18generator40(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1005
+ *             self._loop.create_task(self.shutdown(None))
+ * 
+ *     async def start(self):             # <<<<<<<<<<<<<<
+ *         if self._status == AIO_SERVER_STATUS_RUNNING:
+ *             return
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_9AioServer_17start(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_9AioServer_17start = {"start", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_9AioServer_17start, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_9AioServer_17start(PyObject *__pyx_v_self, 
+#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("start (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("start", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "start", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_9AioServer_16start(((struct __pyx_obj_7_cython_6cygrpc_AioServer *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_9AioServer_16start(struct __pyx_obj_7_cython_6cygrpc_AioServer *__pyx_v_self) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_51_start *__pyx_cur_scope;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("start", 0);
+  __pyx_cur_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_51_start *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_51_start(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_51_start, __pyx_empty_tuple, NULL);
+  if (unlikely(!__pyx_cur_scope)) {
+    __pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_51_start *)Py_None);
+    __Pyx_INCREF(Py_None);
+    __PYX_ERR(9, 1005, __pyx_L1_error)
+  } else {
+    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+  }
+  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
+  {
+    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7_cython_6cygrpc_9AioServer_18generator40, __pyx_codeobj__101, (PyObject *) __pyx_cur_scope, __pyx_n_s_start, __pyx_n_s_AioServer_start, __pyx_n_s_cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(9, 1005, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_cur_scope);
+    __Pyx_RefNannyFinishContext();
+    return (PyObject *) gen;
+  }
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc.AioServer.start", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_gb_7_cython_6cygrpc_9AioServer_18generator40(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
+{
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_51_start *__pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_51_start *)__pyx_generator->closure);
+  PyObject *__pyx_r = NULL;
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  unsigned int __pyx_t_5;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("start", 0);
+  switch (__pyx_generator->resume_label) {
+    case 0: goto __pyx_L3_first_run;
+    case 1: goto __pyx_L5_resume_from_await;
+    default: /* CPython raises the right error here */
+    __Pyx_RefNannyFinishContext();
+    return NULL;
+  }
+  __pyx_L3_first_run:;
+  if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1005, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1006
+ * 
+ *     async def start(self):
+ *         if self._status == AIO_SERVER_STATUS_RUNNING:             # <<<<<<<<<<<<<<
+ *             return
+ *         elif self._status != AIO_SERVER_STATUS_READY:
+ */
+  __pyx_t_1 = (__pyx_cur_scope->__pyx_v_self->_status == __pyx_e_7_cython_6cygrpc_AIO_SERVER_STATUS_RUNNING);
+  if (__pyx_t_1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1007
+ *     async def start(self):
+ *         if self._status == AIO_SERVER_STATUS_RUNNING:
+ *             return             # <<<<<<<<<<<<<<
+ *         elif self._status != AIO_SERVER_STATUS_READY:
+ *             raise UsageError('Server not in ready state')
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_r = NULL;
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1006
+ * 
+ *     async def start(self):
+ *         if self._status == AIO_SERVER_STATUS_RUNNING:             # <<<<<<<<<<<<<<
+ *             return
+ *         elif self._status != AIO_SERVER_STATUS_READY:
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1008
+ *         if self._status == AIO_SERVER_STATUS_RUNNING:
+ *             return
+ *         elif self._status != AIO_SERVER_STATUS_READY:             # <<<<<<<<<<<<<<
+ *             raise UsageError('Server not in ready state')
+ * 
+ */
+  __pyx_t_1 = (__pyx_cur_scope->__pyx_v_self->_status != __pyx_e_7_cython_6cygrpc_AIO_SERVER_STATUS_READY);
+  if (unlikely(__pyx_t_1)) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1009
+ *             return
+ *         elif self._status != AIO_SERVER_STATUS_READY:
+ *             raise UsageError('Server not in ready state')             # <<<<<<<<<<<<<<
+ * 
+ *         self._status = AIO_SERVER_STATUS_RUNNING
+ */
+    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_UsageError); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1009, __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_s_Server_not_in_ready_state};
+      __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(9, 1009, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    }
+    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __PYX_ERR(9, 1009, __pyx_L1_error)
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1008
+ *         if self._status == AIO_SERVER_STATUS_RUNNING:
+ *             return
+ *         elif self._status != AIO_SERVER_STATUS_READY:             # <<<<<<<<<<<<<<
+ *             raise UsageError('Server not in ready state')
+ * 
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1011
+ *             raise UsageError('Server not in ready state')
+ * 
+ *         self._status = AIO_SERVER_STATUS_RUNNING             # <<<<<<<<<<<<<<
+ *         cdef object server_started = self._loop.create_future()
+ *         self._serving_task = self._loop.create_task(self._server_main_loop(server_started))
+ */
+  __pyx_cur_scope->__pyx_v_self->_status = __pyx_e_7_cython_6cygrpc_AIO_SERVER_STATUS_RUNNING;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1012
+ * 
+ *         self._status = AIO_SERVER_STATUS_RUNNING
+ *         cdef object server_started = self._loop.create_future()             # <<<<<<<<<<<<<<
+ *         self._serving_task = self._loop.create_task(self._server_main_loop(server_started))
+ *         self._serving_task.add_done_callback(self._serving_task_crash_handler)
+ */
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self->_loop, __pyx_n_s_create_future); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1012, __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(9, 1012, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  }
+  __Pyx_GIVEREF(__pyx_t_2);
+  __pyx_cur_scope->__pyx_v_server_started = __pyx_t_2;
+  __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1013
+ *         self._status = AIO_SERVER_STATUS_RUNNING
+ *         cdef object server_started = self._loop.create_future()
+ *         self._serving_task = self._loop.create_task(self._server_main_loop(server_started))             # <<<<<<<<<<<<<<
+ *         self._serving_task.add_done_callback(self._serving_task_crash_handler)
+ *         # Needs to explicitly wait for the server to start up.
+ */
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self->_loop, __pyx_n_s_create_task); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1013, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_server_main_loop); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1013, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  __pyx_t_7 = NULL;
+  __pyx_t_5 = 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_5 = 1;
+    }
+  }
+  #endif
+  {
+    PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_cur_scope->__pyx_v_server_started};
+    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
+    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1013, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  }
+  __pyx_t_6 = NULL;
+  __pyx_t_5 = 0;
+  #if CYTHON_UNPACK_METHODS
+  if (likely(PyMethod_Check(__pyx_t_3))) {
+    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
+    if (likely(__pyx_t_6)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+      __Pyx_INCREF(__pyx_t_6);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_3, function);
+      __pyx_t_5 = 1;
+    }
+  }
+  #endif
+  {
+    PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_4};
+    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1013, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  }
+  __Pyx_GIVEREF(__pyx_t_2);
+  __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_self->_serving_task);
+  __Pyx_DECREF(__pyx_cur_scope->__pyx_v_self->_serving_task);
+  __pyx_cur_scope->__pyx_v_self->_serving_task = __pyx_t_2;
+  __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1014
+ *         cdef object server_started = self._loop.create_future()
+ *         self._serving_task = self._loop.create_task(self._server_main_loop(server_started))
+ *         self._serving_task.add_done_callback(self._serving_task_crash_handler)             # <<<<<<<<<<<<<<
+ *         # Needs to explicitly wait for the server to start up.
+ *         # Otherwise, the actual start time of the server is un-controllable.
+ */
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self->_serving_task, __pyx_n_s_add_done_callback); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1014, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_serving_task_crash_handler); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1014, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_6 = NULL;
+  __pyx_t_5 = 0;
+  #if CYTHON_UNPACK_METHODS
+  if (likely(PyMethod_Check(__pyx_t_3))) {
+    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
+    if (likely(__pyx_t_6)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+      __Pyx_INCREF(__pyx_t_6);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_3, function);
+      __pyx_t_5 = 1;
+    }
+  }
+  #endif
+  {
+    PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_4};
+    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1014, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  }
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1017
+ *         # Needs to explicitly wait for the server to start up.
+ *         # Otherwise, the actual start time of the server is un-controllable.
+ *         await server_started             # <<<<<<<<<<<<<<
+ * 
+ *     async def _start_shutting_down(self):
+ */
+  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_cur_scope->__pyx_v_server_started);
+  __Pyx_XGOTREF(__pyx_r);
+  if (likely(__pyx_r)) {
+    __Pyx_XGIVEREF(__pyx_r);
+    __Pyx_RefNannyFinishContext();
+    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+    /* return from generator, awaiting value */
+    __pyx_generator->resume_label = 1;
+    return __pyx_r;
+    __pyx_L5_resume_from_await:;
+    if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1017, __pyx_L1_error)
+  } else {
+    PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType();
+    if (exc_type) {
+      if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
+      else __PYX_ERR(9, 1017, __pyx_L1_error)
+    }
+  }
+  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1005
+ *             self._loop.create_task(self.shutdown(None))
+ * 
+ *     async def start(self):             # <<<<<<<<<<<<<<
+ *         if self._status == AIO_SERVER_STATUS_RUNNING:
+ *             return
+ */
+
+  /* function exit code */
+  PyErr_SetNone(PyExc_StopIteration);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_Generator_Replace_StopIteration(0);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_AddTraceback("start", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
+  #if !CYTHON_USE_EXC_INFO_STACK
+  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+  #endif
+  __pyx_generator->resume_label = -1;
+  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+static PyObject *__pyx_gb_7_cython_6cygrpc_9AioServer_21generator41(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1019
+ *         await server_started
+ * 
+ *     async def _start_shutting_down(self):             # <<<<<<<<<<<<<<
+ *         """Prepares the server to shutting down.
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_9AioServer_20_start_shutting_down(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+PyDoc_STRVAR(__pyx_doc_7_cython_6cygrpc_9AioServer_19_start_shutting_down, "Prepares the server to shutting down.\n\n        This coroutine function is NOT coroutine-safe.\n        ");
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_9AioServer_20_start_shutting_down = {"_start_shutting_down", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_9AioServer_20_start_shutting_down, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7_cython_6cygrpc_9AioServer_19_start_shutting_down};
+static PyObject *__pyx_pw_7_cython_6cygrpc_9AioServer_20_start_shutting_down(PyObject *__pyx_v_self, 
+#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("_start_shutting_down (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("_start_shutting_down", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "_start_shutting_down", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_9AioServer_19_start_shutting_down(((struct __pyx_obj_7_cython_6cygrpc_AioServer *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_9AioServer_19_start_shutting_down(struct __pyx_obj_7_cython_6cygrpc_AioServer *__pyx_v_self) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down *__pyx_cur_scope;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_start_shutting_down", 0);
+  __pyx_cur_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down, __pyx_empty_tuple, NULL);
+  if (unlikely(!__pyx_cur_scope)) {
+    __pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down *)Py_None);
+    __Pyx_INCREF(Py_None);
+    __PYX_ERR(9, 1019, __pyx_L1_error)
+  } else {
+    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+  }
+  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
+  {
+    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7_cython_6cygrpc_9AioServer_21generator41, __pyx_codeobj__102, (PyObject *) __pyx_cur_scope, __pyx_n_s_start_shutting_down, __pyx_n_s_AioServer__start_shutting_down, __pyx_n_s_cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(9, 1019, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_cur_scope);
+    __Pyx_RefNannyFinishContext();
+    return (PyObject *) gen;
+  }
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc.AioServer._start_shutting_down", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_gb_7_cython_6cygrpc_9AioServer_21generator41(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
+{
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down *__pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down *)__pyx_generator->closure);
+  PyObject *__pyx_r = NULL;
+  grpc_completion_queue *__pyx_t_1;
+  grpc_completion_queue_functor *__pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
+  PyObject *__pyx_t_9 = NULL;
+  int __pyx_t_10;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("_start_shutting_down", 0);
+  switch (__pyx_generator->resume_label) {
+    case 0: goto __pyx_L3_first_run;
+    case 1: goto __pyx_L10_resume_from_await;
+    default: /* CPython raises the right error here */
+    __Pyx_RefNannyFinishContext();
+    return NULL;
+  }
+  __pyx_L3_first_run:;
+  if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1019, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1027
+ *         grpc_server_shutdown_and_notify(
+ *             self._server.c_server,
+ *             global_completion_queue(),             # <<<<<<<<<<<<<<
+ *             self._shutdown_callback_wrapper.c_functor())
+ * 
+ */
+  __pyx_t_1 = __pyx_f_7_cython_6cygrpc_global_completion_queue(); if (unlikely(__pyx_t_1 == ((grpc_completion_queue *)NULL) && PyErr_Occurred())) __PYX_ERR(9, 1027, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1028
+ *             self._server.c_server,
+ *             global_completion_queue(),
+ *             self._shutdown_callback_wrapper.c_functor())             # <<<<<<<<<<<<<<
+ * 
+ *         # Ensures the serving task (coroutine) exits.
+ */
+  __pyx_t_2 = ((struct __pyx_vtabstruct_7_cython_6cygrpc_CallbackWrapper *)__pyx_cur_scope->__pyx_v_self->_shutdown_callback_wrapper->__pyx_vtab)->c_functor(__pyx_cur_scope->__pyx_v_self->_shutdown_callback_wrapper); if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 1028, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1025
+ *         """
+ *         # The shutdown callback won't be called until there is no live RPC.
+ *         grpc_server_shutdown_and_notify(             # <<<<<<<<<<<<<<
+ *             self._server.c_server,
+ *             global_completion_queue(),
+ */
+  grpc_server_shutdown_and_notify(__pyx_cur_scope->__pyx_v_self->_server->c_server, __pyx_t_1, __pyx_t_2);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1031
+ * 
+ *         # Ensures the serving task (coroutine) exits.
+ *         try:             # <<<<<<<<<<<<<<
+ *             await self._serving_task
+ *         except _RequestCallError:
+ */
+  {
+    __Pyx_ExceptionSave(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5);
+    __Pyx_XGOTREF(__pyx_t_3);
+    __Pyx_XGOTREF(__pyx_t_4);
+    __Pyx_XGOTREF(__pyx_t_5);
+    /*try:*/ {
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1032
+ *         # Ensures the serving task (coroutine) exits.
+ *         try:
+ *             await self._serving_task             # <<<<<<<<<<<<<<
+ *         except _RequestCallError:
+ *             pass
+ */
+      __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_cur_scope->__pyx_v_self->_serving_task);
+      __Pyx_XGOTREF(__pyx_r);
+      if (likely(__pyx_r)) {
+        __Pyx_XGIVEREF(__pyx_t_3);
+        __pyx_cur_scope->__pyx_t_0 = __pyx_t_3;
+        __Pyx_XGIVEREF(__pyx_t_4);
+        __pyx_cur_scope->__pyx_t_1 = __pyx_t_4;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __pyx_cur_scope->__pyx_t_2 = __pyx_t_5;
+        __Pyx_XGIVEREF(__pyx_r);
+        __Pyx_RefNannyFinishContext();
+        __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+        /* return from generator, awaiting value */
+        __pyx_generator->resume_label = 1;
+        return __pyx_r;
+        __pyx_L10_resume_from_await:;
+        __pyx_t_3 = __pyx_cur_scope->__pyx_t_0;
+        __pyx_cur_scope->__pyx_t_0 = 0;
+        __Pyx_XGOTREF(__pyx_t_3);
+        __pyx_t_4 = __pyx_cur_scope->__pyx_t_1;
+        __pyx_cur_scope->__pyx_t_1 = 0;
+        __Pyx_XGOTREF(__pyx_t_4);
+        __pyx_t_5 = __pyx_cur_scope->__pyx_t_2;
+        __pyx_cur_scope->__pyx_t_2 = 0;
+        __Pyx_XGOTREF(__pyx_t_5);
+        if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1032, __pyx_L4_error)
+      } else {
+        PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType();
+        if (exc_type) {
+          if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
+          else __PYX_ERR(9, 1032, __pyx_L4_error)
+        }
+      }
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1031
+ * 
+ *         # Ensures the serving task (coroutine) exits.
+ *         try:             # <<<<<<<<<<<<<<
+ *             await self._serving_task
+ *         except _RequestCallError:
+ */
+    }
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+    goto __pyx_L9_try_end;
+    __pyx_L4_error:;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1033
+ *         try:
+ *             await self._serving_task
+ *         except _RequestCallError:             # <<<<<<<<<<<<<<
+ *             pass
+ * 
+ */
+    __Pyx_ErrFetch(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
+    __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_RequestCallError); if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 1033, __pyx_L6_except_error)
+    __Pyx_GOTREF(__pyx_t_9);
+    __pyx_t_10 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_6, __pyx_t_9);
+    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+    __Pyx_ErrRestore(__pyx_t_6, __pyx_t_7, __pyx_t_8);
+    __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_8 = 0;
+    if (__pyx_t_10) {
+      __Pyx_ErrRestore(0,0,0);
+      goto __pyx_L5_exception_handled;
+    }
+    goto __pyx_L6_except_error;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1031
+ * 
+ *         # Ensures the serving task (coroutine) exits.
+ *         try:             # <<<<<<<<<<<<<<
+ *             await self._serving_task
+ *         except _RequestCallError:
+ */
+    __pyx_L6_except_error:;
+    __Pyx_XGIVEREF(__pyx_t_3);
+    __Pyx_XGIVEREF(__pyx_t_4);
+    __Pyx_XGIVEREF(__pyx_t_5);
+    __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
+    goto __pyx_L1_error;
+    __pyx_L5_exception_handled:;
+    __Pyx_XGIVEREF(__pyx_t_3);
+    __Pyx_XGIVEREF(__pyx_t_4);
+    __Pyx_XGIVEREF(__pyx_t_5);
+    __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
+    __pyx_L9_try_end:;
+  }
+  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1019
+ *         await server_started
+ * 
+ *     async def _start_shutting_down(self):             # <<<<<<<<<<<<<<
+ *         """Prepares the server to shutting down.
+ * 
+ */
+
+  /* function exit code */
+  PyErr_SetNone(PyExc_StopIteration);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_Generator_Replace_StopIteration(0);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_AddTraceback("_start_shutting_down", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
+  #if !CYTHON_USE_EXC_INFO_STACK
+  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+  #endif
+  __pyx_generator->resume_label = -1;
+  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+static PyObject *__pyx_gb_7_cython_6cygrpc_9AioServer_24generator42(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1036
+ *             pass
+ * 
+ *     async def shutdown(self, grace):             # <<<<<<<<<<<<<<
+ *         """Gracefully shutdown the Core server.
+ * 
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_9AioServer_23shutdown(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+PyDoc_STRVAR(__pyx_doc_7_cython_6cygrpc_9AioServer_22shutdown, "Gracefully shutdown the Core server.\n\n        Application should only call shutdown once.\n\n        Args:\n          grace: An optional float indicating the length of grace period in\n            seconds.\n        ");
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_9AioServer_23shutdown = {"shutdown", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_9AioServer_23shutdown, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7_cython_6cygrpc_9AioServer_22shutdown};
+static PyObject *__pyx_pw_7_cython_6cygrpc_9AioServer_23shutdown(PyObject *__pyx_v_self, 
+#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_grace = 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("shutdown (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_grace,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_grace)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 1036, __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, "shutdown") < 0)) __PYX_ERR(9, 1036, __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_grace = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("shutdown", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 1036, __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("_cython.cygrpc.AioServer.shutdown", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_9AioServer_22shutdown(((struct __pyx_obj_7_cython_6cygrpc_AioServer *)__pyx_v_self), __pyx_v_grace);
+
+  /* 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_7_cython_6cygrpc_9AioServer_22shutdown(struct __pyx_obj_7_cython_6cygrpc_AioServer *__pyx_v_self, PyObject *__pyx_v_grace) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_53_shutdown *__pyx_cur_scope;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("shutdown", 0);
+  __pyx_cur_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_53_shutdown *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_53_shutdown(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_53_shutdown, __pyx_empty_tuple, NULL);
+  if (unlikely(!__pyx_cur_scope)) {
+    __pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_53_shutdown *)Py_None);
+    __Pyx_INCREF(Py_None);
+    __PYX_ERR(9, 1036, __pyx_L1_error)
+  } else {
+    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+  }
+  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
+  __pyx_cur_scope->__pyx_v_grace = __pyx_v_grace;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_grace);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_grace);
+  {
+    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7_cython_6cygrpc_9AioServer_24generator42, __pyx_codeobj__103, (PyObject *) __pyx_cur_scope, __pyx_n_s_shutdown, __pyx_n_s_AioServer_shutdown, __pyx_n_s_cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(9, 1036, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_cur_scope);
+    __Pyx_RefNannyFinishContext();
+    return (PyObject *) gen;
+  }
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc.AioServer.shutdown", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_gb_7_cython_6cygrpc_9AioServer_24generator42(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
+{
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_53_shutdown *__pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_53_shutdown *)__pyx_generator->closure);
+  PyObject *__pyx_r = NULL;
+  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;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
+  int __pyx_t_9;
+  PyObject *__pyx_t_10 = NULL;
+  PyObject *__pyx_t_11 = NULL;
+  int __pyx_t_12;
+  PyObject *__pyx_t_13 = NULL;
+  int __pyx_t_14;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("shutdown", 0);
+  switch (__pyx_generator->resume_label) {
+    case 0: goto __pyx_L3_first_run;
+    case 1: goto __pyx_L5_resume_from_await;
+    case 2: goto __pyx_L16_resume_from_await;
+    case 3: goto __pyx_L20_resume_from_await;
+    case 4: goto __pyx_L21_resume_from_await;
+    case 5: goto __pyx_L24_resume_from_await;
+    case 6: goto __pyx_L31_resume_from_await;
+    case 7: goto __pyx_L34_resume_from_await;
+    case 8: goto __pyx_L36_resume_from_await;
+    case 9: goto __pyx_L47_resume_from_await;
+    default: /* CPython raises the right error here */
+    __Pyx_RefNannyFinishContext();
+    return NULL;
+  }
+  __pyx_L3_first_run:;
+  if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1036, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1045
+ *             seconds.
+ *         """
+ *         if self._status == AIO_SERVER_STATUS_READY or self._status == AIO_SERVER_STATUS_STOPPED:             # <<<<<<<<<<<<<<
+ *             return
+ * 
+ */
+  switch (__pyx_cur_scope->__pyx_v_self->_status) {
+    case __pyx_e_7_cython_6cygrpc_AIO_SERVER_STATUS_READY:
+    case __pyx_e_7_cython_6cygrpc_AIO_SERVER_STATUS_STOPPED:
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1046
+ *         """
+ *         if self._status == AIO_SERVER_STATUS_READY or self._status == AIO_SERVER_STATUS_STOPPED:
+ *             return             # <<<<<<<<<<<<<<
+ * 
+ *         async with self._shutdown_lock:
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_r = NULL;
+    goto __pyx_L0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1045
+ *             seconds.
+ *         """
+ *         if self._status == AIO_SERVER_STATUS_READY or self._status == AIO_SERVER_STATUS_STOPPED:             # <<<<<<<<<<<<<<
+ *             return
+ * 
+ */
+    break;
+    default: break;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1048
+ *             return
+ * 
+ *         async with self._shutdown_lock:             # <<<<<<<<<<<<<<
+ *             if self._status == AIO_SERVER_STATUS_RUNNING:
+ *                 self._server.is_shutting_down = True
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_cur_scope->__pyx_v_self->_shutdown_lock, __pyx_n_s_aexit); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1048, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_cur_scope->__pyx_v_self->_shutdown_lock, __pyx_n_s_aenter); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1048, __pyx_L4_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(9, 1048, __pyx_L4_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    }
+    __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_2);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_XGOTREF(__pyx_r);
+    if (likely(__pyx_r)) {
+      __Pyx_XGIVEREF(__pyx_t_1);
+      __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
+      __Pyx_XGIVEREF(__pyx_r);
+      __Pyx_RefNannyFinishContext();
+      __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+      /* return from generator, awaiting value */
+      __pyx_generator->resume_label = 1;
+      return __pyx_r;
+      __pyx_L5_resume_from_await:;
+      __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
+      __pyx_cur_scope->__pyx_t_0 = 0;
+      __Pyx_XGOTREF(__pyx_t_1);
+      if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1048, __pyx_L4_error)
+      __pyx_t_2 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_2);
+    } else {
+      __pyx_t_2 = NULL;
+      if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_2) < 0) __PYX_ERR(9, 1048, __pyx_L4_error)
+      __Pyx_GOTREF(__pyx_t_2);
+    }
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_8);
+        /*try:*/ {
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1049
+ * 
+ *         async with self._shutdown_lock:
+ *             if self._status == AIO_SERVER_STATUS_RUNNING:             # <<<<<<<<<<<<<<
+ *                 self._server.is_shutting_down = True
+ *                 self._status = AIO_SERVER_STATUS_STOPPING
+ */
+          __pyx_t_9 = (__pyx_cur_scope->__pyx_v_self->_status == __pyx_e_7_cython_6cygrpc_AIO_SERVER_STATUS_RUNNING);
+          if (__pyx_t_9) {
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1050
+ *         async with self._shutdown_lock:
+ *             if self._status == AIO_SERVER_STATUS_RUNNING:
+ *                 self._server.is_shutting_down = True             # <<<<<<<<<<<<<<
+ *                 self._status = AIO_SERVER_STATUS_STOPPING
+ *                 await self._start_shutting_down()
+ */
+            __pyx_cur_scope->__pyx_v_self->_server->is_shutting_down = 1;
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1051
+ *             if self._status == AIO_SERVER_STATUS_RUNNING:
+ *                 self._server.is_shutting_down = True
+ *                 self._status = AIO_SERVER_STATUS_STOPPING             # <<<<<<<<<<<<<<
+ *                 await self._start_shutting_down()
+ * 
+ */
+            __pyx_cur_scope->__pyx_v_self->_status = __pyx_e_7_cython_6cygrpc_AIO_SERVER_STATUS_STOPPING;
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1052
+ *                 self._server.is_shutting_down = True
+ *                 self._status = AIO_SERVER_STATUS_STOPPING
+ *                 await self._start_shutting_down()             # <<<<<<<<<<<<<<
+ * 
+ *         if grace is None:
+ */
+            __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_start_shutting_down); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1052, __pyx_L9_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(9, 1052, __pyx_L9_error)
+              __Pyx_GOTREF(__pyx_t_2);
+              __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+            }
+            __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_2);
+            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+            __Pyx_XGOTREF(__pyx_r);
+            if (likely(__pyx_r)) {
+              __Pyx_XGIVEREF(__pyx_t_1);
+              __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
+              __Pyx_XGIVEREF(__pyx_t_6);
+              __pyx_cur_scope->__pyx_t_1 = __pyx_t_6;
+              __Pyx_XGIVEREF(__pyx_t_7);
+              __pyx_cur_scope->__pyx_t_2 = __pyx_t_7;
+              __Pyx_XGIVEREF(__pyx_t_8);
+              __pyx_cur_scope->__pyx_t_3 = __pyx_t_8;
+              __Pyx_XGIVEREF(__pyx_r);
+              __Pyx_RefNannyFinishContext();
+              __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+              /* return from generator, awaiting value */
+              __pyx_generator->resume_label = 2;
+              return __pyx_r;
+              __pyx_L16_resume_from_await:;
+              __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
+              __pyx_cur_scope->__pyx_t_0 = 0;
+              __Pyx_XGOTREF(__pyx_t_1);
+              __pyx_t_6 = __pyx_cur_scope->__pyx_t_1;
+              __pyx_cur_scope->__pyx_t_1 = 0;
+              __Pyx_XGOTREF(__pyx_t_6);
+              __pyx_t_7 = __pyx_cur_scope->__pyx_t_2;
+              __pyx_cur_scope->__pyx_t_2 = 0;
+              __Pyx_XGOTREF(__pyx_t_7);
+              __pyx_t_8 = __pyx_cur_scope->__pyx_t_3;
+              __pyx_cur_scope->__pyx_t_3 = 0;
+              __Pyx_XGOTREF(__pyx_t_8);
+              if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1052, __pyx_L9_error)
+            } else {
+              PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType();
+              if (exc_type) {
+                if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
+                else __PYX_ERR(9, 1052, __pyx_L9_error)
+              }
+            }
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1049
+ * 
+ *         async with self._shutdown_lock:
+ *             if self._status == AIO_SERVER_STATUS_RUNNING:             # <<<<<<<<<<<<<<
+ *                 self._server.is_shutting_down = True
+ *                 self._status = AIO_SERVER_STATUS_STOPPING
+ */
+          }
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1048
+ *             return
+ * 
+ *         async with self._shutdown_lock:             # <<<<<<<<<<<<<<
+ *             if self._status == AIO_SERVER_STATUS_RUNNING:
+ *                 self._server.is_shutting_down = True
+ */
+        }
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L9_error:;
+        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        /*except:*/ {
+          __Pyx_AddTraceback("_cython.cygrpc.AioServer.shutdown", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4) < 0) __PYX_ERR(9, 1048, __pyx_L11_except_error)
+          __Pyx_XGOTREF(__pyx_t_2);
+          __Pyx_XGOTREF(__pyx_t_3);
+          __Pyx_XGOTREF(__pyx_t_4);
+          __pyx_t_10 = PyTuple_Pack(3, __pyx_t_2, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(9, 1048, __pyx_L11_except_error)
+          __Pyx_GOTREF(__pyx_t_10);
+          __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_10, NULL);
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+          if (unlikely(!__pyx_t_11)) __PYX_ERR(9, 1048, __pyx_L11_except_error)
+          __Pyx_GOTREF(__pyx_t_11);
+          __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_11);
+          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+          __Pyx_XGOTREF(__pyx_r);
+          if (likely(__pyx_r)) {
+            __Pyx_XGIVEREF(__pyx_t_1);
+            __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
+            __Pyx_XGIVEREF(__pyx_t_2);
+            __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
+            __Pyx_XGIVEREF(__pyx_t_3);
+            __pyx_cur_scope->__pyx_t_2 = __pyx_t_3;
+            __Pyx_XGIVEREF(__pyx_t_4);
+            __pyx_cur_scope->__pyx_t_3 = __pyx_t_4;
+            __Pyx_XGIVEREF(__pyx_t_6);
+            __pyx_cur_scope->__pyx_t_4 = __pyx_t_6;
+            __Pyx_XGIVEREF(__pyx_t_7);
+            __pyx_cur_scope->__pyx_t_5 = __pyx_t_7;
+            __Pyx_XGIVEREF(__pyx_t_8);
+            __pyx_cur_scope->__pyx_t_6 = __pyx_t_8;
+            __Pyx_XGIVEREF(__pyx_t_11);
+            __pyx_cur_scope->__pyx_t_7 = __pyx_t_11;
+            __Pyx_XGIVEREF(__pyx_r);
+            __Pyx_RefNannyFinishContext();
+            __Pyx_Coroutine_SwapException(__pyx_generator);
+            /* return from generator, awaiting value */
+            __pyx_generator->resume_label = 3;
+            return __pyx_r;
+            __pyx_L20_resume_from_await:;
+            __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
+            __pyx_cur_scope->__pyx_t_0 = 0;
+            __Pyx_XGOTREF(__pyx_t_1);
+            __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
+            __pyx_cur_scope->__pyx_t_1 = 0;
+            __Pyx_XGOTREF(__pyx_t_2);
+            __pyx_t_3 = __pyx_cur_scope->__pyx_t_2;
+            __pyx_cur_scope->__pyx_t_2 = 0;
+            __Pyx_XGOTREF(__pyx_t_3);
+            __pyx_t_4 = __pyx_cur_scope->__pyx_t_3;
+            __pyx_cur_scope->__pyx_t_3 = 0;
+            __Pyx_XGOTREF(__pyx_t_4);
+            __pyx_t_6 = __pyx_cur_scope->__pyx_t_4;
+            __pyx_cur_scope->__pyx_t_4 = 0;
+            __Pyx_XGOTREF(__pyx_t_6);
+            __pyx_t_7 = __pyx_cur_scope->__pyx_t_5;
+            __pyx_cur_scope->__pyx_t_5 = 0;
+            __Pyx_XGOTREF(__pyx_t_7);
+            __pyx_t_8 = __pyx_cur_scope->__pyx_t_6;
+            __pyx_cur_scope->__pyx_t_6 = 0;
+            __Pyx_XGOTREF(__pyx_t_8);
+            __pyx_t_11 = __pyx_cur_scope->__pyx_t_7;
+            __pyx_cur_scope->__pyx_t_7 = 0;
+            __Pyx_XGOTREF(__pyx_t_11);
+            if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1048, __pyx_L11_except_error)
+            __pyx_t_10 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_10);
+          } else {
+            __pyx_t_10 = NULL;
+            if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_10) < 0) __PYX_ERR(9, 1048, __pyx_L11_except_error)
+            __Pyx_GOTREF(__pyx_t_10);
+          }
+          __pyx_t_11 = __pyx_t_10;
+          __pyx_t_10 = 0;
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_11);
+          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+          if (__pyx_t_9 < 0) __PYX_ERR(9, 1048, __pyx_L11_except_error)
+          __pyx_t_12 = (!__pyx_t_9);
+          if (unlikely(__pyx_t_12)) {
+            __Pyx_GIVEREF(__pyx_t_2);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_XGIVEREF(__pyx_t_4);
+            __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_3, __pyx_t_4);
+            __pyx_t_2 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0; 
+            __PYX_ERR(9, 1048, __pyx_L11_except_error)
+          }
+          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+          goto __pyx_L10_exception_handled;
+        }
+        __pyx_L11_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_XGIVEREF(__pyx_t_8);
+        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
+        goto __pyx_L1_error;
+        __pyx_L10_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_XGIVEREF(__pyx_t_8);
+        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      /*normal exit:*/{
+        if (__pyx_t_1) {
+          __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__11, NULL);
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 1048, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_8);
+          __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_8);
+          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+          __Pyx_XGOTREF(__pyx_r);
+          if (likely(__pyx_r)) {
+            __Pyx_XGIVEREF(__pyx_t_1);
+            __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
+            __Pyx_XGIVEREF(__pyx_t_8);
+            __pyx_cur_scope->__pyx_t_1 = __pyx_t_8;
+            __Pyx_XGIVEREF(__pyx_r);
+            __Pyx_RefNannyFinishContext();
+            __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+            /* return from generator, awaiting value */
+            __pyx_generator->resume_label = 4;
+            return __pyx_r;
+            __pyx_L21_resume_from_await:;
+            __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
+            __pyx_cur_scope->__pyx_t_0 = 0;
+            __Pyx_XGOTREF(__pyx_t_1);
+            __pyx_t_8 = __pyx_cur_scope->__pyx_t_1;
+            __pyx_cur_scope->__pyx_t_1 = 0;
+            __Pyx_XGOTREF(__pyx_t_8);
+            if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1048, __pyx_L1_error)
+            __pyx_t_4 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_4);
+          } else {
+            __pyx_t_4 = NULL;
+            if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_4) < 0) __PYX_ERR(9, 1048, __pyx_L1_error)
+            __Pyx_GOTREF(__pyx_t_4);
+          }
+          __pyx_t_8 = __pyx_t_4;
+          __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+        }
+        goto __pyx_L8;
+      }
+      __pyx_L8:;
+    }
+    goto __pyx_L22;
+    __pyx_L4_error:;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    goto __pyx_L1_error;
+    __pyx_L22:;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1054
+ *                 await self._start_shutting_down()
+ * 
+ *         if grace is None:             # <<<<<<<<<<<<<<
+ *             # Directly cancels all calls
+ *             grpc_server_cancel_all_calls(self._server.c_server)
+ */
+  __pyx_t_12 = (__pyx_cur_scope->__pyx_v_grace == Py_None);
+  if (__pyx_t_12) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1056
+ *         if grace is None:
+ *             # Directly cancels all calls
+ *             grpc_server_cancel_all_calls(self._server.c_server)             # <<<<<<<<<<<<<<
+ *             await self._shutdown_completed
+ *         else:
+ */
+    grpc_server_cancel_all_calls(__pyx_cur_scope->__pyx_v_self->_server->c_server);
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1057
+ *             # Directly cancels all calls
+ *             grpc_server_cancel_all_calls(self._server.c_server)
+ *             await self._shutdown_completed             # <<<<<<<<<<<<<<
+ *         else:
+ *             try:
+ */
+    __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_cur_scope->__pyx_v_self->_shutdown_completed);
+    __Pyx_XGOTREF(__pyx_r);
+    if (likely(__pyx_r)) {
+      __Pyx_XGIVEREF(__pyx_r);
+      __Pyx_RefNannyFinishContext();
+      __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+      /* return from generator, awaiting value */
+      __pyx_generator->resume_label = 5;
+      return __pyx_r;
+      __pyx_L24_resume_from_await:;
+      if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1057, __pyx_L1_error)
+    } else {
+      PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType();
+      if (exc_type) {
+        if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
+        else __PYX_ERR(9, 1057, __pyx_L1_error)
+      }
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1054
+ *                 await self._start_shutting_down()
+ * 
+ *         if grace is None:             # <<<<<<<<<<<<<<
+ *             # Directly cancels all calls
+ *             grpc_server_cancel_all_calls(self._server.c_server)
+ */
+    goto __pyx_L23;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1059
+ *             await self._shutdown_completed
+ *         else:
+ *             try:             # <<<<<<<<<<<<<<
+ *                 await asyncio.wait_for(
+ *                     asyncio.shield(self._shutdown_completed),
+ */
+  /*else*/ {
+    {
+      __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_8, &__pyx_t_7);
+      __Pyx_XGOTREF(__pyx_t_1);
+      __Pyx_XGOTREF(__pyx_t_8);
+      __Pyx_XGOTREF(__pyx_t_7);
+      /*try:*/ {
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1060
+ *         else:
+ *             try:
+ *                 await asyncio.wait_for(             # <<<<<<<<<<<<<<
+ *                     asyncio.shield(self._shutdown_completed),
+ *                     grace,
+ */
+        __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_asyncio); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1060, __pyx_L25_error)
+        __Pyx_GOTREF(__pyx_t_3);
+        __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_wait_for); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1060, __pyx_L25_error)
+        __Pyx_GOTREF(__pyx_t_2);
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1061
+ *             try:
+ *                 await asyncio.wait_for(
+ *                     asyncio.shield(self._shutdown_completed),             # <<<<<<<<<<<<<<
+ *                     grace,
+ *                 )
+ */
+        __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_asyncio); if (unlikely(!__pyx_t_10)) __PYX_ERR(9, 1061, __pyx_L25_error)
+        __Pyx_GOTREF(__pyx_t_10);
+        __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_shield); if (unlikely(!__pyx_t_13)) __PYX_ERR(9, 1061, __pyx_L25_error)
+        __Pyx_GOTREF(__pyx_t_13);
+        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+        __pyx_t_10 = NULL;
+        __pyx_t_5 = 0;
+        #if CYTHON_UNPACK_METHODS
+        if (unlikely(PyMethod_Check(__pyx_t_13))) {
+          __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_13);
+          if (likely(__pyx_t_10)) {
+            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
+            __Pyx_INCREF(__pyx_t_10);
+            __Pyx_INCREF(function);
+            __Pyx_DECREF_SET(__pyx_t_13, function);
+            __pyx_t_5 = 1;
+          }
+        }
+        #endif
+        {
+          PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_cur_scope->__pyx_v_self->_shutdown_completed};
+          __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_13, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
+          __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+          if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1061, __pyx_L25_error)
+          __Pyx_GOTREF(__pyx_t_3);
+          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+        }
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1062
+ *                 await asyncio.wait_for(
+ *                     asyncio.shield(self._shutdown_completed),
+ *                     grace,             # <<<<<<<<<<<<<<
+ *                 )
+ *             except asyncio.TimeoutError:
+ */
+        __pyx_t_13 = NULL;
+        __pyx_t_5 = 0;
+        #if CYTHON_UNPACK_METHODS
+        if (unlikely(PyMethod_Check(__pyx_t_2))) {
+          __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_2);
+          if (likely(__pyx_t_13)) {
+            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+            __Pyx_INCREF(__pyx_t_13);
+            __Pyx_INCREF(function);
+            __Pyx_DECREF_SET(__pyx_t_2, function);
+            __pyx_t_5 = 1;
+          }
+        }
+        #endif
+        {
+          PyObject *__pyx_callargs[3] = {__pyx_t_13, __pyx_t_3, __pyx_cur_scope->__pyx_v_grace};
+          __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5);
+          __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1060, __pyx_L25_error)
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        }
+        __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_4);
+        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XGOTREF(__pyx_r);
+        if (likely(__pyx_r)) {
+          __Pyx_XGIVEREF(__pyx_t_1);
+          __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
+          __Pyx_XGIVEREF(__pyx_t_7);
+          __pyx_cur_scope->__pyx_t_1 = __pyx_t_7;
+          __Pyx_XGIVEREF(__pyx_t_8);
+          __pyx_cur_scope->__pyx_t_2 = __pyx_t_8;
+          __Pyx_XGIVEREF(__pyx_r);
+          __Pyx_RefNannyFinishContext();
+          __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+          /* return from generator, awaiting value */
+          __pyx_generator->resume_label = 6;
+          return __pyx_r;
+          __pyx_L31_resume_from_await:;
+          __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
+          __pyx_cur_scope->__pyx_t_0 = 0;
+          __Pyx_XGOTREF(__pyx_t_1);
+          __pyx_t_7 = __pyx_cur_scope->__pyx_t_1;
+          __pyx_cur_scope->__pyx_t_1 = 0;
+          __Pyx_XGOTREF(__pyx_t_7);
+          __pyx_t_8 = __pyx_cur_scope->__pyx_t_2;
+          __pyx_cur_scope->__pyx_t_2 = 0;
+          __Pyx_XGOTREF(__pyx_t_8);
+          if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1060, __pyx_L25_error)
+        } else {
+          PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType();
+          if (exc_type) {
+            if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
+            else __PYX_ERR(9, 1060, __pyx_L25_error)
+          }
+        }
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1059
+ *             await self._shutdown_completed
+ *         else:
+ *             try:             # <<<<<<<<<<<<<<
+ *                 await asyncio.wait_for(
+ *                     asyncio.shield(self._shutdown_completed),
+ */
+      }
+      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+      goto __pyx_L30_try_end;
+      __pyx_L25_error:;
+      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
+      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1064
+ *                     grace,
+ *                 )
+ *             except asyncio.TimeoutError:             # <<<<<<<<<<<<<<
+ *                 # Cancels all ongoing calls by the end of grace period.
+ *                 grpc_server_cancel_all_calls(self._server.c_server)
+ */
+      __Pyx_ErrFetch(&__pyx_t_4, &__pyx_t_2, &__pyx_t_3);
+      __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_asyncio); if (unlikely(!__pyx_t_13)) __PYX_ERR(9, 1064, __pyx_L27_except_error)
+      __Pyx_GOTREF(__pyx_t_13);
+      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_TimeoutError); if (unlikely(!__pyx_t_10)) __PYX_ERR(9, 1064, __pyx_L27_except_error)
+      __Pyx_GOTREF(__pyx_t_10);
+      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+      __pyx_t_14 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_4, __pyx_t_10);
+      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+      __Pyx_ErrRestore(__pyx_t_4, __pyx_t_2, __pyx_t_3);
+      __pyx_t_4 = 0; __pyx_t_2 = 0; __pyx_t_3 = 0;
+      if (__pyx_t_14) {
+        __Pyx_AddTraceback("_cython.cygrpc.AioServer.shutdown", __pyx_clineno, __pyx_lineno, __pyx_filename);
+        if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_4) < 0) __PYX_ERR(9, 1064, __pyx_L27_except_error)
+        __Pyx_XGOTREF(__pyx_t_3);
+        __Pyx_XGOTREF(__pyx_t_2);
+        __Pyx_XGOTREF(__pyx_t_4);
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1066
+ *             except asyncio.TimeoutError:
+ *                 # Cancels all ongoing calls by the end of grace period.
+ *                 grpc_server_cancel_all_calls(self._server.c_server)             # <<<<<<<<<<<<<<
+ *                 await self._shutdown_completed
+ * 
+ */
+        grpc_server_cancel_all_calls(__pyx_cur_scope->__pyx_v_self->_server->c_server);
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1067
+ *                 # Cancels all ongoing calls by the end of grace period.
+ *                 grpc_server_cancel_all_calls(self._server.c_server)
+ *                 await self._shutdown_completed             # <<<<<<<<<<<<<<
+ * 
+ *         async with self._shutdown_lock:
+ */
+        __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_cur_scope->__pyx_v_self->_shutdown_completed);
+        __Pyx_XGOTREF(__pyx_r);
+        if (likely(__pyx_r)) {
+          __Pyx_XGIVEREF(__pyx_t_1);
+          __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
+          __Pyx_XGIVEREF(__pyx_t_2);
+          __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
+          __Pyx_XGIVEREF(__pyx_t_3);
+          __pyx_cur_scope->__pyx_t_2 = __pyx_t_3;
+          __Pyx_XGIVEREF(__pyx_t_4);
+          __pyx_cur_scope->__pyx_t_3 = __pyx_t_4;
+          __Pyx_XGIVEREF(__pyx_t_7);
+          __pyx_cur_scope->__pyx_t_4 = __pyx_t_7;
+          __Pyx_XGIVEREF(__pyx_t_8);
+          __pyx_cur_scope->__pyx_t_5 = __pyx_t_8;
+          __Pyx_XGIVEREF(__pyx_r);
+          __Pyx_RefNannyFinishContext();
+          __Pyx_Coroutine_SwapException(__pyx_generator);
+          /* return from generator, awaiting value */
+          __pyx_generator->resume_label = 7;
+          return __pyx_r;
+          __pyx_L34_resume_from_await:;
+          __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
+          __pyx_cur_scope->__pyx_t_0 = 0;
+          __Pyx_XGOTREF(__pyx_t_1);
+          __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
+          __pyx_cur_scope->__pyx_t_1 = 0;
+          __Pyx_XGOTREF(__pyx_t_2);
+          __pyx_t_3 = __pyx_cur_scope->__pyx_t_2;
+          __pyx_cur_scope->__pyx_t_2 = 0;
+          __Pyx_XGOTREF(__pyx_t_3);
+          __pyx_t_4 = __pyx_cur_scope->__pyx_t_3;
+          __pyx_cur_scope->__pyx_t_3 = 0;
+          __Pyx_XGOTREF(__pyx_t_4);
+          __pyx_t_7 = __pyx_cur_scope->__pyx_t_4;
+          __pyx_cur_scope->__pyx_t_4 = 0;
+          __Pyx_XGOTREF(__pyx_t_7);
+          __pyx_t_8 = __pyx_cur_scope->__pyx_t_5;
+          __pyx_cur_scope->__pyx_t_5 = 0;
+          __Pyx_XGOTREF(__pyx_t_8);
+          if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1067, __pyx_L27_except_error)
+        } else {
+          PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType();
+          if (exc_type) {
+            if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
+            else __PYX_ERR(9, 1067, __pyx_L27_except_error)
+          }
+        }
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        goto __pyx_L26_exception_handled;
+      }
+      goto __pyx_L27_except_error;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1059
+ *             await self._shutdown_completed
+ *         else:
+ *             try:             # <<<<<<<<<<<<<<
+ *                 await asyncio.wait_for(
+ *                     asyncio.shield(self._shutdown_completed),
+ */
+      __pyx_L27_except_error:;
+      __Pyx_XGIVEREF(__pyx_t_1);
+      __Pyx_XGIVEREF(__pyx_t_8);
+      __Pyx_XGIVEREF(__pyx_t_7);
+      __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_8, __pyx_t_7);
+      goto __pyx_L1_error;
+      __pyx_L26_exception_handled:;
+      __Pyx_XGIVEREF(__pyx_t_1);
+      __Pyx_XGIVEREF(__pyx_t_8);
+      __Pyx_XGIVEREF(__pyx_t_7);
+      __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_8, __pyx_t_7);
+      __pyx_L30_try_end:;
+    }
+  }
+  __pyx_L23:;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1069
+ *                 await self._shutdown_completed
+ * 
+ *         async with self._shutdown_lock:             # <<<<<<<<<<<<<<
+ *             if self._status == AIO_SERVER_STATUS_STOPPING:
+ *                 grpc_server_destroy(self._server.c_server)
+ */
+  /*with:*/ {
+    __pyx_t_7 = __Pyx_PyObject_LookupSpecial(__pyx_cur_scope->__pyx_v_self->_shutdown_lock, __pyx_n_s_aexit); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 1069, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_7);
+    __pyx_t_2 = __Pyx_PyObject_LookupSpecial(__pyx_cur_scope->__pyx_v_self->_shutdown_lock, __pyx_n_s_aenter); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1069, __pyx_L35_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, NULL};
+      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1069, __pyx_L35_error)
+      __Pyx_GOTREF(__pyx_t_4);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    }
+    __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_4);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_XGOTREF(__pyx_r);
+    if (likely(__pyx_r)) {
+      __Pyx_XGIVEREF(__pyx_t_7);
+      __pyx_cur_scope->__pyx_t_0 = __pyx_t_7;
+      __Pyx_XGIVEREF(__pyx_r);
+      __Pyx_RefNannyFinishContext();
+      __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+      /* return from generator, awaiting value */
+      __pyx_generator->resume_label = 8;
+      return __pyx_r;
+      __pyx_L36_resume_from_await:;
+      __pyx_t_7 = __pyx_cur_scope->__pyx_t_0;
+      __pyx_cur_scope->__pyx_t_0 = 0;
+      __Pyx_XGOTREF(__pyx_t_7);
+      if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1069, __pyx_L35_error)
+      __pyx_t_4 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_4);
+    } else {
+      __pyx_t_4 = NULL;
+      if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_4) < 0) __PYX_ERR(9, 1069, __pyx_L35_error)
+      __Pyx_GOTREF(__pyx_t_4);
+    }
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    /*try:*/ {
+      {
+        (void)__pyx_t_8; (void)__pyx_t_1; (void)__pyx_t_6; /* mark used */
+        /*try:*/ {
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1070
+ * 
+ *         async with self._shutdown_lock:
+ *             if self._status == AIO_SERVER_STATUS_STOPPING:             # <<<<<<<<<<<<<<
+ *                 grpc_server_destroy(self._server.c_server)
+ *                 self._server.c_server = NULL
+ */
+          __pyx_t_12 = (__pyx_cur_scope->__pyx_v_self->_status == __pyx_e_7_cython_6cygrpc_AIO_SERVER_STATUS_STOPPING);
+          if (__pyx_t_12) {
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1071
+ *         async with self._shutdown_lock:
+ *             if self._status == AIO_SERVER_STATUS_STOPPING:
+ *                 grpc_server_destroy(self._server.c_server)             # <<<<<<<<<<<<<<
+ *                 self._server.c_server = NULL
+ *                 self._server.is_shutdown = True
+ */
+            grpc_server_destroy(__pyx_cur_scope->__pyx_v_self->_server->c_server);
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1072
+ *             if self._status == AIO_SERVER_STATUS_STOPPING:
+ *                 grpc_server_destroy(self._server.c_server)
+ *                 self._server.c_server = NULL             # <<<<<<<<<<<<<<
+ *                 self._server.is_shutdown = True
+ *                 self._status = AIO_SERVER_STATUS_STOPPED
+ */
+            __pyx_cur_scope->__pyx_v_self->_server->c_server = NULL;
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1073
+ *                 grpc_server_destroy(self._server.c_server)
+ *                 self._server.c_server = NULL
+ *                 self._server.is_shutdown = True             # <<<<<<<<<<<<<<
+ *                 self._status = AIO_SERVER_STATUS_STOPPED
+ * 
+ */
+            __pyx_cur_scope->__pyx_v_self->_server->is_shutdown = 1;
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1074
+ *                 self._server.c_server = NULL
+ *                 self._server.is_shutdown = True
+ *                 self._status = AIO_SERVER_STATUS_STOPPED             # <<<<<<<<<<<<<<
+ * 
+ *     async def wait_for_termination(self, object timeout):
+ */
+            __pyx_cur_scope->__pyx_v_self->_status = __pyx_e_7_cython_6cygrpc_AIO_SERVER_STATUS_STOPPED;
+
+            /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1070
+ * 
+ *         async with self._shutdown_lock:
+ *             if self._status == AIO_SERVER_STATUS_STOPPING:             # <<<<<<<<<<<<<<
+ *                 grpc_server_destroy(self._server.c_server)
+ *                 self._server.c_server = NULL
+ */
+          }
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1069
+ *                 await self._shutdown_completed
+ * 
+ *         async with self._shutdown_lock:             # <<<<<<<<<<<<<<
+ *             if self._status == AIO_SERVER_STATUS_STOPPING:
+ *                 grpc_server_destroy(self._server.c_server)
+ */
+        }
+      }
+    }
+    /*finally:*/ {
+      /*normal exit:*/{
+        if (__pyx_t_7) {
+          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_tuple__11, NULL);
+          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+          if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1069, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_6);
+          __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_6);
+          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+          __Pyx_XGOTREF(__pyx_r);
+          if (likely(__pyx_r)) {
+            __Pyx_XGIVEREF(__pyx_t_6);
+            __pyx_cur_scope->__pyx_t_0 = __pyx_t_6;
+            __Pyx_XGIVEREF(__pyx_t_7);
+            __pyx_cur_scope->__pyx_t_1 = __pyx_t_7;
+            __Pyx_XGIVEREF(__pyx_r);
+            __Pyx_RefNannyFinishContext();
+            __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+            /* return from generator, awaiting value */
+            __pyx_generator->resume_label = 9;
+            return __pyx_r;
+            __pyx_L47_resume_from_await:;
+            __pyx_t_6 = __pyx_cur_scope->__pyx_t_0;
+            __pyx_cur_scope->__pyx_t_0 = 0;
+            __Pyx_XGOTREF(__pyx_t_6);
+            __pyx_t_7 = __pyx_cur_scope->__pyx_t_1;
+            __pyx_cur_scope->__pyx_t_1 = 0;
+            __Pyx_XGOTREF(__pyx_t_7);
+            if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1069, __pyx_L1_error)
+            __pyx_t_4 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_4);
+          } else {
+            __pyx_t_4 = NULL;
+            if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_4) < 0) __PYX_ERR(9, 1069, __pyx_L1_error)
+            __Pyx_GOTREF(__pyx_t_4);
+          }
+          __pyx_t_6 = __pyx_t_4;
+          __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+        }
+        goto __pyx_L39;
+      }
+      __pyx_L39:;
+    }
+    goto __pyx_L48;
+    __pyx_L35_error:;
+    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    goto __pyx_L1_error;
+    __pyx_L48:;
+  }
+  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1036
+ *             pass
+ * 
+ *     async def shutdown(self, grace):             # <<<<<<<<<<<<<<
+ *         """Gracefully shutdown the Core server.
+ * 
+ */
+
+  /* function exit code */
+  PyErr_SetNone(PyExc_StopIteration);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_Generator_Replace_StopIteration(0);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_XDECREF(__pyx_t_13);
+  __Pyx_AddTraceback("shutdown", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
+  #if !CYTHON_USE_EXC_INFO_STACK
+  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+  #endif
+  __pyx_generator->resume_label = -1;
+  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+static PyObject *__pyx_gb_7_cython_6cygrpc_9AioServer_27generator43(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1076
+ *                 self._status = AIO_SERVER_STATUS_STOPPED
+ * 
+ *     async def wait_for_termination(self, object timeout):             # <<<<<<<<<<<<<<
+ *         if timeout is None:
+ *             await self._shutdown_completed
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_9AioServer_26wait_for_termination(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_9AioServer_26wait_for_termination = {"wait_for_termination", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_9AioServer_26wait_for_termination, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_9AioServer_26wait_for_termination(PyObject *__pyx_v_self, 
+#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_timeout = 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("wait_for_termination (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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_timeout,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_timeout)) != 0)) {
+          (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+          kw_args--;
+        }
+        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 1076, __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, "wait_for_termination") < 0)) __PYX_ERR(9, 1076, __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_timeout = values[0];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("wait_for_termination", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 1076, __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("_cython.cygrpc.AioServer.wait_for_termination", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_9AioServer_25wait_for_termination(((struct __pyx_obj_7_cython_6cygrpc_AioServer *)__pyx_v_self), __pyx_v_timeout);
+
+  /* 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_7_cython_6cygrpc_9AioServer_25wait_for_termination(struct __pyx_obj_7_cython_6cygrpc_AioServer *__pyx_v_self, PyObject *__pyx_v_timeout) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination *__pyx_cur_scope;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("wait_for_termination", 0);
+  __pyx_cur_scope = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination, __pyx_empty_tuple, NULL);
+  if (unlikely(!__pyx_cur_scope)) {
+    __pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination *)Py_None);
+    __Pyx_INCREF(Py_None);
+    __PYX_ERR(9, 1076, __pyx_L1_error)
+  } else {
+    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
+  }
+  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
+  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
+  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
+  __pyx_cur_scope->__pyx_v_timeout = __pyx_v_timeout;
+  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_timeout);
+  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_timeout);
+  {
+    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_7_cython_6cygrpc_9AioServer_27generator43, __pyx_codeobj__104, (PyObject *) __pyx_cur_scope, __pyx_n_s_wait_for_termination, __pyx_n_s_AioServer_wait_for_termination, __pyx_n_s_cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(9, 1076, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_cur_scope);
+    __Pyx_RefNannyFinishContext();
+    return (PyObject *) gen;
+  }
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("_cython.cygrpc.AioServer.wait_for_termination", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_gb_7_cython_6cygrpc_9AioServer_27generator43(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
+{
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination *__pyx_cur_scope = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination *)__pyx_generator->closure);
+  PyObject *__pyx_r = NULL;
+  int __pyx_t_1;
+  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;
+  PyObject *__pyx_t_8 = NULL;
+  PyObject *__pyx_t_9 = NULL;
+  unsigned int __pyx_t_10;
+  int __pyx_t_11;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("wait_for_termination", 0);
+  switch (__pyx_generator->resume_label) {
+    case 0: goto __pyx_L3_first_run;
+    case 1: goto __pyx_L5_resume_from_await;
+    case 2: goto __pyx_L12_resume_from_await;
+    default: /* CPython raises the right error here */
+    __Pyx_RefNannyFinishContext();
+    return NULL;
+  }
+  __pyx_L3_first_run:;
+  if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1076, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1077
+ * 
+ *     async def wait_for_termination(self, object timeout):
+ *         if timeout is None:             # <<<<<<<<<<<<<<
+ *             await self._shutdown_completed
+ *         else:
+ */
+  __pyx_t_1 = (__pyx_cur_scope->__pyx_v_timeout == Py_None);
+  if (__pyx_t_1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1078
+ *     async def wait_for_termination(self, object timeout):
+ *         if timeout is None:
+ *             await self._shutdown_completed             # <<<<<<<<<<<<<<
+ *         else:
+ *             try:
+ */
+    __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_cur_scope->__pyx_v_self->_shutdown_completed);
+    __Pyx_XGOTREF(__pyx_r);
+    if (likely(__pyx_r)) {
+      __Pyx_XGIVEREF(__pyx_r);
+      __Pyx_RefNannyFinishContext();
+      __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+      /* return from generator, awaiting value */
+      __pyx_generator->resume_label = 1;
+      return __pyx_r;
+      __pyx_L5_resume_from_await:;
+      if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1078, __pyx_L1_error)
+    } else {
+      PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType();
+      if (exc_type) {
+        if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
+        else __PYX_ERR(9, 1078, __pyx_L1_error)
+      }
+    }
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1077
+ * 
+ *     async def wait_for_termination(self, object timeout):
+ *         if timeout is None:             # <<<<<<<<<<<<<<
+ *             await self._shutdown_completed
+ *         else:
+ */
+    goto __pyx_L4;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1080
+ *             await self._shutdown_completed
+ *         else:
+ *             try:             # <<<<<<<<<<<<<<
+ *                 await asyncio.wait_for(
+ *                     asyncio.shield(self._shutdown_completed),
+ */
+  /*else*/ {
+    {
+      __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
+      __Pyx_XGOTREF(__pyx_t_2);
+      __Pyx_XGOTREF(__pyx_t_3);
+      __Pyx_XGOTREF(__pyx_t_4);
+      /*try:*/ {
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1081
+ *         else:
+ *             try:
+ *                 await asyncio.wait_for(             # <<<<<<<<<<<<<<
+ *                     asyncio.shield(self._shutdown_completed),
+ *                     timeout,
+ */
+        __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_asyncio); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1081, __pyx_L6_error)
+        __Pyx_GOTREF(__pyx_t_6);
+        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_wait_for); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 1081, __pyx_L6_error)
+        __Pyx_GOTREF(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1082
+ *             try:
+ *                 await asyncio.wait_for(
+ *                     asyncio.shield(self._shutdown_completed),             # <<<<<<<<<<<<<<
+ *                     timeout,
+ *                 )
+ */
+        __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_asyncio); if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 1082, __pyx_L6_error)
+        __Pyx_GOTREF(__pyx_t_8);
+        __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_shield); if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 1082, __pyx_L6_error)
+        __Pyx_GOTREF(__pyx_t_9);
+        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+        __pyx_t_8 = NULL;
+        __pyx_t_10 = 0;
+        #if CYTHON_UNPACK_METHODS
+        if (unlikely(PyMethod_Check(__pyx_t_9))) {
+          __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_9);
+          if (likely(__pyx_t_8)) {
+            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
+            __Pyx_INCREF(__pyx_t_8);
+            __Pyx_INCREF(function);
+            __Pyx_DECREF_SET(__pyx_t_9, function);
+            __pyx_t_10 = 1;
+          }
+        }
+        #endif
+        {
+          PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_cur_scope->__pyx_v_self->_shutdown_completed};
+          __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+1-__pyx_t_10, 1+__pyx_t_10);
+          __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+          if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 1082, __pyx_L6_error)
+          __Pyx_GOTREF(__pyx_t_6);
+          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+        }
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1083
+ *                 await asyncio.wait_for(
+ *                     asyncio.shield(self._shutdown_completed),
+ *                     timeout,             # <<<<<<<<<<<<<<
+ *                 )
+ *             except asyncio.TimeoutError:
+ */
+        __pyx_t_9 = NULL;
+        __pyx_t_10 = 0;
+        #if CYTHON_UNPACK_METHODS
+        if (unlikely(PyMethod_Check(__pyx_t_7))) {
+          __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_7);
+          if (likely(__pyx_t_9)) {
+            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
+            __Pyx_INCREF(__pyx_t_9);
+            __Pyx_INCREF(function);
+            __Pyx_DECREF_SET(__pyx_t_7, function);
+            __pyx_t_10 = 1;
+          }
+        }
+        #endif
+        {
+          PyObject *__pyx_callargs[3] = {__pyx_t_9, __pyx_t_6, __pyx_cur_scope->__pyx_v_timeout};
+          __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_10, 2+__pyx_t_10);
+          __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+          if (unlikely(!__pyx_t_5)) __PYX_ERR(9, 1081, __pyx_L6_error)
+          __Pyx_GOTREF(__pyx_t_5);
+          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        }
+        __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_5);
+        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XGOTREF(__pyx_r);
+        if (likely(__pyx_r)) {
+          __Pyx_XGIVEREF(__pyx_t_2);
+          __pyx_cur_scope->__pyx_t_0 = __pyx_t_2;
+          __Pyx_XGIVEREF(__pyx_t_3);
+          __pyx_cur_scope->__pyx_t_1 = __pyx_t_3;
+          __Pyx_XGIVEREF(__pyx_t_4);
+          __pyx_cur_scope->__pyx_t_2 = __pyx_t_4;
+          __Pyx_XGIVEREF(__pyx_r);
+          __Pyx_RefNannyFinishContext();
+          __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+          /* return from generator, awaiting value */
+          __pyx_generator->resume_label = 2;
+          return __pyx_r;
+          __pyx_L12_resume_from_await:;
+          __pyx_t_2 = __pyx_cur_scope->__pyx_t_0;
+          __pyx_cur_scope->__pyx_t_0 = 0;
+          __Pyx_XGOTREF(__pyx_t_2);
+          __pyx_t_3 = __pyx_cur_scope->__pyx_t_1;
+          __pyx_cur_scope->__pyx_t_1 = 0;
+          __Pyx_XGOTREF(__pyx_t_3);
+          __pyx_t_4 = __pyx_cur_scope->__pyx_t_2;
+          __pyx_cur_scope->__pyx_t_2 = 0;
+          __Pyx_XGOTREF(__pyx_t_4);
+          if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 1081, __pyx_L6_error)
+        } else {
+          PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType();
+          if (exc_type) {
+            if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
+            else __PYX_ERR(9, 1081, __pyx_L6_error)
+          }
+        }
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1080
+ *             await self._shutdown_completed
+ *         else:
+ *             try:             # <<<<<<<<<<<<<<
+ *                 await asyncio.wait_for(
+ *                     asyncio.shield(self._shutdown_completed),
+ */
+      }
+      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+      goto __pyx_L11_try_end;
+      __pyx_L6_error:;
+      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1085
+ *                     timeout,
+ *                 )
+ *             except asyncio.TimeoutError:             # <<<<<<<<<<<<<<
+ *                 if self._crash_exception is not None:
+ *                     raise self._crash_exception
+ */
+      __Pyx_ErrFetch(&__pyx_t_5, &__pyx_t_7, &__pyx_t_6);
+      __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_asyncio); if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 1085, __pyx_L8_except_error)
+      __Pyx_GOTREF(__pyx_t_9);
+      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_TimeoutError); if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 1085, __pyx_L8_except_error)
+      __Pyx_GOTREF(__pyx_t_8);
+      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+      __pyx_t_11 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_5, __pyx_t_8);
+      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+      __Pyx_ErrRestore(__pyx_t_5, __pyx_t_7, __pyx_t_6);
+      __pyx_t_5 = 0; __pyx_t_7 = 0; __pyx_t_6 = 0;
+      if (__pyx_t_11) {
+        __Pyx_AddTraceback("_cython.cygrpc.AioServer.wait_for_termination", __pyx_clineno, __pyx_lineno, __pyx_filename);
+        if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_7, &__pyx_t_5) < 0) __PYX_ERR(9, 1085, __pyx_L8_except_error)
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1086
+ *                 )
+ *             except asyncio.TimeoutError:
+ *                 if self._crash_exception is not None:             # <<<<<<<<<<<<<<
+ *                     raise self._crash_exception
+ *                 return True
+ */
+        __pyx_t_1 = (__pyx_cur_scope->__pyx_v_self->_crash_exception != Py_None);
+        if (unlikely(__pyx_t_1)) {
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1087
+ *             except asyncio.TimeoutError:
+ *                 if self._crash_exception is not None:
+ *                     raise self._crash_exception             # <<<<<<<<<<<<<<
+ *                 return True
+ *         if self._crash_exception is not None:
+ */
+          __Pyx_Raise(__pyx_cur_scope->__pyx_v_self->_crash_exception, 0, 0, 0);
+          __PYX_ERR(9, 1087, __pyx_L8_except_error)
+
+          /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1086
+ *                 )
+ *             except asyncio.TimeoutError:
+ *                 if self._crash_exception is not None:             # <<<<<<<<<<<<<<
+ *                     raise self._crash_exception
+ *                 return True
+ */
+        }
+
+        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1088
+ *                 if self._crash_exception is not None:
+ *                     raise self._crash_exception
+ *                 return True             # <<<<<<<<<<<<<<
+ *         if self._crash_exception is not None:
+ *             raise self._crash_exception
+ */
+        __Pyx_XDECREF(__pyx_r);
+        __pyx_r = NULL; __Pyx_ReturnWithStopIteration(Py_True);
+        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L9_except_return;
+      }
+      goto __pyx_L8_except_error;
+
+      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1080
+ *             await self._shutdown_completed
+ *         else:
+ *             try:             # <<<<<<<<<<<<<<
+ *                 await asyncio.wait_for(
+ *                     asyncio.shield(self._shutdown_completed),
+ */
+      __pyx_L8_except_error:;
+      __Pyx_XGIVEREF(__pyx_t_2);
+      __Pyx_XGIVEREF(__pyx_t_3);
+      __Pyx_XGIVEREF(__pyx_t_4);
+      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
+      goto __pyx_L1_error;
+      __pyx_L9_except_return:;
+      __Pyx_XGIVEREF(__pyx_t_2);
+      __Pyx_XGIVEREF(__pyx_t_3);
+      __Pyx_XGIVEREF(__pyx_t_4);
+      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
+      goto __pyx_L0;
+      __pyx_L11_try_end:;
+    }
+  }
+  __pyx_L4:;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1089
+ *                     raise self._crash_exception
+ *                 return True
+ *         if self._crash_exception is not None:             # <<<<<<<<<<<<<<
+ *             raise self._crash_exception
+ *         return False
+ */
+  __pyx_t_1 = (__pyx_cur_scope->__pyx_v_self->_crash_exception != Py_None);
+  if (unlikely(__pyx_t_1)) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1090
+ *                 return True
+ *         if self._crash_exception is not None:
+ *             raise self._crash_exception             # <<<<<<<<<<<<<<
+ *         return False
+ * 
+ */
+    __Pyx_Raise(__pyx_cur_scope->__pyx_v_self->_crash_exception, 0, 0, 0);
+    __PYX_ERR(9, 1090, __pyx_L1_error)
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1089
+ *                     raise self._crash_exception
+ *                 return True
+ *         if self._crash_exception is not None:             # <<<<<<<<<<<<<<
+ *             raise self._crash_exception
+ *         return False
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1091
+ *         if self._crash_exception is not None:
+ *             raise self._crash_exception
+ *         return False             # <<<<<<<<<<<<<<
+ * 
+ *     def __dealloc__(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_r = NULL; __Pyx_ReturnWithStopIteration(Py_False);
+  goto __pyx_L0;
+  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1076
+ *                 self._status = AIO_SERVER_STATUS_STOPPED
+ * 
+ *     async def wait_for_termination(self, object timeout):             # <<<<<<<<<<<<<<
+ *         if timeout is None:
+ *             await self._shutdown_completed
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_Generator_Replace_StopIteration(0);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_AddTraceback("wait_for_termination", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
+  #if !CYTHON_USE_EXC_INFO_STACK
+  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
+  #endif
+  __pyx_generator->resume_label = -1;
+  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1093
+ *         return False
+ * 
+ *     def __dealloc__(self):             # <<<<<<<<<<<<<<
+ *         """Deallocation of Core objects are ensured by Python layer."""
+ *         # TODO(lidiz) if users create server, and then dealloc it immediately.
+ */
+
+/* Python wrapper */
+static void __pyx_pw_7_cython_6cygrpc_9AioServer_29__dealloc__(PyObject *__pyx_v_self); /*proto*/
+static void __pyx_pw_7_cython_6cygrpc_9AioServer_29__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_7_cython_6cygrpc_9AioServer_28__dealloc__(((struct __pyx_obj_7_cython_6cygrpc_AioServer *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+}
+
+static void __pyx_pf_7_cython_6cygrpc_9AioServer_28__dealloc__(struct __pyx_obj_7_cython_6cygrpc_AioServer *__pyx_v_self) {
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  unsigned int __pyx_t_6;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__dealloc__", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1097
+ *         # TODO(lidiz) if users create server, and then dealloc it immediately.
+ *         # There is a potential memory leak of created Core server.
+ *         if self._status != AIO_SERVER_STATUS_STOPPED:             # <<<<<<<<<<<<<<
+ *             _LOGGER.debug(
+ *                 '__dealloc__ called on running server %s with status %d',
+ */
+  __pyx_t_1 = (__pyx_v_self->_status != __pyx_e_7_cython_6cygrpc_AIO_SERVER_STATUS_STOPPED);
+  if (__pyx_t_1) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1098
+ *         # There is a potential memory leak of created Core server.
+ *         if self._status != AIO_SERVER_STATUS_STOPPED:
+ *             _LOGGER.debug(             # <<<<<<<<<<<<<<
+ *                 '__dealloc__ called on running server %s with status %d',
+ *                 self,
+ */
+    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_LOGGER); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1098, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_debug); if (unlikely(!__pyx_t_4)) __PYX_ERR(9, 1098, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1101
+ *                 '__dealloc__ called on running server %s with status %d',
+ *                 self,
+ *                 self._status             # <<<<<<<<<<<<<<
+ *             )
+ *         shutdown_grpc_aio()
+ */
+    __pyx_t_3 = __Pyx_PyInt_From_enum____pyx_t_7_cython_6cygrpc_AioServerStatus(__pyx_v_self->_status); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 1101, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __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[4] = {__pyx_t_5, __pyx_kp_s_dealloc___called_on_running_se, ((PyObject *)__pyx_v_self), __pyx_t_3};
+      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __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;
+      if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1098, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1097
+ *         # TODO(lidiz) if users create server, and then dealloc it immediately.
+ *         # There is a potential memory leak of created Core server.
+ *         if self._status != AIO_SERVER_STATUS_STOPPED:             # <<<<<<<<<<<<<<
+ *             _LOGGER.debug(
+ *                 '__dealloc__ called on running server %s with status %d',
+ */
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1103
+ *                 self._status
+ *             )
+ *         shutdown_grpc_aio()             # <<<<<<<<<<<<<<
+ * 
+ *     cdef thread_pool(self):
+ */
+  __pyx_t_2 = __pyx_f_7_cython_6cygrpc_shutdown_grpc_aio(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 1103, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1093
+ *         return False
+ * 
+ *     def __dealloc__(self):             # <<<<<<<<<<<<<<
+ *         """Deallocation of Core objects are ensured by Python layer."""
+ *         # TODO(lidiz) if users create server, and then dealloc it immediately.
+ */
+
+  /* function exit code */
+  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_5);
+  __Pyx_WriteUnraisable("_cython.cygrpc.AioServer.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1105
+ *         shutdown_grpc_aio()
+ * 
+ *     cdef thread_pool(self):             # <<<<<<<<<<<<<<
+ *         """Access the thread pool instance."""
+ *         return self._thread_pool
+ */
+
+static PyObject *__pyx_f_7_cython_6cygrpc_9AioServer_thread_pool(struct __pyx_obj_7_cython_6cygrpc_AioServer *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("thread_pool", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1107
+ *     cdef thread_pool(self):
+ *         """Access the thread pool instance."""
+ *         return self._thread_pool             # <<<<<<<<<<<<<<
+ * 
+ *     def is_running(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->_thread_pool);
+  __pyx_r = __pyx_v_self->_thread_pool;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1105
+ *         shutdown_grpc_aio()
+ * 
+ *     cdef thread_pool(self):             # <<<<<<<<<<<<<<
+ *         """Access the thread pool instance."""
+ *         return self._thread_pool
+ */
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1109
+ *         return self._thread_pool
+ * 
+ *     def is_running(self):             # <<<<<<<<<<<<<<
+ *         return self._status == AIO_SERVER_STATUS_RUNNING
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_9AioServer_31is_running(PyObject *__pyx_v_self, 
+#if CYTHON_METH_FASTCALL
+PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
+#else
+PyObject *__pyx_args, PyObject *__pyx_kwds
+#endif
+); /*proto*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_9AioServer_31is_running = {"is_running", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_9AioServer_31is_running, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_9AioServer_31is_running(PyObject *__pyx_v_self, 
+#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("is_running (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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("is_running", 1, 0, 0, __pyx_nargs); return NULL;}
+  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "is_running", 0))) return NULL;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_9AioServer_30is_running(((struct __pyx_obj_7_cython_6cygrpc_AioServer *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_9AioServer_30is_running(struct __pyx_obj_7_cython_6cygrpc_AioServer *__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("is_running", 1);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1110
+ * 
+ *     def is_running(self):
+ *         return self._status == AIO_SERVER_STATUS_RUNNING             # <<<<<<<<<<<<<<
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_self->_status == __pyx_e_7_cython_6cygrpc_AIO_SERVER_STATUS_RUNNING)); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 1110, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1109
+ *         return self._thread_pool
+ * 
+ *     def is_running(self):             # <<<<<<<<<<<<<<
+ *         return self._status == AIO_SERVER_STATUS_RUNNING
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("_cython.cygrpc.AioServer.is_running", __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_7_cython_6cygrpc_9AioServer_33__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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_9AioServer_33__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_9AioServer_33__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_9AioServer_33__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_7_cython_6cygrpc_9AioServer_32__reduce_cython__(((struct __pyx_obj_7_cython_6cygrpc_AioServer *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_7_cython_6cygrpc_9AioServer_32__reduce_cython__(struct __pyx_obj_7_cython_6cygrpc_AioServer *__pyx_v_self) {
+  PyObject *__pyx_v_state = 0;
+  PyObject *__pyx_v__dict = 0;
+  int __pyx_v_use_setstate;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_t_3;
+  int __pyx_t_4;
+  PyObject *__pyx_t_5 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__reduce_cython__", 1);
+
+  /* "(tree fragment)":5
+ *     cdef object _dict
+ *     cdef bint use_setstate
+ *     state = (self._crash_exception, self._generic_handlers, self._interceptors, self._limiter, self._loop, self._server, self._serving_task, self._shutdown_callback_wrapper, self._shutdown_completed, self._shutdown_lock, self._status, self._thread_pool)             # <<<<<<<<<<<<<<
+ *     _dict = getattr(self, '__dict__', None)
+ *     if _dict is not None:
+ */
+  __pyx_t_1 = __Pyx_PyInt_From_enum____pyx_t_7_cython_6cygrpc_AioServerStatus(__pyx_v_self->_status); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 5, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyTuple_New(12); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 5, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_v_self->_crash_exception);
+  __Pyx_GIVEREF(__pyx_v_self->_crash_exception);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_self->_crash_exception)) __PYX_ERR(10, 5, __pyx_L1_error);
+  __Pyx_INCREF(__pyx_v_self->_generic_handlers);
+  __Pyx_GIVEREF(__pyx_v_self->_generic_handlers);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_self->_generic_handlers)) __PYX_ERR(10, 5, __pyx_L1_error);
+  __Pyx_INCREF(__pyx_v_self->_interceptors);
+  __Pyx_GIVEREF(__pyx_v_self->_interceptors);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_self->_interceptors)) __PYX_ERR(10, 5, __pyx_L1_error);
+  __Pyx_INCREF((PyObject *)__pyx_v_self->_limiter);
+  __Pyx_GIVEREF((PyObject *)__pyx_v_self->_limiter);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 3, ((PyObject *)__pyx_v_self->_limiter))) __PYX_ERR(10, 5, __pyx_L1_error);
+  __Pyx_INCREF(__pyx_v_self->_loop);
+  __Pyx_GIVEREF(__pyx_v_self->_loop);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_v_self->_loop)) __PYX_ERR(10, 5, __pyx_L1_error);
+  __Pyx_INCREF((PyObject *)__pyx_v_self->_server);
+  __Pyx_GIVEREF((PyObject *)__pyx_v_self->_server);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 5, ((PyObject *)__pyx_v_self->_server))) __PYX_ERR(10, 5, __pyx_L1_error);
+  __Pyx_INCREF(__pyx_v_self->_serving_task);
+  __Pyx_GIVEREF(__pyx_v_self->_serving_task);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 6, __pyx_v_self->_serving_task)) __PYX_ERR(10, 5, __pyx_L1_error);
+  __Pyx_INCREF((PyObject *)__pyx_v_self->_shutdown_callback_wrapper);
+  __Pyx_GIVEREF((PyObject *)__pyx_v_self->_shutdown_callback_wrapper);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 7, ((PyObject *)__pyx_v_self->_shutdown_callback_wrapper))) __PYX_ERR(10, 5, __pyx_L1_error);
+  __Pyx_INCREF(__pyx_v_self->_shutdown_completed);
+  __Pyx_GIVEREF(__pyx_v_self->_shutdown_completed);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 8, __pyx_v_self->_shutdown_completed)) __PYX_ERR(10, 5, __pyx_L1_error);
+  __Pyx_INCREF(__pyx_v_self->_shutdown_lock);
+  __Pyx_GIVEREF(__pyx_v_self->_shutdown_lock);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 9, __pyx_v_self->_shutdown_lock)) __PYX_ERR(10, 5, __pyx_L1_error);
+  __Pyx_GIVEREF(__pyx_t_1);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 10, __pyx_t_1)) __PYX_ERR(10, 5, __pyx_L1_error);
+  __Pyx_INCREF(__pyx_v_self->_thread_pool);
+  __Pyx_GIVEREF(__pyx_v_self->_thread_pool);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 11, __pyx_v_self->_thread_pool)) __PYX_ERR(10, 5, __pyx_L1_error);
+  __pyx_t_1 = 0;
+  __pyx_v_state = ((PyObject*)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "(tree fragment)":6
+ *     cdef bint use_setstate
+ *     state = (self._crash_exception, self._generic_handlers, self._interceptors, self._limiter, self._loop, self._server, self._serving_task, self._shutdown_callback_wrapper, self._shutdown_completed, self._shutdown_lock, self._status, self._thread_pool)
+ *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
+ *     if _dict is not None:
+ *         state += (_dict,)
+ */
+  __pyx_t_2 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 6, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_v__dict = __pyx_t_2;
+  __pyx_t_2 = 0;
+
+  /* "(tree fragment)":7
+ *     state = (self._crash_exception, self._generic_handlers, self._interceptors, self._limiter, self._loop, self._server, self._serving_task, self._shutdown_callback_wrapper, self._shutdown_completed, self._shutdown_lock, self._status, self._thread_pool)
+ *     _dict = getattr(self, '__dict__', None)
+ *     if _dict is not None:             # <<<<<<<<<<<<<<
+ *         state += (_dict,)
+ *         use_setstate = True
+ */
+  __pyx_t_3 = (__pyx_v__dict != Py_None);
+  if (__pyx_t_3) {
+
+    /* "(tree fragment)":8
+ *     _dict = getattr(self, '__dict__', None)
+ *     if _dict is not None:
+ *         state += (_dict,)             # <<<<<<<<<<<<<<
+ *         use_setstate = True
+ *     else:
+ */
+    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 8, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_INCREF(__pyx_v__dict);
+    __Pyx_GIVEREF(__pyx_v__dict);
+    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v__dict)) __PYX_ERR(10, 8, __pyx_L1_error);
+    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 8, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_1));
+    __pyx_t_1 = 0;
+
+    /* "(tree fragment)":9
+ *     if _dict is not None:
+ *         state += (_dict,)
+ *         use_setstate = True             # <<<<<<<<<<<<<<
+ *     else:
+ *         use_setstate = self._crash_exception is not None or self._generic_handlers is not None or self._interceptors is not None or self._limiter is not None or self._loop is not None or self._server is not None or self._serving_task is not None or self._shutdown_callback_wrapper is not None or self._shutdown_completed is not None or self._shutdown_lock is not None or self._thread_pool is not None
+ */
+    __pyx_v_use_setstate = 1;
+
+    /* "(tree fragment)":7
+ *     state = (self._crash_exception, self._generic_handlers, self._interceptors, self._limiter, self._loop, self._server, self._serving_task, self._shutdown_callback_wrapper, self._shutdown_completed, self._shutdown_lock, self._status, self._thread_pool)
+ *     _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._crash_exception is not None or self._generic_handlers is not None or self._interceptors is not None or self._limiter is not None or self._loop is not None or self._server is not None or self._serving_task is not None or self._shutdown_callback_wrapper is not None or self._shutdown_completed is not None or self._shutdown_lock is not None or self._thread_pool is not None             # <<<<<<<<<<<<<<
+ *     if use_setstate:
+ *         return __pyx_unpickle_AioServer, (type(self), 0xa3b308d, None), state
+ */
+  /*else*/ {
+    __pyx_t_4 = (__pyx_v_self->_crash_exception != Py_None);
+    if (!__pyx_t_4) {
+    } else {
+      __pyx_t_3 = __pyx_t_4;
+      goto __pyx_L4_bool_binop_done;
+    }
+    __pyx_t_4 = (__pyx_v_self->_generic_handlers != ((PyObject*)Py_None));
+    if (!__pyx_t_4) {
+    } else {
+      __pyx_t_3 = __pyx_t_4;
+      goto __pyx_L4_bool_binop_done;
+    }
+    __pyx_t_4 = (__pyx_v_self->_interceptors != ((PyObject*)Py_None));
+    if (!__pyx_t_4) {
+    } else {
+      __pyx_t_3 = __pyx_t_4;
+      goto __pyx_L4_bool_binop_done;
+    }
+    __pyx_t_4 = (((PyObject *)__pyx_v_self->_limiter) != Py_None);
+    if (!__pyx_t_4) {
+    } else {
+      __pyx_t_3 = __pyx_t_4;
+      goto __pyx_L4_bool_binop_done;
+    }
+    __pyx_t_4 = (__pyx_v_self->_loop != Py_None);
+    if (!__pyx_t_4) {
+    } else {
+      __pyx_t_3 = __pyx_t_4;
+      goto __pyx_L4_bool_binop_done;
+    }
+    __pyx_t_4 = (((PyObject *)__pyx_v_self->_server) != Py_None);
+    if (!__pyx_t_4) {
+    } else {
+      __pyx_t_3 = __pyx_t_4;
+      goto __pyx_L4_bool_binop_done;
+    }
+    __pyx_t_4 = (__pyx_v_self->_serving_task != Py_None);
+    if (!__pyx_t_4) {
+    } else {
+      __pyx_t_3 = __pyx_t_4;
+      goto __pyx_L4_bool_binop_done;
+    }
+    __pyx_t_4 = (((PyObject *)__pyx_v_self->_shutdown_callback_wrapper) != Py_None);
+    if (!__pyx_t_4) {
+    } else {
+      __pyx_t_3 = __pyx_t_4;
+      goto __pyx_L4_bool_binop_done;
+    }
+    __pyx_t_4 = (__pyx_v_self->_shutdown_completed != Py_None);
+    if (!__pyx_t_4) {
+    } else {
+      __pyx_t_3 = __pyx_t_4;
+      goto __pyx_L4_bool_binop_done;
+    }
+    __pyx_t_4 = (__pyx_v_self->_shutdown_lock != Py_None);
+    if (!__pyx_t_4) {
+    } else {
+      __pyx_t_3 = __pyx_t_4;
+      goto __pyx_L4_bool_binop_done;
+    }
+    __pyx_t_4 = (__pyx_v_self->_thread_pool != Py_None);
+    __pyx_t_3 = __pyx_t_4;
+    __pyx_L4_bool_binop_done:;
+    __pyx_v_use_setstate = __pyx_t_3;
+  }
+  __pyx_L3:;
+
+  /* "(tree fragment)":12
+ *     else:
+ *         use_setstate = self._crash_exception is not None or self._generic_handlers is not None or self._interceptors is not None or self._limiter is not None or self._loop is not None or self._server is not None or self._serving_task is not None or self._shutdown_callback_wrapper is not None or self._shutdown_completed is not None or self._shutdown_lock is not None or self._thread_pool is not None
+ *     if use_setstate:             # <<<<<<<<<<<<<<
+ *         return __pyx_unpickle_AioServer, (type(self), 0xa3b308d, None), state
+ *     else:
+ */
+  if (__pyx_v_use_setstate) {
+
+    /* "(tree fragment)":13
+ *         use_setstate = self._crash_exception is not None or self._generic_handlers is not None or self._interceptors is not None or self._limiter is not None or self._loop is not None or self._server is not None or self._serving_task is not None or self._shutdown_callback_wrapper is not None or self._shutdown_completed is not None or self._shutdown_lock is not None or self._thread_pool is not None
+ *     if use_setstate:
+ *         return __pyx_unpickle_AioServer, (type(self), 0xa3b308d, None), state             # <<<<<<<<<<<<<<
+ *     else:
+ *         return __pyx_unpickle_AioServer, (type(self), 0xa3b308d, state)
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_AioServer); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 13, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 13, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
+    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
+    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(10, 13, __pyx_L1_error);
+    __Pyx_INCREF(__pyx_int_171651213);
+    __Pyx_GIVEREF(__pyx_int_171651213);
+    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_171651213)) __PYX_ERR(10, 13, __pyx_L1_error);
+    __Pyx_INCREF(Py_None);
+    __Pyx_GIVEREF(Py_None);
+    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None)) __PYX_ERR(10, 13, __pyx_L1_error);
+    __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 13, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_GIVEREF(__pyx_t_1);
+    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1)) __PYX_ERR(10, 13, __pyx_L1_error);
+    __Pyx_GIVEREF(__pyx_t_2);
+    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_2)) __PYX_ERR(10, 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(10, 13, __pyx_L1_error);
+    __pyx_t_1 = 0;
+    __pyx_t_2 = 0;
+    __pyx_r = __pyx_t_5;
+    __pyx_t_5 = 0;
+    goto __pyx_L0;
+
+    /* "(tree fragment)":12
+ *     else:
+ *         use_setstate = self._crash_exception is not None or self._generic_handlers is not None or self._interceptors is not None or self._limiter is not None or self._loop is not None or self._server is not None or self._serving_task is not None or self._shutdown_callback_wrapper is not None or self._shutdown_completed is not None or self._shutdown_lock is not None or self._thread_pool is not None
+ *     if use_setstate:             # <<<<<<<<<<<<<<
+ *         return __pyx_unpickle_AioServer, (type(self), 0xa3b308d, None), state
+ *     else:
+ */
+  }
+
+  /* "(tree fragment)":15
+ *         return __pyx_unpickle_AioServer, (type(self), 0xa3b308d, None), state
+ *     else:
+ *         return __pyx_unpickle_AioServer, (type(self), 0xa3b308d, state)             # <<<<<<<<<<<<<<
+ * def __setstate_cython__(self, __pyx_state):
+ *     __pyx_unpickle_AioServer__set_state(self, __pyx_state)
+ */
+  /*else*/ {
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_AioServer); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 15, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 15, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
+    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
+    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))))) __PYX_ERR(10, 15, __pyx_L1_error);
+    __Pyx_INCREF(__pyx_int_171651213);
+    __Pyx_GIVEREF(__pyx_int_171651213);
+    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_171651213)) __PYX_ERR(10, 15, __pyx_L1_error);
+    __Pyx_INCREF(__pyx_v_state);
+    __Pyx_GIVEREF(__pyx_v_state);
+    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_state)) __PYX_ERR(10, 15, __pyx_L1_error);
+    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 15, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_GIVEREF(__pyx_t_5);
+    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5)) __PYX_ERR(10, 15, __pyx_L1_error);
+    __Pyx_GIVEREF(__pyx_t_2);
+    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2)) __PYX_ERR(10, 15, __pyx_L1_error);
+    __pyx_t_5 = 0;
+    __pyx_t_2 = 0;
+    __pyx_r = __pyx_t_1;
+    __pyx_t_1 = 0;
+    goto __pyx_L0;
+  }
+
+  /* "(tree fragment)":1
+ * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
+ *     cdef tuple state
+ *     cdef object _dict
+ */
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_AddTraceback("_cython.cygrpc.AioServer.__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_AioServer, (type(self), 0xa3b308d, state)
+ * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
+ *     __pyx_unpickle_AioServer__set_state(self, __pyx_state)
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_9AioServer_35__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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_9AioServer_35__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_9AioServer_35__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_9AioServer_35__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(10, 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(10, 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(10, 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("_cython.cygrpc.AioServer.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_9AioServer_34__setstate_cython__(((struct __pyx_obj_7_cython_6cygrpc_AioServer *)__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_7_cython_6cygrpc_9AioServer_34__setstate_cython__(struct __pyx_obj_7_cython_6cygrpc_AioServer *__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_AioServer, (type(self), 0xa3b308d, state)
+ * def __setstate_cython__(self, __pyx_state):
+ *     __pyx_unpickle_AioServer__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(10, 17, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_7_cython_6cygrpc___pyx_unpickle_AioServer__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 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_AioServer, (type(self), 0xa3b308d, state)
+ * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
+ *     __pyx_unpickle_AioServer__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("_cython.cygrpc.AioServer.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "_cython/cygrpc.pyx":83
+ * # initialize gRPC
+ * #
+ * cdef _initialize():             # <<<<<<<<<<<<<<
+ *   grpc_set_ssl_roots_override_callback(
+ *           <grpc_ssl_roots_override_callback>ssl_roots_override_callback)
+ */
+
+static PyObject *__pyx_f_7_cython_6cygrpc__initialize(void) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("_initialize", 1);
+
+  /* "_cython/cygrpc.pyx":84
+ * #
+ * cdef _initialize():
+ *   grpc_set_ssl_roots_override_callback(             # <<<<<<<<<<<<<<
+ *           <grpc_ssl_roots_override_callback>ssl_roots_override_callback)
+ * 
+ */
+  grpc_set_ssl_roots_override_callback(((grpc_ssl_roots_override_callback)__pyx_f_7_cython_6cygrpc_ssl_roots_override_callback));
+
+  /* "_cython/cygrpc.pyx":83
+ * # initialize gRPC
+ * #
+ * cdef _initialize():             # <<<<<<<<<<<<<<
+ *   grpc_set_ssl_roots_override_callback(
+ *           <grpc_ssl_roots_override_callback>ssl_roots_override_callback)
+ */
+
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "(tree fragment)":1
+ * def __pyx_unpickle_ChannelCredentials(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
+ *     cdef object __pyx_PickleError
+ *     cdef object __pyx_result
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_189__pyx_unpickle_ChannelCredentials(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_189__pyx_unpickle_ChannelCredentials = {"__pyx_unpickle_ChannelCredentials", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_189__pyx_unpickle_ChannelCredentials, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_189__pyx_unpickle_ChannelCredentials(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_ChannelCredentials (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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(10, 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(10, 1, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ChannelCredentials", 1, 3, 3, 1); __PYX_ERR(10, 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(10, 1, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ChannelCredentials", 1, 3, 3, 2); __PYX_ERR(10, 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_ChannelCredentials") < 0)) __PYX_ERR(10, 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(10, 1, __pyx_L3_error)
+    __pyx_v___pyx_state = values[2];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ChannelCredentials", 1, 3, 3, __pyx_nargs); __PYX_ERR(10, 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("_cython.cygrpc.__pyx_unpickle_ChannelCredentials", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_188__pyx_unpickle_ChannelCredentials(__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_7_cython_6cygrpc_188__pyx_unpickle_ChannelCredentials(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_ChannelCredentials", 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(10, 4, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_tuple__105, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(10, 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 = ChannelCredentials.__new__(__pyx_type)
+ */
+    __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 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(10, 5, __pyx_L1_error);
+    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 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(10, 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 = ChannelCredentials.__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(10, 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(10, 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(10, 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 = ChannelCredentials.__new__(__pyx_type)             # <<<<<<<<<<<<<<
+ *     if __pyx_state is not None:
+ *         __pyx_unpickle_ChannelCredentials__set_state(<ChannelCredentials> __pyx_result, __pyx_state)
+ */
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_7_cython_6cygrpc_ChannelCredentials), __pyx_n_s_new); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 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(10, 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 = ChannelCredentials.__new__(__pyx_type)
+ *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
+ *         __pyx_unpickle_ChannelCredentials__set_state(<ChannelCredentials> __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 = ChannelCredentials.__new__(__pyx_type)
+ *     if __pyx_state is not None:
+ *         __pyx_unpickle_ChannelCredentials__set_state(<ChannelCredentials> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
+ *     return __pyx_result
+ * cdef __pyx_unpickle_ChannelCredentials__set_state(ChannelCredentials __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(10, 9, __pyx_L1_error)
+    __pyx_t_1 = __pyx_f_7_cython_6cygrpc___pyx_unpickle_ChannelCredentials__set_state(((struct __pyx_obj_7_cython_6cygrpc_ChannelCredentials *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 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 = ChannelCredentials.__new__(__pyx_type)
+ *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
+ *         __pyx_unpickle_ChannelCredentials__set_state(<ChannelCredentials> __pyx_result, __pyx_state)
+ *     return __pyx_result
+ */
+  }
+
+  /* "(tree fragment)":10
+ *     if __pyx_state is not None:
+ *         __pyx_unpickle_ChannelCredentials__set_state(<ChannelCredentials> __pyx_result, __pyx_state)
+ *     return __pyx_result             # <<<<<<<<<<<<<<
+ * cdef __pyx_unpickle_ChannelCredentials__set_state(ChannelCredentials __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_ChannelCredentials(__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("_cython.cygrpc.__pyx_unpickle_ChannelCredentials", __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_ChannelCredentials__set_state(<ChannelCredentials> __pyx_result, __pyx_state)
+ *     return __pyx_result
+ * cdef __pyx_unpickle_ChannelCredentials__set_state(ChannelCredentials __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_7_cython_6cygrpc___pyx_unpickle_ChannelCredentials__set_state(struct __pyx_obj_7_cython_6cygrpc_ChannelCredentials *__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_ChannelCredentials__set_state", 1);
+
+  /* "(tree fragment)":12
+ *     return __pyx_result
+ * cdef __pyx_unpickle_ChannelCredentials__set_state(ChannelCredentials __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(10, 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(10, 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(10, 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_ChannelCredentials__set_state(ChannelCredentials __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(10, 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(10, 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(10, 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(10, 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(10, 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_ChannelCredentials__set_state(ChannelCredentials __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_ChannelCredentials__set_state(<ChannelCredentials> __pyx_result, __pyx_state)
+ *     return __pyx_result
+ * cdef __pyx_unpickle_ChannelCredentials__set_state(ChannelCredentials __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("_cython.cygrpc.__pyx_unpickle_ChannelCredentials__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_InsecureChannelCredentials(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
+ *     cdef object __pyx_PickleError
+ *     cdef object __pyx_result
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_191__pyx_unpickle_InsecureChannelCredentials(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_191__pyx_unpickle_InsecureChannelCredentials = {"__pyx_unpickle_InsecureChannelCredentials", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_191__pyx_unpickle_InsecureChannelCredentials, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_191__pyx_unpickle_InsecureChannelCredentials(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_InsecureChannelCredentials (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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(10, 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(10, 1, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_InsecureChannelCredentials", 1, 3, 3, 1); __PYX_ERR(10, 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(10, 1, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_InsecureChannelCredentials", 1, 3, 3, 2); __PYX_ERR(10, 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_InsecureChannelCredentials") < 0)) __PYX_ERR(10, 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(10, 1, __pyx_L3_error)
+    __pyx_v___pyx_state = values[2];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_InsecureChannelCredentials", 1, 3, 3, __pyx_nargs); __PYX_ERR(10, 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("_cython.cygrpc.__pyx_unpickle_InsecureChannelCredentials", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_190__pyx_unpickle_InsecureChannelCredentials(__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_7_cython_6cygrpc_190__pyx_unpickle_InsecureChannelCredentials(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_InsecureChannelCredentials", 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(10, 4, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_tuple__105, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(10, 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 = InsecureChannelCredentials.__new__(__pyx_type)
+ */
+    __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 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(10, 5, __pyx_L1_error);
+    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 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(10, 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 = InsecureChannelCredentials.__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(10, 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(10, 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(10, 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 = InsecureChannelCredentials.__new__(__pyx_type)             # <<<<<<<<<<<<<<
+ *     if __pyx_state is not None:
+ *         __pyx_unpickle_InsecureChannelCredentials__set_state(<InsecureChannelCredentials> __pyx_result, __pyx_state)
+ */
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_7_cython_6cygrpc_InsecureChannelCredentials), __pyx_n_s_new); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 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(10, 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 = InsecureChannelCredentials.__new__(__pyx_type)
+ *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
+ *         __pyx_unpickle_InsecureChannelCredentials__set_state(<InsecureChannelCredentials> __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 = InsecureChannelCredentials.__new__(__pyx_type)
+ *     if __pyx_state is not None:
+ *         __pyx_unpickle_InsecureChannelCredentials__set_state(<InsecureChannelCredentials> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
+ *     return __pyx_result
+ * cdef __pyx_unpickle_InsecureChannelCredentials__set_state(InsecureChannelCredentials __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(10, 9, __pyx_L1_error)
+    __pyx_t_1 = __pyx_f_7_cython_6cygrpc___pyx_unpickle_InsecureChannelCredentials__set_state(((struct __pyx_obj_7_cython_6cygrpc_InsecureChannelCredentials *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 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 = InsecureChannelCredentials.__new__(__pyx_type)
+ *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
+ *         __pyx_unpickle_InsecureChannelCredentials__set_state(<InsecureChannelCredentials> __pyx_result, __pyx_state)
+ *     return __pyx_result
+ */
+  }
+
+  /* "(tree fragment)":10
+ *     if __pyx_state is not None:
+ *         __pyx_unpickle_InsecureChannelCredentials__set_state(<InsecureChannelCredentials> __pyx_result, __pyx_state)
+ *     return __pyx_result             # <<<<<<<<<<<<<<
+ * cdef __pyx_unpickle_InsecureChannelCredentials__set_state(InsecureChannelCredentials __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_InsecureChannelCredentials(__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("_cython.cygrpc.__pyx_unpickle_InsecureChannelCredentials", __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_InsecureChannelCredentials__set_state(<InsecureChannelCredentials> __pyx_result, __pyx_state)
+ *     return __pyx_result
+ * cdef __pyx_unpickle_InsecureChannelCredentials__set_state(InsecureChannelCredentials __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_7_cython_6cygrpc___pyx_unpickle_InsecureChannelCredentials__set_state(struct __pyx_obj_7_cython_6cygrpc_InsecureChannelCredentials *__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_InsecureChannelCredentials__set_state", 1);
+
+  /* "(tree fragment)":12
+ *     return __pyx_result
+ * cdef __pyx_unpickle_InsecureChannelCredentials__set_state(InsecureChannelCredentials __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(10, 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(10, 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(10, 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_InsecureChannelCredentials__set_state(InsecureChannelCredentials __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(10, 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(10, 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(10, 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(10, 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(10, 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_InsecureChannelCredentials__set_state(InsecureChannelCredentials __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_InsecureChannelCredentials__set_state(<InsecureChannelCredentials> __pyx_result, __pyx_state)
+ *     return __pyx_result
+ * cdef __pyx_unpickle_InsecureChannelCredentials__set_state(InsecureChannelCredentials __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("_cython.cygrpc.__pyx_unpickle_InsecureChannelCredentials__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__Tag(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
+ *     cdef object __pyx_PickleError
+ *     cdef object __pyx_result
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_193__pyx_unpickle__Tag(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_193__pyx_unpickle__Tag = {"__pyx_unpickle__Tag", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_193__pyx_unpickle__Tag, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_193__pyx_unpickle__Tag(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__Tag (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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(10, 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(10, 1, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle__Tag", 1, 3, 3, 1); __PYX_ERR(10, 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(10, 1, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle__Tag", 1, 3, 3, 2); __PYX_ERR(10, 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__Tag") < 0)) __PYX_ERR(10, 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(10, 1, __pyx_L3_error)
+    __pyx_v___pyx_state = values[2];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle__Tag", 1, 3, 3, __pyx_nargs); __PYX_ERR(10, 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("_cython.cygrpc.__pyx_unpickle__Tag", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_192__pyx_unpickle__Tag(__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_7_cython_6cygrpc_192__pyx_unpickle__Tag(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__Tag", 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(10, 4, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_tuple__105, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(10, 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 = _Tag.__new__(__pyx_type)
+ */
+    __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 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(10, 5, __pyx_L1_error);
+    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 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(10, 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 = _Tag.__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(10, 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(10, 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(10, 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 = _Tag.__new__(__pyx_type)             # <<<<<<<<<<<<<<
+ *     if __pyx_state is not None:
+ *         __pyx_unpickle__Tag__set_state(<_Tag> __pyx_result, __pyx_state)
+ */
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_7_cython_6cygrpc__Tag), __pyx_n_s_new); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 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(10, 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 = _Tag.__new__(__pyx_type)
+ *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
+ *         __pyx_unpickle__Tag__set_state(<_Tag> __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 = _Tag.__new__(__pyx_type)
+ *     if __pyx_state is not None:
+ *         __pyx_unpickle__Tag__set_state(<_Tag> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
+ *     return __pyx_result
+ * cdef __pyx_unpickle__Tag__set_state(_Tag __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(10, 9, __pyx_L1_error)
+    __pyx_t_1 = __pyx_f_7_cython_6cygrpc___pyx_unpickle__Tag__set_state(((struct __pyx_obj_7_cython_6cygrpc__Tag *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 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 = _Tag.__new__(__pyx_type)
+ *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
+ *         __pyx_unpickle__Tag__set_state(<_Tag> __pyx_result, __pyx_state)
+ *     return __pyx_result
+ */
+  }
+
+  /* "(tree fragment)":10
+ *     if __pyx_state is not None:
+ *         __pyx_unpickle__Tag__set_state(<_Tag> __pyx_result, __pyx_state)
+ *     return __pyx_result             # <<<<<<<<<<<<<<
+ * cdef __pyx_unpickle__Tag__set_state(_Tag __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__Tag(__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("_cython.cygrpc.__pyx_unpickle__Tag", __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__Tag__set_state(<_Tag> __pyx_result, __pyx_state)
+ *     return __pyx_result
+ * cdef __pyx_unpickle__Tag__set_state(_Tag __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_7_cython_6cygrpc___pyx_unpickle__Tag__set_state(struct __pyx_obj_7_cython_6cygrpc__Tag *__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__Tag__set_state", 1);
+
+  /* "(tree fragment)":12
+ *     return __pyx_result
+ * cdef __pyx_unpickle__Tag__set_state(_Tag __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(10, 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(10, 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(10, 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__Tag__set_state(_Tag __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(10, 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(10, 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(10, 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(10, 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(10, 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__Tag__set_state(_Tag __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__Tag__set_state(<_Tag> __pyx_result, __pyx_state)
+ *     return __pyx_result
+ * cdef __pyx_unpickle__Tag__set_state(_Tag __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("_cython.cygrpc.__pyx_unpickle__Tag__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_CensusContext(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
+ *     cdef object __pyx_PickleError
+ *     cdef object __pyx_result
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_195__pyx_unpickle_CensusContext(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_195__pyx_unpickle_CensusContext = {"__pyx_unpickle_CensusContext", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_195__pyx_unpickle_CensusContext, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_195__pyx_unpickle_CensusContext(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_CensusContext (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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(10, 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(10, 1, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_CensusContext", 1, 3, 3, 1); __PYX_ERR(10, 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(10, 1, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_CensusContext", 1, 3, 3, 2); __PYX_ERR(10, 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_CensusContext") < 0)) __PYX_ERR(10, 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(10, 1, __pyx_L3_error)
+    __pyx_v___pyx_state = values[2];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_CensusContext", 1, 3, 3, __pyx_nargs); __PYX_ERR(10, 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("_cython.cygrpc.__pyx_unpickle_CensusContext", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_194__pyx_unpickle_CensusContext(__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_7_cython_6cygrpc_194__pyx_unpickle_CensusContext(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_CensusContext", 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(10, 4, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_tuple__105, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(10, 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 = CensusContext.__new__(__pyx_type)
+ */
+    __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 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(10, 5, __pyx_L1_error);
+    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 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(10, 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 = CensusContext.__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(10, 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(10, 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(10, 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 = CensusContext.__new__(__pyx_type)             # <<<<<<<<<<<<<<
+ *     if __pyx_state is not None:
+ *         __pyx_unpickle_CensusContext__set_state(<CensusContext> __pyx_result, __pyx_state)
+ */
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_7_cython_6cygrpc_CensusContext), __pyx_n_s_new); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 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(10, 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 = CensusContext.__new__(__pyx_type)
+ *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
+ *         __pyx_unpickle_CensusContext__set_state(<CensusContext> __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 = CensusContext.__new__(__pyx_type)
+ *     if __pyx_state is not None:
+ *         __pyx_unpickle_CensusContext__set_state(<CensusContext> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
+ *     return __pyx_result
+ * cdef __pyx_unpickle_CensusContext__set_state(CensusContext __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(10, 9, __pyx_L1_error)
+    __pyx_t_1 = __pyx_f_7_cython_6cygrpc___pyx_unpickle_CensusContext__set_state(((struct __pyx_obj_7_cython_6cygrpc_CensusContext *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 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 = CensusContext.__new__(__pyx_type)
+ *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
+ *         __pyx_unpickle_CensusContext__set_state(<CensusContext> __pyx_result, __pyx_state)
+ *     return __pyx_result
+ */
+  }
+
+  /* "(tree fragment)":10
+ *     if __pyx_state is not None:
+ *         __pyx_unpickle_CensusContext__set_state(<CensusContext> __pyx_result, __pyx_state)
+ *     return __pyx_result             # <<<<<<<<<<<<<<
+ * cdef __pyx_unpickle_CensusContext__set_state(CensusContext __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_CensusContext(__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("_cython.cygrpc.__pyx_unpickle_CensusContext", __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_CensusContext__set_state(<CensusContext> __pyx_result, __pyx_state)
+ *     return __pyx_result
+ * cdef __pyx_unpickle_CensusContext__set_state(CensusContext __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_7_cython_6cygrpc___pyx_unpickle_CensusContext__set_state(struct __pyx_obj_7_cython_6cygrpc_CensusContext *__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_CensusContext__set_state", 1);
+
+  /* "(tree fragment)":12
+ *     return __pyx_result
+ * cdef __pyx_unpickle_CensusContext__set_state(CensusContext __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(10, 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(10, 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(10, 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_CensusContext__set_state(CensusContext __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(10, 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(10, 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(10, 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(10, 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(10, 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_CensusContext__set_state(CensusContext __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_CensusContext__set_state(<CensusContext> __pyx_result, __pyx_state)
+ *     return __pyx_result
+ * cdef __pyx_unpickle_CensusContext__set_state(CensusContext __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("_cython.cygrpc.__pyx_unpickle_CensusContext__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_AioServer(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
+ *     cdef object __pyx_PickleError
+ *     cdef object __pyx_result
+ */
+
+/* Python wrapper */
+static PyObject *__pyx_pw_7_cython_6cygrpc_197__pyx_unpickle_AioServer(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*/
+static PyMethodDef __pyx_mdef_7_cython_6cygrpc_197__pyx_unpickle_AioServer = {"__pyx_unpickle_AioServer", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_197__pyx_unpickle_AioServer, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_7_cython_6cygrpc_197__pyx_unpickle_AioServer(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_AioServer (wrapper)", 0);
+  #if !CYTHON_METH_FASTCALL
+  #if CYTHON_ASSUME_SAFE_MACROS
+  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
+  #else
+  __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(10, 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(10, 1, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_AioServer", 1, 3, 3, 1); __PYX_ERR(10, 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(10, 1, __pyx_L3_error)
+        else {
+          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_AioServer", 1, 3, 3, 2); __PYX_ERR(10, 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_AioServer") < 0)) __PYX_ERR(10, 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(10, 1, __pyx_L3_error)
+    __pyx_v___pyx_state = values[2];
+  }
+  goto __pyx_L6_skip;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_AioServer", 1, 3, 3, __pyx_nargs); __PYX_ERR(10, 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("_cython.cygrpc.__pyx_unpickle_AioServer", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_7_cython_6cygrpc_196__pyx_unpickle_AioServer(__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_7_cython_6cygrpc_196__pyx_unpickle_AioServer(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_AioServer", 1);
+
+  /* "(tree fragment)":4
+ *     cdef object __pyx_PickleError
+ *     cdef object __pyx_result
+ *     if __pyx_checksum not in (0xa3b308d, 0x7117f7c, 0xa3714dd):             # <<<<<<<<<<<<<<
+ *         from pickle import PickleError as __pyx_PickleError
+ *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xa3b308d, 0x7117f7c, 0xa3714dd) = (_crash_exception, _generic_handlers, _interceptors, _limiter, _loop, _server, _serving_task, _shutdown_callback_wrapper, _shutdown_completed, _shutdown_lock, _status, _thread_pool))" % __pyx_checksum
+ */
+  __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 4, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_tuple__106, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(10, 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 (0xa3b308d, 0x7117f7c, 0xa3714dd):
+ *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
+ *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xa3b308d, 0x7117f7c, 0xa3714dd) = (_crash_exception, _generic_handlers, _interceptors, _limiter, _loop, _server, _serving_task, _shutdown_callback_wrapper, _shutdown_completed, _shutdown_lock, _status, _thread_pool))" % __pyx_checksum
+ *     __pyx_result = AioServer.__new__(__pyx_type)
+ */
+    __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 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(10, 5, __pyx_L1_error);
+    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 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(10, 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 (0xa3b308d, 0x7117f7c, 0xa3714dd):
+ *         from pickle import PickleError as __pyx_PickleError
+ *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xa3b308d, 0x7117f7c, 0xa3714dd) = (_crash_exception, _generic_handlers, _interceptors, _limiter, _loop, _server, _serving_task, _shutdown_callback_wrapper, _shutdown_completed, _shutdown_lock, _status, _thread_pool))" % __pyx_checksum             # <<<<<<<<<<<<<<
+ *     __pyx_result = AioServer.__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(10, 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(10, 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(10, 6, __pyx_L1_error)
+
+    /* "(tree fragment)":4
+ *     cdef object __pyx_PickleError
+ *     cdef object __pyx_result
+ *     if __pyx_checksum not in (0xa3b308d, 0x7117f7c, 0xa3714dd):             # <<<<<<<<<<<<<<
+ *         from pickle import PickleError as __pyx_PickleError
+ *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xa3b308d, 0x7117f7c, 0xa3714dd) = (_crash_exception, _generic_handlers, _interceptors, _limiter, _loop, _server, _serving_task, _shutdown_callback_wrapper, _shutdown_completed, _shutdown_lock, _status, _thread_pool))" % __pyx_checksum
+ */
+  }
+
+  /* "(tree fragment)":7
+ *         from pickle import PickleError as __pyx_PickleError
+ *         raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0xa3b308d, 0x7117f7c, 0xa3714dd) = (_crash_exception, _generic_handlers, _interceptors, _limiter, _loop, _server, _serving_task, _shutdown_callback_wrapper, _shutdown_completed, _shutdown_lock, _status, _thread_pool))" % __pyx_checksum
+ *     __pyx_result = AioServer.__new__(__pyx_type)             # <<<<<<<<<<<<<<
+ *     if __pyx_state is not None:
+ *         __pyx_unpickle_AioServer__set_state(<AioServer> __pyx_result, __pyx_state)
+ */
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_7_cython_6cygrpc_AioServer), __pyx_n_s_new); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 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(10, 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 (0xa3b308d, 0x7117f7c, 0xa3714dd) = (_crash_exception, _generic_handlers, _interceptors, _limiter, _loop, _server, _serving_task, _shutdown_callback_wrapper, _shutdown_completed, _shutdown_lock, _status, _thread_pool))" % __pyx_checksum
+ *     __pyx_result = AioServer.__new__(__pyx_type)
+ *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
+ *         __pyx_unpickle_AioServer__set_state(<AioServer> __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 = AioServer.__new__(__pyx_type)
+ *     if __pyx_state is not None:
+ *         __pyx_unpickle_AioServer__set_state(<AioServer> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
+ *     return __pyx_result
+ * cdef __pyx_unpickle_AioServer__set_state(AioServer __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(10, 9, __pyx_L1_error)
+    __pyx_t_1 = __pyx_f_7_cython_6cygrpc___pyx_unpickle_AioServer__set_state(((struct __pyx_obj_7_cython_6cygrpc_AioServer *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 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 (0xa3b308d, 0x7117f7c, 0xa3714dd) = (_crash_exception, _generic_handlers, _interceptors, _limiter, _loop, _server, _serving_task, _shutdown_callback_wrapper, _shutdown_completed, _shutdown_lock, _status, _thread_pool))" % __pyx_checksum
+ *     __pyx_result = AioServer.__new__(__pyx_type)
+ *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
+ *         __pyx_unpickle_AioServer__set_state(<AioServer> __pyx_result, __pyx_state)
+ *     return __pyx_result
+ */
+  }
+
+  /* "(tree fragment)":10
+ *     if __pyx_state is not None:
+ *         __pyx_unpickle_AioServer__set_state(<AioServer> __pyx_result, __pyx_state)
+ *     return __pyx_result             # <<<<<<<<<<<<<<
+ * cdef __pyx_unpickle_AioServer__set_state(AioServer __pyx_result, tuple __pyx_state):
+ *     __pyx_result._crash_exception = __pyx_state[0]; __pyx_result._generic_handlers = __pyx_state[1]; __pyx_result._interceptors = __pyx_state[2]; __pyx_result._limiter = __pyx_state[3]; __pyx_result._loop = __pyx_state[4]; __pyx_result._server = __pyx_state[5]; __pyx_result._serving_task = __pyx_state[6]; __pyx_result._shutdown_callback_wrapper = __pyx_state[7]; __pyx_result._shutdown_completed = __pyx_state[8]; __pyx_result._shutdown_lock = __pyx_state[9]; __pyx_result._status = __pyx_state[10]; __pyx_result._thread_pool = __pyx_state[11]
+ */
+  __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_AioServer(__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("_cython.cygrpc.__pyx_unpickle_AioServer", __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_AioServer__set_state(<AioServer> __pyx_result, __pyx_state)
+ *     return __pyx_result
+ * cdef __pyx_unpickle_AioServer__set_state(AioServer __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
+ *     __pyx_result._crash_exception = __pyx_state[0]; __pyx_result._generic_handlers = __pyx_state[1]; __pyx_result._interceptors = __pyx_state[2]; __pyx_result._limiter = __pyx_state[3]; __pyx_result._loop = __pyx_state[4]; __pyx_result._server = __pyx_state[5]; __pyx_result._serving_task = __pyx_state[6]; __pyx_result._shutdown_callback_wrapper = __pyx_state[7]; __pyx_result._shutdown_completed = __pyx_state[8]; __pyx_result._shutdown_lock = __pyx_state[9]; __pyx_result._status = __pyx_state[10]; __pyx_result._thread_pool = __pyx_state[11]
+ *     if len(__pyx_state) > 12 and hasattr(__pyx_result, '__dict__'):
+ */
+
+static PyObject *__pyx_f_7_cython_6cygrpc___pyx_unpickle_AioServer__set_state(struct __pyx_obj_7_cython_6cygrpc_AioServer *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  enum __pyx_t_7_cython_6cygrpc_AioServerStatus __pyx_t_2;
+  int __pyx_t_3;
+  Py_ssize_t __pyx_t_4;
+  int __pyx_t_5;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
+  unsigned int __pyx_t_9;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__pyx_unpickle_AioServer__set_state", 1);
+
+  /* "(tree fragment)":12
+ *     return __pyx_result
+ * cdef __pyx_unpickle_AioServer__set_state(AioServer __pyx_result, tuple __pyx_state):
+ *     __pyx_result._crash_exception = __pyx_state[0]; __pyx_result._generic_handlers = __pyx_state[1]; __pyx_result._interceptors = __pyx_state[2]; __pyx_result._limiter = __pyx_state[3]; __pyx_result._loop = __pyx_state[4]; __pyx_result._server = __pyx_state[5]; __pyx_result._serving_task = __pyx_state[6]; __pyx_result._shutdown_callback_wrapper = __pyx_state[7]; __pyx_result._shutdown_completed = __pyx_state[8]; __pyx_result._shutdown_lock = __pyx_state[9]; __pyx_result._status = __pyx_state[10]; __pyx_result._thread_pool = __pyx_state[11]             # <<<<<<<<<<<<<<
+ *     if len(__pyx_state) > 12 and hasattr(__pyx_result, '__dict__'):
+ *         __pyx_result.__dict__.update(__pyx_state[12])
+ */
+  if (unlikely(__pyx_v___pyx_state == Py_None)) {
+    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+    __PYX_ERR(10, 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(10, 12, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v___pyx_result->_crash_exception);
+  __Pyx_DECREF(__pyx_v___pyx_result->_crash_exception);
+  __pyx_v___pyx_result->_crash_exception = __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(10, 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(10, 12, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  if (!(likely(PyList_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("list", __pyx_t_1))) __PYX_ERR(10, 12, __pyx_L1_error)
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v___pyx_result->_generic_handlers);
+  __Pyx_DECREF(__pyx_v___pyx_result->_generic_handlers);
+  __pyx_v___pyx_result->_generic_handlers = ((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(10, 12, __pyx_L1_error)
+  }
+  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 12, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  if (!(likely(PyTuple_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_t_1))) __PYX_ERR(10, 12, __pyx_L1_error)
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v___pyx_result->_interceptors);
+  __Pyx_DECREF(__pyx_v___pyx_result->_interceptors);
+  __pyx_v___pyx_result->_interceptors = ((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(10, 12, __pyx_L1_error)
+  }
+  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 12, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_7_cython_6cygrpc__ConcurrentRpcLimiter))))) __PYX_ERR(10, 12, __pyx_L1_error)
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF((PyObject *)__pyx_v___pyx_result->_limiter);
+  __Pyx_DECREF((PyObject *)__pyx_v___pyx_result->_limiter);
+  __pyx_v___pyx_result->_limiter = ((struct __pyx_obj_7_cython_6cygrpc__ConcurrentRpcLimiter *)__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(10, 12, __pyx_L1_error)
+  }
+  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 12, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v___pyx_result->_loop);
+  __Pyx_DECREF(__pyx_v___pyx_result->_loop);
+  __pyx_v___pyx_result->_loop = __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(10, 12, __pyx_L1_error)
+  }
+  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 5, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 12, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_7_cython_6cygrpc_Server))))) __PYX_ERR(10, 12, __pyx_L1_error)
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF((PyObject *)__pyx_v___pyx_result->_server);
+  __Pyx_DECREF((PyObject *)__pyx_v___pyx_result->_server);
+  __pyx_v___pyx_result->_server = ((struct __pyx_obj_7_cython_6cygrpc_Server *)__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(10, 12, __pyx_L1_error)
+  }
+  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 6, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 12, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v___pyx_result->_serving_task);
+  __Pyx_DECREF(__pyx_v___pyx_result->_serving_task);
+  __pyx_v___pyx_result->_serving_task = __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(10, 12, __pyx_L1_error)
+  }
+  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 7, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 12, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_7_cython_6cygrpc_CallbackWrapper))))) __PYX_ERR(10, 12, __pyx_L1_error)
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF((PyObject *)__pyx_v___pyx_result->_shutdown_callback_wrapper);
+  __Pyx_DECREF((PyObject *)__pyx_v___pyx_result->_shutdown_callback_wrapper);
+  __pyx_v___pyx_result->_shutdown_callback_wrapper = ((struct __pyx_obj_7_cython_6cygrpc_CallbackWrapper *)__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(10, 12, __pyx_L1_error)
+  }
+  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 8, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 12, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v___pyx_result->_shutdown_completed);
+  __Pyx_DECREF(__pyx_v___pyx_result->_shutdown_completed);
+  __pyx_v___pyx_result->_shutdown_completed = __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(10, 12, __pyx_L1_error)
+  }
+  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 9, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 12, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v___pyx_result->_shutdown_lock);
+  __Pyx_DECREF(__pyx_v___pyx_result->_shutdown_lock);
+  __pyx_v___pyx_result->_shutdown_lock = __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(10, 12, __pyx_L1_error)
+  }
+  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 10, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 12, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = ((enum __pyx_t_7_cython_6cygrpc_AioServerStatus)__Pyx_PyInt_As_enum____pyx_t_7_cython_6cygrpc_AioServerStatus(__pyx_t_1)); if (unlikely(PyErr_Occurred())) __PYX_ERR(10, 12, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_v___pyx_result->_status = __pyx_t_2;
+  if (unlikely(__pyx_v___pyx_state == Py_None)) {
+    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+    __PYX_ERR(10, 12, __pyx_L1_error)
+  }
+  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 11, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 12, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v___pyx_result->_thread_pool);
+  __Pyx_DECREF(__pyx_v___pyx_result->_thread_pool);
+  __pyx_v___pyx_result->_thread_pool = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "(tree fragment)":13
+ * cdef __pyx_unpickle_AioServer__set_state(AioServer __pyx_result, tuple __pyx_state):
+ *     __pyx_result._crash_exception = __pyx_state[0]; __pyx_result._generic_handlers = __pyx_state[1]; __pyx_result._interceptors = __pyx_state[2]; __pyx_result._limiter = __pyx_state[3]; __pyx_result._loop = __pyx_state[4]; __pyx_result._server = __pyx_state[5]; __pyx_result._serving_task = __pyx_state[6]; __pyx_result._shutdown_callback_wrapper = __pyx_state[7]; __pyx_result._shutdown_completed = __pyx_state[8]; __pyx_result._shutdown_lock = __pyx_state[9]; __pyx_result._status = __pyx_state[10]; __pyx_result._thread_pool = __pyx_state[11]
+ *     if len(__pyx_state) > 12 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
+ *         __pyx_result.__dict__.update(__pyx_state[12])
+ */
+  if (unlikely(__pyx_v___pyx_state == Py_None)) {
+    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
+    __PYX_ERR(10, 13, __pyx_L1_error)
+  }
+  __pyx_t_4 = __Pyx_PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(10, 13, __pyx_L1_error)
+  __pyx_t_5 = (__pyx_t_4 > 12);
+  if (__pyx_t_5) {
+  } else {
+    __pyx_t_3 = __pyx_t_5;
+    goto __pyx_L4_bool_binop_done;
+  }
+  __pyx_t_5 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(10, 13, __pyx_L1_error)
+  __pyx_t_3 = __pyx_t_5;
+  __pyx_L4_bool_binop_done:;
+  if (__pyx_t_3) {
+
+    /* "(tree fragment)":14
+ *     __pyx_result._crash_exception = __pyx_state[0]; __pyx_result._generic_handlers = __pyx_state[1]; __pyx_result._interceptors = __pyx_state[2]; __pyx_result._limiter = __pyx_state[3]; __pyx_result._loop = __pyx_state[4]; __pyx_result._server = __pyx_state[5]; __pyx_result._serving_task = __pyx_state[6]; __pyx_result._shutdown_callback_wrapper = __pyx_state[7]; __pyx_result._shutdown_completed = __pyx_state[8]; __pyx_result._shutdown_lock = __pyx_state[9]; __pyx_result._status = __pyx_state[10]; __pyx_result._thread_pool = __pyx_state[11]
+ *     if len(__pyx_state) > 12 and hasattr(__pyx_result, '__dict__'):
+ *         __pyx_result.__dict__.update(__pyx_state[12])             # <<<<<<<<<<<<<<
+ */
+    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 14, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_6);
+    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_update); if (unlikely(!__pyx_t_7)) __PYX_ERR(10, 14, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_7);
+    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(__pyx_v___pyx_state == Py_None)) {
+      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+      __PYX_ERR(10, 14, __pyx_L1_error)
+    }
+    __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 12, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 14, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_6);
+    __pyx_t_8 = NULL;
+    __pyx_t_9 = 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_9 = 1;
+      }
+    }
+    #endif
+    {
+      PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_6};
+      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_9, 1+__pyx_t_9);
+      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+      if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 14, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    }
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+    /* "(tree fragment)":13
+ * cdef __pyx_unpickle_AioServer__set_state(AioServer __pyx_result, tuple __pyx_state):
+ *     __pyx_result._crash_exception = __pyx_state[0]; __pyx_result._generic_handlers = __pyx_state[1]; __pyx_result._interceptors = __pyx_state[2]; __pyx_result._limiter = __pyx_state[3]; __pyx_result._loop = __pyx_state[4]; __pyx_result._server = __pyx_state[5]; __pyx_result._serving_task = __pyx_state[6]; __pyx_result._shutdown_callback_wrapper = __pyx_state[7]; __pyx_result._shutdown_completed = __pyx_state[8]; __pyx_result._shutdown_lock = __pyx_state[9]; __pyx_result._status = __pyx_state[10]; __pyx_result._thread_pool = __pyx_state[11]
+ *     if len(__pyx_state) > 12 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
+ *         __pyx_result.__dict__.update(__pyx_state[12])
+ */
+  }
+
+  /* "(tree fragment)":11
+ *         __pyx_unpickle_AioServer__set_state(<AioServer> __pyx_result, __pyx_state)
+ *     return __pyx_result
+ * cdef __pyx_unpickle_AioServer__set_state(AioServer __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
+ *     __pyx_result._crash_exception = __pyx_state[0]; __pyx_result._generic_handlers = __pyx_state[1]; __pyx_result._interceptors = __pyx_state[2]; __pyx_result._limiter = __pyx_state[3]; __pyx_result._loop = __pyx_state[4]; __pyx_result._server = __pyx_state[5]; __pyx_result._serving_task = __pyx_state[6]; __pyx_result._shutdown_callback_wrapper = __pyx_state[7]; __pyx_result._shutdown_completed = __pyx_state[8]; __pyx_result._shutdown_lock = __pyx_state[9]; __pyx_result._status = __pyx_state[10]; __pyx_result._thread_pool = __pyx_state[11]
+ *     if len(__pyx_state) > 12 and hasattr(__pyx_result, '__dict__'):
+ */
+
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_AddTraceback("_cython.cygrpc.__pyx_unpickle_AioServer__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_7_cython_6cygrpc__ChannelArg __pyx_vtable_7_cython_6cygrpc__ChannelArg;
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc__ChannelArg(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc__ChannelArg *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_7_cython_6cygrpc__ChannelArg *)o);
+  p->__pyx_vtab = __pyx_vtabptr_7_cython_6cygrpc__ChannelArg;
+  new((void*)&(p->c_argument)) grpc_arg();
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc__ChannelArg(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc__ChannelArg *p = (struct __pyx_obj_7_cython_6cygrpc__ChannelArg *)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_7_cython_6cygrpc__ChannelArg) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  __Pyx_call_destructor(p->c_argument);
+  #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_7_cython_6cygrpc__ChannelArg[] = {
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_11_ChannelArg_1__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_11_ChannelArg_3__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc__ChannelArg_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc__ChannelArg},
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc__ChannelArg},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc__ChannelArg},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc__ChannelArg_spec = {
+  "_cython.cygrpc._ChannelArg",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc__ChannelArg),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
+  __pyx_type_7_cython_6cygrpc__ChannelArg_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc__ChannelArg = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""_ChannelArg", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc__ChannelArg), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc__ChannelArg, /*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_7_cython_6cygrpc__ChannelArg, /*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_7_cython_6cygrpc__ChannelArg, /*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_7_cython_6cygrpc__ChannelArgs __pyx_vtable_7_cython_6cygrpc__ChannelArgs;
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc__ChannelArgs(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc__ChannelArgs *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_7_cython_6cygrpc__ChannelArgs *)o);
+  p->__pyx_vtab = __pyx_vtabptr_7_cython_6cygrpc__ChannelArgs;
+  new((void*)&(p->_c_arguments)) grpc_channel_args();
+  p->_arguments = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  p->_channel_args = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  p->_references = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  if (unlikely(__pyx_pw_7_cython_6cygrpc_12_ChannelArgs_1__cinit__(o, a, k) < 0)) goto bad;
+  return o;
+  bad:
+  Py_DECREF(o); o = 0;
+  return NULL;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc__ChannelArgs(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc__ChannelArgs *p = (struct __pyx_obj_7_cython_6cygrpc__ChannelArgs *)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_7_cython_6cygrpc__ChannelArgs) {
+      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_7_cython_6cygrpc_12_ChannelArgs_3__dealloc__(o);
+    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
+    PyErr_Restore(etype, eval, etb);
+  }
+  __Pyx_call_destructor(p->_c_arguments);
+  Py_CLEAR(p->_arguments);
+  Py_CLEAR(p->_channel_args);
+  Py_CLEAR(p->_references);
+  #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_7_cython_6cygrpc__ChannelArgs(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc__ChannelArgs *p = (struct __pyx_obj_7_cython_6cygrpc__ChannelArgs *)o;
+  if (p->_arguments) {
+    e = (*v)(p->_arguments, a); if (e) return e;
+  }
+  if (p->_channel_args) {
+    e = (*v)(p->_channel_args, a); if (e) return e;
+  }
+  if (p->_references) {
+    e = (*v)(p->_references, a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_7_cython_6cygrpc__ChannelArgs(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_7_cython_6cygrpc__ChannelArgs *p = (struct __pyx_obj_7_cython_6cygrpc__ChannelArgs *)o;
+  tmp = ((PyObject*)p->_arguments);
+  p->_arguments = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->_channel_args);
+  p->_channel_args = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->_references);
+  p->_references = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_12_ChannelArgs__arguments(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_12_ChannelArgs_10_arguments_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_12_ChannelArgs__references(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_12_ChannelArgs_11_references_1__get__(o);
+}
+
+static PyMethodDef __pyx_methods_7_cython_6cygrpc__ChannelArgs[] = {
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_12_ChannelArgs_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_12_ChannelArgs_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_7_cython_6cygrpc__ChannelArgs[] = {
+  {(char *)"_arguments", __pyx_getprop_7_cython_6cygrpc_12_ChannelArgs__arguments, 0, (char *)0, 0},
+  {(char *)"_references", __pyx_getprop_7_cython_6cygrpc_12_ChannelArgs__references, 0, (char *)0, 0},
+  {0, 0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc__ChannelArgs_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc__ChannelArgs},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc__ChannelArgs},
+  {Py_tp_clear, (void *)__pyx_tp_clear_7_cython_6cygrpc__ChannelArgs},
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc__ChannelArgs},
+  {Py_tp_getset, (void *)__pyx_getsets_7_cython_6cygrpc__ChannelArgs},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc__ChannelArgs},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc__ChannelArgs_spec = {
+  "_cython.cygrpc._ChannelArgs",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc__ChannelArgs),
+  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_7_cython_6cygrpc__ChannelArgs_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc__ChannelArgs = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""_ChannelArgs", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc__ChannelArgs), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc__ChannelArgs, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc__ChannelArgs, /*tp_traverse*/
+  __pyx_tp_clear_7_cython_6cygrpc__ChannelArgs, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_7_cython_6cygrpc__ChannelArgs, /*tp_methods*/
+  0, /*tp_members*/
+  __pyx_getsets_7_cython_6cygrpc__ChannelArgs, /*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_7_cython_6cygrpc__ChannelArgs, /*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_7_cython_6cygrpc_Call(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc_Call *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_7_cython_6cygrpc_Call *)o);
+  p->references = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  if (unlikely(__pyx_pw_7_cython_6cygrpc_4Call_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_7_cython_6cygrpc_Call(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc_Call *p = (struct __pyx_obj_7_cython_6cygrpc_Call *)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_7_cython_6cygrpc_Call) {
+      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_7_cython_6cygrpc_4Call_15__dealloc__(o);
+    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
+    PyErr_Restore(etype, eval, etb);
+  }
+  Py_CLEAR(p->references);
+  #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_7_cython_6cygrpc_Call(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc_Call *p = (struct __pyx_obj_7_cython_6cygrpc_Call *)o;
+  if (p->references) {
+    e = (*v)(p->references, a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_7_cython_6cygrpc_Call(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_7_cython_6cygrpc_Call *p = (struct __pyx_obj_7_cython_6cygrpc_Call *)o;
+  tmp = ((PyObject*)p->references);
+  p->references = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_4Call_is_valid(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_4Call_8is_valid_1__get__(o);
+}
+
+static PyMethodDef __pyx_methods_7_cython_6cygrpc_Call[] = {
+  {"_start_batch", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_4Call_3_start_batch, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"start_client_batch", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_4Call_5start_client_batch, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"start_server_batch", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_4Call_7start_server_batch, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"cancel", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_4Call_9cancel, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"set_credentials", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_4Call_11set_credentials, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"peer", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_4Call_13peer, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"_custom_op_on_c_call", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_4Call_17_custom_op_on_c_call, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_4Call_19__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_4Call_21__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_7_cython_6cygrpc_Call[] = {
+  {(char *)"is_valid", __pyx_getprop_7_cython_6cygrpc_4Call_is_valid, 0, (char *)0, 0},
+  {0, 0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc_Call_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc_Call},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc_Call},
+  {Py_tp_clear, (void *)__pyx_tp_clear_7_cython_6cygrpc_Call},
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc_Call},
+  {Py_tp_getset, (void *)__pyx_getsets_7_cython_6cygrpc_Call},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc_Call},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc_Call_spec = {
+  "_cython.cygrpc.Call",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_Call),
+  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_7_cython_6cygrpc_Call_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc_Call = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""Call", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_Call), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc_Call, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc_Call, /*tp_traverse*/
+  __pyx_tp_clear_7_cython_6cygrpc_Call, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_7_cython_6cygrpc_Call, /*tp_methods*/
+  0, /*tp_members*/
+  __pyx_getsets_7_cython_6cygrpc_Call, /*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_7_cython_6cygrpc_Call, /*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_7_cython_6cygrpc__CallState __pyx_vtable_7_cython_6cygrpc__CallState;
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc__CallState(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc__CallState *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_7_cython_6cygrpc__CallState *)o);
+  p->__pyx_vtab = __pyx_vtabptr_7_cython_6cygrpc__CallState;
+  p->due = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  p->call_tracer_capsule = Py_None; Py_INCREF(Py_None);
+  if (unlikely(__pyx_pw_7_cython_6cygrpc_10_CallState_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_7_cython_6cygrpc__CallState(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc__CallState *p = (struct __pyx_obj_7_cython_6cygrpc__CallState *)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_7_cython_6cygrpc__CallState) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->due);
+  Py_CLEAR(p->call_tracer_capsule);
+  #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_7_cython_6cygrpc__CallState(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc__CallState *p = (struct __pyx_obj_7_cython_6cygrpc__CallState *)o;
+  if (p->due) {
+    e = (*v)(p->due, a); if (e) return e;
+  }
+  if (p->call_tracer_capsule) {
+    e = (*v)(p->call_tracer_capsule, a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_7_cython_6cygrpc__CallState(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_7_cython_6cygrpc__CallState *p = (struct __pyx_obj_7_cython_6cygrpc__CallState *)o;
+  tmp = ((PyObject*)p->due);
+  p->due = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->call_tracer_capsule);
+  p->call_tracer_capsule = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static PyMethodDef __pyx_methods_7_cython_6cygrpc__CallState[] = {
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_10_CallState_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_10_CallState_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc__CallState_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc__CallState},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc__CallState},
+  {Py_tp_clear, (void *)__pyx_tp_clear_7_cython_6cygrpc__CallState},
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc__CallState},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc__CallState},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc__CallState_spec = {
+  "_cython.cygrpc._CallState",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc__CallState),
+  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_7_cython_6cygrpc__CallState_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc__CallState = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""_CallState", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc__CallState), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc__CallState, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc__CallState, /*tp_traverse*/
+  __pyx_tp_clear_7_cython_6cygrpc__CallState, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_7_cython_6cygrpc__CallState, /*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_7_cython_6cygrpc__CallState, /*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_7_cython_6cygrpc__ChannelState(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc__ChannelState *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_7_cython_6cygrpc__ChannelState *)o);
+  p->target = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  p->condition = Py_None; Py_INCREF(Py_None);
+  p->open = Py_None; Py_INCREF(Py_None);
+  p->closed_reason = Py_None; Py_INCREF(Py_None);
+  p->integrated_call_states = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  p->segregated_call_states = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  p->connectivity_due = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  if (unlikely(__pyx_pw_7_cython_6cygrpc_13_ChannelState_1__cinit__(o, a, k) < 0)) goto bad;
+  return o;
+  bad:
+  Py_DECREF(o); o = 0;
+  return NULL;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc__ChannelState(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc__ChannelState *p = (struct __pyx_obj_7_cython_6cygrpc__ChannelState *)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_7_cython_6cygrpc__ChannelState) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->target);
+  Py_CLEAR(p->condition);
+  Py_CLEAR(p->open);
+  Py_CLEAR(p->closed_reason);
+  Py_CLEAR(p->integrated_call_states);
+  Py_CLEAR(p->segregated_call_states);
+  Py_CLEAR(p->connectivity_due);
+  #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_7_cython_6cygrpc__ChannelState(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc__ChannelState *p = (struct __pyx_obj_7_cython_6cygrpc__ChannelState *)o;
+  if (p->condition) {
+    e = (*v)(p->condition, a); if (e) return e;
+  }
+  if (p->open) {
+    e = (*v)(p->open, a); if (e) return e;
+  }
+  if (p->closed_reason) {
+    e = (*v)(p->closed_reason, a); if (e) return e;
+  }
+  if (p->integrated_call_states) {
+    e = (*v)(p->integrated_call_states, a); if (e) return e;
+  }
+  if (p->segregated_call_states) {
+    e = (*v)(p->segregated_call_states, a); if (e) return e;
+  }
+  if (p->connectivity_due) {
+    e = (*v)(p->connectivity_due, a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_7_cython_6cygrpc__ChannelState(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_7_cython_6cygrpc__ChannelState *p = (struct __pyx_obj_7_cython_6cygrpc__ChannelState *)o;
+  tmp = ((PyObject*)p->condition);
+  p->condition = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->open);
+  p->open = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->closed_reason);
+  p->closed_reason = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->integrated_call_states);
+  p->integrated_call_states = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->segregated_call_states);
+  p->segregated_call_states = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->connectivity_due);
+  p->connectivity_due = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static PyMethodDef __pyx_methods_7_cython_6cygrpc__ChannelState[] = {
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_13_ChannelState_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_13_ChannelState_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc__ChannelState_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc__ChannelState},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc__ChannelState},
+  {Py_tp_clear, (void *)__pyx_tp_clear_7_cython_6cygrpc__ChannelState},
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc__ChannelState},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc__ChannelState},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc__ChannelState_spec = {
+  "_cython.cygrpc._ChannelState",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc__ChannelState),
+  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_7_cython_6cygrpc__ChannelState_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc__ChannelState = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""_ChannelState", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc__ChannelState), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc__ChannelState, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc__ChannelState, /*tp_traverse*/
+  __pyx_tp_clear_7_cython_6cygrpc__ChannelState, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_7_cython_6cygrpc__ChannelState, /*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_7_cython_6cygrpc__ChannelState, /*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_7_cython_6cygrpc_IntegratedCall(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc_IntegratedCall *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_7_cython_6cygrpc_IntegratedCall *)o);
+  p->_channel_state = ((struct __pyx_obj_7_cython_6cygrpc__ChannelState *)Py_None); Py_INCREF(Py_None);
+  p->_call_state = ((struct __pyx_obj_7_cython_6cygrpc__CallState *)Py_None); Py_INCREF(Py_None);
+  if (unlikely(__pyx_pw_7_cython_6cygrpc_14IntegratedCall_1__cinit__(o, a, k) < 0)) goto bad;
+  return o;
+  bad:
+  Py_DECREF(o); o = 0;
+  return NULL;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc_IntegratedCall(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc_IntegratedCall *p = (struct __pyx_obj_7_cython_6cygrpc_IntegratedCall *)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_7_cython_6cygrpc_IntegratedCall) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->_channel_state);
+  Py_CLEAR(p->_call_state);
+  #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_7_cython_6cygrpc_IntegratedCall(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc_IntegratedCall *p = (struct __pyx_obj_7_cython_6cygrpc_IntegratedCall *)o;
+  if (p->_channel_state) {
+    e = (*v)(((PyObject *)p->_channel_state), a); if (e) return e;
+  }
+  if (p->_call_state) {
+    e = (*v)(((PyObject *)p->_call_state), a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_7_cython_6cygrpc_IntegratedCall(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_7_cython_6cygrpc_IntegratedCall *p = (struct __pyx_obj_7_cython_6cygrpc_IntegratedCall *)o;
+  tmp = ((PyObject*)p->_channel_state);
+  p->_channel_state = ((struct __pyx_obj_7_cython_6cygrpc__ChannelState *)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->_call_state);
+  p->_call_state = ((struct __pyx_obj_7_cython_6cygrpc__CallState *)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static PyMethodDef __pyx_methods_7_cython_6cygrpc_IntegratedCall[] = {
+  {"operate", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_14IntegratedCall_3operate, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"cancel", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_14IntegratedCall_5cancel, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_14IntegratedCall_7__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_14IntegratedCall_9__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc_IntegratedCall_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc_IntegratedCall},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc_IntegratedCall},
+  {Py_tp_clear, (void *)__pyx_tp_clear_7_cython_6cygrpc_IntegratedCall},
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc_IntegratedCall},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc_IntegratedCall},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc_IntegratedCall_spec = {
+  "_cython.cygrpc.IntegratedCall",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_IntegratedCall),
+  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_7_cython_6cygrpc_IntegratedCall_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc_IntegratedCall = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""IntegratedCall", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_IntegratedCall), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc_IntegratedCall, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc_IntegratedCall, /*tp_traverse*/
+  __pyx_tp_clear_7_cython_6cygrpc_IntegratedCall, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_7_cython_6cygrpc_IntegratedCall, /*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_7_cython_6cygrpc_IntegratedCall, /*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_7_cython_6cygrpc_SegregatedCall(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc_SegregatedCall *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_7_cython_6cygrpc_SegregatedCall *)o);
+  p->_channel_state = ((struct __pyx_obj_7_cython_6cygrpc__ChannelState *)Py_None); Py_INCREF(Py_None);
+  p->_call_state = ((struct __pyx_obj_7_cython_6cygrpc__CallState *)Py_None); Py_INCREF(Py_None);
+  if (unlikely(__pyx_pw_7_cython_6cygrpc_14SegregatedCall_1__cinit__(o, a, k) < 0)) goto bad;
+  return o;
+  bad:
+  Py_DECREF(o); o = 0;
+  return NULL;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc_SegregatedCall(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc_SegregatedCall *p = (struct __pyx_obj_7_cython_6cygrpc_SegregatedCall *)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_7_cython_6cygrpc_SegregatedCall) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->_channel_state);
+  Py_CLEAR(p->_call_state);
+  #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_7_cython_6cygrpc_SegregatedCall(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc_SegregatedCall *p = (struct __pyx_obj_7_cython_6cygrpc_SegregatedCall *)o;
+  if (p->_channel_state) {
+    e = (*v)(((PyObject *)p->_channel_state), a); if (e) return e;
+  }
+  if (p->_call_state) {
+    e = (*v)(((PyObject *)p->_call_state), a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_7_cython_6cygrpc_SegregatedCall(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_7_cython_6cygrpc_SegregatedCall *p = (struct __pyx_obj_7_cython_6cygrpc_SegregatedCall *)o;
+  tmp = ((PyObject*)p->_channel_state);
+  p->_channel_state = ((struct __pyx_obj_7_cython_6cygrpc__ChannelState *)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->_call_state);
+  p->_call_state = ((struct __pyx_obj_7_cython_6cygrpc__CallState *)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static PyMethodDef __pyx_methods_7_cython_6cygrpc_SegregatedCall[] = {
+  {"operate", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_14SegregatedCall_3operate, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"cancel", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_14SegregatedCall_5cancel, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"next_event", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_14SegregatedCall_7next_event, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_14SegregatedCall_9__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_14SegregatedCall_11__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc_SegregatedCall_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc_SegregatedCall},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc_SegregatedCall},
+  {Py_tp_clear, (void *)__pyx_tp_clear_7_cython_6cygrpc_SegregatedCall},
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc_SegregatedCall},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc_SegregatedCall},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc_SegregatedCall_spec = {
+  "_cython.cygrpc.SegregatedCall",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_SegregatedCall),
+  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_7_cython_6cygrpc_SegregatedCall_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc_SegregatedCall = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""SegregatedCall", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_SegregatedCall), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc_SegregatedCall, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc_SegregatedCall, /*tp_traverse*/
+  __pyx_tp_clear_7_cython_6cygrpc_SegregatedCall, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_7_cython_6cygrpc_SegregatedCall, /*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_7_cython_6cygrpc_SegregatedCall, /*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_7_cython_6cygrpc_Channel(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc_Channel *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_7_cython_6cygrpc_Channel *)o);
+  p->_state = ((struct __pyx_obj_7_cython_6cygrpc__ChannelState *)Py_None); Py_INCREF(Py_None);
+  p->_registered_call_handles = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  p->_arguments = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  if (unlikely(__pyx_pw_7_cython_6cygrpc_7Channel_1__cinit__(o, a, k) < 0)) goto bad;
+  return o;
+  bad:
+  Py_DECREF(o); o = 0;
+  return NULL;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc_Channel(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc_Channel *p = (struct __pyx_obj_7_cython_6cygrpc_Channel *)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_7_cython_6cygrpc_Channel) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->_state);
+  Py_CLEAR(p->_registered_call_handles);
+  Py_CLEAR(p->_arguments);
+  #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_7_cython_6cygrpc_Channel(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc_Channel *p = (struct __pyx_obj_7_cython_6cygrpc_Channel *)o;
+  if (p->_state) {
+    e = (*v)(((PyObject *)p->_state), a); if (e) return e;
+  }
+  if (p->_registered_call_handles) {
+    e = (*v)(p->_registered_call_handles, a); if (e) return e;
+  }
+  if (p->_arguments) {
+    e = (*v)(p->_arguments, a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_7_cython_6cygrpc_Channel(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_7_cython_6cygrpc_Channel *p = (struct __pyx_obj_7_cython_6cygrpc_Channel *)o;
+  tmp = ((PyObject*)p->_state);
+  p->_state = ((struct __pyx_obj_7_cython_6cygrpc__ChannelState *)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->_registered_call_handles);
+  p->_registered_call_handles = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->_arguments);
+  p->_arguments = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static PyMethodDef __pyx_methods_7_cython_6cygrpc_Channel[] = {
+  {"target", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_7Channel_3target, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"integrated_call", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_7Channel_5integrated_call, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"next_call_event", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_7Channel_7next_call_event, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"segregated_call", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_7Channel_9segregated_call, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"check_connectivity_state", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_7Channel_11check_connectivity_state, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"watch_connectivity_state", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_7Channel_13watch_connectivity_state, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"close", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_7Channel_15close, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"close_on_fork", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_7Channel_17close_on_fork, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"get_registered_call_handle", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_7Channel_19get_registered_call_handle, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7_cython_6cygrpc_7Channel_18get_registered_call_handle},
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_7Channel_21__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_7Channel_23__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc_Channel_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc_Channel},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc_Channel},
+  {Py_tp_clear, (void *)__pyx_tp_clear_7_cython_6cygrpc_Channel},
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc_Channel},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc_Channel},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc_Channel_spec = {
+  "_cython.cygrpc.Channel",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_Channel),
+  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_7_cython_6cygrpc_Channel_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc_Channel = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""Channel", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_Channel), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc_Channel, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc_Channel, /*tp_traverse*/
+  __pyx_tp_clear_7_cython_6cygrpc_Channel, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_7_cython_6cygrpc_Channel, /*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_7_cython_6cygrpc_Channel, /*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_7_cython_6cygrpc_CallHandle(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc_CallHandle *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_7_cython_6cygrpc_CallHandle *)o);
+  p->method = Py_None; Py_INCREF(Py_None);
+  if (unlikely(__pyx_pw_7_cython_6cygrpc_10CallHandle_1__cinit__(o, a, k) < 0)) goto bad;
+  return o;
+  bad:
+  Py_DECREF(o); o = 0;
+  return NULL;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc_CallHandle(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc_CallHandle *p = (struct __pyx_obj_7_cython_6cygrpc_CallHandle *)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_7_cython_6cygrpc_CallHandle) {
+      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_7_cython_6cygrpc_10CallHandle_3__dealloc__(o);
+    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
+    PyErr_Restore(etype, eval, etb);
+  }
+  Py_CLEAR(p->method);
+  #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_7_cython_6cygrpc_CallHandle(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc_CallHandle *p = (struct __pyx_obj_7_cython_6cygrpc_CallHandle *)o;
+  if (p->method) {
+    e = (*v)(p->method, a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_7_cython_6cygrpc_CallHandle(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_7_cython_6cygrpc_CallHandle *p = (struct __pyx_obj_7_cython_6cygrpc_CallHandle *)o;
+  tmp = ((PyObject*)p->method);
+  p->method = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_10CallHandle_call_handle(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_10CallHandle_11call_handle_1__get__(o);
+}
+
+static PyMethodDef __pyx_methods_7_cython_6cygrpc_CallHandle[] = {
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_10CallHandle_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_10CallHandle_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_7_cython_6cygrpc_CallHandle[] = {
+  {(char *)"call_handle", __pyx_getprop_7_cython_6cygrpc_10CallHandle_call_handle, 0, (char *)0, 0},
+  {0, 0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc_CallHandle_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc_CallHandle},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc_CallHandle},
+  {Py_tp_clear, (void *)__pyx_tp_clear_7_cython_6cygrpc_CallHandle},
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc_CallHandle},
+  {Py_tp_getset, (void *)__pyx_getsets_7_cython_6cygrpc_CallHandle},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc_CallHandle},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc_CallHandle_spec = {
+  "_cython.cygrpc.CallHandle",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_CallHandle),
+  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_7_cython_6cygrpc_CallHandle_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc_CallHandle = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""CallHandle", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_CallHandle), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc_CallHandle, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc_CallHandle, /*tp_traverse*/
+  __pyx_tp_clear_7_cython_6cygrpc_CallHandle, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_7_cython_6cygrpc_CallHandle, /*tp_methods*/
+  0, /*tp_members*/
+  __pyx_getsets_7_cython_6cygrpc_CallHandle, /*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_7_cython_6cygrpc_CallHandle, /*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_7_cython_6cygrpc_CallCredentials __pyx_vtable_7_cython_6cygrpc_CallCredentials;
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_CallCredentials(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc_CallCredentials *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_7_cython_6cygrpc_CallCredentials *)o);
+  p->__pyx_vtab = __pyx_vtabptr_7_cython_6cygrpc_CallCredentials;
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc_CallCredentials(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_7_cython_6cygrpc_CallCredentials) {
+      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_7_cython_6cygrpc_CallCredentials[] = {
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_15CallCredentials_1__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_15CallCredentials_3__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc_CallCredentials_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc_CallCredentials},
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc_CallCredentials},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc_CallCredentials},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc_CallCredentials_spec = {
+  "_cython.cygrpc.CallCredentials",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_CallCredentials),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
+  __pyx_type_7_cython_6cygrpc_CallCredentials_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc_CallCredentials = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""CallCredentials", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_CallCredentials), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc_CallCredentials, /*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_7_cython_6cygrpc_CallCredentials, /*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_7_cython_6cygrpc_CallCredentials, /*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_7_cython_6cygrpc_MetadataPluginCallCredentials __pyx_vtable_7_cython_6cygrpc_MetadataPluginCallCredentials;
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_MetadataPluginCallCredentials(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc_MetadataPluginCallCredentials *p;
+  PyObject *o = __pyx_tp_new_7_cython_6cygrpc_CallCredentials(t, a, k);
+  if (unlikely(!o)) return 0;
+  p = ((struct __pyx_obj_7_cython_6cygrpc_MetadataPluginCallCredentials *)o);
+  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_7_cython_6cygrpc_CallCredentials*)__pyx_vtabptr_7_cython_6cygrpc_MetadataPluginCallCredentials;
+  p->_metadata_plugin = Py_None; Py_INCREF(Py_None);
+  p->_name = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  if (unlikely(__pyx_pw_7_cython_6cygrpc_29MetadataPluginCallCredentials_1__cinit__(o, a, k) < 0)) goto bad;
+  return o;
+  bad:
+  Py_DECREF(o); o = 0;
+  return NULL;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc_MetadataPluginCallCredentials(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc_MetadataPluginCallCredentials *p = (struct __pyx_obj_7_cython_6cygrpc_MetadataPluginCallCredentials *)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_7_cython_6cygrpc_MetadataPluginCallCredentials) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->_metadata_plugin);
+  Py_CLEAR(p->_name);
+  __pyx_tp_dealloc_7_cython_6cygrpc_CallCredentials(o);
+}
+
+static int __pyx_tp_traverse_7_cython_6cygrpc_MetadataPluginCallCredentials(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc_MetadataPluginCallCredentials *p = (struct __pyx_obj_7_cython_6cygrpc_MetadataPluginCallCredentials *)o;
+  e = ((likely(__pyx_ptype_7_cython_6cygrpc_CallCredentials)) ? ((__pyx_ptype_7_cython_6cygrpc_CallCredentials->tp_traverse) ? __pyx_ptype_7_cython_6cygrpc_CallCredentials->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_7_cython_6cygrpc_MetadataPluginCallCredentials)); if (e) return e;
+  if (p->_metadata_plugin) {
+    e = (*v)(p->_metadata_plugin, a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_7_cython_6cygrpc_MetadataPluginCallCredentials(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_7_cython_6cygrpc_MetadataPluginCallCredentials *p = (struct __pyx_obj_7_cython_6cygrpc_MetadataPluginCallCredentials *)o;
+  if (likely(__pyx_ptype_7_cython_6cygrpc_CallCredentials)) { if (__pyx_ptype_7_cython_6cygrpc_CallCredentials->tp_clear) __pyx_ptype_7_cython_6cygrpc_CallCredentials->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_7_cython_6cygrpc_MetadataPluginCallCredentials);
+  tmp = ((PyObject*)p->_metadata_plugin);
+  p->_metadata_plugin = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_29MetadataPluginCallCredentials__metadata_plugin(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_29MetadataPluginCallCredentials_16_metadata_plugin_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_29MetadataPluginCallCredentials__name(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_29MetadataPluginCallCredentials_5_name_1__get__(o);
+}
+
+static PyMethodDef __pyx_methods_7_cython_6cygrpc_MetadataPluginCallCredentials[] = {
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_29MetadataPluginCallCredentials_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_29MetadataPluginCallCredentials_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_7_cython_6cygrpc_MetadataPluginCallCredentials[] = {
+  {(char *)"_metadata_plugin", __pyx_getprop_7_cython_6cygrpc_29MetadataPluginCallCredentials__metadata_plugin, 0, (char *)0, 0},
+  {(char *)"_name", __pyx_getprop_7_cython_6cygrpc_29MetadataPluginCallCredentials__name, 0, (char *)0, 0},
+  {0, 0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc_MetadataPluginCallCredentials_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc_MetadataPluginCallCredentials},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc_MetadataPluginCallCredentials},
+  {Py_tp_clear, (void *)__pyx_tp_clear_7_cython_6cygrpc_MetadataPluginCallCredentials},
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc_MetadataPluginCallCredentials},
+  {Py_tp_getset, (void *)__pyx_getsets_7_cython_6cygrpc_MetadataPluginCallCredentials},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc_MetadataPluginCallCredentials},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc_MetadataPluginCallCredentials_spec = {
+  "_cython.cygrpc.MetadataPluginCallCredentials",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_MetadataPluginCallCredentials),
+  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_7_cython_6cygrpc_MetadataPluginCallCredentials_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc_MetadataPluginCallCredentials = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""MetadataPluginCallCredentials", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_MetadataPluginCallCredentials), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc_MetadataPluginCallCredentials, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc_MetadataPluginCallCredentials, /*tp_traverse*/
+  __pyx_tp_clear_7_cython_6cygrpc_MetadataPluginCallCredentials, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_7_cython_6cygrpc_MetadataPluginCallCredentials, /*tp_methods*/
+  0, /*tp_members*/
+  __pyx_getsets_7_cython_6cygrpc_MetadataPluginCallCredentials, /*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_7_cython_6cygrpc_MetadataPluginCallCredentials, /*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_7_cython_6cygrpc_CompositeCallCredentials __pyx_vtable_7_cython_6cygrpc_CompositeCallCredentials;
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_CompositeCallCredentials(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc_CompositeCallCredentials *p;
+  PyObject *o = __pyx_tp_new_7_cython_6cygrpc_CallCredentials(t, a, k);
+  if (unlikely(!o)) return 0;
+  p = ((struct __pyx_obj_7_cython_6cygrpc_CompositeCallCredentials *)o);
+  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_7_cython_6cygrpc_CallCredentials*)__pyx_vtabptr_7_cython_6cygrpc_CompositeCallCredentials;
+  p->_call_credentialses = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  if (unlikely(__pyx_pw_7_cython_6cygrpc_24CompositeCallCredentials_1__cinit__(o, a, k) < 0)) goto bad;
+  return o;
+  bad:
+  Py_DECREF(o); o = 0;
+  return NULL;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc_CompositeCallCredentials(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc_CompositeCallCredentials *p = (struct __pyx_obj_7_cython_6cygrpc_CompositeCallCredentials *)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_7_cython_6cygrpc_CompositeCallCredentials) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->_call_credentialses);
+  __pyx_tp_dealloc_7_cython_6cygrpc_CallCredentials(o);
+}
+
+static int __pyx_tp_traverse_7_cython_6cygrpc_CompositeCallCredentials(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc_CompositeCallCredentials *p = (struct __pyx_obj_7_cython_6cygrpc_CompositeCallCredentials *)o;
+  e = ((likely(__pyx_ptype_7_cython_6cygrpc_CallCredentials)) ? ((__pyx_ptype_7_cython_6cygrpc_CallCredentials->tp_traverse) ? __pyx_ptype_7_cython_6cygrpc_CallCredentials->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_7_cython_6cygrpc_CompositeCallCredentials)); if (e) return e;
+  if (p->_call_credentialses) {
+    e = (*v)(p->_call_credentialses, a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_7_cython_6cygrpc_CompositeCallCredentials(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_7_cython_6cygrpc_CompositeCallCredentials *p = (struct __pyx_obj_7_cython_6cygrpc_CompositeCallCredentials *)o;
+  if (likely(__pyx_ptype_7_cython_6cygrpc_CallCredentials)) { if (__pyx_ptype_7_cython_6cygrpc_CallCredentials->tp_clear) __pyx_ptype_7_cython_6cygrpc_CallCredentials->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_7_cython_6cygrpc_CompositeCallCredentials);
+  tmp = ((PyObject*)p->_call_credentialses);
+  p->_call_credentialses = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_24CompositeCallCredentials__call_credentialses(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_24CompositeCallCredentials_19_call_credentialses_1__get__(o);
+}
+
+static PyMethodDef __pyx_methods_7_cython_6cygrpc_CompositeCallCredentials[] = {
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_24CompositeCallCredentials_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_24CompositeCallCredentials_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_7_cython_6cygrpc_CompositeCallCredentials[] = {
+  {(char *)"_call_credentialses", __pyx_getprop_7_cython_6cygrpc_24CompositeCallCredentials__call_credentialses, 0, (char *)0, 0},
+  {0, 0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc_CompositeCallCredentials_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc_CompositeCallCredentials},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc_CompositeCallCredentials},
+  {Py_tp_clear, (void *)__pyx_tp_clear_7_cython_6cygrpc_CompositeCallCredentials},
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc_CompositeCallCredentials},
+  {Py_tp_getset, (void *)__pyx_getsets_7_cython_6cygrpc_CompositeCallCredentials},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc_CompositeCallCredentials},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc_CompositeCallCredentials_spec = {
+  "_cython.cygrpc.CompositeCallCredentials",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_CompositeCallCredentials),
+  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_7_cython_6cygrpc_CompositeCallCredentials_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc_CompositeCallCredentials = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""CompositeCallCredentials", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_CompositeCallCredentials), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc_CompositeCallCredentials, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc_CompositeCallCredentials, /*tp_traverse*/
+  __pyx_tp_clear_7_cython_6cygrpc_CompositeCallCredentials, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_7_cython_6cygrpc_CompositeCallCredentials, /*tp_methods*/
+  0, /*tp_members*/
+  __pyx_getsets_7_cython_6cygrpc_CompositeCallCredentials, /*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_7_cython_6cygrpc_CompositeCallCredentials, /*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_7_cython_6cygrpc_ChannelCredentials __pyx_vtable_7_cython_6cygrpc_ChannelCredentials;
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_ChannelCredentials(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc_ChannelCredentials *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_7_cython_6cygrpc_ChannelCredentials *)o);
+  p->__pyx_vtab = __pyx_vtabptr_7_cython_6cygrpc_ChannelCredentials;
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc_ChannelCredentials(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_7_cython_6cygrpc_ChannelCredentials) {
+      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_7_cython_6cygrpc_ChannelCredentials[] = {
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_18ChannelCredentials_1__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_18ChannelCredentials_3__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc_ChannelCredentials_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc_ChannelCredentials},
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc_ChannelCredentials},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc_ChannelCredentials},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc_ChannelCredentials_spec = {
+  "_cython.cygrpc.ChannelCredentials",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_ChannelCredentials),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
+  __pyx_type_7_cython_6cygrpc_ChannelCredentials_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc_ChannelCredentials = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""ChannelCredentials", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_ChannelCredentials), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc_ChannelCredentials, /*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_7_cython_6cygrpc_ChannelCredentials, /*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_7_cython_6cygrpc_ChannelCredentials, /*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_7_cython_6cygrpc_SSLSessionCacheLRU(PyTypeObject *t, PyObject *a, 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
+  if (unlikely(__pyx_pw_7_cython_6cygrpc_18SSLSessionCacheLRU_1__cinit__(o, a, k) < 0)) goto bad;
+  return o;
+  bad:
+  Py_DECREF(o); o = 0;
+  return NULL;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc_SSLSessionCacheLRU(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_7_cython_6cygrpc_SSLSessionCacheLRU) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  {
+    PyObject *etype, *eval, *etb;
+    PyErr_Fetch(&etype, &eval, &etb);
+    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
+    __pyx_pw_7_cython_6cygrpc_18SSLSessionCacheLRU_5__dealloc__(o);
+    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
+    PyErr_Restore(etype, eval, etb);
+  }
+  #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_7_cython_6cygrpc_SSLSessionCacheLRU[] = {
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_18SSLSessionCacheLRU_7__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_18SSLSessionCacheLRU_9__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc_SSLSessionCacheLRU_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc_SSLSessionCacheLRU},
+  {Py_nb_int, (void *)__pyx_pw_7_cython_6cygrpc_18SSLSessionCacheLRU_3__int__},
+  #if PY_MAJOR_VERSION < 3
+  {Py_nb_long, (void *)__pyx_pw_7_cython_6cygrpc_18SSLSessionCacheLRU_3__int__},
+  #endif
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc_SSLSessionCacheLRU},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc_SSLSessionCacheLRU},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc_SSLSessionCacheLRU_spec = {
+  "_cython.cygrpc.SSLSessionCacheLRU",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_SSLSessionCacheLRU),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
+  __pyx_type_7_cython_6cygrpc_SSLSessionCacheLRU_slots,
+};
+#else
+
+static PyNumberMethods __pyx_tp_as_number_SSLSessionCacheLRU = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  0, /*nb_bool*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
+  0, /*nb_coerce*/
+  #endif
+  __pyx_pw_7_cython_6cygrpc_18SSLSessionCacheLRU_3__int__, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  __pyx_pw_7_cython_6cygrpc_18SSLSessionCacheLRU_3__int__, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  0, /*nb_index*/
+  #if PY_VERSION_HEX >= 0x03050000
+  0, /*nb_matrix_multiply*/
+  #endif
+  #if PY_VERSION_HEX >= 0x03050000
+  0, /*nb_inplace_matrix_multiply*/
+  #endif
+};
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc_SSLSessionCacheLRU = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""SSLSessionCacheLRU", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_SSLSessionCacheLRU), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc_SSLSessionCacheLRU, /*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*/
+  &__pyx_tp_as_number_SSLSessionCacheLRU, /*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_7_cython_6cygrpc_SSLSessionCacheLRU, /*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_7_cython_6cygrpc_SSLSessionCacheLRU, /*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_7_cython_6cygrpc_SSLChannelCredentials __pyx_vtable_7_cython_6cygrpc_SSLChannelCredentials;
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_SSLChannelCredentials(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc_SSLChannelCredentials *p;
+  PyObject *o = __pyx_tp_new_7_cython_6cygrpc_ChannelCredentials(t, a, k);
+  if (unlikely(!o)) return 0;
+  p = ((struct __pyx_obj_7_cython_6cygrpc_SSLChannelCredentials *)o);
+  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_7_cython_6cygrpc_ChannelCredentials*)__pyx_vtabptr_7_cython_6cygrpc_SSLChannelCredentials;
+  p->_pem_root_certificates = Py_None; Py_INCREF(Py_None);
+  p->_private_key = Py_None; Py_INCREF(Py_None);
+  p->_certificate_chain = Py_None; Py_INCREF(Py_None);
+  if (unlikely(__pyx_pw_7_cython_6cygrpc_21SSLChannelCredentials_1__cinit__(o, a, k) < 0)) goto bad;
+  return o;
+  bad:
+  Py_DECREF(o); o = 0;
+  return NULL;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc_SSLChannelCredentials(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc_SSLChannelCredentials *p = (struct __pyx_obj_7_cython_6cygrpc_SSLChannelCredentials *)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_7_cython_6cygrpc_SSLChannelCredentials) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->_pem_root_certificates);
+  Py_CLEAR(p->_private_key);
+  Py_CLEAR(p->_certificate_chain);
+  __pyx_tp_dealloc_7_cython_6cygrpc_ChannelCredentials(o);
+}
+
+static int __pyx_tp_traverse_7_cython_6cygrpc_SSLChannelCredentials(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc_SSLChannelCredentials *p = (struct __pyx_obj_7_cython_6cygrpc_SSLChannelCredentials *)o;
+  e = ((likely(__pyx_ptype_7_cython_6cygrpc_ChannelCredentials)) ? ((__pyx_ptype_7_cython_6cygrpc_ChannelCredentials->tp_traverse) ? __pyx_ptype_7_cython_6cygrpc_ChannelCredentials->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_7_cython_6cygrpc_SSLChannelCredentials)); if (e) return e;
+  if (p->_pem_root_certificates) {
+    e = (*v)(p->_pem_root_certificates, a); if (e) return e;
+  }
+  if (p->_private_key) {
+    e = (*v)(p->_private_key, a); if (e) return e;
+  }
+  if (p->_certificate_chain) {
+    e = (*v)(p->_certificate_chain, a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_7_cython_6cygrpc_SSLChannelCredentials(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_7_cython_6cygrpc_SSLChannelCredentials *p = (struct __pyx_obj_7_cython_6cygrpc_SSLChannelCredentials *)o;
+  if (likely(__pyx_ptype_7_cython_6cygrpc_ChannelCredentials)) { if (__pyx_ptype_7_cython_6cygrpc_ChannelCredentials->tp_clear) __pyx_ptype_7_cython_6cygrpc_ChannelCredentials->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_7_cython_6cygrpc_SSLChannelCredentials);
+  tmp = ((PyObject*)p->_pem_root_certificates);
+  p->_pem_root_certificates = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->_private_key);
+  p->_private_key = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->_certificate_chain);
+  p->_certificate_chain = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_21SSLChannelCredentials__pem_root_certificates(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_21SSLChannelCredentials_22_pem_root_certificates_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_21SSLChannelCredentials__private_key(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_21SSLChannelCredentials_12_private_key_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_21SSLChannelCredentials__certificate_chain(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_21SSLChannelCredentials_18_certificate_chain_1__get__(o);
+}
+
+static PyMethodDef __pyx_methods_7_cython_6cygrpc_SSLChannelCredentials[] = {
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_21SSLChannelCredentials_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_21SSLChannelCredentials_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_7_cython_6cygrpc_SSLChannelCredentials[] = {
+  {(char *)"_pem_root_certificates", __pyx_getprop_7_cython_6cygrpc_21SSLChannelCredentials__pem_root_certificates, 0, (char *)0, 0},
+  {(char *)"_private_key", __pyx_getprop_7_cython_6cygrpc_21SSLChannelCredentials__private_key, 0, (char *)0, 0},
+  {(char *)"_certificate_chain", __pyx_getprop_7_cython_6cygrpc_21SSLChannelCredentials__certificate_chain, 0, (char *)0, 0},
+  {0, 0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc_SSLChannelCredentials_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc_SSLChannelCredentials},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc_SSLChannelCredentials},
+  {Py_tp_clear, (void *)__pyx_tp_clear_7_cython_6cygrpc_SSLChannelCredentials},
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc_SSLChannelCredentials},
+  {Py_tp_getset, (void *)__pyx_getsets_7_cython_6cygrpc_SSLChannelCredentials},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc_SSLChannelCredentials},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc_SSLChannelCredentials_spec = {
+  "_cython.cygrpc.SSLChannelCredentials",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_SSLChannelCredentials),
+  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_7_cython_6cygrpc_SSLChannelCredentials_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc_SSLChannelCredentials = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""SSLChannelCredentials", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_SSLChannelCredentials), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc_SSLChannelCredentials, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc_SSLChannelCredentials, /*tp_traverse*/
+  __pyx_tp_clear_7_cython_6cygrpc_SSLChannelCredentials, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_7_cython_6cygrpc_SSLChannelCredentials, /*tp_methods*/
+  0, /*tp_members*/
+  __pyx_getsets_7_cython_6cygrpc_SSLChannelCredentials, /*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_7_cython_6cygrpc_SSLChannelCredentials, /*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_7_cython_6cygrpc_CompositeChannelCredentials __pyx_vtable_7_cython_6cygrpc_CompositeChannelCredentials;
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_CompositeChannelCredentials(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc_CompositeChannelCredentials *p;
+  PyObject *o = __pyx_tp_new_7_cython_6cygrpc_ChannelCredentials(t, a, k);
+  if (unlikely(!o)) return 0;
+  p = ((struct __pyx_obj_7_cython_6cygrpc_CompositeChannelCredentials *)o);
+  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_7_cython_6cygrpc_ChannelCredentials*)__pyx_vtabptr_7_cython_6cygrpc_CompositeChannelCredentials;
+  p->_call_credentialses = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  p->_channel_credentials = ((struct __pyx_obj_7_cython_6cygrpc_ChannelCredentials *)Py_None); Py_INCREF(Py_None);
+  if (unlikely(__pyx_pw_7_cython_6cygrpc_27CompositeChannelCredentials_1__cinit__(o, a, k) < 0)) goto bad;
+  return o;
+  bad:
+  Py_DECREF(o); o = 0;
+  return NULL;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc_CompositeChannelCredentials(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc_CompositeChannelCredentials *p = (struct __pyx_obj_7_cython_6cygrpc_CompositeChannelCredentials *)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_7_cython_6cygrpc_CompositeChannelCredentials) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->_call_credentialses);
+  Py_CLEAR(p->_channel_credentials);
+  __pyx_tp_dealloc_7_cython_6cygrpc_ChannelCredentials(o);
+}
+
+static int __pyx_tp_traverse_7_cython_6cygrpc_CompositeChannelCredentials(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc_CompositeChannelCredentials *p = (struct __pyx_obj_7_cython_6cygrpc_CompositeChannelCredentials *)o;
+  e = ((likely(__pyx_ptype_7_cython_6cygrpc_ChannelCredentials)) ? ((__pyx_ptype_7_cython_6cygrpc_ChannelCredentials->tp_traverse) ? __pyx_ptype_7_cython_6cygrpc_ChannelCredentials->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_7_cython_6cygrpc_CompositeChannelCredentials)); if (e) return e;
+  if (p->_call_credentialses) {
+    e = (*v)(p->_call_credentialses, a); if (e) return e;
+  }
+  if (p->_channel_credentials) {
+    e = (*v)(((PyObject *)p->_channel_credentials), a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_7_cython_6cygrpc_CompositeChannelCredentials(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_7_cython_6cygrpc_CompositeChannelCredentials *p = (struct __pyx_obj_7_cython_6cygrpc_CompositeChannelCredentials *)o;
+  if (likely(__pyx_ptype_7_cython_6cygrpc_ChannelCredentials)) { if (__pyx_ptype_7_cython_6cygrpc_ChannelCredentials->tp_clear) __pyx_ptype_7_cython_6cygrpc_ChannelCredentials->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_7_cython_6cygrpc_CompositeChannelCredentials);
+  tmp = ((PyObject*)p->_call_credentialses);
+  p->_call_credentialses = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->_channel_credentials);
+  p->_channel_credentials = ((struct __pyx_obj_7_cython_6cygrpc_ChannelCredentials *)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_27CompositeChannelCredentials__call_credentialses(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_27CompositeChannelCredentials_19_call_credentialses_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_27CompositeChannelCredentials__channel_credentials(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_27CompositeChannelCredentials_20_channel_credentials_1__get__(o);
+}
+
+static PyMethodDef __pyx_methods_7_cython_6cygrpc_CompositeChannelCredentials[] = {
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_27CompositeChannelCredentials_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_27CompositeChannelCredentials_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_7_cython_6cygrpc_CompositeChannelCredentials[] = {
+  {(char *)"_call_credentialses", __pyx_getprop_7_cython_6cygrpc_27CompositeChannelCredentials__call_credentialses, 0, (char *)0, 0},
+  {(char *)"_channel_credentials", __pyx_getprop_7_cython_6cygrpc_27CompositeChannelCredentials__channel_credentials, 0, (char *)0, 0},
+  {0, 0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc_CompositeChannelCredentials_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc_CompositeChannelCredentials},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc_CompositeChannelCredentials},
+  {Py_tp_clear, (void *)__pyx_tp_clear_7_cython_6cygrpc_CompositeChannelCredentials},
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc_CompositeChannelCredentials},
+  {Py_tp_getset, (void *)__pyx_getsets_7_cython_6cygrpc_CompositeChannelCredentials},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc_CompositeChannelCredentials},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc_CompositeChannelCredentials_spec = {
+  "_cython.cygrpc.CompositeChannelCredentials",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_CompositeChannelCredentials),
+  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_7_cython_6cygrpc_CompositeChannelCredentials_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc_CompositeChannelCredentials = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""CompositeChannelCredentials", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_CompositeChannelCredentials), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc_CompositeChannelCredentials, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc_CompositeChannelCredentials, /*tp_traverse*/
+  __pyx_tp_clear_7_cython_6cygrpc_CompositeChannelCredentials, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_7_cython_6cygrpc_CompositeChannelCredentials, /*tp_methods*/
+  0, /*tp_members*/
+  __pyx_getsets_7_cython_6cygrpc_CompositeChannelCredentials, /*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_7_cython_6cygrpc_CompositeChannelCredentials, /*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_7_cython_6cygrpc_XDSChannelCredentials __pyx_vtable_7_cython_6cygrpc_XDSChannelCredentials;
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_XDSChannelCredentials(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc_XDSChannelCredentials *p;
+  PyObject *o = __pyx_tp_new_7_cython_6cygrpc_ChannelCredentials(t, a, k);
+  if (unlikely(!o)) return 0;
+  p = ((struct __pyx_obj_7_cython_6cygrpc_XDSChannelCredentials *)o);
+  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_7_cython_6cygrpc_ChannelCredentials*)__pyx_vtabptr_7_cython_6cygrpc_XDSChannelCredentials;
+  p->_fallback_credentials = ((struct __pyx_obj_7_cython_6cygrpc_ChannelCredentials *)Py_None); Py_INCREF(Py_None);
+  if (unlikely(__pyx_pw_7_cython_6cygrpc_21XDSChannelCredentials_1__cinit__(o, a, k) < 0)) goto bad;
+  return o;
+  bad:
+  Py_DECREF(o); o = 0;
+  return NULL;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc_XDSChannelCredentials(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc_XDSChannelCredentials *p = (struct __pyx_obj_7_cython_6cygrpc_XDSChannelCredentials *)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_7_cython_6cygrpc_XDSChannelCredentials) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->_fallback_credentials);
+  __pyx_tp_dealloc_7_cython_6cygrpc_ChannelCredentials(o);
+}
+
+static int __pyx_tp_traverse_7_cython_6cygrpc_XDSChannelCredentials(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc_XDSChannelCredentials *p = (struct __pyx_obj_7_cython_6cygrpc_XDSChannelCredentials *)o;
+  e = ((likely(__pyx_ptype_7_cython_6cygrpc_ChannelCredentials)) ? ((__pyx_ptype_7_cython_6cygrpc_ChannelCredentials->tp_traverse) ? __pyx_ptype_7_cython_6cygrpc_ChannelCredentials->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_7_cython_6cygrpc_XDSChannelCredentials)); if (e) return e;
+  if (p->_fallback_credentials) {
+    e = (*v)(((PyObject *)p->_fallback_credentials), a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_7_cython_6cygrpc_XDSChannelCredentials(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_7_cython_6cygrpc_XDSChannelCredentials *p = (struct __pyx_obj_7_cython_6cygrpc_XDSChannelCredentials *)o;
+  if (likely(__pyx_ptype_7_cython_6cygrpc_ChannelCredentials)) { if (__pyx_ptype_7_cython_6cygrpc_ChannelCredentials->tp_clear) __pyx_ptype_7_cython_6cygrpc_ChannelCredentials->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_7_cython_6cygrpc_XDSChannelCredentials);
+  tmp = ((PyObject*)p->_fallback_credentials);
+  p->_fallback_credentials = ((struct __pyx_obj_7_cython_6cygrpc_ChannelCredentials *)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_21XDSChannelCredentials__fallback_credentials(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_21XDSChannelCredentials_21_fallback_credentials_1__get__(o);
+}
+
+static PyMethodDef __pyx_methods_7_cython_6cygrpc_XDSChannelCredentials[] = {
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_21XDSChannelCredentials_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_21XDSChannelCredentials_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_7_cython_6cygrpc_XDSChannelCredentials[] = {
+  {(char *)"_fallback_credentials", __pyx_getprop_7_cython_6cygrpc_21XDSChannelCredentials__fallback_credentials, 0, (char *)0, 0},
+  {0, 0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc_XDSChannelCredentials_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc_XDSChannelCredentials},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc_XDSChannelCredentials},
+  {Py_tp_clear, (void *)__pyx_tp_clear_7_cython_6cygrpc_XDSChannelCredentials},
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc_XDSChannelCredentials},
+  {Py_tp_getset, (void *)__pyx_getsets_7_cython_6cygrpc_XDSChannelCredentials},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc_XDSChannelCredentials},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc_XDSChannelCredentials_spec = {
+  "_cython.cygrpc.XDSChannelCredentials",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_XDSChannelCredentials),
+  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_7_cython_6cygrpc_XDSChannelCredentials_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc_XDSChannelCredentials = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""XDSChannelCredentials", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_XDSChannelCredentials), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc_XDSChannelCredentials, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc_XDSChannelCredentials, /*tp_traverse*/
+  __pyx_tp_clear_7_cython_6cygrpc_XDSChannelCredentials, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_7_cython_6cygrpc_XDSChannelCredentials, /*tp_methods*/
+  0, /*tp_members*/
+  __pyx_getsets_7_cython_6cygrpc_XDSChannelCredentials, /*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_7_cython_6cygrpc_XDSChannelCredentials, /*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_7_cython_6cygrpc_ServerCertificateConfig(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc_ServerCertificateConfig *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_7_cython_6cygrpc_ServerCertificateConfig *)o);
+  p->references = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  if (unlikely(__pyx_pw_7_cython_6cygrpc_23ServerCertificateConfig_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_7_cython_6cygrpc_ServerCertificateConfig(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc_ServerCertificateConfig *p = (struct __pyx_obj_7_cython_6cygrpc_ServerCertificateConfig *)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_7_cython_6cygrpc_ServerCertificateConfig) {
+      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_7_cython_6cygrpc_23ServerCertificateConfig_3__dealloc__(o);
+    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
+    PyErr_Restore(etype, eval, etb);
+  }
+  Py_CLEAR(p->references);
+  #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_7_cython_6cygrpc_ServerCertificateConfig(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc_ServerCertificateConfig *p = (struct __pyx_obj_7_cython_6cygrpc_ServerCertificateConfig *)o;
+  if (p->references) {
+    e = (*v)(p->references, a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_7_cython_6cygrpc_ServerCertificateConfig(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_7_cython_6cygrpc_ServerCertificateConfig *p = (struct __pyx_obj_7_cython_6cygrpc_ServerCertificateConfig *)o;
+  tmp = ((PyObject*)p->references);
+  p->references = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static PyMethodDef __pyx_methods_7_cython_6cygrpc_ServerCertificateConfig[] = {
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_23ServerCertificateConfig_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_23ServerCertificateConfig_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc_ServerCertificateConfig_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc_ServerCertificateConfig},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc_ServerCertificateConfig},
+  {Py_tp_clear, (void *)__pyx_tp_clear_7_cython_6cygrpc_ServerCertificateConfig},
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc_ServerCertificateConfig},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc_ServerCertificateConfig},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc_ServerCertificateConfig_spec = {
+  "_cython.cygrpc.ServerCertificateConfig",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_ServerCertificateConfig),
+  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_7_cython_6cygrpc_ServerCertificateConfig_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc_ServerCertificateConfig = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""ServerCertificateConfig", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_ServerCertificateConfig), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc_ServerCertificateConfig, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc_ServerCertificateConfig, /*tp_traverse*/
+  __pyx_tp_clear_7_cython_6cygrpc_ServerCertificateConfig, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_7_cython_6cygrpc_ServerCertificateConfig, /*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_7_cython_6cygrpc_ServerCertificateConfig, /*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_7_cython_6cygrpc_ServerCredentials(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc_ServerCredentials *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_7_cython_6cygrpc_ServerCredentials *)o);
+  p->references = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  p->initial_cert_config = Py_None; Py_INCREF(Py_None);
+  p->cert_config_fetcher = Py_None; Py_INCREF(Py_None);
+  if (unlikely(__pyx_pw_7_cython_6cygrpc_17ServerCredentials_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_7_cython_6cygrpc_ServerCredentials(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc_ServerCredentials *p = (struct __pyx_obj_7_cython_6cygrpc_ServerCredentials *)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_7_cython_6cygrpc_ServerCredentials) {
+      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_7_cython_6cygrpc_17ServerCredentials_3__dealloc__(o);
+    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
+    PyErr_Restore(etype, eval, etb);
+  }
+  Py_CLEAR(p->references);
+  Py_CLEAR(p->initial_cert_config);
+  Py_CLEAR(p->cert_config_fetcher);
+  #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_7_cython_6cygrpc_ServerCredentials(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc_ServerCredentials *p = (struct __pyx_obj_7_cython_6cygrpc_ServerCredentials *)o;
+  if (p->references) {
+    e = (*v)(p->references, a); if (e) return e;
+  }
+  if (p->initial_cert_config) {
+    e = (*v)(p->initial_cert_config, a); if (e) return e;
+  }
+  if (p->cert_config_fetcher) {
+    e = (*v)(p->cert_config_fetcher, a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_7_cython_6cygrpc_ServerCredentials(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_7_cython_6cygrpc_ServerCredentials *p = (struct __pyx_obj_7_cython_6cygrpc_ServerCredentials *)o;
+  tmp = ((PyObject*)p->references);
+  p->references = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->initial_cert_config);
+  p->initial_cert_config = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->cert_config_fetcher);
+  p->cert_config_fetcher = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static PyMethodDef __pyx_methods_7_cython_6cygrpc_ServerCredentials[] = {
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_17ServerCredentials_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_17ServerCredentials_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc_ServerCredentials_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc_ServerCredentials},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc_ServerCredentials},
+  {Py_tp_clear, (void *)__pyx_tp_clear_7_cython_6cygrpc_ServerCredentials},
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc_ServerCredentials},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc_ServerCredentials},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc_ServerCredentials_spec = {
+  "_cython.cygrpc.ServerCredentials",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_ServerCredentials),
+  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_7_cython_6cygrpc_ServerCredentials_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc_ServerCredentials = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""ServerCredentials", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_ServerCredentials), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc_ServerCredentials, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc_ServerCredentials, /*tp_traverse*/
+  __pyx_tp_clear_7_cython_6cygrpc_ServerCredentials, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_7_cython_6cygrpc_ServerCredentials, /*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_7_cython_6cygrpc_ServerCredentials, /*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_7_cython_6cygrpc_LocalChannelCredentials __pyx_vtable_7_cython_6cygrpc_LocalChannelCredentials;
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_LocalChannelCredentials(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc_LocalChannelCredentials *p;
+  PyObject *o = __pyx_tp_new_7_cython_6cygrpc_ChannelCredentials(t, a, k);
+  if (unlikely(!o)) return 0;
+  p = ((struct __pyx_obj_7_cython_6cygrpc_LocalChannelCredentials *)o);
+  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_7_cython_6cygrpc_ChannelCredentials*)__pyx_vtabptr_7_cython_6cygrpc_LocalChannelCredentials;
+  if (unlikely(__pyx_pw_7_cython_6cygrpc_23LocalChannelCredentials_1__cinit__(o, a, k) < 0)) goto bad;
+  return o;
+  bad:
+  Py_DECREF(o); o = 0;
+  return NULL;
+}
+
+static PyMethodDef __pyx_methods_7_cython_6cygrpc_LocalChannelCredentials[] = {
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_23LocalChannelCredentials_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_23LocalChannelCredentials_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc_LocalChannelCredentials_slots[] = {
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc_LocalChannelCredentials},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc_LocalChannelCredentials},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc_LocalChannelCredentials_spec = {
+  "_cython.cygrpc.LocalChannelCredentials",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_LocalChannelCredentials),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
+  __pyx_type_7_cython_6cygrpc_LocalChannelCredentials_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc_LocalChannelCredentials = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""LocalChannelCredentials", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_LocalChannelCredentials), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc_ChannelCredentials, /*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_7_cython_6cygrpc_LocalChannelCredentials, /*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_7_cython_6cygrpc_LocalChannelCredentials, /*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_7_cython_6cygrpc_ALTSChannelCredentials __pyx_vtable_7_cython_6cygrpc_ALTSChannelCredentials;
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_ALTSChannelCredentials(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc_ALTSChannelCredentials *p;
+  PyObject *o = __pyx_tp_new_7_cython_6cygrpc_ChannelCredentials(t, a, k);
+  if (unlikely(!o)) return 0;
+  p = ((struct __pyx_obj_7_cython_6cygrpc_ALTSChannelCredentials *)o);
+  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_7_cython_6cygrpc_ChannelCredentials*)__pyx_vtabptr_7_cython_6cygrpc_ALTSChannelCredentials;
+  if (unlikely(__pyx_pw_7_cython_6cygrpc_22ALTSChannelCredentials_1__cinit__(o, a, k) < 0)) goto bad;
+  return o;
+  bad:
+  Py_DECREF(o); o = 0;
+  return NULL;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc_ALTSChannelCredentials(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_7_cython_6cygrpc_ALTSChannelCredentials) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  {
+    PyObject *etype, *eval, *etb;
+    PyErr_Fetch(&etype, &eval, &etb);
+    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
+    __pyx_pw_7_cython_6cygrpc_22ALTSChannelCredentials_3__dealloc__(o);
+    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
+    PyErr_Restore(etype, eval, etb);
+  }
+  __pyx_tp_dealloc_7_cython_6cygrpc_ChannelCredentials(o);
+}
+
+static PyMethodDef __pyx_methods_7_cython_6cygrpc_ALTSChannelCredentials[] = {
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_22ALTSChannelCredentials_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_22ALTSChannelCredentials_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc_ALTSChannelCredentials_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc_ALTSChannelCredentials},
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc_ALTSChannelCredentials},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc_ALTSChannelCredentials},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc_ALTSChannelCredentials_spec = {
+  "_cython.cygrpc.ALTSChannelCredentials",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_ALTSChannelCredentials),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
+  __pyx_type_7_cython_6cygrpc_ALTSChannelCredentials_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc_ALTSChannelCredentials = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""ALTSChannelCredentials", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_ALTSChannelCredentials), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc_ALTSChannelCredentials, /*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_7_cython_6cygrpc_ALTSChannelCredentials, /*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_7_cython_6cygrpc_ALTSChannelCredentials, /*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_7_cython_6cygrpc__LatentEventArg(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc__LatentEventArg *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_7_cython_6cygrpc__LatentEventArg *)o);
+  p->deadline = Py_None; Py_INCREF(Py_None);
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc__LatentEventArg(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc__LatentEventArg *p = (struct __pyx_obj_7_cython_6cygrpc__LatentEventArg *)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_7_cython_6cygrpc__LatentEventArg) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->deadline);
+  #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_7_cython_6cygrpc__LatentEventArg(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc__LatentEventArg *p = (struct __pyx_obj_7_cython_6cygrpc__LatentEventArg *)o;
+  if (p->deadline) {
+    e = (*v)(p->deadline, a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_7_cython_6cygrpc__LatentEventArg(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_7_cython_6cygrpc__LatentEventArg *p = (struct __pyx_obj_7_cython_6cygrpc__LatentEventArg *)o;
+  tmp = ((PyObject*)p->deadline);
+  p->deadline = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc__LatentEventArg_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc__LatentEventArg},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc__LatentEventArg},
+  {Py_tp_clear, (void *)__pyx_tp_clear_7_cython_6cygrpc__LatentEventArg},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc__LatentEventArg},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc__LatentEventArg_spec = {
+  "_cython.cygrpc._LatentEventArg",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc__LatentEventArg),
+  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_7_cython_6cygrpc__LatentEventArg_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc__LatentEventArg = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""_LatentEventArg", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc__LatentEventArg), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc__LatentEventArg, /*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_7_cython_6cygrpc__LatentEventArg, /*tp_traverse*/
+  __pyx_tp_clear_7_cython_6cygrpc__LatentEventArg, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_7_cython_6cygrpc__LatentEventArg, /*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_7_cython_6cygrpc_CompletionQueue __pyx_vtable_7_cython_6cygrpc_CompletionQueue;
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_CompletionQueue(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc_CompletionQueue *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_7_cython_6cygrpc_CompletionQueue *)o);
+  p->__pyx_vtab = __pyx_vtabptr_7_cython_6cygrpc_CompletionQueue;
+  if (unlikely(__pyx_pw_7_cython_6cygrpc_15CompletionQueue_1__cinit__(o, a, k) < 0)) goto bad;
+  return o;
+  bad:
+  Py_DECREF(o); o = 0;
+  return NULL;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc_CompletionQueue(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_7_cython_6cygrpc_CompletionQueue) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  {
+    PyObject *etype, *eval, *etb;
+    PyErr_Fetch(&etype, &eval, &etb);
+    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
+    __pyx_pw_7_cython_6cygrpc_15CompletionQueue_11__dealloc__(o);
+    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
+    PyErr_Restore(etype, eval, etb);
+  }
+  #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_7_cython_6cygrpc_CompletionQueue[] = {
+  {"_internal_poll", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_15CompletionQueue_3_internal_poll, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"poll", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_15CompletionQueue_5poll, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"shutdown", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_15CompletionQueue_7shutdown, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"clear", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_15CompletionQueue_9clear, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_15CompletionQueue_13__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_15CompletionQueue_15__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc_CompletionQueue_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc_CompletionQueue},
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc_CompletionQueue},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc_CompletionQueue},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc_CompletionQueue_spec = {
+  "_cython.cygrpc.CompletionQueue",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_CompletionQueue),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
+  __pyx_type_7_cython_6cygrpc_CompletionQueue_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc_CompletionQueue = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""CompletionQueue", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_CompletionQueue), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc_CompletionQueue, /*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_7_cython_6cygrpc_CompletionQueue, /*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_7_cython_6cygrpc_CompletionQueue, /*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_7_cython_6cygrpc_BaseEvent(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_7_cython_6cygrpc_BaseEvent(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_7_cython_6cygrpc_BaseEvent) {
+      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
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc_BaseEvent_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc_BaseEvent},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc_BaseEvent},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc_BaseEvent_spec = {
+  "_cython.cygrpc.BaseEvent",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_BaseEvent),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_type_7_cython_6cygrpc_BaseEvent_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc_BaseEvent = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""BaseEvent", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_BaseEvent), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc_BaseEvent, /*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_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  0, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_7_cython_6cygrpc_BaseEvent, /*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_7_cython_6cygrpc_ConnectivityEvent(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc_ConnectivityEvent *p;
+  PyObject *o = __pyx_tp_new_7_cython_6cygrpc_BaseEvent(t, a, k);
+  if (unlikely(!o)) return 0;
+  p = ((struct __pyx_obj_7_cython_6cygrpc_ConnectivityEvent *)o);
+  p->tag = Py_None; Py_INCREF(Py_None);
+  if (unlikely(__pyx_pw_7_cython_6cygrpc_17ConnectivityEvent_1__cinit__(o, a, k) < 0)) goto bad;
+  return o;
+  bad:
+  Py_DECREF(o); o = 0;
+  return NULL;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc_ConnectivityEvent(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc_ConnectivityEvent *p = (struct __pyx_obj_7_cython_6cygrpc_ConnectivityEvent *)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_7_cython_6cygrpc_ConnectivityEvent) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->tag);
+  __pyx_tp_dealloc_7_cython_6cygrpc_BaseEvent(o);
+}
+
+static int __pyx_tp_traverse_7_cython_6cygrpc_ConnectivityEvent(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc_ConnectivityEvent *p = (struct __pyx_obj_7_cython_6cygrpc_ConnectivityEvent *)o;
+  e = ((likely(__pyx_ptype_7_cython_6cygrpc_BaseEvent)) ? ((__pyx_ptype_7_cython_6cygrpc_BaseEvent->tp_traverse) ? __pyx_ptype_7_cython_6cygrpc_BaseEvent->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_7_cython_6cygrpc_ConnectivityEvent)); if (e) return e;
+  if (p->tag) {
+    e = (*v)(p->tag, a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_7_cython_6cygrpc_ConnectivityEvent(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_7_cython_6cygrpc_ConnectivityEvent *p = (struct __pyx_obj_7_cython_6cygrpc_ConnectivityEvent *)o;
+  if (likely(__pyx_ptype_7_cython_6cygrpc_BaseEvent)) { if (__pyx_ptype_7_cython_6cygrpc_BaseEvent->tp_clear) __pyx_ptype_7_cython_6cygrpc_BaseEvent->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_7_cython_6cygrpc_ConnectivityEvent);
+  tmp = ((PyObject*)p->tag);
+  p->tag = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_17ConnectivityEvent_completion_type(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_17ConnectivityEvent_15completion_type_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_17ConnectivityEvent_success(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_17ConnectivityEvent_7success_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_17ConnectivityEvent_tag(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_17ConnectivityEvent_3tag_1__get__(o);
+}
+
+static PyMethodDef __pyx_methods_7_cython_6cygrpc_ConnectivityEvent[] = {
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_17ConnectivityEvent_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_17ConnectivityEvent_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_7_cython_6cygrpc_ConnectivityEvent[] = {
+  {(char *)"completion_type", __pyx_getprop_7_cython_6cygrpc_17ConnectivityEvent_completion_type, 0, (char *)0, 0},
+  {(char *)"success", __pyx_getprop_7_cython_6cygrpc_17ConnectivityEvent_success, 0, (char *)0, 0},
+  {(char *)"tag", __pyx_getprop_7_cython_6cygrpc_17ConnectivityEvent_tag, 0, (char *)0, 0},
+  {0, 0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc_ConnectivityEvent_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc_ConnectivityEvent},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc_ConnectivityEvent},
+  {Py_tp_clear, (void *)__pyx_tp_clear_7_cython_6cygrpc_ConnectivityEvent},
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc_ConnectivityEvent},
+  {Py_tp_getset, (void *)__pyx_getsets_7_cython_6cygrpc_ConnectivityEvent},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc_ConnectivityEvent},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc_ConnectivityEvent_spec = {
+  "_cython.cygrpc.ConnectivityEvent",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_ConnectivityEvent),
+  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_7_cython_6cygrpc_ConnectivityEvent_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc_ConnectivityEvent = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""ConnectivityEvent", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_ConnectivityEvent), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc_ConnectivityEvent, /*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_7_cython_6cygrpc_ConnectivityEvent, /*tp_traverse*/
+  __pyx_tp_clear_7_cython_6cygrpc_ConnectivityEvent, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_7_cython_6cygrpc_ConnectivityEvent, /*tp_methods*/
+  0, /*tp_members*/
+  __pyx_getsets_7_cython_6cygrpc_ConnectivityEvent, /*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_7_cython_6cygrpc_ConnectivityEvent, /*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_7_cython_6cygrpc_RequestCallEvent(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc_RequestCallEvent *p;
+  PyObject *o = __pyx_tp_new_7_cython_6cygrpc_BaseEvent(t, a, k);
+  if (unlikely(!o)) return 0;
+  p = ((struct __pyx_obj_7_cython_6cygrpc_RequestCallEvent *)o);
+  p->tag = Py_None; Py_INCREF(Py_None);
+  p->call = ((struct __pyx_obj_7_cython_6cygrpc_Call *)Py_None); Py_INCREF(Py_None);
+  p->call_details = ((struct __pyx_obj_7_cython_6cygrpc_CallDetails *)Py_None); Py_INCREF(Py_None);
+  p->invocation_metadata = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  if (unlikely(__pyx_pw_7_cython_6cygrpc_16RequestCallEvent_1__cinit__(o, a, k) < 0)) goto bad;
+  return o;
+  bad:
+  Py_DECREF(o); o = 0;
+  return NULL;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc_RequestCallEvent(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc_RequestCallEvent *p = (struct __pyx_obj_7_cython_6cygrpc_RequestCallEvent *)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_7_cython_6cygrpc_RequestCallEvent) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->tag);
+  Py_CLEAR(p->call);
+  Py_CLEAR(p->call_details);
+  Py_CLEAR(p->invocation_metadata);
+  __pyx_tp_dealloc_7_cython_6cygrpc_BaseEvent(o);
+}
+
+static int __pyx_tp_traverse_7_cython_6cygrpc_RequestCallEvent(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc_RequestCallEvent *p = (struct __pyx_obj_7_cython_6cygrpc_RequestCallEvent *)o;
+  e = ((likely(__pyx_ptype_7_cython_6cygrpc_BaseEvent)) ? ((__pyx_ptype_7_cython_6cygrpc_BaseEvent->tp_traverse) ? __pyx_ptype_7_cython_6cygrpc_BaseEvent->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_7_cython_6cygrpc_RequestCallEvent)); if (e) return e;
+  if (p->tag) {
+    e = (*v)(p->tag, a); if (e) return e;
+  }
+  if (p->call) {
+    e = (*v)(((PyObject *)p->call), a); if (e) return e;
+  }
+  if (p->call_details) {
+    e = (*v)(((PyObject *)p->call_details), a); if (e) return e;
+  }
+  if (p->invocation_metadata) {
+    e = (*v)(p->invocation_metadata, a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_7_cython_6cygrpc_RequestCallEvent(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_7_cython_6cygrpc_RequestCallEvent *p = (struct __pyx_obj_7_cython_6cygrpc_RequestCallEvent *)o;
+  if (likely(__pyx_ptype_7_cython_6cygrpc_BaseEvent)) { if (__pyx_ptype_7_cython_6cygrpc_BaseEvent->tp_clear) __pyx_ptype_7_cython_6cygrpc_BaseEvent->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_7_cython_6cygrpc_RequestCallEvent);
+  tmp = ((PyObject*)p->tag);
+  p->tag = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->call);
+  p->call = ((struct __pyx_obj_7_cython_6cygrpc_Call *)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->call_details);
+  p->call_details = ((struct __pyx_obj_7_cython_6cygrpc_CallDetails *)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->invocation_metadata);
+  p->invocation_metadata = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_16RequestCallEvent_completion_type(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_16RequestCallEvent_15completion_type_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_16RequestCallEvent_success(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_16RequestCallEvent_7success_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_16RequestCallEvent_tag(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_16RequestCallEvent_3tag_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_16RequestCallEvent_call(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_16RequestCallEvent_4call_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_16RequestCallEvent_call_details(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_16RequestCallEvent_12call_details_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_16RequestCallEvent_invocation_metadata(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_16RequestCallEvent_19invocation_metadata_1__get__(o);
+}
+
+static PyMethodDef __pyx_methods_7_cython_6cygrpc_RequestCallEvent[] = {
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16RequestCallEvent_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16RequestCallEvent_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_7_cython_6cygrpc_RequestCallEvent[] = {
+  {(char *)"completion_type", __pyx_getprop_7_cython_6cygrpc_16RequestCallEvent_completion_type, 0, (char *)0, 0},
+  {(char *)"success", __pyx_getprop_7_cython_6cygrpc_16RequestCallEvent_success, 0, (char *)0, 0},
+  {(char *)"tag", __pyx_getprop_7_cython_6cygrpc_16RequestCallEvent_tag, 0, (char *)0, 0},
+  {(char *)"call", __pyx_getprop_7_cython_6cygrpc_16RequestCallEvent_call, 0, (char *)0, 0},
+  {(char *)"call_details", __pyx_getprop_7_cython_6cygrpc_16RequestCallEvent_call_details, 0, (char *)0, 0},
+  {(char *)"invocation_metadata", __pyx_getprop_7_cython_6cygrpc_16RequestCallEvent_invocation_metadata, 0, (char *)0, 0},
+  {0, 0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc_RequestCallEvent_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc_RequestCallEvent},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc_RequestCallEvent},
+  {Py_tp_clear, (void *)__pyx_tp_clear_7_cython_6cygrpc_RequestCallEvent},
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc_RequestCallEvent},
+  {Py_tp_getset, (void *)__pyx_getsets_7_cython_6cygrpc_RequestCallEvent},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc_RequestCallEvent},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc_RequestCallEvent_spec = {
+  "_cython.cygrpc.RequestCallEvent",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_RequestCallEvent),
+  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_7_cython_6cygrpc_RequestCallEvent_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc_RequestCallEvent = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""RequestCallEvent", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_RequestCallEvent), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc_RequestCallEvent, /*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_7_cython_6cygrpc_RequestCallEvent, /*tp_traverse*/
+  __pyx_tp_clear_7_cython_6cygrpc_RequestCallEvent, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_7_cython_6cygrpc_RequestCallEvent, /*tp_methods*/
+  0, /*tp_members*/
+  __pyx_getsets_7_cython_6cygrpc_RequestCallEvent, /*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_7_cython_6cygrpc_RequestCallEvent, /*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_7_cython_6cygrpc_BatchOperationEvent(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc_BatchOperationEvent *p;
+  PyObject *o = __pyx_tp_new_7_cython_6cygrpc_BaseEvent(t, a, k);
+  if (unlikely(!o)) return 0;
+  p = ((struct __pyx_obj_7_cython_6cygrpc_BatchOperationEvent *)o);
+  p->tag = Py_None; Py_INCREF(Py_None);
+  p->batch_operations = Py_None; Py_INCREF(Py_None);
+  if (unlikely(__pyx_pw_7_cython_6cygrpc_19BatchOperationEvent_1__cinit__(o, a, k) < 0)) goto bad;
+  return o;
+  bad:
+  Py_DECREF(o); o = 0;
+  return NULL;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc_BatchOperationEvent(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc_BatchOperationEvent *p = (struct __pyx_obj_7_cython_6cygrpc_BatchOperationEvent *)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_7_cython_6cygrpc_BatchOperationEvent) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->tag);
+  Py_CLEAR(p->batch_operations);
+  __pyx_tp_dealloc_7_cython_6cygrpc_BaseEvent(o);
+}
+
+static int __pyx_tp_traverse_7_cython_6cygrpc_BatchOperationEvent(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc_BatchOperationEvent *p = (struct __pyx_obj_7_cython_6cygrpc_BatchOperationEvent *)o;
+  e = ((likely(__pyx_ptype_7_cython_6cygrpc_BaseEvent)) ? ((__pyx_ptype_7_cython_6cygrpc_BaseEvent->tp_traverse) ? __pyx_ptype_7_cython_6cygrpc_BaseEvent->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_7_cython_6cygrpc_BatchOperationEvent)); if (e) return e;
+  if (p->tag) {
+    e = (*v)(p->tag, a); if (e) return e;
+  }
+  if (p->batch_operations) {
+    e = (*v)(p->batch_operations, a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_7_cython_6cygrpc_BatchOperationEvent(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_7_cython_6cygrpc_BatchOperationEvent *p = (struct __pyx_obj_7_cython_6cygrpc_BatchOperationEvent *)o;
+  if (likely(__pyx_ptype_7_cython_6cygrpc_BaseEvent)) { if (__pyx_ptype_7_cython_6cygrpc_BaseEvent->tp_clear) __pyx_ptype_7_cython_6cygrpc_BaseEvent->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_7_cython_6cygrpc_BatchOperationEvent);
+  tmp = ((PyObject*)p->tag);
+  p->tag = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->batch_operations);
+  p->batch_operations = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_19BatchOperationEvent_completion_type(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_19BatchOperationEvent_15completion_type_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_19BatchOperationEvent_success(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_19BatchOperationEvent_7success_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_19BatchOperationEvent_tag(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_19BatchOperationEvent_3tag_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_19BatchOperationEvent_batch_operations(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_19BatchOperationEvent_16batch_operations_1__get__(o);
+}
+
+static PyMethodDef __pyx_methods_7_cython_6cygrpc_BatchOperationEvent[] = {
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_19BatchOperationEvent_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_19BatchOperationEvent_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_7_cython_6cygrpc_BatchOperationEvent[] = {
+  {(char *)"completion_type", __pyx_getprop_7_cython_6cygrpc_19BatchOperationEvent_completion_type, 0, (char *)0, 0},
+  {(char *)"success", __pyx_getprop_7_cython_6cygrpc_19BatchOperationEvent_success, 0, (char *)0, 0},
+  {(char *)"tag", __pyx_getprop_7_cython_6cygrpc_19BatchOperationEvent_tag, 0, (char *)0, 0},
+  {(char *)"batch_operations", __pyx_getprop_7_cython_6cygrpc_19BatchOperationEvent_batch_operations, 0, (char *)0, 0},
+  {0, 0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc_BatchOperationEvent_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc_BatchOperationEvent},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc_BatchOperationEvent},
+  {Py_tp_clear, (void *)__pyx_tp_clear_7_cython_6cygrpc_BatchOperationEvent},
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc_BatchOperationEvent},
+  {Py_tp_getset, (void *)__pyx_getsets_7_cython_6cygrpc_BatchOperationEvent},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc_BatchOperationEvent},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc_BatchOperationEvent_spec = {
+  "_cython.cygrpc.BatchOperationEvent",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_BatchOperationEvent),
+  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_7_cython_6cygrpc_BatchOperationEvent_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc_BatchOperationEvent = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""BatchOperationEvent", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_BatchOperationEvent), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc_BatchOperationEvent, /*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_7_cython_6cygrpc_BatchOperationEvent, /*tp_traverse*/
+  __pyx_tp_clear_7_cython_6cygrpc_BatchOperationEvent, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_7_cython_6cygrpc_BatchOperationEvent, /*tp_methods*/
+  0, /*tp_members*/
+  __pyx_getsets_7_cython_6cygrpc_BatchOperationEvent, /*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_7_cython_6cygrpc_BatchOperationEvent, /*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_7_cython_6cygrpc_ServerShutdownEvent(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc_ServerShutdownEvent *p;
+  PyObject *o = __pyx_tp_new_7_cython_6cygrpc_BaseEvent(t, a, k);
+  if (unlikely(!o)) return 0;
+  p = ((struct __pyx_obj_7_cython_6cygrpc_ServerShutdownEvent *)o);
+  p->tag = Py_None; Py_INCREF(Py_None);
+  if (unlikely(__pyx_pw_7_cython_6cygrpc_19ServerShutdownEvent_1__cinit__(o, a, k) < 0)) goto bad;
+  return o;
+  bad:
+  Py_DECREF(o); o = 0;
+  return NULL;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc_ServerShutdownEvent(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc_ServerShutdownEvent *p = (struct __pyx_obj_7_cython_6cygrpc_ServerShutdownEvent *)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_7_cython_6cygrpc_ServerShutdownEvent) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->tag);
+  __pyx_tp_dealloc_7_cython_6cygrpc_BaseEvent(o);
+}
+
+static int __pyx_tp_traverse_7_cython_6cygrpc_ServerShutdownEvent(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc_ServerShutdownEvent *p = (struct __pyx_obj_7_cython_6cygrpc_ServerShutdownEvent *)o;
+  e = ((likely(__pyx_ptype_7_cython_6cygrpc_BaseEvent)) ? ((__pyx_ptype_7_cython_6cygrpc_BaseEvent->tp_traverse) ? __pyx_ptype_7_cython_6cygrpc_BaseEvent->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_7_cython_6cygrpc_ServerShutdownEvent)); if (e) return e;
+  if (p->tag) {
+    e = (*v)(p->tag, a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_7_cython_6cygrpc_ServerShutdownEvent(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_7_cython_6cygrpc_ServerShutdownEvent *p = (struct __pyx_obj_7_cython_6cygrpc_ServerShutdownEvent *)o;
+  if (likely(__pyx_ptype_7_cython_6cygrpc_BaseEvent)) { if (__pyx_ptype_7_cython_6cygrpc_BaseEvent->tp_clear) __pyx_ptype_7_cython_6cygrpc_BaseEvent->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_7_cython_6cygrpc_ServerShutdownEvent);
+  tmp = ((PyObject*)p->tag);
+  p->tag = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_19ServerShutdownEvent_completion_type(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_19ServerShutdownEvent_15completion_type_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_19ServerShutdownEvent_success(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_19ServerShutdownEvent_7success_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_19ServerShutdownEvent_tag(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_19ServerShutdownEvent_3tag_1__get__(o);
+}
+
+static PyMethodDef __pyx_methods_7_cython_6cygrpc_ServerShutdownEvent[] = {
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_19ServerShutdownEvent_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_19ServerShutdownEvent_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_7_cython_6cygrpc_ServerShutdownEvent[] = {
+  {(char *)"completion_type", __pyx_getprop_7_cython_6cygrpc_19ServerShutdownEvent_completion_type, 0, (char *)0, 0},
+  {(char *)"success", __pyx_getprop_7_cython_6cygrpc_19ServerShutdownEvent_success, 0, (char *)0, 0},
+  {(char *)"tag", __pyx_getprop_7_cython_6cygrpc_19ServerShutdownEvent_tag, 0, (char *)0, 0},
+  {0, 0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc_ServerShutdownEvent_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc_ServerShutdownEvent},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc_ServerShutdownEvent},
+  {Py_tp_clear, (void *)__pyx_tp_clear_7_cython_6cygrpc_ServerShutdownEvent},
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc_ServerShutdownEvent},
+  {Py_tp_getset, (void *)__pyx_getsets_7_cython_6cygrpc_ServerShutdownEvent},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc_ServerShutdownEvent},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc_ServerShutdownEvent_spec = {
+  "_cython.cygrpc.ServerShutdownEvent",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_ServerShutdownEvent),
+  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_7_cython_6cygrpc_ServerShutdownEvent_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc_ServerShutdownEvent = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""ServerShutdownEvent", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_ServerShutdownEvent), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc_ServerShutdownEvent, /*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_7_cython_6cygrpc_ServerShutdownEvent, /*tp_traverse*/
+  __pyx_tp_clear_7_cython_6cygrpc_ServerShutdownEvent, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_7_cython_6cygrpc_ServerShutdownEvent, /*tp_methods*/
+  0, /*tp_members*/
+  __pyx_getsets_7_cython_6cygrpc_ServerShutdownEvent, /*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_7_cython_6cygrpc_ServerShutdownEvent, /*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_7_cython_6cygrpc_Operation __pyx_vtable_7_cython_6cygrpc_Operation;
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_Operation(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc_Operation *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_7_cython_6cygrpc_Operation *)o);
+  p->__pyx_vtab = __pyx_vtabptr_7_cython_6cygrpc_Operation;
+  new((void*)&(p->c_op)) grpc_op();
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc_Operation(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc_Operation *p = (struct __pyx_obj_7_cython_6cygrpc_Operation *)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_7_cython_6cygrpc_Operation) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  __Pyx_call_destructor(p->c_op);
+  #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_7_cython_6cygrpc_Operation[] = {
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_9Operation_1__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_9Operation_3__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc_Operation_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc_Operation},
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc_Operation},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc_Operation},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc_Operation_spec = {
+  "_cython.cygrpc.Operation",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_Operation),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
+  __pyx_type_7_cython_6cygrpc_Operation_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc_Operation = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""Operation", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_Operation), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc_Operation, /*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_7_cython_6cygrpc_Operation, /*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_7_cython_6cygrpc_Operation, /*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_7_cython_6cygrpc_SendInitialMetadataOperation __pyx_vtable_7_cython_6cygrpc_SendInitialMetadataOperation;
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_SendInitialMetadataOperation(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc_SendInitialMetadataOperation *p;
+  PyObject *o = __pyx_tp_new_7_cython_6cygrpc_Operation(t, a, k);
+  if (unlikely(!o)) return 0;
+  p = ((struct __pyx_obj_7_cython_6cygrpc_SendInitialMetadataOperation *)o);
+  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_7_cython_6cygrpc_Operation*)__pyx_vtabptr_7_cython_6cygrpc_SendInitialMetadataOperation;
+  p->_initial_metadata = Py_None; Py_INCREF(Py_None);
+  if (unlikely(__pyx_pw_7_cython_6cygrpc_28SendInitialMetadataOperation_1__cinit__(o, a, k) < 0)) goto bad;
+  return o;
+  bad:
+  Py_DECREF(o); o = 0;
+  return NULL;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc_SendInitialMetadataOperation(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc_SendInitialMetadataOperation *p = (struct __pyx_obj_7_cython_6cygrpc_SendInitialMetadataOperation *)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_7_cython_6cygrpc_SendInitialMetadataOperation) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->_initial_metadata);
+  __pyx_tp_dealloc_7_cython_6cygrpc_Operation(o);
+}
+
+static int __pyx_tp_traverse_7_cython_6cygrpc_SendInitialMetadataOperation(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc_SendInitialMetadataOperation *p = (struct __pyx_obj_7_cython_6cygrpc_SendInitialMetadataOperation *)o;
+  e = ((likely(__pyx_ptype_7_cython_6cygrpc_Operation)) ? ((__pyx_ptype_7_cython_6cygrpc_Operation->tp_traverse) ? __pyx_ptype_7_cython_6cygrpc_Operation->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_7_cython_6cygrpc_SendInitialMetadataOperation)); if (e) return e;
+  if (p->_initial_metadata) {
+    e = (*v)(p->_initial_metadata, a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_7_cython_6cygrpc_SendInitialMetadataOperation(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_7_cython_6cygrpc_SendInitialMetadataOperation *p = (struct __pyx_obj_7_cython_6cygrpc_SendInitialMetadataOperation *)o;
+  if (likely(__pyx_ptype_7_cython_6cygrpc_Operation)) { if (__pyx_ptype_7_cython_6cygrpc_Operation->tp_clear) __pyx_ptype_7_cython_6cygrpc_Operation->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_7_cython_6cygrpc_SendInitialMetadataOperation);
+  tmp = ((PyObject*)p->_initial_metadata);
+  p->_initial_metadata = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_28SendInitialMetadataOperation__initial_metadata(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_28SendInitialMetadataOperation_17_initial_metadata_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_28SendInitialMetadataOperation__flags(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_28SendInitialMetadataOperation_6_flags_1__get__(o);
+}
+
+static PyMethodDef __pyx_methods_7_cython_6cygrpc_SendInitialMetadataOperation[] = {
+  {"type", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_28SendInitialMetadataOperation_3type, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_28SendInitialMetadataOperation_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_28SendInitialMetadataOperation_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_7_cython_6cygrpc_SendInitialMetadataOperation[] = {
+  {(char *)"_initial_metadata", __pyx_getprop_7_cython_6cygrpc_28SendInitialMetadataOperation__initial_metadata, 0, (char *)0, 0},
+  {(char *)"_flags", __pyx_getprop_7_cython_6cygrpc_28SendInitialMetadataOperation__flags, 0, (char *)0, 0},
+  {0, 0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc_SendInitialMetadataOperation_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc_SendInitialMetadataOperation},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc_SendInitialMetadataOperation},
+  {Py_tp_clear, (void *)__pyx_tp_clear_7_cython_6cygrpc_SendInitialMetadataOperation},
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc_SendInitialMetadataOperation},
+  {Py_tp_getset, (void *)__pyx_getsets_7_cython_6cygrpc_SendInitialMetadataOperation},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc_SendInitialMetadataOperation},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc_SendInitialMetadataOperation_spec = {
+  "_cython.cygrpc.SendInitialMetadataOperation",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_SendInitialMetadataOperation),
+  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_7_cython_6cygrpc_SendInitialMetadataOperation_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc_SendInitialMetadataOperation = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""SendInitialMetadataOperation", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_SendInitialMetadataOperation), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc_SendInitialMetadataOperation, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc_SendInitialMetadataOperation, /*tp_traverse*/
+  __pyx_tp_clear_7_cython_6cygrpc_SendInitialMetadataOperation, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_7_cython_6cygrpc_SendInitialMetadataOperation, /*tp_methods*/
+  0, /*tp_members*/
+  __pyx_getsets_7_cython_6cygrpc_SendInitialMetadataOperation, /*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_7_cython_6cygrpc_SendInitialMetadataOperation, /*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_7_cython_6cygrpc_SendMessageOperation __pyx_vtable_7_cython_6cygrpc_SendMessageOperation;
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_SendMessageOperation(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc_SendMessageOperation *p;
+  PyObject *o = __pyx_tp_new_7_cython_6cygrpc_Operation(t, a, k);
+  if (unlikely(!o)) return 0;
+  p = ((struct __pyx_obj_7_cython_6cygrpc_SendMessageOperation *)o);
+  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_7_cython_6cygrpc_Operation*)__pyx_vtabptr_7_cython_6cygrpc_SendMessageOperation;
+  p->_message = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  if (unlikely(__pyx_pw_7_cython_6cygrpc_20SendMessageOperation_1__cinit__(o, a, k) < 0)) goto bad;
+  return o;
+  bad:
+  Py_DECREF(o); o = 0;
+  return NULL;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc_SendMessageOperation(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc_SendMessageOperation *p = (struct __pyx_obj_7_cython_6cygrpc_SendMessageOperation *)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_7_cython_6cygrpc_SendMessageOperation) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  Py_CLEAR(p->_message);
+  __pyx_tp_dealloc_7_cython_6cygrpc_Operation(o);
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_20SendMessageOperation__message(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_20SendMessageOperation_8_message_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_20SendMessageOperation__flags(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_20SendMessageOperation_6_flags_1__get__(o);
+}
+
+static PyMethodDef __pyx_methods_7_cython_6cygrpc_SendMessageOperation[] = {
+  {"type", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_20SendMessageOperation_3type, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_20SendMessageOperation_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_20SendMessageOperation_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_7_cython_6cygrpc_SendMessageOperation[] = {
+  {(char *)"_message", __pyx_getprop_7_cython_6cygrpc_20SendMessageOperation__message, 0, (char *)0, 0},
+  {(char *)"_flags", __pyx_getprop_7_cython_6cygrpc_20SendMessageOperation__flags, 0, (char *)0, 0},
+  {0, 0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc_SendMessageOperation_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc_SendMessageOperation},
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc_SendMessageOperation},
+  {Py_tp_getset, (void *)__pyx_getsets_7_cython_6cygrpc_SendMessageOperation},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc_SendMessageOperation},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc_SendMessageOperation_spec = {
+  "_cython.cygrpc.SendMessageOperation",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_SendMessageOperation),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
+  __pyx_type_7_cython_6cygrpc_SendMessageOperation_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc_SendMessageOperation = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""SendMessageOperation", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_SendMessageOperation), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc_SendMessageOperation, /*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_7_cython_6cygrpc_SendMessageOperation, /*tp_methods*/
+  0, /*tp_members*/
+  __pyx_getsets_7_cython_6cygrpc_SendMessageOperation, /*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_7_cython_6cygrpc_SendMessageOperation, /*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_7_cython_6cygrpc_SendCloseFromClientOperation __pyx_vtable_7_cython_6cygrpc_SendCloseFromClientOperation;
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_SendCloseFromClientOperation(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc_SendCloseFromClientOperation *p;
+  PyObject *o = __pyx_tp_new_7_cython_6cygrpc_Operation(t, a, k);
+  if (unlikely(!o)) return 0;
+  p = ((struct __pyx_obj_7_cython_6cygrpc_SendCloseFromClientOperation *)o);
+  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_7_cython_6cygrpc_Operation*)__pyx_vtabptr_7_cython_6cygrpc_SendCloseFromClientOperation;
+  if (unlikely(__pyx_pw_7_cython_6cygrpc_28SendCloseFromClientOperation_1__cinit__(o, a, k) < 0)) goto bad;
+  return o;
+  bad:
+  Py_DECREF(o); o = 0;
+  return NULL;
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_28SendCloseFromClientOperation__flags(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_28SendCloseFromClientOperation_6_flags_1__get__(o);
+}
+
+static PyMethodDef __pyx_methods_7_cython_6cygrpc_SendCloseFromClientOperation[] = {
+  {"type", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_28SendCloseFromClientOperation_3type, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_28SendCloseFromClientOperation_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_28SendCloseFromClientOperation_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_7_cython_6cygrpc_SendCloseFromClientOperation[] = {
+  {(char *)"_flags", __pyx_getprop_7_cython_6cygrpc_28SendCloseFromClientOperation__flags, 0, (char *)0, 0},
+  {0, 0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc_SendCloseFromClientOperation_slots[] = {
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc_SendCloseFromClientOperation},
+  {Py_tp_getset, (void *)__pyx_getsets_7_cython_6cygrpc_SendCloseFromClientOperation},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc_SendCloseFromClientOperation},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc_SendCloseFromClientOperation_spec = {
+  "_cython.cygrpc.SendCloseFromClientOperation",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_SendCloseFromClientOperation),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
+  __pyx_type_7_cython_6cygrpc_SendCloseFromClientOperation_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc_SendCloseFromClientOperation = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""SendCloseFromClientOperation", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_SendCloseFromClientOperation), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc_Operation, /*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_7_cython_6cygrpc_SendCloseFromClientOperation, /*tp_methods*/
+  0, /*tp_members*/
+  __pyx_getsets_7_cython_6cygrpc_SendCloseFromClientOperation, /*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_7_cython_6cygrpc_SendCloseFromClientOperation, /*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_7_cython_6cygrpc_SendStatusFromServerOperation __pyx_vtable_7_cython_6cygrpc_SendStatusFromServerOperation;
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_SendStatusFromServerOperation(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc_SendStatusFromServerOperation *p;
+  PyObject *o = __pyx_tp_new_7_cython_6cygrpc_Operation(t, a, k);
+  if (unlikely(!o)) return 0;
+  p = ((struct __pyx_obj_7_cython_6cygrpc_SendStatusFromServerOperation *)o);
+  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_7_cython_6cygrpc_Operation*)__pyx_vtabptr_7_cython_6cygrpc_SendStatusFromServerOperation;
+  new((void*)&(p->_c_details)) grpc_slice();
+  p->_trailing_metadata = Py_None; Py_INCREF(Py_None);
+  p->_code = Py_None; Py_INCREF(Py_None);
+  p->_details = Py_None; Py_INCREF(Py_None);
+  if (unlikely(__pyx_pw_7_cython_6cygrpc_29SendStatusFromServerOperation_1__cinit__(o, a, k) < 0)) goto bad;
+  return o;
+  bad:
+  Py_DECREF(o); o = 0;
+  return NULL;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc_SendStatusFromServerOperation(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc_SendStatusFromServerOperation *p = (struct __pyx_obj_7_cython_6cygrpc_SendStatusFromServerOperation *)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_7_cython_6cygrpc_SendStatusFromServerOperation) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  __Pyx_call_destructor(p->_c_details);
+  Py_CLEAR(p->_trailing_metadata);
+  Py_CLEAR(p->_code);
+  Py_CLEAR(p->_details);
+  __pyx_tp_dealloc_7_cython_6cygrpc_Operation(o);
+}
+
+static int __pyx_tp_traverse_7_cython_6cygrpc_SendStatusFromServerOperation(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc_SendStatusFromServerOperation *p = (struct __pyx_obj_7_cython_6cygrpc_SendStatusFromServerOperation *)o;
+  e = ((likely(__pyx_ptype_7_cython_6cygrpc_Operation)) ? ((__pyx_ptype_7_cython_6cygrpc_Operation->tp_traverse) ? __pyx_ptype_7_cython_6cygrpc_Operation->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_7_cython_6cygrpc_SendStatusFromServerOperation)); if (e) return e;
+  if (p->_trailing_metadata) {
+    e = (*v)(p->_trailing_metadata, a); if (e) return e;
+  }
+  if (p->_code) {
+    e = (*v)(p->_code, a); if (e) return e;
+  }
+  if (p->_details) {
+    e = (*v)(p->_details, a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_7_cython_6cygrpc_SendStatusFromServerOperation(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_7_cython_6cygrpc_SendStatusFromServerOperation *p = (struct __pyx_obj_7_cython_6cygrpc_SendStatusFromServerOperation *)o;
+  if (likely(__pyx_ptype_7_cython_6cygrpc_Operation)) { if (__pyx_ptype_7_cython_6cygrpc_Operation->tp_clear) __pyx_ptype_7_cython_6cygrpc_Operation->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_7_cython_6cygrpc_SendStatusFromServerOperation);
+  tmp = ((PyObject*)p->_trailing_metadata);
+  p->_trailing_metadata = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->_code);
+  p->_code = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->_details);
+  p->_details = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_29SendStatusFromServerOperation__trailing_metadata(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_29SendStatusFromServerOperation_18_trailing_metadata_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_29SendStatusFromServerOperation__code(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_29SendStatusFromServerOperation_5_code_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_29SendStatusFromServerOperation__details(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_29SendStatusFromServerOperation_8_details_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_29SendStatusFromServerOperation__flags(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_29SendStatusFromServerOperation_6_flags_1__get__(o);
+}
+
+static PyMethodDef __pyx_methods_7_cython_6cygrpc_SendStatusFromServerOperation[] = {
+  {"type", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_29SendStatusFromServerOperation_3type, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_29SendStatusFromServerOperation_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_29SendStatusFromServerOperation_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_7_cython_6cygrpc_SendStatusFromServerOperation[] = {
+  {(char *)"_trailing_metadata", __pyx_getprop_7_cython_6cygrpc_29SendStatusFromServerOperation__trailing_metadata, 0, (char *)0, 0},
+  {(char *)"_code", __pyx_getprop_7_cython_6cygrpc_29SendStatusFromServerOperation__code, 0, (char *)0, 0},
+  {(char *)"_details", __pyx_getprop_7_cython_6cygrpc_29SendStatusFromServerOperation__details, 0, (char *)0, 0},
+  {(char *)"_flags", __pyx_getprop_7_cython_6cygrpc_29SendStatusFromServerOperation__flags, 0, (char *)0, 0},
+  {0, 0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc_SendStatusFromServerOperation_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc_SendStatusFromServerOperation},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc_SendStatusFromServerOperation},
+  {Py_tp_clear, (void *)__pyx_tp_clear_7_cython_6cygrpc_SendStatusFromServerOperation},
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc_SendStatusFromServerOperation},
+  {Py_tp_getset, (void *)__pyx_getsets_7_cython_6cygrpc_SendStatusFromServerOperation},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc_SendStatusFromServerOperation},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc_SendStatusFromServerOperation_spec = {
+  "_cython.cygrpc.SendStatusFromServerOperation",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_SendStatusFromServerOperation),
+  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_7_cython_6cygrpc_SendStatusFromServerOperation_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc_SendStatusFromServerOperation = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""SendStatusFromServerOperation", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_SendStatusFromServerOperation), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc_SendStatusFromServerOperation, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc_SendStatusFromServerOperation, /*tp_traverse*/
+  __pyx_tp_clear_7_cython_6cygrpc_SendStatusFromServerOperation, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_7_cython_6cygrpc_SendStatusFromServerOperation, /*tp_methods*/
+  0, /*tp_members*/
+  __pyx_getsets_7_cython_6cygrpc_SendStatusFromServerOperation, /*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_7_cython_6cygrpc_SendStatusFromServerOperation, /*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_7_cython_6cygrpc_ReceiveInitialMetadataOperation __pyx_vtable_7_cython_6cygrpc_ReceiveInitialMetadataOperation;
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_ReceiveInitialMetadataOperation(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc_ReceiveInitialMetadataOperation *p;
+  PyObject *o = __pyx_tp_new_7_cython_6cygrpc_Operation(t, a, k);
+  if (unlikely(!o)) return 0;
+  p = ((struct __pyx_obj_7_cython_6cygrpc_ReceiveInitialMetadataOperation *)o);
+  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_7_cython_6cygrpc_Operation*)__pyx_vtabptr_7_cython_6cygrpc_ReceiveInitialMetadataOperation;
+  new((void*)&(p->_c_initial_metadata)) grpc_metadata_array();
+  p->_initial_metadata = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  if (unlikely(__pyx_pw_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_1__cinit__(o, a, k) < 0)) goto bad;
+  return o;
+  bad:
+  Py_DECREF(o); o = 0;
+  return NULL;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc_ReceiveInitialMetadataOperation(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc_ReceiveInitialMetadataOperation *p = (struct __pyx_obj_7_cython_6cygrpc_ReceiveInitialMetadataOperation *)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_7_cython_6cygrpc_ReceiveInitialMetadataOperation) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  __Pyx_call_destructor(p->_c_initial_metadata);
+  Py_CLEAR(p->_initial_metadata);
+  __pyx_tp_dealloc_7_cython_6cygrpc_Operation(o);
+}
+
+static int __pyx_tp_traverse_7_cython_6cygrpc_ReceiveInitialMetadataOperation(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc_ReceiveInitialMetadataOperation *p = (struct __pyx_obj_7_cython_6cygrpc_ReceiveInitialMetadataOperation *)o;
+  e = ((likely(__pyx_ptype_7_cython_6cygrpc_Operation)) ? ((__pyx_ptype_7_cython_6cygrpc_Operation->tp_traverse) ? __pyx_ptype_7_cython_6cygrpc_Operation->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_7_cython_6cygrpc_ReceiveInitialMetadataOperation)); if (e) return e;
+  if (p->_initial_metadata) {
+    e = (*v)(p->_initial_metadata, a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_7_cython_6cygrpc_ReceiveInitialMetadataOperation(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_7_cython_6cygrpc_ReceiveInitialMetadataOperation *p = (struct __pyx_obj_7_cython_6cygrpc_ReceiveInitialMetadataOperation *)o;
+  if (likely(__pyx_ptype_7_cython_6cygrpc_Operation)) { if (__pyx_ptype_7_cython_6cygrpc_Operation->tp_clear) __pyx_ptype_7_cython_6cygrpc_Operation->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_7_cython_6cygrpc_ReceiveInitialMetadataOperation);
+  tmp = ((PyObject*)p->_initial_metadata);
+  p->_initial_metadata = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_31ReceiveInitialMetadataOperation__flags(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_6_flags_1__get__(o);
+}
+
+static PyMethodDef __pyx_methods_7_cython_6cygrpc_ReceiveInitialMetadataOperation[] = {
+  {"type", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_3type, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"initial_metadata", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_5initial_metadata, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_7__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_9__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_7_cython_6cygrpc_ReceiveInitialMetadataOperation[] = {
+  {(char *)"_flags", __pyx_getprop_7_cython_6cygrpc_31ReceiveInitialMetadataOperation__flags, 0, (char *)0, 0},
+  {0, 0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc_ReceiveInitialMetadataOperation_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc_ReceiveInitialMetadataOperation},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc_ReceiveInitialMetadataOperation},
+  {Py_tp_clear, (void *)__pyx_tp_clear_7_cython_6cygrpc_ReceiveInitialMetadataOperation},
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc_ReceiveInitialMetadataOperation},
+  {Py_tp_getset, (void *)__pyx_getsets_7_cython_6cygrpc_ReceiveInitialMetadataOperation},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc_ReceiveInitialMetadataOperation},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc_ReceiveInitialMetadataOperation_spec = {
+  "_cython.cygrpc.ReceiveInitialMetadataOperation",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_ReceiveInitialMetadataOperation),
+  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_7_cython_6cygrpc_ReceiveInitialMetadataOperation_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc_ReceiveInitialMetadataOperation = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""ReceiveInitialMetadataOperation", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_ReceiveInitialMetadataOperation), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc_ReceiveInitialMetadataOperation, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc_ReceiveInitialMetadataOperation, /*tp_traverse*/
+  __pyx_tp_clear_7_cython_6cygrpc_ReceiveInitialMetadataOperation, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_7_cython_6cygrpc_ReceiveInitialMetadataOperation, /*tp_methods*/
+  0, /*tp_members*/
+  __pyx_getsets_7_cython_6cygrpc_ReceiveInitialMetadataOperation, /*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_7_cython_6cygrpc_ReceiveInitialMetadataOperation, /*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_7_cython_6cygrpc_ReceiveMessageOperation __pyx_vtable_7_cython_6cygrpc_ReceiveMessageOperation;
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_ReceiveMessageOperation(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc_ReceiveMessageOperation *p;
+  PyObject *o = __pyx_tp_new_7_cython_6cygrpc_Operation(t, a, k);
+  if (unlikely(!o)) return 0;
+  p = ((struct __pyx_obj_7_cython_6cygrpc_ReceiveMessageOperation *)o);
+  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_7_cython_6cygrpc_Operation*)__pyx_vtabptr_7_cython_6cygrpc_ReceiveMessageOperation;
+  p->_message = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  if (unlikely(__pyx_pw_7_cython_6cygrpc_23ReceiveMessageOperation_1__cinit__(o, a, k) < 0)) goto bad;
+  return o;
+  bad:
+  Py_DECREF(o); o = 0;
+  return NULL;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc_ReceiveMessageOperation(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc_ReceiveMessageOperation *p = (struct __pyx_obj_7_cython_6cygrpc_ReceiveMessageOperation *)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_7_cython_6cygrpc_ReceiveMessageOperation) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  Py_CLEAR(p->_message);
+  __pyx_tp_dealloc_7_cython_6cygrpc_Operation(o);
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_23ReceiveMessageOperation__flags(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_23ReceiveMessageOperation_6_flags_1__get__(o);
+}
+
+static PyMethodDef __pyx_methods_7_cython_6cygrpc_ReceiveMessageOperation[] = {
+  {"type", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_23ReceiveMessageOperation_3type, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"message", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_23ReceiveMessageOperation_5message, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_23ReceiveMessageOperation_7__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_23ReceiveMessageOperation_9__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_7_cython_6cygrpc_ReceiveMessageOperation[] = {
+  {(char *)"_flags", __pyx_getprop_7_cython_6cygrpc_23ReceiveMessageOperation__flags, 0, (char *)0, 0},
+  {0, 0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc_ReceiveMessageOperation_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc_ReceiveMessageOperation},
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc_ReceiveMessageOperation},
+  {Py_tp_getset, (void *)__pyx_getsets_7_cython_6cygrpc_ReceiveMessageOperation},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc_ReceiveMessageOperation},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc_ReceiveMessageOperation_spec = {
+  "_cython.cygrpc.ReceiveMessageOperation",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_ReceiveMessageOperation),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
+  __pyx_type_7_cython_6cygrpc_ReceiveMessageOperation_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc_ReceiveMessageOperation = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""ReceiveMessageOperation", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_ReceiveMessageOperation), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc_ReceiveMessageOperation, /*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_7_cython_6cygrpc_ReceiveMessageOperation, /*tp_methods*/
+  0, /*tp_members*/
+  __pyx_getsets_7_cython_6cygrpc_ReceiveMessageOperation, /*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_7_cython_6cygrpc_ReceiveMessageOperation, /*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_7_cython_6cygrpc_ReceiveStatusOnClientOperation __pyx_vtable_7_cython_6cygrpc_ReceiveStatusOnClientOperation;
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_ReceiveStatusOnClientOperation(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc_ReceiveStatusOnClientOperation *p;
+  PyObject *o = __pyx_tp_new_7_cython_6cygrpc_Operation(t, a, k);
+  if (unlikely(!o)) return 0;
+  p = ((struct __pyx_obj_7_cython_6cygrpc_ReceiveStatusOnClientOperation *)o);
+  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_7_cython_6cygrpc_Operation*)__pyx_vtabptr_7_cython_6cygrpc_ReceiveStatusOnClientOperation;
+  new((void*)&(p->_c_trailing_metadata)) grpc_metadata_array();
+  new((void*)&(p->_c_details)) grpc_slice();
+  p->_trailing_metadata = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  p->_code = Py_None; Py_INCREF(Py_None);
+  p->_details = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  p->_error_string = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  if (unlikely(__pyx_pw_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_1__cinit__(o, a, k) < 0)) goto bad;
+  return o;
+  bad:
+  Py_DECREF(o); o = 0;
+  return NULL;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc_ReceiveStatusOnClientOperation(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc_ReceiveStatusOnClientOperation *p = (struct __pyx_obj_7_cython_6cygrpc_ReceiveStatusOnClientOperation *)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_7_cython_6cygrpc_ReceiveStatusOnClientOperation) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  __Pyx_call_destructor(p->_c_trailing_metadata);
+  __Pyx_call_destructor(p->_c_details);
+  Py_CLEAR(p->_trailing_metadata);
+  Py_CLEAR(p->_code);
+  Py_CLEAR(p->_details);
+  Py_CLEAR(p->_error_string);
+  __pyx_tp_dealloc_7_cython_6cygrpc_Operation(o);
+}
+
+static int __pyx_tp_traverse_7_cython_6cygrpc_ReceiveStatusOnClientOperation(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc_ReceiveStatusOnClientOperation *p = (struct __pyx_obj_7_cython_6cygrpc_ReceiveStatusOnClientOperation *)o;
+  e = ((likely(__pyx_ptype_7_cython_6cygrpc_Operation)) ? ((__pyx_ptype_7_cython_6cygrpc_Operation->tp_traverse) ? __pyx_ptype_7_cython_6cygrpc_Operation->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_7_cython_6cygrpc_ReceiveStatusOnClientOperation)); if (e) return e;
+  if (p->_trailing_metadata) {
+    e = (*v)(p->_trailing_metadata, a); if (e) return e;
+  }
+  if (p->_code) {
+    e = (*v)(p->_code, a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_7_cython_6cygrpc_ReceiveStatusOnClientOperation(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_7_cython_6cygrpc_ReceiveStatusOnClientOperation *p = (struct __pyx_obj_7_cython_6cygrpc_ReceiveStatusOnClientOperation *)o;
+  if (likely(__pyx_ptype_7_cython_6cygrpc_Operation)) { if (__pyx_ptype_7_cython_6cygrpc_Operation->tp_clear) __pyx_ptype_7_cython_6cygrpc_Operation->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_7_cython_6cygrpc_ReceiveStatusOnClientOperation);
+  tmp = ((PyObject*)p->_trailing_metadata);
+  p->_trailing_metadata = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->_code);
+  p->_code = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_30ReceiveStatusOnClientOperation__flags(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_6_flags_1__get__(o);
+}
+
+static PyMethodDef __pyx_methods_7_cython_6cygrpc_ReceiveStatusOnClientOperation[] = {
+  {"type", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_3type, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"trailing_metadata", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_5trailing_metadata, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"code", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_7code, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"details", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_9details, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"error_string", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_11error_string, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_13__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_15__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_7_cython_6cygrpc_ReceiveStatusOnClientOperation[] = {
+  {(char *)"_flags", __pyx_getprop_7_cython_6cygrpc_30ReceiveStatusOnClientOperation__flags, 0, (char *)0, 0},
+  {0, 0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc_ReceiveStatusOnClientOperation_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc_ReceiveStatusOnClientOperation},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc_ReceiveStatusOnClientOperation},
+  {Py_tp_clear, (void *)__pyx_tp_clear_7_cython_6cygrpc_ReceiveStatusOnClientOperation},
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc_ReceiveStatusOnClientOperation},
+  {Py_tp_getset, (void *)__pyx_getsets_7_cython_6cygrpc_ReceiveStatusOnClientOperation},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc_ReceiveStatusOnClientOperation},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc_ReceiveStatusOnClientOperation_spec = {
+  "_cython.cygrpc.ReceiveStatusOnClientOperation",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_ReceiveStatusOnClientOperation),
+  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_7_cython_6cygrpc_ReceiveStatusOnClientOperation_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc_ReceiveStatusOnClientOperation = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""ReceiveStatusOnClientOperation", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_ReceiveStatusOnClientOperation), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc_ReceiveStatusOnClientOperation, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc_ReceiveStatusOnClientOperation, /*tp_traverse*/
+  __pyx_tp_clear_7_cython_6cygrpc_ReceiveStatusOnClientOperation, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_7_cython_6cygrpc_ReceiveStatusOnClientOperation, /*tp_methods*/
+  0, /*tp_members*/
+  __pyx_getsets_7_cython_6cygrpc_ReceiveStatusOnClientOperation, /*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_7_cython_6cygrpc_ReceiveStatusOnClientOperation, /*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_7_cython_6cygrpc_ReceiveCloseOnServerOperation __pyx_vtable_7_cython_6cygrpc_ReceiveCloseOnServerOperation;
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_ReceiveCloseOnServerOperation(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc_ReceiveCloseOnServerOperation *p;
+  PyObject *o = __pyx_tp_new_7_cython_6cygrpc_Operation(t, a, k);
+  if (unlikely(!o)) return 0;
+  p = ((struct __pyx_obj_7_cython_6cygrpc_ReceiveCloseOnServerOperation *)o);
+  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_7_cython_6cygrpc_Operation*)__pyx_vtabptr_7_cython_6cygrpc_ReceiveCloseOnServerOperation;
+  p->_cancelled = Py_None; Py_INCREF(Py_None);
+  if (unlikely(__pyx_pw_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_1__cinit__(o, a, k) < 0)) goto bad;
+  return o;
+  bad:
+  Py_DECREF(o); o = 0;
+  return NULL;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc_ReceiveCloseOnServerOperation(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc_ReceiveCloseOnServerOperation *p = (struct __pyx_obj_7_cython_6cygrpc_ReceiveCloseOnServerOperation *)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_7_cython_6cygrpc_ReceiveCloseOnServerOperation) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->_cancelled);
+  __pyx_tp_dealloc_7_cython_6cygrpc_Operation(o);
+}
+
+static int __pyx_tp_traverse_7_cython_6cygrpc_ReceiveCloseOnServerOperation(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc_ReceiveCloseOnServerOperation *p = (struct __pyx_obj_7_cython_6cygrpc_ReceiveCloseOnServerOperation *)o;
+  e = ((likely(__pyx_ptype_7_cython_6cygrpc_Operation)) ? ((__pyx_ptype_7_cython_6cygrpc_Operation->tp_traverse) ? __pyx_ptype_7_cython_6cygrpc_Operation->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_7_cython_6cygrpc_ReceiveCloseOnServerOperation)); if (e) return e;
+  if (p->_cancelled) {
+    e = (*v)(p->_cancelled, a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_7_cython_6cygrpc_ReceiveCloseOnServerOperation(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_7_cython_6cygrpc_ReceiveCloseOnServerOperation *p = (struct __pyx_obj_7_cython_6cygrpc_ReceiveCloseOnServerOperation *)o;
+  if (likely(__pyx_ptype_7_cython_6cygrpc_Operation)) { if (__pyx_ptype_7_cython_6cygrpc_Operation->tp_clear) __pyx_ptype_7_cython_6cygrpc_Operation->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_7_cython_6cygrpc_ReceiveCloseOnServerOperation);
+  tmp = ((PyObject*)p->_cancelled);
+  p->_cancelled = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_29ReceiveCloseOnServerOperation__flags(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_6_flags_1__get__(o);
+}
+
+static PyMethodDef __pyx_methods_7_cython_6cygrpc_ReceiveCloseOnServerOperation[] = {
+  {"type", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_3type, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"cancelled", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_5cancelled, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_7__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_9__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_7_cython_6cygrpc_ReceiveCloseOnServerOperation[] = {
+  {(char *)"_flags", __pyx_getprop_7_cython_6cygrpc_29ReceiveCloseOnServerOperation__flags, 0, (char *)0, 0},
+  {0, 0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc_ReceiveCloseOnServerOperation_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc_ReceiveCloseOnServerOperation},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc_ReceiveCloseOnServerOperation},
+  {Py_tp_clear, (void *)__pyx_tp_clear_7_cython_6cygrpc_ReceiveCloseOnServerOperation},
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc_ReceiveCloseOnServerOperation},
+  {Py_tp_getset, (void *)__pyx_getsets_7_cython_6cygrpc_ReceiveCloseOnServerOperation},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc_ReceiveCloseOnServerOperation},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc_ReceiveCloseOnServerOperation_spec = {
+  "_cython.cygrpc.ReceiveCloseOnServerOperation",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_ReceiveCloseOnServerOperation),
+  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_7_cython_6cygrpc_ReceiveCloseOnServerOperation_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc_ReceiveCloseOnServerOperation = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""ReceiveCloseOnServerOperation", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_ReceiveCloseOnServerOperation), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc_ReceiveCloseOnServerOperation, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc_ReceiveCloseOnServerOperation, /*tp_traverse*/
+  __pyx_tp_clear_7_cython_6cygrpc_ReceiveCloseOnServerOperation, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_7_cython_6cygrpc_ReceiveCloseOnServerOperation, /*tp_methods*/
+  0, /*tp_members*/
+  __pyx_getsets_7_cython_6cygrpc_ReceiveCloseOnServerOperation, /*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_7_cython_6cygrpc_ReceiveCloseOnServerOperation, /*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_7_cython_6cygrpc_CallDetails(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc_CallDetails *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_7_cython_6cygrpc_CallDetails *)o);
+  new((void*)&(p->c_details)) grpc_call_details();
+  if (unlikely(__pyx_pw_7_cython_6cygrpc_11CallDetails_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_7_cython_6cygrpc_CallDetails(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc_CallDetails *p = (struct __pyx_obj_7_cython_6cygrpc_CallDetails *)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_7_cython_6cygrpc_CallDetails) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  {
+    PyObject *etype, *eval, *etb;
+    PyErr_Fetch(&etype, &eval, &etb);
+    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
+    __pyx_pw_7_cython_6cygrpc_11CallDetails_3__dealloc__(o);
+    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
+    PyErr_Restore(etype, eval, etb);
+  }
+  __Pyx_call_destructor(p->c_details);
+  #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_getprop_7_cython_6cygrpc_11CallDetails_method(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_11CallDetails_6method_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_11CallDetails_host(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_11CallDetails_4host_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_11CallDetails_deadline(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_11CallDetails_8deadline_1__get__(o);
+}
+
+static PyMethodDef __pyx_methods_7_cython_6cygrpc_CallDetails[] = {
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_11CallDetails_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_11CallDetails_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_7_cython_6cygrpc_CallDetails[] = {
+  {(char *)"method", __pyx_getprop_7_cython_6cygrpc_11CallDetails_method, 0, (char *)0, 0},
+  {(char *)"host", __pyx_getprop_7_cython_6cygrpc_11CallDetails_host, 0, (char *)0, 0},
+  {(char *)"deadline", __pyx_getprop_7_cython_6cygrpc_11CallDetails_deadline, 0, (char *)0, 0},
+  {0, 0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc_CallDetails_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc_CallDetails},
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc_CallDetails},
+  {Py_tp_getset, (void *)__pyx_getsets_7_cython_6cygrpc_CallDetails},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc_CallDetails},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc_CallDetails_spec = {
+  "_cython.cygrpc.CallDetails",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_CallDetails),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
+  __pyx_type_7_cython_6cygrpc_CallDetails_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc_CallDetails = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""CallDetails", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_CallDetails), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc_CallDetails, /*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_7_cython_6cygrpc_CallDetails, /*tp_methods*/
+  0, /*tp_members*/
+  __pyx_getsets_7_cython_6cygrpc_CallDetails, /*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_7_cython_6cygrpc_CallDetails, /*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_7_cython_6cygrpc_SslPemKeyCertPair(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc_SslPemKeyCertPair *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_7_cython_6cygrpc_SslPemKeyCertPair *)o);
+  new((void*)&(p->c_pair)) grpc_ssl_pem_key_cert_pair();
+  p->private_key = Py_None; Py_INCREF(Py_None);
+  p->certificate_chain = Py_None; Py_INCREF(Py_None);
+  if (unlikely(__pyx_pw_7_cython_6cygrpc_17SslPemKeyCertPair_1__cinit__(o, a, k) < 0)) goto bad;
+  return o;
+  bad:
+  Py_DECREF(o); o = 0;
+  return NULL;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc_SslPemKeyCertPair(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc_SslPemKeyCertPair *p = (struct __pyx_obj_7_cython_6cygrpc_SslPemKeyCertPair *)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_7_cython_6cygrpc_SslPemKeyCertPair) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  __Pyx_call_destructor(p->c_pair);
+  Py_CLEAR(p->private_key);
+  Py_CLEAR(p->certificate_chain);
+  #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_7_cython_6cygrpc_SslPemKeyCertPair(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc_SslPemKeyCertPair *p = (struct __pyx_obj_7_cython_6cygrpc_SslPemKeyCertPair *)o;
+  if (p->private_key) {
+    e = (*v)(p->private_key, a); if (e) return e;
+  }
+  if (p->certificate_chain) {
+    e = (*v)(p->certificate_chain, a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_7_cython_6cygrpc_SslPemKeyCertPair(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_7_cython_6cygrpc_SslPemKeyCertPair *p = (struct __pyx_obj_7_cython_6cygrpc_SslPemKeyCertPair *)o;
+  tmp = ((PyObject*)p->private_key);
+  p->private_key = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->certificate_chain);
+  p->certificate_chain = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_17SslPemKeyCertPair_private_key(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_17SslPemKeyCertPair_11private_key_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_17SslPemKeyCertPair_certificate_chain(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_17SslPemKeyCertPair_17certificate_chain_1__get__(o);
+}
+
+static PyMethodDef __pyx_methods_7_cython_6cygrpc_SslPemKeyCertPair[] = {
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_17SslPemKeyCertPair_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_17SslPemKeyCertPair_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_7_cython_6cygrpc_SslPemKeyCertPair[] = {
+  {(char *)"private_key", __pyx_getprop_7_cython_6cygrpc_17SslPemKeyCertPair_private_key, 0, (char *)0, 0},
+  {(char *)"certificate_chain", __pyx_getprop_7_cython_6cygrpc_17SslPemKeyCertPair_certificate_chain, 0, (char *)0, 0},
+  {0, 0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc_SslPemKeyCertPair_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc_SslPemKeyCertPair},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc_SslPemKeyCertPair},
+  {Py_tp_clear, (void *)__pyx_tp_clear_7_cython_6cygrpc_SslPemKeyCertPair},
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc_SslPemKeyCertPair},
+  {Py_tp_getset, (void *)__pyx_getsets_7_cython_6cygrpc_SslPemKeyCertPair},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc_SslPemKeyCertPair},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc_SslPemKeyCertPair_spec = {
+  "_cython.cygrpc.SslPemKeyCertPair",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_SslPemKeyCertPair),
+  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_7_cython_6cygrpc_SslPemKeyCertPair_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc_SslPemKeyCertPair = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""SslPemKeyCertPair", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_SslPemKeyCertPair), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc_SslPemKeyCertPair, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc_SslPemKeyCertPair, /*tp_traverse*/
+  __pyx_tp_clear_7_cython_6cygrpc_SslPemKeyCertPair, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_7_cython_6cygrpc_SslPemKeyCertPair, /*tp_methods*/
+  0, /*tp_members*/
+  __pyx_getsets_7_cython_6cygrpc_SslPemKeyCertPair, /*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_7_cython_6cygrpc_SslPemKeyCertPair, /*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_7_cython_6cygrpc_CompressionOptions(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc_CompressionOptions *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_7_cython_6cygrpc_CompressionOptions *)o);
+  new((void*)&(p->c_options)) grpc_compression_options();
+  if (unlikely(__pyx_pw_7_cython_6cygrpc_18CompressionOptions_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_7_cython_6cygrpc_CompressionOptions(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc_CompressionOptions *p = (struct __pyx_obj_7_cython_6cygrpc_CompressionOptions *)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_7_cython_6cygrpc_CompressionOptions) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  __Pyx_call_destructor(p->c_options);
+  #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_7_cython_6cygrpc_CompressionOptions[] = {
+  {"enable_algorithm", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_18CompressionOptions_3enable_algorithm, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"disable_algorithm", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_18CompressionOptions_5disable_algorithm, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"is_algorithm_enabled", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_18CompressionOptions_7is_algorithm_enabled, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"to_channel_arg", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_18CompressionOptions_9to_channel_arg, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_18CompressionOptions_11__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_18CompressionOptions_13__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc_CompressionOptions_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc_CompressionOptions},
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc_CompressionOptions},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc_CompressionOptions},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc_CompressionOptions_spec = {
+  "_cython.cygrpc.CompressionOptions",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_CompressionOptions),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
+  __pyx_type_7_cython_6cygrpc_CompressionOptions_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc_CompressionOptions = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""CompressionOptions", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_CompressionOptions), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc_CompressionOptions, /*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_7_cython_6cygrpc_CompressionOptions, /*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_7_cython_6cygrpc_CompressionOptions, /*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_7_cython_6cygrpc_Server __pyx_vtable_7_cython_6cygrpc_Server;
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_Server(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc_Server *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_7_cython_6cygrpc_Server *)o);
+  p->__pyx_vtab = __pyx_vtabptr_7_cython_6cygrpc_Server;
+  p->backup_shutdown_queue = ((struct __pyx_obj_7_cython_6cygrpc_CompletionQueue *)Py_None); Py_INCREF(Py_None);
+  p->references = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  p->registered_completion_queues = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  if (unlikely(__pyx_pw_7_cython_6cygrpc_6Server_1__cinit__(o, a, k) < 0)) goto bad;
+  return o;
+  bad:
+  Py_DECREF(o); o = 0;
+  return NULL;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc_Server(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc_Server *p = (struct __pyx_obj_7_cython_6cygrpc_Server *)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_7_cython_6cygrpc_Server) {
+      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_7_cython_6cygrpc_6Server_17__dealloc__(o);
+    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
+    PyErr_Restore(etype, eval, etb);
+  }
+  Py_CLEAR(p->backup_shutdown_queue);
+  Py_CLEAR(p->references);
+  Py_CLEAR(p->registered_completion_queues);
+  #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_7_cython_6cygrpc_Server(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc_Server *p = (struct __pyx_obj_7_cython_6cygrpc_Server *)o;
+  if (p->backup_shutdown_queue) {
+    e = (*v)(((PyObject *)p->backup_shutdown_queue), a); if (e) return e;
+  }
+  if (p->references) {
+    e = (*v)(p->references, a); if (e) return e;
+  }
+  if (p->registered_completion_queues) {
+    e = (*v)(p->registered_completion_queues, a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_7_cython_6cygrpc_Server(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_7_cython_6cygrpc_Server *p = (struct __pyx_obj_7_cython_6cygrpc_Server *)o;
+  tmp = ((PyObject*)p->backup_shutdown_queue);
+  p->backup_shutdown_queue = ((struct __pyx_obj_7_cython_6cygrpc_CompletionQueue *)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->references);
+  p->references = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->registered_completion_queues);
+  p->registered_completion_queues = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static PyMethodDef __pyx_methods_7_cython_6cygrpc_Server[] = {
+  {"request_call", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_6Server_3request_call, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"register_completion_queue", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_6Server_5register_completion_queue, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"start", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_6Server_7start, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7_cython_6cygrpc_6Server_6start},
+  {"add_http2_port", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_6Server_9add_http2_port, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"shutdown", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_6Server_11shutdown, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"cancel_all_calls", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_6Server_13cancel_all_calls, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"destroy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_6Server_15destroy, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_6Server_19__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_6Server_21__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc_Server_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc_Server},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc_Server},
+  {Py_tp_clear, (void *)__pyx_tp_clear_7_cython_6cygrpc_Server},
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc_Server},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc_Server},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc_Server_spec = {
+  "_cython.cygrpc.Server",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_Server),
+  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_7_cython_6cygrpc_Server_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc_Server = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""Server", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_Server), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc_Server, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc_Server, /*tp_traverse*/
+  __pyx_tp_clear_7_cython_6cygrpc_Server, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_7_cython_6cygrpc_Server, /*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_7_cython_6cygrpc_Server, /*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_7_cython_6cygrpc__Tag __pyx_vtable_7_cython_6cygrpc__Tag;
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc__Tag(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc__Tag *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_7_cython_6cygrpc__Tag *)o);
+  p->__pyx_vtab = __pyx_vtabptr_7_cython_6cygrpc__Tag;
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc__Tag(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_7_cython_6cygrpc__Tag) {
+      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_7_cython_6cygrpc__Tag[] = {
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_4_Tag_1__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_4_Tag_3__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc__Tag_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc__Tag},
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc__Tag},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc__Tag},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc__Tag_spec = {
+  "_cython.cygrpc._Tag",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc__Tag),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
+  __pyx_type_7_cython_6cygrpc__Tag_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc__Tag = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""_Tag", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc__Tag), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc__Tag, /*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_7_cython_6cygrpc__Tag, /*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_7_cython_6cygrpc__Tag, /*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_7_cython_6cygrpc__ConnectivityTag __pyx_vtable_7_cython_6cygrpc__ConnectivityTag;
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc__ConnectivityTag(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc__ConnectivityTag *p;
+  PyObject *o = __pyx_tp_new_7_cython_6cygrpc__Tag(t, a, k);
+  if (unlikely(!o)) return 0;
+  p = ((struct __pyx_obj_7_cython_6cygrpc__ConnectivityTag *)o);
+  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_7_cython_6cygrpc__Tag*)__pyx_vtabptr_7_cython_6cygrpc__ConnectivityTag;
+  p->_user_tag = Py_None; Py_INCREF(Py_None);
+  if (unlikely(__pyx_pw_7_cython_6cygrpc_16_ConnectivityTag_1__cinit__(o, a, k) < 0)) goto bad;
+  return o;
+  bad:
+  Py_DECREF(o); o = 0;
+  return NULL;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc__ConnectivityTag(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc__ConnectivityTag *p = (struct __pyx_obj_7_cython_6cygrpc__ConnectivityTag *)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_7_cython_6cygrpc__ConnectivityTag) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->_user_tag);
+  __pyx_tp_dealloc_7_cython_6cygrpc__Tag(o);
+}
+
+static int __pyx_tp_traverse_7_cython_6cygrpc__ConnectivityTag(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc__ConnectivityTag *p = (struct __pyx_obj_7_cython_6cygrpc__ConnectivityTag *)o;
+  e = ((likely(__pyx_ptype_7_cython_6cygrpc__Tag)) ? ((__pyx_ptype_7_cython_6cygrpc__Tag->tp_traverse) ? __pyx_ptype_7_cython_6cygrpc__Tag->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_7_cython_6cygrpc__ConnectivityTag)); if (e) return e;
+  if (p->_user_tag) {
+    e = (*v)(p->_user_tag, a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_7_cython_6cygrpc__ConnectivityTag(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_7_cython_6cygrpc__ConnectivityTag *p = (struct __pyx_obj_7_cython_6cygrpc__ConnectivityTag *)o;
+  if (likely(__pyx_ptype_7_cython_6cygrpc__Tag)) { if (__pyx_ptype_7_cython_6cygrpc__Tag->tp_clear) __pyx_ptype_7_cython_6cygrpc__Tag->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_7_cython_6cygrpc__ConnectivityTag);
+  tmp = ((PyObject*)p->_user_tag);
+  p->_user_tag = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_16_ConnectivityTag__user_tag(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_16_ConnectivityTag_9_user_tag_1__get__(o);
+}
+
+static PyMethodDef __pyx_methods_7_cython_6cygrpc__ConnectivityTag[] = {
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16_ConnectivityTag_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16_ConnectivityTag_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_7_cython_6cygrpc__ConnectivityTag[] = {
+  {(char *)"_user_tag", __pyx_getprop_7_cython_6cygrpc_16_ConnectivityTag__user_tag, 0, (char *)0, 0},
+  {0, 0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc__ConnectivityTag_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc__ConnectivityTag},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc__ConnectivityTag},
+  {Py_tp_clear, (void *)__pyx_tp_clear_7_cython_6cygrpc__ConnectivityTag},
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc__ConnectivityTag},
+  {Py_tp_getset, (void *)__pyx_getsets_7_cython_6cygrpc__ConnectivityTag},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc__ConnectivityTag},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc__ConnectivityTag_spec = {
+  "_cython.cygrpc._ConnectivityTag",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc__ConnectivityTag),
+  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_7_cython_6cygrpc__ConnectivityTag_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc__ConnectivityTag = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""_ConnectivityTag", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc__ConnectivityTag), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc__ConnectivityTag, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc__ConnectivityTag, /*tp_traverse*/
+  __pyx_tp_clear_7_cython_6cygrpc__ConnectivityTag, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_7_cython_6cygrpc__ConnectivityTag, /*tp_methods*/
+  0, /*tp_members*/
+  __pyx_getsets_7_cython_6cygrpc__ConnectivityTag, /*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_7_cython_6cygrpc__ConnectivityTag, /*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_7_cython_6cygrpc__RequestCallTag __pyx_vtable_7_cython_6cygrpc__RequestCallTag;
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc__RequestCallTag(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc__RequestCallTag *p;
+  PyObject *o = __pyx_tp_new_7_cython_6cygrpc__Tag(t, a, k);
+  if (unlikely(!o)) return 0;
+  p = ((struct __pyx_obj_7_cython_6cygrpc__RequestCallTag *)o);
+  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_7_cython_6cygrpc__Tag*)__pyx_vtabptr_7_cython_6cygrpc__RequestCallTag;
+  new((void*)&(p->c_invocation_metadata)) grpc_metadata_array();
+  p->_user_tag = Py_None; Py_INCREF(Py_None);
+  p->call = ((struct __pyx_obj_7_cython_6cygrpc_Call *)Py_None); Py_INCREF(Py_None);
+  p->call_details = ((struct __pyx_obj_7_cython_6cygrpc_CallDetails *)Py_None); Py_INCREF(Py_None);
+  if (unlikely(__pyx_pw_7_cython_6cygrpc_15_RequestCallTag_1__cinit__(o, a, k) < 0)) goto bad;
+  return o;
+  bad:
+  Py_DECREF(o); o = 0;
+  return NULL;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc__RequestCallTag(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc__RequestCallTag *p = (struct __pyx_obj_7_cython_6cygrpc__RequestCallTag *)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_7_cython_6cygrpc__RequestCallTag) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  __Pyx_call_destructor(p->c_invocation_metadata);
+  Py_CLEAR(p->_user_tag);
+  Py_CLEAR(p->call);
+  Py_CLEAR(p->call_details);
+  __pyx_tp_dealloc_7_cython_6cygrpc__Tag(o);
+}
+
+static int __pyx_tp_traverse_7_cython_6cygrpc__RequestCallTag(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc__RequestCallTag *p = (struct __pyx_obj_7_cython_6cygrpc__RequestCallTag *)o;
+  e = ((likely(__pyx_ptype_7_cython_6cygrpc__Tag)) ? ((__pyx_ptype_7_cython_6cygrpc__Tag->tp_traverse) ? __pyx_ptype_7_cython_6cygrpc__Tag->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_7_cython_6cygrpc__RequestCallTag)); if (e) return e;
+  if (p->_user_tag) {
+    e = (*v)(p->_user_tag, a); if (e) return e;
+  }
+  if (p->call) {
+    e = (*v)(((PyObject *)p->call), a); if (e) return e;
+  }
+  if (p->call_details) {
+    e = (*v)(((PyObject *)p->call_details), a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_7_cython_6cygrpc__RequestCallTag(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_7_cython_6cygrpc__RequestCallTag *p = (struct __pyx_obj_7_cython_6cygrpc__RequestCallTag *)o;
+  if (likely(__pyx_ptype_7_cython_6cygrpc__Tag)) { if (__pyx_ptype_7_cython_6cygrpc__Tag->tp_clear) __pyx_ptype_7_cython_6cygrpc__Tag->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_7_cython_6cygrpc__RequestCallTag);
+  tmp = ((PyObject*)p->_user_tag);
+  p->_user_tag = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->call);
+  p->call = ((struct __pyx_obj_7_cython_6cygrpc_Call *)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->call_details);
+  p->call_details = ((struct __pyx_obj_7_cython_6cygrpc_CallDetails *)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_15_RequestCallTag__user_tag(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_15_RequestCallTag_9_user_tag_1__get__(o);
+}
+
+static PyMethodDef __pyx_methods_7_cython_6cygrpc__RequestCallTag[] = {
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_15_RequestCallTag_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_15_RequestCallTag_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_7_cython_6cygrpc__RequestCallTag[] = {
+  {(char *)"_user_tag", __pyx_getprop_7_cython_6cygrpc_15_RequestCallTag__user_tag, 0, (char *)0, 0},
+  {0, 0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc__RequestCallTag_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc__RequestCallTag},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc__RequestCallTag},
+  {Py_tp_clear, (void *)__pyx_tp_clear_7_cython_6cygrpc__RequestCallTag},
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc__RequestCallTag},
+  {Py_tp_getset, (void *)__pyx_getsets_7_cython_6cygrpc__RequestCallTag},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc__RequestCallTag},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc__RequestCallTag_spec = {
+  "_cython.cygrpc._RequestCallTag",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc__RequestCallTag),
+  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_7_cython_6cygrpc__RequestCallTag_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc__RequestCallTag = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""_RequestCallTag", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc__RequestCallTag), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc__RequestCallTag, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc__RequestCallTag, /*tp_traverse*/
+  __pyx_tp_clear_7_cython_6cygrpc__RequestCallTag, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_7_cython_6cygrpc__RequestCallTag, /*tp_methods*/
+  0, /*tp_members*/
+  __pyx_getsets_7_cython_6cygrpc__RequestCallTag, /*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_7_cython_6cygrpc__RequestCallTag, /*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_7_cython_6cygrpc__BatchOperationTag __pyx_vtable_7_cython_6cygrpc__BatchOperationTag;
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc__BatchOperationTag(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc__BatchOperationTag *p;
+  PyObject *o = __pyx_tp_new_7_cython_6cygrpc__Tag(t, a, k);
+  if (unlikely(!o)) return 0;
+  p = ((struct __pyx_obj_7_cython_6cygrpc__BatchOperationTag *)o);
+  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_7_cython_6cygrpc__Tag*)__pyx_vtabptr_7_cython_6cygrpc__BatchOperationTag;
+  p->_user_tag = Py_None; Py_INCREF(Py_None);
+  p->_operations = Py_None; Py_INCREF(Py_None);
+  p->_retained_call = Py_None; Py_INCREF(Py_None);
+  if (unlikely(__pyx_pw_7_cython_6cygrpc_18_BatchOperationTag_1__cinit__(o, a, k) < 0)) goto bad;
+  return o;
+  bad:
+  Py_DECREF(o); o = 0;
+  return NULL;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc__BatchOperationTag(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc__BatchOperationTag *p = (struct __pyx_obj_7_cython_6cygrpc__BatchOperationTag *)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_7_cython_6cygrpc__BatchOperationTag) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->_user_tag);
+  Py_CLEAR(p->_operations);
+  Py_CLEAR(p->_retained_call);
+  __pyx_tp_dealloc_7_cython_6cygrpc__Tag(o);
+}
+
+static int __pyx_tp_traverse_7_cython_6cygrpc__BatchOperationTag(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc__BatchOperationTag *p = (struct __pyx_obj_7_cython_6cygrpc__BatchOperationTag *)o;
+  e = ((likely(__pyx_ptype_7_cython_6cygrpc__Tag)) ? ((__pyx_ptype_7_cython_6cygrpc__Tag->tp_traverse) ? __pyx_ptype_7_cython_6cygrpc__Tag->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_7_cython_6cygrpc__BatchOperationTag)); if (e) return e;
+  if (p->_user_tag) {
+    e = (*v)(p->_user_tag, a); if (e) return e;
+  }
+  if (p->_operations) {
+    e = (*v)(p->_operations, a); if (e) return e;
+  }
+  if (p->_retained_call) {
+    e = (*v)(p->_retained_call, a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_7_cython_6cygrpc__BatchOperationTag(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_7_cython_6cygrpc__BatchOperationTag *p = (struct __pyx_obj_7_cython_6cygrpc__BatchOperationTag *)o;
+  if (likely(__pyx_ptype_7_cython_6cygrpc__Tag)) { if (__pyx_ptype_7_cython_6cygrpc__Tag->tp_clear) __pyx_ptype_7_cython_6cygrpc__Tag->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_7_cython_6cygrpc__BatchOperationTag);
+  tmp = ((PyObject*)p->_user_tag);
+  p->_user_tag = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->_operations);
+  p->_operations = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->_retained_call);
+  p->_retained_call = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_18_BatchOperationTag__operations(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_18_BatchOperationTag_11_operations_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_18_BatchOperationTag__retained_call(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_18_BatchOperationTag_14_retained_call_1__get__(o);
+}
+
+static PyMethodDef __pyx_methods_7_cython_6cygrpc__BatchOperationTag[] = {
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_18_BatchOperationTag_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_18_BatchOperationTag_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_7_cython_6cygrpc__BatchOperationTag[] = {
+  {(char *)"_operations", __pyx_getprop_7_cython_6cygrpc_18_BatchOperationTag__operations, 0, (char *)0, 0},
+  {(char *)"_retained_call", __pyx_getprop_7_cython_6cygrpc_18_BatchOperationTag__retained_call, 0, (char *)0, 0},
+  {0, 0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc__BatchOperationTag_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc__BatchOperationTag},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc__BatchOperationTag},
+  {Py_tp_clear, (void *)__pyx_tp_clear_7_cython_6cygrpc__BatchOperationTag},
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc__BatchOperationTag},
+  {Py_tp_getset, (void *)__pyx_getsets_7_cython_6cygrpc__BatchOperationTag},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc__BatchOperationTag},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc__BatchOperationTag_spec = {
+  "_cython.cygrpc._BatchOperationTag",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc__BatchOperationTag),
+  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_7_cython_6cygrpc__BatchOperationTag_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc__BatchOperationTag = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""_BatchOperationTag", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc__BatchOperationTag), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc__BatchOperationTag, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc__BatchOperationTag, /*tp_traverse*/
+  __pyx_tp_clear_7_cython_6cygrpc__BatchOperationTag, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_7_cython_6cygrpc__BatchOperationTag, /*tp_methods*/
+  0, /*tp_members*/
+  __pyx_getsets_7_cython_6cygrpc__BatchOperationTag, /*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_7_cython_6cygrpc__BatchOperationTag, /*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_7_cython_6cygrpc__ServerShutdownTag __pyx_vtable_7_cython_6cygrpc__ServerShutdownTag;
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc__ServerShutdownTag(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc__ServerShutdownTag *p;
+  PyObject *o = __pyx_tp_new_7_cython_6cygrpc__Tag(t, a, k);
+  if (unlikely(!o)) return 0;
+  p = ((struct __pyx_obj_7_cython_6cygrpc__ServerShutdownTag *)o);
+  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_7_cython_6cygrpc__Tag*)__pyx_vtabptr_7_cython_6cygrpc__ServerShutdownTag;
+  p->_user_tag = Py_None; Py_INCREF(Py_None);
+  p->_shutting_down_server = ((struct __pyx_obj_7_cython_6cygrpc_Server *)Py_None); Py_INCREF(Py_None);
+  if (unlikely(__pyx_pw_7_cython_6cygrpc_18_ServerShutdownTag_1__cinit__(o, a, k) < 0)) goto bad;
+  return o;
+  bad:
+  Py_DECREF(o); o = 0;
+  return NULL;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc__ServerShutdownTag(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc__ServerShutdownTag *p = (struct __pyx_obj_7_cython_6cygrpc__ServerShutdownTag *)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_7_cython_6cygrpc__ServerShutdownTag) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->_user_tag);
+  Py_CLEAR(p->_shutting_down_server);
+  __pyx_tp_dealloc_7_cython_6cygrpc__Tag(o);
+}
+
+static int __pyx_tp_traverse_7_cython_6cygrpc__ServerShutdownTag(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc__ServerShutdownTag *p = (struct __pyx_obj_7_cython_6cygrpc__ServerShutdownTag *)o;
+  e = ((likely(__pyx_ptype_7_cython_6cygrpc__Tag)) ? ((__pyx_ptype_7_cython_6cygrpc__Tag->tp_traverse) ? __pyx_ptype_7_cython_6cygrpc__Tag->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_7_cython_6cygrpc__ServerShutdownTag)); if (e) return e;
+  if (p->_user_tag) {
+    e = (*v)(p->_user_tag, a); if (e) return e;
+  }
+  if (p->_shutting_down_server) {
+    e = (*v)(((PyObject *)p->_shutting_down_server), a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_7_cython_6cygrpc__ServerShutdownTag(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_7_cython_6cygrpc__ServerShutdownTag *p = (struct __pyx_obj_7_cython_6cygrpc__ServerShutdownTag *)o;
+  if (likely(__pyx_ptype_7_cython_6cygrpc__Tag)) { if (__pyx_ptype_7_cython_6cygrpc__Tag->tp_clear) __pyx_ptype_7_cython_6cygrpc__Tag->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_7_cython_6cygrpc__ServerShutdownTag);
+  tmp = ((PyObject*)p->_user_tag);
+  p->_user_tag = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->_shutting_down_server);
+  p->_shutting_down_server = ((struct __pyx_obj_7_cython_6cygrpc_Server *)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_18_ServerShutdownTag__user_tag(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_18_ServerShutdownTag_9_user_tag_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_18_ServerShutdownTag__shutting_down_server(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_18_ServerShutdownTag_21_shutting_down_server_1__get__(o);
+}
+
+static PyMethodDef __pyx_methods_7_cython_6cygrpc__ServerShutdownTag[] = {
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_18_ServerShutdownTag_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_18_ServerShutdownTag_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_7_cython_6cygrpc__ServerShutdownTag[] = {
+  {(char *)"_user_tag", __pyx_getprop_7_cython_6cygrpc_18_ServerShutdownTag__user_tag, 0, (char *)0, 0},
+  {(char *)"_shutting_down_server", __pyx_getprop_7_cython_6cygrpc_18_ServerShutdownTag__shutting_down_server, 0, (char *)0, 0},
+  {0, 0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc__ServerShutdownTag_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc__ServerShutdownTag},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc__ServerShutdownTag},
+  {Py_tp_clear, (void *)__pyx_tp_clear_7_cython_6cygrpc__ServerShutdownTag},
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc__ServerShutdownTag},
+  {Py_tp_getset, (void *)__pyx_getsets_7_cython_6cygrpc__ServerShutdownTag},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc__ServerShutdownTag},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc__ServerShutdownTag_spec = {
+  "_cython.cygrpc._ServerShutdownTag",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc__ServerShutdownTag),
+  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_7_cython_6cygrpc__ServerShutdownTag_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc__ServerShutdownTag = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""_ServerShutdownTag", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc__ServerShutdownTag), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc__ServerShutdownTag, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc__ServerShutdownTag, /*tp_traverse*/
+  __pyx_tp_clear_7_cython_6cygrpc__ServerShutdownTag, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_7_cython_6cygrpc__ServerShutdownTag, /*tp_methods*/
+  0, /*tp_members*/
+  __pyx_getsets_7_cython_6cygrpc__ServerShutdownTag, /*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_7_cython_6cygrpc__ServerShutdownTag, /*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_7_cython_6cygrpc_BaseCompletionQueue __pyx_vtable_7_cython_6cygrpc_BaseCompletionQueue;
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_BaseCompletionQueue(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc_BaseCompletionQueue *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_7_cython_6cygrpc_BaseCompletionQueue *)o);
+  p->__pyx_vtab = __pyx_vtabptr_7_cython_6cygrpc_BaseCompletionQueue;
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc_BaseCompletionQueue(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_7_cython_6cygrpc_BaseCompletionQueue) {
+      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_7_cython_6cygrpc_BaseCompletionQueue[] = {
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_19BaseCompletionQueue_1__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_19BaseCompletionQueue_3__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc_BaseCompletionQueue_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc_BaseCompletionQueue},
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc_BaseCompletionQueue},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc_BaseCompletionQueue},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc_BaseCompletionQueue_spec = {
+  "_cython.cygrpc.BaseCompletionQueue",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_BaseCompletionQueue),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
+  __pyx_type_7_cython_6cygrpc_BaseCompletionQueue_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc_BaseCompletionQueue = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""BaseCompletionQueue", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_BaseCompletionQueue), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc_BaseCompletionQueue, /*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_7_cython_6cygrpc_BaseCompletionQueue, /*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_7_cython_6cygrpc_BaseCompletionQueue, /*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_7_cython_6cygrpc__BoundEventLoop(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc__BoundEventLoop *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_7_cython_6cygrpc__BoundEventLoop *)o);
+  p->loop = Py_None; Py_INCREF(Py_None);
+  p->read_socket = Py_None; Py_INCREF(Py_None);
+  if (unlikely(__pyx_pw_7_cython_6cygrpc_15_BoundEventLoop_1__cinit__(o, a, k) < 0)) goto bad;
+  return o;
+  bad:
+  Py_DECREF(o); o = 0;
+  return NULL;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc__BoundEventLoop(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc__BoundEventLoop *p = (struct __pyx_obj_7_cython_6cygrpc__BoundEventLoop *)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_7_cython_6cygrpc__BoundEventLoop) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->loop);
+  Py_CLEAR(p->read_socket);
+  #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_7_cython_6cygrpc__BoundEventLoop(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc__BoundEventLoop *p = (struct __pyx_obj_7_cython_6cygrpc__BoundEventLoop *)o;
+  if (p->loop) {
+    e = (*v)(p->loop, a); if (e) return e;
+  }
+  if (p->read_socket) {
+    e = (*v)(p->read_socket, a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_7_cython_6cygrpc__BoundEventLoop(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_7_cython_6cygrpc__BoundEventLoop *p = (struct __pyx_obj_7_cython_6cygrpc__BoundEventLoop *)o;
+  tmp = ((PyObject*)p->loop);
+  p->loop = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->read_socket);
+  p->read_socket = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_15_BoundEventLoop_loop(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_15_BoundEventLoop_4loop_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_15_BoundEventLoop_read_socket(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_15_BoundEventLoop_11read_socket_1__get__(o);
+}
+
+static PyMethodDef __pyx_methods_7_cython_6cygrpc__BoundEventLoop[] = {
+  {"close", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_15_BoundEventLoop_3close, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_15_BoundEventLoop_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_15_BoundEventLoop_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_7_cython_6cygrpc__BoundEventLoop[] = {
+  {(char *)"loop", __pyx_getprop_7_cython_6cygrpc_15_BoundEventLoop_loop, 0, (char *)0, 0},
+  {(char *)"read_socket", __pyx_getprop_7_cython_6cygrpc_15_BoundEventLoop_read_socket, 0, (char *)0, 0},
+  {0, 0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc__BoundEventLoop_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc__BoundEventLoop},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc__BoundEventLoop},
+  {Py_tp_clear, (void *)__pyx_tp_clear_7_cython_6cygrpc__BoundEventLoop},
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc__BoundEventLoop},
+  {Py_tp_getset, (void *)__pyx_getsets_7_cython_6cygrpc__BoundEventLoop},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc__BoundEventLoop},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc__BoundEventLoop_spec = {
+  "_cython.cygrpc._BoundEventLoop",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc__BoundEventLoop),
+  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_7_cython_6cygrpc__BoundEventLoop_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc__BoundEventLoop = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""_BoundEventLoop", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc__BoundEventLoop), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc__BoundEventLoop, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc__BoundEventLoop, /*tp_traverse*/
+  __pyx_tp_clear_7_cython_6cygrpc__BoundEventLoop, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_7_cython_6cygrpc__BoundEventLoop, /*tp_methods*/
+  0, /*tp_members*/
+  __pyx_getsets_7_cython_6cygrpc__BoundEventLoop, /*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_7_cython_6cygrpc__BoundEventLoop, /*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_7_cython_6cygrpc_PollerCompletionQueue __pyx_vtable_7_cython_6cygrpc_PollerCompletionQueue;
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_PollerCompletionQueue(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc_PollerCompletionQueue *p;
+  PyObject *o = __pyx_tp_new_7_cython_6cygrpc_BaseCompletionQueue(t, a, k);
+  if (unlikely(!o)) return 0;
+  p = ((struct __pyx_obj_7_cython_6cygrpc_PollerCompletionQueue *)o);
+  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_7_cython_6cygrpc_BaseCompletionQueue*)__pyx_vtabptr_7_cython_6cygrpc_PollerCompletionQueue;
+  new((void*)&(p->_queue)) __pyx_t_7_cython_6cygrpc_cpp_event_queue();
+  new((void*)&(p->_queue_mutex)) std::mutex();
+  p->_poller_thread = Py_None; Py_INCREF(Py_None);
+  p->_read_socket = Py_None; Py_INCREF(Py_None);
+  p->_write_socket = Py_None; Py_INCREF(Py_None);
+  p->_loops = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  if (unlikely(__pyx_pw_7_cython_6cygrpc_21PollerCompletionQueue_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_7_cython_6cygrpc_PollerCompletionQueue(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc_PollerCompletionQueue *p = (struct __pyx_obj_7_cython_6cygrpc_PollerCompletionQueue *)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_7_cython_6cygrpc_PollerCompletionQueue) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  __Pyx_call_destructor(p->_queue);
+  __Pyx_call_destructor(p->_queue_mutex);
+  Py_CLEAR(p->_poller_thread);
+  Py_CLEAR(p->_read_socket);
+  Py_CLEAR(p->_write_socket);
+  Py_CLEAR(p->_loops);
+  __pyx_tp_dealloc_7_cython_6cygrpc_BaseCompletionQueue(o);
+}
+
+static int __pyx_tp_traverse_7_cython_6cygrpc_PollerCompletionQueue(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc_PollerCompletionQueue *p = (struct __pyx_obj_7_cython_6cygrpc_PollerCompletionQueue *)o;
+  e = ((likely(__pyx_ptype_7_cython_6cygrpc_BaseCompletionQueue)) ? ((__pyx_ptype_7_cython_6cygrpc_BaseCompletionQueue->tp_traverse) ? __pyx_ptype_7_cython_6cygrpc_BaseCompletionQueue->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_7_cython_6cygrpc_PollerCompletionQueue)); if (e) return e;
+  if (p->_poller_thread) {
+    e = (*v)(p->_poller_thread, a); if (e) return e;
+  }
+  if (p->_read_socket) {
+    e = (*v)(p->_read_socket, a); if (e) return e;
+  }
+  if (p->_write_socket) {
+    e = (*v)(p->_write_socket, a); if (e) return e;
+  }
+  if (p->_loops) {
+    e = (*v)(p->_loops, a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_7_cython_6cygrpc_PollerCompletionQueue(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_7_cython_6cygrpc_PollerCompletionQueue *p = (struct __pyx_obj_7_cython_6cygrpc_PollerCompletionQueue *)o;
+  if (likely(__pyx_ptype_7_cython_6cygrpc_BaseCompletionQueue)) { if (__pyx_ptype_7_cython_6cygrpc_BaseCompletionQueue->tp_clear) __pyx_ptype_7_cython_6cygrpc_BaseCompletionQueue->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_7_cython_6cygrpc_PollerCompletionQueue);
+  tmp = ((PyObject*)p->_poller_thread);
+  p->_poller_thread = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->_read_socket);
+  p->_read_socket = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->_write_socket);
+  p->_write_socket = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->_loops);
+  p->_loops = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static PyMethodDef __pyx_methods_7_cython_6cygrpc_PollerCompletionQueue[] = {
+  {"bind_loop", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_21PollerCompletionQueue_3bind_loop, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"_poll_wrapper", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_21PollerCompletionQueue_5_poll_wrapper, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"_handle_events", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_21PollerCompletionQueue_7_handle_events, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_21PollerCompletionQueue_9__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_21PollerCompletionQueue_11__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc_PollerCompletionQueue_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc_PollerCompletionQueue},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc_PollerCompletionQueue},
+  {Py_tp_clear, (void *)__pyx_tp_clear_7_cython_6cygrpc_PollerCompletionQueue},
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc_PollerCompletionQueue},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc_PollerCompletionQueue},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc_PollerCompletionQueue_spec = {
+  "_cython.cygrpc.PollerCompletionQueue",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_PollerCompletionQueue),
+  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_7_cython_6cygrpc_PollerCompletionQueue_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc_PollerCompletionQueue = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""PollerCompletionQueue", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_PollerCompletionQueue), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc_PollerCompletionQueue, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc_PollerCompletionQueue, /*tp_traverse*/
+  __pyx_tp_clear_7_cython_6cygrpc_PollerCompletionQueue, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_7_cython_6cygrpc_PollerCompletionQueue, /*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_7_cython_6cygrpc_PollerCompletionQueue, /*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_7_cython_6cygrpc_AioRpcStatus __pyx_vtable_7_cython_6cygrpc_AioRpcStatus;
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_AioRpcStatus(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *p;
+  PyObject *o = __Pyx_PyType_GetSlot((&((PyTypeObject*)PyExc_Exception)[0]), tp_new, newfunc)(t, a, k);
+  if (unlikely(!o)) return 0;
+  p = ((struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *)o);
+  p->__pyx_vtab = __pyx_vtabptr_7_cython_6cygrpc_AioRpcStatus;
+  p->_details = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  p->_trailing_metadata = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  p->_debug_error_string = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  if (unlikely(__pyx_pw_7_cython_6cygrpc_12AioRpcStatus_1__cinit__(o, a, k) < 0)) goto bad;
+  return o;
+  bad:
+  Py_DECREF(o); o = 0;
+  return NULL;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc_AioRpcStatus(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *p = (struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *)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_7_cython_6cygrpc_AioRpcStatus) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->_details);
+  Py_CLEAR(p->_trailing_metadata);
+  Py_CLEAR(p->_debug_error_string);
+  PyObject_GC_Track(o);
+  __Pyx_PyType_GetSlot((&((PyTypeObject*)PyExc_Exception)[0]), tp_dealloc, destructor)(o);
+}
+
+static int __pyx_tp_traverse_7_cython_6cygrpc_AioRpcStatus(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *p = (struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *)o;
+  if (!(&((PyTypeObject*)PyExc_Exception)[0])->tp_traverse); else { e = (&((PyTypeObject*)PyExc_Exception)[0])->tp_traverse(o,v,a); if (e) return e; }
+  if (p->_trailing_metadata) {
+    e = (*v)(p->_trailing_metadata, a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_7_cython_6cygrpc_AioRpcStatus(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *p = (struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *)o;
+  if (!(&((PyTypeObject*)PyExc_Exception)[0])->tp_clear); else (&((PyTypeObject*)PyExc_Exception)[0])->tp_clear(o);
+  tmp = ((PyObject*)p->_trailing_metadata);
+  p->_trailing_metadata = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_12AioRpcStatus__code(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_12AioRpcStatus_5_code_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_12AioRpcStatus__details(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_12AioRpcStatus_8_details_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_12AioRpcStatus__trailing_metadata(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_12AioRpcStatus_18_trailing_metadata_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_12AioRpcStatus__debug_error_string(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_12AioRpcStatus_19_debug_error_string_1__get__(o);
+}
+
+static PyMethodDef __pyx_methods_7_cython_6cygrpc_AioRpcStatus[] = {
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_12AioRpcStatus_11__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_12AioRpcStatus_13__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_7_cython_6cygrpc_AioRpcStatus[] = {
+  {(char *)"_code", __pyx_getprop_7_cython_6cygrpc_12AioRpcStatus__code, 0, (char *)0, 0},
+  {(char *)"_details", __pyx_getprop_7_cython_6cygrpc_12AioRpcStatus__details, 0, (char *)0, 0},
+  {(char *)"_trailing_metadata", __pyx_getprop_7_cython_6cygrpc_12AioRpcStatus__trailing_metadata, 0, (char *)0, 0},
+  {(char *)"_debug_error_string", __pyx_getprop_7_cython_6cygrpc_12AioRpcStatus__debug_error_string, 0, (char *)0, 0},
+  {0, 0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc_AioRpcStatus_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc_AioRpcStatus},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc_AioRpcStatus},
+  {Py_tp_clear, (void *)__pyx_tp_clear_7_cython_6cygrpc_AioRpcStatus},
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc_AioRpcStatus},
+  {Py_tp_getset, (void *)__pyx_getsets_7_cython_6cygrpc_AioRpcStatus},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc_AioRpcStatus},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc_AioRpcStatus_spec = {
+  "_cython.cygrpc.AioRpcStatus",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus),
+  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_7_cython_6cygrpc_AioRpcStatus_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc_AioRpcStatus = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""AioRpcStatus", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc_AioRpcStatus, /*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_7_cython_6cygrpc_AioRpcStatus, /*tp_traverse*/
+  __pyx_tp_clear_7_cython_6cygrpc_AioRpcStatus, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_7_cython_6cygrpc_AioRpcStatus, /*tp_methods*/
+  0, /*tp_members*/
+  __pyx_getsets_7_cython_6cygrpc_AioRpcStatus, /*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_7_cython_6cygrpc_AioRpcStatus, /*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_7_cython_6cygrpc__AioState(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc__AioState *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_7_cython_6cygrpc__AioState *)o);
+  p->lock = Py_None; Py_INCREF(Py_None);
+  p->engine = Py_None; Py_INCREF(Py_None);
+  p->cq = ((struct __pyx_obj_7_cython_6cygrpc_BaseCompletionQueue *)Py_None); Py_INCREF(Py_None);
+  if (unlikely(__pyx_pw_7_cython_6cygrpc_9_AioState_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_7_cython_6cygrpc__AioState(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc__AioState *p = (struct __pyx_obj_7_cython_6cygrpc__AioState *)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_7_cython_6cygrpc__AioState) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->lock);
+  Py_CLEAR(p->engine);
+  Py_CLEAR(p->cq);
+  #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_7_cython_6cygrpc__AioState(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc__AioState *p = (struct __pyx_obj_7_cython_6cygrpc__AioState *)o;
+  if (p->lock) {
+    e = (*v)(p->lock, a); if (e) return e;
+  }
+  if (p->engine) {
+    e = (*v)(p->engine, a); if (e) return e;
+  }
+  if (p->cq) {
+    e = (*v)(((PyObject *)p->cq), a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_7_cython_6cygrpc__AioState(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_7_cython_6cygrpc__AioState *p = (struct __pyx_obj_7_cython_6cygrpc__AioState *)o;
+  tmp = ((PyObject*)p->lock);
+  p->lock = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->engine);
+  p->engine = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->cq);
+  p->cq = ((struct __pyx_obj_7_cython_6cygrpc_BaseCompletionQueue *)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static PyMethodDef __pyx_methods_7_cython_6cygrpc__AioState[] = {
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_9_AioState_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_9_AioState_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc__AioState_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc__AioState},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc__AioState},
+  {Py_tp_clear, (void *)__pyx_tp_clear_7_cython_6cygrpc__AioState},
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc__AioState},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc__AioState},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc__AioState_spec = {
+  "_cython.cygrpc._AioState",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc__AioState),
+  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_7_cython_6cygrpc__AioState_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc__AioState = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""_AioState", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc__AioState), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc__AioState, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc__AioState, /*tp_traverse*/
+  __pyx_tp_clear_7_cython_6cygrpc__AioState, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_7_cython_6cygrpc__AioState, /*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_7_cython_6cygrpc__AioState, /*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_7_cython_6cygrpc_CallbackFailureHandler __pyx_vtable_7_cython_6cygrpc_CallbackFailureHandler;
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_CallbackFailureHandler(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc_CallbackFailureHandler *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_7_cython_6cygrpc_CallbackFailureHandler *)o);
+  p->__pyx_vtab = __pyx_vtabptr_7_cython_6cygrpc_CallbackFailureHandler;
+  p->_core_function_name = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  p->_error_details = Py_None; Py_INCREF(Py_None);
+  p->_exception_type = Py_None; Py_INCREF(Py_None);
+  if (unlikely(__pyx_pw_7_cython_6cygrpc_22CallbackFailureHandler_1__cinit__(o, a, k) < 0)) goto bad;
+  return o;
+  bad:
+  Py_DECREF(o); o = 0;
+  return NULL;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc_CallbackFailureHandler(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc_CallbackFailureHandler *p = (struct __pyx_obj_7_cython_6cygrpc_CallbackFailureHandler *)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_7_cython_6cygrpc_CallbackFailureHandler) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->_core_function_name);
+  Py_CLEAR(p->_error_details);
+  Py_CLEAR(p->_exception_type);
+  #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_7_cython_6cygrpc_CallbackFailureHandler(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc_CallbackFailureHandler *p = (struct __pyx_obj_7_cython_6cygrpc_CallbackFailureHandler *)o;
+  if (p->_error_details) {
+    e = (*v)(p->_error_details, a); if (e) return e;
+  }
+  if (p->_exception_type) {
+    e = (*v)(p->_exception_type, a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_7_cython_6cygrpc_CallbackFailureHandler(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_7_cython_6cygrpc_CallbackFailureHandler *p = (struct __pyx_obj_7_cython_6cygrpc_CallbackFailureHandler *)o;
+  tmp = ((PyObject*)p->_error_details);
+  p->_error_details = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->_exception_type);
+  p->_exception_type = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static PyMethodDef __pyx_methods_7_cython_6cygrpc_CallbackFailureHandler[] = {
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_22CallbackFailureHandler_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_22CallbackFailureHandler_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc_CallbackFailureHandler_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc_CallbackFailureHandler},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc_CallbackFailureHandler},
+  {Py_tp_clear, (void *)__pyx_tp_clear_7_cython_6cygrpc_CallbackFailureHandler},
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc_CallbackFailureHandler},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc_CallbackFailureHandler},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc_CallbackFailureHandler_spec = {
+  "_cython.cygrpc.CallbackFailureHandler",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_CallbackFailureHandler),
+  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_7_cython_6cygrpc_CallbackFailureHandler_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc_CallbackFailureHandler = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""CallbackFailureHandler", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_CallbackFailureHandler), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc_CallbackFailureHandler, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc_CallbackFailureHandler, /*tp_traverse*/
+  __pyx_tp_clear_7_cython_6cygrpc_CallbackFailureHandler, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_7_cython_6cygrpc_CallbackFailureHandler, /*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_7_cython_6cygrpc_CallbackFailureHandler, /*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_7_cython_6cygrpc_CallbackWrapper __pyx_vtable_7_cython_6cygrpc_CallbackWrapper;
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_CallbackWrapper(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc_CallbackWrapper *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_7_cython_6cygrpc_CallbackWrapper *)o);
+  p->__pyx_vtab = __pyx_vtabptr_7_cython_6cygrpc_CallbackWrapper;
+  new((void*)&(p->context)) struct __pyx_t_7_cython_6cygrpc_CallbackContext();
+  p->_reference_of_future = Py_None; Py_INCREF(Py_None);
+  p->_reference_of_failure_handler = Py_None; Py_INCREF(Py_None);
+  if (unlikely(__pyx_pw_7_cython_6cygrpc_15CallbackWrapper_1__cinit__(o, a, k) < 0)) goto bad;
+  return o;
+  bad:
+  Py_DECREF(o); o = 0;
+  return NULL;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc_CallbackWrapper(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc_CallbackWrapper *p = (struct __pyx_obj_7_cython_6cygrpc_CallbackWrapper *)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_7_cython_6cygrpc_CallbackWrapper) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  __Pyx_call_destructor(p->context);
+  Py_CLEAR(p->_reference_of_future);
+  Py_CLEAR(p->_reference_of_failure_handler);
+  #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_7_cython_6cygrpc_CallbackWrapper(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc_CallbackWrapper *p = (struct __pyx_obj_7_cython_6cygrpc_CallbackWrapper *)o;
+  if (p->_reference_of_future) {
+    e = (*v)(p->_reference_of_future, a); if (e) return e;
+  }
+  if (p->_reference_of_failure_handler) {
+    e = (*v)(p->_reference_of_failure_handler, a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_7_cython_6cygrpc_CallbackWrapper(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_7_cython_6cygrpc_CallbackWrapper *p = (struct __pyx_obj_7_cython_6cygrpc_CallbackWrapper *)o;
+  tmp = ((PyObject*)p->_reference_of_future);
+  p->_reference_of_future = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->_reference_of_failure_handler);
+  p->_reference_of_failure_handler = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static PyMethodDef __pyx_methods_7_cython_6cygrpc_CallbackWrapper[] = {
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_15CallbackWrapper_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_15CallbackWrapper_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc_CallbackWrapper_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc_CallbackWrapper},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc_CallbackWrapper},
+  {Py_tp_clear, (void *)__pyx_tp_clear_7_cython_6cygrpc_CallbackWrapper},
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc_CallbackWrapper},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc_CallbackWrapper},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc_CallbackWrapper_spec = {
+  "_cython.cygrpc.CallbackWrapper",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_CallbackWrapper),
+  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_7_cython_6cygrpc_CallbackWrapper_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc_CallbackWrapper = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""CallbackWrapper", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_CallbackWrapper), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc_CallbackWrapper, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc_CallbackWrapper, /*tp_traverse*/
+  __pyx_tp_clear_7_cython_6cygrpc_CallbackWrapper, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_7_cython_6cygrpc_CallbackWrapper, /*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_7_cython_6cygrpc_CallbackWrapper, /*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_7_cython_6cygrpc_GrpcCallWrapper(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_7_cython_6cygrpc_GrpcCallWrapper(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_7_cython_6cygrpc_GrpcCallWrapper) {
+      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
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc_GrpcCallWrapper_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc_GrpcCallWrapper},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc_GrpcCallWrapper},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc_GrpcCallWrapper_spec = {
+  "_cython.cygrpc.GrpcCallWrapper",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_GrpcCallWrapper),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_type_7_cython_6cygrpc_GrpcCallWrapper_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc_GrpcCallWrapper = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""GrpcCallWrapper", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_GrpcCallWrapper), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc_GrpcCallWrapper, /*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_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  0, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_7_cython_6cygrpc_GrpcCallWrapper, /*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_7_cython_6cygrpc__AioCall __pyx_vtable_7_cython_6cygrpc__AioCall;
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc__AioCall(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc__AioCall *p;
+  PyObject *o = __pyx_tp_new_7_cython_6cygrpc_GrpcCallWrapper(t, a, k);
+  if (unlikely(!o)) return 0;
+  p = ((struct __pyx_obj_7_cython_6cygrpc__AioCall *)o);
+  p->__pyx_vtab = __pyx_vtabptr_7_cython_6cygrpc__AioCall;
+  p->_channel = ((struct __pyx_obj_7_cython_6cygrpc_AioChannel *)Py_None); Py_INCREF(Py_None);
+  p->_references = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  p->_deadline = Py_None; Py_INCREF(Py_None);
+  p->_done_callbacks = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  p->_loop = Py_None; Py_INCREF(Py_None);
+  p->_status = ((struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *)Py_None); Py_INCREF(Py_None);
+  p->_initial_metadata = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  p->_waiters_status = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  p->_waiters_initial_metadata = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  if (unlikely(__pyx_pw_7_cython_6cygrpc_8_AioCall_1__cinit__(o, a, k) < 0)) goto bad;
+  return o;
+  bad:
+  Py_DECREF(o); o = 0;
+  return NULL;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc__AioCall(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc__AioCall *p = (struct __pyx_obj_7_cython_6cygrpc__AioCall *)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_7_cython_6cygrpc__AioCall) {
+      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_7_cython_6cygrpc_8_AioCall_3__dealloc__(o);
+    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
+    PyErr_Restore(etype, eval, etb);
+  }
+  Py_CLEAR(p->_channel);
+  Py_CLEAR(p->_references);
+  Py_CLEAR(p->_deadline);
+  Py_CLEAR(p->_done_callbacks);
+  Py_CLEAR(p->_loop);
+  Py_CLEAR(p->_status);
+  Py_CLEAR(p->_initial_metadata);
+  Py_CLEAR(p->_waiters_status);
+  Py_CLEAR(p->_waiters_initial_metadata);
+  __pyx_tp_dealloc_7_cython_6cygrpc_GrpcCallWrapper(o);
+}
+
+static int __pyx_tp_traverse_7_cython_6cygrpc__AioCall(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc__AioCall *p = (struct __pyx_obj_7_cython_6cygrpc__AioCall *)o;
+  e = ((likely(__pyx_ptype_7_cython_6cygrpc_GrpcCallWrapper)) ? ((__pyx_ptype_7_cython_6cygrpc_GrpcCallWrapper->tp_traverse) ? __pyx_ptype_7_cython_6cygrpc_GrpcCallWrapper->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_7_cython_6cygrpc__AioCall)); if (e) return e;
+  if (p->_channel) {
+    e = (*v)(((PyObject *)p->_channel), a); if (e) return e;
+  }
+  if (p->_references) {
+    e = (*v)(p->_references, a); if (e) return e;
+  }
+  if (p->_deadline) {
+    e = (*v)(p->_deadline, a); if (e) return e;
+  }
+  if (p->_done_callbacks) {
+    e = (*v)(p->_done_callbacks, a); if (e) return e;
+  }
+  if (p->_loop) {
+    e = (*v)(p->_loop, a); if (e) return e;
+  }
+  if (p->_status) {
+    e = (*v)(((PyObject *)p->_status), a); if (e) return e;
+  }
+  if (p->_initial_metadata) {
+    e = (*v)(p->_initial_metadata, a); if (e) return e;
+  }
+  if (p->_waiters_status) {
+    e = (*v)(p->_waiters_status, a); if (e) return e;
+  }
+  if (p->_waiters_initial_metadata) {
+    e = (*v)(p->_waiters_initial_metadata, a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_7_cython_6cygrpc__AioCall(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_7_cython_6cygrpc__AioCall *p = (struct __pyx_obj_7_cython_6cygrpc__AioCall *)o;
+  if (likely(__pyx_ptype_7_cython_6cygrpc_GrpcCallWrapper)) { if (__pyx_ptype_7_cython_6cygrpc_GrpcCallWrapper->tp_clear) __pyx_ptype_7_cython_6cygrpc_GrpcCallWrapper->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_7_cython_6cygrpc__AioCall);
+  tmp = ((PyObject*)p->_channel);
+  p->_channel = ((struct __pyx_obj_7_cython_6cygrpc_AioChannel *)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->_references);
+  p->_references = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->_deadline);
+  p->_deadline = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->_done_callbacks);
+  p->_done_callbacks = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->_loop);
+  p->_loop = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->_status);
+  p->_status = ((struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->_initial_metadata);
+  p->_initial_metadata = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->_waiters_status);
+  p->_waiters_status = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->_waiters_initial_metadata);
+  p->_waiters_initial_metadata = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_8_AioCall__channel(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_8_AioCall_8_channel_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_8_AioCall__status(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_8_AioCall_7_status_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_8_AioCall__initial_metadata(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_8_AioCall_17_initial_metadata_1__get__(o);
+}
+
+static PyObject *__pyx_specialmethod___pyx_pw_7_cython_6cygrpc_8_AioCall_7__repr__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
+  return __pyx_pw_7_cython_6cygrpc_8_AioCall_7__repr__(self);
+}
+
+static PyMethodDef __pyx_methods_7_cython_6cygrpc__AioCall[] = {
+  {"_repr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_8_AioCall_5_repr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7_cython_6cygrpc_8_AioCall_4_repr},
+  {"__repr__", (PyCFunction)__pyx_specialmethod___pyx_pw_7_cython_6cygrpc_8_AioCall_7__repr__, METH_NOARGS|METH_COEXIST, 0},
+  {"add_done_callback", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_8_AioCall_11add_done_callback, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"time_remaining", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_8_AioCall_13time_remaining, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"cancel", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_8_AioCall_15cancel, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7_cython_6cygrpc_8_AioCall_14cancel},
+  {"done", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_8_AioCall_17done, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7_cython_6cygrpc_8_AioCall_16done},
+  {"cancelled", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_8_AioCall_19cancelled, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7_cython_6cygrpc_8_AioCall_18cancelled},
+  {"status", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_8_AioCall_21status, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7_cython_6cygrpc_8_AioCall_20status},
+  {"is_ok", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_8_AioCall_24is_ok, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7_cython_6cygrpc_8_AioCall_23is_ok},
+  {"initial_metadata", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_8_AioCall_26initial_metadata, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7_cython_6cygrpc_8_AioCall_25initial_metadata},
+  {"is_locally_cancelled", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_8_AioCall_29is_locally_cancelled, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7_cython_6cygrpc_8_AioCall_28is_locally_cancelled},
+  {"set_internal_error", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_8_AioCall_31set_internal_error, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"unary_unary", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_8_AioCall_33unary_unary, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7_cython_6cygrpc_8_AioCall_32unary_unary},
+  {"_handle_status_once_received", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_8_AioCall_36_handle_status_once_received, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7_cython_6cygrpc_8_AioCall_35_handle_status_once_received},
+  {"receive_serialized_message", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_8_AioCall_39receive_serialized_message, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7_cython_6cygrpc_8_AioCall_38receive_serialized_message},
+  {"send_serialized_message", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_8_AioCall_42send_serialized_message, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7_cython_6cygrpc_8_AioCall_41send_serialized_message},
+  {"send_receive_close", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_8_AioCall_45send_receive_close, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7_cython_6cygrpc_8_AioCall_44send_receive_close},
+  {"initiate_unary_stream", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_8_AioCall_48initiate_unary_stream, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7_cython_6cygrpc_8_AioCall_47initiate_unary_stream},
+  {"stream_unary", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_8_AioCall_51stream_unary, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7_cython_6cygrpc_8_AioCall_50stream_unary},
+  {"initiate_stream_stream", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_8_AioCall_54initiate_stream_stream, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7_cython_6cygrpc_8_AioCall_53initiate_stream_stream},
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_8_AioCall_57__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_8_AioCall_59__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_7_cython_6cygrpc__AioCall[] = {
+  {(char *)"_channel", __pyx_getprop_7_cython_6cygrpc_8_AioCall__channel, 0, (char *)0, 0},
+  {(char *)"_status", __pyx_getprop_7_cython_6cygrpc_8_AioCall__status, 0, (char *)0, 0},
+  {(char *)"_initial_metadata", __pyx_getprop_7_cython_6cygrpc_8_AioCall__initial_metadata, 0, (char *)0, 0},
+  {0, 0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc__AioCall_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc__AioCall},
+  {Py_tp_repr, (void *)__pyx_pw_7_cython_6cygrpc_8_AioCall_7__repr__},
+  {Py_tp_str, (void *)__pyx_pw_7_cython_6cygrpc_8_AioCall_9__str__},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc__AioCall},
+  {Py_tp_clear, (void *)__pyx_tp_clear_7_cython_6cygrpc__AioCall},
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc__AioCall},
+  {Py_tp_getset, (void *)__pyx_getsets_7_cython_6cygrpc__AioCall},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc__AioCall},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc__AioCall_spec = {
+  "_cython.cygrpc._AioCall",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc__AioCall),
+  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_7_cython_6cygrpc__AioCall_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc__AioCall = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""_AioCall", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc__AioCall), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc__AioCall, /*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_7_cython_6cygrpc_8_AioCall_7__repr__, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  __pyx_pw_7_cython_6cygrpc_8_AioCall_9__str__, /*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_7_cython_6cygrpc__AioCall, /*tp_traverse*/
+  __pyx_tp_clear_7_cython_6cygrpc__AioCall, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_7_cython_6cygrpc__AioCall, /*tp_methods*/
+  0, /*tp_members*/
+  __pyx_getsets_7_cython_6cygrpc__AioCall, /*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_7_cython_6cygrpc__AioCall, /*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_7_cython_6cygrpc_AioChannel(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc_AioChannel *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_7_cython_6cygrpc_AioChannel *)o);
+  p->loop = Py_None; Py_INCREF(Py_None);
+  p->_target = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  if (unlikely(__pyx_pw_7_cython_6cygrpc_10AioChannel_1__cinit__(o, a, k) < 0)) goto bad;
+  return o;
+  bad:
+  Py_DECREF(o); o = 0;
+  return NULL;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc_AioChannel(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc_AioChannel *p = (struct __pyx_obj_7_cython_6cygrpc_AioChannel *)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_7_cython_6cygrpc_AioChannel) {
+      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_7_cython_6cygrpc_10AioChannel_3__dealloc__(o);
+    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
+    PyErr_Restore(etype, eval, etb);
+  }
+  Py_CLEAR(p->loop);
+  Py_CLEAR(p->_target);
+  #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_7_cython_6cygrpc_AioChannel(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc_AioChannel *p = (struct __pyx_obj_7_cython_6cygrpc_AioChannel *)o;
+  if (p->loop) {
+    e = (*v)(p->loop, a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_7_cython_6cygrpc_AioChannel(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_7_cython_6cygrpc_AioChannel *p = (struct __pyx_obj_7_cython_6cygrpc_AioChannel *)o;
+  tmp = ((PyObject*)p->loop);
+  p->loop = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static PyObject *__pyx_specialmethod___pyx_pw_7_cython_6cygrpc_10AioChannel_5__repr__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
+  return __pyx_pw_7_cython_6cygrpc_10AioChannel_5__repr__(self);
+}
+
+static PyMethodDef __pyx_methods_7_cython_6cygrpc_AioChannel[] = {
+  {"__repr__", (PyCFunction)__pyx_specialmethod___pyx_pw_7_cython_6cygrpc_10AioChannel_5__repr__, METH_NOARGS|METH_COEXIST, 0},
+  {"check_connectivity_state", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_10AioChannel_7check_connectivity_state, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7_cython_6cygrpc_10AioChannel_6check_connectivity_state},
+  {"watch_connectivity_state", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_10AioChannel_9watch_connectivity_state, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7_cython_6cygrpc_10AioChannel_8watch_connectivity_state},
+  {"closing", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_10AioChannel_12closing, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"close", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_10AioChannel_14close, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"closed", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_10AioChannel_16closed, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"call", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_10AioChannel_18call, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7_cython_6cygrpc_10AioChannel_17call},
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_10AioChannel_20__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_10AioChannel_22__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc_AioChannel_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc_AioChannel},
+  {Py_tp_repr, (void *)__pyx_pw_7_cython_6cygrpc_10AioChannel_5__repr__},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc_AioChannel},
+  {Py_tp_clear, (void *)__pyx_tp_clear_7_cython_6cygrpc_AioChannel},
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc_AioChannel},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc_AioChannel},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc_AioChannel_spec = {
+  "_cython.cygrpc.AioChannel",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_AioChannel),
+  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_7_cython_6cygrpc_AioChannel_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc_AioChannel = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""AioChannel", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_AioChannel), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc_AioChannel, /*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_7_cython_6cygrpc_10AioChannel_5__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*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc_AioChannel, /*tp_traverse*/
+  __pyx_tp_clear_7_cython_6cygrpc_AioChannel, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_7_cython_6cygrpc_AioChannel, /*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_7_cython_6cygrpc_AioChannel, /*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_7_cython_6cygrpc__HandlerCallDetails(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc__HandlerCallDetails *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_7_cython_6cygrpc__HandlerCallDetails *)o);
+  p->method = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  p->invocation_metadata = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  if (unlikely(__pyx_pw_7_cython_6cygrpc_19_HandlerCallDetails_1__cinit__(o, a, k) < 0)) goto bad;
+  return o;
+  bad:
+  Py_DECREF(o); o = 0;
+  return NULL;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc__HandlerCallDetails(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc__HandlerCallDetails *p = (struct __pyx_obj_7_cython_6cygrpc__HandlerCallDetails *)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_7_cython_6cygrpc__HandlerCallDetails) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->method);
+  Py_CLEAR(p->invocation_metadata);
+  #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_7_cython_6cygrpc__HandlerCallDetails(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc__HandlerCallDetails *p = (struct __pyx_obj_7_cython_6cygrpc__HandlerCallDetails *)o;
+  if (p->invocation_metadata) {
+    e = (*v)(p->invocation_metadata, a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_7_cython_6cygrpc__HandlerCallDetails(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_7_cython_6cygrpc__HandlerCallDetails *p = (struct __pyx_obj_7_cython_6cygrpc__HandlerCallDetails *)o;
+  tmp = ((PyObject*)p->invocation_metadata);
+  p->invocation_metadata = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_19_HandlerCallDetails_method(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_19_HandlerCallDetails_6method_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_7_cython_6cygrpc_19_HandlerCallDetails_invocation_metadata(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_7_cython_6cygrpc_19_HandlerCallDetails_19invocation_metadata_1__get__(o);
+}
+
+static PyMethodDef __pyx_methods_7_cython_6cygrpc__HandlerCallDetails[] = {
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_19_HandlerCallDetails_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_19_HandlerCallDetails_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_7_cython_6cygrpc__HandlerCallDetails[] = {
+  {(char *)"method", __pyx_getprop_7_cython_6cygrpc_19_HandlerCallDetails_method, 0, (char *)0, 0},
+  {(char *)"invocation_metadata", __pyx_getprop_7_cython_6cygrpc_19_HandlerCallDetails_invocation_metadata, 0, (char *)0, 0},
+  {0, 0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc__HandlerCallDetails_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc__HandlerCallDetails},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc__HandlerCallDetails},
+  {Py_tp_clear, (void *)__pyx_tp_clear_7_cython_6cygrpc__HandlerCallDetails},
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc__HandlerCallDetails},
+  {Py_tp_getset, (void *)__pyx_getsets_7_cython_6cygrpc__HandlerCallDetails},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc__HandlerCallDetails},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc__HandlerCallDetails_spec = {
+  "_cython.cygrpc._HandlerCallDetails",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc__HandlerCallDetails),
+  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_7_cython_6cygrpc__HandlerCallDetails_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc__HandlerCallDetails = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""_HandlerCallDetails", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc__HandlerCallDetails), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc__HandlerCallDetails, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc__HandlerCallDetails, /*tp_traverse*/
+  __pyx_tp_clear_7_cython_6cygrpc__HandlerCallDetails, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_7_cython_6cygrpc__HandlerCallDetails, /*tp_methods*/
+  0, /*tp_members*/
+  __pyx_getsets_7_cython_6cygrpc__HandlerCallDetails, /*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_7_cython_6cygrpc__HandlerCallDetails, /*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_7_cython_6cygrpc_RPCState __pyx_vtable_7_cython_6cygrpc_RPCState;
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_RPCState(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc_RPCState *p;
+  PyObject *o = __pyx_tp_new_7_cython_6cygrpc_GrpcCallWrapper(t, a, k);
+  if (unlikely(!o)) return 0;
+  p = ((struct __pyx_obj_7_cython_6cygrpc_RPCState *)o);
+  p->__pyx_vtab = __pyx_vtabptr_7_cython_6cygrpc_RPCState;
+  new((void*)&(p->details)) grpc_call_details();
+  new((void*)&(p->request_metadata)) grpc_metadata_array();
+  p->server = ((struct __pyx_obj_7_cython_6cygrpc_AioServer *)Py_None); Py_INCREF(Py_None);
+  p->abort_exception = Py_None; Py_INCREF(Py_None);
+  p->py_status_code = Py_None; Py_INCREF(Py_None);
+  p->status_details = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  p->trailing_metadata = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  p->compression_algorithm = Py_None; Py_INCREF(Py_None);
+  p->callbacks = Py_None; Py_INCREF(Py_None);
+  if (unlikely(__pyx_pw_7_cython_6cygrpc_8RPCState_1__cinit__(o, a, k) < 0)) goto bad;
+  return o;
+  bad:
+  Py_DECREF(o); o = 0;
+  return NULL;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc_RPCState(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc_RPCState *p = (struct __pyx_obj_7_cython_6cygrpc_RPCState *)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_7_cython_6cygrpc_RPCState) {
+      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_7_cython_6cygrpc_8RPCState_3__dealloc__(o);
+    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
+    PyErr_Restore(etype, eval, etb);
+  }
+  __Pyx_call_destructor(p->details);
+  __Pyx_call_destructor(p->request_metadata);
+  Py_CLEAR(p->server);
+  Py_CLEAR(p->abort_exception);
+  Py_CLEAR(p->py_status_code);
+  Py_CLEAR(p->status_details);
+  Py_CLEAR(p->trailing_metadata);
+  Py_CLEAR(p->compression_algorithm);
+  Py_CLEAR(p->callbacks);
+  __pyx_tp_dealloc_7_cython_6cygrpc_GrpcCallWrapper(o);
+}
+
+static int __pyx_tp_traverse_7_cython_6cygrpc_RPCState(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc_RPCState *p = (struct __pyx_obj_7_cython_6cygrpc_RPCState *)o;
+  e = ((likely(__pyx_ptype_7_cython_6cygrpc_GrpcCallWrapper)) ? ((__pyx_ptype_7_cython_6cygrpc_GrpcCallWrapper->tp_traverse) ? __pyx_ptype_7_cython_6cygrpc_GrpcCallWrapper->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_7_cython_6cygrpc_RPCState)); if (e) return e;
+  if (p->server) {
+    e = (*v)(((PyObject *)p->server), a); if (e) return e;
+  }
+  if (p->abort_exception) {
+    e = (*v)(p->abort_exception, a); if (e) return e;
+  }
+  if (p->py_status_code) {
+    e = (*v)(p->py_status_code, a); if (e) return e;
+  }
+  if (p->trailing_metadata) {
+    e = (*v)(p->trailing_metadata, a); if (e) return e;
+  }
+  if (p->compression_algorithm) {
+    e = (*v)(p->compression_algorithm, a); if (e) return e;
+  }
+  if (p->callbacks) {
+    e = (*v)(p->callbacks, a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_7_cython_6cygrpc_RPCState(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_7_cython_6cygrpc_RPCState *p = (struct __pyx_obj_7_cython_6cygrpc_RPCState *)o;
+  if (likely(__pyx_ptype_7_cython_6cygrpc_GrpcCallWrapper)) { if (__pyx_ptype_7_cython_6cygrpc_GrpcCallWrapper->tp_clear) __pyx_ptype_7_cython_6cygrpc_GrpcCallWrapper->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_7_cython_6cygrpc_RPCState);
+  tmp = ((PyObject*)p->server);
+  p->server = ((struct __pyx_obj_7_cython_6cygrpc_AioServer *)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->abort_exception);
+  p->abort_exception = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->py_status_code);
+  p->py_status_code = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->trailing_metadata);
+  p->trailing_metadata = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->compression_algorithm);
+  p->compression_algorithm = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->callbacks);
+  p->callbacks = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static PyMethodDef __pyx_methods_7_cython_6cygrpc_RPCState[] = {
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_8RPCState_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_8RPCState_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc_RPCState_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc_RPCState},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc_RPCState},
+  {Py_tp_clear, (void *)__pyx_tp_clear_7_cython_6cygrpc_RPCState},
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc_RPCState},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc_RPCState},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc_RPCState_spec = {
+  "_cython.cygrpc.RPCState",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_RPCState),
+  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_7_cython_6cygrpc_RPCState_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc_RPCState = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""RPCState", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_RPCState), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc_RPCState, /*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_7_cython_6cygrpc_RPCState, /*tp_traverse*/
+  __pyx_tp_clear_7_cython_6cygrpc_RPCState, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_7_cython_6cygrpc_RPCState, /*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_7_cython_6cygrpc_RPCState, /*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_7_cython_6cygrpc__ServicerContext(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc__ServicerContext *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_7_cython_6cygrpc__ServicerContext *)o);
+  p->_rpc_state = ((struct __pyx_obj_7_cython_6cygrpc_RPCState *)Py_None); Py_INCREF(Py_None);
+  p->_loop = Py_None; Py_INCREF(Py_None);
+  p->_request_deserializer = Py_None; Py_INCREF(Py_None);
+  p->_response_serializer = Py_None; Py_INCREF(Py_None);
+  if (unlikely(__pyx_pw_7_cython_6cygrpc_16_ServicerContext_1__cinit__(o, a, k) < 0)) goto bad;
+  return o;
+  bad:
+  Py_DECREF(o); o = 0;
+  return NULL;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc__ServicerContext(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc__ServicerContext *p = (struct __pyx_obj_7_cython_6cygrpc__ServicerContext *)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_7_cython_6cygrpc__ServicerContext) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->_rpc_state);
+  Py_CLEAR(p->_loop);
+  Py_CLEAR(p->_request_deserializer);
+  Py_CLEAR(p->_response_serializer);
+  #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_7_cython_6cygrpc__ServicerContext(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc__ServicerContext *p = (struct __pyx_obj_7_cython_6cygrpc__ServicerContext *)o;
+  if (p->_rpc_state) {
+    e = (*v)(((PyObject *)p->_rpc_state), a); if (e) return e;
+  }
+  if (p->_loop) {
+    e = (*v)(p->_loop, a); if (e) return e;
+  }
+  if (p->_request_deserializer) {
+    e = (*v)(p->_request_deserializer, a); if (e) return e;
+  }
+  if (p->_response_serializer) {
+    e = (*v)(p->_response_serializer, a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_7_cython_6cygrpc__ServicerContext(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_7_cython_6cygrpc__ServicerContext *p = (struct __pyx_obj_7_cython_6cygrpc__ServicerContext *)o;
+  tmp = ((PyObject*)p->_rpc_state);
+  p->_rpc_state = ((struct __pyx_obj_7_cython_6cygrpc_RPCState *)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->_loop);
+  p->_loop = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->_request_deserializer);
+  p->_request_deserializer = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->_response_serializer);
+  p->_response_serializer = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static PyMethodDef __pyx_methods_7_cython_6cygrpc__ServicerContext[] = {
+  {"read", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16_ServicerContext_3read, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"write", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16_ServicerContext_6write, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"send_initial_metadata", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16_ServicerContext_9send_initial_metadata, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"abort", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16_ServicerContext_12abort, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"abort_with_status", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16_ServicerContext_15abort_with_status, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"set_trailing_metadata", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16_ServicerContext_18set_trailing_metadata, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"trailing_metadata", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16_ServicerContext_20trailing_metadata, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"invocation_metadata", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16_ServicerContext_22invocation_metadata, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"set_code", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16_ServicerContext_24set_code, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"code", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16_ServicerContext_26code, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"set_details", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16_ServicerContext_28set_details, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"details", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16_ServicerContext_30details, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"set_compression", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16_ServicerContext_32set_compression, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"disable_next_message_compression", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16_ServicerContext_34disable_next_message_compression, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"peer", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16_ServicerContext_36peer, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"peer_identities", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16_ServicerContext_38peer_identities, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"peer_identity_key", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16_ServicerContext_40peer_identity_key, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"auth_context", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16_ServicerContext_42auth_context, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"time_remaining", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16_ServicerContext_44time_remaining, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"add_done_callback", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16_ServicerContext_46add_done_callback, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"done", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16_ServicerContext_48done, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"cancelled", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16_ServicerContext_50cancelled, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16_ServicerContext_52__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16_ServicerContext_54__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc__ServicerContext_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc__ServicerContext},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc__ServicerContext},
+  {Py_tp_clear, (void *)__pyx_tp_clear_7_cython_6cygrpc__ServicerContext},
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc__ServicerContext},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc__ServicerContext},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc__ServicerContext_spec = {
+  "_cython.cygrpc._ServicerContext",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc__ServicerContext),
+  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_7_cython_6cygrpc__ServicerContext_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc__ServicerContext = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""_ServicerContext", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc__ServicerContext), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc__ServicerContext, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc__ServicerContext, /*tp_traverse*/
+  __pyx_tp_clear_7_cython_6cygrpc__ServicerContext, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_7_cython_6cygrpc__ServicerContext, /*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_7_cython_6cygrpc__ServicerContext, /*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_7_cython_6cygrpc__SyncServicerContext(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *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_7_cython_6cygrpc__SyncServicerContext *)o);
+  p->_context = ((struct __pyx_obj_7_cython_6cygrpc__ServicerContext *)Py_None); Py_INCREF(Py_None);
+  p->_callbacks = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  p->_loop = Py_None; Py_INCREF(Py_None);
+  if (unlikely(__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_1__cinit__(o, a, k) < 0)) goto bad;
+  return o;
+  bad:
+  Py_DECREF(o); o = 0;
+  return NULL;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc__SyncServicerContext(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *p = (struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *)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_7_cython_6cygrpc__SyncServicerContext) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->_context);
+  Py_CLEAR(p->_callbacks);
+  Py_CLEAR(p->_loop);
+  #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_7_cython_6cygrpc__SyncServicerContext(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *p = (struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *)o;
+  if (p->_context) {
+    e = (*v)(((PyObject *)p->_context), a); if (e) return e;
+  }
+  if (p->_callbacks) {
+    e = (*v)(p->_callbacks, a); if (e) return e;
+  }
+  if (p->_loop) {
+    e = (*v)(p->_loop, a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_7_cython_6cygrpc__SyncServicerContext(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *p = (struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext *)o;
+  tmp = ((PyObject*)p->_context);
+  p->_context = ((struct __pyx_obj_7_cython_6cygrpc__ServicerContext *)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->_callbacks);
+  p->_callbacks = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->_loop);
+  p->_loop = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static PyMethodDef __pyx_methods_7_cython_6cygrpc__SyncServicerContext[] = {
+  {"abort", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_3abort, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"send_initial_metadata", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_5send_initial_metadata, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"set_trailing_metadata", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_7set_trailing_metadata, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"invocation_metadata", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_9invocation_metadata, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"set_code", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_11set_code, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"set_details", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_13set_details, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"set_compression", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_15set_compression, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"disable_next_message_compression", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_17disable_next_message_compression, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"add_callback", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_19add_callback, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"peer", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_21peer, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"peer_identities", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_23peer_identities, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"peer_identity_key", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_25peer_identity_key, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"auth_context", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_27auth_context, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"time_remaining", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_29time_remaining, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_31__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_20_SyncServicerContext_33__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc__SyncServicerContext_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc__SyncServicerContext},
+  {Py_tp_doc, (void *)PyDoc_STR("Sync servicer context for sync handler compatibility.")},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc__SyncServicerContext},
+  {Py_tp_clear, (void *)__pyx_tp_clear_7_cython_6cygrpc__SyncServicerContext},
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc__SyncServicerContext},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc__SyncServicerContext},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc__SyncServicerContext_spec = {
+  "_cython.cygrpc._SyncServicerContext",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext),
+  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_7_cython_6cygrpc__SyncServicerContext_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc__SyncServicerContext = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""_SyncServicerContext", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc__SyncServicerContext), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc__SyncServicerContext, /*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("Sync servicer context for sync handler compatibility."), /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc__SyncServicerContext, /*tp_traverse*/
+  __pyx_tp_clear_7_cython_6cygrpc__SyncServicerContext, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_7_cython_6cygrpc__SyncServicerContext, /*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_7_cython_6cygrpc__SyncServicerContext, /*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_7_cython_6cygrpc__MessageReceiver(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc__MessageReceiver *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_7_cython_6cygrpc__MessageReceiver *)o);
+  p->_servicer_context = ((struct __pyx_obj_7_cython_6cygrpc__ServicerContext *)Py_None); Py_INCREF(Py_None);
+  p->_agen = Py_None; Py_INCREF(Py_None);
+  if (unlikely(__pyx_pw_7_cython_6cygrpc_16_MessageReceiver_1__cinit__(o, a, k) < 0)) goto bad;
+  return o;
+  bad:
+  Py_DECREF(o); o = 0;
+  return NULL;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc__MessageReceiver(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc__MessageReceiver *p = (struct __pyx_obj_7_cython_6cygrpc__MessageReceiver *)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_7_cython_6cygrpc__MessageReceiver) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->_servicer_context);
+  Py_CLEAR(p->_agen);
+  #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_7_cython_6cygrpc__MessageReceiver(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc__MessageReceiver *p = (struct __pyx_obj_7_cython_6cygrpc__MessageReceiver *)o;
+  if (p->_servicer_context) {
+    e = (*v)(((PyObject *)p->_servicer_context), a); if (e) return e;
+  }
+  if (p->_agen) {
+    e = (*v)(p->_agen, a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_7_cython_6cygrpc__MessageReceiver(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_7_cython_6cygrpc__MessageReceiver *p = (struct __pyx_obj_7_cython_6cygrpc__MessageReceiver *)o;
+  tmp = ((PyObject*)p->_servicer_context);
+  p->_servicer_context = ((struct __pyx_obj_7_cython_6cygrpc__ServicerContext *)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->_agen);
+  p->_agen = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static PyObject *__pyx_specialmethod___pyx_pw_7_cython_6cygrpc_16_MessageReceiver_6__aiter__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
+  return __pyx_pw_7_cython_6cygrpc_16_MessageReceiver_6__aiter__(self);
+}
+static PyObject *__pyx_specialmethod___pyx_pw_7_cython_6cygrpc_16_MessageReceiver_8__anext__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
+  return __pyx_pw_7_cython_6cygrpc_16_MessageReceiver_8__anext__(self);
+}
+
+static PyMethodDef __pyx_methods_7_cython_6cygrpc__MessageReceiver[] = {
+  {"_async_message_receiver", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16_MessageReceiver_3_async_message_receiver, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7_cython_6cygrpc_16_MessageReceiver_2_async_message_receiver},
+  {"__aiter__", (PyCFunction)__pyx_specialmethod___pyx_pw_7_cython_6cygrpc_16_MessageReceiver_6__aiter__, METH_NOARGS|METH_COEXIST, 0},
+  {"__anext__", (PyCFunction)__pyx_specialmethod___pyx_pw_7_cython_6cygrpc_16_MessageReceiver_8__anext__, METH_NOARGS|METH_COEXIST, 0},
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16_MessageReceiver_11__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_16_MessageReceiver_13__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc__MessageReceiver_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc__MessageReceiver},
+  {Py_am_aiter, (void *)__pyx_pw_7_cython_6cygrpc_16_MessageReceiver_6__aiter__},
+  {Py_am_anext, (void *)__pyx_pw_7_cython_6cygrpc_16_MessageReceiver_8__anext__},
+  {Py_tp_doc, (void *)PyDoc_STR("Bridge between the async generator API and the reader-writer API.")},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc__MessageReceiver},
+  {Py_tp_clear, (void *)__pyx_tp_clear_7_cython_6cygrpc__MessageReceiver},
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc__MessageReceiver},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc__MessageReceiver},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc__MessageReceiver_spec = {
+  "_cython.cygrpc._MessageReceiver",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc__MessageReceiver),
+  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_7_cython_6cygrpc__MessageReceiver_slots,
+};
+#else
+
+#if PY_MAJOR_VERSION >= 3
+static __Pyx_PyAsyncMethodsStruct __pyx_tp_as_async__MessageReceiver = {
+  0, /*am_await*/
+  __pyx_pw_7_cython_6cygrpc_16_MessageReceiver_6__aiter__, /*am_aiter*/
+  __pyx_pw_7_cython_6cygrpc_16_MessageReceiver_8__anext__, /*am_anext*/
+  #if PY_VERSION_HEX >= 0x030A00A3
+  0, /*am_send*/
+  #endif
+};
+#endif
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc__MessageReceiver = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""_MessageReceiver", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc__MessageReceiver), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc__MessageReceiver, /*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
+  &__pyx_tp_as_async__MessageReceiver, /*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("Bridge between the async generator API and the reader-writer API."), /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc__MessageReceiver, /*tp_traverse*/
+  __pyx_tp_clear_7_cython_6cygrpc__MessageReceiver, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_7_cython_6cygrpc__MessageReceiver, /*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_7_cython_6cygrpc__MessageReceiver, /*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_7_cython_6cygrpc__ConcurrentRpcLimiter(PyTypeObject *t, PyObject *a, 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
+  if (unlikely(__pyx_pw_7_cython_6cygrpc_21_ConcurrentRpcLimiter_1__cinit__(o, a, k) < 0)) goto bad;
+  return o;
+  bad:
+  Py_DECREF(o); o = 0;
+  return NULL;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc__ConcurrentRpcLimiter(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_7_cython_6cygrpc__ConcurrentRpcLimiter) {
+      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_7_cython_6cygrpc__ConcurrentRpcLimiter[] = {
+  {"check_before_request_call", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_21_ConcurrentRpcLimiter_3check_before_request_call, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"_decrease_active_rpcs_count", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_21_ConcurrentRpcLimiter_5_decrease_active_rpcs_count, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"decrease_once_finished", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_21_ConcurrentRpcLimiter_7decrease_once_finished, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_21_ConcurrentRpcLimiter_9__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_21_ConcurrentRpcLimiter_11__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc__ConcurrentRpcLimiter_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc__ConcurrentRpcLimiter},
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc__ConcurrentRpcLimiter},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc__ConcurrentRpcLimiter},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc__ConcurrentRpcLimiter_spec = {
+  "_cython.cygrpc._ConcurrentRpcLimiter",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc__ConcurrentRpcLimiter),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
+  __pyx_type_7_cython_6cygrpc__ConcurrentRpcLimiter_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc__ConcurrentRpcLimiter = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""_ConcurrentRpcLimiter", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc__ConcurrentRpcLimiter), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc__ConcurrentRpcLimiter, /*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_7_cython_6cygrpc__ConcurrentRpcLimiter, /*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_7_cython_6cygrpc__ConcurrentRpcLimiter, /*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_7_cython_6cygrpc_AioServer __pyx_vtable_7_cython_6cygrpc_AioServer;
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_AioServer(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc_AioServer *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_7_cython_6cygrpc_AioServer *)o);
+  p->__pyx_vtab = __pyx_vtabptr_7_cython_6cygrpc_AioServer;
+  p->_server = ((struct __pyx_obj_7_cython_6cygrpc_Server *)Py_None); Py_INCREF(Py_None);
+  p->_generic_handlers = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  p->_loop = Py_None; Py_INCREF(Py_None);
+  p->_serving_task = Py_None; Py_INCREF(Py_None);
+  p->_shutdown_lock = Py_None; Py_INCREF(Py_None);
+  p->_shutdown_completed = Py_None; Py_INCREF(Py_None);
+  p->_shutdown_callback_wrapper = ((struct __pyx_obj_7_cython_6cygrpc_CallbackWrapper *)Py_None); Py_INCREF(Py_None);
+  p->_crash_exception = Py_None; Py_INCREF(Py_None);
+  p->_interceptors = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  p->_thread_pool = Py_None; Py_INCREF(Py_None);
+  p->_limiter = ((struct __pyx_obj_7_cython_6cygrpc__ConcurrentRpcLimiter *)Py_None); Py_INCREF(Py_None);
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc_AioServer(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc_AioServer *p = (struct __pyx_obj_7_cython_6cygrpc_AioServer *)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_7_cython_6cygrpc_AioServer) {
+      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_7_cython_6cygrpc_9AioServer_29__dealloc__(o);
+    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
+    PyErr_Restore(etype, eval, etb);
+  }
+  Py_CLEAR(p->_server);
+  Py_CLEAR(p->_generic_handlers);
+  Py_CLEAR(p->_loop);
+  Py_CLEAR(p->_serving_task);
+  Py_CLEAR(p->_shutdown_lock);
+  Py_CLEAR(p->_shutdown_completed);
+  Py_CLEAR(p->_shutdown_callback_wrapper);
+  Py_CLEAR(p->_crash_exception);
+  Py_CLEAR(p->_interceptors);
+  Py_CLEAR(p->_thread_pool);
+  Py_CLEAR(p->_limiter);
+  #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_7_cython_6cygrpc_AioServer(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc_AioServer *p = (struct __pyx_obj_7_cython_6cygrpc_AioServer *)o;
+  if (p->_server) {
+    e = (*v)(((PyObject *)p->_server), a); if (e) return e;
+  }
+  if (p->_generic_handlers) {
+    e = (*v)(p->_generic_handlers, a); if (e) return e;
+  }
+  if (p->_loop) {
+    e = (*v)(p->_loop, a); if (e) return e;
+  }
+  if (p->_serving_task) {
+    e = (*v)(p->_serving_task, a); if (e) return e;
+  }
+  if (p->_shutdown_lock) {
+    e = (*v)(p->_shutdown_lock, a); if (e) return e;
+  }
+  if (p->_shutdown_completed) {
+    e = (*v)(p->_shutdown_completed, a); if (e) return e;
+  }
+  if (p->_shutdown_callback_wrapper) {
+    e = (*v)(((PyObject *)p->_shutdown_callback_wrapper), a); if (e) return e;
+  }
+  if (p->_crash_exception) {
+    e = (*v)(p->_crash_exception, a); if (e) return e;
+  }
+  if (p->_interceptors) {
+    e = (*v)(p->_interceptors, a); if (e) return e;
+  }
+  if (p->_thread_pool) {
+    e = (*v)(p->_thread_pool, a); if (e) return e;
+  }
+  if (p->_limiter) {
+    e = (*v)(((PyObject *)p->_limiter), a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_7_cython_6cygrpc_AioServer(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_7_cython_6cygrpc_AioServer *p = (struct __pyx_obj_7_cython_6cygrpc_AioServer *)o;
+  tmp = ((PyObject*)p->_server);
+  p->_server = ((struct __pyx_obj_7_cython_6cygrpc_Server *)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->_generic_handlers);
+  p->_generic_handlers = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->_loop);
+  p->_loop = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->_serving_task);
+  p->_serving_task = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->_shutdown_lock);
+  p->_shutdown_lock = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->_shutdown_completed);
+  p->_shutdown_completed = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->_shutdown_callback_wrapper);
+  p->_shutdown_callback_wrapper = ((struct __pyx_obj_7_cython_6cygrpc_CallbackWrapper *)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->_crash_exception);
+  p->_crash_exception = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->_interceptors);
+  p->_interceptors = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->_thread_pool);
+  p->_thread_pool = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->_limiter);
+  p->_limiter = ((struct __pyx_obj_7_cython_6cygrpc__ConcurrentRpcLimiter *)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static PyMethodDef __pyx_methods_7_cython_6cygrpc_AioServer[] = {
+  {"add_generic_rpc_handlers", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_9AioServer_3add_generic_rpc_handlers, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"add_insecure_port", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_9AioServer_5add_insecure_port, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"add_secure_port", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_9AioServer_7add_secure_port, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"_request_call", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_9AioServer_9_request_call, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"_server_main_loop", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_9AioServer_12_server_main_loop, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"_serving_task_crash_handler", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_9AioServer_15_serving_task_crash_handler, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7_cython_6cygrpc_9AioServer_14_serving_task_crash_handler},
+  {"start", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_9AioServer_17start, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"_start_shutting_down", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_9AioServer_20_start_shutting_down, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7_cython_6cygrpc_9AioServer_19_start_shutting_down},
+  {"shutdown", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_9AioServer_23shutdown, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7_cython_6cygrpc_9AioServer_22shutdown},
+  {"wait_for_termination", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_9AioServer_26wait_for_termination, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"is_running", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_9AioServer_31is_running, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_9AioServer_33__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_9AioServer_35__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc_AioServer_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc_AioServer},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc_AioServer},
+  {Py_tp_clear, (void *)__pyx_tp_clear_7_cython_6cygrpc_AioServer},
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc_AioServer},
+  {Py_tp_init, (void *)__pyx_pw_7_cython_6cygrpc_9AioServer_1__init__},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc_AioServer},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc_AioServer_spec = {
+  "_cython.cygrpc.AioServer",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_AioServer),
+  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_7_cython_6cygrpc_AioServer_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc_AioServer = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""AioServer", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_AioServer), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc_AioServer, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc_AioServer, /*tp_traverse*/
+  __pyx_tp_clear_7_cython_6cygrpc_AioServer, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_7_cython_6cygrpc_AioServer, /*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
+  __pyx_pw_7_cython_6cygrpc_9AioServer_1__init__, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_7_cython_6cygrpc_AioServer, /*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_7_cython_6cygrpc__GrpcArgWrapper(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc__GrpcArgWrapper *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_7_cython_6cygrpc__GrpcArgWrapper *)o);
+  new((void*)&(p->arg)) grpc_arg();
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc__GrpcArgWrapper(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc__GrpcArgWrapper *p = (struct __pyx_obj_7_cython_6cygrpc__GrpcArgWrapper *)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_7_cython_6cygrpc__GrpcArgWrapper) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  __Pyx_call_destructor(p->arg);
+  #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_7_cython_6cygrpc__GrpcArgWrapper[] = {
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_15_GrpcArgWrapper_1__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_15_GrpcArgWrapper_3__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc__GrpcArgWrapper_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc__GrpcArgWrapper},
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc__GrpcArgWrapper},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc__GrpcArgWrapper},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc__GrpcArgWrapper_spec = {
+  "_cython.cygrpc._GrpcArgWrapper",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc__GrpcArgWrapper),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
+  __pyx_type_7_cython_6cygrpc__GrpcArgWrapper_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc__GrpcArgWrapper = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""_GrpcArgWrapper", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc__GrpcArgWrapper), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc__GrpcArgWrapper, /*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_7_cython_6cygrpc__GrpcArgWrapper, /*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_7_cython_6cygrpc__GrpcArgWrapper, /*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_7_cython_6cygrpc_InsecureChannelCredentials __pyx_vtable_7_cython_6cygrpc_InsecureChannelCredentials;
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_InsecureChannelCredentials(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc_InsecureChannelCredentials *p;
+  PyObject *o = __pyx_tp_new_7_cython_6cygrpc_ChannelCredentials(t, a, k);
+  if (unlikely(!o)) return 0;
+  p = ((struct __pyx_obj_7_cython_6cygrpc_InsecureChannelCredentials *)o);
+  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_7_cython_6cygrpc_ChannelCredentials*)__pyx_vtabptr_7_cython_6cygrpc_InsecureChannelCredentials;
+  return o;
+}
+
+static PyMethodDef __pyx_methods_7_cython_6cygrpc_InsecureChannelCredentials[] = {
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_26InsecureChannelCredentials_1__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_26InsecureChannelCredentials_3__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc_InsecureChannelCredentials_slots[] = {
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc_InsecureChannelCredentials},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc_InsecureChannelCredentials},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc_InsecureChannelCredentials_spec = {
+  "_cython.cygrpc.InsecureChannelCredentials",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_InsecureChannelCredentials),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
+  __pyx_type_7_cython_6cygrpc_InsecureChannelCredentials_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc_InsecureChannelCredentials = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""InsecureChannelCredentials", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_InsecureChannelCredentials), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc_ChannelCredentials, /*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_7_cython_6cygrpc_InsecureChannelCredentials, /*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_7_cython_6cygrpc_InsecureChannelCredentials, /*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_7_cython_6cygrpc_ComputeEngineChannelCredentials __pyx_vtable_7_cython_6cygrpc_ComputeEngineChannelCredentials;
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc_ComputeEngineChannelCredentials(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc_ComputeEngineChannelCredentials *p;
+  PyObject *o = __pyx_tp_new_7_cython_6cygrpc_ChannelCredentials(t, a, k);
+  if (unlikely(!o)) return 0;
+  p = ((struct __pyx_obj_7_cython_6cygrpc_ComputeEngineChannelCredentials *)o);
+  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_7_cython_6cygrpc_ChannelCredentials*)__pyx_vtabptr_7_cython_6cygrpc_ComputeEngineChannelCredentials;
+  if (unlikely(__pyx_pw_7_cython_6cygrpc_31ComputeEngineChannelCredentials_1__cinit__(o, a, k) < 0)) goto bad;
+  return o;
+  bad:
+  Py_DECREF(o); o = 0;
+  return NULL;
+}
+
+static PyMethodDef __pyx_methods_7_cython_6cygrpc_ComputeEngineChannelCredentials[] = {
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_31ComputeEngineChannelCredentials_3__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_31ComputeEngineChannelCredentials_5__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc_ComputeEngineChannelCredentials_slots[] = {
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc_ComputeEngineChannelCredentials},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc_ComputeEngineChannelCredentials},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc_ComputeEngineChannelCredentials_spec = {
+  "_cython.cygrpc.ComputeEngineChannelCredentials",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_ComputeEngineChannelCredentials),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
+  __pyx_type_7_cython_6cygrpc_ComputeEngineChannelCredentials_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc_ComputeEngineChannelCredentials = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""ComputeEngineChannelCredentials", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_ComputeEngineChannelCredentials), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc_ChannelCredentials, /*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_7_cython_6cygrpc_ComputeEngineChannelCredentials, /*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_7_cython_6cygrpc_ComputeEngineChannelCredentials, /*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_7_cython_6cygrpc_CensusContext(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_7_cython_6cygrpc_CensusContext(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_7_cython_6cygrpc_CensusContext) {
+      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_7_cython_6cygrpc_CensusContext[] = {
+  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_13CensusContext_1__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7_cython_6cygrpc_13CensusContext_3__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc_CensusContext_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc_CensusContext},
+  {Py_tp_methods, (void *)__pyx_methods_7_cython_6cygrpc_CensusContext},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc_CensusContext},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc_CensusContext_spec = {
+  "_cython.cygrpc.CensusContext",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_CensusContext),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
+  __pyx_type_7_cython_6cygrpc_CensusContext_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc_CensusContext = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""CensusContext", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc_CensusContext), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc_CensusContext, /*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_7_cython_6cygrpc_CensusContext, /*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_7_cython_6cygrpc_CensusContext, /*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
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call *__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call[8];
+static int __pyx_freecount_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call = 0;
+#endif
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call(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 CYTHON_USE_FREELISTS
+  if (likely((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call)))) {
+    o = (PyObject*)__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call[--__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call];
+    memset(o, 0, sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call));
+    (void) PyObject_INIT(o, t);
+    PyObject_GC_Track(o);
+  } else
+  #endif
+  {
+    o = (*t->tp_alloc)(t, 0);
+    if (unlikely(!o)) return 0;
+  }
+  #endif
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call *)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_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->__pyx_v_call_state);
+  Py_CLEAR(p->__pyx_v_state);
+  #if CYTHON_USE_FREELISTS
+  if (((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call)))) {
+    __pyx_freelist_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call[__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call++] = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call *)o);
+  } else
+  #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 int __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call *)o;
+  if (p->__pyx_v_call_state) {
+    e = (*v)(((PyObject *)p->__pyx_v_call_state), a); if (e) return e;
+  }
+  if (p->__pyx_v_state) {
+    e = (*v)(((PyObject *)p->__pyx_v_state), a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call *)o;
+  tmp = ((PyObject*)p->__pyx_v_call_state);
+  p->__pyx_v_call_state = ((struct __pyx_obj_7_cython_6cygrpc__CallState *)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->__pyx_v_state);
+  p->__pyx_v_state = ((struct __pyx_obj_7_cython_6cygrpc__ChannelState *)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call},
+  {Py_tp_clear, (void *)__pyx_tp_clear_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call_spec = {
+  "_cython.cygrpc.__pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_type_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""__pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call, /*tp_traverse*/
+  __pyx_tp_clear_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call, /*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
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_1_next_event *__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_1_next_event[8];
+static int __pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_1_next_event = 0;
+#endif
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_1_next_event(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 CYTHON_USE_FREELISTS
+  if (likely((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_1_next_event > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_1_next_event)))) {
+    o = (PyObject*)__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_1_next_event[--__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_1_next_event];
+    memset(o, 0, sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_1_next_event));
+    (void) PyObject_INIT(o, t);
+    PyObject_GC_Track(o);
+  } else
+  #endif
+  {
+    o = (*t->tp_alloc)(t, 0);
+    if (unlikely(!o)) return 0;
+  }
+  #endif
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_1_next_event(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_1_next_event *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_1_next_event *)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_7_cython_6cygrpc___pyx_scope_struct_1_next_event) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->__pyx_v_self);
+  #if CYTHON_USE_FREELISTS
+  if (((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_1_next_event < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_1_next_event)))) {
+    __pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_1_next_event[__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_1_next_event++] = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_1_next_event *)o);
+  } else
+  #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 int __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_1_next_event(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_1_next_event *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_1_next_event *)o;
+  if (p->__pyx_v_self) {
+    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_7_cython_6cygrpc___pyx_scope_struct_1_next_event(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_1_next_event *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_1_next_event *)o;
+  tmp = ((PyObject*)p->__pyx_v_self);
+  p->__pyx_v_self = ((struct __pyx_obj_7_cython_6cygrpc_SegregatedCall *)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc___pyx_scope_struct_1_next_event_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_1_next_event},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_1_next_event},
+  {Py_tp_clear, (void *)__pyx_tp_clear_7_cython_6cygrpc___pyx_scope_struct_1_next_event},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_1_next_event},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc___pyx_scope_struct_1_next_event_spec = {
+  "_cython.cygrpc.__pyx_scope_struct_1_next_event",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_1_next_event),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_type_7_cython_6cygrpc___pyx_scope_struct_1_next_event_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc___pyx_scope_struct_1_next_event = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""__pyx_scope_struct_1_next_event", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_1_next_event), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_1_next_event, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_1_next_event, /*tp_traverse*/
+  __pyx_tp_clear_7_cython_6cygrpc___pyx_scope_struct_1_next_event, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_1_next_event, /*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
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call *__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call[8];
+static int __pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call = 0;
+#endif
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call(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 CYTHON_USE_FREELISTS
+  if (likely((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call)))) {
+    o = (PyObject*)__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call[--__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call];
+    memset(o, 0, sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call));
+    (void) PyObject_INIT(o, t);
+    PyObject_GC_Track(o);
+  } else
+  #endif
+  {
+    o = (*t->tp_alloc)(t, 0);
+    if (unlikely(!o)) return 0;
+  }
+  #endif
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call *)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_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->__pyx_v_call_state);
+  Py_CLEAR(p->__pyx_v_state);
+  #if CYTHON_USE_FREELISTS
+  if (((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call)))) {
+    __pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call[__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call++] = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call *)o);
+  } else
+  #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 int __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call *)o;
+  if (p->__pyx_v_call_state) {
+    e = (*v)(((PyObject *)p->__pyx_v_call_state), a); if (e) return e;
+  }
+  if (p->__pyx_v_state) {
+    e = (*v)(((PyObject *)p->__pyx_v_state), a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call *)o;
+  tmp = ((PyObject*)p->__pyx_v_call_state);
+  p->__pyx_v_call_state = ((struct __pyx_obj_7_cython_6cygrpc__CallState *)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->__pyx_v_state);
+  p->__pyx_v_state = ((struct __pyx_obj_7_cython_6cygrpc__ChannelState *)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call},
+  {Py_tp_clear, (void *)__pyx_tp_clear_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call_spec = {
+  "_cython.cygrpc.__pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_type_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""__pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call, /*tp_traverse*/
+  __pyx_tp_clear_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call, /*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
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event *__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event[8];
+static int __pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event = 0;
+#endif
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event(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 CYTHON_USE_FREELISTS
+  if (likely((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event)))) {
+    o = (PyObject*)__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event[--__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event];
+    memset(o, 0, sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event));
+    (void) PyObject_INIT(o, t);
+    PyObject_GC_Track(o);
+  } else
+  #endif
+  {
+    o = (*t->tp_alloc)(t, 0);
+    if (unlikely(!o)) return 0;
+  }
+  #endif
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event *)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_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->__pyx_v_self);
+  #if CYTHON_USE_FREELISTS
+  if (((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event)))) {
+    __pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event[__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event++] = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event *)o);
+  } else
+  #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 int __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event *)o;
+  if (p->__pyx_v_self) {
+    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event *)o;
+  tmp = ((PyObject*)p->__pyx_v_self);
+  p->__pyx_v_self = ((struct __pyx_obj_7_cython_6cygrpc_Channel *)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event},
+  {Py_tp_clear, (void *)__pyx_tp_clear_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event_spec = {
+  "_cython.cygrpc.__pyx_scope_struct_3_next_call_event",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_type_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""__pyx_scope_struct_3_next_call_event", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event, /*tp_traverse*/
+  __pyx_tp_clear_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event, /*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
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata *__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata[8];
+static int __pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata = 0;
+#endif
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata(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 CYTHON_USE_FREELISTS
+  if (likely((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata)))) {
+    o = (PyObject*)__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata[--__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata];
+    memset(o, 0, sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata));
+    (void) PyObject_INIT(o, t);
+  } else
+  #endif
+  {
+    o = (*t->tp_alloc)(t, 0);
+    if (unlikely(!o)) return 0;
+  }
+  #endif
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata(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_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  #if CYTHON_USE_FREELISTS
+  if (((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata)))) {
+    __pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata[__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata++] = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata *)o);
+  } else
+  #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
+  }
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata_spec = {
+  "_cython.cygrpc.__pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_type_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""__pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  0, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata, /*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
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_7_cython_6cygrpc__metadata *__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_7_cython_6cygrpc__metadata[8];
+static int __pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_7_cython_6cygrpc__metadata = 0;
+#endif
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_7_cython_6cygrpc__metadata(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 CYTHON_USE_FREELISTS
+  if (likely((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_7_cython_6cygrpc__metadata > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_7_cython_6cygrpc__metadata)))) {
+    o = (PyObject*)__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_7_cython_6cygrpc__metadata[--__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_7_cython_6cygrpc__metadata];
+    memset(o, 0, sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_7_cython_6cygrpc__metadata));
+    (void) PyObject_INIT(o, t);
+  } else
+  #endif
+  {
+    o = (*t->tp_alloc)(t, 0);
+    if (unlikely(!o)) return 0;
+  }
+  #endif
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_7_cython_6cygrpc__metadata(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_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_7_cython_6cygrpc__metadata) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  #if CYTHON_USE_FREELISTS
+  if (((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_7_cython_6cygrpc__metadata < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_7_cython_6cygrpc__metadata)))) {
+    __pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_7_cython_6cygrpc__metadata[__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_7_cython_6cygrpc__metadata++] = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_7_cython_6cygrpc__metadata *)o);
+  } else
+  #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
+  }
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_7_cython_6cygrpc__metadata_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_7_cython_6cygrpc__metadata},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_7_cython_6cygrpc__metadata},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_7_cython_6cygrpc__metadata_spec = {
+  "_cython.cygrpc.__pyx_scope_struct_5___pyx_f_7_cython_6cygrpc__metadata",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_7_cython_6cygrpc__metadata),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_type_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_7_cython_6cygrpc__metadata_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_7_cython_6cygrpc__metadata = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""__pyx_scope_struct_5___pyx_f_7_cython_6cygrpc__metadata", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_7_cython_6cygrpc__metadata), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_7_cython_6cygrpc__metadata, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  0, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_7_cython_6cygrpc__metadata, /*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
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_6_genexpr *__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_6_genexpr[8];
+static int __pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_6_genexpr = 0;
+#endif
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_6_genexpr(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 CYTHON_USE_FREELISTS
+  if (likely((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_6_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_6_genexpr)))) {
+    o = (PyObject*)__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_6_genexpr[--__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_6_genexpr];
+    memset(o, 0, sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_6_genexpr));
+    (void) PyObject_INIT(o, t);
+    PyObject_GC_Track(o);
+  } else
+  #endif
+  {
+    o = (*t->tp_alloc)(t, 0);
+    if (unlikely(!o)) return 0;
+  }
+  #endif
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_6_genexpr(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_6_genexpr *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_6_genexpr *)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_7_cython_6cygrpc___pyx_scope_struct_6_genexpr) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->__pyx_outer_scope);
+  #if CYTHON_USE_FREELISTS
+  if (((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_6_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_6_genexpr)))) {
+    __pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_6_genexpr[__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_6_genexpr++] = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_6_genexpr *)o);
+  } else
+  #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 int __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_6_genexpr(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_6_genexpr *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_6_genexpr *)o;
+  if (p->__pyx_outer_scope) {
+    e = (*v)(((PyObject *)p->__pyx_outer_scope), a); if (e) return e;
+  }
+  return 0;
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc___pyx_scope_struct_6_genexpr_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_6_genexpr},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_6_genexpr},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_6_genexpr},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc___pyx_scope_struct_6_genexpr_spec = {
+  "_cython.cygrpc.__pyx_scope_struct_6_genexpr",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_6_genexpr),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_type_7_cython_6cygrpc___pyx_scope_struct_6_genexpr_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc___pyx_scope_struct_6_genexpr = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""__pyx_scope_struct_6_genexpr", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_6_genexpr), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_6_genexpr, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_6_genexpr, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_6_genexpr, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  0, /*tp_version_tag*/
+  #if PY_VERSION_HEX >= 0x030400a1
+  #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
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context *__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context[8];
+static int __pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context = 0;
+#endif
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context(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 CYTHON_USE_FREELISTS
+  if (likely((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context)))) {
+    o = (PyObject*)__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context[--__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context];
+    memset(o, 0, sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context));
+    (void) PyObject_INIT(o, t);
+    PyObject_GC_Track(o);
+  } else
+  #endif
+  {
+    o = (*t->tp_alloc)(t, 0);
+    if (unlikely(!o)) return 0;
+  }
+  #endif
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context *)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_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->__pyx_v_ctx);
+  Py_CLEAR(p->__pyx_v_target);
+  #if CYTHON_USE_FREELISTS
+  if (((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context)))) {
+    __pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context[__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context++] = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context *)o);
+  } else
+  #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 int __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context *)o;
+  if (p->__pyx_v_ctx) {
+    e = (*v)(p->__pyx_v_ctx, a); if (e) return e;
+  }
+  if (p->__pyx_v_target) {
+    e = (*v)(p->__pyx_v_target, a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context *)o;
+  tmp = ((PyObject*)p->__pyx_v_ctx);
+  p->__pyx_v_ctx = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->__pyx_v_target);
+  p->__pyx_v_target = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context},
+  {Py_tp_clear, (void *)__pyx_tp_clear_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context_spec = {
+  "_cython.cygrpc.__pyx_scope_struct_7__run_with_context",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_type_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""__pyx_scope_struct_7__run_with_context", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context, /*tp_traverse*/
+  __pyx_tp_clear_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context, /*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
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context *__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context[8];
+static int __pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context = 0;
+#endif
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context(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 CYTHON_USE_FREELISTS
+  if (likely((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context)))) {
+    o = (PyObject*)__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context[--__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context];
+    memset(o, 0, sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context));
+    (void) PyObject_INIT(o, t);
+    PyObject_GC_Track(o);
+  } else
+  #endif
+  {
+    o = (*t->tp_alloc)(t, 0);
+    if (unlikely(!o)) return 0;
+  }
+  #endif
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context *)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_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->__pyx_v_target);
+  #if CYTHON_USE_FREELISTS
+  if (((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context)))) {
+    __pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context[__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context++] = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context *)o);
+  } else
+  #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 int __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context *)o;
+  if (p->__pyx_v_target) {
+    e = (*v)(p->__pyx_v_target, a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context *)o;
+  tmp = ((PyObject*)p->__pyx_v_target);
+  p->__pyx_v_target = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context},
+  {Py_tp_clear, (void *)__pyx_tp_clear_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context_spec = {
+  "_cython.cygrpc.__pyx_scope_struct_8__run_with_context",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_type_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""__pyx_scope_struct_8__run_with_context", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context, /*tp_traverse*/
+  __pyx_tp_clear_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context, /*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
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_9___init__ *__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_9___init__[8];
+static int __pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_9___init__ = 0;
+#endif
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_9___init__(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 CYTHON_USE_FREELISTS
+  if (likely((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_9___init__ > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_9___init__)))) {
+    o = (PyObject*)__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_9___init__[--__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_9___init__];
+    memset(o, 0, sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_9___init__));
+    (void) PyObject_INIT(o, t);
+    PyObject_GC_Track(o);
+  } else
+  #endif
+  {
+    o = (*t->tp_alloc)(t, 0);
+    if (unlikely(!o)) return 0;
+  }
+  #endif
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_9___init__(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_9___init__ *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_9___init__ *)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_7_cython_6cygrpc___pyx_scope_struct_9___init__) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->__pyx_v_target);
+  #if CYTHON_USE_FREELISTS
+  if (((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_9___init__ < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_9___init__)))) {
+    __pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_9___init__[__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_9___init__++] = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_9___init__ *)o);
+  } else
+  #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 int __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_9___init__(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_9___init__ *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_9___init__ *)o;
+  if (p->__pyx_v_target) {
+    e = (*v)(p->__pyx_v_target, a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_7_cython_6cygrpc___pyx_scope_struct_9___init__(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_9___init__ *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_9___init__ *)o;
+  tmp = ((PyObject*)p->__pyx_v_target);
+  p->__pyx_v_target = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc___pyx_scope_struct_9___init___slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_9___init__},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_9___init__},
+  {Py_tp_clear, (void *)__pyx_tp_clear_7_cython_6cygrpc___pyx_scope_struct_9___init__},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_9___init__},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc___pyx_scope_struct_9___init___spec = {
+  "_cython.cygrpc.__pyx_scope_struct_9___init__",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_9___init__),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_type_7_cython_6cygrpc___pyx_scope_struct_9___init___slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc___pyx_scope_struct_9___init__ = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""__pyx_scope_struct_9___init__", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_9___init__), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_9___init__, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_9___init__, /*tp_traverse*/
+  __pyx_tp_clear_7_cython_6cygrpc___pyx_scope_struct_9___init__, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_9___init__, /*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
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator *__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator[8];
+static int __pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator = 0;
+#endif
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator(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 CYTHON_USE_FREELISTS
+  if (likely((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator)))) {
+    o = (PyObject*)__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator[--__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator];
+    memset(o, 0, sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator));
+    (void) PyObject_INIT(o, t);
+    PyObject_GC_Track(o);
+  } else
+  #endif
+  {
+    o = (*t->tp_alloc)(t, 0);
+    if (unlikely(!o)) return 0;
+  }
+  #endif
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator *)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_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->__pyx_v_agen);
+  Py_CLEAR(p->__pyx_v_future);
+  Py_CLEAR(p->__pyx_v_loop);
+  Py_CLEAR(p->__pyx_v_response);
+  Py_CLEAR(p->__pyx_t_0);
+  Py_CLEAR(p->__pyx_t_1);
+  Py_CLEAR(p->__pyx_t_2);
+  #if CYTHON_USE_FREELISTS
+  if (((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator)))) {
+    __pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator[__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator++] = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator *)o);
+  } else
+  #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 int __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator *)o;
+  if (p->__pyx_v_agen) {
+    e = (*v)(p->__pyx_v_agen, a); if (e) return e;
+  }
+  if (p->__pyx_v_future) {
+    e = (*v)(p->__pyx_v_future, a); if (e) return e;
+  }
+  if (p->__pyx_v_loop) {
+    e = (*v)(p->__pyx_v_loop, a); if (e) return e;
+  }
+  if (p->__pyx_v_response) {
+    e = (*v)(p->__pyx_v_response, a); if (e) return e;
+  }
+  if (p->__pyx_t_0) {
+    e = (*v)(p->__pyx_t_0, a); if (e) return e;
+  }
+  if (p->__pyx_t_1) {
+    e = (*v)(p->__pyx_t_1, a); if (e) return e;
+  }
+  if (p->__pyx_t_2) {
+    e = (*v)(p->__pyx_t_2, a); if (e) return e;
+  }
+  return 0;
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator_spec = {
+  "_cython.cygrpc.__pyx_scope_struct_10_async_generator_to_generator",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_type_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""__pyx_scope_struct_10_async_generator_to_generator", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator, /*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
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator *__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator[8];
+static int __pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator = 0;
+#endif
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator(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 CYTHON_USE_FREELISTS
+  if (likely((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator)))) {
+    o = (PyObject*)__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator[--__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator];
+    memset(o, 0, sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator));
+    (void) PyObject_INIT(o, t);
+    PyObject_GC_Track(o);
+  } else
+  #endif
+  {
+    o = (*t->tp_alloc)(t, 0);
+    if (unlikely(!o)) return 0;
+  }
+  #endif
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator *)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_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->__pyx_v_future);
+  Py_CLEAR(p->__pyx_v_gen);
+  Py_CLEAR(p->__pyx_v_loop);
+  Py_CLEAR(p->__pyx_v_queue);
+  Py_CLEAR(p->__pyx_v_response);
+  Py_CLEAR(p->__pyx_v_thread_pool);
+  Py_CLEAR(p->__pyx_v_yield_to_queue);
+  #if CYTHON_USE_FREELISTS
+  if (((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator)))) {
+    __pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator[__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator++] = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator *)o);
+  } else
+  #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 int __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator *)o;
+  if (p->__pyx_v_future) {
+    e = (*v)(p->__pyx_v_future, a); if (e) return e;
+  }
+  if (p->__pyx_v_gen) {
+    e = (*v)(p->__pyx_v_gen, a); if (e) return e;
+  }
+  if (p->__pyx_v_loop) {
+    e = (*v)(p->__pyx_v_loop, a); if (e) return e;
+  }
+  if (p->__pyx_v_queue) {
+    e = (*v)(p->__pyx_v_queue, a); if (e) return e;
+  }
+  if (p->__pyx_v_response) {
+    e = (*v)(p->__pyx_v_response, a); if (e) return e;
+  }
+  if (p->__pyx_v_thread_pool) {
+    e = (*v)(p->__pyx_v_thread_pool, a); if (e) return e;
+  }
+  if (p->__pyx_v_yield_to_queue) {
+    e = (*v)(p->__pyx_v_yield_to_queue, a); if (e) return e;
+  }
+  return 0;
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator_spec = {
+  "_cython.cygrpc.__pyx_scope_struct_11_generator_to_async_generator",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_type_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""__pyx_scope_struct_11_generator_to_async_generator", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator, /*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
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch *__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch[8];
+static int __pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch = 0;
+#endif
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch *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 CYTHON_USE_FREELISTS
+  if (likely((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch)))) {
+    o = (PyObject*)__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch[--__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch];
+    memset(o, 0, sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch));
+    (void) PyObject_INIT(o, t);
+    PyObject_GC_Track(o);
+  } else
+  #endif
+  {
+    o = (*t->tp_alloc)(t, 0);
+    if (unlikely(!o)) return 0;
+  }
+  #endif
+  p = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch *)o);
+  new((void*)&(p->__pyx_v_c_event)) grpc_event();
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch *)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_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  __Pyx_call_destructor(p->__pyx_v_c_event);
+  Py_CLEAR(p->__pyx_v_batch_operation_tag);
+  Py_CLEAR(p->__pyx_v_future);
+  Py_CLEAR(p->__pyx_v_grpc_call_error_string);
+  Py_CLEAR(p->__pyx_v_grpc_call_wrapper);
+  Py_CLEAR(p->__pyx_v_loop);
+  Py_CLEAR(p->__pyx_v_operations);
+  Py_CLEAR(p->__pyx_v_wrapper);
+  #if CYTHON_USE_FREELISTS
+  if (((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch)))) {
+    __pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch[__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch++] = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch *)o);
+  } else
+  #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 int __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch *)o;
+  if (p->__pyx_v_batch_operation_tag) {
+    e = (*v)(((PyObject *)p->__pyx_v_batch_operation_tag), a); if (e) return e;
+  }
+  if (p->__pyx_v_future) {
+    e = (*v)(p->__pyx_v_future, a); if (e) return e;
+  }
+  if (p->__pyx_v_grpc_call_error_string) {
+    e = (*v)(p->__pyx_v_grpc_call_error_string, a); if (e) return e;
+  }
+  if (p->__pyx_v_grpc_call_wrapper) {
+    e = (*v)(((PyObject *)p->__pyx_v_grpc_call_wrapper), a); if (e) return e;
+  }
+  if (p->__pyx_v_loop) {
+    e = (*v)(p->__pyx_v_loop, a); if (e) return e;
+  }
+  if (p->__pyx_v_operations) {
+    e = (*v)(p->__pyx_v_operations, a); if (e) return e;
+  }
+  if (p->__pyx_v_wrapper) {
+    e = (*v)(((PyObject *)p->__pyx_v_wrapper), a); if (e) return e;
+  }
+  return 0;
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch_spec = {
+  "_cython.cygrpc.__pyx_scope_struct_12_execute_batch",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_type_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""__pyx_scope_struct_12_execute_batch", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch, /*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
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_13__receive_message *__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_13__receive_message[8];
+static int __pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_13__receive_message = 0;
+#endif
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_13__receive_message(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 CYTHON_USE_FREELISTS
+  if (likely((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_13__receive_message > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_13__receive_message)))) {
+    o = (PyObject*)__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_13__receive_message[--__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_13__receive_message];
+    memset(o, 0, sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_13__receive_message));
+    (void) PyObject_INIT(o, t);
+    PyObject_GC_Track(o);
+  } else
+  #endif
+  {
+    o = (*t->tp_alloc)(t, 0);
+    if (unlikely(!o)) return 0;
+  }
+  #endif
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_13__receive_message(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_13__receive_message *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_13__receive_message *)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_7_cython_6cygrpc___pyx_scope_struct_13__receive_message) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->__pyx_v_e);
+  Py_CLEAR(p->__pyx_v_grpc_call_wrapper);
+  Py_CLEAR(p->__pyx_v_loop);
+  Py_CLEAR(p->__pyx_v_ops);
+  Py_CLEAR(p->__pyx_v_receive_op);
+  Py_CLEAR(p->__pyx_t_0);
+  Py_CLEAR(p->__pyx_t_1);
+  Py_CLEAR(p->__pyx_t_2);
+  #if CYTHON_USE_FREELISTS
+  if (((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_13__receive_message < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_13__receive_message)))) {
+    __pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_13__receive_message[__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_13__receive_message++] = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_13__receive_message *)o);
+  } else
+  #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 int __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_13__receive_message(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_13__receive_message *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_13__receive_message *)o;
+  if (p->__pyx_v_e) {
+    e = (*v)(p->__pyx_v_e, a); if (e) return e;
+  }
+  if (p->__pyx_v_grpc_call_wrapper) {
+    e = (*v)(((PyObject *)p->__pyx_v_grpc_call_wrapper), a); if (e) return e;
+  }
+  if (p->__pyx_v_loop) {
+    e = (*v)(p->__pyx_v_loop, a); if (e) return e;
+  }
+  if (p->__pyx_v_ops) {
+    e = (*v)(p->__pyx_v_ops, a); if (e) return e;
+  }
+  if (p->__pyx_v_receive_op) {
+    e = (*v)(((PyObject *)p->__pyx_v_receive_op), a); if (e) return e;
+  }
+  if (p->__pyx_t_0) {
+    e = (*v)(p->__pyx_t_0, a); if (e) return e;
+  }
+  if (p->__pyx_t_1) {
+    e = (*v)(p->__pyx_t_1, a); if (e) return e;
+  }
+  if (p->__pyx_t_2) {
+    e = (*v)(p->__pyx_t_2, a); if (e) return e;
+  }
+  return 0;
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc___pyx_scope_struct_13__receive_message_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_13__receive_message},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_13__receive_message},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_13__receive_message},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc___pyx_scope_struct_13__receive_message_spec = {
+  "_cython.cygrpc.__pyx_scope_struct_13__receive_message",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_13__receive_message),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_type_7_cython_6cygrpc___pyx_scope_struct_13__receive_message_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc___pyx_scope_struct_13__receive_message = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""__pyx_scope_struct_13__receive_message", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_13__receive_message), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_13__receive_message, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_13__receive_message, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_13__receive_message, /*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
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_14__send_message *__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_14__send_message[8];
+static int __pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_14__send_message = 0;
+#endif
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_14__send_message(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 CYTHON_USE_FREELISTS
+  if (likely((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_14__send_message > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_14__send_message)))) {
+    o = (PyObject*)__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_14__send_message[--__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_14__send_message];
+    memset(o, 0, sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_14__send_message));
+    (void) PyObject_INIT(o, t);
+    PyObject_GC_Track(o);
+  } else
+  #endif
+  {
+    o = (*t->tp_alloc)(t, 0);
+    if (unlikely(!o)) return 0;
+  }
+  #endif
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_14__send_message(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_14__send_message *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_14__send_message *)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_7_cython_6cygrpc___pyx_scope_struct_14__send_message) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->__pyx_v_grpc_call_wrapper);
+  Py_CLEAR(p->__pyx_v_loop);
+  Py_CLEAR(p->__pyx_v_message);
+  Py_CLEAR(p->__pyx_v_op);
+  Py_CLEAR(p->__pyx_v_ops);
+  Py_CLEAR(p->__pyx_v_send_initial_metadata_op);
+  #if CYTHON_USE_FREELISTS
+  if (((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_14__send_message < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_14__send_message)))) {
+    __pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_14__send_message[__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_14__send_message++] = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_14__send_message *)o);
+  } else
+  #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 int __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_14__send_message(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_14__send_message *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_14__send_message *)o;
+  if (p->__pyx_v_grpc_call_wrapper) {
+    e = (*v)(((PyObject *)p->__pyx_v_grpc_call_wrapper), a); if (e) return e;
+  }
+  if (p->__pyx_v_loop) {
+    e = (*v)(p->__pyx_v_loop, a); if (e) return e;
+  }
+  if (p->__pyx_v_op) {
+    e = (*v)(((PyObject *)p->__pyx_v_op), a); if (e) return e;
+  }
+  if (p->__pyx_v_ops) {
+    e = (*v)(p->__pyx_v_ops, a); if (e) return e;
+  }
+  if (p->__pyx_v_send_initial_metadata_op) {
+    e = (*v)(((PyObject *)p->__pyx_v_send_initial_metadata_op), a); if (e) return e;
+  }
+  return 0;
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc___pyx_scope_struct_14__send_message_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_14__send_message},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_14__send_message},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_14__send_message},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc___pyx_scope_struct_14__send_message_spec = {
+  "_cython.cygrpc.__pyx_scope_struct_14__send_message",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_14__send_message),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_type_7_cython_6cygrpc___pyx_scope_struct_14__send_message_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc___pyx_scope_struct_14__send_message = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""__pyx_scope_struct_14__send_message", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_14__send_message), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_14__send_message, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_14__send_message, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_14__send_message, /*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
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata *__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata[8];
+static int __pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata = 0;
+#endif
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata(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 CYTHON_USE_FREELISTS
+  if (likely((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata)))) {
+    o = (PyObject*)__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata[--__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata];
+    memset(o, 0, sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata));
+    (void) PyObject_INIT(o, t);
+    PyObject_GC_Track(o);
+  } else
+  #endif
+  {
+    o = (*t->tp_alloc)(t, 0);
+    if (unlikely(!o)) return 0;
+  }
+  #endif
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata *)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_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->__pyx_v_grpc_call_wrapper);
+  Py_CLEAR(p->__pyx_v_loop);
+  Py_CLEAR(p->__pyx_v_metadata);
+  Py_CLEAR(p->__pyx_v_op);
+  Py_CLEAR(p->__pyx_v_ops);
+  #if CYTHON_USE_FREELISTS
+  if (((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata)))) {
+    __pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata[__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata++] = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata *)o);
+  } else
+  #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 int __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata *)o;
+  if (p->__pyx_v_grpc_call_wrapper) {
+    e = (*v)(((PyObject *)p->__pyx_v_grpc_call_wrapper), a); if (e) return e;
+  }
+  if (p->__pyx_v_loop) {
+    e = (*v)(p->__pyx_v_loop, a); if (e) return e;
+  }
+  if (p->__pyx_v_metadata) {
+    e = (*v)(p->__pyx_v_metadata, a); if (e) return e;
+  }
+  if (p->__pyx_v_op) {
+    e = (*v)(((PyObject *)p->__pyx_v_op), a); if (e) return e;
+  }
+  if (p->__pyx_v_ops) {
+    e = (*v)(p->__pyx_v_ops, a); if (e) return e;
+  }
+  return 0;
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata_spec = {
+  "_cython.cygrpc.__pyx_scope_struct_15__send_initial_metadata",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_type_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""__pyx_scope_struct_15__send_initial_metadata", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata, /*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
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata *__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata[8];
+static int __pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata = 0;
+#endif
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata(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 CYTHON_USE_FREELISTS
+  if (likely((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata)))) {
+    o = (PyObject*)__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata[--__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata];
+    memset(o, 0, sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata));
+    (void) PyObject_INIT(o, t);
+    PyObject_GC_Track(o);
+  } else
+  #endif
+  {
+    o = (*t->tp_alloc)(t, 0);
+    if (unlikely(!o)) return 0;
+  }
+  #endif
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata *)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_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->__pyx_v_grpc_call_wrapper);
+  Py_CLEAR(p->__pyx_v_loop);
+  Py_CLEAR(p->__pyx_v_op);
+  Py_CLEAR(p->__pyx_v_ops);
+  #if CYTHON_USE_FREELISTS
+  if (((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata)))) {
+    __pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata[__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata++] = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata *)o);
+  } else
+  #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 int __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata *)o;
+  if (p->__pyx_v_grpc_call_wrapper) {
+    e = (*v)(((PyObject *)p->__pyx_v_grpc_call_wrapper), a); if (e) return e;
+  }
+  if (p->__pyx_v_loop) {
+    e = (*v)(p->__pyx_v_loop, a); if (e) return e;
+  }
+  if (p->__pyx_v_op) {
+    e = (*v)(((PyObject *)p->__pyx_v_op), a); if (e) return e;
+  }
+  if (p->__pyx_v_ops) {
+    e = (*v)(p->__pyx_v_ops, a); if (e) return e;
+  }
+  return 0;
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata_spec = {
+  "_cython.cygrpc.__pyx_scope_struct_16__receive_initial_metadata",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_type_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""__pyx_scope_struct_16__receive_initial_metadata", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata, /*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
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server *__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server[8];
+static int __pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server = 0;
+#endif
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server(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 CYTHON_USE_FREELISTS
+  if (likely((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server)))) {
+    o = (PyObject*)__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server[--__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server];
+    memset(o, 0, sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server));
+    (void) PyObject_INIT(o, t);
+    PyObject_GC_Track(o);
+  } else
+  #endif
+  {
+    o = (*t->tp_alloc)(t, 0);
+    if (unlikely(!o)) return 0;
+  }
+  #endif
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server *)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_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->__pyx_v_details);
+  Py_CLEAR(p->__pyx_v_grpc_call_wrapper);
+  Py_CLEAR(p->__pyx_v_loop);
+  Py_CLEAR(p->__pyx_v_op);
+  Py_CLEAR(p->__pyx_v_ops);
+  Py_CLEAR(p->__pyx_v_send_initial_metadata_op);
+  Py_CLEAR(p->__pyx_v_trailing_metadata);
+  #if CYTHON_USE_FREELISTS
+  if (((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server)))) {
+    __pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server[__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server++] = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server *)o);
+  } else
+  #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 int __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server *)o;
+  if (p->__pyx_v_grpc_call_wrapper) {
+    e = (*v)(((PyObject *)p->__pyx_v_grpc_call_wrapper), a); if (e) return e;
+  }
+  if (p->__pyx_v_loop) {
+    e = (*v)(p->__pyx_v_loop, a); if (e) return e;
+  }
+  if (p->__pyx_v_op) {
+    e = (*v)(((PyObject *)p->__pyx_v_op), a); if (e) return e;
+  }
+  if (p->__pyx_v_ops) {
+    e = (*v)(p->__pyx_v_ops, a); if (e) return e;
+  }
+  if (p->__pyx_v_send_initial_metadata_op) {
+    e = (*v)(((PyObject *)p->__pyx_v_send_initial_metadata_op), a); if (e) return e;
+  }
+  if (p->__pyx_v_trailing_metadata) {
+    e = (*v)(p->__pyx_v_trailing_metadata, a); if (e) return e;
+  }
+  return 0;
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server_spec = {
+  "_cython.cygrpc.__pyx_scope_struct_17__send_error_status_from_server",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_type_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""__pyx_scope_struct_17__send_error_status_from_server", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server, /*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
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_18_status *__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_18_status[8];
+static int __pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_18_status = 0;
+#endif
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_18_status(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 CYTHON_USE_FREELISTS
+  if (likely((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_18_status > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_18_status)))) {
+    o = (PyObject*)__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_18_status[--__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_18_status];
+    memset(o, 0, sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_18_status));
+    (void) PyObject_INIT(o, t);
+    PyObject_GC_Track(o);
+  } else
+  #endif
+  {
+    o = (*t->tp_alloc)(t, 0);
+    if (unlikely(!o)) return 0;
+  }
+  #endif
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_18_status(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_18_status *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_18_status *)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_7_cython_6cygrpc___pyx_scope_struct_18_status) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->__pyx_v_future);
+  Py_CLEAR(p->__pyx_v_self);
+  #if CYTHON_USE_FREELISTS
+  if (((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_18_status < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_18_status)))) {
+    __pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_18_status[__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_18_status++] = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_18_status *)o);
+  } else
+  #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 int __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_18_status(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_18_status *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_18_status *)o;
+  if (p->__pyx_v_future) {
+    e = (*v)(p->__pyx_v_future, a); if (e) return e;
+  }
+  if (p->__pyx_v_self) {
+    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
+  }
+  return 0;
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc___pyx_scope_struct_18_status_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_18_status},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_18_status},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_18_status},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc___pyx_scope_struct_18_status_spec = {
+  "_cython.cygrpc.__pyx_scope_struct_18_status",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_18_status),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_type_7_cython_6cygrpc___pyx_scope_struct_18_status_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc___pyx_scope_struct_18_status = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""__pyx_scope_struct_18_status", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_18_status), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_18_status, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_18_status, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_18_status, /*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
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata *__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata[8];
+static int __pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata = 0;
+#endif
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata(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 CYTHON_USE_FREELISTS
+  if (likely((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata)))) {
+    o = (PyObject*)__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata[--__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata];
+    memset(o, 0, sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata));
+    (void) PyObject_INIT(o, t);
+    PyObject_GC_Track(o);
+  } else
+  #endif
+  {
+    o = (*t->tp_alloc)(t, 0);
+    if (unlikely(!o)) return 0;
+  }
+  #endif
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata *)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_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->__pyx_v_future);
+  Py_CLEAR(p->__pyx_v_self);
+  #if CYTHON_USE_FREELISTS
+  if (((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata)))) {
+    __pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata[__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata++] = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata *)o);
+  } else
+  #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 int __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata *)o;
+  if (p->__pyx_v_future) {
+    e = (*v)(p->__pyx_v_future, a); if (e) return e;
+  }
+  if (p->__pyx_v_self) {
+    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
+  }
+  return 0;
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata_spec = {
+  "_cython.cygrpc.__pyx_scope_struct_19_initial_metadata",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_type_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""__pyx_scope_struct_19_initial_metadata", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata, /*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
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary *__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary[8];
+static int __pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary = 0;
+#endif
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary(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 CYTHON_USE_FREELISTS
+  if (likely((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary)))) {
+    o = (PyObject*)__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary[--__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary];
+    memset(o, 0, sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary));
+    (void) PyObject_INIT(o, t);
+    PyObject_GC_Track(o);
+  } else
+  #endif
+  {
+    o = (*t->tp_alloc)(t, 0);
+    if (unlikely(!o)) return 0;
+  }
+  #endif
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary *)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_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->__pyx_v_context);
+  Py_CLEAR(p->__pyx_v_initial_metadata_op);
+  Py_CLEAR(p->__pyx_v_ops);
+  Py_CLEAR(p->__pyx_v_outbound_initial_metadata);
+  Py_CLEAR(p->__pyx_v_receive_initial_metadata_op);
+  Py_CLEAR(p->__pyx_v_receive_message_op);
+  Py_CLEAR(p->__pyx_v_receive_status_on_client_op);
+  Py_CLEAR(p->__pyx_v_request);
+  Py_CLEAR(p->__pyx_v_self);
+  Py_CLEAR(p->__pyx_v_send_close_op);
+  Py_CLEAR(p->__pyx_v_send_message_op);
+  #if CYTHON_USE_FREELISTS
+  if (((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary)))) {
+    __pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary[__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary++] = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary *)o);
+  } else
+  #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 int __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary *)o;
+  if (p->__pyx_v_context) {
+    e = (*v)(p->__pyx_v_context, a); if (e) return e;
+  }
+  if (p->__pyx_v_initial_metadata_op) {
+    e = (*v)(((PyObject *)p->__pyx_v_initial_metadata_op), a); if (e) return e;
+  }
+  if (p->__pyx_v_ops) {
+    e = (*v)(p->__pyx_v_ops, a); if (e) return e;
+  }
+  if (p->__pyx_v_outbound_initial_metadata) {
+    e = (*v)(p->__pyx_v_outbound_initial_metadata, a); if (e) return e;
+  }
+  if (p->__pyx_v_receive_initial_metadata_op) {
+    e = (*v)(((PyObject *)p->__pyx_v_receive_initial_metadata_op), a); if (e) return e;
+  }
+  if (p->__pyx_v_receive_message_op) {
+    e = (*v)(((PyObject *)p->__pyx_v_receive_message_op), a); if (e) return e;
+  }
+  if (p->__pyx_v_receive_status_on_client_op) {
+    e = (*v)(((PyObject *)p->__pyx_v_receive_status_on_client_op), a); if (e) return e;
+  }
+  if (p->__pyx_v_self) {
+    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
+  }
+  if (p->__pyx_v_send_close_op) {
+    e = (*v)(((PyObject *)p->__pyx_v_send_close_op), a); if (e) return e;
+  }
+  if (p->__pyx_v_send_message_op) {
+    e = (*v)(((PyObject *)p->__pyx_v_send_message_op), a); if (e) return e;
+  }
+  return 0;
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary_spec = {
+  "_cython.cygrpc.__pyx_scope_struct_20_unary_unary",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_type_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""__pyx_scope_struct_20_unary_unary", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary, /*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
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received *__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received[8];
+static int __pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received = 0;
+#endif
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received(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 CYTHON_USE_FREELISTS
+  if (likely((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received)))) {
+    o = (PyObject*)__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received[--__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received];
+    memset(o, 0, sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received));
+    (void) PyObject_INIT(o, t);
+    PyObject_GC_Track(o);
+  } else
+  #endif
+  {
+    o = (*t->tp_alloc)(t, 0);
+    if (unlikely(!o)) return 0;
+  }
+  #endif
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received *)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_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->__pyx_v_op);
+  Py_CLEAR(p->__pyx_v_ops);
+  Py_CLEAR(p->__pyx_v_self);
+  #if CYTHON_USE_FREELISTS
+  if (((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received)))) {
+    __pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received[__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received++] = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received *)o);
+  } else
+  #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 int __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received *)o;
+  if (p->__pyx_v_op) {
+    e = (*v)(((PyObject *)p->__pyx_v_op), a); if (e) return e;
+  }
+  if (p->__pyx_v_ops) {
+    e = (*v)(p->__pyx_v_ops, a); if (e) return e;
+  }
+  if (p->__pyx_v_self) {
+    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
+  }
+  return 0;
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received_spec = {
+  "_cython.cygrpc.__pyx_scope_struct_21__handle_status_once_received",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_type_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""__pyx_scope_struct_21__handle_status_once_received", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received, /*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
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message *__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message[8];
+static int __pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message = 0;
+#endif
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message(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 CYTHON_USE_FREELISTS
+  if (likely((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message)))) {
+    o = (PyObject*)__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message[--__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message];
+    memset(o, 0, sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message));
+    (void) PyObject_INIT(o, t);
+    PyObject_GC_Track(o);
+  } else
+  #endif
+  {
+    o = (*t->tp_alloc)(t, 0);
+    if (unlikely(!o)) return 0;
+  }
+  #endif
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message *)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_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->__pyx_v_received_message);
+  Py_CLEAR(p->__pyx_v_self);
+  #if CYTHON_USE_FREELISTS
+  if (((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message)))) {
+    __pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message[__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message++] = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message *)o);
+  } else
+  #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 int __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message *)o;
+  if (p->__pyx_v_self) {
+    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
+  }
+  return 0;
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message_spec = {
+  "_cython.cygrpc.__pyx_scope_struct_22_receive_serialized_message",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_type_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""__pyx_scope_struct_22_receive_serialized_message", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message, /*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
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message *__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message[8];
+static int __pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message = 0;
+#endif
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message(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 CYTHON_USE_FREELISTS
+  if (likely((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message)))) {
+    o = (PyObject*)__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message[--__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message];
+    memset(o, 0, sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message));
+    (void) PyObject_INIT(o, t);
+    PyObject_GC_Track(o);
+  } else
+  #endif
+  {
+    o = (*t->tp_alloc)(t, 0);
+    if (unlikely(!o)) return 0;
+  }
+  #endif
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message *)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_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->__pyx_v_message);
+  Py_CLEAR(p->__pyx_v_self);
+  #if CYTHON_USE_FREELISTS
+  if (((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message)))) {
+    __pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message[__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message++] = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message *)o);
+  } else
+  #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 int __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message *)o;
+  if (p->__pyx_v_self) {
+    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
+  }
+  return 0;
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message_spec = {
+  "_cython.cygrpc.__pyx_scope_struct_23_send_serialized_message",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_type_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""__pyx_scope_struct_23_send_serialized_message", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message, /*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
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close *__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close[8];
+static int __pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close = 0;
+#endif
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close(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 CYTHON_USE_FREELISTS
+  if (likely((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close)))) {
+    o = (PyObject*)__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close[--__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close];
+    memset(o, 0, sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close));
+    (void) PyObject_INIT(o, t);
+    PyObject_GC_Track(o);
+  } else
+  #endif
+  {
+    o = (*t->tp_alloc)(t, 0);
+    if (unlikely(!o)) return 0;
+  }
+  #endif
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close *)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_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->__pyx_v_op);
+  Py_CLEAR(p->__pyx_v_ops);
+  Py_CLEAR(p->__pyx_v_self);
+  #if CYTHON_USE_FREELISTS
+  if (((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close)))) {
+    __pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close[__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close++] = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close *)o);
+  } else
+  #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 int __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close *)o;
+  if (p->__pyx_v_op) {
+    e = (*v)(((PyObject *)p->__pyx_v_op), a); if (e) return e;
+  }
+  if (p->__pyx_v_ops) {
+    e = (*v)(p->__pyx_v_ops, a); if (e) return e;
+  }
+  if (p->__pyx_v_self) {
+    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
+  }
+  return 0;
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close_spec = {
+  "_cython.cygrpc.__pyx_scope_struct_24_send_receive_close",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_type_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""__pyx_scope_struct_24_send_receive_close", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close, /*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
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream *__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream[8];
+static int __pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream = 0;
+#endif
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream(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 CYTHON_USE_FREELISTS
+  if (likely((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream)))) {
+    o = (PyObject*)__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream[--__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream];
+    memset(o, 0, sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream));
+    (void) PyObject_INIT(o, t);
+    PyObject_GC_Track(o);
+  } else
+  #endif
+  {
+    o = (*t->tp_alloc)(t, 0);
+    if (unlikely(!o)) return 0;
+  }
+  #endif
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream *)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_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->__pyx_v_batch_error);
+  Py_CLEAR(p->__pyx_v_context);
+  Py_CLEAR(p->__pyx_v_initial_metadata_op);
+  Py_CLEAR(p->__pyx_v_outbound_initial_metadata);
+  Py_CLEAR(p->__pyx_v_outbound_ops);
+  Py_CLEAR(p->__pyx_v_request);
+  Py_CLEAR(p->__pyx_v_self);
+  Py_CLEAR(p->__pyx_v_send_close_op);
+  Py_CLEAR(p->__pyx_v_send_message_op);
+  Py_CLEAR(p->__pyx_v_status_task);
+  Py_CLEAR(p->__pyx_t_0);
+  Py_CLEAR(p->__pyx_t_1);
+  Py_CLEAR(p->__pyx_t_2);
+  Py_CLEAR(p->__pyx_t_3);
+  Py_CLEAR(p->__pyx_t_4);
+  Py_CLEAR(p->__pyx_t_5);
+  #if CYTHON_USE_FREELISTS
+  if (((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream)))) {
+    __pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream[__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream++] = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream *)o);
+  } else
+  #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 int __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream *)o;
+  if (p->__pyx_v_batch_error) {
+    e = (*v)(p->__pyx_v_batch_error, a); if (e) return e;
+  }
+  if (p->__pyx_v_context) {
+    e = (*v)(p->__pyx_v_context, a); if (e) return e;
+  }
+  if (p->__pyx_v_initial_metadata_op) {
+    e = (*v)(((PyObject *)p->__pyx_v_initial_metadata_op), a); if (e) return e;
+  }
+  if (p->__pyx_v_outbound_initial_metadata) {
+    e = (*v)(p->__pyx_v_outbound_initial_metadata, a); if (e) return e;
+  }
+  if (p->__pyx_v_outbound_ops) {
+    e = (*v)(p->__pyx_v_outbound_ops, a); if (e) return e;
+  }
+  if (p->__pyx_v_self) {
+    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
+  }
+  if (p->__pyx_v_send_close_op) {
+    e = (*v)(((PyObject *)p->__pyx_v_send_close_op), a); if (e) return e;
+  }
+  if (p->__pyx_v_send_message_op) {
+    e = (*v)(((PyObject *)p->__pyx_v_send_message_op), a); if (e) return e;
+  }
+  if (p->__pyx_v_status_task) {
+    e = (*v)(p->__pyx_v_status_task, a); if (e) return e;
+  }
+  if (p->__pyx_t_0) {
+    e = (*v)(p->__pyx_t_0, a); if (e) return e;
+  }
+  if (p->__pyx_t_1) {
+    e = (*v)(p->__pyx_t_1, a); if (e) return e;
+  }
+  if (p->__pyx_t_2) {
+    e = (*v)(p->__pyx_t_2, a); if (e) return e;
+  }
+  if (p->__pyx_t_3) {
+    e = (*v)(p->__pyx_t_3, a); if (e) return e;
+  }
+  if (p->__pyx_t_4) {
+    e = (*v)(p->__pyx_t_4, a); if (e) return e;
+  }
+  if (p->__pyx_t_5) {
+    e = (*v)(p->__pyx_t_5, a); if (e) return e;
+  }
+  return 0;
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream_spec = {
+  "_cython.cygrpc.__pyx_scope_struct_25_initiate_unary_stream",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_type_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""__pyx_scope_struct_25_initiate_unary_stream", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream, /*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
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary *__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary[8];
+static int __pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary = 0;
+#endif
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary(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 CYTHON_USE_FREELISTS
+  if (likely((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary)))) {
+    o = (PyObject*)__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary[--__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary];
+    memset(o, 0, sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary));
+    (void) PyObject_INIT(o, t);
+    PyObject_GC_Track(o);
+  } else
+  #endif
+  {
+    o = (*t->tp_alloc)(t, 0);
+    if (unlikely(!o)) return 0;
+  }
+  #endif
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary *)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_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->__pyx_v_context);
+  Py_CLEAR(p->__pyx_v_inbound_ops);
+  Py_CLEAR(p->__pyx_v_metadata_sent_observer);
+  Py_CLEAR(p->__pyx_v_outbound_initial_metadata);
+  Py_CLEAR(p->__pyx_v_receive_message_op);
+  Py_CLEAR(p->__pyx_v_receive_status_on_client_op);
+  Py_CLEAR(p->__pyx_v_self);
+  Py_CLEAR(p->__pyx_t_0);
+  Py_CLEAR(p->__pyx_t_1);
+  Py_CLEAR(p->__pyx_t_2);
+  Py_CLEAR(p->__pyx_t_3);
+  Py_CLEAR(p->__pyx_t_4);
+  Py_CLEAR(p->__pyx_t_5);
+  #if CYTHON_USE_FREELISTS
+  if (((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary)))) {
+    __pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary[__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary++] = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary *)o);
+  } else
+  #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 int __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary *)o;
+  if (p->__pyx_v_context) {
+    e = (*v)(p->__pyx_v_context, a); if (e) return e;
+  }
+  if (p->__pyx_v_inbound_ops) {
+    e = (*v)(p->__pyx_v_inbound_ops, a); if (e) return e;
+  }
+  if (p->__pyx_v_metadata_sent_observer) {
+    e = (*v)(p->__pyx_v_metadata_sent_observer, a); if (e) return e;
+  }
+  if (p->__pyx_v_outbound_initial_metadata) {
+    e = (*v)(p->__pyx_v_outbound_initial_metadata, a); if (e) return e;
+  }
+  if (p->__pyx_v_receive_message_op) {
+    e = (*v)(((PyObject *)p->__pyx_v_receive_message_op), a); if (e) return e;
+  }
+  if (p->__pyx_v_receive_status_on_client_op) {
+    e = (*v)(((PyObject *)p->__pyx_v_receive_status_on_client_op), a); if (e) return e;
+  }
+  if (p->__pyx_v_self) {
+    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
+  }
+  if (p->__pyx_t_0) {
+    e = (*v)(p->__pyx_t_0, a); if (e) return e;
+  }
+  if (p->__pyx_t_1) {
+    e = (*v)(p->__pyx_t_1, a); if (e) return e;
+  }
+  if (p->__pyx_t_2) {
+    e = (*v)(p->__pyx_t_2, a); if (e) return e;
+  }
+  if (p->__pyx_t_3) {
+    e = (*v)(p->__pyx_t_3, a); if (e) return e;
+  }
+  if (p->__pyx_t_4) {
+    e = (*v)(p->__pyx_t_4, a); if (e) return e;
+  }
+  if (p->__pyx_t_5) {
+    e = (*v)(p->__pyx_t_5, a); if (e) return e;
+  }
+  return 0;
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary_spec = {
+  "_cython.cygrpc.__pyx_scope_struct_26_stream_unary",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_type_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""__pyx_scope_struct_26_stream_unary", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary, /*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
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream *__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream[8];
+static int __pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream = 0;
+#endif
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream(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 CYTHON_USE_FREELISTS
+  if (likely((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream)))) {
+    o = (PyObject*)__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream[--__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream];
+    memset(o, 0, sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream));
+    (void) PyObject_INIT(o, t);
+    PyObject_GC_Track(o);
+  } else
+  #endif
+  {
+    o = (*t->tp_alloc)(t, 0);
+    if (unlikely(!o)) return 0;
+  }
+  #endif
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream *)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_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->__pyx_v_batch_error);
+  Py_CLEAR(p->__pyx_v_context);
+  Py_CLEAR(p->__pyx_v_metadata_sent_observer);
+  Py_CLEAR(p->__pyx_v_outbound_initial_metadata);
+  Py_CLEAR(p->__pyx_v_self);
+  Py_CLEAR(p->__pyx_v_status_task);
+  Py_CLEAR(p->__pyx_t_0);
+  Py_CLEAR(p->__pyx_t_1);
+  Py_CLEAR(p->__pyx_t_2);
+  Py_CLEAR(p->__pyx_t_3);
+  Py_CLEAR(p->__pyx_t_4);
+  Py_CLEAR(p->__pyx_t_5);
+  #if CYTHON_USE_FREELISTS
+  if (((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream)))) {
+    __pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream[__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream++] = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream *)o);
+  } else
+  #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 int __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream *)o;
+  if (p->__pyx_v_batch_error) {
+    e = (*v)(p->__pyx_v_batch_error, a); if (e) return e;
+  }
+  if (p->__pyx_v_context) {
+    e = (*v)(p->__pyx_v_context, a); if (e) return e;
+  }
+  if (p->__pyx_v_metadata_sent_observer) {
+    e = (*v)(p->__pyx_v_metadata_sent_observer, a); if (e) return e;
+  }
+  if (p->__pyx_v_outbound_initial_metadata) {
+    e = (*v)(p->__pyx_v_outbound_initial_metadata, a); if (e) return e;
+  }
+  if (p->__pyx_v_self) {
+    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
+  }
+  if (p->__pyx_v_status_task) {
+    e = (*v)(p->__pyx_v_status_task, a); if (e) return e;
+  }
+  if (p->__pyx_t_0) {
+    e = (*v)(p->__pyx_t_0, a); if (e) return e;
+  }
+  if (p->__pyx_t_1) {
+    e = (*v)(p->__pyx_t_1, a); if (e) return e;
+  }
+  if (p->__pyx_t_2) {
+    e = (*v)(p->__pyx_t_2, a); if (e) return e;
+  }
+  if (p->__pyx_t_3) {
+    e = (*v)(p->__pyx_t_3, a); if (e) return e;
+  }
+  if (p->__pyx_t_4) {
+    e = (*v)(p->__pyx_t_4, a); if (e) return e;
+  }
+  if (p->__pyx_t_5) {
+    e = (*v)(p->__pyx_t_5, a); if (e) return e;
+  }
+  return 0;
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream_spec = {
+  "_cython.cygrpc.__pyx_scope_struct_27_initiate_stream_stream",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_type_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""__pyx_scope_struct_27_initiate_stream_stream", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream, /*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
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state *__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state[8];
+static int __pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state = 0;
+#endif
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state *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 CYTHON_USE_FREELISTS
+  if (likely((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state)))) {
+    o = (PyObject*)__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state[--__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state];
+    memset(o, 0, sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state));
+    (void) PyObject_INIT(o, t);
+    PyObject_GC_Track(o);
+  } else
+  #endif
+  {
+    o = (*t->tp_alloc)(t, 0);
+    if (unlikely(!o)) return 0;
+  }
+  #endif
+  p = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state *)o);
+  new((void*)&(p->__pyx_v_c_deadline)) gpr_timespec();
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state *)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_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  __Pyx_call_destructor(p->__pyx_v_c_deadline);
+  Py_CLEAR(p->__pyx_v_deadline);
+  Py_CLEAR(p->__pyx_v_future);
+  Py_CLEAR(p->__pyx_v_self);
+  Py_CLEAR(p->__pyx_v_wrapper);
+  Py_CLEAR(p->__pyx_t_0);
+  Py_CLEAR(p->__pyx_t_1);
+  Py_CLEAR(p->__pyx_t_2);
+  #if CYTHON_USE_FREELISTS
+  if (((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state)))) {
+    __pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state[__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state++] = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state *)o);
+  } else
+  #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 int __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state *)o;
+  if (p->__pyx_v_deadline) {
+    e = (*v)(p->__pyx_v_deadline, a); if (e) return e;
+  }
+  if (p->__pyx_v_future) {
+    e = (*v)(p->__pyx_v_future, a); if (e) return e;
+  }
+  if (p->__pyx_v_self) {
+    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
+  }
+  if (p->__pyx_v_wrapper) {
+    e = (*v)(((PyObject *)p->__pyx_v_wrapper), a); if (e) return e;
+  }
+  if (p->__pyx_t_0) {
+    e = (*v)(p->__pyx_t_0, a); if (e) return e;
+  }
+  if (p->__pyx_t_1) {
+    e = (*v)(p->__pyx_t_1, a); if (e) return e;
+  }
+  if (p->__pyx_t_2) {
+    e = (*v)(p->__pyx_t_2, a); if (e) return e;
+  }
+  return 0;
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state_spec = {
+  "_cython.cygrpc.__pyx_scope_struct_28_watch_connectivity_state",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_type_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""__pyx_scope_struct_28_watch_connectivity_state", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state, /*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
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_29_read *__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_29_read[8];
+static int __pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_29_read = 0;
+#endif
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_29_read(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 CYTHON_USE_FREELISTS
+  if (likely((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_29_read > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_29_read)))) {
+    o = (PyObject*)__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_29_read[--__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_29_read];
+    memset(o, 0, sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_29_read));
+    (void) PyObject_INIT(o, t);
+    PyObject_GC_Track(o);
+  } else
+  #endif
+  {
+    o = (*t->tp_alloc)(t, 0);
+    if (unlikely(!o)) return 0;
+  }
+  #endif
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_29_read(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_29_read *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_29_read *)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_7_cython_6cygrpc___pyx_scope_struct_29_read) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->__pyx_v_raw_message);
+  Py_CLEAR(p->__pyx_v_self);
+  #if CYTHON_USE_FREELISTS
+  if (((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_29_read < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_29_read)))) {
+    __pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_29_read[__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_29_read++] = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_29_read *)o);
+  } else
+  #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 int __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_29_read(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_29_read *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_29_read *)o;
+  if (p->__pyx_v_self) {
+    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
+  }
+  return 0;
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc___pyx_scope_struct_29_read_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_29_read},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_29_read},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_29_read},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc___pyx_scope_struct_29_read_spec = {
+  "_cython.cygrpc.__pyx_scope_struct_29_read",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_29_read),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_type_7_cython_6cygrpc___pyx_scope_struct_29_read_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc___pyx_scope_struct_29_read = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""__pyx_scope_struct_29_read", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_29_read), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_29_read, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_29_read, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_29_read, /*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
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_30_write *__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_30_write[8];
+static int __pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_30_write = 0;
+#endif
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_30_write(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 CYTHON_USE_FREELISTS
+  if (likely((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_30_write > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_30_write)))) {
+    o = (PyObject*)__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_30_write[--__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_30_write];
+    memset(o, 0, sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_30_write));
+    (void) PyObject_INIT(o, t);
+    PyObject_GC_Track(o);
+  } else
+  #endif
+  {
+    o = (*t->tp_alloc)(t, 0);
+    if (unlikely(!o)) return 0;
+  }
+  #endif
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_30_write(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_30_write *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_30_write *)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_7_cython_6cygrpc___pyx_scope_struct_30_write) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->__pyx_v_message);
+  Py_CLEAR(p->__pyx_v_self);
+  #if CYTHON_USE_FREELISTS
+  if (((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_30_write < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_30_write)))) {
+    __pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_30_write[__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_30_write++] = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_30_write *)o);
+  } else
+  #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 int __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_30_write(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_30_write *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_30_write *)o;
+  if (p->__pyx_v_message) {
+    e = (*v)(p->__pyx_v_message, a); if (e) return e;
+  }
+  if (p->__pyx_v_self) {
+    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
+  }
+  return 0;
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc___pyx_scope_struct_30_write_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_30_write},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_30_write},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_30_write},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc___pyx_scope_struct_30_write_spec = {
+  "_cython.cygrpc.__pyx_scope_struct_30_write",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_30_write),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_type_7_cython_6cygrpc___pyx_scope_struct_30_write_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc___pyx_scope_struct_30_write = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""__pyx_scope_struct_30_write", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_30_write), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_30_write, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_30_write, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_30_write, /*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
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata *__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata[8];
+static int __pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata = 0;
+#endif
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata(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 CYTHON_USE_FREELISTS
+  if (likely((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata)))) {
+    o = (PyObject*)__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata[--__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata];
+    memset(o, 0, sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata));
+    (void) PyObject_INIT(o, t);
+    PyObject_GC_Track(o);
+  } else
+  #endif
+  {
+    o = (*t->tp_alloc)(t, 0);
+    if (unlikely(!o)) return 0;
+  }
+  #endif
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata *)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_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->__pyx_v_metadata);
+  Py_CLEAR(p->__pyx_v_self);
+  #if CYTHON_USE_FREELISTS
+  if (((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata)))) {
+    __pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata[__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata++] = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata *)o);
+  } else
+  #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 int __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata *)o;
+  if (p->__pyx_v_metadata) {
+    e = (*v)(p->__pyx_v_metadata, a); if (e) return e;
+  }
+  if (p->__pyx_v_self) {
+    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
+  }
+  return 0;
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata_spec = {
+  "_cython.cygrpc.__pyx_scope_struct_31_send_initial_metadata",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_type_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""__pyx_scope_struct_31_send_initial_metadata", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata, /*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
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_32_abort *__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_32_abort[8];
+static int __pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_32_abort = 0;
+#endif
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_32_abort(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 CYTHON_USE_FREELISTS
+  if (likely((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_32_abort > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_32_abort)))) {
+    o = (PyObject*)__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_32_abort[--__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_32_abort];
+    memset(o, 0, sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_32_abort));
+    (void) PyObject_INIT(o, t);
+    PyObject_GC_Track(o);
+  } else
+  #endif
+  {
+    o = (*t->tp_alloc)(t, 0);
+    if (unlikely(!o)) return 0;
+  }
+  #endif
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_32_abort(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_32_abort *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_32_abort *)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_7_cython_6cygrpc___pyx_scope_struct_32_abort) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->__pyx_v_code);
+  Py_CLEAR(p->__pyx_v_details);
+  Py_CLEAR(p->__pyx_v_self);
+  Py_CLEAR(p->__pyx_v_trailing_metadata);
+  #if CYTHON_USE_FREELISTS
+  if (((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_32_abort < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_32_abort)))) {
+    __pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_32_abort[__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_32_abort++] = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_32_abort *)o);
+  } else
+  #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 int __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_32_abort(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_32_abort *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_32_abort *)o;
+  if (p->__pyx_v_code) {
+    e = (*v)(p->__pyx_v_code, a); if (e) return e;
+  }
+  if (p->__pyx_v_self) {
+    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
+  }
+  if (p->__pyx_v_trailing_metadata) {
+    e = (*v)(p->__pyx_v_trailing_metadata, a); if (e) return e;
+  }
+  return 0;
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc___pyx_scope_struct_32_abort_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_32_abort},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_32_abort},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_32_abort},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc___pyx_scope_struct_32_abort_spec = {
+  "_cython.cygrpc.__pyx_scope_struct_32_abort",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_32_abort),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_type_7_cython_6cygrpc___pyx_scope_struct_32_abort_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc___pyx_scope_struct_32_abort = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""__pyx_scope_struct_32_abort", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_32_abort), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_32_abort, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_32_abort, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_32_abort, /*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
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status *__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status[8];
+static int __pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status = 0;
+#endif
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status(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 CYTHON_USE_FREELISTS
+  if (likely((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status)))) {
+    o = (PyObject*)__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status[--__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status];
+    memset(o, 0, sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status));
+    (void) PyObject_INIT(o, t);
+    PyObject_GC_Track(o);
+  } else
+  #endif
+  {
+    o = (*t->tp_alloc)(t, 0);
+    if (unlikely(!o)) return 0;
+  }
+  #endif
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status *)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_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->__pyx_v_self);
+  Py_CLEAR(p->__pyx_v_status);
+  #if CYTHON_USE_FREELISTS
+  if (((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status)))) {
+    __pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status[__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status++] = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status *)o);
+  } else
+  #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 int __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status *)o;
+  if (p->__pyx_v_self) {
+    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
+  }
+  if (p->__pyx_v_status) {
+    e = (*v)(p->__pyx_v_status, a); if (e) return e;
+  }
+  return 0;
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status_spec = {
+  "_cython.cygrpc.__pyx_scope_struct_33_abort_with_status",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_type_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""__pyx_scope_struct_33_abort_with_status", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status, /*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
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor *__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor[8];
+static int __pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor = 0;
+#endif
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor(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 CYTHON_USE_FREELISTS
+  if (likely((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor)))) {
+    o = (PyObject*)__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor[--__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor];
+    memset(o, 0, sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor));
+    (void) PyObject_INIT(o, t);
+    PyObject_GC_Track(o);
+  } else
+  #endif
+  {
+    o = (*t->tp_alloc)(t, 0);
+    if (unlikely(!o)) return 0;
+  }
+  #endif
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor *)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_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->__pyx_v_continuation);
+  Py_CLEAR(p->__pyx_v_handler_call_details);
+  Py_CLEAR(p->__pyx_v_interceptor);
+  Py_CLEAR(p->__pyx_v_interceptors);
+  Py_CLEAR(p->__pyx_v_query_handler);
+  #if CYTHON_USE_FREELISTS
+  if (((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor)))) {
+    __pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor[__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor++] = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor *)o);
+  } else
+  #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 int __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor *)o;
+  if (p->__pyx_v_continuation) {
+    e = (*v)(p->__pyx_v_continuation, a); if (e) return e;
+  }
+  if (p->__pyx_v_handler_call_details) {
+    e = (*v)(p->__pyx_v_handler_call_details, a); if (e) return e;
+  }
+  if (p->__pyx_v_interceptor) {
+    e = (*v)(p->__pyx_v_interceptor, a); if (e) return e;
+  }
+  if (p->__pyx_v_interceptors) {
+    e = (*v)(p->__pyx_v_interceptors, a); if (e) return e;
+  }
+  if (p->__pyx_v_query_handler) {
+    e = (*v)(p->__pyx_v_query_handler, a); if (e) return e;
+  }
+  return 0;
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor_spec = {
+  "_cython.cygrpc.__pyx_scope_struct_34__run_interceptor",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_type_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""__pyx_scope_struct_34__run_interceptor", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor, /*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
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler *__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler[8];
+static int __pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler = 0;
+#endif
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler(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 CYTHON_USE_FREELISTS
+  if (likely((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler)))) {
+    o = (PyObject*)__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler[--__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler];
+    memset(o, 0, sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler));
+    (void) PyObject_INIT(o, t);
+    PyObject_GC_Track(o);
+  } else
+  #endif
+  {
+    o = (*t->tp_alloc)(t, 0);
+    if (unlikely(!o)) return 0;
+  }
+  #endif
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler *)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_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->__pyx_v_generic_handlers);
+  Py_CLEAR(p->__pyx_v_handler_call_details);
+  Py_CLEAR(p->__pyx_v_interceptors);
+  Py_CLEAR(p->__pyx_v_metadata);
+  Py_CLEAR(p->__pyx_v_method);
+  Py_CLEAR(p->__pyx_v_query_handlers);
+  #if CYTHON_USE_FREELISTS
+  if (((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler)))) {
+    __pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler[__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler++] = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler *)o);
+  } else
+  #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 int __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler *)o;
+  if (p->__pyx_v_generic_handlers) {
+    e = (*v)(p->__pyx_v_generic_handlers, a); if (e) return e;
+  }
+  if (p->__pyx_v_handler_call_details) {
+    e = (*v)(((PyObject *)p->__pyx_v_handler_call_details), a); if (e) return e;
+  }
+  if (p->__pyx_v_interceptors) {
+    e = (*v)(p->__pyx_v_interceptors, a); if (e) return e;
+  }
+  if (p->__pyx_v_metadata) {
+    e = (*v)(p->__pyx_v_metadata, a); if (e) return e;
+  }
+  if (p->__pyx_v_query_handlers) {
+    e = (*v)(p->__pyx_v_query_handlers, a); if (e) return e;
+  }
+  return 0;
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler_spec = {
+  "_cython.cygrpc.__pyx_scope_struct_35__find_method_handler",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_type_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""__pyx_scope_struct_35__find_method_handler", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler, /*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
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response *__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response[8];
+static int __pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response = 0;
+#endif
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response(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 CYTHON_USE_FREELISTS
+  if (likely((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response)))) {
+    o = (PyObject*)__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response[--__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response];
+    memset(o, 0, sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response));
+    (void) PyObject_INIT(o, t);
+    PyObject_GC_Track(o);
+  } else
+  #endif
+  {
+    o = (*t->tp_alloc)(t, 0);
+    if (unlikely(!o)) return 0;
+  }
+  #endif
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response *)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_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->__pyx_v_callback);
+  Py_CLEAR(p->__pyx_v_finish_ops);
+  Py_CLEAR(p->__pyx_v_loop);
+  Py_CLEAR(p->__pyx_v_request);
+  Py_CLEAR(p->__pyx_v_response_message);
+  Py_CLEAR(p->__pyx_v_response_raw);
+  Py_CLEAR(p->__pyx_v_response_serializer);
+  Py_CLEAR(p->__pyx_v_rpc_state);
+  Py_CLEAR(p->__pyx_v_servicer_context);
+  Py_CLEAR(p->__pyx_v_sync_servicer_context);
+  Py_CLEAR(p->__pyx_v_unary_handler);
+  #if CYTHON_USE_FREELISTS
+  if (((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response)))) {
+    __pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response[__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response++] = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response *)o);
+  } else
+  #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 int __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response *)o;
+  if (p->__pyx_v_callback) {
+    e = (*v)(p->__pyx_v_callback, a); if (e) return e;
+  }
+  if (p->__pyx_v_finish_ops) {
+    e = (*v)(p->__pyx_v_finish_ops, a); if (e) return e;
+  }
+  if (p->__pyx_v_loop) {
+    e = (*v)(p->__pyx_v_loop, a); if (e) return e;
+  }
+  if (p->__pyx_v_request) {
+    e = (*v)(p->__pyx_v_request, a); if (e) return e;
+  }
+  if (p->__pyx_v_response_message) {
+    e = (*v)(p->__pyx_v_response_message, a); if (e) return e;
+  }
+  if (p->__pyx_v_response_serializer) {
+    e = (*v)(p->__pyx_v_response_serializer, a); if (e) return e;
+  }
+  if (p->__pyx_v_rpc_state) {
+    e = (*v)(((PyObject *)p->__pyx_v_rpc_state), a); if (e) return e;
+  }
+  if (p->__pyx_v_servicer_context) {
+    e = (*v)(((PyObject *)p->__pyx_v_servicer_context), a); if (e) return e;
+  }
+  if (p->__pyx_v_sync_servicer_context) {
+    e = (*v)(((PyObject *)p->__pyx_v_sync_servicer_context), a); if (e) return e;
+  }
+  if (p->__pyx_v_unary_handler) {
+    e = (*v)(p->__pyx_v_unary_handler, a); if (e) return e;
+  }
+  return 0;
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response_spec = {
+  "_cython.cygrpc.__pyx_scope_struct_36__finish_handler_with_unary_response",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_type_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""__pyx_scope_struct_36__finish_handler_with_unary_response", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response, /*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
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses *__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses[8];
+static int __pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses = 0;
+#endif
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses(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 CYTHON_USE_FREELISTS
+  if (likely((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses)))) {
+    o = (PyObject*)__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses[--__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses];
+    memset(o, 0, sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses));
+    (void) PyObject_INIT(o, t);
+    PyObject_GC_Track(o);
+  } else
+  #endif
+  {
+    o = (*t->tp_alloc)(t, 0);
+    if (unlikely(!o)) return 0;
+  }
+  #endif
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses *)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_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->__pyx_v_async_response_generator);
+  Py_CLEAR(p->__pyx_v_finish_ops);
+  Py_CLEAR(p->__pyx_v_gen);
+  Py_CLEAR(p->__pyx_v_loop);
+  Py_CLEAR(p->__pyx_v_op);
+  Py_CLEAR(p->__pyx_v_request);
+  Py_CLEAR(p->__pyx_v_response_message);
+  Py_CLEAR(p->__pyx_v_rpc_state);
+  Py_CLEAR(p->__pyx_v_servicer_context);
+  Py_CLEAR(p->__pyx_v_stream_handler);
+  Py_CLEAR(p->__pyx_v_sync_servicer_context);
+  Py_CLEAR(p->__pyx_t_0);
+  #if CYTHON_USE_FREELISTS
+  if (((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses)))) {
+    __pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses[__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses++] = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses *)o);
+  } else
+  #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 int __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses *)o;
+  if (p->__pyx_v_async_response_generator) {
+    e = (*v)(p->__pyx_v_async_response_generator, a); if (e) return e;
+  }
+  if (p->__pyx_v_finish_ops) {
+    e = (*v)(p->__pyx_v_finish_ops, a); if (e) return e;
+  }
+  if (p->__pyx_v_gen) {
+    e = (*v)(p->__pyx_v_gen, a); if (e) return e;
+  }
+  if (p->__pyx_v_loop) {
+    e = (*v)(p->__pyx_v_loop, a); if (e) return e;
+  }
+  if (p->__pyx_v_op) {
+    e = (*v)(((PyObject *)p->__pyx_v_op), a); if (e) return e;
+  }
+  if (p->__pyx_v_request) {
+    e = (*v)(p->__pyx_v_request, a); if (e) return e;
+  }
+  if (p->__pyx_v_response_message) {
+    e = (*v)(p->__pyx_v_response_message, a); if (e) return e;
+  }
+  if (p->__pyx_v_rpc_state) {
+    e = (*v)(((PyObject *)p->__pyx_v_rpc_state), a); if (e) return e;
+  }
+  if (p->__pyx_v_servicer_context) {
+    e = (*v)(((PyObject *)p->__pyx_v_servicer_context), a); if (e) return e;
+  }
+  if (p->__pyx_v_stream_handler) {
+    e = (*v)(p->__pyx_v_stream_handler, a); if (e) return e;
+  }
+  if (p->__pyx_v_sync_servicer_context) {
+    e = (*v)(((PyObject *)p->__pyx_v_sync_servicer_context), a); if (e) return e;
+  }
+  if (p->__pyx_t_0) {
+    e = (*v)(p->__pyx_t_0, a); if (e) return e;
+  }
+  return 0;
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses_spec = {
+  "_cython.cygrpc.__pyx_scope_struct_37__finish_handler_with_stream_responses",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_type_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""__pyx_scope_struct_37__finish_handler_with_stream_responses", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses, /*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
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc *__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc[8];
+static int __pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc = 0;
+#endif
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc(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 CYTHON_USE_FREELISTS
+  if (likely((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc)))) {
+    o = (PyObject*)__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc[--__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc];
+    memset(o, 0, sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc));
+    (void) PyObject_INIT(o, t);
+    PyObject_GC_Track(o);
+  } else
+  #endif
+  {
+    o = (*t->tp_alloc)(t, 0);
+    if (unlikely(!o)) return 0;
+  }
+  #endif
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc *)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_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->__pyx_v_loop);
+  Py_CLEAR(p->__pyx_v_method_handler);
+  Py_CLEAR(p->__pyx_v_request_message);
+  Py_CLEAR(p->__pyx_v_request_raw);
+  Py_CLEAR(p->__pyx_v_rpc_state);
+  Py_CLEAR(p->__pyx_v_servicer_context);
+  #if CYTHON_USE_FREELISTS
+  if (((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc)))) {
+    __pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc[__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc++] = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc *)o);
+  } else
+  #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 int __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc *)o;
+  if (p->__pyx_v_loop) {
+    e = (*v)(p->__pyx_v_loop, a); if (e) return e;
+  }
+  if (p->__pyx_v_method_handler) {
+    e = (*v)(p->__pyx_v_method_handler, a); if (e) return e;
+  }
+  if (p->__pyx_v_request_message) {
+    e = (*v)(p->__pyx_v_request_message, a); if (e) return e;
+  }
+  if (p->__pyx_v_rpc_state) {
+    e = (*v)(((PyObject *)p->__pyx_v_rpc_state), a); if (e) return e;
+  }
+  if (p->__pyx_v_servicer_context) {
+    e = (*v)(((PyObject *)p->__pyx_v_servicer_context), a); if (e) return e;
+  }
+  return 0;
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc_spec = {
+  "_cython.cygrpc.__pyx_scope_struct_38__handle_unary_unary_rpc",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_type_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""__pyx_scope_struct_38__handle_unary_unary_rpc", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc, /*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
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc *__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc[8];
+static int __pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc = 0;
+#endif
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc(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 CYTHON_USE_FREELISTS
+  if (likely((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc)))) {
+    o = (PyObject*)__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc[--__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc];
+    memset(o, 0, sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc));
+    (void) PyObject_INIT(o, t);
+    PyObject_GC_Track(o);
+  } else
+  #endif
+  {
+    o = (*t->tp_alloc)(t, 0);
+    if (unlikely(!o)) return 0;
+  }
+  #endif
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc *)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_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->__pyx_v_loop);
+  Py_CLEAR(p->__pyx_v_method_handler);
+  Py_CLEAR(p->__pyx_v_request_message);
+  Py_CLEAR(p->__pyx_v_request_raw);
+  Py_CLEAR(p->__pyx_v_rpc_state);
+  Py_CLEAR(p->__pyx_v_servicer_context);
+  #if CYTHON_USE_FREELISTS
+  if (((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc)))) {
+    __pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc[__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc++] = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc *)o);
+  } else
+  #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 int __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc *)o;
+  if (p->__pyx_v_loop) {
+    e = (*v)(p->__pyx_v_loop, a); if (e) return e;
+  }
+  if (p->__pyx_v_method_handler) {
+    e = (*v)(p->__pyx_v_method_handler, a); if (e) return e;
+  }
+  if (p->__pyx_v_request_message) {
+    e = (*v)(p->__pyx_v_request_message, a); if (e) return e;
+  }
+  if (p->__pyx_v_rpc_state) {
+    e = (*v)(((PyObject *)p->__pyx_v_rpc_state), a); if (e) return e;
+  }
+  if (p->__pyx_v_servicer_context) {
+    e = (*v)(((PyObject *)p->__pyx_v_servicer_context), a); if (e) return e;
+  }
+  return 0;
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc_spec = {
+  "_cython.cygrpc.__pyx_scope_struct_39__handle_unary_stream_rpc",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_type_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""__pyx_scope_struct_39__handle_unary_stream_rpc", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc, /*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
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver *__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver[8];
+static int __pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver = 0;
+#endif
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver(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 CYTHON_USE_FREELISTS
+  if (likely((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver)))) {
+    o = (PyObject*)__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver[--__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver];
+    memset(o, 0, sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver));
+    (void) PyObject_INIT(o, t);
+    PyObject_GC_Track(o);
+  } else
+  #endif
+  {
+    o = (*t->tp_alloc)(t, 0);
+    if (unlikely(!o)) return 0;
+  }
+  #endif
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver *)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_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->__pyx_v_message);
+  Py_CLEAR(p->__pyx_v_self);
+  #if CYTHON_USE_FREELISTS
+  if (((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver)))) {
+    __pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver[__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver++] = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver *)o);
+  } else
+  #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 int __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver *)o;
+  if (p->__pyx_v_message) {
+    e = (*v)(p->__pyx_v_message, a); if (e) return e;
+  }
+  if (p->__pyx_v_self) {
+    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
+  }
+  return 0;
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver_spec = {
+  "_cython.cygrpc.__pyx_scope_struct_40__async_message_receiver",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_type_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""__pyx_scope_struct_40__async_message_receiver", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver, /*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
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_41___anext__ *__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_41___anext__[8];
+static int __pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_41___anext__ = 0;
+#endif
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_41___anext__(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 CYTHON_USE_FREELISTS
+  if (likely((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_41___anext__ > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_41___anext__)))) {
+    o = (PyObject*)__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_41___anext__[--__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_41___anext__];
+    memset(o, 0, sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_41___anext__));
+    (void) PyObject_INIT(o, t);
+    PyObject_GC_Track(o);
+  } else
+  #endif
+  {
+    o = (*t->tp_alloc)(t, 0);
+    if (unlikely(!o)) return 0;
+  }
+  #endif
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_41___anext__(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_41___anext__ *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_41___anext__ *)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_7_cython_6cygrpc___pyx_scope_struct_41___anext__) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->__pyx_v_self);
+  #if CYTHON_USE_FREELISTS
+  if (((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_41___anext__ < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_41___anext__)))) {
+    __pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_41___anext__[__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_41___anext__++] = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_41___anext__ *)o);
+  } else
+  #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 int __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_41___anext__(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_41___anext__ *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_41___anext__ *)o;
+  if (p->__pyx_v_self) {
+    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
+  }
+  return 0;
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc___pyx_scope_struct_41___anext___slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_41___anext__},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_41___anext__},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_41___anext__},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc___pyx_scope_struct_41___anext___spec = {
+  "_cython.cygrpc.__pyx_scope_struct_41___anext__",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_41___anext__),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_type_7_cython_6cygrpc___pyx_scope_struct_41___anext___slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc___pyx_scope_struct_41___anext__ = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""__pyx_scope_struct_41___anext__", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_41___anext__), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_41___anext__, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_41___anext__, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_41___anext__, /*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
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc *__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc[8];
+static int __pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc = 0;
+#endif
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc(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 CYTHON_USE_FREELISTS
+  if (likely((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc)))) {
+    o = (PyObject*)__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc[--__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc];
+    memset(o, 0, sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc));
+    (void) PyObject_INIT(o, t);
+    PyObject_GC_Track(o);
+  } else
+  #endif
+  {
+    o = (*t->tp_alloc)(t, 0);
+    if (unlikely(!o)) return 0;
+  }
+  #endif
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc *)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_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->__pyx_v_loop);
+  Py_CLEAR(p->__pyx_v_method_handler);
+  Py_CLEAR(p->__pyx_v_request_iterator);
+  Py_CLEAR(p->__pyx_v_rpc_state);
+  Py_CLEAR(p->__pyx_v_servicer_context);
+  #if CYTHON_USE_FREELISTS
+  if (((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc)))) {
+    __pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc[__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc++] = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc *)o);
+  } else
+  #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 int __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc *)o;
+  if (p->__pyx_v_loop) {
+    e = (*v)(p->__pyx_v_loop, a); if (e) return e;
+  }
+  if (p->__pyx_v_method_handler) {
+    e = (*v)(p->__pyx_v_method_handler, a); if (e) return e;
+  }
+  if (p->__pyx_v_request_iterator) {
+    e = (*v)(p->__pyx_v_request_iterator, a); if (e) return e;
+  }
+  if (p->__pyx_v_rpc_state) {
+    e = (*v)(((PyObject *)p->__pyx_v_rpc_state), a); if (e) return e;
+  }
+  if (p->__pyx_v_servicer_context) {
+    e = (*v)(((PyObject *)p->__pyx_v_servicer_context), a); if (e) return e;
+  }
+  return 0;
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc_spec = {
+  "_cython.cygrpc.__pyx_scope_struct_42__handle_stream_unary_rpc",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_type_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""__pyx_scope_struct_42__handle_stream_unary_rpc", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc, /*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
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc *__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc[8];
+static int __pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc = 0;
+#endif
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc(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 CYTHON_USE_FREELISTS
+  if (likely((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc)))) {
+    o = (PyObject*)__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc[--__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc];
+    memset(o, 0, sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc));
+    (void) PyObject_INIT(o, t);
+    PyObject_GC_Track(o);
+  } else
+  #endif
+  {
+    o = (*t->tp_alloc)(t, 0);
+    if (unlikely(!o)) return 0;
+  }
+  #endif
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc *)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_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->__pyx_v_loop);
+  Py_CLEAR(p->__pyx_v_method_handler);
+  Py_CLEAR(p->__pyx_v_request_iterator);
+  Py_CLEAR(p->__pyx_v_rpc_state);
+  Py_CLEAR(p->__pyx_v_servicer_context);
+  #if CYTHON_USE_FREELISTS
+  if (((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc)))) {
+    __pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc[__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc++] = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc *)o);
+  } else
+  #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 int __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc *)o;
+  if (p->__pyx_v_loop) {
+    e = (*v)(p->__pyx_v_loop, a); if (e) return e;
+  }
+  if (p->__pyx_v_method_handler) {
+    e = (*v)(p->__pyx_v_method_handler, a); if (e) return e;
+  }
+  if (p->__pyx_v_request_iterator) {
+    e = (*v)(p->__pyx_v_request_iterator, a); if (e) return e;
+  }
+  if (p->__pyx_v_rpc_state) {
+    e = (*v)(((PyObject *)p->__pyx_v_rpc_state), a); if (e) return e;
+  }
+  if (p->__pyx_v_servicer_context) {
+    e = (*v)(((PyObject *)p->__pyx_v_servicer_context), a); if (e) return e;
+  }
+  return 0;
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc_spec = {
+  "_cython.cygrpc.__pyx_scope_struct_43__handle_stream_stream_rpc",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_type_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""__pyx_scope_struct_43__handle_stream_stream_rpc", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc, /*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
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions *__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions[8];
+static int __pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions = 0;
+#endif
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions(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 CYTHON_USE_FREELISTS
+  if (likely((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions)))) {
+    o = (PyObject*)__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions[--__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions];
+    memset(o, 0, sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions));
+    (void) PyObject_INIT(o, t);
+    PyObject_GC_Track(o);
+  } else
+  #endif
+  {
+    o = (*t->tp_alloc)(t, 0);
+    if (unlikely(!o)) return 0;
+  }
+  #endif
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions *)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_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->__pyx_v_e);
+  Py_CLEAR(p->__pyx_v_loop);
+  Py_CLEAR(p->__pyx_v_rpc_coro);
+  Py_CLEAR(p->__pyx_v_rpc_state);
+  Py_CLEAR(p->__pyx_v_status_code);
+  Py_CLEAR(p->__pyx_t_0);
+  Py_CLEAR(p->__pyx_t_1);
+  Py_CLEAR(p->__pyx_t_2);
+  Py_CLEAR(p->__pyx_t_3);
+  Py_CLEAR(p->__pyx_t_4);
+  Py_CLEAR(p->__pyx_t_5);
+  Py_CLEAR(p->__pyx_t_6);
+  Py_CLEAR(p->__pyx_t_7);
+  Py_CLEAR(p->__pyx_t_8);
+  #if CYTHON_USE_FREELISTS
+  if (((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions)))) {
+    __pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions[__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions++] = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions *)o);
+  } else
+  #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 int __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions *)o;
+  if (p->__pyx_v_e) {
+    e = (*v)(p->__pyx_v_e, a); if (e) return e;
+  }
+  if (p->__pyx_v_loop) {
+    e = (*v)(p->__pyx_v_loop, a); if (e) return e;
+  }
+  if (p->__pyx_v_rpc_coro) {
+    e = (*v)(p->__pyx_v_rpc_coro, a); if (e) return e;
+  }
+  if (p->__pyx_v_rpc_state) {
+    e = (*v)(((PyObject *)p->__pyx_v_rpc_state), a); if (e) return e;
+  }
+  if (p->__pyx_v_status_code) {
+    e = (*v)(p->__pyx_v_status_code, a); if (e) return e;
+  }
+  if (p->__pyx_t_0) {
+    e = (*v)(p->__pyx_t_0, a); if (e) return e;
+  }
+  if (p->__pyx_t_1) {
+    e = (*v)(p->__pyx_t_1, a); if (e) return e;
+  }
+  if (p->__pyx_t_2) {
+    e = (*v)(p->__pyx_t_2, a); if (e) return e;
+  }
+  if (p->__pyx_t_3) {
+    e = (*v)(p->__pyx_t_3, a); if (e) return e;
+  }
+  if (p->__pyx_t_4) {
+    e = (*v)(p->__pyx_t_4, a); if (e) return e;
+  }
+  if (p->__pyx_t_5) {
+    e = (*v)(p->__pyx_t_5, a); if (e) return e;
+  }
+  if (p->__pyx_t_6) {
+    e = (*v)(p->__pyx_t_6, a); if (e) return e;
+  }
+  if (p->__pyx_t_7) {
+    e = (*v)(p->__pyx_t_7, a); if (e) return e;
+  }
+  if (p->__pyx_t_8) {
+    e = (*v)(p->__pyx_t_8, a); if (e) return e;
+  }
+  return 0;
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions_spec = {
+  "_cython.cygrpc.__pyx_scope_struct_44__handle_exceptions",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_type_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""__pyx_scope_struct_44__handle_exceptions", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions, /*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
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler *__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler[8];
+static int __pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler = 0;
+#endif
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler(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 CYTHON_USE_FREELISTS
+  if (likely((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler)))) {
+    o = (PyObject*)__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler[--__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler];
+    memset(o, 0, sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler));
+    (void) PyObject_INIT(o, t);
+    PyObject_GC_Track(o);
+  } else
+  #endif
+  {
+    o = (*t->tp_alloc)(t, 0);
+    if (unlikely(!o)) return 0;
+  }
+  #endif
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler *)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_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->__pyx_v_rpc_state);
+  #if CYTHON_USE_FREELISTS
+  if (((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler)))) {
+    __pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler[__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler++] = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler *)o);
+  } else
+  #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 int __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler *)o;
+  if (p->__pyx_v_rpc_state) {
+    e = (*v)(((PyObject *)p->__pyx_v_rpc_state), a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler(PyObject *o) {
+  PyObject* tmp;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler *)o;
+  tmp = ((PyObject*)p->__pyx_v_rpc_state);
+  p->__pyx_v_rpc_state = ((struct __pyx_obj_7_cython_6cygrpc_RPCState *)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler},
+  {Py_tp_clear, (void *)__pyx_tp_clear_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler_spec = {
+  "_cython.cygrpc.__pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_type_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""__pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler, /*tp_traverse*/
+  __pyx_tp_clear_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler, /*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
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core *__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core[8];
+static int __pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core = 0;
+#endif
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core(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 CYTHON_USE_FREELISTS
+  if (likely((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core)))) {
+    o = (PyObject*)__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core[--__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core];
+    memset(o, 0, sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core));
+    (void) PyObject_INIT(o, t);
+    PyObject_GC_Track(o);
+  } else
+  #endif
+  {
+    o = (*t->tp_alloc)(t, 0);
+    if (unlikely(!o)) return 0;
+  }
+  #endif
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core *)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_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->__pyx_v_loop);
+  Py_CLEAR(p->__pyx_v_op);
+  Py_CLEAR(p->__pyx_v_ops);
+  Py_CLEAR(p->__pyx_v_rpc_state);
+  Py_CLEAR(p->__pyx_v_rpc_task);
+  #if CYTHON_USE_FREELISTS
+  if (((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core)))) {
+    __pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core[__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core++] = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core *)o);
+  } else
+  #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 int __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core *)o;
+  if (p->__pyx_v_loop) {
+    e = (*v)(p->__pyx_v_loop, a); if (e) return e;
+  }
+  if (p->__pyx_v_op) {
+    e = (*v)(((PyObject *)p->__pyx_v_op), a); if (e) return e;
+  }
+  if (p->__pyx_v_ops) {
+    e = (*v)(p->__pyx_v_ops, a); if (e) return e;
+  }
+  if (p->__pyx_v_rpc_state) {
+    e = (*v)(((PyObject *)p->__pyx_v_rpc_state), a); if (e) return e;
+  }
+  if (p->__pyx_v_rpc_task) {
+    e = (*v)(p->__pyx_v_rpc_task, a); if (e) return e;
+  }
+  return 0;
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core_spec = {
+  "_cython.cygrpc.__pyx_scope_struct_46__handle_cancellation_from_core",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_type_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""__pyx_scope_struct_46__handle_cancellation_from_core", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core, /*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
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro *__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro[8];
+static int __pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro = 0;
+#endif
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro(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 CYTHON_USE_FREELISTS
+  if (likely((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro)))) {
+    o = (PyObject*)__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro[--__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro];
+    memset(o, 0, sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro));
+    (void) PyObject_INIT(o, t);
+    PyObject_GC_Track(o);
+  } else
+  #endif
+  {
+    o = (*t->tp_alloc)(t, 0);
+    if (unlikely(!o)) return 0;
+  }
+  #endif
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro *)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_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->__pyx_v_loop);
+  Py_CLEAR(p->__pyx_v_rpc_coro);
+  Py_CLEAR(p->__pyx_v_rpc_state);
+  Py_CLEAR(p->__pyx_v_rpc_task);
+  #if CYTHON_USE_FREELISTS
+  if (((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro)))) {
+    __pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro[__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro++] = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro *)o);
+  } else
+  #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 int __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro *)o;
+  if (p->__pyx_v_loop) {
+    e = (*v)(p->__pyx_v_loop, a); if (e) return e;
+  }
+  if (p->__pyx_v_rpc_coro) {
+    e = (*v)(p->__pyx_v_rpc_coro, a); if (e) return e;
+  }
+  if (p->__pyx_v_rpc_state) {
+    e = (*v)(((PyObject *)p->__pyx_v_rpc_state), a); if (e) return e;
+  }
+  if (p->__pyx_v_rpc_task) {
+    e = (*v)(p->__pyx_v_rpc_task, a); if (e) return e;
+  }
+  return 0;
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro_spec = {
+  "_cython.cygrpc.__pyx_scope_struct_47__schedule_rpc_coro",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_type_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""__pyx_scope_struct_47__schedule_rpc_coro", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro, /*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
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc *__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc[8];
+static int __pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc = 0;
+#endif
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc(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 CYTHON_USE_FREELISTS
+  if (likely((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc)))) {
+    o = (PyObject*)__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc[--__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc];
+    memset(o, 0, sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc));
+    (void) PyObject_INIT(o, t);
+    PyObject_GC_Track(o);
+  } else
+  #endif
+  {
+    o = (*t->tp_alloc)(t, 0);
+    if (unlikely(!o)) return 0;
+  }
+  #endif
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc *)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_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->__pyx_v_generic_handlers);
+  Py_CLEAR(p->__pyx_v_interceptors);
+  Py_CLEAR(p->__pyx_v_loop);
+  Py_CLEAR(p->__pyx_v_method_handler);
+  Py_CLEAR(p->__pyx_v_rpc_state);
+  #if CYTHON_USE_FREELISTS
+  if (((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc)))) {
+    __pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc[__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc++] = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc *)o);
+  } else
+  #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 int __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc *)o;
+  if (p->__pyx_v_generic_handlers) {
+    e = (*v)(p->__pyx_v_generic_handlers, a); if (e) return e;
+  }
+  if (p->__pyx_v_interceptors) {
+    e = (*v)(p->__pyx_v_interceptors, a); if (e) return e;
+  }
+  if (p->__pyx_v_loop) {
+    e = (*v)(p->__pyx_v_loop, a); if (e) return e;
+  }
+  if (p->__pyx_v_method_handler) {
+    e = (*v)(p->__pyx_v_method_handler, a); if (e) return e;
+  }
+  if (p->__pyx_v_rpc_state) {
+    e = (*v)(((PyObject *)p->__pyx_v_rpc_state), a); if (e) return e;
+  }
+  return 0;
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc_spec = {
+  "_cython.cygrpc.__pyx_scope_struct_48__handle_rpc",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_type_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""__pyx_scope_struct_48__handle_rpc", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc, /*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
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_49__request_call *__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_49__request_call[8];
+static int __pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_49__request_call = 0;
+#endif
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_49__request_call(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 CYTHON_USE_FREELISTS
+  if (likely((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_49__request_call > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_49__request_call)))) {
+    o = (PyObject*)__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_49__request_call[--__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_49__request_call];
+    memset(o, 0, sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_49__request_call));
+    (void) PyObject_INIT(o, t);
+    PyObject_GC_Track(o);
+  } else
+  #endif
+  {
+    o = (*t->tp_alloc)(t, 0);
+    if (unlikely(!o)) return 0;
+  }
+  #endif
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_49__request_call(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_49__request_call *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_49__request_call *)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_7_cython_6cygrpc___pyx_scope_struct_49__request_call) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->__pyx_v_future);
+  Py_CLEAR(p->__pyx_v_rpc_state);
+  Py_CLEAR(p->__pyx_v_self);
+  Py_CLEAR(p->__pyx_v_wrapper);
+  #if CYTHON_USE_FREELISTS
+  if (((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_49__request_call < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_49__request_call)))) {
+    __pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_49__request_call[__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_49__request_call++] = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_49__request_call *)o);
+  } else
+  #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 int __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_49__request_call(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_49__request_call *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_49__request_call *)o;
+  if (p->__pyx_v_future) {
+    e = (*v)(p->__pyx_v_future, a); if (e) return e;
+  }
+  if (p->__pyx_v_rpc_state) {
+    e = (*v)(((PyObject *)p->__pyx_v_rpc_state), a); if (e) return e;
+  }
+  if (p->__pyx_v_self) {
+    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
+  }
+  if (p->__pyx_v_wrapper) {
+    e = (*v)(((PyObject *)p->__pyx_v_wrapper), a); if (e) return e;
+  }
+  return 0;
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc___pyx_scope_struct_49__request_call_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_49__request_call},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_49__request_call},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_49__request_call},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc___pyx_scope_struct_49__request_call_spec = {
+  "_cython.cygrpc.__pyx_scope_struct_49__request_call",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_49__request_call),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_type_7_cython_6cygrpc___pyx_scope_struct_49__request_call_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc___pyx_scope_struct_49__request_call = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""__pyx_scope_struct_49__request_call", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_49__request_call), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_49__request_call, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_49__request_call, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_49__request_call, /*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
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop *__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop[8];
+static int __pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop = 0;
+#endif
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop(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 CYTHON_USE_FREELISTS
+  if (likely((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop)))) {
+    o = (PyObject*)__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop[--__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop];
+    memset(o, 0, sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop));
+    (void) PyObject_INIT(o, t);
+    PyObject_GC_Track(o);
+  } else
+  #endif
+  {
+    o = (*t->tp_alloc)(t, 0);
+    if (unlikely(!o)) return 0;
+  }
+  #endif
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop *)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_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->__pyx_v_rpc_coro);
+  Py_CLEAR(p->__pyx_v_rpc_state);
+  Py_CLEAR(p->__pyx_v_rpc_task);
+  Py_CLEAR(p->__pyx_v_self);
+  Py_CLEAR(p->__pyx_v_server_started);
+  #if CYTHON_USE_FREELISTS
+  if (((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop)))) {
+    __pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop[__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop++] = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop *)o);
+  } else
+  #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 int __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop *)o;
+  if (p->__pyx_v_rpc_coro) {
+    e = (*v)(p->__pyx_v_rpc_coro, a); if (e) return e;
+  }
+  if (p->__pyx_v_rpc_state) {
+    e = (*v)(((PyObject *)p->__pyx_v_rpc_state), a); if (e) return e;
+  }
+  if (p->__pyx_v_rpc_task) {
+    e = (*v)(p->__pyx_v_rpc_task, a); if (e) return e;
+  }
+  if (p->__pyx_v_self) {
+    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
+  }
+  if (p->__pyx_v_server_started) {
+    e = (*v)(p->__pyx_v_server_started, a); if (e) return e;
+  }
+  return 0;
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop_spec = {
+  "_cython.cygrpc.__pyx_scope_struct_50__server_main_loop",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_type_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""__pyx_scope_struct_50__server_main_loop", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop, /*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
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_51_start *__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_51_start[8];
+static int __pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_51_start = 0;
+#endif
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_51_start(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 CYTHON_USE_FREELISTS
+  if (likely((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_51_start > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_51_start)))) {
+    o = (PyObject*)__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_51_start[--__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_51_start];
+    memset(o, 0, sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_51_start));
+    (void) PyObject_INIT(o, t);
+    PyObject_GC_Track(o);
+  } else
+  #endif
+  {
+    o = (*t->tp_alloc)(t, 0);
+    if (unlikely(!o)) return 0;
+  }
+  #endif
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_51_start(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_51_start *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_51_start *)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_7_cython_6cygrpc___pyx_scope_struct_51_start) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->__pyx_v_self);
+  Py_CLEAR(p->__pyx_v_server_started);
+  #if CYTHON_USE_FREELISTS
+  if (((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_51_start < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_51_start)))) {
+    __pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_51_start[__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_51_start++] = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_51_start *)o);
+  } else
+  #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 int __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_51_start(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_51_start *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_51_start *)o;
+  if (p->__pyx_v_self) {
+    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
+  }
+  if (p->__pyx_v_server_started) {
+    e = (*v)(p->__pyx_v_server_started, a); if (e) return e;
+  }
+  return 0;
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc___pyx_scope_struct_51_start_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_51_start},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_51_start},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_51_start},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc___pyx_scope_struct_51_start_spec = {
+  "_cython.cygrpc.__pyx_scope_struct_51_start",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_51_start),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_type_7_cython_6cygrpc___pyx_scope_struct_51_start_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc___pyx_scope_struct_51_start = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""__pyx_scope_struct_51_start", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_51_start), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_51_start, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_51_start, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_51_start, /*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
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down *__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down[8];
+static int __pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down = 0;
+#endif
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down(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 CYTHON_USE_FREELISTS
+  if (likely((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down)))) {
+    o = (PyObject*)__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down[--__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down];
+    memset(o, 0, sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down));
+    (void) PyObject_INIT(o, t);
+    PyObject_GC_Track(o);
+  } else
+  #endif
+  {
+    o = (*t->tp_alloc)(t, 0);
+    if (unlikely(!o)) return 0;
+  }
+  #endif
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down *)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_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->__pyx_v_self);
+  Py_CLEAR(p->__pyx_t_0);
+  Py_CLEAR(p->__pyx_t_1);
+  Py_CLEAR(p->__pyx_t_2);
+  #if CYTHON_USE_FREELISTS
+  if (((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down)))) {
+    __pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down[__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down++] = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down *)o);
+  } else
+  #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 int __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down *)o;
+  if (p->__pyx_v_self) {
+    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
+  }
+  if (p->__pyx_t_0) {
+    e = (*v)(p->__pyx_t_0, a); if (e) return e;
+  }
+  if (p->__pyx_t_1) {
+    e = (*v)(p->__pyx_t_1, a); if (e) return e;
+  }
+  if (p->__pyx_t_2) {
+    e = (*v)(p->__pyx_t_2, a); if (e) return e;
+  }
+  return 0;
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down_spec = {
+  "_cython.cygrpc.__pyx_scope_struct_52__start_shutting_down",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_type_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""__pyx_scope_struct_52__start_shutting_down", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down, /*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
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_53_shutdown *__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_53_shutdown[8];
+static int __pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_53_shutdown = 0;
+#endif
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_53_shutdown(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 CYTHON_USE_FREELISTS
+  if (likely((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_53_shutdown > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_53_shutdown)))) {
+    o = (PyObject*)__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_53_shutdown[--__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_53_shutdown];
+    memset(o, 0, sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_53_shutdown));
+    (void) PyObject_INIT(o, t);
+    PyObject_GC_Track(o);
+  } else
+  #endif
+  {
+    o = (*t->tp_alloc)(t, 0);
+    if (unlikely(!o)) return 0;
+  }
+  #endif
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_53_shutdown(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_53_shutdown *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_53_shutdown *)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_7_cython_6cygrpc___pyx_scope_struct_53_shutdown) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->__pyx_v_grace);
+  Py_CLEAR(p->__pyx_v_self);
+  Py_CLEAR(p->__pyx_t_0);
+  Py_CLEAR(p->__pyx_t_1);
+  Py_CLEAR(p->__pyx_t_2);
+  Py_CLEAR(p->__pyx_t_3);
+  Py_CLEAR(p->__pyx_t_4);
+  Py_CLEAR(p->__pyx_t_5);
+  Py_CLEAR(p->__pyx_t_6);
+  Py_CLEAR(p->__pyx_t_7);
+  #if CYTHON_USE_FREELISTS
+  if (((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_53_shutdown < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_53_shutdown)))) {
+    __pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_53_shutdown[__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_53_shutdown++] = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_53_shutdown *)o);
+  } else
+  #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 int __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_53_shutdown(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_53_shutdown *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_53_shutdown *)o;
+  if (p->__pyx_v_grace) {
+    e = (*v)(p->__pyx_v_grace, a); if (e) return e;
+  }
+  if (p->__pyx_v_self) {
+    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
+  }
+  if (p->__pyx_t_0) {
+    e = (*v)(p->__pyx_t_0, a); if (e) return e;
+  }
+  if (p->__pyx_t_1) {
+    e = (*v)(p->__pyx_t_1, a); if (e) return e;
+  }
+  if (p->__pyx_t_2) {
+    e = (*v)(p->__pyx_t_2, a); if (e) return e;
+  }
+  if (p->__pyx_t_3) {
+    e = (*v)(p->__pyx_t_3, a); if (e) return e;
+  }
+  if (p->__pyx_t_4) {
+    e = (*v)(p->__pyx_t_4, a); if (e) return e;
+  }
+  if (p->__pyx_t_5) {
+    e = (*v)(p->__pyx_t_5, a); if (e) return e;
+  }
+  if (p->__pyx_t_6) {
+    e = (*v)(p->__pyx_t_6, a); if (e) return e;
+  }
+  if (p->__pyx_t_7) {
+    e = (*v)(p->__pyx_t_7, a); if (e) return e;
+  }
+  return 0;
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc___pyx_scope_struct_53_shutdown_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_53_shutdown},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_53_shutdown},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_53_shutdown},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc___pyx_scope_struct_53_shutdown_spec = {
+  "_cython.cygrpc.__pyx_scope_struct_53_shutdown",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_53_shutdown),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_type_7_cython_6cygrpc___pyx_scope_struct_53_shutdown_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc___pyx_scope_struct_53_shutdown = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""__pyx_scope_struct_53_shutdown", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_53_shutdown), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_53_shutdown, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_53_shutdown, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_53_shutdown, /*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
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination *__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination[8];
+static int __pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination = 0;
+#endif
+
+static PyObject *__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination(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 CYTHON_USE_FREELISTS
+  if (likely((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination)))) {
+    o = (PyObject*)__pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination[--__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination];
+    memset(o, 0, sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination));
+    (void) PyObject_INIT(o, t);
+    PyObject_GC_Track(o);
+  } else
+  #endif
+  {
+    o = (*t->tp_alloc)(t, 0);
+    if (unlikely(!o)) return 0;
+  }
+  #endif
+  return o;
+}
+
+static void __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination(PyObject *o) {
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination *)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_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->__pyx_v_self);
+  Py_CLEAR(p->__pyx_v_timeout);
+  Py_CLEAR(p->__pyx_t_0);
+  Py_CLEAR(p->__pyx_t_1);
+  Py_CLEAR(p->__pyx_t_2);
+  #if CYTHON_USE_FREELISTS
+  if (((int)(__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination)))) {
+    __pyx_freelist_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination[__pyx_freecount_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination++] = ((struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination *)o);
+  } else
+  #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 int __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination *p = (struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination *)o;
+  if (p->__pyx_v_self) {
+    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
+  }
+  if (p->__pyx_v_timeout) {
+    e = (*v)(p->__pyx_v_timeout, a); if (e) return e;
+  }
+  if (p->__pyx_t_0) {
+    e = (*v)(p->__pyx_t_0, a); if (e) return e;
+  }
+  if (p->__pyx_t_1) {
+    e = (*v)(p->__pyx_t_1, a); if (e) return e;
+  }
+  if (p->__pyx_t_2) {
+    e = (*v)(p->__pyx_t_2, a); if (e) return e;
+  }
+  return 0;
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_type_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination},
+  {Py_tp_traverse, (void *)__pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination},
+  {Py_tp_new, (void *)__pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination},
+  {0, 0},
+};
+static PyType_Spec __pyx_type_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination_spec = {
+  "_cython.cygrpc.__pyx_scope_struct_54_wait_for_termination",
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_type_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination_slots,
+};
+#else
+
+static PyTypeObject __pyx_type_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""__pyx_scope_struct_54_wait_for_termination", /*tp_name*/
+  sizeof(struct __pyx_obj_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination, /*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
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg *__pyx_freelist___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg[8];
+static int __pyx_freecount___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg = 0;
+#endif
+
+static PyObject *__pyx_tp_new___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg(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 CYTHON_USE_FREELISTS
+  if (likely((int)(__pyx_freecount___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg)))) {
+    o = (PyObject*)__pyx_freelist___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg[--__pyx_freecount___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg];
+    memset(o, 0, sizeof(struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg));
+    (void) PyObject_INIT(o, t);
+  } else
+  #endif
+  {
+    o = (*t->tp_alloc)(t, 0);
+    if (unlikely(!o)) return 0;
+  }
+  #endif
+  return o;
+}
+
+static void __pyx_tp_dealloc___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg(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___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  #if CYTHON_USE_FREELISTS
+  if (((int)(__pyx_freecount___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg)))) {
+    __pyx_freelist___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg[__pyx_freecount___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg++] = ((struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg *)o);
+  } else
+  #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
+  }
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg},
+  {Py_tp_new, (void *)__pyx_tp_new___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg},
+  {0, 0},
+};
+static PyType_Spec __pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg_spec = {
+  "_cython.cygrpc.__pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg",
+  sizeof(struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg_slots,
+};
+#else
+
+static PyTypeObject __pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""__pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg", /*tp_name*/
+  sizeof(struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  0, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg, /*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
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_ *__pyx_freelist___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_[8];
+static int __pyx_freecount___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_ = 0;
+#endif
+
+static PyObject *__pyx_tp_new___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_(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 CYTHON_USE_FREELISTS
+  if (likely((int)(__pyx_freecount___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_ > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_)))) {
+    o = (PyObject*)__pyx_freelist___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_[--__pyx_freecount___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_];
+    memset(o, 0, sizeof(struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_));
+    (void) PyObject_INIT(o, t);
+  } else
+  #endif
+  {
+    o = (*t->tp_alloc)(t, 0);
+    if (unlikely(!o)) return 0;
+  }
+  #endif
+  return o;
+}
+
+static void __pyx_tp_dealloc___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_(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___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  #if CYTHON_USE_FREELISTS
+  if (((int)(__pyx_freecount___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_ < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_)))) {
+    __pyx_freelist___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_[__pyx_freecount___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_++] = ((struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_ *)o);
+  } else
+  #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
+  }
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py__slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_},
+  {Py_tp_new, (void *)__pyx_tp_new___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_},
+  {0, 0},
+};
+static PyType_Spec __pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py__spec = {
+  "_cython.cygrpc.__pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_",
+  sizeof(struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py__slots,
+};
+#else
+
+static PyTypeObject __pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_ = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""__pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_", /*tp_name*/
+  sizeof(struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  0, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_, /*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
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args *__pyx_freelist___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args[8];
+static int __pyx_freecount___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args = 0;
+#endif
+
+static PyObject *__pyx_tp_new___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args(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 CYTHON_USE_FREELISTS
+  if (likely((int)(__pyx_freecount___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args)))) {
+    o = (PyObject*)__pyx_freelist___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args[--__pyx_freecount___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args];
+    memset(o, 0, sizeof(struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args));
+    (void) PyObject_INIT(o, t);
+  } else
+  #endif
+  {
+    o = (*t->tp_alloc)(t, 0);
+    if (unlikely(!o)) return 0;
+  }
+  #endif
+  return o;
+}
+
+static void __pyx_tp_dealloc___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args(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___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  #if CYTHON_USE_FREELISTS
+  if (((int)(__pyx_freecount___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args)))) {
+    __pyx_freelist___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args[__pyx_freecount___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args++] = ((struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args *)o);
+  } else
+  #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
+  }
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args_slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args},
+  {Py_tp_new, (void *)__pyx_tp_new___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args},
+  {0, 0},
+};
+static PyType_Spec __pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args_spec = {
+  "_cython.cygrpc.__pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args",
+  sizeof(struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args_slots,
+};
+#else
+
+static PyTypeObject __pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""__pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args", /*tp_name*/
+  sizeof(struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  0, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args, /*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
+
+#if CYTHON_USE_FREELISTS
+static struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_ *__pyx_freelist___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_[8];
+static int __pyx_freecount___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_ = 0;
+#endif
+
+static PyObject *__pyx_tp_new___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_(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 CYTHON_USE_FREELISTS
+  if (likely((int)(__pyx_freecount___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_ > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_)))) {
+    o = (PyObject*)__pyx_freelist___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_[--__pyx_freecount___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_];
+    memset(o, 0, sizeof(struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_));
+    (void) PyObject_INIT(o, t);
+  } else
+  #endif
+  {
+    o = (*t->tp_alloc)(t, 0);
+    if (unlikely(!o)) return 0;
+  }
+  #endif
+  return o;
+}
+
+static void __pyx_tp_dealloc___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_(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___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_) {
+      if (PyObject_CallFinalizerFromDealloc(o)) return;
+    }
+  }
+  #endif
+  #if CYTHON_USE_FREELISTS
+  if (((int)(__pyx_freecount___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_ < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_)))) {
+    __pyx_freelist___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_[__pyx_freecount___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_++] = ((struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_ *)o);
+  } else
+  #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
+  }
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py__slots[] = {
+  {Py_tp_dealloc, (void *)__pyx_tp_dealloc___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_},
+  {Py_tp_new, (void *)__pyx_tp_new___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_},
+  {0, 0},
+};
+static PyType_Spec __pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py__spec = {
+  "_cython.cygrpc.__pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_",
+  sizeof(struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_),
+  0,
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_FINALIZE,
+  __pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py__slots,
+};
+#else
+
+static PyTypeObject __pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_ = {
+  PyVarObject_HEAD_INIT(0, 0)
+  "_cython.cygrpc.""__pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_", /*tp_name*/
+  sizeof(struct __pyx_obj___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_, /*tp_dealloc*/
+  #if PY_VERSION_HEX < 0x030800b4
+  0, /*tp_print*/
+  #endif
+  #if PY_VERSION_HEX >= 0x030800b4
+  0, /*tp_vectorcall_offset*/
+  #endif
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #endif
+  #if PY_MAJOR_VERSION >= 3
+  0, /*tp_as_async*/
+  #endif
+  0, /*tp_repr*/
+  0, /*tp_as_number*/
+  0, /*tp_as_sequence*/
+  0, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  0, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
+  0, /*tp_doc*/
+  0, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  0, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  #if !CYTHON_USE_TYPE_SPECS
+  0, /*tp_dictoffset*/
+  #endif
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_, /*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_kp_s_0, __pyx_k_0, sizeof(__pyx_k_0), 0, 0, 1, 0},
+    {&__pyx_kp_s_1, __pyx_k_1, sizeof(__pyx_k_1), 0, 0, 1, 0},
+    {&__pyx_n_s_ALTSChannelCredentials, __pyx_k_ALTSChannelCredentials, sizeof(__pyx_k_ALTSChannelCredentials), 0, 0, 1, 1},
+    {&__pyx_n_s_ALTSChannelCredentials___reduce, __pyx_k_ALTSChannelCredentials___reduce, sizeof(__pyx_k_ALTSChannelCredentials___reduce), 0, 0, 1, 1},
+    {&__pyx_n_s_ALTSChannelCredentials___setstat, __pyx_k_ALTSChannelCredentials___setstat, sizeof(__pyx_k_ALTSChannelCredentials___setstat), 0, 0, 1, 1},
+    {&__pyx_n_s_AWAIT_THREADS_TIMEOUT_SECONDS, __pyx_k_AWAIT_THREADS_TIMEOUT_SECONDS, sizeof(__pyx_k_AWAIT_THREADS_TIMEOUT_SECONDS), 0, 0, 1, 1},
+    {&__pyx_n_s_AbortError, __pyx_k_AbortError, sizeof(__pyx_k_AbortError), 0, 0, 1, 1},
+    {&__pyx_kp_s_Abort_already_called, __pyx_k_Abort_already_called, sizeof(__pyx_k_Abort_already_called), 0, 0, 1, 0},
+    {&__pyx_kp_s_Abort_error_has_been_replaced, __pyx_k_Abort_error_has_been_replaced, sizeof(__pyx_k_Abort_error_has_been_replaced), 0, 0, 1, 0},
+    {&__pyx_kp_s_Abort_error_unexpectedly_suppres, __pyx_k_Abort_error_unexpectedly_suppres, sizeof(__pyx_k_Abort_error_unexpectedly_suppres), 0, 0, 1, 0},
+    {&__pyx_kp_s_Aborting_method_s_due_to_server, __pyx_k_Aborting_method_s_due_to_server, sizeof(__pyx_k_Aborting_method_s_due_to_server), 0, 0, 1, 0},
+    {&__pyx_n_s_ActiveThreadCount, __pyx_k_ActiveThreadCount, sizeof(__pyx_k_ActiveThreadCount), 0, 0, 1, 1},
+    {&__pyx_n_s_ActiveThreadCount___init, __pyx_k_ActiveThreadCount___init, sizeof(__pyx_k_ActiveThreadCount___init), 0, 0, 1, 1},
+    {&__pyx_n_s_ActiveThreadCount_await_zero_th, __pyx_k_ActiveThreadCount_await_zero_th, sizeof(__pyx_k_ActiveThreadCount_await_zero_th), 0, 0, 1, 1},
+    {&__pyx_n_s_ActiveThreadCount_decrement, __pyx_k_ActiveThreadCount_decrement, sizeof(__pyx_k_ActiveThreadCount_decrement), 0, 0, 1, 1},
+    {&__pyx_n_s_ActiveThreadCount_increment, __pyx_k_ActiveThreadCount_increment, sizeof(__pyx_k_ActiveThreadCount_increment), 0, 0, 1, 1},
+    {&__pyx_n_s_AioCall, __pyx_k_AioCall, sizeof(__pyx_k_AioCall), 0, 0, 1, 1},
+    {&__pyx_n_s_AioCall___reduce_cython, __pyx_k_AioCall___reduce_cython, sizeof(__pyx_k_AioCall___reduce_cython), 0, 0, 1, 1},
+    {&__pyx_n_s_AioCall___setstate_cython, __pyx_k_AioCall___setstate_cython, sizeof(__pyx_k_AioCall___setstate_cython), 0, 0, 1, 1},
+    {&__pyx_n_s_AioCall__handle_status_once_rec, __pyx_k_AioCall__handle_status_once_rec, sizeof(__pyx_k_AioCall__handle_status_once_rec), 0, 0, 1, 1},
+    {&__pyx_n_s_AioCall__repr, __pyx_k_AioCall__repr, sizeof(__pyx_k_AioCall__repr), 0, 0, 1, 1},
+    {&__pyx_n_s_AioCall_add_done_callback, __pyx_k_AioCall_add_done_callback, sizeof(__pyx_k_AioCall_add_done_callback), 0, 0, 1, 1},
+    {&__pyx_n_s_AioCall_cancel, __pyx_k_AioCall_cancel, sizeof(__pyx_k_AioCall_cancel), 0, 0, 1, 1},
+    {&__pyx_n_s_AioCall_cancelled, __pyx_k_AioCall_cancelled, sizeof(__pyx_k_AioCall_cancelled), 0, 0, 1, 1},
+    {&__pyx_n_s_AioCall_done, __pyx_k_AioCall_done, sizeof(__pyx_k_AioCall_done), 0, 0, 1, 1},
+    {&__pyx_n_s_AioCall_initial_metadata, __pyx_k_AioCall_initial_metadata, sizeof(__pyx_k_AioCall_initial_metadata), 0, 0, 1, 1},
+    {&__pyx_n_s_AioCall_initiate_stream_stream, __pyx_k_AioCall_initiate_stream_stream, sizeof(__pyx_k_AioCall_initiate_stream_stream), 0, 0, 1, 1},
+    {&__pyx_n_s_AioCall_initiate_unary_stream, __pyx_k_AioCall_initiate_unary_stream, sizeof(__pyx_k_AioCall_initiate_unary_stream), 0, 0, 1, 1},
+    {&__pyx_n_s_AioCall_is_locally_cancelled, __pyx_k_AioCall_is_locally_cancelled, sizeof(__pyx_k_AioCall_is_locally_cancelled), 0, 0, 1, 1},
+    {&__pyx_n_s_AioCall_is_ok, __pyx_k_AioCall_is_ok, sizeof(__pyx_k_AioCall_is_ok), 0, 0, 1, 1},
+    {&__pyx_n_s_AioCall_receive_serialized_mess, __pyx_k_AioCall_receive_serialized_mess, sizeof(__pyx_k_AioCall_receive_serialized_mess), 0, 0, 1, 1},
+    {&__pyx_n_s_AioCall_send_receive_close, __pyx_k_AioCall_send_receive_close, sizeof(__pyx_k_AioCall_send_receive_close), 0, 0, 1, 1},
+    {&__pyx_n_s_AioCall_send_serialized_message, __pyx_k_AioCall_send_serialized_message, sizeof(__pyx_k_AioCall_send_serialized_message), 0, 0, 1, 1},
+    {&__pyx_n_s_AioCall_set_internal_error, __pyx_k_AioCall_set_internal_error, sizeof(__pyx_k_AioCall_set_internal_error), 0, 0, 1, 1},
+    {&__pyx_n_s_AioCall_status, __pyx_k_AioCall_status, sizeof(__pyx_k_AioCall_status), 0, 0, 1, 1},
+    {&__pyx_n_s_AioCall_stream_unary, __pyx_k_AioCall_stream_unary, sizeof(__pyx_k_AioCall_stream_unary), 0, 0, 1, 1},
+    {&__pyx_n_s_AioCall_time_remaining, __pyx_k_AioCall_time_remaining, sizeof(__pyx_k_AioCall_time_remaining), 0, 0, 1, 1},
+    {&__pyx_n_s_AioCall_unary_unary, __pyx_k_AioCall_unary_unary, sizeof(__pyx_k_AioCall_unary_unary), 0, 0, 1, 1},
+    {&__pyx_n_s_AioChannel, __pyx_k_AioChannel, sizeof(__pyx_k_AioChannel), 0, 0, 1, 1},
+    {&__pyx_n_s_AioChannel___reduce_cython, __pyx_k_AioChannel___reduce_cython, sizeof(__pyx_k_AioChannel___reduce_cython), 0, 0, 1, 1},
+    {&__pyx_n_s_AioChannel___setstate_cython, __pyx_k_AioChannel___setstate_cython, sizeof(__pyx_k_AioChannel___setstate_cython), 0, 0, 1, 1},
+    {&__pyx_n_s_AioChannel_call, __pyx_k_AioChannel_call, sizeof(__pyx_k_AioChannel_call), 0, 0, 1, 1},
+    {&__pyx_n_s_AioChannel_check_connectivity_st, __pyx_k_AioChannel_check_connectivity_st, sizeof(__pyx_k_AioChannel_check_connectivity_st), 0, 0, 1, 1},
+    {&__pyx_n_s_AioChannel_close, __pyx_k_AioChannel_close, sizeof(__pyx_k_AioChannel_close), 0, 0, 1, 1},
+    {&__pyx_n_s_AioChannel_closed, __pyx_k_AioChannel_closed, sizeof(__pyx_k_AioChannel_closed), 0, 0, 1, 1},
+    {&__pyx_n_s_AioChannel_closing, __pyx_k_AioChannel_closing, sizeof(__pyx_k_AioChannel_closing), 0, 0, 1, 1},
+    {&__pyx_n_s_AioChannel_watch_connectivity_st, __pyx_k_AioChannel_watch_connectivity_st, sizeof(__pyx_k_AioChannel_watch_connectivity_st), 0, 0, 1, 1},
+    {&__pyx_n_s_AioRpcStatus, __pyx_k_AioRpcStatus, sizeof(__pyx_k_AioRpcStatus), 0, 0, 1, 1},
+    {&__pyx_n_s_AioRpcStatus___reduce_cython, __pyx_k_AioRpcStatus___reduce_cython, sizeof(__pyx_k_AioRpcStatus___reduce_cython), 0, 0, 1, 1},
+    {&__pyx_n_s_AioRpcStatus___setstate_cython, __pyx_k_AioRpcStatus___setstate_cython, sizeof(__pyx_k_AioRpcStatus___setstate_cython), 0, 0, 1, 1},
+    {&__pyx_n_s_AioRpcStatus_code, __pyx_k_AioRpcStatus_code, sizeof(__pyx_k_AioRpcStatus_code), 0, 0, 1, 1},
+    {&__pyx_n_s_AioRpcStatus_debug_error_string, __pyx_k_AioRpcStatus_debug_error_string, sizeof(__pyx_k_AioRpcStatus_debug_error_string), 0, 0, 1, 1},
+    {&__pyx_n_s_AioRpcStatus_details, __pyx_k_AioRpcStatus_details, sizeof(__pyx_k_AioRpcStatus_details), 0, 0, 1, 1},
+    {&__pyx_n_s_AioRpcStatus_trailing_metadata, __pyx_k_AioRpcStatus_trailing_metadata, sizeof(__pyx_k_AioRpcStatus_trailing_metadata), 0, 0, 1, 1},
+    {&__pyx_n_s_AioServer, __pyx_k_AioServer, sizeof(__pyx_k_AioServer), 0, 0, 1, 1},
+    {&__pyx_n_s_AioServer___reduce_cython, __pyx_k_AioServer___reduce_cython, sizeof(__pyx_k_AioServer___reduce_cython), 0, 0, 1, 1},
+    {&__pyx_n_s_AioServer___setstate_cython, __pyx_k_AioServer___setstate_cython, sizeof(__pyx_k_AioServer___setstate_cython), 0, 0, 1, 1},
+    {&__pyx_n_s_AioServer__request_call, __pyx_k_AioServer__request_call, sizeof(__pyx_k_AioServer__request_call), 0, 0, 1, 1},
+    {&__pyx_n_s_AioServer__server_main_loop, __pyx_k_AioServer__server_main_loop, sizeof(__pyx_k_AioServer__server_main_loop), 0, 0, 1, 1},
+    {&__pyx_n_s_AioServer__serving_task_crash_ha, __pyx_k_AioServer__serving_task_crash_ha, sizeof(__pyx_k_AioServer__serving_task_crash_ha), 0, 0, 1, 1},
+    {&__pyx_n_s_AioServer__start_shutting_down, __pyx_k_AioServer__start_shutting_down, sizeof(__pyx_k_AioServer__start_shutting_down), 0, 0, 1, 1},
+    {&__pyx_n_s_AioServer_add_generic_rpc_handle, __pyx_k_AioServer_add_generic_rpc_handle, sizeof(__pyx_k_AioServer_add_generic_rpc_handle), 0, 0, 1, 1},
+    {&__pyx_n_s_AioServer_add_insecure_port, __pyx_k_AioServer_add_insecure_port, sizeof(__pyx_k_AioServer_add_insecure_port), 0, 0, 1, 1},
+    {&__pyx_n_s_AioServer_add_secure_port, __pyx_k_AioServer_add_secure_port, sizeof(__pyx_k_AioServer_add_secure_port), 0, 0, 1, 1},
+    {&__pyx_n_s_AioServer_is_running, __pyx_k_AioServer_is_running, sizeof(__pyx_k_AioServer_is_running), 0, 0, 1, 1},
+    {&__pyx_n_s_AioServer_shutdown, __pyx_k_AioServer_shutdown, sizeof(__pyx_k_AioServer_shutdown), 0, 0, 1, 1},
+    {&__pyx_n_s_AioServer_start, __pyx_k_AioServer_start, sizeof(__pyx_k_AioServer_start), 0, 0, 1, 1},
+    {&__pyx_n_s_AioServer_wait_for_termination, __pyx_k_AioServer_wait_for_termination, sizeof(__pyx_k_AioServer_wait_for_termination), 0, 0, 1, 1},
+    {&__pyx_n_s_AioState, __pyx_k_AioState, sizeof(__pyx_k_AioState), 0, 0, 1, 1},
+    {&__pyx_n_s_AioState___reduce_cython, __pyx_k_AioState___reduce_cython, sizeof(__pyx_k_AioState___reduce_cython), 0, 0, 1, 1},
+    {&__pyx_n_s_AioState___setstate_cython, __pyx_k_AioState___setstate_cython, sizeof(__pyx_k_AioState___setstate_cython), 0, 0, 1, 1},
+    {&__pyx_n_s_AssertionError, __pyx_k_AssertionError, sizeof(__pyx_k_AssertionError), 0, 0, 1, 1},
+    {&__pyx_n_s_AsyncIOEngine, __pyx_k_AsyncIOEngine, sizeof(__pyx_k_AsyncIOEngine), 0, 0, 1, 1},
+    {&__pyx_n_s_AttributeError, __pyx_k_AttributeError, sizeof(__pyx_k_AttributeError), 0, 0, 1, 1},
+    {&__pyx_n_s_BaseCompletionQueue, __pyx_k_BaseCompletionQueue, sizeof(__pyx_k_BaseCompletionQueue), 0, 0, 1, 1},
+    {&__pyx_n_s_BaseCompletionQueue___reduce_cyt, __pyx_k_BaseCompletionQueue___reduce_cyt, sizeof(__pyx_k_BaseCompletionQueue___reduce_cyt), 0, 0, 1, 1},
+    {&__pyx_n_s_BaseCompletionQueue___setstate_c, __pyx_k_BaseCompletionQueue___setstate_c, sizeof(__pyx_k_BaseCompletionQueue___setstate_c), 0, 0, 1, 1},
+    {&__pyx_n_s_BaseError, __pyx_k_BaseError, sizeof(__pyx_k_BaseError), 0, 0, 1, 1},
+    {&__pyx_n_s_BaseEvent, __pyx_k_BaseEvent, sizeof(__pyx_k_BaseEvent), 0, 0, 1, 1},
+    {&__pyx_n_s_BatchOperationEvent, __pyx_k_BatchOperationEvent, sizeof(__pyx_k_BatchOperationEvent), 0, 0, 1, 1},
+    {&__pyx_n_s_BatchOperationEvent___reduce_cyt, __pyx_k_BatchOperationEvent___reduce_cyt, sizeof(__pyx_k_BatchOperationEvent___reduce_cyt), 0, 0, 1, 1},
+    {&__pyx_n_s_BatchOperationEvent___setstate_c, __pyx_k_BatchOperationEvent___setstate_c, sizeof(__pyx_k_BatchOperationEvent___setstate_c), 0, 0, 1, 1},
+    {&__pyx_n_s_BatchOperationTag, __pyx_k_BatchOperationTag, sizeof(__pyx_k_BatchOperationTag), 0, 0, 1, 1},
+    {&__pyx_n_s_BatchOperationTag___reduce_cyth, __pyx_k_BatchOperationTag___reduce_cyth, sizeof(__pyx_k_BatchOperationTag___reduce_cyth), 0, 0, 1, 1},
+    {&__pyx_n_s_BatchOperationTag___setstate_cy, __pyx_k_BatchOperationTag___setstate_cy, sizeof(__pyx_k_BatchOperationTag___setstate_cy), 0, 0, 1, 1},
+    {&__pyx_kp_s_Binary_metadata_key_s_expected_b, __pyx_k_Binary_metadata_key_s_expected_b, sizeof(__pyx_k_Binary_metadata_key_s_expected_b), 0, 0, 1, 0},
+    {&__pyx_n_s_BoundEventLoop, __pyx_k_BoundEventLoop, sizeof(__pyx_k_BoundEventLoop), 0, 0, 1, 1},
+    {&__pyx_n_s_BoundEventLoop___reduce_cython, __pyx_k_BoundEventLoop___reduce_cython, sizeof(__pyx_k_BoundEventLoop___reduce_cython), 0, 0, 1, 1},
+    {&__pyx_n_s_BoundEventLoop___setstate_cytho, __pyx_k_BoundEventLoop___setstate_cytho, sizeof(__pyx_k_BoundEventLoop___setstate_cytho), 0, 0, 1, 1},
+    {&__pyx_n_s_BoundEventLoop_close, __pyx_k_BoundEventLoop_close, sizeof(__pyx_k_BoundEventLoop_close), 0, 0, 1, 1},
+    {&__pyx_n_s_COMPRESSION_METADATA_STRING_MAP, __pyx_k_COMPRESSION_METADATA_STRING_MAP, sizeof(__pyx_k_COMPRESSION_METADATA_STRING_MAP), 0, 0, 1, 1},
+    {&__pyx_n_s_CUSTOM_IO_MANAGER, __pyx_k_CUSTOM_IO_MANAGER, sizeof(__pyx_k_CUSTOM_IO_MANAGER), 0, 0, 1, 1},
+    {&__pyx_n_s_CYGRPC_STATUS_CODE_TO_STATUS_COD, __pyx_k_CYGRPC_STATUS_CODE_TO_STATUS_COD, sizeof(__pyx_k_CYGRPC_STATUS_CODE_TO_STATUS_COD), 0, 0, 1, 1},
+    {&__pyx_n_s_Call, __pyx_k_Call, sizeof(__pyx_k_Call), 0, 0, 1, 1},
+    {&__pyx_n_s_CallCredentials, __pyx_k_CallCredentials, sizeof(__pyx_k_CallCredentials), 0, 0, 1, 1},
+    {&__pyx_n_s_CallCredentials___reduce_cython, __pyx_k_CallCredentials___reduce_cython, sizeof(__pyx_k_CallCredentials___reduce_cython), 0, 0, 1, 1},
+    {&__pyx_n_s_CallCredentials___setstate_cytho, __pyx_k_CallCredentials___setstate_cytho, sizeof(__pyx_k_CallCredentials___setstate_cytho), 0, 0, 1, 1},
+    {&__pyx_n_s_CallDetails, __pyx_k_CallDetails, sizeof(__pyx_k_CallDetails), 0, 0, 1, 1},
+    {&__pyx_n_s_CallDetails___reduce_cython, __pyx_k_CallDetails___reduce_cython, sizeof(__pyx_k_CallDetails___reduce_cython), 0, 0, 1, 1},
+    {&__pyx_n_s_CallDetails___setstate_cython, __pyx_k_CallDetails___setstate_cython, sizeof(__pyx_k_CallDetails___setstate_cython), 0, 0, 1, 1},
+    {&__pyx_n_s_CallError, __pyx_k_CallError, sizeof(__pyx_k_CallError), 0, 0, 1, 1},
+    {&__pyx_n_s_CallHandle, __pyx_k_CallHandle, sizeof(__pyx_k_CallHandle), 0, 0, 1, 1},
+    {&__pyx_n_s_CallHandle___reduce_cython, __pyx_k_CallHandle___reduce_cython, sizeof(__pyx_k_CallHandle___reduce_cython), 0, 0, 1, 1},
+    {&__pyx_n_s_CallHandle___setstate_cython, __pyx_k_CallHandle___setstate_cython, sizeof(__pyx_k_CallHandle___setstate_cython), 0, 0, 1, 1},
+    {&__pyx_n_s_CallState, __pyx_k_CallState, sizeof(__pyx_k_CallState), 0, 0, 1, 1},
+    {&__pyx_n_s_CallState___reduce_cython, __pyx_k_CallState___reduce_cython, sizeof(__pyx_k_CallState___reduce_cython), 0, 0, 1, 1},
+    {&__pyx_n_s_CallState___setstate_cython, __pyx_k_CallState___setstate_cython, sizeof(__pyx_k_CallState___setstate_cython), 0, 0, 1, 1},
+    {&__pyx_n_s_Call___reduce_cython, __pyx_k_Call___reduce_cython, sizeof(__pyx_k_Call___reduce_cython), 0, 0, 1, 1},
+    {&__pyx_n_s_Call___setstate_cython, __pyx_k_Call___setstate_cython, sizeof(__pyx_k_Call___setstate_cython), 0, 0, 1, 1},
+    {&__pyx_n_s_Call__custom_op_on_c_call, __pyx_k_Call__custom_op_on_c_call, sizeof(__pyx_k_Call__custom_op_on_c_call), 0, 0, 1, 1},
+    {&__pyx_n_s_Call__start_batch, __pyx_k_Call__start_batch, sizeof(__pyx_k_Call__start_batch), 0, 0, 1, 1},
+    {&__pyx_n_s_Call_cancel, __pyx_k_Call_cancel, sizeof(__pyx_k_Call_cancel), 0, 0, 1, 1},
+    {&__pyx_kp_s_Call_credentials_are_only_valid, __pyx_k_Call_credentials_are_only_valid, sizeof(__pyx_k_Call_credentials_are_only_valid), 0, 0, 1, 0},
+    {&__pyx_kp_s_Call_credentials_may_not_be_NULL, __pyx_k_Call_credentials_may_not_be_NULL, sizeof(__pyx_k_Call_credentials_may_not_be_NULL), 0, 0, 1, 0},
+    {&__pyx_n_s_Call_peer, __pyx_k_Call_peer, sizeof(__pyx_k_Call_peer), 0, 0, 1, 1},
+    {&__pyx_n_s_Call_set_credentials, __pyx_k_Call_set_credentials, sizeof(__pyx_k_Call_set_credentials), 0, 0, 1, 1},
+    {&__pyx_n_s_Call_start_client_batch, __pyx_k_Call_start_client_batch, sizeof(__pyx_k_Call_start_client_batch), 0, 0, 1, 1},
+    {&__pyx_n_s_Call_start_server_batch, __pyx_k_Call_start_server_batch, sizeof(__pyx_k_Call_start_server_batch), 0, 0, 1, 1},
+    {&__pyx_n_s_CallbackFailureHandler, __pyx_k_CallbackFailureHandler, sizeof(__pyx_k_CallbackFailureHandler), 0, 0, 1, 1},
+    {&__pyx_n_s_CallbackFailureHandler___reduce, __pyx_k_CallbackFailureHandler___reduce, sizeof(__pyx_k_CallbackFailureHandler___reduce), 0, 0, 1, 1},
+    {&__pyx_n_s_CallbackFailureHandler___setstat, __pyx_k_CallbackFailureHandler___setstat, sizeof(__pyx_k_CallbackFailureHandler___setstat), 0, 0, 1, 1},
+    {&__pyx_n_s_CallbackWrapper, __pyx_k_CallbackWrapper, sizeof(__pyx_k_CallbackWrapper), 0, 0, 1, 1},
+    {&__pyx_n_s_CallbackWrapper___reduce_cython, __pyx_k_CallbackWrapper___reduce_cython, sizeof(__pyx_k_CallbackWrapper___reduce_cython), 0, 0, 1, 1},
+    {&__pyx_n_s_CallbackWrapper___setstate_cytho, __pyx_k_CallbackWrapper___setstate_cytho, sizeof(__pyx_k_CallbackWrapper___setstate_cytho), 0, 0, 1, 1},
+    {&__pyx_n_s_CancelledError, __pyx_k_CancelledError, sizeof(__pyx_k_CancelledError), 0, 0, 1, 1},
+    {&__pyx_kp_s_Cannot_invoke_RPC_on_closed_chan, __pyx_k_Cannot_invoke_RPC_on_closed_chan, sizeof(__pyx_k_Cannot_invoke_RPC_on_closed_chan), 0, 0, 1, 0},
+    {&__pyx_kp_s_Cannot_invoke_RPC_s, __pyx_k_Cannot_invoke_RPC_s, sizeof(__pyx_k_Cannot_invoke_RPC_s), 0, 0, 1, 0},
+    {&__pyx_kp_s_Cannot_monitor_channel_state_s, __pyx_k_Cannot_monitor_channel_state_s, sizeof(__pyx_k_Cannot_monitor_channel_state_s), 0, 0, 1, 0},
+    {&__pyx_n_s_CensusContext, __pyx_k_CensusContext, sizeof(__pyx_k_CensusContext), 0, 0, 1, 1},
+    {&__pyx_n_s_CensusContext___reduce_cython, __pyx_k_CensusContext___reduce_cython, sizeof(__pyx_k_CensusContext___reduce_cython), 0, 0, 1, 1},
+    {&__pyx_n_s_CensusContext___setstate_cython, __pyx_k_CensusContext___setstate_cython, sizeof(__pyx_k_CensusContext___setstate_cython), 0, 0, 1, 1},
+    {&__pyx_n_s_Channel, __pyx_k_Channel, sizeof(__pyx_k_Channel), 0, 0, 1, 1},
+    {&__pyx_n_s_ChannelArg, __pyx_k_ChannelArg, sizeof(__pyx_k_ChannelArg), 0, 0, 1, 1},
+    {&__pyx_n_s_ChannelArgKey, __pyx_k_ChannelArgKey, sizeof(__pyx_k_ChannelArgKey), 0, 0, 1, 1},
+    {&__pyx_n_s_ChannelArg___reduce_cython, __pyx_k_ChannelArg___reduce_cython, sizeof(__pyx_k_ChannelArg___reduce_cython), 0, 0, 1, 1},
+    {&__pyx_n_s_ChannelArg___setstate_cython, __pyx_k_ChannelArg___setstate_cython, sizeof(__pyx_k_ChannelArg___setstate_cython), 0, 0, 1, 1},
+    {&__pyx_n_s_ChannelArgs, __pyx_k_ChannelArgs, sizeof(__pyx_k_ChannelArgs), 0, 0, 1, 1},
+    {&__pyx_n_s_ChannelArgs___reduce_cython, __pyx_k_ChannelArgs___reduce_cython, sizeof(__pyx_k_ChannelArgs___reduce_cython), 0, 0, 1, 1},
+    {&__pyx_n_s_ChannelArgs___setstate_cython, __pyx_k_ChannelArgs___setstate_cython, sizeof(__pyx_k_ChannelArgs___setstate_cython), 0, 0, 1, 1},
+    {&__pyx_n_s_ChannelCredentials, __pyx_k_ChannelCredentials, sizeof(__pyx_k_ChannelCredentials), 0, 0, 1, 1},
+    {&__pyx_n_s_ChannelCredentials___reduce_cyth, __pyx_k_ChannelCredentials___reduce_cyth, sizeof(__pyx_k_ChannelCredentials___reduce_cyth), 0, 0, 1, 1},
+    {&__pyx_n_s_ChannelCredentials___setstate_cy, __pyx_k_ChannelCredentials___setstate_cy, sizeof(__pyx_k_ChannelCredentials___setstate_cy), 0, 0, 1, 1},
+    {&__pyx_n_s_ChannelState, __pyx_k_ChannelState, sizeof(__pyx_k_ChannelState), 0, 0, 1, 1},
+    {&__pyx_n_s_ChannelState___reduce_cython, __pyx_k_ChannelState___reduce_cython, sizeof(__pyx_k_ChannelState___reduce_cython), 0, 0, 1, 1},
+    {&__pyx_n_s_ChannelState___setstate_cython, __pyx_k_ChannelState___setstate_cython, sizeof(__pyx_k_ChannelState___setstate_cython), 0, 0, 1, 1},
+    {&__pyx_n_s_Channel___reduce_cython, __pyx_k_Channel___reduce_cython, sizeof(__pyx_k_Channel___reduce_cython), 0, 0, 1, 1},
+    {&__pyx_n_s_Channel___setstate_cython, __pyx_k_Channel___setstate_cython, sizeof(__pyx_k_Channel___setstate_cython), 0, 0, 1, 1},
+    {&__pyx_n_s_Channel_check_connectivity_state, __pyx_k_Channel_check_connectivity_state, sizeof(__pyx_k_Channel_check_connectivity_state), 0, 0, 1, 1},
+    {&__pyx_n_s_Channel_close, __pyx_k_Channel_close, sizeof(__pyx_k_Channel_close), 0, 0, 1, 1},
+    {&__pyx_n_s_Channel_close_on_fork, __pyx_k_Channel_close_on_fork, sizeof(__pyx_k_Channel_close_on_fork), 0, 0, 1, 1},
+    {&__pyx_n_s_Channel_get_registered_call_hand, __pyx_k_Channel_get_registered_call_hand, sizeof(__pyx_k_Channel_get_registered_call_hand), 0, 0, 1, 1},
+    {&__pyx_n_s_Channel_integrated_call, __pyx_k_Channel_integrated_call, sizeof(__pyx_k_Channel_integrated_call), 0, 0, 1, 1},
+    {&__pyx_kp_s_Channel_is_closed, __pyx_k_Channel_is_closed, sizeof(__pyx_k_Channel_is_closed), 0, 0, 1, 0},
+    {&__pyx_n_s_Channel_next_call_event, __pyx_k_Channel_next_call_event, sizeof(__pyx_k_Channel_next_call_event), 0, 0, 1, 1},
+    {&__pyx_n_s_Channel_segregated_call, __pyx_k_Channel_segregated_call, sizeof(__pyx_k_Channel_segregated_call), 0, 0, 1, 1},
+    {&__pyx_n_s_Channel_target, __pyx_k_Channel_target, sizeof(__pyx_k_Channel_target), 0, 0, 1, 1},
+    {&__pyx_n_s_Channel_watch_connectivity_state, __pyx_k_Channel_watch_connectivity_state, sizeof(__pyx_k_Channel_watch_connectivity_state), 0, 0, 1, 1},
+    {&__pyx_n_s_CompletionQueue, __pyx_k_CompletionQueue, sizeof(__pyx_k_CompletionQueue), 0, 0, 1, 1},
+    {&__pyx_n_s_CompletionQueue___reduce_cython, __pyx_k_CompletionQueue___reduce_cython, sizeof(__pyx_k_CompletionQueue___reduce_cython), 0, 0, 1, 1},
+    {&__pyx_n_s_CompletionQueue___setstate_cytho, __pyx_k_CompletionQueue___setstate_cytho, sizeof(__pyx_k_CompletionQueue___setstate_cytho), 0, 0, 1, 1},
+    {&__pyx_n_s_CompletionQueue__internal_poll, __pyx_k_CompletionQueue__internal_poll, sizeof(__pyx_k_CompletionQueue__internal_poll), 0, 0, 1, 1},
+    {&__pyx_n_s_CompletionQueue_clear, __pyx_k_CompletionQueue_clear, sizeof(__pyx_k_CompletionQueue_clear), 0, 0, 1, 1},
+    {&__pyx_n_s_CompletionQueue_poll, __pyx_k_CompletionQueue_poll, sizeof(__pyx_k_CompletionQueue_poll), 0, 0, 1, 1},
+    {&__pyx_n_s_CompletionQueue_shutdown, __pyx_k_CompletionQueue_shutdown, sizeof(__pyx_k_CompletionQueue_shutdown), 0, 0, 1, 1},
+    {&__pyx_n_s_CompletionType, __pyx_k_CompletionType, sizeof(__pyx_k_CompletionType), 0, 0, 1, 1},
+    {&__pyx_n_s_CompositeCallCredentials, __pyx_k_CompositeCallCredentials, sizeof(__pyx_k_CompositeCallCredentials), 0, 0, 1, 1},
+    {&__pyx_n_s_CompositeCallCredentials___reduc, __pyx_k_CompositeCallCredentials___reduc, sizeof(__pyx_k_CompositeCallCredentials___reduc), 0, 0, 1, 1},
+    {&__pyx_n_s_CompositeCallCredentials___setst, __pyx_k_CompositeCallCredentials___setst, sizeof(__pyx_k_CompositeCallCredentials___setst), 0, 0, 1, 1},
+    {&__pyx_n_s_CompositeChannelCredentials, __pyx_k_CompositeChannelCredentials, sizeof(__pyx_k_CompositeChannelCredentials), 0, 0, 1, 1},
+    {&__pyx_n_s_CompositeChannelCredentials___re, __pyx_k_CompositeChannelCredentials___re, sizeof(__pyx_k_CompositeChannelCredentials___re), 0, 0, 1, 1},
+    {&__pyx_n_s_CompositeChannelCredentials___se, __pyx_k_CompositeChannelCredentials___se, sizeof(__pyx_k_CompositeChannelCredentials___se), 0, 0, 1, 1},
+    {&__pyx_n_s_CompressionAlgorithm, __pyx_k_CompressionAlgorithm, sizeof(__pyx_k_CompressionAlgorithm), 0, 0, 1, 1},
+    {&__pyx_n_s_CompressionLevel, __pyx_k_CompressionLevel, sizeof(__pyx_k_CompressionLevel), 0, 0, 1, 1},
+    {&__pyx_n_s_CompressionOptions, __pyx_k_CompressionOptions, sizeof(__pyx_k_CompressionOptions), 0, 0, 1, 1},
+    {&__pyx_n_s_CompressionOptions___reduce_cyth, __pyx_k_CompressionOptions___reduce_cyth, sizeof(__pyx_k_CompressionOptions___reduce_cyth), 0, 0, 1, 1},
+    {&__pyx_n_s_CompressionOptions___setstate_cy, __pyx_k_CompressionOptions___setstate_cy, sizeof(__pyx_k_CompressionOptions___setstate_cy), 0, 0, 1, 1},
+    {&__pyx_n_s_CompressionOptions_disable_algor, __pyx_k_CompressionOptions_disable_algor, sizeof(__pyx_k_CompressionOptions_disable_algor), 0, 0, 1, 1},
+    {&__pyx_n_s_CompressionOptions_enable_algori, __pyx_k_CompressionOptions_enable_algori, sizeof(__pyx_k_CompressionOptions_enable_algori), 0, 0, 1, 1},
+    {&__pyx_n_s_CompressionOptions_is_algorithm, __pyx_k_CompressionOptions_is_algorithm, sizeof(__pyx_k_CompressionOptions_is_algorithm), 0, 0, 1, 1},
+    {&__pyx_n_s_CompressionOptions_to_channel_ar, __pyx_k_CompressionOptions_to_channel_ar, sizeof(__pyx_k_CompressionOptions_to_channel_ar), 0, 0, 1, 1},
+    {&__pyx_kp_s_Compression_setting_must_be_spec, __pyx_k_Compression_setting_must_be_spec, sizeof(__pyx_k_Compression_setting_must_be_spec), 0, 0, 1, 0},
+    {&__pyx_n_s_ComputeEngineChannelCredentials, __pyx_k_ComputeEngineChannelCredentials, sizeof(__pyx_k_ComputeEngineChannelCredentials), 0, 0, 1, 1},
+    {&__pyx_n_s_ComputeEngineChannelCredentials_2, __pyx_k_ComputeEngineChannelCredentials_2, sizeof(__pyx_k_ComputeEngineChannelCredentials_2), 0, 0, 1, 1},
+    {&__pyx_n_s_ComputeEngineChannelCredentials_3, __pyx_k_ComputeEngineChannelCredentials_3, sizeof(__pyx_k_ComputeEngineChannelCredentials_3), 0, 0, 1, 1},
+    {&__pyx_n_s_ConcurrentRpcLimiter, __pyx_k_ConcurrentRpcLimiter, sizeof(__pyx_k_ConcurrentRpcLimiter), 0, 0, 1, 1},
+    {&__pyx_n_s_ConcurrentRpcLimiter___reduce_c, __pyx_k_ConcurrentRpcLimiter___reduce_c, sizeof(__pyx_k_ConcurrentRpcLimiter___reduce_c), 0, 0, 1, 1},
+    {&__pyx_n_s_ConcurrentRpcLimiter___setstate, __pyx_k_ConcurrentRpcLimiter___setstate, sizeof(__pyx_k_ConcurrentRpcLimiter___setstate), 0, 0, 1, 1},
+    {&__pyx_n_s_ConcurrentRpcLimiter__decrease, __pyx_k_ConcurrentRpcLimiter__decrease, sizeof(__pyx_k_ConcurrentRpcLimiter__decrease), 0, 0, 1, 1},
+    {&__pyx_n_s_ConcurrentRpcLimiter_check_befo, __pyx_k_ConcurrentRpcLimiter_check_befo, sizeof(__pyx_k_ConcurrentRpcLimiter_check_befo), 0, 0, 1, 1},
+    {&__pyx_n_s_ConcurrentRpcLimiter_decrease_o, __pyx_k_ConcurrentRpcLimiter_decrease_o, sizeof(__pyx_k_ConcurrentRpcLimiter_decrease_o), 0, 0, 1, 1},
+    {&__pyx_kp_s_Concurrent_RPC_limit_exceeded, __pyx_k_Concurrent_RPC_limit_exceeded, sizeof(__pyx_k_Concurrent_RPC_limit_exceeded), 0, 0, 1, 0},
+    {&__pyx_n_s_Condition, __pyx_k_Condition, sizeof(__pyx_k_Condition), 0, 0, 1, 1},
+    {&__pyx_n_s_ConnectivityEvent, __pyx_k_ConnectivityEvent, sizeof(__pyx_k_ConnectivityEvent), 0, 0, 1, 1},
+    {&__pyx_n_s_ConnectivityEvent___reduce_cytho, __pyx_k_ConnectivityEvent___reduce_cytho, sizeof(__pyx_k_ConnectivityEvent___reduce_cytho), 0, 0, 1, 1},
+    {&__pyx_n_s_ConnectivityEvent___setstate_cyt, __pyx_k_ConnectivityEvent___setstate_cyt, sizeof(__pyx_k_ConnectivityEvent___setstate_cyt), 0, 0, 1, 1},
+    {&__pyx_n_s_ConnectivityState, __pyx_k_ConnectivityState, sizeof(__pyx_k_ConnectivityState), 0, 0, 1, 1},
+    {&__pyx_n_s_ConnectivityTag, __pyx_k_ConnectivityTag, sizeof(__pyx_k_ConnectivityTag), 0, 0, 1, 1},
+    {&__pyx_n_s_ConnectivityTag___reduce_cython, __pyx_k_ConnectivityTag___reduce_cython, sizeof(__pyx_k_ConnectivityTag___reduce_cython), 0, 0, 1, 1},
+    {&__pyx_n_s_ConnectivityTag___setstate_cyth, __pyx_k_ConnectivityTag___setstate_cyth, sizeof(__pyx_k_ConnectivityTag___setstate_cyth), 0, 0, 1, 1},
+    {&__pyx_kp_s_Core_should_not_return_GRPC_QUEU, __pyx_k_Core_should_not_return_GRPC_QUEU, sizeof(__pyx_k_Core_should_not_return_GRPC_QUEU), 0, 0, 1, 0},
+    {&__pyx_kp_s_Credentials_couldn_t_have_been_s, __pyx_k_Credentials_couldn_t_have_been_s, sizeof(__pyx_k_Credentials_couldn_t_have_been_s), 0, 0, 1, 0},
+    {&__pyx_kp_s_Dedicated_exception_class_for_wa, __pyx_k_Dedicated_exception_class_for_wa, sizeof(__pyx_k_Dedicated_exception_class_for_wa), 0, 0, 1, 0},
+    {&__pyx_n_s_DeprecationWarning, __pyx_k_DeprecationWarning, sizeof(__pyx_k_DeprecationWarning), 0, 0, 1, 1},
+    {&__pyx_n_s_EMPTY_FLAGS, __pyx_k_EMPTY_FLAGS, sizeof(__pyx_k_EMPTY_FLAGS), 0, 0, 1, 1},
+    {&__pyx_n_s_EMPTY_MASK, __pyx_k_EMPTY_MASK, sizeof(__pyx_k_EMPTY_MASK), 0, 0, 1, 1},
+    {&__pyx_n_s_EOF, __pyx_k_EOF, sizeof(__pyx_k_EOF), 0, 0, 1, 1},
+    {&__pyx_n_s_EOF_2, __pyx_k_EOF_2, sizeof(__pyx_k_EOF_2), 0, 0, 1, 1},
+    {&__pyx_n_s_EOF___bool, __pyx_k_EOF___bool, sizeof(__pyx_k_EOF___bool), 0, 0, 1, 1},
+    {&__pyx_n_s_EOF___len, __pyx_k_EOF___len, sizeof(__pyx_k_EOF___len), 0, 0, 1, 1},
+    {&__pyx_n_s_EOF___repr, __pyx_k_EOF___repr, sizeof(__pyx_k_EOF___repr), 0, 0, 1, 1},
+    {&__pyx_n_s_EOF___str, __pyx_k_EOF___str, sizeof(__pyx_k_EOF___str), 0, 0, 1, 1},
+    {&__pyx_n_s_EOF__repr, __pyx_k_EOF__repr, sizeof(__pyx_k_EOF__repr), 0, 0, 1, 1},
+    {&__pyx_n_s_EX_USAGE, __pyx_k_EX_USAGE, sizeof(__pyx_k_EX_USAGE), 0, 0, 1, 1},
+    {&__pyx_n_s_Enum, __pyx_k_Enum, sizeof(__pyx_k_Enum), 0, 0, 1, 1},
+    {&__pyx_kp_s_Error_fetching_certificate_confi, __pyx_k_Error_fetching_certificate_confi, sizeof(__pyx_k_Error_fetching_certificate_confi), 0, 0, 1, 0},
+    {&__pyx_kp_s_Error_fetching_certificate_confi_2, __pyx_k_Error_fetching_certificate_confi_2, sizeof(__pyx_k_Error_fetching_certificate_confi_2), 0, 0, 1, 0},
+    {&__pyx_kp_s_Error_in_callback_for_method_s, __pyx_k_Error_in_callback_for_method_s, sizeof(__pyx_k_Error_in_callback_for_method_s), 0, 0, 1, 0},
+    {&__pyx_kp_s_Error_in_grpc_server_request_cal, __pyx_k_Error_in_grpc_server_request_cal, sizeof(__pyx_k_Error_in_grpc_server_request_cal), 0, 0, 1, 0},
+    {&__pyx_n_s_ExecuteBatchError, __pyx_k_ExecuteBatchError, sizeof(__pyx_k_ExecuteBatchError), 0, 0, 1, 1},
+    {&__pyx_kp_s_ExecuteBatchError_raised_in_core, __pyx_k_ExecuteBatchError_raised_in_core, sizeof(__pyx_k_ExecuteBatchError_raised_in_core), 0, 0, 1, 0},
+    {&__pyx_kp_s_Exiting_child_due_to_raised_exce, __pyx_k_Exiting_child_due_to_raised_exce, sizeof(__pyx_k_Exiting_child_due_to_raised_exce), 0, 0, 1, 0},
+    {&__pyx_kp_s_Expected_bytes_str_or_unicode_no, __pyx_k_Expected_bytes_str_or_unicode_no, sizeof(__pyx_k_Expected_bytes_str_or_unicode_no), 0, 0, 1, 0},
+    {&__pyx_kp_s_Expected_int_bytes_or_behavior_g, __pyx_k_Expected_int_bytes_or_behavior_g, sizeof(__pyx_k_Expected_int_bytes_or_behavior_g), 0, 0, 1, 0},
+    {&__pyx_kp_s_Expected_str_not, __pyx_k_Expected_str_not, sizeof(__pyx_k_Expected_str_not), 0, 0, 1, 0},
+    {&__pyx_kp_s_Expecting_non_ok_status_code, __pyx_k_Expecting_non_ok_status_code, sizeof(__pyx_k_Expecting_non_ok_status_code), 0, 0, 1, 0},
+    {&__pyx_kp_s_Failed_grpc_call_start_batch_wit, __pyx_k_Failed_grpc_call_start_batch_wit, sizeof(__pyx_k_Failed_grpc_call_start_batch_wit), 0, 0, 1, 0},
+    {&__pyx_kp_s_Failed_s_s, __pyx_k_Failed_s_s, sizeof(__pyx_k_Failed_s_s), 0, 0, 1, 0},
+    {&__pyx_kp_s_Failed_sending_error_status_from, __pyx_k_Failed_sending_error_status_from, sizeof(__pyx_k_Failed_sending_error_status_from), 0, 0, 1, 0},
+    {&__pyx_kp_s_Failed_to_get_server_sockets_ple, __pyx_k_Failed_to_get_server_sockets_ple, sizeof(__pyx_k_Failed_to_get_server_sockets_ple), 0, 0, 1, 0},
+    {&__pyx_kp_s_Failed_to_get_servers_please_ens, __pyx_k_Failed_to_get_servers_please_ens, sizeof(__pyx_k_Failed_to_get_servers_please_ens), 0, 0, 1, 0},
+    {&__pyx_kp_s_Failed_to_get_the_channel_please, __pyx_k_Failed_to_get_the_channel_please, sizeof(__pyx_k_Failed_to_get_the_channel_please), 0, 0, 1, 0},
+    {&__pyx_kp_s_Failed_to_get_the_server_please, __pyx_k_Failed_to_get_the_server_please, sizeof(__pyx_k_Failed_to_get_the_server_please), 0, 0, 1, 0},
+    {&__pyx_kp_s_Failed_to_get_the_socket_please, __pyx_k_Failed_to_get_the_socket_please, sizeof(__pyx_k_Failed_to_get_the_socket_please), 0, 0, 1, 0},
+    {&__pyx_kp_s_Failed_to_get_the_subchannel_ple, __pyx_k_Failed_to_get_the_subchannel_ple, sizeof(__pyx_k_Failed_to_get_the_subchannel_ple), 0, 0, 1, 0},
+    {&__pyx_kp_s_Failed_to_get_top_channels_pleas, __pyx_k_Failed_to_get_top_channels_pleas, sizeof(__pyx_k_Failed_to_get_top_channels_pleas), 0, 0, 1, 0},
+    {&__pyx_kp_s_Failed_to_receive_any_message_fr, __pyx_k_Failed_to_receive_any_message_fr, sizeof(__pyx_k_Failed_to_receive_any_message_fr), 0, 0, 1, 0},
+    {&__pyx_kp_s_Failed_to_shutdown_gRPC_Core_aft, __pyx_k_Failed_to_shutdown_gRPC_Core_aft, sizeof(__pyx_k_Failed_to_shutdown_gRPC_Core_aft), 0, 0, 1, 0},
+    {&__pyx_kp_s_Failed_to_shutdown_gRPC_Python_t, __pyx_k_Failed_to_shutdown_gRPC_Python_t, sizeof(__pyx_k_Failed_to_shutdown_gRPC_Python_t), 0, 0, 1, 0},
+    {&__pyx_n_s_ForkManagedThread, __pyx_k_ForkManagedThread, sizeof(__pyx_k_ForkManagedThread), 0, 0, 1, 1},
+    {&__pyx_n_s_ForkManagedThread___init, __pyx_k_ForkManagedThread___init, sizeof(__pyx_k_ForkManagedThread___init), 0, 0, 1, 1},
+    {&__pyx_n_s_ForkManagedThread___init___local, __pyx_k_ForkManagedThread___init___local, sizeof(__pyx_k_ForkManagedThread___init___local), 0, 0, 1, 1},
+    {&__pyx_n_s_ForkManagedThread_join, __pyx_k_ForkManagedThread_join, sizeof(__pyx_k_ForkManagedThread_join), 0, 0, 1, 1},
+    {&__pyx_n_s_ForkManagedThread_setDaemon, __pyx_k_ForkManagedThread_setDaemon, sizeof(__pyx_k_ForkManagedThread_setDaemon), 0, 0, 1, 1},
+    {&__pyx_n_s_ForkManagedThread_start, __pyx_k_ForkManagedThread_start, sizeof(__pyx_k_ForkManagedThread_start), 0, 0, 1, 1},
+    {&__pyx_n_s_ForkState, __pyx_k_ForkState, sizeof(__pyx_k_ForkState), 0, 0, 1, 1},
+    {&__pyx_n_s_ForkState___init, __pyx_k_ForkState___init, sizeof(__pyx_k_ForkState___init), 0, 0, 1, 1},
+    {&__pyx_n_s_GRPC_ASYNCIO_ENGINE, __pyx_k_GRPC_ASYNCIO_ENGINE, sizeof(__pyx_k_GRPC_ASYNCIO_ENGINE), 0, 0, 1, 1},
+    {&__pyx_n_s_GRPC_COMPRESSION_CHANNEL_DEFAULT, __pyx_k_GRPC_COMPRESSION_CHANNEL_DEFAULT, sizeof(__pyx_k_GRPC_COMPRESSION_CHANNEL_DEFAULT), 0, 0, 1, 1},
+    {&__pyx_n_s_GRPC_COMPRESSION_REQUEST_ALGORIT, __pyx_k_GRPC_COMPRESSION_REQUEST_ALGORIT, sizeof(__pyx_k_GRPC_COMPRESSION_REQUEST_ALGORIT), 0, 0, 1, 1},
+    {&__pyx_n_s_GRPC_ENABLE_FORK_SUPPORT, __pyx_k_GRPC_ENABLE_FORK_SUPPORT, sizeof(__pyx_k_GRPC_ENABLE_FORK_SUPPORT), 0, 0, 1, 1},
+    {&__pyx_n_s_GRPC_ENABLE_FORK_SUPPORT_2, __pyx_k_GRPC_ENABLE_FORK_SUPPORT_2, sizeof(__pyx_k_GRPC_ENABLE_FORK_SUPPORT_2), 0, 0, 1, 1},
+    {&__pyx_n_s_GRPC_PROPAGATE_CANCELLATION, __pyx_k_GRPC_PROPAGATE_CANCELLATION, sizeof(__pyx_k_GRPC_PROPAGATE_CANCELLATION), 0, 0, 1, 1},
+    {&__pyx_n_s_GRPC_PROPAGATE_CENSUS_STATS_CONT, __pyx_k_GRPC_PROPAGATE_CENSUS_STATS_CONT, sizeof(__pyx_k_GRPC_PROPAGATE_CENSUS_STATS_CONT), 0, 0, 1, 1},
+    {&__pyx_n_s_GRPC_PROPAGATE_CENSUS_TRACING_CO, __pyx_k_GRPC_PROPAGATE_CENSUS_TRACING_CO, sizeof(__pyx_k_GRPC_PROPAGATE_CENSUS_TRACING_CO), 0, 0, 1, 1},
+    {&__pyx_n_s_GRPC_PROPAGATE_DEADLINE, __pyx_k_GRPC_PROPAGATE_DEADLINE, sizeof(__pyx_k_GRPC_PROPAGATE_DEADLINE), 0, 0, 1, 1},
+    {&__pyx_n_s_GRPC_PROPAGATE_DEFAULTS, __pyx_k_GRPC_PROPAGATE_DEFAULTS, sizeof(__pyx_k_GRPC_PROPAGATE_DEFAULTS), 0, 0, 1, 1},
+    {&__pyx_n_s_Group, __pyx_k_Group, sizeof(__pyx_k_Group), 0, 0, 1, 1},
+    {&__pyx_n_s_GrpcArgWrapper, __pyx_k_GrpcArgWrapper, sizeof(__pyx_k_GrpcArgWrapper), 0, 0, 1, 1},
+    {&__pyx_n_s_GrpcArgWrapper___reduce_cython, __pyx_k_GrpcArgWrapper___reduce_cython, sizeof(__pyx_k_GrpcArgWrapper___reduce_cython), 0, 0, 1, 1},
+    {&__pyx_n_s_GrpcArgWrapper___setstate_cytho, __pyx_k_GrpcArgWrapper___setstate_cytho, sizeof(__pyx_k_GrpcArgWrapper___setstate_cytho), 0, 0, 1, 1},
+    {&__pyx_n_s_GrpcCallWrapper, __pyx_k_GrpcCallWrapper, sizeof(__pyx_k_GrpcCallWrapper), 0, 0, 1, 1},
+    {&__pyx_n_s_HandlerCallDetails, __pyx_k_HandlerCallDetails, sizeof(__pyx_k_HandlerCallDetails), 0, 0, 1, 1},
+    {&__pyx_n_s_HandlerCallDetails___reduce_cyt, __pyx_k_HandlerCallDetails___reduce_cyt, sizeof(__pyx_k_HandlerCallDetails___reduce_cyt), 0, 0, 1, 1},
+    {&__pyx_n_s_HandlerCallDetails___setstate_c, __pyx_k_HandlerCallDetails___setstate_c, sizeof(__pyx_k_HandlerCallDetails___setstate_c), 0, 0, 1, 1},
+    {&__pyx_n_s_IMMUTABLE_EMPTY_METADATA, __pyx_k_IMMUTABLE_EMPTY_METADATA, sizeof(__pyx_k_IMMUTABLE_EMPTY_METADATA), 0, 0, 1, 1},
+    {&__pyx_n_s_INTERNAL_CALL_ERROR_MESSAGE_FOR, __pyx_k_INTERNAL_CALL_ERROR_MESSAGE_FOR, sizeof(__pyx_k_INTERNAL_CALL_ERROR_MESSAGE_FOR), 0, 0, 1, 1},
+    {&__pyx_n_s_ImportError, __pyx_k_ImportError, sizeof(__pyx_k_ImportError), 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_n_s_InitialMetadataFlags, __pyx_k_InitialMetadataFlags, sizeof(__pyx_k_InitialMetadataFlags), 0, 0, 1, 1},
+    {&__pyx_n_s_InsecureChannelCredentials, __pyx_k_InsecureChannelCredentials, sizeof(__pyx_k_InsecureChannelCredentials), 0, 0, 1, 1},
+    {&__pyx_n_s_InsecureChannelCredentials___red, __pyx_k_InsecureChannelCredentials___red, sizeof(__pyx_k_InsecureChannelCredentials___red), 0, 0, 1, 1},
+    {&__pyx_n_s_InsecureChannelCredentials___set, __pyx_k_InsecureChannelCredentials___set, sizeof(__pyx_k_InsecureChannelCredentials___set), 0, 0, 1, 1},
+    {&__pyx_n_s_IntegratedCall, __pyx_k_IntegratedCall, sizeof(__pyx_k_IntegratedCall), 0, 0, 1, 1},
+    {&__pyx_n_s_IntegratedCall___reduce_cython, __pyx_k_IntegratedCall___reduce_cython, sizeof(__pyx_k_IntegratedCall___reduce_cython), 0, 0, 1, 1},
+    {&__pyx_n_s_IntegratedCall___setstate_cython, __pyx_k_IntegratedCall___setstate_cython, sizeof(__pyx_k_IntegratedCall___setstate_cython), 0, 0, 1, 1},
+    {&__pyx_n_s_IntegratedCall_cancel, __pyx_k_IntegratedCall_cancel, sizeof(__pyx_k_IntegratedCall_cancel), 0, 0, 1, 1},
+    {&__pyx_n_s_IntegratedCall_operate, __pyx_k_IntegratedCall_operate, sizeof(__pyx_k_IntegratedCall_operate), 0, 0, 1, 1},
+    {&__pyx_n_s_InternalError, __pyx_k_InternalError, sizeof(__pyx_k_InternalError), 0, 0, 1, 1},
+    {&__pyx_kp_s_Internal_error_from_Core, __pyx_k_Internal_error_from_Core, sizeof(__pyx_k_Internal_error_from_Core), 0, 0, 1, 0},
+    {&__pyx_kp_s_Internal_gRPC_call_error_d, __pyx_k_Internal_gRPC_call_error_d, sizeof(__pyx_k_Internal_gRPC_call_error_d), 0, 0, 1, 0},
+    {&__pyx_kp_s_Invalid_encoding_on_s, __pyx_k_Invalid_encoding_on_s, sizeof(__pyx_k_Invalid_encoding_on_s), 0, 0, 1, 0},
+    {&__pyx_kp_u_Invalid_trailing_metadata_type_e, __pyx_k_Invalid_trailing_metadata_type_e, sizeof(__pyx_k_Invalid_trailing_metadata_type_e), 0, 1, 0, 0},
+    {&__pyx_n_s_KeyError, __pyx_k_KeyError, sizeof(__pyx_k_KeyError), 0, 0, 1, 1},
+    {&__pyx_n_s_KeyboardInterrupt, __pyx_k_KeyboardInterrupt, sizeof(__pyx_k_KeyboardInterrupt), 0, 0, 1, 1},
+    {&__pyx_n_s_LOGGER, __pyx_k_LOGGER, sizeof(__pyx_k_LOGGER), 0, 0, 1, 1},
+    {&__pyx_n_s_LatentEventArg, __pyx_k_LatentEventArg, sizeof(__pyx_k_LatentEventArg), 0, 0, 1, 1},
+    {&__pyx_n_s_LocalChannelCredentials, __pyx_k_LocalChannelCredentials, sizeof(__pyx_k_LocalChannelCredentials), 0, 0, 1, 1},
+    {&__pyx_n_s_LocalChannelCredentials___reduce, __pyx_k_LocalChannelCredentials___reduce, sizeof(__pyx_k_LocalChannelCredentials___reduce), 0, 0, 1, 1},
+    {&__pyx_n_s_LocalChannelCredentials___setsta, __pyx_k_LocalChannelCredentials___setsta, sizeof(__pyx_k_LocalChannelCredentials___setsta), 0, 0, 1, 1},
+    {&__pyx_n_s_LocalConnectionType, __pyx_k_LocalConnectionType, sizeof(__pyx_k_LocalConnectionType), 0, 0, 1, 1},
+    {&__pyx_kp_s_Locally_aborted, __pyx_k_Locally_aborted, sizeof(__pyx_k_Locally_aborted), 0, 0, 1, 0},
+    {&__pyx_n_s_Lock, __pyx_k_Lock, sizeof(__pyx_k_Lock), 0, 0, 1, 1},
+    {&__pyx_n_s_MessageReceiver, __pyx_k_MessageReceiver, sizeof(__pyx_k_MessageReceiver), 0, 0, 1, 1},
+    {&__pyx_n_s_MessageReceiver___anext, __pyx_k_MessageReceiver___anext, sizeof(__pyx_k_MessageReceiver___anext), 0, 0, 1, 1},
+    {&__pyx_n_s_MessageReceiver___reduce_cython, __pyx_k_MessageReceiver___reduce_cython, sizeof(__pyx_k_MessageReceiver___reduce_cython), 0, 0, 1, 1},
+    {&__pyx_n_s_MessageReceiver___setstate_cyth, __pyx_k_MessageReceiver___setstate_cyth, sizeof(__pyx_k_MessageReceiver___setstate_cyth), 0, 0, 1, 1},
+    {&__pyx_n_s_MessageReceiver__async_message, __pyx_k_MessageReceiver__async_message, sizeof(__pyx_k_MessageReceiver__async_message), 0, 0, 1, 1},
+    {&__pyx_n_s_MetadataPluginCallCredentials, __pyx_k_MetadataPluginCallCredentials, sizeof(__pyx_k_MetadataPluginCallCredentials), 0, 0, 1, 1},
+    {&__pyx_n_s_MetadataPluginCallCredentials_2, __pyx_k_MetadataPluginCallCredentials_2, sizeof(__pyx_k_MetadataPluginCallCredentials_2), 0, 0, 1, 1},
+    {&__pyx_n_s_MetadataPluginCallCredentials_3, __pyx_k_MetadataPluginCallCredentials_3, sizeof(__pyx_k_MetadataPluginCallCredentials_3), 0, 0, 1, 1},
+    {&__pyx_n_s_Metadatum, __pyx_k_Metadatum, sizeof(__pyx_k_Metadatum), 0, 0, 1, 1},
+    {&__pyx_kp_s_Method_not_found, __pyx_k_Method_not_found, sizeof(__pyx_k_Method_not_found), 0, 0, 1, 0},
+    {&__pyx_n_s_NON_OK_CALL_REPRESENTATION, __pyx_k_NON_OK_CALL_REPRESENTATION, sizeof(__pyx_k_NON_OK_CALL_REPRESENTATION), 0, 0, 1, 1},
+    {&__pyx_kp_s_No_custom_hooks_are_implemented, __pyx_k_No_custom_hooks_are_implemented, sizeof(__pyx_k_No_custom_hooks_are_implemented), 0, 0, 1, 0},
+    {&__pyx_kp_s_Non_thread_safe_operation, __pyx_k_Non_thread_safe_operation, sizeof(__pyx_k_Non_thread_safe_operation), 0, 0, 1, 0},
+    {&__pyx_n_s_None, __pyx_k_None, sizeof(__pyx_k_None), 0, 0, 1, 1},
+    {&__pyx_n_s_NotImplementedError, __pyx_k_NotImplementedError, sizeof(__pyx_k_NotImplementedError), 0, 0, 1, 1},
+    {&__pyx_n_s_OK_CALL_REPRESENTATION, __pyx_k_OK_CALL_REPRESENTATION, sizeof(__pyx_k_OK_CALL_REPRESENTATION), 0, 0, 1, 1},
+    {&__pyx_n_s_Operation, __pyx_k_Operation, sizeof(__pyx_k_Operation), 0, 0, 1, 1},
+    {&__pyx_n_s_OperationType, __pyx_k_OperationType, sizeof(__pyx_k_OperationType), 0, 0, 1, 1},
+    {&__pyx_n_s_Operation___reduce_cython, __pyx_k_Operation___reduce_cython, sizeof(__pyx_k_Operation___reduce_cython), 0, 0, 1, 1},
+    {&__pyx_n_s_Operation___setstate_cython, __pyx_k_Operation___setstate_cython, sizeof(__pyx_k_Operation___setstate_cython), 0, 0, 1, 1},
+    {&__pyx_n_s_Optional, __pyx_k_Optional, sizeof(__pyx_k_Optional), 0, 0, 1, 1},
+    {&__pyx_n_s_POLLER, __pyx_k_POLLER, sizeof(__pyx_k_POLLER), 0, 0, 1, 1},
+    {&__pyx_n_s_PickleError, __pyx_k_PickleError, sizeof(__pyx_k_PickleError), 0, 0, 1, 1},
+    {&__pyx_kp_s_Please_report_to_https_github_co, __pyx_k_Please_report_to_https_github_co, sizeof(__pyx_k_Please_report_to_https_github_co), 0, 0, 1, 0},
+    {&__pyx_n_s_PollerCompletionQueue, __pyx_k_PollerCompletionQueue, sizeof(__pyx_k_PollerCompletionQueue), 0, 0, 1, 1},
+    {&__pyx_n_s_PollerCompletionQueue___reduce_c, __pyx_k_PollerCompletionQueue___reduce_c, sizeof(__pyx_k_PollerCompletionQueue___reduce_c), 0, 0, 1, 1},
+    {&__pyx_n_s_PollerCompletionQueue___setstate, __pyx_k_PollerCompletionQueue___setstate, sizeof(__pyx_k_PollerCompletionQueue___setstate), 0, 0, 1, 1},
+    {&__pyx_n_s_PollerCompletionQueue__handle_ev, __pyx_k_PollerCompletionQueue__handle_ev, sizeof(__pyx_k_PollerCompletionQueue__handle_ev), 0, 0, 1, 1},
+    {&__pyx_n_s_PollerCompletionQueue__poll_wrap, __pyx_k_PollerCompletionQueue__poll_wrap, sizeof(__pyx_k_PollerCompletionQueue__poll_wrap), 0, 0, 1, 1},
+    {&__pyx_n_s_PollerCompletionQueue_bind_loop, __pyx_k_PollerCompletionQueue_bind_loop, sizeof(__pyx_k_PollerCompletionQueue_bind_loop), 0, 0, 1, 1},
+    {&__pyx_n_s_PropagationConstants, __pyx_k_PropagationConstants, sizeof(__pyx_k_PropagationConstants), 0, 0, 1, 1},
+    {&__pyx_n_s_Pyx_CFunc_7_cython_6cygrpc_obj, __pyx_k_Pyx_CFunc_7_cython_6cygrpc_obj, sizeof(__pyx_k_Pyx_CFunc_7_cython_6cygrpc_obj), 0, 0, 1, 1},
+    {&__pyx_n_s_Pyx_CFunc_7_cython_6cygrpc_obj_2, __pyx_k_Pyx_CFunc_7_cython_6cygrpc_obj_2, sizeof(__pyx_k_Pyx_CFunc_7_cython_6cygrpc_obj_2), 0, 0, 1, 1},
+    {&__pyx_n_s_Pyx_CFunc_7_cython_6cygrpc_obj_3, __pyx_k_Pyx_CFunc_7_cython_6cygrpc_obj_3, sizeof(__pyx_k_Pyx_CFunc_7_cython_6cygrpc_obj_3), 0, 0, 1, 1},
+    {&__pyx_n_s_Pyx_CFunc_7_cython_6cygrpc_voi, __pyx_k_Pyx_CFunc_7_cython_6cygrpc_voi, sizeof(__pyx_k_Pyx_CFunc_7_cython_6cygrpc_voi), 0, 0, 1, 1},
+    {&__pyx_n_s_Queue, __pyx_k_Queue, sizeof(__pyx_k_Queue), 0, 0, 1, 1},
+    {&__pyx_n_s_RLock, __pyx_k_RLock, sizeof(__pyx_k_RLock), 0, 0, 1, 1},
+    {&__pyx_n_s_RPCState, __pyx_k_RPCState, sizeof(__pyx_k_RPCState), 0, 0, 1, 1},
+    {&__pyx_n_s_RPCState___reduce_cython, __pyx_k_RPCState___reduce_cython, sizeof(__pyx_k_RPCState___reduce_cython), 0, 0, 1, 1},
+    {&__pyx_n_s_RPCState___setstate_cython, __pyx_k_RPCState___setstate_cython, sizeof(__pyx_k_RPCState___setstate_cython), 0, 0, 1, 1},
+    {&__pyx_kp_s_RPC_already_finished, __pyx_k_RPC_already_finished, sizeof(__pyx_k_RPC_already_finished), 0, 0, 1, 0},
+    {&__pyx_kp_s_RPC_cancelled_for_servicer_metho, __pyx_k_RPC_cancelled_for_servicer_metho, sizeof(__pyx_k_RPC_cancelled_for_servicer_metho), 0, 0, 1, 0},
+    {&__pyx_kp_s_RPC_cancelled_for_unknown_reason, __pyx_k_RPC_cancelled_for_unknown_reason, sizeof(__pyx_k_RPC_cancelled_for_unknown_reason), 0, 0, 1, 0},
+    {&__pyx_kp_s_Raised_if_the_server_is_stopped, __pyx_k_Raised_if_the_server_is_stopped, sizeof(__pyx_k_Raised_if_the_server_is_stopped), 0, 0, 1, 0},
+    {&__pyx_kp_s_Raised_upon_unexpected_errors_in, __pyx_k_Raised_upon_unexpected_errors_in, sizeof(__pyx_k_Raised_upon_unexpected_errors_in), 0, 0, 1, 0},
+    {&__pyx_kp_s_Raised_when_calling_abort_in_ser, __pyx_k_Raised_when_calling_abort_in_ser, sizeof(__pyx_k_Raised_when_calling_abort_in_ser), 0, 0, 1, 0},
+    {&__pyx_kp_s_Raised_when_execute_batch_return, __pyx_k_Raised_when_execute_batch_return, sizeof(__pyx_k_Raised_when_execute_batch_return), 0, 0, 1, 0},
+    {&__pyx_kp_s_Raised_when_the_usage_of_API_by, __pyx_k_Raised_when_the_usage_of_API_by, sizeof(__pyx_k_Raised_when_the_usage_of_API_by), 0, 0, 1, 0},
+    {&__pyx_n_s_ReceiveCloseOnServerOperation, __pyx_k_ReceiveCloseOnServerOperation, sizeof(__pyx_k_ReceiveCloseOnServerOperation), 0, 0, 1, 1},
+    {&__pyx_n_s_ReceiveCloseOnServerOperation_2, __pyx_k_ReceiveCloseOnServerOperation_2, sizeof(__pyx_k_ReceiveCloseOnServerOperation_2), 0, 0, 1, 1},
+    {&__pyx_n_s_ReceiveCloseOnServerOperation_3, __pyx_k_ReceiveCloseOnServerOperation_3, sizeof(__pyx_k_ReceiveCloseOnServerOperation_3), 0, 0, 1, 1},
+    {&__pyx_n_s_ReceiveCloseOnServerOperation_ca, __pyx_k_ReceiveCloseOnServerOperation_ca, sizeof(__pyx_k_ReceiveCloseOnServerOperation_ca), 0, 0, 1, 1},
+    {&__pyx_n_s_ReceiveCloseOnServerOperation_ty, __pyx_k_ReceiveCloseOnServerOperation_ty, sizeof(__pyx_k_ReceiveCloseOnServerOperation_ty), 0, 0, 1, 1},
+    {&__pyx_n_s_ReceiveInitialMetadataOperation, __pyx_k_ReceiveInitialMetadataOperation, sizeof(__pyx_k_ReceiveInitialMetadataOperation), 0, 0, 1, 1},
+    {&__pyx_n_s_ReceiveInitialMetadataOperation_2, __pyx_k_ReceiveInitialMetadataOperation_2, sizeof(__pyx_k_ReceiveInitialMetadataOperation_2), 0, 0, 1, 1},
+    {&__pyx_n_s_ReceiveInitialMetadataOperation_3, __pyx_k_ReceiveInitialMetadataOperation_3, sizeof(__pyx_k_ReceiveInitialMetadataOperation_3), 0, 0, 1, 1},
+    {&__pyx_n_s_ReceiveInitialMetadataOperation_4, __pyx_k_ReceiveInitialMetadataOperation_4, sizeof(__pyx_k_ReceiveInitialMetadataOperation_4), 0, 0, 1, 1},
+    {&__pyx_n_s_ReceiveInitialMetadataOperation_5, __pyx_k_ReceiveInitialMetadataOperation_5, sizeof(__pyx_k_ReceiveInitialMetadataOperation_5), 0, 0, 1, 1},
+    {&__pyx_n_s_ReceiveMessageOperation, __pyx_k_ReceiveMessageOperation, sizeof(__pyx_k_ReceiveMessageOperation), 0, 0, 1, 1},
+    {&__pyx_n_s_ReceiveMessageOperation___reduce, __pyx_k_ReceiveMessageOperation___reduce, sizeof(__pyx_k_ReceiveMessageOperation___reduce), 0, 0, 1, 1},
+    {&__pyx_n_s_ReceiveMessageOperation___setsta, __pyx_k_ReceiveMessageOperation___setsta, sizeof(__pyx_k_ReceiveMessageOperation___setsta), 0, 0, 1, 1},
+    {&__pyx_n_s_ReceiveMessageOperation_message, __pyx_k_ReceiveMessageOperation_message, sizeof(__pyx_k_ReceiveMessageOperation_message), 0, 0, 1, 1},
+    {&__pyx_n_s_ReceiveMessageOperation_type, __pyx_k_ReceiveMessageOperation_type, sizeof(__pyx_k_ReceiveMessageOperation_type), 0, 0, 1, 1},
+    {&__pyx_n_s_ReceiveStatusOnClientOperation, __pyx_k_ReceiveStatusOnClientOperation, sizeof(__pyx_k_ReceiveStatusOnClientOperation), 0, 0, 1, 1},
+    {&__pyx_n_s_ReceiveStatusOnClientOperation_2, __pyx_k_ReceiveStatusOnClientOperation_2, sizeof(__pyx_k_ReceiveStatusOnClientOperation_2), 0, 0, 1, 1},
+    {&__pyx_n_s_ReceiveStatusOnClientOperation_3, __pyx_k_ReceiveStatusOnClientOperation_3, sizeof(__pyx_k_ReceiveStatusOnClientOperation_3), 0, 0, 1, 1},
+    {&__pyx_n_s_ReceiveStatusOnClientOperation_c, __pyx_k_ReceiveStatusOnClientOperation_c, sizeof(__pyx_k_ReceiveStatusOnClientOperation_c), 0, 0, 1, 1},
+    {&__pyx_n_s_ReceiveStatusOnClientOperation_d, __pyx_k_ReceiveStatusOnClientOperation_d, sizeof(__pyx_k_ReceiveStatusOnClientOperation_d), 0, 0, 1, 1},
+    {&__pyx_n_s_ReceiveStatusOnClientOperation_e, __pyx_k_ReceiveStatusOnClientOperation_e, sizeof(__pyx_k_ReceiveStatusOnClientOperation_e), 0, 0, 1, 1},
+    {&__pyx_n_s_ReceiveStatusOnClientOperation_t, __pyx_k_ReceiveStatusOnClientOperation_t, sizeof(__pyx_k_ReceiveStatusOnClientOperation_t), 0, 0, 1, 1},
+    {&__pyx_n_s_ReceiveStatusOnClientOperation_t_2, __pyx_k_ReceiveStatusOnClientOperation_t_2, sizeof(__pyx_k_ReceiveStatusOnClientOperation_t_2), 0, 0, 1, 1},
+    {&__pyx_n_s_RequestCallError, __pyx_k_RequestCallError, sizeof(__pyx_k_RequestCallError), 0, 0, 1, 1},
+    {&__pyx_n_s_RequestCallEvent, __pyx_k_RequestCallEvent, sizeof(__pyx_k_RequestCallEvent), 0, 0, 1, 1},
+    {&__pyx_n_s_RequestCallEvent___reduce_cython, __pyx_k_RequestCallEvent___reduce_cython, sizeof(__pyx_k_RequestCallEvent___reduce_cython), 0, 0, 1, 1},
+    {&__pyx_n_s_RequestCallEvent___setstate_cyth, __pyx_k_RequestCallEvent___setstate_cyth, sizeof(__pyx_k_RequestCallEvent___setstate_cyth), 0, 0, 1, 1},
+    {&__pyx_n_s_RequestCallTag, __pyx_k_RequestCallTag, sizeof(__pyx_k_RequestCallTag), 0, 0, 1, 1},
+    {&__pyx_n_s_RequestCallTag___reduce_cython, __pyx_k_RequestCallTag___reduce_cython, sizeof(__pyx_k_RequestCallTag___reduce_cython), 0, 0, 1, 1},
+    {&__pyx_n_s_RequestCallTag___setstate_cytho, __pyx_k_RequestCallTag___setstate_cytho, sizeof(__pyx_k_RequestCallTag___setstate_cytho), 0, 0, 1, 1},
+    {&__pyx_n_s_RuntimeError, __pyx_k_RuntimeError, sizeof(__pyx_k_RuntimeError), 0, 0, 1, 1},
+    {&__pyx_n_s_SERVICES_TO_EXCLUDE, __pyx_k_SERVICES_TO_EXCLUDE, sizeof(__pyx_k_SERVICES_TO_EXCLUDE), 0, 0, 1, 1},
+    {&__pyx_n_s_SSLChannelCredentials, __pyx_k_SSLChannelCredentials, sizeof(__pyx_k_SSLChannelCredentials), 0, 0, 1, 1},
+    {&__pyx_n_s_SSLChannelCredentials___reduce_c, __pyx_k_SSLChannelCredentials___reduce_c, sizeof(__pyx_k_SSLChannelCredentials___reduce_c), 0, 0, 1, 1},
+    {&__pyx_n_s_SSLChannelCredentials___setstate, __pyx_k_SSLChannelCredentials___setstate, sizeof(__pyx_k_SSLChannelCredentials___setstate), 0, 0, 1, 1},
+    {&__pyx_n_s_SSLSessionCacheLRU, __pyx_k_SSLSessionCacheLRU, sizeof(__pyx_k_SSLSessionCacheLRU), 0, 0, 1, 1},
+    {&__pyx_n_s_SSLSessionCacheLRU___reduce_cyth, __pyx_k_SSLSessionCacheLRU___reduce_cyth, sizeof(__pyx_k_SSLSessionCacheLRU___reduce_cyth), 0, 0, 1, 1},
+    {&__pyx_n_s_SSLSessionCacheLRU___setstate_cy, __pyx_k_SSLSessionCacheLRU___setstate_cy, sizeof(__pyx_k_SSLSessionCacheLRU___setstate_cy), 0, 0, 1, 1},
+    {&__pyx_n_s_SegregatedCall, __pyx_k_SegregatedCall, sizeof(__pyx_k_SegregatedCall), 0, 0, 1, 1},
+    {&__pyx_n_s_SegregatedCall___reduce_cython, __pyx_k_SegregatedCall___reduce_cython, sizeof(__pyx_k_SegregatedCall___reduce_cython), 0, 0, 1, 1},
+    {&__pyx_n_s_SegregatedCall___setstate_cython, __pyx_k_SegregatedCall___setstate_cython, sizeof(__pyx_k_SegregatedCall___setstate_cython), 0, 0, 1, 1},
+    {&__pyx_n_s_SegregatedCall_cancel, __pyx_k_SegregatedCall_cancel, sizeof(__pyx_k_SegregatedCall_cancel), 0, 0, 1, 1},
+    {&__pyx_n_s_SegregatedCall_next_event, __pyx_k_SegregatedCall_next_event, sizeof(__pyx_k_SegregatedCall_next_event), 0, 0, 1, 1},
+    {&__pyx_n_s_SegregatedCall_operate, __pyx_k_SegregatedCall_operate, sizeof(__pyx_k_SegregatedCall_operate), 0, 0, 1, 1},
+    {&__pyx_n_s_SendCloseFromClientOperation, __pyx_k_SendCloseFromClientOperation, sizeof(__pyx_k_SendCloseFromClientOperation), 0, 0, 1, 1},
+    {&__pyx_n_s_SendCloseFromClientOperation___r, __pyx_k_SendCloseFromClientOperation___r, sizeof(__pyx_k_SendCloseFromClientOperation___r), 0, 0, 1, 1},
+    {&__pyx_n_s_SendCloseFromClientOperation___s, __pyx_k_SendCloseFromClientOperation___s, sizeof(__pyx_k_SendCloseFromClientOperation___s), 0, 0, 1, 1},
+    {&__pyx_n_s_SendCloseFromClientOperation_typ, __pyx_k_SendCloseFromClientOperation_typ, sizeof(__pyx_k_SendCloseFromClientOperation_typ), 0, 0, 1, 1},
+    {&__pyx_n_s_SendInitialMetadataOperation, __pyx_k_SendInitialMetadataOperation, sizeof(__pyx_k_SendInitialMetadataOperation), 0, 0, 1, 1},
+    {&__pyx_n_s_SendInitialMetadataOperation___r, __pyx_k_SendInitialMetadataOperation___r, sizeof(__pyx_k_SendInitialMetadataOperation___r), 0, 0, 1, 1},
+    {&__pyx_n_s_SendInitialMetadataOperation___s, __pyx_k_SendInitialMetadataOperation___s, sizeof(__pyx_k_SendInitialMetadataOperation___s), 0, 0, 1, 1},
+    {&__pyx_n_s_SendInitialMetadataOperation_typ, __pyx_k_SendInitialMetadataOperation_typ, sizeof(__pyx_k_SendInitialMetadataOperation_typ), 0, 0, 1, 1},
+    {&__pyx_n_s_SendMessageOperation, __pyx_k_SendMessageOperation, sizeof(__pyx_k_SendMessageOperation), 0, 0, 1, 1},
+    {&__pyx_n_s_SendMessageOperation___reduce_cy, __pyx_k_SendMessageOperation___reduce_cy, sizeof(__pyx_k_SendMessageOperation___reduce_cy), 0, 0, 1, 1},
+    {&__pyx_n_s_SendMessageOperation___setstate, __pyx_k_SendMessageOperation___setstate, sizeof(__pyx_k_SendMessageOperation___setstate), 0, 0, 1, 1},
+    {&__pyx_n_s_SendMessageOperation_type, __pyx_k_SendMessageOperation_type, sizeof(__pyx_k_SendMessageOperation_type), 0, 0, 1, 1},
+    {&__pyx_n_s_SendStatusFromServerOperation, __pyx_k_SendStatusFromServerOperation, sizeof(__pyx_k_SendStatusFromServerOperation), 0, 0, 1, 1},
+    {&__pyx_n_s_SendStatusFromServerOperation_2, __pyx_k_SendStatusFromServerOperation_2, sizeof(__pyx_k_SendStatusFromServerOperation_2), 0, 0, 1, 1},
+    {&__pyx_n_s_SendStatusFromServerOperation_3, __pyx_k_SendStatusFromServerOperation_3, sizeof(__pyx_k_SendStatusFromServerOperation_3), 0, 0, 1, 1},
+    {&__pyx_n_s_SendStatusFromServerOperation_ty, __pyx_k_SendStatusFromServerOperation_ty, sizeof(__pyx_k_SendStatusFromServerOperation_ty), 0, 0, 1, 1},
+    {&__pyx_kp_s_Send_initial_metadata_failed_alr, __pyx_k_Send_initial_metadata_failed_alr, sizeof(__pyx_k_Send_initial_metadata_failed_alr), 0, 0, 1, 0},
+    {&__pyx_n_s_Server, __pyx_k_Server, sizeof(__pyx_k_Server), 0, 0, 1, 1},
+    {&__pyx_n_s_ServerCertificateConfig, __pyx_k_ServerCertificateConfig, sizeof(__pyx_k_ServerCertificateConfig), 0, 0, 1, 1},
+    {&__pyx_n_s_ServerCertificateConfig___reduce, __pyx_k_ServerCertificateConfig___reduce, sizeof(__pyx_k_ServerCertificateConfig___reduce), 0, 0, 1, 1},
+    {&__pyx_n_s_ServerCertificateConfig___setsta, __pyx_k_ServerCertificateConfig___setsta, sizeof(__pyx_k_ServerCertificateConfig___setsta), 0, 0, 1, 1},
+    {&__pyx_n_s_ServerCertificateConfiguration, __pyx_k_ServerCertificateConfiguration, sizeof(__pyx_k_ServerCertificateConfiguration), 0, 0, 1, 1},
+    {&__pyx_n_s_ServerCredentials, __pyx_k_ServerCredentials, sizeof(__pyx_k_ServerCredentials), 0, 0, 1, 1},
+    {&__pyx_n_s_ServerCredentials___reduce_cytho, __pyx_k_ServerCredentials___reduce_cytho, sizeof(__pyx_k_ServerCredentials___reduce_cytho), 0, 0, 1, 1},
+    {&__pyx_n_s_ServerCredentials___setstate_cyt, __pyx_k_ServerCredentials___setstate_cyt, sizeof(__pyx_k_ServerCredentials___setstate_cyt), 0, 0, 1, 1},
+    {&__pyx_n_s_ServerShutdownEvent, __pyx_k_ServerShutdownEvent, sizeof(__pyx_k_ServerShutdownEvent), 0, 0, 1, 1},
+    {&__pyx_n_s_ServerShutdownEvent___reduce_cyt, __pyx_k_ServerShutdownEvent___reduce_cyt, sizeof(__pyx_k_ServerShutdownEvent___reduce_cyt), 0, 0, 1, 1},
+    {&__pyx_n_s_ServerShutdownEvent___setstate_c, __pyx_k_ServerShutdownEvent___setstate_c, sizeof(__pyx_k_ServerShutdownEvent___setstate_c), 0, 0, 1, 1},
+    {&__pyx_n_s_ServerShutdownTag, __pyx_k_ServerShutdownTag, sizeof(__pyx_k_ServerShutdownTag), 0, 0, 1, 1},
+    {&__pyx_n_s_ServerShutdownTag___reduce_cyth, __pyx_k_ServerShutdownTag___reduce_cyth, sizeof(__pyx_k_ServerShutdownTag___reduce_cyth), 0, 0, 1, 1},
+    {&__pyx_n_s_ServerShutdownTag___setstate_cy, __pyx_k_ServerShutdownTag___setstate_cy, sizeof(__pyx_k_ServerShutdownTag___setstate_cy), 0, 0, 1, 1},
+    {&__pyx_n_s_ServerStoppedError, __pyx_k_ServerStoppedError, sizeof(__pyx_k_ServerStoppedError), 0, 0, 1, 1},
+    {&__pyx_n_s_Server___reduce_cython, __pyx_k_Server___reduce_cython, sizeof(__pyx_k_Server___reduce_cython), 0, 0, 1, 1},
+    {&__pyx_n_s_Server___setstate_cython, __pyx_k_Server___setstate_cython, sizeof(__pyx_k_Server___setstate_cython), 0, 0, 1, 1},
+    {&__pyx_n_s_Server_add_http2_port, __pyx_k_Server_add_http2_port, sizeof(__pyx_k_Server_add_http2_port), 0, 0, 1, 1},
+    {&__pyx_kp_s_Server_already_stopped, __pyx_k_Server_already_stopped, sizeof(__pyx_k_Server_already_stopped), 0, 0, 1, 0},
+    {&__pyx_n_s_Server_cancel_all_calls, __pyx_k_Server_cancel_all_calls, sizeof(__pyx_k_Server_cancel_all_calls), 0, 0, 1, 1},
+    {&__pyx_n_s_Server_destroy, __pyx_k_Server_destroy, sizeof(__pyx_k_Server_destroy), 0, 0, 1, 1},
+    {&__pyx_kp_s_Server_not_in_ready_state, __pyx_k_Server_not_in_ready_state, sizeof(__pyx_k_Server_not_in_ready_state), 0, 0, 1, 0},
+    {&__pyx_n_s_Server_register_completion_queue, __pyx_k_Server_register_completion_queue, sizeof(__pyx_k_Server_register_completion_queue), 0, 0, 1, 1},
+    {&__pyx_n_s_Server_request_call, __pyx_k_Server_request_call, sizeof(__pyx_k_Server_request_call), 0, 0, 1, 1},
+    {&__pyx_n_s_Server_shutdown, __pyx_k_Server_shutdown, sizeof(__pyx_k_Server_shutdown), 0, 0, 1, 1},
+    {&__pyx_kp_s_Server_shutdown_failed_no_comple, __pyx_k_Server_shutdown_failed_no_comple, sizeof(__pyx_k_Server_shutdown_failed_no_comple), 0, 0, 1, 0},
+    {&__pyx_n_s_Server_start, __pyx_k_Server_start, sizeof(__pyx_k_Server_start), 0, 0, 1, 1},
+    {&__pyx_n_s_ServicerContext, __pyx_k_ServicerContext, sizeof(__pyx_k_ServicerContext), 0, 0, 1, 1},
+    {&__pyx_n_s_ServicerContext___reduce_cython, __pyx_k_ServicerContext___reduce_cython, sizeof(__pyx_k_ServicerContext___reduce_cython), 0, 0, 1, 1},
+    {&__pyx_n_s_ServicerContext___setstate_cyth, __pyx_k_ServicerContext___setstate_cyth, sizeof(__pyx_k_ServicerContext___setstate_cyth), 0, 0, 1, 1},
+    {&__pyx_n_s_ServicerContext_abort, __pyx_k_ServicerContext_abort, sizeof(__pyx_k_ServicerContext_abort), 0, 0, 1, 1},
+    {&__pyx_n_s_ServicerContext_abort_with_stat, __pyx_k_ServicerContext_abort_with_stat, sizeof(__pyx_k_ServicerContext_abort_with_stat), 0, 0, 1, 1},
+    {&__pyx_n_s_ServicerContext_add_done_callba, __pyx_k_ServicerContext_add_done_callba, sizeof(__pyx_k_ServicerContext_add_done_callba), 0, 0, 1, 1},
+    {&__pyx_n_s_ServicerContext_auth_context, __pyx_k_ServicerContext_auth_context, sizeof(__pyx_k_ServicerContext_auth_context), 0, 0, 1, 1},
+    {&__pyx_n_s_ServicerContext_cancelled, __pyx_k_ServicerContext_cancelled, sizeof(__pyx_k_ServicerContext_cancelled), 0, 0, 1, 1},
+    {&__pyx_n_s_ServicerContext_code, __pyx_k_ServicerContext_code, sizeof(__pyx_k_ServicerContext_code), 0, 0, 1, 1},
+    {&__pyx_n_s_ServicerContext_details, __pyx_k_ServicerContext_details, sizeof(__pyx_k_ServicerContext_details), 0, 0, 1, 1},
+    {&__pyx_n_s_ServicerContext_disable_next_me, __pyx_k_ServicerContext_disable_next_me, sizeof(__pyx_k_ServicerContext_disable_next_me), 0, 0, 1, 1},
+    {&__pyx_n_s_ServicerContext_done, __pyx_k_ServicerContext_done, sizeof(__pyx_k_ServicerContext_done), 0, 0, 1, 1},
+    {&__pyx_n_s_ServicerContext_invocation_meta, __pyx_k_ServicerContext_invocation_meta, sizeof(__pyx_k_ServicerContext_invocation_meta), 0, 0, 1, 1},
+    {&__pyx_n_s_ServicerContext_peer, __pyx_k_ServicerContext_peer, sizeof(__pyx_k_ServicerContext_peer), 0, 0, 1, 1},
+    {&__pyx_n_s_ServicerContext_peer_identities, __pyx_k_ServicerContext_peer_identities, sizeof(__pyx_k_ServicerContext_peer_identities), 0, 0, 1, 1},
+    {&__pyx_n_s_ServicerContext_peer_identity_k, __pyx_k_ServicerContext_peer_identity_k, sizeof(__pyx_k_ServicerContext_peer_identity_k), 0, 0, 1, 1},
+    {&__pyx_n_s_ServicerContext_read, __pyx_k_ServicerContext_read, sizeof(__pyx_k_ServicerContext_read), 0, 0, 1, 1},
+    {&__pyx_n_s_ServicerContext_send_initial_me, __pyx_k_ServicerContext_send_initial_me, sizeof(__pyx_k_ServicerContext_send_initial_me), 0, 0, 1, 1},
+    {&__pyx_n_s_ServicerContext_set_code, __pyx_k_ServicerContext_set_code, sizeof(__pyx_k_ServicerContext_set_code), 0, 0, 1, 1},
+    {&__pyx_n_s_ServicerContext_set_compression, __pyx_k_ServicerContext_set_compression, sizeof(__pyx_k_ServicerContext_set_compression), 0, 0, 1, 1},
+    {&__pyx_n_s_ServicerContext_set_details, __pyx_k_ServicerContext_set_details, sizeof(__pyx_k_ServicerContext_set_details), 0, 0, 1, 1},
+    {&__pyx_n_s_ServicerContext_set_trailing_me, __pyx_k_ServicerContext_set_trailing_me, sizeof(__pyx_k_ServicerContext_set_trailing_me), 0, 0, 1, 1},
+    {&__pyx_n_s_ServicerContext_time_remaining, __pyx_k_ServicerContext_time_remaining, sizeof(__pyx_k_ServicerContext_time_remaining), 0, 0, 1, 1},
+    {&__pyx_n_s_ServicerContext_trailing_metada, __pyx_k_ServicerContext_trailing_metada, sizeof(__pyx_k_ServicerContext_trailing_metada), 0, 0, 1, 1},
+    {&__pyx_n_s_ServicerContext_write, __pyx_k_ServicerContext_write, sizeof(__pyx_k_ServicerContext_write), 0, 0, 1, 1},
+    {&__pyx_n_s_SslPemKeyCertPair, __pyx_k_SslPemKeyCertPair, sizeof(__pyx_k_SslPemKeyCertPair), 0, 0, 1, 1},
+    {&__pyx_n_s_SslPemKeyCertPair___reduce_cytho, __pyx_k_SslPemKeyCertPair___reduce_cytho, sizeof(__pyx_k_SslPemKeyCertPair___reduce_cytho), 0, 0, 1, 1},
+    {&__pyx_n_s_SslPemKeyCertPair___setstate_cyt, __pyx_k_SslPemKeyCertPair___setstate_cyt, sizeof(__pyx_k_SslPemKeyCertPair___setstate_cyt), 0, 0, 1, 1},
+    {&__pyx_n_s_StatusCode, __pyx_k_StatusCode, sizeof(__pyx_k_StatusCode), 0, 0, 1, 1},
+    {&__pyx_n_s_SyncServicerContext, __pyx_k_SyncServicerContext, sizeof(__pyx_k_SyncServicerContext), 0, 0, 1, 1},
+    {&__pyx_n_s_SyncServicerContext___reduce_cy, __pyx_k_SyncServicerContext___reduce_cy, sizeof(__pyx_k_SyncServicerContext___reduce_cy), 0, 0, 1, 1},
+    {&__pyx_n_s_SyncServicerContext___setstate, __pyx_k_SyncServicerContext___setstate, sizeof(__pyx_k_SyncServicerContext___setstate), 0, 0, 1, 1},
+    {&__pyx_n_s_SyncServicerContext_abort, __pyx_k_SyncServicerContext_abort, sizeof(__pyx_k_SyncServicerContext_abort), 0, 0, 1, 1},
+    {&__pyx_n_s_SyncServicerContext_add_callbac, __pyx_k_SyncServicerContext_add_callbac, sizeof(__pyx_k_SyncServicerContext_add_callbac), 0, 0, 1, 1},
+    {&__pyx_n_s_SyncServicerContext_auth_contex, __pyx_k_SyncServicerContext_auth_contex, sizeof(__pyx_k_SyncServicerContext_auth_contex), 0, 0, 1, 1},
+    {&__pyx_n_s_SyncServicerContext_disable_nex, __pyx_k_SyncServicerContext_disable_nex, sizeof(__pyx_k_SyncServicerContext_disable_nex), 0, 0, 1, 1},
+    {&__pyx_n_s_SyncServicerContext_invocation, __pyx_k_SyncServicerContext_invocation, sizeof(__pyx_k_SyncServicerContext_invocation), 0, 0, 1, 1},
+    {&__pyx_n_s_SyncServicerContext_peer, __pyx_k_SyncServicerContext_peer, sizeof(__pyx_k_SyncServicerContext_peer), 0, 0, 1, 1},
+    {&__pyx_n_s_SyncServicerContext_peer_identi, __pyx_k_SyncServicerContext_peer_identi, sizeof(__pyx_k_SyncServicerContext_peer_identi), 0, 0, 1, 1},
+    {&__pyx_n_s_SyncServicerContext_peer_identi_2, __pyx_k_SyncServicerContext_peer_identi_2, sizeof(__pyx_k_SyncServicerContext_peer_identi_2), 0, 0, 1, 1},
+    {&__pyx_n_s_SyncServicerContext_send_initia, __pyx_k_SyncServicerContext_send_initia, sizeof(__pyx_k_SyncServicerContext_send_initia), 0, 0, 1, 1},
+    {&__pyx_n_s_SyncServicerContext_set_code, __pyx_k_SyncServicerContext_set_code, sizeof(__pyx_k_SyncServicerContext_set_code), 0, 0, 1, 1},
+    {&__pyx_n_s_SyncServicerContext_set_compres, __pyx_k_SyncServicerContext_set_compres, sizeof(__pyx_k_SyncServicerContext_set_compres), 0, 0, 1, 1},
+    {&__pyx_n_s_SyncServicerContext_set_details, __pyx_k_SyncServicerContext_set_details, sizeof(__pyx_k_SyncServicerContext_set_details), 0, 0, 1, 1},
+    {&__pyx_n_s_SyncServicerContext_set_trailin, __pyx_k_SyncServicerContext_set_trailin, sizeof(__pyx_k_SyncServicerContext_set_trailin), 0, 0, 1, 1},
+    {&__pyx_n_s_SyncServicerContext_time_remain, __pyx_k_SyncServicerContext_time_remain, sizeof(__pyx_k_SyncServicerContext_time_remain), 0, 0, 1, 1},
+    {&__pyx_n_s_SystemExit, __pyx_k_SystemExit, sizeof(__pyx_k_SystemExit), 0, 0, 1, 1},
+    {&__pyx_n_s_TRUE, __pyx_k_TRUE, sizeof(__pyx_k_TRUE), 0, 0, 1, 1},
+    {&__pyx_n_s_TRUE_VALUES, __pyx_k_TRUE_VALUES, sizeof(__pyx_k_TRUE_VALUES), 0, 0, 1, 1},
+    {&__pyx_n_s_TYPE_METADATA_STRING, __pyx_k_TYPE_METADATA_STRING, sizeof(__pyx_k_TYPE_METADATA_STRING), 0, 0, 1, 1},
+    {&__pyx_n_s_Tag, __pyx_k_Tag, sizeof(__pyx_k_Tag), 0, 0, 1, 1},
+    {&__pyx_n_s_Tag___reduce_cython, __pyx_k_Tag___reduce_cython, sizeof(__pyx_k_Tag___reduce_cython), 0, 0, 1, 1},
+    {&__pyx_n_s_Tag___setstate_cython, __pyx_k_Tag___setstate_cython, sizeof(__pyx_k_Tag___setstate_cython), 0, 0, 1, 1},
+    {&__pyx_kp_s_The_base_class_for_exceptions_ge, __pyx_k_The_base_class_for_exceptions_ge, sizeof(__pyx_k_The_base_class_for_exceptions_ge), 0, 0, 1, 0},
+    {&__pyx_n_s_Thread, __pyx_k_Thread, sizeof(__pyx_k_Thread), 0, 0, 1, 1},
+    {&__pyx_kp_s_Timed_out, __pyx_k_Timed_out, sizeof(__pyx_k_Timed_out), 0, 0, 1, 0},
+    {&__pyx_n_s_TimeoutError, __pyx_k_TimeoutError, sizeof(__pyx_k_TimeoutError), 0, 0, 1, 1},
+    {&__pyx_n_s_True, __pyx_k_True, sizeof(__pyx_k_True), 0, 0, 1, 1},
+    {&__pyx_kp_s_Tuple_Tuple_str_Union_str_bytes, __pyx_k_Tuple_Tuple_str_Union_str_bytes, sizeof(__pyx_k_Tuple_Tuple_str_Union_str_bytes), 0, 0, 1, 0},
+    {&__pyx_n_s_TypeError, __pyx_k_TypeError, sizeof(__pyx_k_TypeError), 0, 0, 1, 1},
+    {&__pyx_n_s_UNKNOWN_CANCELLATION_DETAILS, __pyx_k_UNKNOWN_CANCELLATION_DETAILS, sizeof(__pyx_k_UNKNOWN_CANCELLATION_DETAILS), 0, 0, 1, 1},
+    {&__pyx_kp_s_Unexpected_s_raised_by_servicer, __pyx_k_Unexpected_s_raised_by_servicer, sizeof(__pyx_k_Unexpected_s_raised_by_servicer), 0, 0, 1, 0},
+    {&__pyx_kp_s_Unexpected_s_s, __pyx_k_Unexpected_s_s, sizeof(__pyx_k_Unexpected_s_s), 0, 0, 1, 0},
+    {&__pyx_n_s_UnicodeDecodeError, __pyx_k_UnicodeDecodeError, sizeof(__pyx_k_UnicodeDecodeError), 0, 0, 1, 1},
+    {&__pyx_n_s_Unknown, __pyx_k_Unknown, sizeof(__pyx_k_Unknown), 0, 0, 1, 1},
+    {&__pyx_kp_s_Unsupported_engine_type_s, __pyx_k_Unsupported_engine_type_s, sizeof(__pyx_k_Unsupported_engine_type_s), 0, 0, 1, 0},
+    {&__pyx_n_s_UsageError, __pyx_k_UsageError, sizeof(__pyx_k_UsageError), 0, 0, 1, 1},
+    {&__pyx_kp_s_Using_s_as_I_O_engine, __pyx_k_Using_s_as_I_O_engine, sizeof(__pyx_k_Using_s_as_I_O_engine), 0, 0, 1, 0},
+    {&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1},
+    {&__pyx_n_s_WatchConnectivityFailed, __pyx_k_WatchConnectivityFailed, sizeof(__pyx_k_WatchConnectivityFailed), 0, 0, 1, 1},
+    {&__pyx_n_s_WriteFlag, __pyx_k_WriteFlag, sizeof(__pyx_k_WriteFlag), 0, 0, 1, 1},
+    {&__pyx_n_s_XDSChannelCredentials, __pyx_k_XDSChannelCredentials, sizeof(__pyx_k_XDSChannelCredentials), 0, 0, 1, 1},
+    {&__pyx_n_s_XDSChannelCredentials___reduce_c, __pyx_k_XDSChannelCredentials___reduce_c, sizeof(__pyx_k_XDSChannelCredentials___reduce_c), 0, 0, 1, 1},
+    {&__pyx_n_s_XDSChannelCredentials___setstate, __pyx_k_XDSChannelCredentials___setstate, sizeof(__pyx_k_XDSChannelCredentials___setstate), 0, 0, 1, 1},
+    {&__pyx_n_s_YES, __pyx_k_YES, sizeof(__pyx_k_YES), 0, 0, 1, 1},
+    {&__pyx_n_s_Yes, __pyx_k_Yes, sizeof(__pyx_k_Yes), 0, 0, 1, 1},
+    {&__pyx_n_s__107, __pyx_k__107, sizeof(__pyx_k__107), 0, 0, 1, 1},
+    {&__pyx_n_s__38, __pyx_k__38, sizeof(__pyx_k__38), 0, 0, 1, 1},
+    {&__pyx_kp_u__49, __pyx_k__49, sizeof(__pyx_k__49), 0, 1, 0, 0},
+    {&__pyx_n_s__57, __pyx_k__57, sizeof(__pyx_k__57), 0, 0, 1, 1},
+    {&__pyx_kp_u__58, __pyx_k__58, sizeof(__pyx_k__58), 0, 1, 0, 0},
+    {&__pyx_kp_u__69, __pyx_k__69, sizeof(__pyx_k__69), 0, 1, 0, 0},
+    {&__pyx_kp_b__7, __pyx_k__7, sizeof(__pyx_k__7), 0, 0, 0, 0},
+    {&__pyx_kp_s__7, __pyx_k__7, sizeof(__pyx_k__7), 0, 0, 1, 0},
+    {&__pyx_kp_u__70, __pyx_k__70, sizeof(__pyx_k__70), 0, 1, 0, 0},
+    {&__pyx_kp_u__71, __pyx_k__71, sizeof(__pyx_k__71), 0, 1, 0, 0},
+    {&__pyx_n_s_abort, __pyx_k_abort, sizeof(__pyx_k_abort), 0, 0, 1, 1},
+    {&__pyx_n_s_abort_with_status, __pyx_k_abort_with_status, sizeof(__pyx_k_abort_with_status), 0, 0, 1, 1},
+    {&__pyx_n_s_aborted, __pyx_k_aborted, sizeof(__pyx_k_aborted), 0, 0, 1, 1},
+    {&__pyx_n_s_active_thread_count, __pyx_k_active_thread_count, sizeof(__pyx_k_active_thread_count), 0, 0, 1, 1},
+    {&__pyx_n_s_actual_code, __pyx_k_actual_code, sizeof(__pyx_k_actual_code), 0, 0, 1, 1},
+    {&__pyx_n_s_add, __pyx_k_add, sizeof(__pyx_k_add), 0, 0, 1, 1},
+    {&__pyx_n_s_add_callback, __pyx_k_add_callback, sizeof(__pyx_k_add_callback), 0, 0, 1, 1},
+    {&__pyx_n_s_add_callback_handler_locals_han, __pyx_k_add_callback_handler_locals_han, sizeof(__pyx_k_add_callback_handler_locals_han), 0, 0, 1, 1},
+    {&__pyx_n_s_add_done_callback, __pyx_k_add_done_callback, sizeof(__pyx_k_add_done_callback), 0, 0, 1, 1},
+    {&__pyx_n_s_add_generic_rpc_handlers, __pyx_k_add_generic_rpc_handlers, sizeof(__pyx_k_add_generic_rpc_handlers), 0, 0, 1, 1},
+    {&__pyx_n_s_add_http2_port, __pyx_k_add_http2_port, sizeof(__pyx_k_add_http2_port), 0, 0, 1, 1},
+    {&__pyx_n_s_add_insecure_port, __pyx_k_add_insecure_port, sizeof(__pyx_k_add_insecure_port), 0, 0, 1, 1},
+    {&__pyx_n_s_add_reader, __pyx_k_add_reader, sizeof(__pyx_k_add_reader), 0, 0, 1, 1},
+    {&__pyx_n_s_add_secure_port, __pyx_k_add_secure_port, sizeof(__pyx_k_add_secure_port), 0, 0, 1, 1},
+    {&__pyx_n_s_address, __pyx_k_address, sizeof(__pyx_k_address), 0, 0, 1, 1},
+    {&__pyx_n_s_address_c_string, __pyx_k_address_c_string, sizeof(__pyx_k_address_c_string), 0, 0, 1, 1},
+    {&__pyx_n_s_aenter, __pyx_k_aenter, sizeof(__pyx_k_aenter), 0, 0, 1, 1},
+    {&__pyx_n_s_aexit, __pyx_k_aexit, sizeof(__pyx_k_aexit), 0, 0, 1, 1},
+    {&__pyx_n_s_after_in_child, __pyx_k_after_in_child, sizeof(__pyx_k_after_in_child), 0, 0, 1, 1},
+    {&__pyx_n_s_after_in_parent, __pyx_k_after_in_parent, sizeof(__pyx_k_after_in_parent), 0, 0, 1, 1},
+    {&__pyx_n_s_agen, __pyx_k_agen, sizeof(__pyx_k_agen), 0, 0, 1, 1},
+    {&__pyx_n_s_aiter, __pyx_k_aiter, sizeof(__pyx_k_aiter), 0, 0, 1, 1},
+    {&__pyx_n_s_algorithm, __pyx_k_algorithm, sizeof(__pyx_k_algorithm), 0, 0, 1, 1},
+    {&__pyx_n_s_already_accepted, __pyx_k_already_accepted, sizeof(__pyx_k_already_accepted), 0, 0, 1, 1},
+    {&__pyx_n_s_already_exists, __pyx_k_already_exists, sizeof(__pyx_k_already_exists), 0, 0, 1, 1},
+    {&__pyx_n_s_already_finished, __pyx_k_already_finished, sizeof(__pyx_k_already_finished), 0, 0, 1, 1},
+    {&__pyx_n_s_already_invoked, __pyx_k_already_invoked, sizeof(__pyx_k_already_invoked), 0, 0, 1, 1},
+    {&__pyx_n_s_anext, __pyx_k_anext, sizeof(__pyx_k_anext), 0, 0, 1, 1},
+    {&__pyx_n_s_append, __pyx_k_append, sizeof(__pyx_k_append), 0, 0, 1, 1},
+    {&__pyx_n_s_apply, __pyx_k_apply, sizeof(__pyx_k_apply), 0, 0, 1, 1},
+    {&__pyx_n_s_args, __pyx_k_args, sizeof(__pyx_k_args), 0, 0, 1, 1},
+    {&__pyx_n_s_arguments, __pyx_k_arguments, sizeof(__pyx_k_arguments), 0, 0, 1, 1},
+    {&__pyx_n_s_ascii, __pyx_k_ascii, sizeof(__pyx_k_ascii), 0, 0, 1, 1},
+    {&__pyx_n_s_async_callback_func, __pyx_k_async_callback_func, sizeof(__pyx_k_async_callback_func), 0, 0, 1, 1},
+    {&__pyx_n_s_async_generator_to_generator, __pyx_k_async_generator_to_generator, sizeof(__pyx_k_async_generator_to_generator), 0, 0, 1, 1},
+    {&__pyx_n_s_async_message_receiver, __pyx_k_async_message_receiver, sizeof(__pyx_k_async_message_receiver), 0, 0, 1, 1},
+    {&__pyx_n_s_async_response_generator, __pyx_k_async_response_generator, sizeof(__pyx_k_async_response_generator), 0, 0, 1, 1},
+    {&__pyx_n_s_asyncio, __pyx_k_asyncio, sizeof(__pyx_k_asyncio), 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_asyncio_tasks, __pyx_k_asyncio_tasks, sizeof(__pyx_k_asyncio_tasks), 0, 0, 1, 1},
+    {&__pyx_n_s_atexit, __pyx_k_atexit, sizeof(__pyx_k_atexit), 0, 0, 1, 1},
+    {&__pyx_n_s_auth_context, __pyx_k_auth_context, sizeof(__pyx_k_auth_context), 0, 0, 1, 1},
+    {&__pyx_n_s_await, __pyx_k_await, sizeof(__pyx_k_await), 0, 0, 1, 1},
+    {&__pyx_n_s_await_zero_threads, __pyx_k_await_zero_threads, sizeof(__pyx_k_await_zero_threads), 0, 0, 1, 1},
+    {&__pyx_n_s_backup_queue, __pyx_k_backup_queue, sizeof(__pyx_k_backup_queue), 0, 0, 1, 1},
+    {&__pyx_n_s_batch_error, __pyx_k_batch_error, sizeof(__pyx_k_batch_error), 0, 0, 1, 1},
+    {&__pyx_n_s_batch_operation_tag, __pyx_k_batch_operation_tag, sizeof(__pyx_k_batch_operation_tag), 0, 0, 1, 1},
+    {&__pyx_n_s_batch_operations, __pyx_k_batch_operations, sizeof(__pyx_k_batch_operations), 0, 0, 1, 1},
+    {&__pyx_n_s_before, __pyx_k_before, sizeof(__pyx_k_before), 0, 0, 1, 1},
+    {&__pyx_kp_b_bin, __pyx_k_bin, sizeof(__pyx_k_bin), 0, 0, 0, 0},
+    {&__pyx_n_s_bind_loop, __pyx_k_bind_loop, sizeof(__pyx_k_bind_loop), 0, 0, 1, 1},
+    {&__pyx_n_s_block_if_fork_in_progress, __pyx_k_block_if_fork_in_progress, sizeof(__pyx_k_block_if_fork_in_progress), 0, 0, 1, 1},
+    {&__pyx_n_s_bool, __pyx_k_bool, sizeof(__pyx_k_bool), 0, 0, 1, 1},
+    {&__pyx_n_s_buffer_hint, __pyx_k_buffer_hint, sizeof(__pyx_k_buffer_hint), 0, 0, 1, 1},
+    {&__pyx_n_s_build_census_context, __pyx_k_build_census_context, sizeof(__pyx_k_build_census_context), 0, 0, 1, 1},
+    {&__pyx_n_s_bytes_ctx, __pyx_k_bytes_ctx, sizeof(__pyx_k_bytes_ctx), 0, 0, 1, 1},
+    {&__pyx_n_s_c_call_credentials, __pyx_k_c_call_credentials, sizeof(__pyx_k_c_call_credentials), 0, 0, 1, 1},
+    {&__pyx_n_s_c_cert_config, __pyx_k_c_cert_config, sizeof(__pyx_k_c_cert_config), 0, 0, 1, 1},
+    {&__pyx_n_s_c_deadline, __pyx_k_c_deadline, sizeof(__pyx_k_c_deadline), 0, 0, 1, 1},
+    {&__pyx_n_s_c_details, __pyx_k_c_details, sizeof(__pyx_k_c_details), 0, 0, 1, 1},
+    {&__pyx_n_s_c_error_details, __pyx_k_c_error_details, sizeof(__pyx_k_c_error_details), 0, 0, 1, 1},
+    {&__pyx_n_s_c_event, __pyx_k_c_event, sizeof(__pyx_k_c_event), 0, 0, 1, 1},
+    {&__pyx_n_s_c_key, __pyx_k_c_key, sizeof(__pyx_k_c_key), 0, 0, 1, 1},
+    {&__pyx_n_s_c_options, __pyx_k_c_options, sizeof(__pyx_k_c_options), 0, 0, 1, 1},
+    {&__pyx_n_s_c_peer, __pyx_k_c_peer, sizeof(__pyx_k_c_peer), 0, 0, 1, 1},
+    {&__pyx_n_s_c_pem_root_certs, __pyx_k_c_pem_root_certs, sizeof(__pyx_k_c_pem_root_certs), 0, 0, 1, 1},
+    {&__pyx_n_s_c_returned_str, __pyx_k_c_returned_str, sizeof(__pyx_k_c_returned_str), 0, 0, 1, 1},
+    {&__pyx_n_s_c_target, __pyx_k_c_target, sizeof(__pyx_k_c_target), 0, 0, 1, 1},
+    {&__pyx_n_s_call, __pyx_k_call, sizeof(__pyx_k_call), 0, 0, 1, 1},
+    {&__pyx_n_s_call_credentials, __pyx_k_call_credentials, sizeof(__pyx_k_call_credentials), 0, 0, 1, 1},
+    {&__pyx_n_s_call_credentialses, __pyx_k_call_credentialses, sizeof(__pyx_k_call_credentialses), 0, 0, 1, 1},
+    {&__pyx_n_s_call_creds, __pyx_k_call_creds, sizeof(__pyx_k_call_creds), 0, 0, 1, 1},
+    {&__pyx_n_s_call_details, __pyx_k_call_details, sizeof(__pyx_k_call_details), 0, 0, 1, 1},
+    {&__pyx_n_s_call_error, __pyx_k_call_error, sizeof(__pyx_k_call_error), 0, 0, 1, 1},
+    {&__pyx_n_s_call_handle, __pyx_k_call_handle, sizeof(__pyx_k_call_handle), 0, 0, 1, 1},
+    {&__pyx_n_s_call_queue, __pyx_k_call_queue, sizeof(__pyx_k_call_queue), 0, 0, 1, 1},
+    {&__pyx_n_s_call_soon_threadsafe, __pyx_k_call_soon_threadsafe, sizeof(__pyx_k_call_soon_threadsafe), 0, 0, 1, 1},
+    {&__pyx_n_s_call_state, __pyx_k_call_state, sizeof(__pyx_k_call_state), 0, 0, 1, 1},
+    {&__pyx_n_s_callback, __pyx_k_callback, sizeof(__pyx_k_callback), 0, 0, 1, 1},
+    {&__pyx_n_s_callback_func, __pyx_k_callback_func, sizeof(__pyx_k_callback_func), 0, 0, 1, 1},
+    {&__pyx_n_s_callback_wrapper, __pyx_k_callback_wrapper, sizeof(__pyx_k_callback_wrapper), 0, 0, 1, 1},
+    {&__pyx_n_s_cancel, __pyx_k_cancel, sizeof(__pyx_k_cancel), 0, 0, 1, 1},
+    {&__pyx_n_s_cancel_all_calls, __pyx_k_cancel_all_calls, sizeof(__pyx_k_cancel_all_calls), 0, 0, 1, 1},
+    {&__pyx_n_s_cancelled, __pyx_k_cancelled, sizeof(__pyx_k_cancelled), 0, 0, 1, 1},
+    {&__pyx_kp_s_cannot_register_completion_queue, __pyx_k_cannot_register_completion_queue, sizeof(__pyx_k_cannot_register_completion_queue), 0, 0, 1, 0},
+    {&__pyx_n_s_capacity, __pyx_k_capacity, sizeof(__pyx_k_capacity), 0, 0, 1, 1},
+    {&__pyx_n_s_capsule, __pyx_k_capsule, sizeof(__pyx_k_capsule), 0, 0, 1, 1},
+    {&__pyx_n_s_capsule_ptr, __pyx_k_capsule_ptr, sizeof(__pyx_k_capsule_ptr), 0, 0, 1, 1},
+    {&__pyx_n_s_catch_warnings, __pyx_k_catch_warnings, sizeof(__pyx_k_catch_warnings), 0, 0, 1, 1},
+    {&__pyx_n_s_cb, __pyx_k_cb, sizeof(__pyx_k_cb), 0, 0, 1, 1},
+    {&__pyx_n_s_cb_func, __pyx_k_cb_func, sizeof(__pyx_k_cb_func), 0, 0, 1, 1},
+    {&__pyx_n_s_census_ctx, __pyx_k_census_ctx, sizeof(__pyx_k_census_ctx), 0, 0, 1, 1},
+    {&__pyx_n_s_cert_config, __pyx_k_cert_config, sizeof(__pyx_k_cert_config), 0, 0, 1, 1},
+    {&__pyx_n_s_cert_config_fetcher, __pyx_k_cert_config_fetcher, sizeof(__pyx_k_cert_config_fetcher), 0, 0, 1, 1},
+    {&__pyx_kp_s_cert_config_fetcher_must_be_call, __pyx_k_cert_config_fetcher_must_be_call, sizeof(__pyx_k_cert_config_fetcher_must_be_call), 0, 0, 1, 0},
+    {&__pyx_n_s_certificate_chain, __pyx_k_certificate_chain, sizeof(__pyx_k_certificate_chain), 0, 0, 1, 1},
+    {&__pyx_n_s_certificate_configuration, __pyx_k_certificate_configuration, sizeof(__pyx_k_certificate_configuration), 0, 0, 1, 1},
+    {&__pyx_n_s_cfunc_to_py, __pyx_k_cfunc_to_py, sizeof(__pyx_k_cfunc_to_py), 0, 0, 1, 1},
+    {&__pyx_n_s_channel, __pyx_k_channel, sizeof(__pyx_k_channel), 0, 0, 1, 1},
+    {&__pyx_n_s_channel_credentials, __pyx_k_channel_credentials, sizeof(__pyx_k_channel_credentials), 0, 0, 1, 1},
+    {&__pyx_n_s_channel_credentials_alts, __pyx_k_channel_credentials_alts, sizeof(__pyx_k_channel_credentials_alts), 0, 0, 1, 1},
+    {&__pyx_n_s_channel_credentials_compute_engi, __pyx_k_channel_credentials_compute_engi, sizeof(__pyx_k_channel_credentials_compute_engi), 0, 0, 1, 1},
+    {&__pyx_n_s_channel_credentials_insecure, __pyx_k_channel_credentials_insecure, sizeof(__pyx_k_channel_credentials_insecure), 0, 0, 1, 1},
+    {&__pyx_n_s_channel_credentials_local, __pyx_k_channel_credentials_local, sizeof(__pyx_k_channel_credentials_local), 0, 0, 1, 1},
+    {&__pyx_n_s_channel_id, __pyx_k_channel_id, sizeof(__pyx_k_channel_id), 0, 0, 1, 1},
+    {&__pyx_n_s_channel_state, __pyx_k_channel_state, sizeof(__pyx_k_channel_state), 0, 0, 1, 1},
+    {&__pyx_n_s_channels, __pyx_k_channels, sizeof(__pyx_k_channels), 0, 0, 1, 1},
+    {&__pyx_n_s_channelz_get_channel, __pyx_k_channelz_get_channel, sizeof(__pyx_k_channelz_get_channel), 0, 0, 1, 1},
+    {&__pyx_n_s_channelz_get_server, __pyx_k_channelz_get_server, sizeof(__pyx_k_channelz_get_server), 0, 0, 1, 1},
+    {&__pyx_n_s_channelz_get_server_sockets, __pyx_k_channelz_get_server_sockets, sizeof(__pyx_k_channelz_get_server_sockets), 0, 0, 1, 1},
+    {&__pyx_n_s_channelz_get_servers, __pyx_k_channelz_get_servers, sizeof(__pyx_k_channelz_get_servers), 0, 0, 1, 1},
+    {&__pyx_n_s_channelz_get_socket, __pyx_k_channelz_get_socket, sizeof(__pyx_k_channelz_get_socket), 0, 0, 1, 1},
+    {&__pyx_n_s_channelz_get_subchannel, __pyx_k_channelz_get_subchannel, sizeof(__pyx_k_channelz_get_subchannel), 0, 0, 1, 1},
+    {&__pyx_n_s_channelz_get_top_channels, __pyx_k_channelz_get_top_channels, sizeof(__pyx_k_channelz_get_top_channels), 0, 0, 1, 1},
+    {&__pyx_n_s_check_before_request_call, __pyx_k_check_before_request_call, sizeof(__pyx_k_check_before_request_call), 0, 0, 1, 1},
+    {&__pyx_n_s_check_connectivity_state, __pyx_k_check_connectivity_state, sizeof(__pyx_k_check_connectivity_state), 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_s_clear, __pyx_k_clear, sizeof(__pyx_k_clear), 0, 0, 1, 1},
+    {&__pyx_n_s_clear_server_call_tracer_factory, __pyx_k_clear_server_call_tracer_factory, sizeof(__pyx_k_clear_server_call_tracer_factory), 0, 0, 1, 1},
+    {&__pyx_n_s_client_config_in_slice, __pyx_k_client_config_in_slice, sizeof(__pyx_k_client_config_in_slice), 0, 0, 1, 1},
+    {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1},
+    {&__pyx_n_s_close, __pyx_k_close, sizeof(__pyx_k_close), 0, 0, 1, 1},
+    {&__pyx_n_s_close_on_fork, __pyx_k_close_on_fork, sizeof(__pyx_k_close_on_fork), 0, 0, 1, 1},
+    {&__pyx_n_s_close_on_fork_2, __pyx_k_close_on_fork_2, sizeof(__pyx_k_close_on_fork_2), 0, 0, 1, 1},
+    {&__pyx_n_s_closed, __pyx_k_closed, sizeof(__pyx_k_closed), 0, 0, 1, 1},
+    {&__pyx_n_s_closing, __pyx_k_closing, sizeof(__pyx_k_closing), 0, 0, 1, 1},
+    {&__pyx_n_s_code, __pyx_k_code, sizeof(__pyx_k_code), 0, 0, 1, 1},
+    {&__pyx_n_s_codecs, __pyx_k_codecs, sizeof(__pyx_k_codecs), 0, 0, 1, 1},
+    {&__pyx_n_s_collections, __pyx_k_collections, sizeof(__pyx_k_collections), 0, 0, 1, 1},
+    {&__pyx_n_s_common, __pyx_k_common, sizeof(__pyx_k_common), 0, 0, 1, 1},
+    {&__pyx_n_s_completion_type, __pyx_k_completion_type, sizeof(__pyx_k_completion_type), 0, 0, 1, 1},
+    {&__pyx_n_s_compression, __pyx_k_compression, sizeof(__pyx_k_compression), 0, 0, 1, 1},
+    {&__pyx_n_s_compression_algorithm_name, __pyx_k_compression_algorithm_name, sizeof(__pyx_k_compression_algorithm_name), 0, 0, 1, 1},
+    {&__pyx_n_s_concurrency_exceeded, __pyx_k_concurrency_exceeded, sizeof(__pyx_k_concurrency_exceeded), 0, 0, 1, 1},
+    {&__pyx_n_s_condition, __pyx_k_condition, sizeof(__pyx_k_condition), 0, 0, 1, 1},
+    {&__pyx_n_s_connecting, __pyx_k_connecting, sizeof(__pyx_k_connecting), 0, 0, 1, 1},
+    {&__pyx_n_s_context, __pyx_k_context, sizeof(__pyx_k_context), 0, 0, 1, 1},
+    {&__pyx_n_s_context_loop, __pyx_k_context_loop, sizeof(__pyx_k_context_loop), 0, 0, 1, 1},
+    {&__pyx_n_s_contextvars, __pyx_k_contextvars, sizeof(__pyx_k_contextvars), 0, 0, 1, 1},
+    {&__pyx_n_s_contextvars_supported, __pyx_k_contextvars_supported, sizeof(__pyx_k_contextvars_supported), 0, 0, 1, 1},
+    {&__pyx_n_s_continuation, __pyx_k_continuation, sizeof(__pyx_k_continuation), 0, 0, 1, 1},
+    {&__pyx_n_s_copy, __pyx_k_copy, sizeof(__pyx_k_copy), 0, 0, 1, 1},
+    {&__pyx_n_s_copy_context, __pyx_k_copy_context, sizeof(__pyx_k_copy_context), 0, 0, 1, 1},
+    {&__pyx_n_s_core_function_name, __pyx_k_core_function_name, sizeof(__pyx_k_core_function_name), 0, 0, 1, 1},
+    {&__pyx_n_s_coro, __pyx_k_coro, sizeof(__pyx_k_coro), 0, 0, 1, 1},
+    {&__pyx_n_s_create_client_call_tracer, __pyx_k_create_client_call_tracer, sizeof(__pyx_k_create_client_call_tracer), 0, 0, 1, 1},
+    {&__pyx_n_s_create_future, __pyx_k_create_future, sizeof(__pyx_k_create_future), 0, 0, 1, 1},
+    {&__pyx_n_s_create_server_call_tracer_factor, __pyx_k_create_server_call_tracer_factor, sizeof(__pyx_k_create_server_call_tracer_factor), 0, 0, 1, 1},
+    {&__pyx_n_s_create_task, __pyx_k_create_task, sizeof(__pyx_k_create_task), 0, 0, 1, 1},
+    {&__pyx_n_s_credentials, __pyx_k_credentials, sizeof(__pyx_k_credentials), 0, 0, 1, 1},
+    {&__pyx_n_s_credentials_2, __pyx_k_credentials_2, sizeof(__pyx_k_credentials_2), 0, 0, 1, 1},
+    {&__pyx_kp_s_credentials_roots_pem, __pyx_k_credentials_roots_pem, sizeof(__pyx_k_credentials_roots_pem), 0, 0, 1, 0},
+    {&__pyx_n_s_creds, __pyx_k_creds, sizeof(__pyx_k_creds), 0, 0, 1, 1},
+    {&__pyx_n_s_ctx, __pyx_k_ctx, sizeof(__pyx_k_ctx), 0, 0, 1, 1},
+    {&__pyx_n_s_custom_io_manager, __pyx_k_custom_io_manager, sizeof(__pyx_k_custom_io_manager), 0, 0, 1, 1},
+    {&__pyx_n_s_custom_op_on_c_call, __pyx_k_custom_op_on_c_call, sizeof(__pyx_k_custom_op_on_c_call), 0, 0, 1, 1},
+    {&__pyx_kp_s_cygrpc, __pyx_k_cygrpc, sizeof(__pyx_k_cygrpc), 0, 0, 1, 0},
+    {&__pyx_n_s_cython_call_credentials, __pyx_k_cython_call_credentials, sizeof(__pyx_k_cython_call_credentials), 0, 0, 1, 1},
+    {&__pyx_n_s_cython_cygrpc, __pyx_k_cython_cygrpc, sizeof(__pyx_k_cython_cygrpc), 0, 0, 1, 1},
+    {&__pyx_n_s_daemon, __pyx_k_daemon, sizeof(__pyx_k_daemon), 0, 0, 1, 1},
+    {&__pyx_n_s_daemonic, __pyx_k_daemonic, sizeof(__pyx_k_daemonic), 0, 0, 1, 1},
+    {&__pyx_n_s_data, __pyx_k_data, sizeof(__pyx_k_data), 0, 0, 1, 1},
+    {&__pyx_n_s_data_loss, __pyx_k_data_loss, sizeof(__pyx_k_data_loss), 0, 0, 1, 1},
+    {&__pyx_n_s_deadline, __pyx_k_deadline, sizeof(__pyx_k_deadline), 0, 0, 1, 1},
+    {&__pyx_n_s_deadline_exceeded, __pyx_k_deadline_exceeded, sizeof(__pyx_k_deadline_exceeded), 0, 0, 1, 1},
+    {&__pyx_kp_s_dealloc___called_on_running_se, __pyx_k_dealloc___called_on_running_se, sizeof(__pyx_k_dealloc___called_on_running_se), 0, 0, 1, 0},
+    {&__pyx_n_s_debug, __pyx_k_debug, sizeof(__pyx_k_debug), 0, 0, 1, 1},
+    {&__pyx_n_s_debug_error_string, __pyx_k_debug_error_string, sizeof(__pyx_k_debug_error_string), 0, 0, 1, 1},
+    {&__pyx_n_s_decode, __pyx_k_decode, sizeof(__pyx_k_decode), 0, 0, 1, 1},
+    {&__pyx_n_s_decrease_active_rpcs_count, __pyx_k_decrease_active_rpcs_count, sizeof(__pyx_k_decrease_active_rpcs_count), 0, 0, 1, 1},
+    {&__pyx_n_s_decrease_once_finished, __pyx_k_decrease_once_finished, sizeof(__pyx_k_decrease_once_finished), 0, 0, 1, 1},
+    {&__pyx_n_s_decrement, __pyx_k_decrement, sizeof(__pyx_k_decrement), 0, 0, 1, 1},
+    {&__pyx_n_s_default_authority, __pyx_k_default_authority, sizeof(__pyx_k_default_authority), 0, 0, 1, 1},
+    {&__pyx_n_s_default_vtable, __pyx_k_default_vtable, sizeof(__pyx_k_default_vtable), 0, 0, 1, 1},
+    {&__pyx_n_s_deflate, __pyx_k_deflate, sizeof(__pyx_k_deflate), 0, 0, 1, 1},
+    {&__pyx_n_s_delete_call_tracer, __pyx_k_delete_call_tracer, sizeof(__pyx_k_delete_call_tracer), 0, 0, 1, 1},
+    {&__pyx_n_s_destroy, __pyx_k_destroy, sizeof(__pyx_k_destroy), 0, 0, 1, 1},
+    {&__pyx_n_s_details, __pyx_k_details, sizeof(__pyx_k_details), 0, 0, 1, 1},
+    {&__pyx_n_s_details_bytes, __pyx_k_details_bytes, sizeof(__pyx_k_details_bytes), 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_kp_u_disable, __pyx_k_disable, sizeof(__pyx_k_disable), 0, 1, 0, 0},
+    {&__pyx_n_s_disable_algorithm, __pyx_k_disable_algorithm, sizeof(__pyx_k_disable_algorithm), 0, 0, 1, 1},
+    {&__pyx_n_s_disable_next_message_compression, __pyx_k_disable_next_message_compression, sizeof(__pyx_k_disable_next_message_compression), 0, 0, 1, 1},
+    {&__pyx_n_s_discard, __pyx_k_discard, sizeof(__pyx_k_discard), 0, 0, 1, 1},
+    {&__pyx_n_s_doc, __pyx_k_doc, sizeof(__pyx_k_doc), 0, 0, 1, 1},
+    {&__pyx_n_s_done, __pyx_k_done, sizeof(__pyx_k_done), 0, 0, 1, 1},
+    {&__pyx_n_s_dump_xds_configs, __pyx_k_dump_xds_configs, sizeof(__pyx_k_dump_xds_configs), 0, 0, 1, 1},
+    {&__pyx_n_s_e, __pyx_k_e, sizeof(__pyx_k_e), 0, 0, 1, 1},
+    {&__pyx_kp_u_enable, __pyx_k_enable, sizeof(__pyx_k_enable), 0, 1, 0, 0},
+    {&__pyx_n_s_enable_algorithm, __pyx_k_enable_algorithm, sizeof(__pyx_k_enable_algorithm), 0, 0, 1, 1},
+    {&__pyx_n_s_enable_census, __pyx_k_enable_census, sizeof(__pyx_k_enable_census), 0, 0, 1, 1},
+    {&__pyx_n_s_encode, __pyx_k_encode, sizeof(__pyx_k_encode), 0, 0, 1, 1},
+    {&__pyx_n_s_end_time, __pyx_k_end_time, sizeof(__pyx_k_end_time), 0, 0, 1, 1},
+    {&__pyx_n_s_endswith, __pyx_k_endswith, sizeof(__pyx_k_endswith), 0, 0, 1, 1},
+    {&__pyx_n_s_enter, __pyx_k_enter, sizeof(__pyx_k_enter), 0, 0, 1, 1},
+    {&__pyx_n_s_enter_user_request_generator, __pyx_k_enter_user_request_generator, sizeof(__pyx_k_enter_user_request_generator), 0, 0, 1, 1},
+    {&__pyx_n_s_enum, __pyx_k_enum, sizeof(__pyx_k_enum), 0, 0, 1, 1},
+    {&__pyx_n_s_enumerate, __pyx_k_enumerate, sizeof(__pyx_k_enumerate), 0, 0, 1, 1},
+    {&__pyx_n_s_environ, __pyx_k_environ, sizeof(__pyx_k_environ), 0, 0, 1, 1},
+    {&__pyx_n_s_errno, __pyx_k_errno, sizeof(__pyx_k_errno), 0, 0, 1, 1},
+    {&__pyx_n_s_error, __pyx_k_error, sizeof(__pyx_k_error), 0, 0, 1, 1},
+    {&__pyx_n_s_error_code, __pyx_k_error_code, sizeof(__pyx_k_error_code), 0, 0, 1, 1},
+    {&__pyx_n_s_error_details, __pyx_k_error_details, sizeof(__pyx_k_error_details), 0, 0, 1, 1},
+    {&__pyx_n_s_error_str, __pyx_k_error_str, sizeof(__pyx_k_error_str), 0, 0, 1, 1},
+    {&__pyx_n_s_error_string, __pyx_k_error_string, sizeof(__pyx_k_error_string), 0, 0, 1, 1},
+    {&__pyx_n_s_event, __pyx_k_event, sizeof(__pyx_k_event), 0, 0, 1, 1},
+    {&__pyx_n_s_exc_info, __pyx_k_exc_info, sizeof(__pyx_k_exc_info), 0, 0, 1, 1},
+    {&__pyx_n_s_exception, __pyx_k_exception, sizeof(__pyx_k_exception), 0, 0, 1, 1},
+    {&__pyx_n_s_exception_type, __pyx_k_exception_type, sizeof(__pyx_k_exception_type), 0, 0, 1, 1},
+    {&__pyx_n_s_execute_batch, __pyx_k_execute_batch, sizeof(__pyx_k_execute_batch), 0, 0, 1, 1},
+    {&__pyx_n_s_exit, __pyx_k_exit, sizeof(__pyx_k_exit), 0, 0, 1, 1},
+    {&__pyx_n_s_exit_2, __pyx_k_exit_2, sizeof(__pyx_k_exit_2), 0, 0, 1, 1},
+    {&__pyx_kp_s_expected_certificate_to_be_bytes, __pyx_k_expected_certificate_to_be_bytes, sizeof(__pyx_k_expected_certificate_to_be_bytes), 0, 0, 1, 0},
+    {&__pyx_kp_s_expected_pem_key_cert_pairs_to_b, __pyx_k_expected_pem_key_cert_pairs_to_b, sizeof(__pyx_k_expected_pem_key_cert_pairs_to_b), 0, 0, 1, 0},
+    {&__pyx_kp_s_expected_registered_completion_q, __pyx_k_expected_registered_completion_q, sizeof(__pyx_k_expected_registered_completion_q), 0, 0, 1, 0},
+    {&__pyx_n_s_failed_precondition, __pyx_k_failed_precondition, sizeof(__pyx_k_failed_precondition), 0, 0, 1, 1},
+    {&__pyx_n_s_failure_handler, __pyx_k_failure_handler, sizeof(__pyx_k_failure_handler), 0, 0, 1, 1},
+    {&__pyx_n_s_fallback_credentials, __pyx_k_fallback_credentials, sizeof(__pyx_k_fallback_credentials), 0, 0, 1, 1},
+    {&__pyx_n_s_fileno, __pyx_k_fileno, sizeof(__pyx_k_fileno), 0, 0, 1, 1},
+    {&__pyx_n_s_find_method_handler, __pyx_k_find_method_handler, sizeof(__pyx_k_find_method_handler), 0, 0, 1, 1},
+    {&__pyx_n_s_find_method_handler_locals_quer, __pyx_k_find_method_handler_locals_quer, sizeof(__pyx_k_find_method_handler_locals_quer), 0, 0, 1, 1},
+    {&__pyx_n_s_finish_handler_with_stream_resp, __pyx_k_finish_handler_with_stream_resp, sizeof(__pyx_k_finish_handler_with_stream_resp), 0, 0, 1, 1},
+    {&__pyx_n_s_finish_handler_with_unary_respo, __pyx_k_finish_handler_with_unary_respo, sizeof(__pyx_k_finish_handler_with_unary_respo), 0, 0, 1, 1},
+    {&__pyx_n_s_finish_ops, __pyx_k_finish_ops, sizeof(__pyx_k_finish_ops), 0, 0, 1, 1},
+    {&__pyx_n_s_flags, __pyx_k_flags, sizeof(__pyx_k_flags), 0, 0, 1, 1},
+    {&__pyx_n_s_fn, __pyx_k_fn, sizeof(__pyx_k_fn), 0, 0, 1, 1},
+    {&__pyx_n_s_force_client_auth, __pyx_k_force_client_auth, sizeof(__pyx_k_force_client_auth), 0, 0, 1, 1},
+    {&__pyx_n_s_fork_epoch, __pyx_k_fork_epoch, sizeof(__pyx_k_fork_epoch), 0, 0, 1, 1},
+    {&__pyx_n_s_fork_handler_failed, __pyx_k_fork_handler_failed, sizeof(__pyx_k_fork_handler_failed), 0, 0, 1, 1},
+    {&__pyx_n_s_fork_handler_registered, __pyx_k_fork_handler_registered, sizeof(__pyx_k_fork_handler_registered), 0, 0, 1, 1},
+    {&__pyx_n_s_fork_handler_registered_lock, __pyx_k_fork_handler_registered_lock, sizeof(__pyx_k_fork_handler_registered_lock), 0, 0, 1, 1},
+    {&__pyx_n_s_fork_handlers_and_grpc_init, __pyx_k_fork_handlers_and_grpc_init, sizeof(__pyx_k_fork_handlers_and_grpc_init), 0, 0, 1, 1},
+    {&__pyx_n_s_fork_in_progress, __pyx_k_fork_in_progress, sizeof(__pyx_k_fork_in_progress), 0, 0, 1, 1},
+    {&__pyx_n_s_fork_in_progress_condition, __pyx_k_fork_in_progress_condition, sizeof(__pyx_k_fork_in_progress_condition), 0, 0, 1, 1},
+    {&__pyx_n_s_fork_register_channel, __pyx_k_fork_register_channel, sizeof(__pyx_k_fork_register_channel), 0, 0, 1, 1},
+    {&__pyx_n_s_fork_state, __pyx_k_fork_state, sizeof(__pyx_k_fork_state), 0, 0, 1, 1},
+    {&__pyx_n_s_fork_unregister_channel, __pyx_k_fork_unregister_channel, sizeof(__pyx_k_fork_unregister_channel), 0, 0, 1, 1},
+    {&__pyx_n_s_format, __pyx_k_format, sizeof(__pyx_k_format), 0, 0, 1, 1},
+    {&__pyx_n_s_format_exception, __pyx_k_format_exception, sizeof(__pyx_k_format_exception), 0, 0, 1, 1},
+    {&__pyx_n_s_functools, __pyx_k_functools, sizeof(__pyx_k_functools), 0, 0, 1, 1},
+    {&__pyx_n_s_future, __pyx_k_future, sizeof(__pyx_k_future), 0, 0, 1, 1},
+    {&__pyx_n_s_g_gevent_activated, __pyx_k_g_gevent_activated, sizeof(__pyx_k_g_gevent_activated), 0, 0, 1, 1},
+    {&__pyx_n_s_g_gevent_pool, __pyx_k_g_gevent_pool, sizeof(__pyx_k_g_gevent_pool), 0, 0, 1, 1},
+    {&__pyx_n_s_g_gevent_threadpool, __pyx_k_g_gevent_threadpool, sizeof(__pyx_k_g_gevent_threadpool), 0, 0, 1, 1},
+    {&__pyx_n_s_g_interrupt_check_period_ms, __pyx_k_g_interrupt_check_period_ms, sizeof(__pyx_k_g_interrupt_check_period_ms), 0, 0, 1, 1},
+    {&__pyx_kp_u_gc, __pyx_k_gc, sizeof(__pyx_k_gc), 0, 1, 0, 0},
+    {&__pyx_n_s_gen, __pyx_k_gen, sizeof(__pyx_k_gen), 0, 0, 1, 1},
+    {&__pyx_n_s_generator_to_async_generator, __pyx_k_generator_to_async_generator, sizeof(__pyx_k_generator_to_async_generator), 0, 0, 1, 1},
+    {&__pyx_n_s_generator_to_async_generator_loc, __pyx_k_generator_to_async_generator_loc, sizeof(__pyx_k_generator_to_async_generator_loc), 0, 0, 1, 1},
+    {&__pyx_n_s_generic_handler, __pyx_k_generic_handler, sizeof(__pyx_k_generic_handler), 0, 0, 1, 1},
+    {&__pyx_n_s_generic_handlers, __pyx_k_generic_handlers, sizeof(__pyx_k_generic_handlers), 0, 0, 1, 1},
+    {&__pyx_n_s_generic_rpc_handlers, __pyx_k_generic_rpc_handlers, sizeof(__pyx_k_generic_rpc_handlers), 0, 0, 1, 1},
+    {&__pyx_n_s_genexpr, __pyx_k_genexpr, sizeof(__pyx_k_genexpr), 0, 0, 1, 1},
+    {&__pyx_n_s_get, __pyx_k_get, sizeof(__pyx_k_get), 0, 0, 1, 1},
+    {&__pyx_n_s_getLogger, __pyx_k_getLogger, sizeof(__pyx_k_getLogger), 0, 0, 1, 1},
+    {&__pyx_n_s_get_data, __pyx_k_get_data, sizeof(__pyx_k_get_data), 0, 0, 1, 1},
+    {&__pyx_n_s_get_deadline_from_context, __pyx_k_get_deadline_from_context, sizeof(__pyx_k_get_deadline_from_context), 0, 0, 1, 1},
+    {&__pyx_n_s_get_event_loop, __pyx_k_get_event_loop, sizeof(__pyx_k_get_event_loop), 0, 0, 1, 1},
+    {&__pyx_n_s_get_event_loop_policy, __pyx_k_get_event_loop_policy, sizeof(__pyx_k_get_event_loop_policy), 0, 0, 1, 1},
+    {&__pyx_n_s_get_fork_epoch, __pyx_k_get_fork_epoch, sizeof(__pyx_k_get_fork_epoch), 0, 0, 1, 1},
+    {&__pyx_n_s_get_hub, __pyx_k_get_hub, sizeof(__pyx_k_get_hub), 0, 0, 1, 1},
+    {&__pyx_n_s_get_metadata_locals_callback, __pyx_k_get_metadata_locals_callback, sizeof(__pyx_k_get_metadata_locals_callback), 0, 0, 1, 1},
+    {&__pyx_n_s_get_plugin, __pyx_k_get_plugin, sizeof(__pyx_k_get_plugin), 0, 0, 1, 1},
+    {&__pyx_n_s_get_registered_call_handle, __pyx_k_get_registered_call_handle, sizeof(__pyx_k_get_registered_call_handle), 0, 0, 1, 1},
+    {&__pyx_n_s_get_running_loop, __pyx_k_get_running_loop, sizeof(__pyx_k_get_running_loop), 0, 0, 1, 1},
+    {&__pyx_n_s_get_working_loop, __pyx_k_get_working_loop, sizeof(__pyx_k_get_working_loop), 0, 0, 1, 1},
+    {&__pyx_n_s_getstate, __pyx_k_getstate, sizeof(__pyx_k_getstate), 0, 0, 1, 1},
+    {&__pyx_n_s_gevent, __pyx_k_gevent, sizeof(__pyx_k_gevent), 0, 0, 1, 1},
+    {&__pyx_n_s_gevent_decrement_channel_count, __pyx_k_gevent_decrement_channel_count, sizeof(__pyx_k_gevent_decrement_channel_count), 0, 0, 1, 1},
+    {&__pyx_n_s_gevent_hub, __pyx_k_gevent_hub, sizeof(__pyx_k_gevent_hub), 0, 0, 1, 1},
+    {&__pyx_n_s_gevent_increment_channel_count, __pyx_k_gevent_increment_channel_count, sizeof(__pyx_k_gevent_increment_channel_count), 0, 0, 1, 1},
+    {&__pyx_n_s_gevent_pool, __pyx_k_gevent_pool, sizeof(__pyx_k_gevent_pool), 0, 0, 1, 1},
+    {&__pyx_n_s_grace, __pyx_k_grace, sizeof(__pyx_k_grace), 0, 0, 1, 1},
+    {&__pyx_n_s_grpc, __pyx_k_grpc, sizeof(__pyx_k_grpc), 0, 0, 1, 1},
+    {&__pyx_kp_s_grpc_aio_EOF, __pyx_k_grpc_aio_EOF, sizeof(__pyx_k_grpc_aio_EOF), 0, 0, 1, 0},
+    {&__pyx_n_s_grpc_call_error_string, __pyx_k_grpc_call_error_string, sizeof(__pyx_k_grpc_call_error_string), 0, 0, 1, 1},
+    {&__pyx_n_s_grpc_call_wrapper, __pyx_k_grpc_call_wrapper, sizeof(__pyx_k_grpc_call_wrapper), 0, 0, 1, 1},
+    {&__pyx_n_s_grpc_completion_queue_shutdown, __pyx_k_grpc_completion_queue_shutdown, sizeof(__pyx_k_grpc_completion_queue_shutdown), 0, 0, 1, 1},
+    {&__pyx_kp_s_grpc_python__cygrpc__GrpcArgWrap, __pyx_k_grpc_python__cygrpc__GrpcArgWrap, sizeof(__pyx_k_grpc_python__cygrpc__GrpcArgWrap), 0, 0, 1, 0},
+    {&__pyx_n_s_grpc_server_request_call, __pyx_k_grpc_server_request_call, sizeof(__pyx_k_grpc_server_request_call), 0, 0, 1, 1},
+    {&__pyx_n_s_grpc_server_shutdown_and_notify, __pyx_k_grpc_server_shutdown_and_notify, sizeof(__pyx_k_grpc_server_shutdown_and_notify), 0, 0, 1, 1},
+    {&__pyx_n_s_grpc_shutdown_wrapper, __pyx_k_grpc_shutdown_wrapper, sizeof(__pyx_k_grpc_shutdown_wrapper), 0, 0, 1, 1},
+    {&__pyx_n_s_gzip, __pyx_k_gzip, sizeof(__pyx_k_gzip), 0, 0, 1, 1},
+    {&__pyx_n_s_handle_callback_wrapper, __pyx_k_handle_callback_wrapper, sizeof(__pyx_k_handle_callback_wrapper), 0, 0, 1, 1},
+    {&__pyx_n_s_handle_callbacks, __pyx_k_handle_callbacks, sizeof(__pyx_k_handle_callbacks), 0, 0, 1, 1},
+    {&__pyx_n_s_handle_cancellation_from_core, __pyx_k_handle_cancellation_from_core, sizeof(__pyx_k_handle_cancellation_from_core), 0, 0, 1, 1},
+    {&__pyx_n_s_handle_events, __pyx_k_handle_events, sizeof(__pyx_k_handle_events), 0, 0, 1, 1},
+    {&__pyx_n_s_handle_exceptions, __pyx_k_handle_exceptions, sizeof(__pyx_k_handle_exceptions), 0, 0, 1, 1},
+    {&__pyx_n_s_handle_rpc, __pyx_k_handle_rpc, sizeof(__pyx_k_handle_rpc), 0, 0, 1, 1},
+    {&__pyx_n_s_handle_status_once_received, __pyx_k_handle_status_once_received, sizeof(__pyx_k_handle_status_once_received), 0, 0, 1, 1},
+    {&__pyx_n_s_handle_stream_stream_rpc, __pyx_k_handle_stream_stream_rpc, sizeof(__pyx_k_handle_stream_stream_rpc), 0, 0, 1, 1},
+    {&__pyx_n_s_handle_stream_unary_rpc, __pyx_k_handle_stream_unary_rpc, sizeof(__pyx_k_handle_stream_unary_rpc), 0, 0, 1, 1},
+    {&__pyx_n_s_handle_unary_stream_rpc, __pyx_k_handle_unary_stream_rpc, sizeof(__pyx_k_handle_unary_stream_rpc), 0, 0, 1, 1},
+    {&__pyx_n_s_handle_unary_unary_rpc, __pyx_k_handle_unary_unary_rpc, sizeof(__pyx_k_handle_unary_unary_rpc), 0, 0, 1, 1},
+    {&__pyx_n_s_handler, __pyx_k_handler, sizeof(__pyx_k_handler), 0, 0, 1, 1},
+    {&__pyx_n_s_handler_call_details, __pyx_k_handler_call_details, sizeof(__pyx_k_handler_call_details), 0, 0, 1, 1},
+    {&__pyx_n_s_hex_codec, __pyx_k_hex_codec, sizeof(__pyx_k_hex_codec), 0, 0, 1, 1},
+    {&__pyx_n_s_high, __pyx_k_high, sizeof(__pyx_k_high), 0, 0, 1, 1},
+    {&__pyx_n_s_host, __pyx_k_host, sizeof(__pyx_k_host), 0, 0, 1, 1},
+    {&__pyx_n_s_http2_initial_sequence_number, __pyx_k_http2_initial_sequence_number, sizeof(__pyx_k_http2_initial_sequence_number), 0, 0, 1, 1},
+    {&__pyx_n_s_hub, __pyx_k_hub, sizeof(__pyx_k_hub), 0, 0, 1, 1},
+    {&__pyx_n_s_id, __pyx_k_id, sizeof(__pyx_k_id), 0, 0, 1, 1},
+    {&__pyx_n_s_identities, __pyx_k_identities, sizeof(__pyx_k_identities), 0, 0, 1, 1},
+    {&__pyx_n_s_identity, __pyx_k_identity, sizeof(__pyx_k_identity), 0, 0, 1, 1},
+    {&__pyx_n_s_identity_key, __pyx_k_identity_key, sizeof(__pyx_k_identity_key), 0, 0, 1, 1},
+    {&__pyx_n_s_idle, __pyx_k_idle, sizeof(__pyx_k_idle), 0, 0, 1, 1},
+    {&__pyx_kp_s_if_error_code_is_specified_so_mu, __pyx_k_if_error_code_is_specified_so_mu, sizeof(__pyx_k_if_error_code_is_specified_so_mu), 0, 0, 1, 0},
+    {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1},
+    {&__pyx_n_s_inbound_ops, __pyx_k_inbound_ops, sizeof(__pyx_k_inbound_ops), 0, 0, 1, 1},
+    {&__pyx_n_s_increment, __pyx_k_increment, sizeof(__pyx_k_increment), 0, 0, 1, 1},
+    {&__pyx_n_s_init, __pyx_k_init, sizeof(__pyx_k_init), 0, 0, 1, 1},
+    {&__pyx_n_s_init_grpc_aio, __pyx_k_init_grpc_aio, sizeof(__pyx_k_init_grpc_aio), 0, 0, 1, 1},
+    {&__pyx_n_s_init_grpc_gevent, __pyx_k_init_grpc_gevent, sizeof(__pyx_k_init_grpc_gevent), 0, 0, 1, 1},
+    {&__pyx_n_s_init_subclass, __pyx_k_init_subclass, sizeof(__pyx_k_init_subclass), 0, 0, 1, 1},
+    {&__pyx_n_s_initial_cert_config, __pyx_k_initial_cert_config, sizeof(__pyx_k_initial_cert_config), 0, 0, 1, 1},
+    {&__pyx_kp_s_initial_cert_config_must_be_a_gr, __pyx_k_initial_cert_config_must_be_a_gr, sizeof(__pyx_k_initial_cert_config_must_be_a_gr), 0, 0, 1, 0},
+    {&__pyx_n_s_initial_metadata, __pyx_k_initial_metadata, sizeof(__pyx_k_initial_metadata), 0, 0, 1, 1},
+    {&__pyx_n_s_initial_metadata_op, __pyx_k_initial_metadata_op, sizeof(__pyx_k_initial_metadata_op), 0, 0, 1, 1},
+    {&__pyx_n_s_initializing, __pyx_k_initializing, sizeof(__pyx_k_initializing), 0, 0, 1, 1},
+    {&__pyx_n_s_initiate_stream_stream, __pyx_k_initiate_stream_stream, sizeof(__pyx_k_initiate_stream_stream), 0, 0, 1, 1},
+    {&__pyx_n_s_initiate_unary_stream, __pyx_k_initiate_unary_stream, sizeof(__pyx_k_initiate_unary_stream), 0, 0, 1, 1},
+    {&__pyx_n_s_insecure_server_credentials, __pyx_k_insecure_server_credentials, sizeof(__pyx_k_insecure_server_credentials), 0, 0, 1, 1},
+    {&__pyx_n_s_inspect, __pyx_k_inspect, sizeof(__pyx_k_inspect), 0, 0, 1, 1},
+    {&__pyx_n_s_install_context_from_request_cal, __pyx_k_install_context_from_request_cal, sizeof(__pyx_k_install_context_from_request_cal), 0, 0, 1, 1},
+    {&__pyx_n_s_install_context_from_request_cal_2, __pyx_k_install_context_from_request_cal_2, sizeof(__pyx_k_install_context_from_request_cal_2), 0, 0, 1, 1},
+    {&__pyx_n_s_int, __pyx_k_int, sizeof(__pyx_k_int), 0, 0, 1, 1},
+    {&__pyx_n_s_integrated_call, __pyx_k_integrated_call, sizeof(__pyx_k_integrated_call), 0, 0, 1, 1},
+    {&__pyx_n_s_integrated_call_locals_on_succe, __pyx_k_integrated_call_locals_on_succe, sizeof(__pyx_k_integrated_call_locals_on_succe), 0, 0, 1, 1},
+    {&__pyx_n_s_intercept_service, __pyx_k_intercept_service, sizeof(__pyx_k_intercept_service), 0, 0, 1, 1},
+    {&__pyx_n_s_interceptor, __pyx_k_interceptor, sizeof(__pyx_k_interceptor), 0, 0, 1, 1},
+    {&__pyx_n_s_interceptors, __pyx_k_interceptors, sizeof(__pyx_k_interceptors), 0, 0, 1, 1},
+    {&__pyx_n_s_internal, __pyx_k_internal, sizeof(__pyx_k_internal), 0, 0, 1, 1},
+    {&__pyx_kp_s_internal_error_user_data_must_be, __pyx_k_internal_error_user_data_must_be, sizeof(__pyx_k_internal_error_user_data_must_be), 0, 0, 1, 0},
+    {&__pyx_n_s_internal_poll, __pyx_k_internal_poll, sizeof(__pyx_k_internal_poll), 0, 0, 1, 1},
+    {&__pyx_n_s_invalid_argument, __pyx_k_invalid_argument, sizeof(__pyx_k_invalid_argument), 0, 0, 1, 1},
+    {&__pyx_kp_s_invalid_call_object_cannot_be_us, __pyx_k_invalid_call_object_cannot_be_us, sizeof(__pyx_k_invalid_call_object_cannot_be_us), 0, 0, 1, 0},
+    {&__pyx_n_s_invalid_flags, __pyx_k_invalid_flags, sizeof(__pyx_k_invalid_flags), 0, 0, 1, 1},
+    {&__pyx_n_s_invalid_metadata, __pyx_k_invalid_metadata, sizeof(__pyx_k_invalid_metadata), 0, 0, 1, 1},
+    {&__pyx_n_s_invocation_metadata, __pyx_k_invocation_metadata, sizeof(__pyx_k_invocation_metadata), 0, 0, 1, 1},
+    {&__pyx_n_s_is_algorithm_enabled, __pyx_k_is_algorithm_enabled, sizeof(__pyx_k_is_algorithm_enabled), 0, 0, 1, 1},
+    {&__pyx_n_s_is_async_handler, __pyx_k_is_async_handler, sizeof(__pyx_k_is_async_handler), 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_fork_support_enabled, __pyx_k_is_fork_support_enabled, sizeof(__pyx_k_is_fork_support_enabled), 0, 0, 1, 1},
+    {&__pyx_n_s_is_locally_cancelled, __pyx_k_is_locally_cancelled, sizeof(__pyx_k_is_locally_cancelled), 0, 0, 1, 1},
+    {&__pyx_n_s_is_ok, __pyx_k_is_ok, sizeof(__pyx_k_is_ok), 0, 0, 1, 1},
+    {&__pyx_n_s_is_running, __pyx_k_is_running, sizeof(__pyx_k_is_running), 0, 0, 1, 1},
+    {&__pyx_n_s_is_sampled, __pyx_k_is_sampled, sizeof(__pyx_k_is_sampled), 0, 0, 1, 1},
+    {&__pyx_n_s_is_valid, __pyx_k_is_valid, sizeof(__pyx_k_is_valid), 0, 0, 1, 1},
+    {&__pyx_n_s_isasyncgenfunction, __pyx_k_isasyncgenfunction, sizeof(__pyx_k_isasyncgenfunction), 0, 0, 1, 1},
+    {&__pyx_n_s_isawaitable, __pyx_k_isawaitable, sizeof(__pyx_k_isawaitable), 0, 0, 1, 1},
+    {&__pyx_n_s_iscoroutinefunction, __pyx_k_iscoroutinefunction, sizeof(__pyx_k_iscoroutinefunction), 0, 0, 1, 1},
+    {&__pyx_kp_u_isenabled, __pyx_k_isenabled, sizeof(__pyx_k_isenabled), 0, 1, 0, 0},
+    {&__pyx_n_s_item, __pyx_k_item, sizeof(__pyx_k_item), 0, 0, 1, 1},
+    {&__pyx_n_s_iter, __pyx_k_iter, sizeof(__pyx_k_iter), 0, 0, 1, 1},
+    {&__pyx_n_s_join, __pyx_k_join, sizeof(__pyx_k_join), 0, 0, 1, 1},
+    {&__pyx_n_s_key, __pyx_k_key, sizeof(__pyx_k_key), 0, 0, 1, 1},
+    {&__pyx_n_s_keys, __pyx_k_keys, sizeof(__pyx_k_keys), 0, 0, 1, 1},
+    {&__pyx_n_s_last_observed_state, __pyx_k_last_observed_state, sizeof(__pyx_k_last_observed_state), 0, 0, 1, 1},
+    {&__pyx_n_s_latent_event_arg, __pyx_k_latent_event_arg, sizeof(__pyx_k_latent_event_arg), 0, 0, 1, 1},
+    {&__pyx_n_s_len, __pyx_k_len, sizeof(__pyx_k_len), 0, 0, 1, 1},
+    {&__pyx_n_s_lk, __pyx_k_lk, sizeof(__pyx_k_lk), 0, 0, 1, 1},
+    {&__pyx_n_s_local_connect_type, __pyx_k_local_connect_type, sizeof(__pyx_k_local_connect_type), 0, 0, 1, 1},
+    {&__pyx_n_s_local_tcp, __pyx_k_local_tcp, sizeof(__pyx_k_local_tcp), 0, 0, 1, 1},
+    {&__pyx_n_s_logging, __pyx_k_logging, sizeof(__pyx_k_logging), 0, 0, 1, 1},
+    {&__pyx_n_s_loop, __pyx_k_loop, sizeof(__pyx_k_loop), 0, 0, 1, 1},
+    {&__pyx_n_s_low, __pyx_k_low, sizeof(__pyx_k_low), 0, 0, 1, 1},
+    {&__pyx_n_s_lower, __pyx_k_lower, sizeof(__pyx_k_lower), 0, 0, 1, 1},
+    {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1},
+    {&__pyx_n_s_managed_target, __pyx_k_managed_target, sizeof(__pyx_k_managed_target), 0, 0, 1, 1},
+    {&__pyx_n_s_max_concurrent_streams, __pyx_k_max_concurrent_streams, sizeof(__pyx_k_max_concurrent_streams), 0, 0, 1, 1},
+    {&__pyx_n_s_max_receive_message_length, __pyx_k_max_receive_message_length, sizeof(__pyx_k_max_receive_message_length), 0, 0, 1, 1},
+    {&__pyx_n_s_max_results, __pyx_k_max_results, sizeof(__pyx_k_max_results), 0, 0, 1, 1},
+    {&__pyx_n_s_max_send_message_length, __pyx_k_max_send_message_length, sizeof(__pyx_k_max_send_message_length), 0, 0, 1, 1},
+    {&__pyx_n_s_maximum_concurrent_rpcs, __pyx_k_maximum_concurrent_rpcs, sizeof(__pyx_k_maximum_concurrent_rpcs), 0, 0, 1, 1},
+    {&__pyx_kp_s_maximum_concurrent_rpcs_should_b, __pyx_k_maximum_concurrent_rpcs_should_b, sizeof(__pyx_k_maximum_concurrent_rpcs_should_b), 0, 0, 1, 0},
+    {&__pyx_n_s_maxsize, __pyx_k_maxsize, sizeof(__pyx_k_maxsize), 0, 0, 1, 1},
+    {&__pyx_n_s_maybe_save_server_trace_context, __pyx_k_maybe_save_server_trace_context, sizeof(__pyx_k_maybe_save_server_trace_context), 0, 0, 1, 1},
+    {&__pyx_n_s_medium, __pyx_k_medium, sizeof(__pyx_k_medium), 0, 0, 1, 1},
+    {&__pyx_n_s_members, __pyx_k_members, sizeof(__pyx_k_members), 0, 0, 1, 1},
+    {&__pyx_n_s_message, __pyx_k_message, sizeof(__pyx_k_message), 0, 0, 1, 1},
+    {&__pyx_n_s_metaclass, __pyx_k_metaclass, sizeof(__pyx_k_metaclass), 0, 0, 1, 1},
+    {&__pyx_n_s_metadata, __pyx_k_metadata, sizeof(__pyx_k_metadata), 0, 0, 1, 1},
+    {&__pyx_n_s_metadata_locals_genexpr, __pyx_k_metadata_locals_genexpr, sizeof(__pyx_k_metadata_locals_genexpr), 0, 0, 1, 1},
+    {&__pyx_n_s_metadata_plugin, __pyx_k_metadata_plugin, sizeof(__pyx_k_metadata_plugin), 0, 0, 1, 1},
+    {&__pyx_n_s_metadata_sent_observer, __pyx_k_metadata_sent_observer, sizeof(__pyx_k_metadata_sent_observer), 0, 0, 1, 1},
+    {&__pyx_kp_s_metadata_was_invalid_s, __pyx_k_metadata_was_invalid_s, sizeof(__pyx_k_metadata_was_invalid_s), 0, 0, 1, 0},
+    {&__pyx_n_s_method, __pyx_k_method, sizeof(__pyx_k_method), 0, 0, 1, 1},
+    {&__pyx_n_s_method_handler, __pyx_k_method_handler, sizeof(__pyx_k_method_handler), 0, 0, 1, 1},
+    {&__pyx_n_s_module, __pyx_k_module, sizeof(__pyx_k_module), 0, 0, 1, 1},
+    {&__pyx_n_s_mro_entries, __pyx_k_mro_entries, sizeof(__pyx_k_mro_entries), 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_namedtuple, __pyx_k_namedtuple, sizeof(__pyx_k_namedtuple), 0, 0, 1, 1},
+    {&__pyx_n_s_new, __pyx_k_new, sizeof(__pyx_k_new), 0, 0, 1, 1},
+    {&__pyx_n_s_new_event_loop, __pyx_k_new_event_loop, sizeof(__pyx_k_new_event_loop), 0, 0, 1, 1},
+    {&__pyx_n_s_next_call_event, __pyx_k_next_call_event, sizeof(__pyx_k_next_call_event), 0, 0, 1, 1},
+    {&__pyx_n_s_next_call_event_locals_on_succes, __pyx_k_next_call_event_locals_on_succes, sizeof(__pyx_k_next_call_event_locals_on_succes), 0, 0, 1, 1},
+    {&__pyx_n_s_next_event, __pyx_k_next_event, sizeof(__pyx_k_next_event), 0, 0, 1, 1},
+    {&__pyx_n_s_next_event_locals_on_failure, __pyx_k_next_event_locals_on_failure, sizeof(__pyx_k_next_event_locals_on_failure), 0, 0, 1, 1},
+    {&__pyx_n_s_next_event_locals_on_success, __pyx_k_next_event_locals_on_success, sizeof(__pyx_k_next_event_locals_on_success), 0, 0, 1, 1},
+    {&__pyx_n_s_no_compress, __pyx_k_no_compress, sizeof(__pyx_k_no_compress), 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_none, __pyx_k_none, sizeof(__pyx_k_none), 0, 0, 1, 1},
+    {&__pyx_n_s_not_found, __pyx_k_not_found, sizeof(__pyx_k_not_found), 0, 0, 1, 1},
+    {&__pyx_n_s_not_invoked, __pyx_k_not_invoked, sizeof(__pyx_k_not_invoked), 0, 0, 1, 1},
+    {&__pyx_n_s_not_on_client, __pyx_k_not_on_client, sizeof(__pyx_k_not_on_client), 0, 0, 1, 1},
+    {&__pyx_n_s_not_on_server, __pyx_k_not_on_server, sizeof(__pyx_k_not_on_server), 0, 0, 1, 1},
+    {&__pyx_n_s_notify_all, __pyx_k_notify_all, sizeof(__pyx_k_notify_all), 0, 0, 1, 1},
+    {&__pyx_n_s_num_active_threads, __pyx_k_num_active_threads, sizeof(__pyx_k_num_active_threads), 0, 0, 1, 1},
+    {&__pyx_n_s_object, __pyx_k_object, sizeof(__pyx_k_object), 0, 0, 1, 1},
+    {&__pyx_kp_s_object_2, __pyx_k_object_2, sizeof(__pyx_k_object_2), 0, 0, 1, 0},
+    {&__pyx_n_s_observability, __pyx_k_observability, sizeof(__pyx_k_observability), 0, 0, 1, 1},
+    {&__pyx_n_s_observability_enabled, __pyx_k_observability_enabled, sizeof(__pyx_k_observability_enabled), 0, 0, 1, 1},
+    {&__pyx_n_s_observability_plugin, __pyx_k_observability_plugin, sizeof(__pyx_k_observability_plugin), 0, 0, 1, 1},
+    {&__pyx_kp_s_of_RPC_that_terminated_with_sta, __pyx_k_of_RPC_that_terminated_with_sta, sizeof(__pyx_k_of_RPC_that_terminated_with_sta), 0, 0, 1, 0},
+    {&__pyx_kp_s_of_RPC_that_terminated_with_sta_2, __pyx_k_of_RPC_that_terminated_with_sta_2, sizeof(__pyx_k_of_RPC_that_terminated_with_sta_2), 0, 0, 1, 0},
+    {&__pyx_n_s_ok, __pyx_k_ok, sizeof(__pyx_k_ok), 0, 0, 1, 1},
+    {&__pyx_n_s_on_failure, __pyx_k_on_failure, sizeof(__pyx_k_on_failure), 0, 0, 1, 1},
+    {&__pyx_n_s_on_success, __pyx_k_on_success, sizeof(__pyx_k_on_success), 0, 0, 1, 1},
+    {&__pyx_n_s_op, __pyx_k_op, sizeof(__pyx_k_op), 0, 0, 1, 1},
+    {&__pyx_n_s_operate, __pyx_k_operate, sizeof(__pyx_k_operate), 0, 0, 1, 1},
+    {&__pyx_n_s_operation_complete, __pyx_k_operation_complete, sizeof(__pyx_k_operation_complete), 0, 0, 1, 1},
+    {&__pyx_n_s_operations, __pyx_k_operations, sizeof(__pyx_k_operations), 0, 0, 1, 1},
+    {&__pyx_n_s_operationses_and_tags, __pyx_k_operationses_and_tags, sizeof(__pyx_k_operationses_and_tags), 0, 0, 1, 1},
+    {&__pyx_n_s_ops, __pyx_k_ops, sizeof(__pyx_k_ops), 0, 0, 1, 1},
+    {&__pyx_n_s_options, __pyx_k_options, sizeof(__pyx_k_options), 0, 0, 1, 1},
+    {&__pyx_n_s_os, __pyx_k_os, sizeof(__pyx_k_os), 0, 0, 1, 1},
+    {&__pyx_n_s_out_of_range, __pyx_k_out_of_range, sizeof(__pyx_k_out_of_range), 0, 0, 1, 1},
+    {&__pyx_n_s_outbound_initial_metadata, __pyx_k_outbound_initial_metadata, sizeof(__pyx_k_outbound_initial_metadata), 0, 0, 1, 1},
+    {&__pyx_n_s_outbound_ops, __pyx_k_outbound_ops, sizeof(__pyx_k_outbound_ops), 0, 0, 1, 1},
+    {&__pyx_n_s_partial, __pyx_k_partial, sizeof(__pyx_k_partial), 0, 0, 1, 1},
+    {&__pyx_n_s_peer, __pyx_k_peer, sizeof(__pyx_k_peer), 0, 0, 1, 1},
+    {&__pyx_n_s_peer_identities, __pyx_k_peer_identities, sizeof(__pyx_k_peer_identities), 0, 0, 1, 1},
+    {&__pyx_n_s_peer_identity_key, __pyx_k_peer_identity_key, sizeof(__pyx_k_peer_identity_key), 0, 0, 1, 1},
+    {&__pyx_n_s_pem_key_cert_pairs, __pyx_k_pem_key_cert_pairs, sizeof(__pyx_k_pem_key_cert_pairs), 0, 0, 1, 1},
+    {&__pyx_n_s_pem_root_certificates, __pyx_k_pem_root_certificates, sizeof(__pyx_k_pem_root_certificates), 0, 0, 1, 1},
+    {&__pyx_n_s_pem_root_certs, __pyx_k_pem_root_certs, sizeof(__pyx_k_pem_root_certs), 0, 0, 1, 1},
+    {&__pyx_n_s_permission_denied, __pyx_k_permission_denied, sizeof(__pyx_k_permission_denied), 0, 0, 1, 1},
+    {&__pyx_n_s_pickle, __pyx_k_pickle, sizeof(__pyx_k_pickle), 0, 0, 1, 1},
+    {&__pyx_n_s_pkgutil, __pyx_k_pkgutil, sizeof(__pyx_k_pkgutil), 0, 0, 1, 1},
+    {&__pyx_n_s_plugin, __pyx_k_plugin, sizeof(__pyx_k_plugin), 0, 0, 1, 1},
+    {&__pyx_n_s_poll, __pyx_k_poll, sizeof(__pyx_k_poll), 0, 0, 1, 1},
+    {&__pyx_n_s_poll_wrapper, __pyx_k_poll_wrapper, sizeof(__pyx_k_poll_wrapper), 0, 0, 1, 1},
+    {&__pyx_n_s_poller, __pyx_k_poller, sizeof(__pyx_k_poller), 0, 0, 1, 1},
+    {&__pyx_n_s_pool, __pyx_k_pool, sizeof(__pyx_k_pool), 0, 0, 1, 1},
+    {&__pyx_n_s_pop, __pyx_k_pop, sizeof(__pyx_k_pop), 0, 0, 1, 1},
+    {&__pyx_n_s_postfork_state_to_reset, __pyx_k_postfork_state_to_reset, sizeof(__pyx_k_postfork_state_to_reset), 0, 0, 1, 1},
+    {&__pyx_n_s_postfork_states_to_reset, __pyx_k_postfork_states_to_reset, sizeof(__pyx_k_postfork_states_to_reset), 0, 0, 1, 1},
+    {&__pyx_n_s_prepare, __pyx_k_prepare, sizeof(__pyx_k_prepare), 0, 0, 1, 1},
+    {&__pyx_n_s_primary_user_agent_string, __pyx_k_primary_user_agent_string, sizeof(__pyx_k_primary_user_agent_string), 0, 0, 1, 1},
+    {&__pyx_n_s_print_exc, __pyx_k_print_exc, sizeof(__pyx_k_print_exc), 0, 0, 1, 1},
+    {&__pyx_n_s_private_key, __pyx_k_private_key, sizeof(__pyx_k_private_key), 0, 0, 1, 1},
+    {&__pyx_n_s_properties, __pyx_k_properties, sizeof(__pyx_k_properties), 0, 0, 1, 1},
+    {&__pyx_n_s_property, __pyx_k_property, sizeof(__pyx_k_property), 0, 0, 1, 1},
+    {&__pyx_n_s_put, __pyx_k_put, sizeof(__pyx_k_put), 0, 0, 1, 1},
+    {&__pyx_n_s_py_auth_context, __pyx_k_py_auth_context, sizeof(__pyx_k_py_auth_context), 0, 0, 1, 1},
+    {&__pyx_n_s_python_call_credentials, __pyx_k_python_call_credentials, sizeof(__pyx_k_python_call_credentials), 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_capi, __pyx_k_pyx_capi, sizeof(__pyx_k_pyx_capi), 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_AioServer, __pyx_k_pyx_unpickle_AioServer, sizeof(__pyx_k_pyx_unpickle_AioServer), 0, 0, 1, 1},
+    {&__pyx_n_s_pyx_unpickle_CensusContext, __pyx_k_pyx_unpickle_CensusContext, sizeof(__pyx_k_pyx_unpickle_CensusContext), 0, 0, 1, 1},
+    {&__pyx_n_s_pyx_unpickle_ChannelCredential, __pyx_k_pyx_unpickle_ChannelCredential, sizeof(__pyx_k_pyx_unpickle_ChannelCredential), 0, 0, 1, 1},
+    {&__pyx_n_s_pyx_unpickle_InsecureChannelCr, __pyx_k_pyx_unpickle_InsecureChannelCr, sizeof(__pyx_k_pyx_unpickle_InsecureChannelCr), 0, 0, 1, 1},
+    {&__pyx_n_s_pyx_unpickle__Tag, __pyx_k_pyx_unpickle__Tag, sizeof(__pyx_k_pyx_unpickle__Tag), 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_qualname, __pyx_k_qualname, sizeof(__pyx_k_qualname), 0, 0, 1, 1},
+    {&__pyx_n_s_query_call, __pyx_k_query_call, sizeof(__pyx_k_query_call), 0, 0, 1, 1},
+    {&__pyx_n_s_query_handler, __pyx_k_query_handler, sizeof(__pyx_k_query_handler), 0, 0, 1, 1},
+    {&__pyx_n_s_query_handlers, __pyx_k_query_handlers, sizeof(__pyx_k_query_handlers), 0, 0, 1, 1},
+    {&__pyx_n_s_queue, __pyx_k_queue, sizeof(__pyx_k_queue), 0, 0, 1, 1},
+    {&__pyx_n_s_queue_deadline, __pyx_k_queue_deadline, sizeof(__pyx_k_queue_deadline), 0, 0, 1, 1},
+    {&__pyx_kp_s_queue_must_be_live, __pyx_k_queue_must_be_live, sizeof(__pyx_k_queue_must_be_live), 0, 0, 1, 0},
+    {&__pyx_kp_s_queue_must_be_shutting_down_to_b, __pyx_k_queue_must_be_shutting_down_to_b, sizeof(__pyx_k_queue_must_be_shutting_down_to_b), 0, 0, 1, 0},
+    {&__pyx_n_s_queue_shutdown, __pyx_k_queue_shutdown, sizeof(__pyx_k_queue_shutdown), 0, 0, 1, 1},
+    {&__pyx_n_s_queue_timeout, __pyx_k_queue_timeout, sizeof(__pyx_k_queue_timeout), 0, 0, 1, 1},
+    {&__pyx_n_s_raise_if_not_valid_trailing_meta, __pyx_k_raise_if_not_valid_trailing_meta, sizeof(__pyx_k_raise_if_not_valid_trailing_meta), 0, 0, 1, 1},
+    {&__pyx_n_s_range, __pyx_k_range, sizeof(__pyx_k_range), 0, 0, 1, 1},
+    {&__pyx_n_s_raw_message, __pyx_k_raw_message, sizeof(__pyx_k_raw_message), 0, 0, 1, 1},
+    {&__pyx_n_s_read, __pyx_k_read, sizeof(__pyx_k_read), 0, 0, 1, 1},
+    {&__pyx_n_s_read_socket, __pyx_k_read_socket, sizeof(__pyx_k_read_socket), 0, 0, 1, 1},
+    {&__pyx_n_s_ready, __pyx_k_ready, sizeof(__pyx_k_ready), 0, 0, 1, 1},
+    {&__pyx_n_s_receive_close_on_server, __pyx_k_receive_close_on_server, sizeof(__pyx_k_receive_close_on_server), 0, 0, 1, 1},
+    {&__pyx_n_s_receive_initial_metadata, __pyx_k_receive_initial_metadata, sizeof(__pyx_k_receive_initial_metadata), 0, 0, 1, 1},
+    {&__pyx_n_s_receive_initial_metadata_2, __pyx_k_receive_initial_metadata_2, sizeof(__pyx_k_receive_initial_metadata_2), 0, 0, 1, 1},
+    {&__pyx_n_s_receive_initial_metadata_op, __pyx_k_receive_initial_metadata_op, sizeof(__pyx_k_receive_initial_metadata_op), 0, 0, 1, 1},
+    {&__pyx_n_s_receive_message, __pyx_k_receive_message, sizeof(__pyx_k_receive_message), 0, 0, 1, 1},
+    {&__pyx_n_s_receive_message_2, __pyx_k_receive_message_2, sizeof(__pyx_k_receive_message_2), 0, 0, 1, 1},
+    {&__pyx_n_s_receive_message_op, __pyx_k_receive_message_op, sizeof(__pyx_k_receive_message_op), 0, 0, 1, 1},
+    {&__pyx_n_s_receive_op, __pyx_k_receive_op, sizeof(__pyx_k_receive_op), 0, 0, 1, 1},
+    {&__pyx_n_s_receive_serialized_message, __pyx_k_receive_serialized_message, sizeof(__pyx_k_receive_serialized_message), 0, 0, 1, 1},
+    {&__pyx_n_s_receive_status_on_client, __pyx_k_receive_status_on_client, sizeof(__pyx_k_receive_status_on_client), 0, 0, 1, 1},
+    {&__pyx_n_s_receive_status_on_client_op, __pyx_k_receive_status_on_client_op, sizeof(__pyx_k_receive_status_on_client_op), 0, 0, 1, 1},
+    {&__pyx_n_s_received_message, __pyx_k_received_message, sizeof(__pyx_k_received_message), 0, 0, 1, 1},
+    {&__pyx_n_s_recv, __pyx_k_recv, sizeof(__pyx_k_recv), 0, 0, 1, 1},
+    {&__pyx_n_s_reduce, __pyx_k_reduce, sizeof(__pyx_k_reduce), 0, 0, 1, 1},
+    {&__pyx_n_s_reduce_cython, __pyx_k_reduce_cython, sizeof(__pyx_k_reduce_cython), 0, 0, 1, 1},
+    {&__pyx_n_s_reduce_ex, __pyx_k_reduce_ex, sizeof(__pyx_k_reduce_ex), 0, 0, 1, 1},
+    {&__pyx_n_s_register, __pyx_k_register, sizeof(__pyx_k_register), 0, 0, 1, 1},
+    {&__pyx_n_s_register_at_fork, __pyx_k_register_at_fork, sizeof(__pyx_k_register_at_fork), 0, 0, 1, 1},
+    {&__pyx_n_s_register_completion_queue, __pyx_k_register_completion_queue, sizeof(__pyx_k_register_completion_queue), 0, 0, 1, 1},
+    {&__pyx_n_s_registered_call_handle, __pyx_k_registered_call_handle, sizeof(__pyx_k_registered_call_handle), 0, 0, 1, 1},
+    {&__pyx_n_s_remove_reader, __pyx_k_remove_reader, sizeof(__pyx_k_remove_reader), 0, 0, 1, 1},
+    {&__pyx_n_s_repr, __pyx_k_repr, sizeof(__pyx_k_repr), 0, 0, 1, 1},
+    {&__pyx_n_s_repr_2, __pyx_k_repr_2, sizeof(__pyx_k_repr_2), 0, 0, 1, 1},
+    {&__pyx_n_s_request, __pyx_k_request, sizeof(__pyx_k_request), 0, 0, 1, 1},
+    {&__pyx_n_s_request_call, __pyx_k_request_call, sizeof(__pyx_k_request_call), 0, 0, 1, 1},
+    {&__pyx_n_s_request_call_2, __pyx_k_request_call_2, sizeof(__pyx_k_request_call_2), 0, 0, 1, 1},
+    {&__pyx_n_s_request_call_tag, __pyx_k_request_call_tag, sizeof(__pyx_k_request_call_tag), 0, 0, 1, 1},
+    {&__pyx_n_s_request_deserializer, __pyx_k_request_deserializer, sizeof(__pyx_k_request_deserializer), 0, 0, 1, 1},
+    {&__pyx_n_s_request_iterator, __pyx_k_request_iterator, sizeof(__pyx_k_request_iterator), 0, 0, 1, 1},
+    {&__pyx_n_s_request_message, __pyx_k_request_message, sizeof(__pyx_k_request_message), 0, 0, 1, 1},
+    {&__pyx_n_s_request_raw, __pyx_k_request_raw, sizeof(__pyx_k_request_raw), 0, 0, 1, 1},
+    {&__pyx_n_s_request_streaming, __pyx_k_request_streaming, sizeof(__pyx_k_request_streaming), 0, 0, 1, 1},
+    {&__pyx_n_s_reset_grpc_config_vars, __pyx_k_reset_grpc_config_vars, sizeof(__pyx_k_reset_grpc_config_vars), 0, 0, 1, 1},
+    {&__pyx_n_s_reset_postfork_child, __pyx_k_reset_postfork_child, sizeof(__pyx_k_reset_postfork_child), 0, 0, 1, 1},
+    {&__pyx_n_s_resource_exhausted, __pyx_k_resource_exhausted, sizeof(__pyx_k_resource_exhausted), 0, 0, 1, 1},
+    {&__pyx_n_s_response, __pyx_k_response, sizeof(__pyx_k_response), 0, 0, 1, 1},
+    {&__pyx_n_s_response_message, __pyx_k_response_message, sizeof(__pyx_k_response_message), 0, 0, 1, 1},
+    {&__pyx_n_s_response_raw, __pyx_k_response_raw, sizeof(__pyx_k_response_raw), 0, 0, 1, 1},
+    {&__pyx_n_s_response_serializer, __pyx_k_response_serializer, sizeof(__pyx_k_response_serializer), 0, 0, 1, 1},
+    {&__pyx_n_s_response_streaming, __pyx_k_response_streaming, sizeof(__pyx_k_response_streaming), 0, 0, 1, 1},
+    {&__pyx_n_s_result, __pyx_k_result, sizeof(__pyx_k_result), 0, 0, 1, 1},
+    {&__pyx_n_s_retain_self, __pyx_k_retain_self, sizeof(__pyx_k_retain_self), 0, 0, 1, 1},
+    {&__pyx_n_s_return, __pyx_k_return, sizeof(__pyx_k_return), 0, 0, 1, 1},
+    {&__pyx_n_s_return_from_user_request_generat, __pyx_k_return_from_user_request_generat, sizeof(__pyx_k_return_from_user_request_generat), 0, 0, 1, 1},
+    {&__pyx_n_s_rpc_coro, __pyx_k_rpc_coro, sizeof(__pyx_k_rpc_coro), 0, 0, 1, 1},
+    {&__pyx_n_s_rpc_state, __pyx_k_rpc_state, sizeof(__pyx_k_rpc_state), 0, 0, 1, 1},
+    {&__pyx_n_s_rpc_task, __pyx_k_rpc_task, sizeof(__pyx_k_rpc_task), 0, 0, 1, 1},
+    {&__pyx_n_s_run, __pyx_k_run, sizeof(__pyx_k_run), 0, 0, 1, 1},
+    {&__pyx_n_s_run_2, __pyx_k_run_2, sizeof(__pyx_k_run_2), 0, 0, 1, 1},
+    {&__pyx_n_s_run_coroutine_threadsafe, __pyx_k_run_coroutine_threadsafe, sizeof(__pyx_k_run_coroutine_threadsafe), 0, 0, 1, 1},
+    {&__pyx_n_s_run_in_executor, __pyx_k_run_in_executor, sizeof(__pyx_k_run_in_executor), 0, 0, 1, 1},
+    {&__pyx_n_s_run_interceptor, __pyx_k_run_interceptor, sizeof(__pyx_k_run_interceptor), 0, 0, 1, 1},
+    {&__pyx_n_s_run_spawn_greenlets, __pyx_k_run_spawn_greenlets, sizeof(__pyx_k_run_spawn_greenlets), 0, 0, 1, 1},
+    {&__pyx_n_s_run_with_context, __pyx_k_run_with_context, sizeof(__pyx_k_run_with_context), 0, 0, 1, 1},
+    {&__pyx_n_s_run_with_context_locals__run, __pyx_k_run_with_context_locals__run, sizeof(__pyx_k_run_with_context_locals__run), 0, 0, 1, 1},
+    {&__pyx_n_s_runtime_error, __pyx_k_runtime_error, sizeof(__pyx_k_runtime_error), 0, 0, 1, 1},
+    {&__pyx_n_s_save_trace_context, __pyx_k_save_trace_context, sizeof(__pyx_k_save_trace_context), 0, 0, 1, 1},
+    {&__pyx_n_s_schedule_coro_threadsafe, __pyx_k_schedule_coro_threadsafe, sizeof(__pyx_k_schedule_coro_threadsafe), 0, 0, 1, 1},
+    {&__pyx_n_s_schedule_rpc_coro, __pyx_k_schedule_rpc_coro, sizeof(__pyx_k_schedule_rpc_coro), 0, 0, 1, 1},
+    {&__pyx_n_s_secondary_user_agent_string, __pyx_k_secondary_user_agent_string, sizeof(__pyx_k_secondary_user_agent_string), 0, 0, 1, 1},
+    {&__pyx_n_s_segregated_call, __pyx_k_segregated_call, sizeof(__pyx_k_segregated_call), 0, 0, 1, 1},
+    {&__pyx_n_s_segregated_call_locals_on_succe, __pyx_k_segregated_call_locals_on_succe, sizeof(__pyx_k_segregated_call_locals_on_succe), 0, 0, 1, 1},
+    {&__pyx_n_s_self, __pyx_k_self, sizeof(__pyx_k_self), 0, 0, 1, 1},
+    {&__pyx_kp_s_self__cq_cannot_be_converted_to, __pyx_k_self__cq_cannot_be_converted_to, sizeof(__pyx_k_self__cq_cannot_be_converted_to), 0, 0, 1, 0},
+    {&__pyx_kp_s_self_arg_cannot_be_converted_to, __pyx_k_self_arg_cannot_be_converted_to, sizeof(__pyx_k_self_arg_cannot_be_converted_to), 0, 0, 1, 0},
+    {&__pyx_kp_s_self_c_argument_cannot_be_conver, __pyx_k_self_c_argument_cannot_be_conver, sizeof(__pyx_k_self_c_argument_cannot_be_conver), 0, 0, 1, 0},
+    {&__pyx_kp_s_self_c_credentials_cannot_be_con, __pyx_k_self_c_credentials_cannot_be_con, sizeof(__pyx_k_self_c_credentials_cannot_be_con), 0, 0, 1, 0},
+    {&__pyx_kp_s_self_c_op_cannot_be_converted_to, __pyx_k_self_c_op_cannot_be_converted_to, sizeof(__pyx_k_self_c_op_cannot_be_converted_to), 0, 0, 1, 0},
+    {&__pyx_n_s_send, __pyx_k_send, sizeof(__pyx_k_send), 0, 0, 1, 1},
+    {&__pyx_n_s_send_close_from_client, __pyx_k_send_close_from_client, sizeof(__pyx_k_send_close_from_client), 0, 0, 1, 1},
+    {&__pyx_n_s_send_close_op, __pyx_k_send_close_op, sizeof(__pyx_k_send_close_op), 0, 0, 1, 1},
+    {&__pyx_n_s_send_error_status_from_server, __pyx_k_send_error_status_from_server, sizeof(__pyx_k_send_error_status_from_server), 0, 0, 1, 1},
+    {&__pyx_n_s_send_initial_metadata, __pyx_k_send_initial_metadata, sizeof(__pyx_k_send_initial_metadata), 0, 0, 1, 1},
+    {&__pyx_n_s_send_initial_metadata_2, __pyx_k_send_initial_metadata_2, sizeof(__pyx_k_send_initial_metadata_2), 0, 0, 1, 1},
+    {&__pyx_n_s_send_initial_metadata_op, __pyx_k_send_initial_metadata_op, sizeof(__pyx_k_send_initial_metadata_op), 0, 0, 1, 1},
+    {&__pyx_n_s_send_message, __pyx_k_send_message, sizeof(__pyx_k_send_message), 0, 0, 1, 1},
+    {&__pyx_n_s_send_message_2, __pyx_k_send_message_2, sizeof(__pyx_k_send_message_2), 0, 0, 1, 1},
+    {&__pyx_n_s_send_message_op, __pyx_k_send_message_op, sizeof(__pyx_k_send_message_op), 0, 0, 1, 1},
+    {&__pyx_n_s_send_receive_close, __pyx_k_send_receive_close, sizeof(__pyx_k_send_receive_close), 0, 0, 1, 1},
+    {&__pyx_n_s_send_serialized_message, __pyx_k_send_serialized_message, sizeof(__pyx_k_send_serialized_message), 0, 0, 1, 1},
+    {&__pyx_n_s_send_status_from_server, __pyx_k_send_status_from_server, sizeof(__pyx_k_send_status_from_server), 0, 0, 1, 1},
+    {&__pyx_n_s_server, __pyx_k_server, sizeof(__pyx_k_server), 0, 0, 1, 1},
+    {&__pyx_n_s_server_call_tracer, __pyx_k_server_call_tracer, sizeof(__pyx_k_server_call_tracer), 0, 0, 1, 1},
+    {&__pyx_n_s_server_certificate_config_ssl, __pyx_k_server_certificate_config_ssl, sizeof(__pyx_k_server_certificate_config_ssl), 0, 0, 1, 1},
+    {&__pyx_n_s_server_credentials, __pyx_k_server_credentials, sizeof(__pyx_k_server_credentials), 0, 0, 1, 1},
+    {&__pyx_n_s_server_credentials_alts, __pyx_k_server_credentials_alts, sizeof(__pyx_k_server_credentials_alts), 0, 0, 1, 1},
+    {&__pyx_n_s_server_credentials_local, __pyx_k_server_credentials_local, sizeof(__pyx_k_server_credentials_local), 0, 0, 1, 1},
+    {&__pyx_n_s_server_credentials_ssl, __pyx_k_server_credentials_ssl, sizeof(__pyx_k_server_credentials_ssl), 0, 0, 1, 1},
+    {&__pyx_n_s_server_credentials_ssl_dynamic_c, __pyx_k_server_credentials_ssl_dynamic_c, sizeof(__pyx_k_server_credentials_ssl_dynamic_c), 0, 0, 1, 1},
+    {&__pyx_n_s_server_id, __pyx_k_server_id, sizeof(__pyx_k_server_id), 0, 0, 1, 1},
+    {&__pyx_n_s_server_main_loop, __pyx_k_server_main_loop, sizeof(__pyx_k_server_main_loop), 0, 0, 1, 1},
+    {&__pyx_kp_s_server_must_be_started_and_not_s, __pyx_k_server_must_be_started_and_not_s, sizeof(__pyx_k_server_must_be_started_and_not_s), 0, 0, 1, 0},
+    {&__pyx_n_s_server_queue, __pyx_k_server_queue, sizeof(__pyx_k_server_queue), 0, 0, 1, 1},
+    {&__pyx_kp_s_server_queue_must_be_a_registere, __pyx_k_server_queue_must_be_a_registere, sizeof(__pyx_k_server_queue_must_be_a_registere), 0, 0, 1, 0},
+    {&__pyx_n_s_server_started, __pyx_k_server_started, sizeof(__pyx_k_server_started), 0, 0, 1, 1},
+    {&__pyx_n_s_service, __pyx_k_service, sizeof(__pyx_k_service), 0, 0, 1, 1},
+    {&__pyx_n_s_service_accounts, __pyx_k_service_accounts, sizeof(__pyx_k_service_accounts), 0, 0, 1, 1},
+    {&__pyx_n_s_servicer_context, __pyx_k_servicer_context, sizeof(__pyx_k_servicer_context), 0, 0, 1, 1},
+    {&__pyx_n_s_serving_task_crash_handler, __pyx_k_serving_task_crash_handler, sizeof(__pyx_k_serving_task_crash_handler), 0, 0, 1, 1},
+    {&__pyx_n_s_setDaemon, __pyx_k_setDaemon, sizeof(__pyx_k_setDaemon), 0, 0, 1, 1},
+    {&__pyx_n_s_set_async_callback_func, __pyx_k_set_async_callback_func, sizeof(__pyx_k_set_async_callback_func), 0, 0, 1, 1},
+    {&__pyx_n_s_set_census_context_on_call, __pyx_k_set_census_context_on_call, sizeof(__pyx_k_set_census_context_on_call), 0, 0, 1, 1},
+    {&__pyx_n_s_set_code, __pyx_k_set_code, sizeof(__pyx_k_set_code), 0, 0, 1, 1},
+    {&__pyx_n_s_set_compression, __pyx_k_set_compression, sizeof(__pyx_k_set_compression), 0, 0, 1, 1},
+    {&__pyx_n_s_set_credentials, __pyx_k_set_credentials, sizeof(__pyx_k_set_credentials), 0, 0, 1, 1},
+    {&__pyx_n_s_set_details, __pyx_k_set_details, sizeof(__pyx_k_set_details), 0, 0, 1, 1},
+    {&__pyx_n_s_set_exception, __pyx_k_set_exception, sizeof(__pyx_k_set_exception), 0, 0, 1, 1},
+    {&__pyx_n_s_set_instrumentation_context_on_c, __pyx_k_set_instrumentation_context_on_c, sizeof(__pyx_k_set_instrumentation_context_on_c), 0, 0, 1, 1},
+    {&__pyx_n_s_set_internal_error, __pyx_k_set_internal_error, sizeof(__pyx_k_set_internal_error), 0, 0, 1, 1},
+    {&__pyx_n_s_set_name, __pyx_k_set_name, sizeof(__pyx_k_set_name), 0, 0, 1, 1},
+    {&__pyx_n_s_set_result, __pyx_k_set_result, sizeof(__pyx_k_set_result), 0, 0, 1, 1},
+    {&__pyx_n_s_set_server_call_tracer_factory, __pyx_k_set_server_call_tracer_factory, sizeof(__pyx_k_set_server_call_tracer_factory), 0, 0, 1, 1},
+    {&__pyx_n_s_set_trailing_metadata, __pyx_k_set_trailing_metadata, sizeof(__pyx_k_set_trailing_metadata), 0, 0, 1, 1},
+    {&__pyx_n_s_setblocking, __pyx_k_setblocking, sizeof(__pyx_k_setblocking), 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_shield, __pyx_k_shield, sizeof(__pyx_k_shield), 0, 0, 1, 1},
+    {&__pyx_n_s_shutdown, __pyx_k_shutdown, sizeof(__pyx_k_shutdown), 0, 0, 1, 1},
+    {&__pyx_n_s_shutdown_await_next_greenlet, __pyx_k_shutdown_await_next_greenlet, sizeof(__pyx_k_shutdown_await_next_greenlet), 0, 0, 1, 1},
+    {&__pyx_n_s_shutdown_cq, __pyx_k_shutdown_cq, sizeof(__pyx_k_shutdown_cq), 0, 0, 1, 1},
+    {&__pyx_n_s_shutdown_grpc_aio, __pyx_k_shutdown_grpc_aio, sizeof(__pyx_k_shutdown_grpc_aio), 0, 0, 1, 1},
+    {&__pyx_n_s_shutting_down_server, __pyx_k_shutting_down_server, sizeof(__pyx_k_shutting_down_server), 0, 0, 1, 1},
+    {&__pyx_n_s_simplefilter, __pyx_k_simplefilter, sizeof(__pyx_k_simplefilter), 0, 0, 1, 1},
+    {&__pyx_n_s_sleep, __pyx_k_sleep, sizeof(__pyx_k_sleep), 0, 0, 1, 1},
+    {&__pyx_n_s_socket, __pyx_k_socket, sizeof(__pyx_k_socket), 0, 0, 1, 1},
+    {&__pyx_n_s_socket_id, __pyx_k_socket_id, sizeof(__pyx_k_socket_id), 0, 0, 1, 1},
+    {&__pyx_n_s_socketpair, __pyx_k_socketpair, sizeof(__pyx_k_socketpair), 0, 0, 1, 1},
+    {&__pyx_n_s_span_id, __pyx_k_span_id, sizeof(__pyx_k_span_id), 0, 0, 1, 1},
+    {&__pyx_n_s_spawn, __pyx_k_spawn, sizeof(__pyx_k_spawn), 0, 0, 1, 1},
+    {&__pyx_n_s_spawn_callback_async, __pyx_k_spawn_callback_async, sizeof(__pyx_k_spawn_callback_async), 0, 0, 1, 1},
+    {&__pyx_n_s_spawn_callback_in_thread, __pyx_k_spawn_callback_in_thread, sizeof(__pyx_k_spawn_callback_in_thread), 0, 0, 1, 1},
+    {&__pyx_n_s_spawn_greenlets, __pyx_k_spawn_greenlets, sizeof(__pyx_k_spawn_greenlets), 0, 0, 1, 1},
+    {&__pyx_n_s_spec, __pyx_k_spec, sizeof(__pyx_k_spec), 0, 0, 1, 1},
+    {&__pyx_kp_s_src_python_grpcio_grpc__cython, __pyx_k_src_python_grpcio_grpc__cython, sizeof(__pyx_k_src_python_grpcio_grpc__cython), 0, 0, 1, 0},
+    {&__pyx_kp_s_src_python_grpcio_grpc__cython_10, __pyx_k_src_python_grpcio_grpc__cython_10, sizeof(__pyx_k_src_python_grpcio_grpc__cython_10), 0, 0, 1, 0},
+    {&__pyx_kp_s_src_python_grpcio_grpc__cython_11, __pyx_k_src_python_grpcio_grpc__cython_11, sizeof(__pyx_k_src_python_grpcio_grpc__cython_11), 0, 0, 1, 0},
+    {&__pyx_kp_s_src_python_grpcio_grpc__cython_12, __pyx_k_src_python_grpcio_grpc__cython_12, sizeof(__pyx_k_src_python_grpcio_grpc__cython_12), 0, 0, 1, 0},
+    {&__pyx_kp_s_src_python_grpcio_grpc__cython_13, __pyx_k_src_python_grpcio_grpc__cython_13, sizeof(__pyx_k_src_python_grpcio_grpc__cython_13), 0, 0, 1, 0},
+    {&__pyx_kp_s_src_python_grpcio_grpc__cython_14, __pyx_k_src_python_grpcio_grpc__cython_14, sizeof(__pyx_k_src_python_grpcio_grpc__cython_14), 0, 0, 1, 0},
+    {&__pyx_kp_s_src_python_grpcio_grpc__cython_15, __pyx_k_src_python_grpcio_grpc__cython_15, sizeof(__pyx_k_src_python_grpcio_grpc__cython_15), 0, 0, 1, 0},
+    {&__pyx_kp_s_src_python_grpcio_grpc__cython_16, __pyx_k_src_python_grpcio_grpc__cython_16, sizeof(__pyx_k_src_python_grpcio_grpc__cython_16), 0, 0, 1, 0},
+    {&__pyx_kp_s_src_python_grpcio_grpc__cython_17, __pyx_k_src_python_grpcio_grpc__cython_17, sizeof(__pyx_k_src_python_grpcio_grpc__cython_17), 0, 0, 1, 0},
+    {&__pyx_kp_s_src_python_grpcio_grpc__cython_18, __pyx_k_src_python_grpcio_grpc__cython_18, sizeof(__pyx_k_src_python_grpcio_grpc__cython_18), 0, 0, 1, 0},
+    {&__pyx_kp_s_src_python_grpcio_grpc__cython_19, __pyx_k_src_python_grpcio_grpc__cython_19, sizeof(__pyx_k_src_python_grpcio_grpc__cython_19), 0, 0, 1, 0},
+    {&__pyx_kp_s_src_python_grpcio_grpc__cython_2, __pyx_k_src_python_grpcio_grpc__cython_2, sizeof(__pyx_k_src_python_grpcio_grpc__cython_2), 0, 0, 1, 0},
+    {&__pyx_kp_s_src_python_grpcio_grpc__cython_20, __pyx_k_src_python_grpcio_grpc__cython_20, sizeof(__pyx_k_src_python_grpcio_grpc__cython_20), 0, 0, 1, 0},
+    {&__pyx_kp_s_src_python_grpcio_grpc__cython_21, __pyx_k_src_python_grpcio_grpc__cython_21, sizeof(__pyx_k_src_python_grpcio_grpc__cython_21), 0, 0, 1, 0},
+    {&__pyx_kp_s_src_python_grpcio_grpc__cython_22, __pyx_k_src_python_grpcio_grpc__cython_22, sizeof(__pyx_k_src_python_grpcio_grpc__cython_22), 0, 0, 1, 0},
+    {&__pyx_kp_s_src_python_grpcio_grpc__cython_23, __pyx_k_src_python_grpcio_grpc__cython_23, sizeof(__pyx_k_src_python_grpcio_grpc__cython_23), 0, 0, 1, 0},
+    {&__pyx_kp_s_src_python_grpcio_grpc__cython_3, __pyx_k_src_python_grpcio_grpc__cython_3, sizeof(__pyx_k_src_python_grpcio_grpc__cython_3), 0, 0, 1, 0},
+    {&__pyx_kp_s_src_python_grpcio_grpc__cython_4, __pyx_k_src_python_grpcio_grpc__cython_4, sizeof(__pyx_k_src_python_grpcio_grpc__cython_4), 0, 0, 1, 0},
+    {&__pyx_kp_s_src_python_grpcio_grpc__cython_5, __pyx_k_src_python_grpcio_grpc__cython_5, sizeof(__pyx_k_src_python_grpcio_grpc__cython_5), 0, 0, 1, 0},
+    {&__pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_k_src_python_grpcio_grpc__cython_6, sizeof(__pyx_k_src_python_grpcio_grpc__cython_6), 0, 0, 1, 0},
+    {&__pyx_kp_s_src_python_grpcio_grpc__cython_7, __pyx_k_src_python_grpcio_grpc__cython_7, sizeof(__pyx_k_src_python_grpcio_grpc__cython_7), 0, 0, 1, 0},
+    {&__pyx_kp_s_src_python_grpcio_grpc__cython_8, __pyx_k_src_python_grpcio_grpc__cython_8, sizeof(__pyx_k_src_python_grpcio_grpc__cython_8), 0, 0, 1, 0},
+    {&__pyx_kp_s_src_python_grpcio_grpc__cython_9, __pyx_k_src_python_grpcio_grpc__cython_9, sizeof(__pyx_k_src_python_grpcio_grpc__cython_9), 0, 0, 1, 0},
+    {&__pyx_n_s_ssl_session_cache, __pyx_k_ssl_session_cache, sizeof(__pyx_k_ssl_session_cache), 0, 0, 1, 1},
+    {&__pyx_n_s_ssl_target_name_override, __pyx_k_ssl_target_name_override, sizeof(__pyx_k_ssl_target_name_override), 0, 0, 1, 1},
+    {&__pyx_n_s_start, __pyx_k_start, sizeof(__pyx_k_start), 0, 0, 1, 1},
+    {&__pyx_n_s_start_batch, __pyx_k_start_batch, sizeof(__pyx_k_start_batch), 0, 0, 1, 1},
+    {&__pyx_n_s_start_channel_id, __pyx_k_start_channel_id, sizeof(__pyx_k_start_channel_id), 0, 0, 1, 1},
+    {&__pyx_n_s_start_client_batch, __pyx_k_start_client_batch, sizeof(__pyx_k_start_client_batch), 0, 0, 1, 1},
+    {&__pyx_n_s_start_server_batch, __pyx_k_start_server_batch, sizeof(__pyx_k_start_server_batch), 0, 0, 1, 1},
+    {&__pyx_n_s_start_server_id, __pyx_k_start_server_id, sizeof(__pyx_k_start_server_id), 0, 0, 1, 1},
+    {&__pyx_n_s_start_shutting_down, __pyx_k_start_shutting_down, sizeof(__pyx_k_start_shutting_down), 0, 0, 1, 1},
+    {&__pyx_n_s_start_socket_id, __pyx_k_start_socket_id, sizeof(__pyx_k_start_socket_id), 0, 0, 1, 1},
+    {&__pyx_n_s_started_tag, __pyx_k_started_tag, sizeof(__pyx_k_started_tag), 0, 0, 1, 1},
+    {&__pyx_n_s_started_tags, __pyx_k_started_tags, sizeof(__pyx_k_started_tags), 0, 0, 1, 1},
+    {&__pyx_n_s_state, __pyx_k_state, sizeof(__pyx_k_state), 0, 0, 1, 1},
+    {&__pyx_n_s_status, __pyx_k_status, sizeof(__pyx_k_status), 0, 0, 1, 1},
+    {&__pyx_n_s_status_code, __pyx_k_status_code, sizeof(__pyx_k_status_code), 0, 0, 1, 1},
+    {&__pyx_n_s_status_task, __pyx_k_status_task, sizeof(__pyx_k_status_task), 0, 0, 1, 1},
+    {&__pyx_n_s_stored_ctx, __pyx_k_stored_ctx, sizeof(__pyx_k_stored_ctx), 0, 0, 1, 1},
+    {&__pyx_n_s_str, __pyx_k_str, sizeof(__pyx_k_str), 0, 0, 1, 1},
+    {&__pyx_n_s_str_2, __pyx_k_str_2, sizeof(__pyx_k_str_2), 0, 0, 1, 1},
+    {&__pyx_n_s_stream_handler, __pyx_k_stream_handler, sizeof(__pyx_k_stream_handler), 0, 0, 1, 1},
+    {&__pyx_n_s_stream_stream, __pyx_k_stream_stream, sizeof(__pyx_k_stream_stream), 0, 0, 1, 1},
+    {&__pyx_n_s_stream_unary, __pyx_k_stream_unary, sizeof(__pyx_k_stream_unary), 0, 0, 1, 1},
+    {&__pyx_kp_s_stringsource, __pyx_k_stringsource, sizeof(__pyx_k_stringsource), 0, 0, 1, 0},
+    {&__pyx_n_s_subchannel_id, __pyx_k_subchannel_id, sizeof(__pyx_k_subchannel_id), 0, 0, 1, 1},
+    {&__pyx_n_s_success, __pyx_k_success, sizeof(__pyx_k_success), 0, 0, 1, 1},
+    {&__pyx_n_s_super, __pyx_k_super, sizeof(__pyx_k_super), 0, 0, 1, 1},
+    {&__pyx_n_s_sync_servicer_context, __pyx_k_sync_servicer_context, sizeof(__pyx_k_sync_servicer_context), 0, 0, 1, 1},
+    {&__pyx_n_s_sys, __pyx_k_sys, sizeof(__pyx_k_sys), 0, 0, 1, 1},
+    {&__pyx_n_s_t, __pyx_k_t, sizeof(__pyx_k_t), 0, 0, 1, 1},
+    {&__pyx_n_s_tag, __pyx_k_tag, sizeof(__pyx_k_tag), 0, 0, 1, 1},
+    {&__pyx_n_s_target, __pyx_k_target, sizeof(__pyx_k_target), 0, 0, 1, 1},
+    {&__pyx_n_s_task, __pyx_k_task, sizeof(__pyx_k_task), 0, 0, 1, 1},
+    {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1},
+    {&__pyx_kp_s_the_server_has_already_started, __pyx_k_the_server_has_already_started, sizeof(__pyx_k_the_server_has_already_started), 0, 0, 1, 0},
+    {&__pyx_kp_s_the_server_hasn_t_started_yet, __pyx_k_the_server_hasn_t_started_yet, sizeof(__pyx_k_the_server_hasn_t_started_yet), 0, 0, 1, 0},
+    {&__pyx_kp_s_the_server_must_be_shutting_down, __pyx_k_the_server_must_be_shutting_down, sizeof(__pyx_k_the_server_must_be_shutting_down), 0, 0, 1, 0},
+    {&__pyx_n_s_thread, __pyx_k_thread, sizeof(__pyx_k_thread), 0, 0, 1, 1},
+    {&__pyx_n_s_thread_pool, __pyx_k_thread_pool, sizeof(__pyx_k_thread_pool), 0, 0, 1, 1},
+    {&__pyx_n_s_threading, __pyx_k_threading, sizeof(__pyx_k_threading), 0, 0, 1, 1},
+    {&__pyx_n_s_threadpool, __pyx_k_threadpool, sizeof(__pyx_k_threadpool), 0, 0, 1, 1},
+    {&__pyx_n_s_throw, __pyx_k_throw, sizeof(__pyx_k_throw), 0, 0, 1, 1},
+    {&__pyx_n_s_time, __pyx_k_time, sizeof(__pyx_k_time), 0, 0, 1, 1},
+    {&__pyx_n_s_time_remaining, __pyx_k_time_remaining, sizeof(__pyx_k_time_remaining), 0, 0, 1, 1},
+    {&__pyx_n_s_timeout, __pyx_k_timeout, sizeof(__pyx_k_timeout), 0, 0, 1, 1},
+    {&__pyx_n_s_timeout_secs, __pyx_k_timeout_secs, sizeof(__pyx_k_timeout_secs), 0, 0, 1, 1},
+    {&__pyx_n_s_to_call, __pyx_k_to_call, sizeof(__pyx_k_to_call), 0, 0, 1, 1},
+    {&__pyx_n_s_to_channel_arg, __pyx_k_to_channel_arg, sizeof(__pyx_k_to_channel_arg), 0, 0, 1, 1},
+    {&__pyx_n_s_too_many_operations, __pyx_k_too_many_operations, sizeof(__pyx_k_too_many_operations), 0, 0, 1, 1},
+    {&__pyx_n_s_trace_id, __pyx_k_trace_id, sizeof(__pyx_k_trace_id), 0, 0, 1, 1},
+    {&__pyx_n_s_traceback, __pyx_k_traceback, sizeof(__pyx_k_traceback), 0, 0, 1, 1},
+    {&__pyx_n_s_tracing_enabled, __pyx_k_tracing_enabled, sizeof(__pyx_k_tracing_enabled), 0, 0, 1, 1},
+    {&__pyx_n_s_trailing_metadata, __pyx_k_trailing_metadata, sizeof(__pyx_k_trailing_metadata), 0, 0, 1, 1},
+    {&__pyx_n_s_transient_failure, __pyx_k_transient_failure, sizeof(__pyx_k_transient_failure), 0, 0, 1, 1},
+    {&__pyx_n_s_true, __pyx_k_true, sizeof(__pyx_k_true), 0, 0, 1, 1},
+    {&__pyx_n_s_try_to_connect, __pyx_k_try_to_connect, sizeof(__pyx_k_try_to_connect), 0, 0, 1, 1},
+    {&__pyx_n_s_type, __pyx_k_type, sizeof(__pyx_k_type), 0, 0, 1, 1},
+    {&__pyx_n_s_typing, __pyx_k_typing, sizeof(__pyx_k_typing), 0, 0, 1, 1},
+    {&__pyx_n_s_uds, __pyx_k_uds, sizeof(__pyx_k_uds), 0, 0, 1, 1},
+    {&__pyx_n_s_unary_handler, __pyx_k_unary_handler, sizeof(__pyx_k_unary_handler), 0, 0, 1, 1},
+    {&__pyx_n_s_unary_stream, __pyx_k_unary_stream, sizeof(__pyx_k_unary_stream), 0, 0, 1, 1},
+    {&__pyx_n_s_unary_unary, __pyx_k_unary_unary, sizeof(__pyx_k_unary_unary), 0, 0, 1, 1},
+    {&__pyx_n_s_unauthenticated, __pyx_k_unauthenticated, sizeof(__pyx_k_unauthenticated), 0, 0, 1, 1},
+    {&__pyx_n_s_unavailable, __pyx_k_unavailable, sizeof(__pyx_k_unavailable), 0, 0, 1, 1},
+    {&__pyx_n_s_unimplemented, __pyx_k_unimplemented, sizeof(__pyx_k_unimplemented), 0, 0, 1, 1},
+    {&__pyx_n_s_uninstall_context, __pyx_k_uninstall_context, sizeof(__pyx_k_uninstall_context), 0, 0, 1, 1},
+    {&__pyx_n_s_unknown, __pyx_k_unknown, sizeof(__pyx_k_unknown), 0, 0, 1, 1},
+    {&__pyx_n_s_unused_future, __pyx_k_unused_future, sizeof(__pyx_k_unused_future), 0, 0, 1, 1},
+    {&__pyx_n_s_unused_task, __pyx_k_unused_task, sizeof(__pyx_k_unused_task), 0, 0, 1, 1},
+    {&__pyx_n_s_update, __pyx_k_update, sizeof(__pyx_k_update), 0, 0, 1, 1},
+    {&__pyx_n_s_upper, __pyx_k_upper, sizeof(__pyx_k_upper), 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_used_mask, __pyx_k_used_mask, sizeof(__pyx_k_used_mask), 0, 0, 1, 1},
+    {&__pyx_n_s_user_tag, __pyx_k_user_tag, sizeof(__pyx_k_user_tag), 0, 0, 1, 1},
+    {&__pyx_n_s_utf8, __pyx_k_utf8, sizeof(__pyx_k_utf8), 0, 0, 1, 1},
+    {&__pyx_kp_s_utf_8, __pyx_k_utf_8, sizeof(__pyx_k_utf_8), 0, 0, 1, 0},
+    {&__pyx_n_s_value, __pyx_k_value, sizeof(__pyx_k_value), 0, 0, 1, 1},
+    {&__pyx_n_s_values, __pyx_k_values, sizeof(__pyx_k_values), 0, 0, 1, 1},
+    {&__pyx_n_s_wait, __pyx_k_wait, sizeof(__pyx_k_wait), 0, 0, 1, 1},
+    {&__pyx_n_s_wait_for, __pyx_k_wait_for, sizeof(__pyx_k_wait_for), 0, 0, 1, 1},
+    {&__pyx_n_s_wait_for_ready, __pyx_k_wait_for_ready, sizeof(__pyx_k_wait_for_ready), 0, 0, 1, 1},
+    {&__pyx_n_s_wait_for_ready_explicitly_set, __pyx_k_wait_for_ready_explicitly_set, sizeof(__pyx_k_wait_for_ready_explicitly_set), 0, 0, 1, 1},
+    {&__pyx_n_s_wait_for_termination, __pyx_k_wait_for_termination, sizeof(__pyx_k_wait_for_termination), 0, 0, 1, 1},
+    {&__pyx_n_s_wait_time, __pyx_k_wait_time, sizeof(__pyx_k_wait_time), 0, 0, 1, 1},
+    {&__pyx_n_s_warning, __pyx_k_warning, sizeof(__pyx_k_warning), 0, 0, 1, 1},
+    {&__pyx_n_s_warnings, __pyx_k_warnings, sizeof(__pyx_k_warnings), 0, 0, 1, 1},
+    {&__pyx_n_s_watch_connectivity_state, __pyx_k_watch_connectivity_state, sizeof(__pyx_k_watch_connectivity_state), 0, 0, 1, 1},
+    {&__pyx_n_s_wrap, __pyx_k_wrap, sizeof(__pyx_k_wrap), 0, 0, 1, 1},
+    {&__pyx_n_s_wrapper, __pyx_k_wrapper, sizeof(__pyx_k_wrapper), 0, 0, 1, 1},
+    {&__pyx_n_s_write, __pyx_k_write, sizeof(__pyx_k_write), 0, 0, 1, 1},
+    {&__pyx_n_s_write_flag, __pyx_k_write_flag, sizeof(__pyx_k_write_flag), 0, 0, 1, 1},
+    {&__pyx_n_s_xds, __pyx_k_xds, sizeof(__pyx_k_xds), 0, 0, 1, 1},
+    {&__pyx_n_s_xds_server_credentials, __pyx_k_xds_server_credentials, sizeof(__pyx_k_xds_server_credentials), 0, 0, 1, 1},
+    {&__pyx_n_s_yes, __pyx_k_yes, sizeof(__pyx_k_yes), 0, 0, 1, 1},
+    {&__pyx_n_s_yield_to_queue, __pyx_k_yield_to_queue, sizeof(__pyx_k_yield_to_queue), 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_ImportError = __Pyx_GetBuiltinName(__pyx_n_s_ImportError); if (!__pyx_builtin_ImportError) __PYX_ERR(0, 28, __pyx_L1_error)
+  __pyx_builtin_object = __Pyx_GetBuiltinName(__pyx_n_s_object); if (!__pyx_builtin_object) __PYX_ERR(1, 102, __pyx_L1_error)
+  __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(2, 24, __pyx_L1_error)
+  __pyx_builtin_UnicodeDecodeError = __Pyx_GetBuiltinName(__pyx_n_s_UnicodeDecodeError); if (!__pyx_builtin_UnicodeDecodeError) __PYX_ERR(2, 49, __pyx_L1_error)
+  __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(3, 74, __pyx_L1_error)
+  __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(4, 26, __pyx_L1_error)
+  __pyx_builtin_NotImplementedError = __Pyx_GetBuiltinName(__pyx_n_s_NotImplementedError); if (!__pyx_builtin_NotImplementedError) __PYX_ERR(5, 34, __pyx_L1_error)
+  __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(5, 252, __pyx_L1_error)
+  __pyx_builtin_KeyError = __Pyx_GetBuiltinName(__pyx_n_s_KeyError); if (!__pyx_builtin_KeyError) __PYX_ERR(6, 31, __pyx_L1_error)
+  __pyx_builtin_AttributeError = __Pyx_GetBuiltinName(__pyx_n_s_AttributeError); if (!__pyx_builtin_AttributeError) __PYX_ERR(6, 31, __pyx_L1_error)
+  __pyx_builtin_RuntimeError = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeError); if (!__pyx_builtin_RuntimeError) __PYX_ERR(6, 113, __pyx_L1_error)
+  __pyx_builtin_DeprecationWarning = __Pyx_GetBuiltinName(__pyx_n_s_DeprecationWarning); if (!__pyx_builtin_DeprecationWarning) __PYX_ERR(6, 188, __pyx_L1_error)
+  __pyx_builtin_AssertionError = __Pyx_GetBuiltinName(__pyx_n_s_AssertionError); if (!__pyx_builtin_AssertionError) __PYX_ERR(7, 108, __pyx_L1_error)
+  __pyx_builtin_id = __Pyx_GetBuiltinName(__pyx_n_s_id); if (!__pyx_builtin_id) __PYX_ERR(8, 58, __pyx_L1_error)
+  __pyx_builtin_KeyboardInterrupt = __Pyx_GetBuiltinName(__pyx_n_s_KeyboardInterrupt); if (!__pyx_builtin_KeyboardInterrupt) __PYX_ERR(9, 701, __pyx_L1_error)
+  __pyx_builtin_SystemExit = __Pyx_GetBuiltinName(__pyx_n_s_SystemExit); if (!__pyx_builtin_SystemExit) __PYX_ERR(9, 701, __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);
+
+  /* "cfunc.to_py":67
+ * @cname("__Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg")
+ * cdef object __Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg(object (*f)(_LatentEventArg) ):
+ *     def wrap(_LatentEventArg latent_event_arg):             # <<<<<<<<<<<<<<
+ *         """wrap(latent_event_arg: '_LatentEventArg')"""
+ *         return f(latent_event_arg)
+ */
+  __pyx_tuple_ = PyTuple_Pack(1, __pyx_n_s_latent_event_arg); if (unlikely(!__pyx_tuple_)) __PYX_ERR(10, 67, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple_);
+  __Pyx_GIVEREF(__pyx_tuple_);
+  __pyx_codeobj__2 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple_, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_wrap, 67, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__2)) __PYX_ERR(10, 67, __pyx_L1_error)
+  __pyx_codeobj__3 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_wrap, 67, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__3)) __PYX_ERR(10, 67, __pyx_L1_error)
+  __pyx_tuple__4 = PyTuple_Pack(2, __pyx_n_s_cb, __pyx_n_s_args); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(10, 67, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__4);
+  __Pyx_GIVEREF(__pyx_tuple__4);
+  __pyx_codeobj__5 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__4, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_wrap, 67, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__5)) __PYX_ERR(10, 67, __pyx_L1_error)
+  __pyx_codeobj__6 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_wrap, 67, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__6)) __PYX_ERR(10, 67, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":26
+ *   def _start_batch(self, operations, tag, retain_self):
+ *     if not self.is_valid:
+ *       raise ValueError("invalid call object cannot be used from Python")             # <<<<<<<<<<<<<<
+ *     cdef _BatchOperationTag batch_operation_tag = _BatchOperationTag(
+ *         tag, operations, self if retain_self else None)
+ */
+  __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_s_invalid_call_object_cannot_be_us); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(4, 26, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__8);
+  __Pyx_GIVEREF(__pyx_tuple__8);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":53
+ *       raise ValueError("invalid call object cannot be used from Python")
+ *     if (details is None) != (error_code == GRPC_STATUS__DO_NOT_USE):
+ *       raise ValueError("if error_code is specified, so must details "             # <<<<<<<<<<<<<<
+ *                        "(and vice-versa)")
+ *     cdef grpc_call_error result
+ */
+  __pyx_tuple__10 = PyTuple_Pack(1, __pyx_kp_s_if_error_code_is_specified_so_mu); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(4, 53, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__10);
+  __Pyx_GIVEREF(__pyx_tuple__10);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":85
+ *       if exclude_prefix in method_name:
+ *         return
+ *     with _observability.get_plugin() as plugin:             # <<<<<<<<<<<<<<
+ *       if not (plugin and plugin.observability_enabled):
+ *         return
+ */
+  __pyx_tuple__11 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(12, 85, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__11);
+  __Pyx_GIVEREF(__pyx_tuple__11);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":342
+ *   call_state = _CallState()
+ * 
+ *   def on_success(started_tags):             # <<<<<<<<<<<<<<
+ *     for started_tag in started_tags:
+ *       state.integrated_call_states[started_tag] = call_state
+ */
+  __pyx_tuple__12 = PyTuple_Pack(2, __pyx_n_s_started_tags, __pyx_n_s_started_tag); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(12, 342, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__12);
+  __Pyx_GIVEREF(__pyx_tuple__12);
+  __pyx_codeobj__13 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__12, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython, __pyx_n_s_on_success, 342, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__13)) __PYX_ERR(12, 342, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":385
+ * 
+ *   def next_event(self):
+ *     def on_success(tag):             # <<<<<<<<<<<<<<
+ *       _process_segregated_call_tag(
+ *         self._channel_state, self._call_state, self._c_completion_queue, tag)
+ */
+  __pyx_tuple__14 = PyTuple_Pack(1, __pyx_n_s_tag); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(12, 385, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__14);
+  __Pyx_GIVEREF(__pyx_tuple__14);
+  __pyx_codeobj__15 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__14, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython, __pyx_n_s_on_success, 385, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__15)) __PYX_ERR(12, 385, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":388
+ *       _process_segregated_call_tag(
+ *         self._channel_state, self._call_state, self._c_completion_queue, tag)
+ *     def on_failure():             # <<<<<<<<<<<<<<
+ *       self._call_state.due.clear()
+ *       with nogil:
+ */
+  __pyx_codeobj__16 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython, __pyx_n_s_on_failure, 388, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__16)) __PYX_ERR(12, 388, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":407
+ *   cdef grpc_completion_queue *c_completion_queue
+ * 
+ *   def on_success(started_tags):             # <<<<<<<<<<<<<<
+ *     state.segregated_call_states.add(call_state)
+ * 
+ */
+  __pyx_tuple__17 = PyTuple_Pack(1, __pyx_n_s_started_tags); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(12, 407, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__17);
+  __Pyx_GIVEREF(__pyx_tuple__17);
+  __pyx_codeobj__18 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__17, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython, __pyx_n_s_on_success, 407, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__18)) __PYX_ERR(12, 407, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":414
+ *       c_completion_queue = (grpc_completion_queue_create_for_next(NULL))
+ *     else:
+ *       raise ValueError('Cannot invoke RPC on closed channel!')             # <<<<<<<<<<<<<<
+ * 
+ *   try:
+ */
+  __pyx_tuple__19 = PyTuple_Pack(1, __pyx_kp_s_Cannot_invoke_RPC_on_closed_chan); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(12, 414, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__19);
+  __Pyx_GIVEREF(__pyx_tuple__19);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":537
+ * 
+ *   def next_call_event(self):
+ *     def on_success(tag):             # <<<<<<<<<<<<<<
+ *       if tag is not None:
+ *         _process_integrated_call_tag(self._state, tag)
+ */
+  __pyx_codeobj__20 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__14, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython, __pyx_n_s_on_success, 537, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__20)) __PYX_ERR(12, 537, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":47
+ *   cdef size_t metadata_count
+ *   cdef grpc_metadata *c_metadata
+ *   def callback(metadata, grpc_status_code status, bytes error_details):             # <<<<<<<<<<<<<<
+ *     cdef char* c_error_details = NULL
+ *     if error_details is not None:
+ */
+  __pyx_tuple__21 = PyTuple_Pack(4, __pyx_n_s_metadata, __pyx_n_s_status, __pyx_n_s_error_details, __pyx_n_s_c_error_details); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(5, 47, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__21);
+  __Pyx_GIVEREF(__pyx_tuple__21);
+  __pyx_codeobj__22 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 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_python_grpcio_grpc__cython_2, __pyx_n_s_callback, 47, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__22)) __PYX_ERR(5, 47, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":244
+ *   for pair in pem_key_cert_pairs:
+ *     if not isinstance(pair, SslPemKeyCertPair):
+ *       raise TypeError("expected pem_key_cert_pairs to be sequence of "             # <<<<<<<<<<<<<<
+ *                       "SslPemKeyCertPair")
+ *   cdef size_t c_ssl_pem_key_cert_pairs_count = len(pem_key_cert_pairs)
+ */
+  __pyx_tuple__23 = PyTuple_Pack(1, __pyx_kp_s_expected_pem_key_cert_pairs_to_b); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(5, 244, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__23);
+  __Pyx_GIVEREF(__pyx_tuple__23);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":300
+ *                                                bint force_client_auth):
+ *   if not isinstance(initial_cert_config, grpc.ServerCertificateConfiguration):
+ *     raise TypeError(             # <<<<<<<<<<<<<<
+ *         'initial_cert_config must be a grpc.ServerCertificateConfiguration')
+ *   if not callable(cert_config_fetcher):
+ */
+  __pyx_tuple__24 = PyTuple_Pack(1, __pyx_kp_s_initial_cert_config_must_be_a_gr); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(5, 300, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__24);
+  __Pyx_GIVEREF(__pyx_tuple__24);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":303
+ *         'initial_cert_config must be a grpc.ServerCertificateConfiguration')
+ *   if not callable(cert_config_fetcher):
+ *     raise TypeError('cert_config_fetcher must be callable')             # <<<<<<<<<<<<<<
+ *   cdef ServerCredentials credentials = ServerCredentials()
+ *   credentials.initial_cert_config = initial_cert_config
+ */
+  __pyx_tuple__25 = PyTuple_Pack(1, __pyx_kp_s_cert_config_fetcher_must_be_call); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(5, 303, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__25);
+  __Pyx_GIVEREF(__pyx_tuple__25);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":323
+ *   cdef ServerCertificateConfig cert_config = None
+ *   if not user_data:
+ *     raise ValueError('internal error: user_data must be specified')             # <<<<<<<<<<<<<<
+ *   credentials = <ServerCredentials>user_data
+ *   if not credentials.initial_cert_config_fetched:
+ */
+  __pyx_tuple__26 = PyTuple_Pack(1, __pyx_kp_s_internal_error_user_data_must_be); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(5, 323, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__26);
+  __Pyx_GIVEREF(__pyx_tuple__26);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":437
+ *     self._call_creds = call_creds.c()
+ *     if self._call_creds == NULL:
+ *       raise ValueError("Call credentials may not be NULL.")             # <<<<<<<<<<<<<<
+ * 
+ *   cdef grpc_channel_credentials *c(self) except *:
+ */
+  __pyx_tuple__27 = PyTuple_Pack(1, __pyx_kp_s_Call_credentials_may_not_be_NULL); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(5, 437, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__27);
+  __Pyx_GIVEREF(__pyx_tuple__27);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":122
+ *   def clear(self):
+ *     if not self.is_shutting_down:
+ *       raise ValueError('queue must be shutting down to be cleared')             # <<<<<<<<<<<<<<
+ *     while self.poll().type != GRPC_QUEUE_SHUTDOWN:
+ *       pass
+ */
+  __pyx_tuple__28 = PyTuple_Pack(1, __pyx_kp_s_queue_must_be_shutting_down_to_b); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(15, 122, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__28);
+  __Pyx_GIVEREF(__pyx_tuple__28);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":40
+ *       CompletionQueue server_queue not None, tag):
+ *     if not self.is_started or self.is_shutting_down:
+ *       raise ValueError("server must be started and not shutting down")             # <<<<<<<<<<<<<<
+ *     if server_queue not in self.registered_completion_queues:
+ *       raise ValueError("server_queue must be a registered completion queue")
+ */
+  __pyx_tuple__29 = PyTuple_Pack(1, __pyx_kp_s_server_must_be_started_and_not_s); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(23, 40, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__29);
+  __Pyx_GIVEREF(__pyx_tuple__29);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":42
+ *       raise ValueError("server must be started and not shutting down")
+ *     if server_queue not in self.registered_completion_queues:
+ *       raise ValueError("server_queue must be a registered completion queue")             # <<<<<<<<<<<<<<
+ *     cdef _RequestCallTag request_call_tag = _RequestCallTag(tag)
+ *     request_call_tag.prepare()
+ */
+  __pyx_tuple__30 = PyTuple_Pack(1, __pyx_kp_s_server_queue_must_be_a_registere); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(23, 42, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__30);
+  __Pyx_GIVEREF(__pyx_tuple__30);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":56
+ *       self, CompletionQueue queue not None):
+ *     if self.is_started:
+ *       raise ValueError("cannot register completion queues after start")             # <<<<<<<<<<<<<<
+ *     with nogil:
+ *       grpc_server_register_completion_queue(
+ */
+  __pyx_tuple__31 = PyTuple_Pack(1, __pyx_kp_s_cannot_register_completion_queue); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(23, 56, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__31);
+  __Pyx_GIVEREF(__pyx_tuple__31);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":71
+ *     """
+ *     if self.is_started:
+ *       raise ValueError("the server has already started")             # <<<<<<<<<<<<<<
+ *     if backup_queue:
+ *       self.backup_shutdown_queue = CompletionQueue(shutdown_cq=True)
+ */
+  __pyx_tuple__32 = PyTuple_Pack(1, __pyx_kp_s_the_server_has_already_started); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(23, 71, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__32);
+  __Pyx_GIVEREF(__pyx_tuple__32);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":112
+ *   def shutdown(self, CompletionQueue queue not None, tag):
+ *     if queue.is_shutting_down:
+ *       raise ValueError("queue must be live")             # <<<<<<<<<<<<<<
+ *     elif not self.is_started:
+ *       raise ValueError("the server hasn't started yet")
+ */
+  __pyx_tuple__33 = PyTuple_Pack(1, __pyx_kp_s_queue_must_be_live); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(23, 112, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__33);
+  __Pyx_GIVEREF(__pyx_tuple__33);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":114
+ *       raise ValueError("queue must be live")
+ *     elif not self.is_started:
+ *       raise ValueError("the server hasn't started yet")             # <<<<<<<<<<<<<<
+ *     elif self.is_shutting_down:
+ *       return
+ */
+  __pyx_tuple__34 = PyTuple_Pack(1, __pyx_kp_s_the_server_hasn_t_started_yet); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(23, 114, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__34);
+  __Pyx_GIVEREF(__pyx_tuple__34);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":118
+ *       return
+ *     elif queue not in self.registered_completion_queues:
+ *       raise ValueError("expected registered completion queue")             # <<<<<<<<<<<<<<
+ *     else:
+ *       self._c_shutdown(queue, tag)
+ */
+  __pyx_tuple__35 = PyTuple_Pack(1, __pyx_kp_s_expected_registered_completion_q); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(23, 118, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__35);
+  __Pyx_GIVEREF(__pyx_tuple__35);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/_hooks.pyx.pxi":17
+ * 
+ * cdef object _custom_op_on_c_call(int op, grpc_call *call):
+ *   raise NotImplementedError("No custom hooks are implemented")             # <<<<<<<<<<<<<<
+ * 
+ * def install_context_from_request_call_event(RequestCallEvent event):
+ */
+  __pyx_tuple__36 = PyTuple_Pack(1, __pyx_kp_s_No_custom_hooks_are_implemented); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(26, 17, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__36);
+  __Pyx_GIVEREF(__pyx_tuple__36);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":99
+ *       break
+ *     fn = to_call[0]
+ *     args = to_call[1:]             # <<<<<<<<<<<<<<
+ *     fn(*args)
+ * 
+ */
+  __pyx_slice__37 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__37)) __PYX_ERR(28, 99, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__37);
+  __Pyx_GIVEREF(__pyx_slice__37);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":123
+ * 
+ *   import gevent
+ *   import gevent.pool             # <<<<<<<<<<<<<<
+ * 
+ *   gevent_hub = gevent.hub
+ */
+  __pyx_tuple__39 = PyTuple_Pack(2, __pyx_n_s_gevent, __pyx_n_s_pool); if (unlikely(!__pyx_tuple__39)) __PYX_ERR(28, 123, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__39);
+  __Pyx_GIVEREF(__pyx_tuple__39);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":52
+ *     def _run_with_context(target):
+ *         ctx = contextvars.copy_context()
+ *         def _run(*args):             # <<<<<<<<<<<<<<
+ *             ctx.run(target, *args)
+ *         return _run
+ */
+  __pyx_tuple__40 = PyTuple_Pack(1, __pyx_n_s_args); if (unlikely(!__pyx_tuple__40)) __PYX_ERR(29, 52, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__40);
+  __Pyx_GIVEREF(__pyx_tuple__40);
+  __pyx_codeobj__41 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__40, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_3, __pyx_n_s_run_2, 52, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__41)) __PYX_ERR(29, 52, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":57
+ * else:
+ *     def _run_with_context(target):
+ *         def _run(*args):             # <<<<<<<<<<<<<<
+ *             target(*args)
+ *         return _run
+ */
+  __pyx_codeobj__42 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__40, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_3, __pyx_n_s_run_2, 57, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__42)) __PYX_ERR(29, 57, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":105
+ *     def __init__(self, target, args=()):
+ *         if _GRPC_ENABLE_FORK_SUPPORT:
+ *             def managed_target(*args):             # <<<<<<<<<<<<<<
+ *                 try:
+ *                     target(*args)
+ */
+  __pyx_codeobj__43 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__40, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_4, __pyx_n_s_managed_target, 105, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__43)) __PYX_ERR(1, 105, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":153
+ *     queue = asyncio.Queue(maxsize=1)
+ * 
+ *     def yield_to_queue():             # <<<<<<<<<<<<<<
+ *         try:
+ *             for item in gen:
+ */
+  __pyx_tuple__46 = PyTuple_Pack(1, __pyx_n_s_item); if (unlikely(!__pyx_tuple__46)) __PYX_ERR(6, 153, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__46);
+  __Pyx_GIVEREF(__pyx_tuple__46);
+  __pyx_codeobj__47 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__46, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_5, __pyx_n_s_yield_to_queue, 153, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__47)) __PYX_ERR(6, 153, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":188
+ *             with warnings.catch_warnings():
+ *                 # Convert DeprecationWarning to errors so we can capture them with except
+ *                 warnings.simplefilter("error", DeprecationWarning)             # <<<<<<<<<<<<<<
+ *                 try:
+ *                     return asyncio.get_event_loop_policy().get_event_loop()
+ */
+  __pyx_tuple__48 = PyTuple_Pack(2, __pyx_n_s_error, __pyx_builtin_DeprecationWarning); if (unlikely(!__pyx_tuple__48)) __PYX_ERR(6, 188, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__48);
+  __Pyx_GIVEREF(__pyx_tuple__48);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":108
+ *             if event.type == GRPC_QUEUE_TIMEOUT:
+ *                 with gil:
+ *                     raise AssertionError("Core should not return GRPC_QUEUE_TIMEOUT!")             # <<<<<<<<<<<<<<
+ *             elif event.type == GRPC_QUEUE_SHUTDOWN:
+ *                 self._shutdown = True
+ */
+  __pyx_tuple__50 = PyTuple_Pack(1, __pyx_kp_s_Core_should_not_return_GRPC_QUEU); if (unlikely(!__pyx_tuple__50)) __PYX_ERR(7, 108, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__50);
+  __Pyx_GIVEREF(__pyx_tuple__50);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":231
+ *     def set_compression(self, object compression):
+ *         if self._rpc_state.metadata_sent:
+ *             raise RuntimeError('Compression setting must be specified before sending initial metadata')             # <<<<<<<<<<<<<<
+ *         else:
+ *             self._rpc_state.compression_algorithm = compression
+ */
+  __pyx_tuple__79 = PyTuple_Pack(1, __pyx_kp_s_Compression_setting_must_be_spec); if (unlikely(!__pyx_tuple__79)) __PYX_ERR(9, 231, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__79);
+  __Pyx_GIVEREF(__pyx_tuple__79);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":372
+ * async def _find_method_handler(str method, tuple metadata, list generic_handlers,
+ *                           tuple interceptors):
+ *     def query_handlers(handler_call_details):             # <<<<<<<<<<<<<<
+ *         for generic_handler in generic_handlers:
+ *             method_handler = generic_handler.service(handler_call_details)
+ */
+  __pyx_tuple__83 = PyTuple_Pack(3, __pyx_n_s_handler_call_details, __pyx_n_s_generic_handler, __pyx_n_s_method_handler); if (unlikely(!__pyx_tuple__83)) __PYX_ERR(9, 372, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__83);
+  __Pyx_GIVEREF(__pyx_tuple__83);
+  __pyx_codeobj__84 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__83, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_query_handlers, 372, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__84)) __PYX_ERR(9, 372, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":744
+ * cdef _add_callback_handler(object rpc_task, RPCState rpc_state):
+ * 
+ *     def handle_callbacks(object unused_task):             # <<<<<<<<<<<<<<
+ *         try:
+ *             for callback in rpc_state.callbacks:
+ */
+  __pyx_tuple__93 = PyTuple_Pack(2, __pyx_n_s_unused_task, __pyx_n_s_callback); if (unlikely(!__pyx_tuple__93)) __PYX_ERR(9, 744, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__93);
+  __Pyx_GIVEREF(__pyx_tuple__93);
+  __pyx_codeobj__94 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__93, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_handle_callbacks, 744, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__94)) __PYX_ERR(9, 744, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":864
+ *     def __cinit__(self, int maximum_concurrent_rpcs):
+ *         if maximum_concurrent_rpcs <= 0:
+ *             raise ValueError("maximum_concurrent_rpcs should be a postive integer")             # <<<<<<<<<<<<<<
+ *         self._maximum_concurrent_rpcs = maximum_concurrent_rpcs
+ *         self._active_rpcs = 0
+ */
+  __pyx_tuple__98 = PyTuple_Pack(1, __pyx_kp_s_maximum_concurrent_rpcs_should_b); if (unlikely(!__pyx_tuple__98)) __PYX_ERR(9, 864, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__98);
+  __Pyx_GIVEREF(__pyx_tuple__98);
+
+  /* "(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_tuple__105 = PyTuple_Pack(3, __pyx_int_238750788, __pyx_int_228825662, __pyx_int_222419149); if (unlikely(!__pyx_tuple__105)) __PYX_ERR(10, 4, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__105);
+  __Pyx_GIVEREF(__pyx_tuple__105);
+  __pyx_tuple__106 = PyTuple_Pack(3, __pyx_int_171651213, __pyx_int_118587260, __pyx_int_171381981); if (unlikely(!__pyx_tuple__106)) __PYX_ERR(10, 4, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__106);
+  __Pyx_GIVEREF(__pyx_tuple__106);
+
+  /* "(tree fragment)":1
+ * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
+ *     raise TypeError, "self.arg cannot be converted to a Python object for pickling"
+ * def __setstate_cython__(self, __pyx_state):
+ */
+  __pyx_tuple__108 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__108)) __PYX_ERR(10, 1, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__108);
+  __Pyx_GIVEREF(__pyx_tuple__108);
+  __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__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__109)) __PYX_ERR(10, 1, __pyx_L1_error)
+
+  /* "(tree fragment)":3
+ * def __reduce_cython__(self):
+ *     raise TypeError, "self.arg cannot be converted to a Python object for pickling"
+ * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
+ *     raise TypeError, "self.arg cannot be converted to a Python object for pickling"
+ */
+  __pyx_tuple__110 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_pyx_state); if (unlikely(!__pyx_tuple__110)) __PYX_ERR(10, 3, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__110);
+  __Pyx_GIVEREF(__pyx_tuple__110);
+  __pyx_codeobj__111 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__111)) __PYX_ERR(10, 3, __pyx_L1_error)
+
+  /* "(tree fragment)":1
+ * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
+ *     raise TypeError, "self.c_argument cannot be converted to a Python object for pickling"
+ * def __setstate_cython__(self, __pyx_state):
+ */
+  __pyx_codeobj__112 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__112)) __PYX_ERR(10, 1, __pyx_L1_error)
+
+  /* "(tree fragment)":3
+ * def __reduce_cython__(self):
+ *     raise TypeError, "self.c_argument cannot be converted to a Python object for pickling"
+ * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
+ *     raise TypeError, "self.c_argument cannot be converted to a Python object for pickling"
+ */
+  __pyx_codeobj__113 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__113)) __PYX_ERR(10, 3, __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__114 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__114)) __PYX_ERR(10, 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__115 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__115)) __PYX_ERR(10, 3, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":24
+ *     self.references = []
+ * 
+ *   def _start_batch(self, operations, tag, retain_self):             # <<<<<<<<<<<<<<
+ *     if not self.is_valid:
+ *       raise ValueError("invalid call object cannot be used from Python")
+ */
+  __pyx_tuple__116 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_operations, __pyx_n_s_tag, __pyx_n_s_retain_self, __pyx_n_s_batch_operation_tag, __pyx_n_s_error); if (unlikely(!__pyx_tuple__116)) __PYX_ERR(4, 24, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__116);
+  __Pyx_GIVEREF(__pyx_tuple__116);
+  __pyx_codeobj__117 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__116, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_7, __pyx_n_s_start_batch, 24, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__117)) __PYX_ERR(4, 24, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":38
+ *     return error
+ * 
+ *   def start_client_batch(self, operations, tag):             # <<<<<<<<<<<<<<
+ *     # We don't reference this call in the operations tag because
+ *     # it should be cancelled when it goes out of scope
+ */
+  __pyx_tuple__118 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_operations, __pyx_n_s_tag); if (unlikely(!__pyx_tuple__118)) __PYX_ERR(4, 38, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__118);
+  __Pyx_GIVEREF(__pyx_tuple__118);
+  __pyx_codeobj__119 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 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_python_grpcio_grpc__cython_7, __pyx_n_s_start_client_batch, 38, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__119)) __PYX_ERR(4, 38, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":43
+ *     return self._start_batch(operations, tag, False)
+ * 
+ *   def start_server_batch(self, operations, tag):             # <<<<<<<<<<<<<<
+ *     return self._start_batch(operations, tag, True)
+ * 
+ */
+  __pyx_codeobj__120 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 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_python_grpcio_grpc__cython_7, __pyx_n_s_start_server_batch, 43, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__120)) __PYX_ERR(4, 43, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":46
+ *     return self._start_batch(operations, tag, True)
+ * 
+ *   def cancel(             # <<<<<<<<<<<<<<
+ *       self, grpc_status_code error_code=GRPC_STATUS__DO_NOT_USE,
+ *       details=None):
+ */
+  __pyx_tuple__121 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_error_code, __pyx_n_s_details, __pyx_n_s_result, __pyx_n_s_c_details); if (unlikely(!__pyx_tuple__121)) __PYX_ERR(4, 46, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__121);
+  __Pyx_GIVEREF(__pyx_tuple__121);
+  __pyx_codeobj__122 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__121, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_7, __pyx_n_s_cancel, 46, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__122)) __PYX_ERR(4, 46, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":69
+ *       return result
+ * 
+ *   def set_credentials(self, CallCredentials call_credentials not None):             # <<<<<<<<<<<<<<
+ *     cdef grpc_call_credentials *c_call_credentials = call_credentials.c()
+ *     cdef grpc_call_error call_error = grpc_call_set_credentials(
+ */
+  __pyx_tuple__123 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_call_credentials, __pyx_n_s_c_call_credentials, __pyx_n_s_call_error); if (unlikely(!__pyx_tuple__123)) __PYX_ERR(4, 69, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__123);
+  __Pyx_GIVEREF(__pyx_tuple__123);
+  __pyx_codeobj__124 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__123, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_7, __pyx_n_s_set_credentials, 69, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__124)) __PYX_ERR(4, 69, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":76
+ *     return call_error
+ * 
+ *   def peer(self):             # <<<<<<<<<<<<<<
+ *     cdef char *peer = NULL
+ *     with nogil:
+ */
+  __pyx_tuple__125 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_peer, __pyx_n_s_result); if (unlikely(!__pyx_tuple__125)) __PYX_ERR(4, 76, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__125);
+  __Pyx_GIVEREF(__pyx_tuple__125);
+  __pyx_codeobj__126 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__125, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_7, __pyx_n_s_peer, 76, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__126)) __PYX_ERR(4, 76, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":96
+ *     return self.c_call != NULL
+ * 
+ *   def _custom_op_on_c_call(self, int op):             # <<<<<<<<<<<<<<
+ *     return _custom_op_on_c_call(op, self.c_call)
+ */
+  __pyx_tuple__127 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_op); if (unlikely(!__pyx_tuple__127)) __PYX_ERR(4, 96, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__127);
+  __Pyx_GIVEREF(__pyx_tuple__127);
+  __pyx_codeobj__128 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__127, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_7, __pyx_n_s_custom_op_on_c_call, 96, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__128)) __PYX_ERR(4, 96, __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__129 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__129)) __PYX_ERR(10, 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__130 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__130)) __PYX_ERR(10, 3, __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__131 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__131)) __PYX_ERR(10, 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__132 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__132)) __PYX_ERR(10, 3, __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__133 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__133)) __PYX_ERR(10, 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__134 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__134)) __PYX_ERR(10, 3, __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__135 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__135)) __PYX_ERR(10, 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__136 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__136)) __PYX_ERR(10, 3, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":328
+ *     self._call_state = call_state
+ * 
+ *   def operate(self, operations, tag):             # <<<<<<<<<<<<<<
+ *     return _operate_from_integrated_call(
+ *         self._channel_state, self._call_state, operations, tag)
+ */
+  __pyx_codeobj__137 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 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_python_grpcio_grpc__cython, __pyx_n_s_operate, 328, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__137)) __PYX_ERR(12, 328, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":332
+ *         self._channel_state, self._call_state, operations, tag)
+ * 
+ *   def cancel(self, code, details):             # <<<<<<<<<<<<<<
+ *     _cancel(self._channel_state, self._call_state, code, details)
+ * 
+ */
+  __pyx_tuple__138 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_code, __pyx_n_s_details); if (unlikely(!__pyx_tuple__138)) __PYX_ERR(12, 332, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__138);
+  __Pyx_GIVEREF(__pyx_tuple__138);
+  __pyx_codeobj__139 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__138, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython, __pyx_n_s_cancel, 332, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__139)) __PYX_ERR(12, 332, __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__140 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__140)) __PYX_ERR(10, 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__141 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__141)) __PYX_ERR(10, 3, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":377
+ *     self._call_state = call_state
+ * 
+ *   def operate(self, operations, tag):             # <<<<<<<<<<<<<<
+ *     return _operate_from_segregated_call(
+ *         self._channel_state, self._call_state, operations, tag)
+ */
+  __pyx_codeobj__142 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 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_python_grpcio_grpc__cython, __pyx_n_s_operate, 377, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__142)) __PYX_ERR(12, 377, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":381
+ *         self._channel_state, self._call_state, operations, tag)
+ * 
+ *   def cancel(self, code, details):             # <<<<<<<<<<<<<<
+ *     _cancel(self._channel_state, self._call_state, code, details)
+ * 
+ */
+  __pyx_codeobj__143 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__138, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython, __pyx_n_s_cancel, 381, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__143)) __PYX_ERR(12, 381, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":384
+ *     _cancel(self._channel_state, self._call_state, code, details)
+ * 
+ *   def next_event(self):             # <<<<<<<<<<<<<<
+ *     def on_success(tag):
+ *       _process_segregated_call_tag(
+ */
+  __pyx_tuple__144 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_on_success, __pyx_n_s_on_success, __pyx_n_s_on_failure, __pyx_n_s_on_failure); if (unlikely(!__pyx_tuple__144)) __PYX_ERR(12, 384, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__144);
+  __Pyx_GIVEREF(__pyx_tuple__144);
+  __pyx_codeobj__145 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__144, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython, __pyx_n_s_next_event, 384, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__145)) __PYX_ERR(12, 384, __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__146 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__146)) __PYX_ERR(10, 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__147 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__147)) __PYX_ERR(10, 3, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":520
+ *     grpc_channel_credentials_release(c_channel_credentials)
+ * 
+ *   def target(self):             # <<<<<<<<<<<<<<
+ *     cdef char *c_target
+ *     with self._state.condition:
+ */
+  __pyx_tuple__148 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_c_target, __pyx_n_s_target); if (unlikely(!__pyx_tuple__148)) __PYX_ERR(12, 520, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__148);
+  __Pyx_GIVEREF(__pyx_tuple__148);
+  __pyx_codeobj__149 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__148, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython, __pyx_n_s_target, 520, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__149)) __PYX_ERR(12, 520, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":528
+ *       return target
+ * 
+ *   def integrated_call(             # <<<<<<<<<<<<<<
+ *       self, int flags, method, host, object deadline, object metadata,
+ *       CallCredentials credentials, operationses_and_tags,
+ */
+  __pyx_tuple__150 = PyTuple_Pack(10, __pyx_n_s_self, __pyx_n_s_flags, __pyx_n_s_method, __pyx_n_s_host, __pyx_n_s_deadline, __pyx_n_s_metadata, __pyx_n_s_credentials, __pyx_n_s_operationses_and_tags, __pyx_n_s_context, __pyx_n_s_registered_call_handle); if (unlikely(!__pyx_tuple__150)) __PYX_ERR(12, 528, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__150);
+  __Pyx_GIVEREF(__pyx_tuple__150);
+  __pyx_codeobj__151 = (PyObject*)__Pyx_PyCode_New(10, 0, 0, 10, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__150, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython, __pyx_n_s_integrated_call, 528, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__151)) __PYX_ERR(12, 528, __pyx_L1_error)
+  __pyx_tuple__152 = PyTuple_Pack(2, Py_None, Py_None); if (unlikely(!__pyx_tuple__152)) __PYX_ERR(12, 528, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__152);
+  __Pyx_GIVEREF(__pyx_tuple__152);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":536
+ *         operationses_and_tags, context, registered_call_handle)
+ * 
+ *   def next_call_event(self):             # <<<<<<<<<<<<<<
+ *     def on_success(tag):
+ *       if tag is not None:
+ */
+  __pyx_tuple__153 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_on_success, __pyx_n_s_on_success, __pyx_n_s_queue_deadline); if (unlikely(!__pyx_tuple__153)) __PYX_ERR(12, 536, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__153);
+  __Pyx_GIVEREF(__pyx_tuple__153);
+  __pyx_codeobj__154 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__153, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython, __pyx_n_s_next_call_event, 536, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__154)) __PYX_ERR(12, 536, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":550
+ *                             on_success, None, queue_deadline)
+ * 
+ *   def segregated_call(             # <<<<<<<<<<<<<<
+ *       self, int flags, method, host, object deadline, object metadata,
+ *       CallCredentials credentials, operationses_and_tags,
+ */
+  __pyx_codeobj__155 = (PyObject*)__Pyx_PyCode_New(10, 0, 0, 10, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__150, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython, __pyx_n_s_segregated_call, 550, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__155)) __PYX_ERR(12, 550, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":558
+ *         operationses_and_tags, context, registered_call_handle)
+ * 
+ *   def check_connectivity_state(self, bint try_to_connect):             # <<<<<<<<<<<<<<
+ *     with self._state.condition:
+ *       if self._state.open:
+ */
+  __pyx_tuple__156 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_try_to_connect); if (unlikely(!__pyx_tuple__156)) __PYX_ERR(12, 558, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__156);
+  __Pyx_GIVEREF(__pyx_tuple__156);
+  __pyx_codeobj__157 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 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_python_grpcio_grpc__cython, __pyx_n_s_check_connectivity_state, 558, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__157)) __PYX_ERR(12, 558, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":566
+ *         raise ValueError('Cannot invoke RPC: %s' % self._state.closed_reason)
+ * 
+ *   def watch_connectivity_state(             # <<<<<<<<<<<<<<
+ *       self, grpc_connectivity_state last_observed_state, object deadline):
+ *     return _watch_connectivity_state(self._state, last_observed_state, deadline)
+ */
+  __pyx_tuple__158 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_last_observed_state, __pyx_n_s_deadline); if (unlikely(!__pyx_tuple__158)) __PYX_ERR(12, 566, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__158);
+  __Pyx_GIVEREF(__pyx_tuple__158);
+  __pyx_codeobj__159 = (PyObject*)__Pyx_PyCode_New(3, 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_python_grpcio_grpc__cython, __pyx_n_s_watch_connectivity_state, 566, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__159)) __PYX_ERR(12, 566, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":570
+ *     return _watch_connectivity_state(self._state, last_observed_state, deadline)
+ * 
+ *   def close(self, code, details):             # <<<<<<<<<<<<<<
+ *     _close(self, code, details, False)
+ * 
+ */
+  __pyx_codeobj__160 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__138, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython, __pyx_n_s_close, 570, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__160)) __PYX_ERR(12, 570, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":573
+ *     _close(self, code, details, False)
+ * 
+ *   def close_on_fork(self, code, details):             # <<<<<<<<<<<<<<
+ *     _close(self, code, details, True)
+ * 
+ */
+  __pyx_codeobj__161 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__138, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython, __pyx_n_s_close_on_fork_2, 573, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__161)) __PYX_ERR(12, 573, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":576
+ *     _close(self, code, details, True)
+ * 
+ *   def get_registered_call_handle(self, method):             # <<<<<<<<<<<<<<
+ *     """
+ *     Get or registers a call handler for a method.
+ */
+  __pyx_tuple__162 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_method); if (unlikely(!__pyx_tuple__162)) __PYX_ERR(12, 576, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__162);
+  __Pyx_GIVEREF(__pyx_tuple__162);
+  __pyx_codeobj__163 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__162, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython, __pyx_n_s_get_registered_call_handle, 576, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__163)) __PYX_ERR(12, 576, __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__164 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__164)) __PYX_ERR(10, 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__165 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__165)) __PYX_ERR(10, 3, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":16
+ * 
+ * 
+ * def channelz_get_top_channels(start_channel_id):             # <<<<<<<<<<<<<<
+ *     cdef char *c_returned_str = grpc_channelz_get_top_channels(
+ *         start_channel_id,
+ */
+  __pyx_tuple__166 = PyTuple_Pack(2, __pyx_n_s_start_channel_id, __pyx_n_s_c_returned_str); if (unlikely(!__pyx_tuple__166)) __PYX_ERR(13, 16, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__166);
+  __Pyx_GIVEREF(__pyx_tuple__166);
+  __pyx_codeobj__167 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__166, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_8, __pyx_n_s_channelz_get_top_channels, 16, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__167)) __PYX_ERR(13, 16, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":25
+ *     return c_returned_str
+ * 
+ * def channelz_get_servers(start_server_id):             # <<<<<<<<<<<<<<
+ *     cdef char *c_returned_str = grpc_channelz_get_servers(start_server_id)
+ *     if c_returned_str == NULL:
+ */
+  __pyx_tuple__168 = PyTuple_Pack(2, __pyx_n_s_start_server_id, __pyx_n_s_c_returned_str); if (unlikely(!__pyx_tuple__168)) __PYX_ERR(13, 25, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__168);
+  __Pyx_GIVEREF(__pyx_tuple__168);
+  __pyx_codeobj__169 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__168, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_8, __pyx_n_s_channelz_get_servers, 25, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__169)) __PYX_ERR(13, 25, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":32
+ *     return c_returned_str
+ * 
+ * def channelz_get_server(server_id):             # <<<<<<<<<<<<<<
+ *     cdef char *c_returned_str = grpc_channelz_get_server(server_id)
+ *     if c_returned_str == NULL:
+ */
+  __pyx_tuple__170 = PyTuple_Pack(2, __pyx_n_s_server_id, __pyx_n_s_c_returned_str); if (unlikely(!__pyx_tuple__170)) __PYX_ERR(13, 32, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__170);
+  __Pyx_GIVEREF(__pyx_tuple__170);
+  __pyx_codeobj__171 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 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_python_grpcio_grpc__cython_8, __pyx_n_s_channelz_get_server, 32, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__171)) __PYX_ERR(13, 32, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":39
+ *     return c_returned_str
+ * 
+ * def channelz_get_server_sockets(server_id, start_socket_id, max_results):             # <<<<<<<<<<<<<<
+ *     cdef char *c_returned_str = grpc_channelz_get_server_sockets(
+ *         server_id,
+ */
+  __pyx_tuple__172 = PyTuple_Pack(4, __pyx_n_s_server_id, __pyx_n_s_start_socket_id, __pyx_n_s_max_results, __pyx_n_s_c_returned_str); if (unlikely(!__pyx_tuple__172)) __PYX_ERR(13, 39, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__172);
+  __Pyx_GIVEREF(__pyx_tuple__172);
+  __pyx_codeobj__173 = (PyObject*)__Pyx_PyCode_New(3, 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_python_grpcio_grpc__cython_8, __pyx_n_s_channelz_get_server_sockets, 39, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__173)) __PYX_ERR(13, 39, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":52
+ *     return c_returned_str
+ * 
+ * def channelz_get_channel(channel_id):             # <<<<<<<<<<<<<<
+ *     cdef char *c_returned_str = grpc_channelz_get_channel(channel_id)
+ *     if c_returned_str == NULL:
+ */
+  __pyx_tuple__174 = PyTuple_Pack(2, __pyx_n_s_channel_id, __pyx_n_s_c_returned_str); if (unlikely(!__pyx_tuple__174)) __PYX_ERR(13, 52, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__174);
+  __Pyx_GIVEREF(__pyx_tuple__174);
+  __pyx_codeobj__175 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__174, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_8, __pyx_n_s_channelz_get_channel, 52, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__175)) __PYX_ERR(13, 52, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":59
+ *     return c_returned_str
+ * 
+ * def channelz_get_subchannel(subchannel_id):             # <<<<<<<<<<<<<<
+ *     cdef char *c_returned_str = grpc_channelz_get_subchannel(subchannel_id)
+ *     if c_returned_str == NULL:
+ */
+  __pyx_tuple__176 = PyTuple_Pack(2, __pyx_n_s_subchannel_id, __pyx_n_s_c_returned_str); if (unlikely(!__pyx_tuple__176)) __PYX_ERR(13, 59, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__176);
+  __Pyx_GIVEREF(__pyx_tuple__176);
+  __pyx_codeobj__177 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__176, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_8, __pyx_n_s_channelz_get_subchannel, 59, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__177)) __PYX_ERR(13, 59, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":66
+ *     return c_returned_str
+ * 
+ * def channelz_get_socket(socket_id):             # <<<<<<<<<<<<<<
+ *     cdef char *c_returned_str = grpc_channelz_get_socket(socket_id)
+ *     if c_returned_str == NULL:
+ */
+  __pyx_tuple__178 = PyTuple_Pack(2, __pyx_n_s_socket_id, __pyx_n_s_c_returned_str); if (unlikely(!__pyx_tuple__178)) __PYX_ERR(13, 66, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__178);
+  __Pyx_GIVEREF(__pyx_tuple__178);
+  __pyx_codeobj__179 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__178, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_8, __pyx_n_s_channelz_get_socket, 66, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__179)) __PYX_ERR(13, 66, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/csds.pyx.pxi":16
+ * 
+ * 
+ * def dump_xds_configs():             # <<<<<<<<<<<<<<
+ *     cdef grpc_slice client_config_in_slice
+ *     with nogil:
+ */
+  __pyx_tuple__180 = PyTuple_Pack(2, __pyx_n_s_client_config_in_slice, __pyx_n_s_result); if (unlikely(!__pyx_tuple__180)) __PYX_ERR(14, 16, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__180);
+  __Pyx_GIVEREF(__pyx_tuple__180);
+  __pyx_codeobj__181 = (PyObject*)__Pyx_PyCode_New(0, 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_python_grpcio_grpc__cython_9, __pyx_n_s_dump_xds_configs, 16, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__181)) __PYX_ERR(14, 16, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":16
+ * 
+ * 
+ * def _spawn_callback_in_thread(cb_func, args):             # <<<<<<<<<<<<<<
+ *   t = ForkManagedThread(target=cb_func, args=args)
+ *   t.setDaemon(True)
+ */
+  __pyx_tuple__182 = PyTuple_Pack(3, __pyx_n_s_cb_func, __pyx_n_s_args, __pyx_n_s_t); if (unlikely(!__pyx_tuple__182)) __PYX_ERR(5, 16, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__182);
+  __Pyx_GIVEREF(__pyx_tuple__182);
+  __pyx_codeobj__183 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__182, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_2, __pyx_n_s_spawn_callback_in_thread, 16, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__183)) __PYX_ERR(5, 16, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":23
+ * async_callback_func = _spawn_callback_in_thread
+ * 
+ * def set_async_callback_func(callback_func):             # <<<<<<<<<<<<<<
+ *   global async_callback_func
+ *   async_callback_func = callback_func
+ */
+  __pyx_tuple__184 = PyTuple_Pack(1, __pyx_n_s_callback_func); if (unlikely(!__pyx_tuple__184)) __PYX_ERR(5, 23, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__184);
+  __Pyx_GIVEREF(__pyx_tuple__184);
+  __pyx_codeobj__185 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__184, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_2, __pyx_n_s_set_async_callback_func, 23, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__185)) __PYX_ERR(5, 23, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":27
+ *   async_callback_func = callback_func
+ * 
+ * def _spawn_callback_async(callback, args):             # <<<<<<<<<<<<<<
+ *   async_callback_func(callback, args)
+ * 
+ */
+  __pyx_tuple__186 = PyTuple_Pack(2, __pyx_n_s_callback, __pyx_n_s_args); if (unlikely(!__pyx_tuple__186)) __PYX_ERR(5, 27, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__186);
+  __Pyx_GIVEREF(__pyx_tuple__186);
+  __pyx_codeobj__187 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__186, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_2, __pyx_n_s_spawn_callback_async, 27, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__187)) __PYX_ERR(5, 27, __pyx_L1_error)
+
+  /* "(tree fragment)":1
+ * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
+ *     raise TypeError, "self.c_credentials cannot be converted to a Python object for pickling"
+ * def __setstate_cython__(self, __pyx_state):
+ */
+  __pyx_codeobj__188 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__188)) __PYX_ERR(10, 1, __pyx_L1_error)
+
+  /* "(tree fragment)":3
+ * def __reduce_cython__(self):
+ *     raise TypeError, "self.c_credentials cannot be converted to a Python object for pickling"
+ * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
+ *     raise TypeError, "self.c_credentials cannot be converted to a Python object for pickling"
+ */
+  __pyx_codeobj__189 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__189)) __PYX_ERR(10, 3, __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__190 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__190)) __PYX_ERR(10, 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__191 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__191)) __PYX_ERR(10, 3, __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__192 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__192)) __PYX_ERR(10, 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__193 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__193)) __PYX_ERR(10, 3, __pyx_L1_error)
+
+  /* "(tree fragment)":1
+ * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
+ *     cdef tuple state
+ *     cdef object _dict
+ */
+  __pyx_tuple__194 = 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__194)) __PYX_ERR(10, 1, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__194);
+  __Pyx_GIVEREF(__pyx_tuple__194);
+  __pyx_codeobj__195 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__194, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__195)) __PYX_ERR(10, 1, __pyx_L1_error)
+
+  /* "(tree fragment)":16
+ *     else:
+ *         return __pyx_unpickle_ChannelCredentials, (type(self), 0xe3b0c44, state)
+ * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
+ *     __pyx_unpickle_ChannelCredentials__set_state(self, __pyx_state)
+ */
+  __pyx_codeobj__196 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 16, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__196)) __PYX_ERR(10, 16, __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__197 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__197)) __PYX_ERR(10, 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__198 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__198)) __PYX_ERR(10, 3, __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__199 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__199)) __PYX_ERR(10, 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__200 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__200)) __PYX_ERR(10, 3, __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__201 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__201)) __PYX_ERR(10, 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__202 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__202)) __PYX_ERR(10, 3, __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__203 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__203)) __PYX_ERR(10, 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__204 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__204)) __PYX_ERR(10, 3, __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__205 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__205)) __PYX_ERR(10, 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__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__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__206)) __PYX_ERR(10, 3, __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__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__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__207)) __PYX_ERR(10, 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__208 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__208)) __PYX_ERR(10, 3, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":257
+ *   return c_ssl_pem_key_cert_pairs
+ * 
+ * def server_credentials_ssl(pem_root_certs, pem_key_cert_pairs,             # <<<<<<<<<<<<<<
+ *                            bint force_client_auth):
+ *   pem_root_certs = str_to_bytes(pem_root_certs)
+ */
+  __pyx_tuple__209 = PyTuple_Pack(7, __pyx_n_s_pem_root_certs, __pyx_n_s_pem_key_cert_pairs, __pyx_n_s_force_client_auth, __pyx_n_s_credentials, __pyx_n_s_c_pem_root_certs, __pyx_n_s_c_cert_config, __pyx_n_s_c_options); if (unlikely(!__pyx_tuple__209)) __PYX_ERR(5, 257, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__209);
+  __Pyx_GIVEREF(__pyx_tuple__209);
+  __pyx_codeobj__210 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__209, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_2, __pyx_n_s_server_credentials_ssl, 257, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__210)) __PYX_ERR(5, 257, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":282
+ *   return credentials
+ * 
+ * def server_certificate_config_ssl(pem_root_certs, pem_key_cert_pairs):             # <<<<<<<<<<<<<<
+ *   pem_root_certs = str_to_bytes(pem_root_certs)
+ *   pem_key_cert_pairs = list(pem_key_cert_pairs)
+ */
+  __pyx_tuple__211 = PyTuple_Pack(3, __pyx_n_s_pem_root_certs, __pyx_n_s_pem_key_cert_pairs, __pyx_n_s_cert_config); if (unlikely(!__pyx_tuple__211)) __PYX_ERR(5, 282, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__211);
+  __Pyx_GIVEREF(__pyx_tuple__211);
+  __pyx_codeobj__212 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__211, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_2, __pyx_n_s_server_certificate_config_ssl, 282, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__212)) __PYX_ERR(5, 282, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":296
+ *   return cert_config
+ * 
+ * def server_credentials_ssl_dynamic_cert_config(initial_cert_config,             # <<<<<<<<<<<<<<
+ *                                                cert_config_fetcher,
+ *                                                bint force_client_auth):
+ */
+  __pyx_tuple__213 = PyTuple_Pack(5, __pyx_n_s_initial_cert_config, __pyx_n_s_cert_config_fetcher, __pyx_n_s_force_client_auth, __pyx_n_s_credentials, __pyx_n_s_c_options); if (unlikely(!__pyx_tuple__213)) __PYX_ERR(5, 296, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__213);
+  __Pyx_GIVEREF(__pyx_tuple__213);
+  __pyx_codeobj__214 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__213, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_2, __pyx_n_s_server_credentials_ssl_dynamic_c, 296, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__214)) __PYX_ERR(5, 296, __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__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__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__215)) __PYX_ERR(10, 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__216 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__216)) __PYX_ERR(10, 3, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":370
+ *     return grpc_local_credentials_create(local_connect_type)
+ * 
+ * def channel_credentials_local(grpc_local_connect_type local_connect_type):             # <<<<<<<<<<<<<<
+ *   return LocalChannelCredentials(local_connect_type)
+ * 
+ */
+  __pyx_tuple__217 = PyTuple_Pack(1, __pyx_n_s_local_connect_type); if (unlikely(!__pyx_tuple__217)) __PYX_ERR(5, 370, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__217);
+  __Pyx_GIVEREF(__pyx_tuple__217);
+  __pyx_codeobj__218 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__217, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_2, __pyx_n_s_channel_credentials_local, 370, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__218)) __PYX_ERR(5, 370, __pyx_L1_error)
+
+  /* "(tree fragment)":1
+ * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
+ *     cdef tuple state
+ *     cdef object _dict
+ */
+  __pyx_codeobj__219 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__194, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__219)) __PYX_ERR(10, 1, __pyx_L1_error)
+
+  /* "(tree fragment)":16
+ *     else:
+ *         return __pyx_unpickle_InsecureChannelCredentials, (type(self), 0xe3b0c44, state)
+ * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
+ *     __pyx_unpickle_InsecureChannelCredentials__set_state(self, __pyx_state)
+ */
+  __pyx_codeobj__220 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 16, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__220)) __PYX_ERR(10, 16, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":378
+ *     return grpc_insecure_credentials_create()
+ * 
+ * def channel_credentials_insecure():             # <<<<<<<<<<<<<<
+ *   return InsecureChannelCredentials()
+ * 
+ */
+  __pyx_codeobj__221 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_2, __pyx_n_s_channel_credentials_insecure, 378, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__221)) __PYX_ERR(5, 378, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":381
+ *   return InsecureChannelCredentials()
+ * 
+ * def server_credentials_local(grpc_local_connect_type local_connect_type):             # <<<<<<<<<<<<<<
+ *   cdef ServerCredentials credentials = ServerCredentials()
+ *   credentials.c_credentials = grpc_local_server_credentials_create(local_connect_type)
+ */
+  __pyx_tuple__222 = PyTuple_Pack(2, __pyx_n_s_local_connect_type, __pyx_n_s_credentials); if (unlikely(!__pyx_tuple__222)) __PYX_ERR(5, 381, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__222);
+  __Pyx_GIVEREF(__pyx_tuple__222);
+  __pyx_codeobj__223 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__222, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_2, __pyx_n_s_server_credentials_local, 381, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__223)) __PYX_ERR(5, 381, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":386
+ *   return credentials
+ * 
+ * def xds_server_credentials(ServerCredentials fallback_credentials):             # <<<<<<<<<<<<<<
+ *   cdef ServerCredentials credentials = ServerCredentials()
+ *   credentials.c_credentials = grpc_xds_server_credentials_create(fallback_credentials.c_credentials)
+ */
+  __pyx_tuple__224 = PyTuple_Pack(2, __pyx_n_s_fallback_credentials, __pyx_n_s_credentials); if (unlikely(!__pyx_tuple__224)) __PYX_ERR(5, 386, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__224);
+  __Pyx_GIVEREF(__pyx_tuple__224);
+  __pyx_codeobj__225 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__224, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_2, __pyx_n_s_xds_server_credentials, 386, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__225)) __PYX_ERR(5, 386, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":394
+ *   return credentials
+ * 
+ * def insecure_server_credentials():             # <<<<<<<<<<<<<<
+ *   cdef ServerCredentials credentials = ServerCredentials()
+ *   credentials.c_credentials = grpc_insecure_server_credentials_create()
+ */
+  __pyx_tuple__226 = PyTuple_Pack(1, __pyx_n_s_credentials); if (unlikely(!__pyx_tuple__226)) __PYX_ERR(5, 394, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__226);
+  __Pyx_GIVEREF(__pyx_tuple__226);
+  __pyx_codeobj__227 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__226, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_2, __pyx_n_s_insecure_server_credentials, 394, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__227)) __PYX_ERR(5, 394, __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__228 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__228)) __PYX_ERR(10, 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__229 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__229)) __PYX_ERR(10, 3, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":416
+ * 
+ * 
+ * def channel_credentials_alts(list service_accounts):             # <<<<<<<<<<<<<<
+ *   return ALTSChannelCredentials(service_accounts)
+ * 
+ */
+  __pyx_tuple__230 = PyTuple_Pack(1, __pyx_n_s_service_accounts); if (unlikely(!__pyx_tuple__230)) __PYX_ERR(5, 416, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__230);
+  __Pyx_GIVEREF(__pyx_tuple__230);
+  __pyx_codeobj__231 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__230, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_2, __pyx_n_s_channel_credentials_alts, 416, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__231)) __PYX_ERR(5, 416, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":420
+ * 
+ * 
+ * def server_credentials_alts():             # <<<<<<<<<<<<<<
+ *   cdef ServerCredentials credentials = ServerCredentials()
+ *   cdef grpc_alts_credentials_options* c_options = grpc_alts_credentials_server_options_create()
+ */
+  __pyx_tuple__232 = PyTuple_Pack(2, __pyx_n_s_credentials, __pyx_n_s_c_options); if (unlikely(!__pyx_tuple__232)) __PYX_ERR(5, 420, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__232);
+  __Pyx_GIVEREF(__pyx_tuple__232);
+  __pyx_codeobj__233 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__232, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_2, __pyx_n_s_server_credentials_alts, 420, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__233)) __PYX_ERR(5, 420, __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__234 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__234)) __PYX_ERR(10, 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__235 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__235)) __PYX_ERR(10, 3, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":445
+ * 
+ * 
+ * def channel_credentials_compute_engine(call_creds):             # <<<<<<<<<<<<<<
+ *   return ComputeEngineChannelCredentials(call_creds)
+ */
+  __pyx_tuple__236 = PyTuple_Pack(1, __pyx_n_s_call_creds); if (unlikely(!__pyx_tuple__236)) __PYX_ERR(5, 445, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__236);
+  __Pyx_GIVEREF(__pyx_tuple__236);
+  __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__236, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_2, __pyx_n_s_channel_credentials_compute_engi, 445, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__237)) __PYX_ERR(5, 445, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":103
+ *     return event
+ * 
+ *   def _internal_poll(self, deadline):             # <<<<<<<<<<<<<<
+ *     return self._interpret_event(_next(self.c_completion_queue, deadline))
+ * 
+ */
+  __pyx_tuple__238 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_deadline); if (unlikely(!__pyx_tuple__238)) __PYX_ERR(15, 103, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__238);
+  __Pyx_GIVEREF(__pyx_tuple__238);
+  __pyx_codeobj__239 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 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_python_grpcio_grpc__cython_10, __pyx_n_s_internal_poll, 103, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__239)) __PYX_ERR(15, 103, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":108
+ *   # We name this 'poll' to avoid problems with CPython's expectations for
+ *   # 'special' methods (like next and __next__).
+ *   def poll(self, deadline=None):             # <<<<<<<<<<<<<<
+ *     global g_gevent_activated
+ *     if g_gevent_activated:
+ */
+  __pyx_codeobj__240 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 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_python_grpcio_grpc__cython_10, __pyx_n_s_poll, 108, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__240)) __PYX_ERR(15, 108, __pyx_L1_error)
+  __pyx_tuple__241 = PyTuple_Pack(1, Py_None); if (unlikely(!__pyx_tuple__241)) __PYX_ERR(15, 108, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__241);
+  __Pyx_GIVEREF(__pyx_tuple__241);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":115
+ *       return self._internal_poll(deadline)
+ * 
+ *   def shutdown(self):             # <<<<<<<<<<<<<<
+ *     with nogil:
+ *       grpc_completion_queue_shutdown(self.c_completion_queue)
+ */
+  __pyx_codeobj__242 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_10, __pyx_n_s_shutdown, 115, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__242)) __PYX_ERR(15, 115, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":120
+ *     self.is_shutting_down = True
+ * 
+ *   def clear(self):             # <<<<<<<<<<<<<<
+ *     if not self.is_shutting_down:
+ *       raise ValueError('queue must be shutting down to be cleared')
+ */
+  __pyx_codeobj__243 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_10, __pyx_n_s_clear, 120, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__243)) __PYX_ERR(15, 120, __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__244 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__244)) __PYX_ERR(10, 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__245 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__245)) __PYX_ERR(10, 3, __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__246 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__246)) __PYX_ERR(10, 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__247 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__247)) __PYX_ERR(10, 3, __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__248 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__248)) __PYX_ERR(10, 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__249 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__249)) __PYX_ERR(10, 3, __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__250 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__250)) __PYX_ERR(10, 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__251 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__251)) __PYX_ERR(10, 3, __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__252 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__252)) __PYX_ERR(10, 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__253 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__253)) __PYX_ERR(10, 3, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":24
+ * 
+ * 
+ * _Metadatum = collections.namedtuple('_Metadatum', ('key', 'value',))             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_tuple__254 = PyTuple_Pack(2, __pyx_n_s_key, __pyx_n_s_value); if (unlikely(!__pyx_tuple__254)) __PYX_ERR(18, 24, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__254);
+  __Pyx_GIVEREF(__pyx_tuple__254);
+  __pyx_tuple__255 = PyTuple_Pack(2, __pyx_n_s_Metadatum, __pyx_tuple__254); if (unlikely(!__pyx_tuple__255)) __PYX_ERR(18, 24, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__255);
+  __Pyx_GIVEREF(__pyx_tuple__255);
+
+  /* "(tree fragment)":1
+ * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
+ *     raise TypeError, "self.c_op cannot be converted to a Python object for pickling"
+ * def __setstate_cython__(self, __pyx_state):
+ */
+  __pyx_codeobj__256 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__256)) __PYX_ERR(10, 1, __pyx_L1_error)
+
+  /* "(tree fragment)":3
+ * def __reduce_cython__(self):
+ *     raise TypeError, "self.c_op cannot be converted to a Python object for pickling"
+ * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
+ *     raise TypeError, "self.c_op cannot be converted to a Python object for pickling"
+ */
+  __pyx_codeobj__257 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__257)) __PYX_ERR(10, 3, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":31
+ *     self._flags = flags
+ * 
+ *   def type(self):             # <<<<<<<<<<<<<<
+ *     return GRPC_OP_SEND_INITIAL_METADATA
+ * 
+ */
+  __pyx_codeobj__258 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_11, __pyx_n_s_type, 31, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__258)) __PYX_ERR(19, 31, __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__259 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__259)) __PYX_ERR(10, 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__260 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__260)) __PYX_ERR(10, 3, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":58
+ *     self._flags = flags
+ * 
+ *   def type(self):             # <<<<<<<<<<<<<<
+ *     return GRPC_OP_SEND_MESSAGE
+ * 
+ */
+  __pyx_codeobj__261 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_11, __pyx_n_s_type, 58, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__261)) __PYX_ERR(19, 58, __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__262 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__262)) __PYX_ERR(10, 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__263 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__263)) __PYX_ERR(10, 3, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":80
+ *     self._flags = flags
+ * 
+ *   def type(self):             # <<<<<<<<<<<<<<
+ *     return GRPC_OP_SEND_CLOSE_FROM_CLIENT
+ * 
+ */
+  __pyx_codeobj__264 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_11, __pyx_n_s_type, 80, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__264)) __PYX_ERR(19, 80, __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__265 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__265)) __PYX_ERR(10, 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__266 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__266)) __PYX_ERR(10, 3, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":99
+ *     self._flags = flags
+ * 
+ *   def type(self):             # <<<<<<<<<<<<<<
+ *     return GRPC_OP_SEND_STATUS_FROM_SERVER
+ * 
+ */
+  __pyx_codeobj__267 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_11, __pyx_n_s_type, 99, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__267)) __PYX_ERR(19, 99, __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__268 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__268)) __PYX_ERR(10, 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__269 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__269)) __PYX_ERR(10, 3, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":127
+ *     self._flags = flags
+ * 
+ *   def type(self):             # <<<<<<<<<<<<<<
+ *     return GRPC_OP_RECV_INITIAL_METADATA
+ * 
+ */
+  __pyx_codeobj__270 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_11, __pyx_n_s_type, 127, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__270)) __PYX_ERR(19, 127, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":141
+ *     grpc_metadata_array_destroy(&self._c_initial_metadata)
+ * 
+ *   def initial_metadata(self):             # <<<<<<<<<<<<<<
+ *     return self._initial_metadata
+ * 
+ */
+  __pyx_codeobj__271 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_11, __pyx_n_s_initial_metadata, 141, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__271)) __PYX_ERR(19, 141, __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__272 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__272)) __PYX_ERR(10, 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__273 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__273)) __PYX_ERR(10, 3, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":150
+ *     self._flags = flags
+ * 
+ *   def type(self):             # <<<<<<<<<<<<<<
+ *     return GRPC_OP_RECV_MESSAGE
+ * 
+ */
+  __pyx_codeobj__274 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_11, __pyx_n_s_type, 150, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__274)) __PYX_ERR(19, 150, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":183
+ *       self._message = None
+ * 
+ *   def message(self):             # <<<<<<<<<<<<<<
+ *     return self._message
+ * 
+ */
+  __pyx_codeobj__275 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_11, __pyx_n_s_message, 183, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__275)) __PYX_ERR(19, 183, __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__276 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__276)) __PYX_ERR(10, 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__277 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__277)) __PYX_ERR(10, 3, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":192
+ *     self._flags = flags
+ * 
+ *   def type(self):             # <<<<<<<<<<<<<<
+ *     return GRPC_OP_RECV_STATUS_ON_CLIENT
+ * 
+ */
+  __pyx_codeobj__278 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_11, __pyx_n_s_type, 192, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__278)) __PYX_ERR(19, 192, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":220
+ *       self._error_string = ""
+ * 
+ *   def trailing_metadata(self):             # <<<<<<<<<<<<<<
+ *     return self._trailing_metadata
+ * 
+ */
+  __pyx_codeobj__279 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_11, __pyx_n_s_trailing_metadata, 220, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__279)) __PYX_ERR(19, 220, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":223
+ *     return self._trailing_metadata
+ * 
+ *   def code(self):             # <<<<<<<<<<<<<<
+ *     return self._code
+ * 
+ */
+  __pyx_codeobj__280 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_11, __pyx_n_s_code, 223, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__280)) __PYX_ERR(19, 223, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":226
+ *     return self._code
+ * 
+ *   def details(self):             # <<<<<<<<<<<<<<
+ *     return self._details
+ * 
+ */
+  __pyx_codeobj__281 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_11, __pyx_n_s_details, 226, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__281)) __PYX_ERR(19, 226, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":229
+ *     return self._details
+ * 
+ *   def error_string(self):             # <<<<<<<<<<<<<<
+ *     return self._error_string
+ * 
+ */
+  __pyx_codeobj__282 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_11, __pyx_n_s_error_string, 229, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__282)) __PYX_ERR(19, 229, __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__283 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__283)) __PYX_ERR(10, 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__284 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__284)) __PYX_ERR(10, 3, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":238
+ *     self._flags = flags
+ * 
+ *   def type(self):             # <<<<<<<<<<<<<<
+ *     return GRPC_OP_RECV_CLOSE_ON_SERVER
+ * 
+ */
+  __pyx_codeobj__285 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_11, __pyx_n_s_type, 238, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__285)) __PYX_ERR(19, 238, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":249
+ *     self._cancelled = bool(self._c_cancelled)
+ * 
+ *   def cancelled(self):             # <<<<<<<<<<<<<<
+ *     return self._cancelled
+ */
+  __pyx_codeobj__286 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_11, __pyx_n_s_cancelled, 249, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__286)) __PYX_ERR(19, 249, __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__287 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__287)) __PYX_ERR(10, 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__288 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__288)) __PYX_ERR(10, 3, __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__289 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__289)) __PYX_ERR(10, 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__290 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__290)) __PYX_ERR(10, 3, __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__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__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__291)) __PYX_ERR(10, 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__292 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__292)) __PYX_ERR(10, 3, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":170
+ *       grpc_compression_options_init(&self.c_options)
+ * 
+ *   def enable_algorithm(self, grpc_compression_algorithm algorithm):             # <<<<<<<<<<<<<<
+ *     with nogil:
+ *       grpc_compression_options_enable_algorithm(&self.c_options, algorithm)
+ */
+  __pyx_tuple__293 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_algorithm); if (unlikely(!__pyx_tuple__293)) __PYX_ERR(21, 170, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__293);
+  __Pyx_GIVEREF(__pyx_tuple__293);
+  __pyx_codeobj__294 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 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_python_grpcio_grpc__cython_12, __pyx_n_s_enable_algorithm, 170, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__294)) __PYX_ERR(21, 170, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":174
+ *       grpc_compression_options_enable_algorithm(&self.c_options, algorithm)
+ * 
+ *   def disable_algorithm(self, grpc_compression_algorithm algorithm):             # <<<<<<<<<<<<<<
+ *     with nogil:
+ *       grpc_compression_options_disable_algorithm(&self.c_options, algorithm)
+ */
+  __pyx_codeobj__295 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 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_python_grpcio_grpc__cython_12, __pyx_n_s_disable_algorithm, 174, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__295)) __PYX_ERR(21, 174, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":178
+ *       grpc_compression_options_disable_algorithm(&self.c_options, algorithm)
+ * 
+ *   def is_algorithm_enabled(self, grpc_compression_algorithm algorithm):             # <<<<<<<<<<<<<<
+ *     cdef int result
+ *     with nogil:
+ */
+  __pyx_tuple__296 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_algorithm, __pyx_n_s_result); if (unlikely(!__pyx_tuple__296)) __PYX_ERR(21, 178, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__296);
+  __Pyx_GIVEREF(__pyx_tuple__296);
+  __pyx_codeobj__297 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 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_python_grpcio_grpc__cython_12, __pyx_n_s_is_algorithm_enabled, 178, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__297)) __PYX_ERR(21, 178, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":185
+ *     return result
+ * 
+ *   def to_channel_arg(self):             # <<<<<<<<<<<<<<
+ *     return (
+ *         GRPC_COMPRESSION_CHANNEL_ENABLED_ALGORITHMS_BITSET,
+ */
+  __pyx_codeobj__298 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_12, __pyx_n_s_to_channel_arg, 185, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__298)) __PYX_ERR(21, 185, __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__299 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__299)) __PYX_ERR(10, 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__300 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__300)) __PYX_ERR(10, 3, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":192
+ * 
+ * 
+ * def compression_algorithm_name(grpc_compression_algorithm algorithm):             # <<<<<<<<<<<<<<
+ *   cdef const char* name
+ *   with nogil:
+ */
+  __pyx_tuple__301 = PyTuple_Pack(2, __pyx_n_s_algorithm, __pyx_n_s_name); if (unlikely(!__pyx_tuple__301)) __PYX_ERR(21, 192, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__301);
+  __Pyx_GIVEREF(__pyx_tuple__301);
+  __pyx_codeobj__302 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__301, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_12, __pyx_n_s_compression_algorithm_name, 192, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__302)) __PYX_ERR(21, 192, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":200
+ * 
+ * 
+ * def reset_grpc_config_vars():             # <<<<<<<<<<<<<<
+ *   ConfigVars.Reset()
+ */
+  __pyx_codeobj__303 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_12, __pyx_n_s_reset_grpc_config_vars, 200, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__303)) __PYX_ERR(21, 200, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":36
+ * 
+ * 
+ * def peer_identities(Call call):             # <<<<<<<<<<<<<<
+ *   cdef grpc_auth_context* auth_context
+ *   cdef grpc_auth_property_iterator properties
+ */
+  __pyx_tuple__304 = PyTuple_Pack(5, __pyx_n_s_call, __pyx_n_s_auth_context, __pyx_n_s_properties, __pyx_n_s_property, __pyx_n_s_identities); if (unlikely(!__pyx_tuple__304)) __PYX_ERR(22, 36, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__304);
+  __Pyx_GIVEREF(__pyx_tuple__304);
+  __pyx_codeobj__305 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__304, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_13, __pyx_n_s_peer_identities, 36, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__305)) __PYX_ERR(22, 36, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":55
+ *   return identities if identities else None
+ * 
+ * def peer_identity_key(Call call):             # <<<<<<<<<<<<<<
+ *   cdef grpc_auth_context* auth_context
+ *   cdef const char* c_key
+ */
+  __pyx_tuple__306 = PyTuple_Pack(4, __pyx_n_s_call, __pyx_n_s_auth_context, __pyx_n_s_c_key, __pyx_n_s_key); if (unlikely(!__pyx_tuple__306)) __PYX_ERR(22, 55, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__306);
+  __Pyx_GIVEREF(__pyx_tuple__306);
+  __pyx_codeobj__307 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 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_python_grpcio_grpc__cython_13, __pyx_n_s_peer_identity_key, 55, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__307)) __PYX_ERR(22, 55, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":69
+ *   return key
+ * 
+ * def auth_context(Call call):             # <<<<<<<<<<<<<<
+ *   cdef grpc_auth_context* auth_context
+ *   cdef grpc_auth_property_iterator properties
+ */
+  __pyx_tuple__308 = PyTuple_Pack(6, __pyx_n_s_call, __pyx_n_s_auth_context, __pyx_n_s_properties, __pyx_n_s_property, __pyx_n_s_py_auth_context, __pyx_n_s_key); if (unlikely(!__pyx_tuple__308)) __PYX_ERR(22, 69, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__308);
+  __Pyx_GIVEREF(__pyx_tuple__308);
+  __pyx_codeobj__309 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 6, 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_python_grpcio_grpc__cython_13, __pyx_n_s_auth_context, 69, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__309)) __PYX_ERR(22, 69, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":36
+ *     self.references.append(arguments)
+ * 
+ *   def request_call(             # <<<<<<<<<<<<<<
+ *       self, CompletionQueue call_queue not None,
+ *       CompletionQueue server_queue not None, tag):
+ */
+  __pyx_tuple__310 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_call_queue, __pyx_n_s_server_queue, __pyx_n_s_tag, __pyx_n_s_request_call_tag); if (unlikely(!__pyx_tuple__310)) __PYX_ERR(23, 36, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__310);
+  __Pyx_GIVEREF(__pyx_tuple__310);
+  __pyx_codeobj__311 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__310, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_14, __pyx_n_s_request_call_2, 36, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__311)) __PYX_ERR(23, 36, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":53
+ *         <cpython.PyObject *>request_call_tag)
+ * 
+ *   def register_completion_queue(             # <<<<<<<<<<<<<<
+ *       self, CompletionQueue queue not None):
+ *     if self.is_started:
+ */
+  __pyx_tuple__312 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_queue); if (unlikely(!__pyx_tuple__312)) __PYX_ERR(23, 53, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__312);
+  __Pyx_GIVEREF(__pyx_tuple__312);
+  __pyx_codeobj__313 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__312, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_14, __pyx_n_s_register_completion_queue, 53, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__313)) __PYX_ERR(23, 53, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":62
+ *     self.registered_completion_queues.append(queue)
+ * 
+ *   def start(self, backup_queue=True):             # <<<<<<<<<<<<<<
+ *     """Start the Cython gRPC Server.
+ * 
+ */
+  __pyx_tuple__314 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_backup_queue); if (unlikely(!__pyx_tuple__314)) __PYX_ERR(23, 62, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__314);
+  __Pyx_GIVEREF(__pyx_tuple__314);
+  __pyx_codeobj__315 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__314, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_14, __pyx_n_s_start, 62, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__315)) __PYX_ERR(23, 62, __pyx_L1_error)
+  __pyx_tuple__316 = PyTuple_Pack(1, Py_True); if (unlikely(!__pyx_tuple__316)) __PYX_ERR(23, 62, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__316);
+  __Pyx_GIVEREF(__pyx_tuple__316);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":82
+ *       self.backup_shutdown_queue.poll(deadline=time.time())
+ * 
+ *   def add_http2_port(self, bytes address,             # <<<<<<<<<<<<<<
+ *                      ServerCredentials server_credentials=None):
+ *     address = str_to_bytes(address)
+ */
+  __pyx_tuple__317 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_address, __pyx_n_s_server_credentials, __pyx_n_s_result, __pyx_n_s_address_c_string, __pyx_n_s_creds); if (unlikely(!__pyx_tuple__317)) __PYX_ERR(23, 82, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__317);
+  __Pyx_GIVEREF(__pyx_tuple__317);
+  __pyx_codeobj__318 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__317, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_14, __pyx_n_s_add_http2_port, 82, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__318)) __PYX_ERR(23, 82, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":110
+ *           <cpython.PyObject *>server_shutdown_tag)
+ * 
+ *   def shutdown(self, CompletionQueue queue not None, tag):             # <<<<<<<<<<<<<<
+ *     if queue.is_shutting_down:
+ *       raise ValueError("queue must be live")
+ */
+  __pyx_tuple__319 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_queue, __pyx_n_s_tag); if (unlikely(!__pyx_tuple__319)) __PYX_ERR(23, 110, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__319);
+  __Pyx_GIVEREF(__pyx_tuple__319);
+  __pyx_codeobj__320 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__319, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_14, __pyx_n_s_shutdown, 110, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__320)) __PYX_ERR(23, 110, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":127
+ *     self.is_shutdown = True
+ * 
+ *   def cancel_all_calls(self):             # <<<<<<<<<<<<<<
+ *     if not self.is_shutting_down:
+ *       raise UsageError("the server must be shutting down to cancel all calls")
+ */
+  __pyx_codeobj__321 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_14, __pyx_n_s_cancel_all_calls, 127, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__321)) __PYX_ERR(23, 127, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":139
+ *   # portion of this is safe to call from __dealloc__, and potentially remove
+ *   # backup_shutdown_queue.
+ *   def destroy(self):             # <<<<<<<<<<<<<<
+ *     if self.c_server != NULL:
+ *       if not self.is_started:
+ */
+  __pyx_codeobj__322 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_14, __pyx_n_s_destroy, 139, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__322)) __PYX_ERR(23, 139, __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__323 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__323)) __PYX_ERR(10, 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__324 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__324)) __PYX_ERR(10, 3, __pyx_L1_error)
+
+  /* "(tree fragment)":1
+ * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
+ *     cdef tuple state
+ *     cdef object _dict
+ */
+  __pyx_codeobj__325 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__194, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__325)) __PYX_ERR(10, 1, __pyx_L1_error)
+
+  /* "(tree fragment)":16
+ *     else:
+ *         return __pyx_unpickle__Tag, (type(self), 0xe3b0c44, state)
+ * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
+ *     __pyx_unpickle__Tag__set_state(self, __pyx_state)
+ */
+  __pyx_codeobj__326 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 16, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__326)) __PYX_ERR(10, 16, __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__327 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__327)) __PYX_ERR(10, 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__328 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__328)) __PYX_ERR(10, 3, __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__329 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__329)) __PYX_ERR(10, 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__330 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__330)) __PYX_ERR(10, 3, __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__331 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__331)) __PYX_ERR(10, 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__332 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__332)) __PYX_ERR(10, 3, __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__333 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__333)) __PYX_ERR(10, 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__334 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__334)) __PYX_ERR(10, 3, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/_hooks.pyx.pxi":19
+ *   raise NotImplementedError("No custom hooks are implemented")
+ * 
+ * def install_context_from_request_call_event(RequestCallEvent event):             # <<<<<<<<<<<<<<
+ *   maybe_save_server_trace_context(event)
+ * 
+ */
+  __pyx_tuple__335 = PyTuple_Pack(1, __pyx_n_s_event); if (unlikely(!__pyx_tuple__335)) __PYX_ERR(26, 19, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__335);
+  __Pyx_GIVEREF(__pyx_tuple__335);
+  __pyx_codeobj__336 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__335, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_15, __pyx_n_s_install_context_from_request_cal_2, 19, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__336)) __PYX_ERR(26, 19, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/_hooks.pyx.pxi":22
+ *   maybe_save_server_trace_context(event)
+ * 
+ * def install_context_from_request_call_event_aio(GrpcCallWrapper event):             # <<<<<<<<<<<<<<
+ *   pass
+ * 
+ */
+  __pyx_codeobj__337 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__335, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_15, __pyx_n_s_install_context_from_request_cal, 22, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__337)) __PYX_ERR(26, 22, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/_hooks.pyx.pxi":25
+ *   pass
+ * 
+ * def uninstall_context():             # <<<<<<<<<<<<<<
+ *   pass
+ * 
+ */
+  __pyx_codeobj__338 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_15, __pyx_n_s_uninstall_context, 25, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__338)) __PYX_ERR(26, 25, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/_hooks.pyx.pxi":28
+ *   pass
+ * 
+ * def build_census_context():             # <<<<<<<<<<<<<<
+ *   pass
+ * 
+ */
+  __pyx_codeobj__339 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_15, __pyx_n_s_build_census_context, 28, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__339)) __PYX_ERR(26, 28, __pyx_L1_error)
+
+  /* "(tree fragment)":1
+ * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
+ *     cdef tuple state
+ *     cdef object _dict
+ */
+  __pyx_codeobj__340 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__194, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__340)) __PYX_ERR(10, 1, __pyx_L1_error)
+
+  /* "(tree fragment)":16
+ *     else:
+ *         return __pyx_unpickle_CensusContext, (type(self), 0xe3b0c44, state)
+ * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
+ *     __pyx_unpickle_CensusContext__set_state(self, __pyx_state)
+ */
+  __pyx_codeobj__341 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 16, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__341)) __PYX_ERR(10, 16, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/_hooks.pyx.pxi":34
+ *   pass
+ * 
+ * def set_census_context_on_call(_CallState call_state, CensusContext census_ctx):             # <<<<<<<<<<<<<<
+ *   pass
+ * 
+ */
+  __pyx_tuple__342 = PyTuple_Pack(2, __pyx_n_s_call_state, __pyx_n_s_census_ctx); if (unlikely(!__pyx_tuple__342)) __PYX_ERR(26, 34, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__342);
+  __Pyx_GIVEREF(__pyx_tuple__342);
+  __pyx_codeobj__343 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__342, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_15, __pyx_n_s_set_census_context_on_call, 34, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__343)) __PYX_ERR(26, 34, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/_hooks.pyx.pxi":37
+ *   pass
+ * 
+ * def set_instrumentation_context_on_call_aio(GrpcCallWrapper call_state, CensusContext census_ctx):             # <<<<<<<<<<<<<<
+ *   pass
+ * 
+ */
+  __pyx_codeobj__344 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__342, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_15, __pyx_n_s_set_instrumentation_context_on_c, 37, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__344)) __PYX_ERR(26, 37, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/_hooks.pyx.pxi":40
+ *   pass
+ * 
+ * def get_deadline_from_context():             # <<<<<<<<<<<<<<
+ *   return None
+ */
+  __pyx_codeobj__345 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_15, __pyx_n_s_get_deadline_from_context, 40, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__345)) __PYX_ERR(26, 40, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/observability.pyx.pxi":26
+ * 
+ * 
+ * def set_server_call_tracer_factory(object observability_plugin) -> None:             # <<<<<<<<<<<<<<
+ *   capsule = observability_plugin.create_server_call_tracer_factory()
+ *   capsule_ptr = cpython.PyCapsule_GetPointer(capsule, SERVER_CALL_TRACER_FACTORY)
+ */
+  __pyx_tuple__346 = PyTuple_Pack(3, __pyx_n_s_observability_plugin, __pyx_n_s_capsule, __pyx_n_s_capsule_ptr); if (unlikely(!__pyx_tuple__346)) __PYX_ERR(27, 26, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__346);
+  __Pyx_GIVEREF(__pyx_tuple__346);
+  __pyx_codeobj__347 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__346, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_16, __pyx_n_s_set_server_call_tracer_factory, 26, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__347)) __PYX_ERR(27, 26, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/observability.pyx.pxi":32
+ * 
+ * 
+ * def clear_server_call_tracer_factory() -> None:             # <<<<<<<<<<<<<<
+ *   _register_server_call_tracer_factory(NULL)
+ * 
+ */
+  __pyx_codeobj__348 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_16, __pyx_n_s_clear_server_call_tracer_factory, 32, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__348)) __PYX_ERR(27, 32, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/observability.pyx.pxi":36
+ * 
+ * 
+ * def maybe_save_server_trace_context(RequestCallEvent event) -> None:             # <<<<<<<<<<<<<<
+ *   cdef ServerCallTracer* server_call_tracer
+ *   with _observability.get_plugin() as plugin:
+ */
+  __pyx_tuple__349 = PyTuple_Pack(6, __pyx_n_s_event, __pyx_n_s_server_call_tracer, __pyx_n_s_plugin, __pyx_n_s_trace_id, __pyx_n_s_span_id, __pyx_n_s_is_sampled); if (unlikely(!__pyx_tuple__349)) __PYX_ERR(27, 36, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__349);
+  __Pyx_GIVEREF(__pyx_tuple__349);
+  __pyx_codeobj__350 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 6, 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_python_grpcio_grpc__cython_16, __pyx_n_s_maybe_save_server_trace_context, 36, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__350)) __PYX_ERR(27, 36, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":49
+ * 
+ * 
+ * cpdef void gevent_increment_channel_count():             # <<<<<<<<<<<<<<
+ *   global g_channel_count
+ *   cdef int old_channel_count
+ */
+  __pyx_codeobj__351 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_17, __pyx_n_s_gevent_increment_channel_count, 49, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__351)) __PYX_ERR(28, 49, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":61
+ * 
+ * 
+ * cpdef void gevent_decrement_channel_count():             # <<<<<<<<<<<<<<
+ *   global g_channel_count
+ *   with nogil:
+ */
+  __pyx_codeobj__352 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_17, __pyx_n_s_gevent_decrement_channel_count, 61, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__352)) __PYX_ERR(28, 61, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":93
+ *   return to_call
+ * 
+ * def spawn_greenlets():             # <<<<<<<<<<<<<<
+ *   while True:
+ *     to_call = g_gevent_threadpool.apply(await_next_greenlet, ())
+ */
+  __pyx_tuple__353 = PyTuple_Pack(3, __pyx_n_s_to_call, __pyx_n_s_fn, __pyx_n_s_args); if (unlikely(!__pyx_tuple__353)) __PYX_ERR(28, 93, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__353);
+  __Pyx_GIVEREF(__pyx_tuple__353);
+  __pyx_codeobj__354 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 3, 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_python_grpcio_grpc__cython_17, __pyx_n_s_spawn_greenlets, 93, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__354)) __PYX_ERR(28, 93, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":102
+ *     fn(*args)
+ * 
+ * def run_spawn_greenlets():             # <<<<<<<<<<<<<<
+ *   g_gevent_pool.spawn(spawn_greenlets)
+ * 
+ */
+  __pyx_codeobj__355 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_17, __pyx_n_s_run_spawn_greenlets, 102, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__355)) __PYX_ERR(28, 102, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":105
+ *   g_gevent_pool.spawn(spawn_greenlets)
+ * 
+ * def shutdown_await_next_greenlet():             # <<<<<<<<<<<<<<
+ *   global g_shutdown_greenlets_to_run_queue
+ *   cdef unique_lock[mutex]* lk
+ */
+  __pyx_tuple__356 = PyTuple_Pack(1, __pyx_n_s_lk); if (unlikely(!__pyx_tuple__356)) __PYX_ERR(28, 105, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__356);
+  __Pyx_GIVEREF(__pyx_tuple__356);
+  __pyx_codeobj__357 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 1, 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_python_grpcio_grpc__cython_17, __pyx_n_s_shutdown_await_next_greenlet, 105, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__357)) __PYX_ERR(28, 105, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":114
+ *   g_greenlets_cv.notify_all()
+ * 
+ * def init_grpc_gevent():             # <<<<<<<<<<<<<<
+ *   # Lazily import gevent
+ *   global gevent_hub
+ */
+  __pyx_tuple__358 = PyTuple_Pack(1, __pyx_n_s_gevent); if (unlikely(!__pyx_tuple__358)) __PYX_ERR(28, 114, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__358);
+  __Pyx_GIVEREF(__pyx_tuple__358);
+  __pyx_codeobj__359 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__358, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_17, __pyx_n_s_init_grpc_gevent, 114, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__359)) __PYX_ERR(28, 114, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":15
+ * # limitations under the License.
+ * 
+ * def _contextvars_supported():             # <<<<<<<<<<<<<<
+ *     """Determines if the contextvars module is supported.
+ * 
+ */
+  __pyx_tuple__360 = PyTuple_Pack(1, __pyx_n_s_contextvars); if (unlikely(!__pyx_tuple__360)) __PYX_ERR(29, 15, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__360);
+  __Pyx_GIVEREF(__pyx_tuple__360);
+  __pyx_codeobj__361 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__360, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_3, __pyx_n_s_contextvars_supported, 15, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__361)) __PYX_ERR(29, 15, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":33
+ * 
+ * 
+ * def _run_with_context(target):             # <<<<<<<<<<<<<<
+ *     """Runs a callable with contextvars propagated.
+ * 
+ */
+  __pyx_tuple__362 = PyTuple_Pack(1, __pyx_n_s_target); if (unlikely(!__pyx_tuple__362)) __PYX_ERR(29, 33, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__362);
+  __Pyx_GIVEREF(__pyx_tuple__362);
+  __pyx_codeobj__363 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 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_python_grpcio_grpc__cython_3, __pyx_n_s_run_with_context, 33, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__363)) __PYX_ERR(29, 33, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":50
+ * if _contextvars_supported():
+ *     import contextvars
+ *     def _run_with_context(target):             # <<<<<<<<<<<<<<
+ *         ctx = contextvars.copy_context()
+ *         def _run(*args):
+ */
+  __pyx_tuple__364 = PyTuple_Pack(4, __pyx_n_s_target, __pyx_n_s_ctx, __pyx_n_s_run_2, __pyx_n_s_run_2); if (unlikely(!__pyx_tuple__364)) __PYX_ERR(29, 50, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__364);
+  __Pyx_GIVEREF(__pyx_tuple__364);
+  __pyx_codeobj__365 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_3, __pyx_n_s_run_with_context, 50, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__365)) __PYX_ERR(29, 50, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":56
+ *         return _run
+ * else:
+ *     def _run_with_context(target):             # <<<<<<<<<<<<<<
+ *         def _run(*args):
+ *             target(*args)
+ */
+  __pyx_tuple__366 = PyTuple_Pack(3, __pyx_n_s_target, __pyx_n_s_run_2, __pyx_n_s_run_2); if (unlikely(!__pyx_tuple__366)) __PYX_ERR(29, 56, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__366);
+  __Pyx_GIVEREF(__pyx_tuple__366);
+  __pyx_codeobj__367 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__366, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_3, __pyx_n_s_run_with_context, 56, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__367)) __PYX_ERR(29, 56, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":33
+ * # This flag is also not supported for non-native IO manager.
+ * _GRPC_ENABLE_FORK_SUPPORT = (
+ *     os.environ.get('GRPC_ENABLE_FORK_SUPPORT', '0')             # <<<<<<<<<<<<<<
+ *         .lower() in _TRUE_VALUES)
+ * 
+ */
+  __pyx_tuple__368 = PyTuple_Pack(2, __pyx_n_s_GRPC_ENABLE_FORK_SUPPORT_2, __pyx_kp_s_0); if (unlikely(!__pyx_tuple__368)) __PYX_ERR(1, 33, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__368);
+  __Pyx_GIVEREF(__pyx_tuple__368);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":89
+ * 
+ * 
+ * def fork_handlers_and_grpc_init():             # <<<<<<<<<<<<<<
+ *     grpc_init()
+ *     if _GRPC_ENABLE_FORK_SUPPORT:
+ */
+  __pyx_codeobj__369 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_4, __pyx_n_s_fork_handlers_and_grpc_init, 89, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__369)) __PYX_ERR(1, 89, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":102
+ * 
+ * 
+ * class ForkManagedThread(object):             # <<<<<<<<<<<<<<
+ *     def __init__(self, target, args=()):
+ *         if _GRPC_ENABLE_FORK_SUPPORT:
+ */
+  __pyx_tuple__370 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__370)) __PYX_ERR(1, 102, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__370);
+  __Pyx_GIVEREF(__pyx_tuple__370);
+  __pyx_tuple__371 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__371)) __PYX_ERR(1, 102, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__371);
+  __Pyx_GIVEREF(__pyx_tuple__371);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":103
+ * 
+ * class ForkManagedThread(object):
+ *     def __init__(self, target, args=()):             # <<<<<<<<<<<<<<
+ *         if _GRPC_ENABLE_FORK_SUPPORT:
+ *             def managed_target(*args):
+ */
+  __pyx_tuple__372 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_target, __pyx_n_s_args, __pyx_n_s_managed_target, __pyx_n_s_managed_target); if (unlikely(!__pyx_tuple__372)) __PYX_ERR(1, 103, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__372);
+  __Pyx_GIVEREF(__pyx_tuple__372);
+  __pyx_codeobj__373 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__372, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_4, __pyx_n_s_init, 103, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__373)) __PYX_ERR(1, 103, __pyx_L1_error)
+  __pyx_tuple__374 = PyTuple_Pack(1, ((PyObject*)__pyx_empty_tuple)); if (unlikely(!__pyx_tuple__374)) __PYX_ERR(1, 103, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__374);
+  __Pyx_GIVEREF(__pyx_tuple__374);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":114
+ *             self._thread = threading.Thread(target=_run_with_context(target), args=args)
+ * 
+ *     def setDaemon(self, daemonic):             # <<<<<<<<<<<<<<
+ *         self._thread.daemon = daemonic
+ * 
+ */
+  __pyx_tuple__375 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_daemonic); if (unlikely(!__pyx_tuple__375)) __PYX_ERR(1, 114, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__375);
+  __Pyx_GIVEREF(__pyx_tuple__375);
+  __pyx_codeobj__376 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__375, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_4, __pyx_n_s_setDaemon, 114, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__376)) __PYX_ERR(1, 114, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":117
+ *         self._thread.daemon = daemonic
+ * 
+ *     def start(self):             # <<<<<<<<<<<<<<
+ *         if _GRPC_ENABLE_FORK_SUPPORT:
+ *             _fork_state.active_thread_count.increment()
+ */
+  __pyx_codeobj__377 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_4, __pyx_n_s_start, 117, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__377)) __PYX_ERR(1, 117, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":122
+ *         self._thread.start()
+ * 
+ *     def join(self):             # <<<<<<<<<<<<<<
+ *         self._thread.join()
+ * 
+ */
+  __pyx_codeobj__378 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_4, __pyx_n_s_join, 122, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__378)) __PYX_ERR(1, 122, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":126
+ * 
+ * 
+ * def block_if_fork_in_progress(postfork_state_to_reset=None):             # <<<<<<<<<<<<<<
+ *     if _GRPC_ENABLE_FORK_SUPPORT:
+ *         with _fork_state.fork_in_progress_condition:
+ */
+  __pyx_tuple__379 = PyTuple_Pack(1, __pyx_n_s_postfork_state_to_reset); if (unlikely(!__pyx_tuple__379)) __PYX_ERR(1, 126, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__379);
+  __Pyx_GIVEREF(__pyx_tuple__379);
+  __pyx_codeobj__380 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__379, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_4, __pyx_n_s_block_if_fork_in_progress, 126, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__380)) __PYX_ERR(1, 126, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":138
+ * 
+ * 
+ * def enter_user_request_generator():             # <<<<<<<<<<<<<<
+ *     if _GRPC_ENABLE_FORK_SUPPORT:
+ *         _fork_state.active_thread_count.decrement()
+ */
+  __pyx_codeobj__381 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_4, __pyx_n_s_enter_user_request_generator, 138, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__381)) __PYX_ERR(1, 138, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":143
+ * 
+ * 
+ * def return_from_user_request_generator():             # <<<<<<<<<<<<<<
+ *     if _GRPC_ENABLE_FORK_SUPPORT:
+ *         _fork_state.active_thread_count.increment()
+ */
+  __pyx_codeobj__382 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_4, __pyx_n_s_return_from_user_request_generat, 143, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__382)) __PYX_ERR(1, 143, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":149
+ * 
+ * 
+ * def get_fork_epoch():             # <<<<<<<<<<<<<<
+ *     return _fork_state.fork_epoch
+ * 
+ */
+  __pyx_codeobj__383 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_4, __pyx_n_s_get_fork_epoch, 149, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__383)) __PYX_ERR(1, 149, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":153
+ * 
+ * 
+ * def is_fork_support_enabled():             # <<<<<<<<<<<<<<
+ *     return _GRPC_ENABLE_FORK_SUPPORT
+ * 
+ */
+  __pyx_codeobj__384 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_4, __pyx_n_s_is_fork_support_enabled, 153, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__384)) __PYX_ERR(1, 153, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":157
+ * 
+ * 
+ * def fork_register_channel(channel):             # <<<<<<<<<<<<<<
+ *     if _GRPC_ENABLE_FORK_SUPPORT:
+ *         _fork_state.channels.add(channel)
+ */
+  __pyx_tuple__385 = PyTuple_Pack(1, __pyx_n_s_channel); if (unlikely(!__pyx_tuple__385)) __PYX_ERR(1, 157, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__385);
+  __Pyx_GIVEREF(__pyx_tuple__385);
+  __pyx_codeobj__386 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 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_python_grpcio_grpc__cython_4, __pyx_n_s_fork_register_channel, 157, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__386)) __PYX_ERR(1, 157, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":162
+ * 
+ * 
+ * def fork_unregister_channel(channel):             # <<<<<<<<<<<<<<
+ *     if _GRPC_ENABLE_FORK_SUPPORT:
+ *         _fork_state.channels.discard(channel)
+ */
+  __pyx_codeobj__387 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 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_python_grpcio_grpc__cython_4, __pyx_n_s_fork_unregister_channel, 162, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__387)) __PYX_ERR(1, 162, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":167
+ * 
+ * 
+ * class _ActiveThreadCount(object):             # <<<<<<<<<<<<<<
+ *     def __init__(self):
+ *         self._num_active_threads = 0
+ */
+  __pyx_tuple__388 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__388)) __PYX_ERR(1, 167, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__388);
+  __Pyx_GIVEREF(__pyx_tuple__388);
+  __pyx_tuple__389 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__389)) __PYX_ERR(1, 167, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__389);
+  __Pyx_GIVEREF(__pyx_tuple__389);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":168
+ * 
+ * class _ActiveThreadCount(object):
+ *     def __init__(self):             # <<<<<<<<<<<<<<
+ *         self._num_active_threads = 0
+ *         self._condition = threading.Condition()
+ */
+  __pyx_codeobj__390 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_4, __pyx_n_s_init, 168, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__390)) __PYX_ERR(1, 168, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":172
+ *         self._condition = threading.Condition()
+ * 
+ *     def increment(self):             # <<<<<<<<<<<<<<
+ *         with self._condition:
+ *             self._num_active_threads += 1
+ */
+  __pyx_codeobj__391 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_4, __pyx_n_s_increment, 172, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__391)) __PYX_ERR(1, 172, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":176
+ *             self._num_active_threads += 1
+ * 
+ *     def decrement(self):             # <<<<<<<<<<<<<<
+ *         with self._condition:
+ *             self._num_active_threads -= 1
+ */
+  __pyx_codeobj__392 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_4, __pyx_n_s_decrement, 176, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__392)) __PYX_ERR(1, 176, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":182
+ *                 self._condition.notify_all()
+ * 
+ *     def await_zero_threads(self, timeout_secs):             # <<<<<<<<<<<<<<
+ *         end_time = time.time() + timeout_secs
+ *         wait_time = timeout_secs
+ */
+  __pyx_tuple__393 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_timeout_secs, __pyx_n_s_end_time, __pyx_n_s_wait_time); if (unlikely(!__pyx_tuple__393)) __PYX_ERR(1, 182, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__393);
+  __Pyx_GIVEREF(__pyx_tuple__393);
+  __pyx_codeobj__394 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__393, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_4, __pyx_n_s_await_zero_threads, 182, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__394)) __PYX_ERR(1, 182, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":199
+ * 
+ * 
+ * class _ForkState(object):             # <<<<<<<<<<<<<<
+ *     def __init__(self):
+ *         self.fork_in_progress_condition = threading.Condition()
+ */
+  __pyx_tuple__395 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__395)) __PYX_ERR(1, 199, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__395);
+  __Pyx_GIVEREF(__pyx_tuple__395);
+  __pyx_tuple__396 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__396)) __PYX_ERR(1, 199, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__396);
+  __Pyx_GIVEREF(__pyx_tuple__396);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":200
+ * 
+ * class _ForkState(object):
+ *     def __init__(self):             # <<<<<<<<<<<<<<
+ *         self.fork_in_progress_condition = threading.Condition()
+ *         self.fork_in_progress = False
+ */
+  __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__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_4, __pyx_n_s_init, 200, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__397)) __PYX_ERR(1, 200, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":61
+ * class _EOF:
+ * 
+ *     def __bool__(self):             # <<<<<<<<<<<<<<
+ *         return False
+ * 
+ */
+  __pyx_codeobj__398 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_5, __pyx_n_s_bool, 61, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__398)) __PYX_ERR(6, 61, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":64
+ *         return False
+ * 
+ *     def __len__(self):             # <<<<<<<<<<<<<<
+ *         return 0
+ * 
+ */
+  __pyx_codeobj__399 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_5, __pyx_n_s_len, 64, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__399)) __PYX_ERR(6, 64, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":67
+ *         return 0
+ * 
+ *     def _repr(self) -> str:             # <<<<<<<<<<<<<<
+ *         return '<grpc.aio.EOF>'
+ * 
+ */
+  __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__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_5, __pyx_n_s_repr, 67, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__400)) __PYX_ERR(6, 67, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":70
+ *         return '<grpc.aio.EOF>'
+ * 
+ *     def __repr__(self) -> str:             # <<<<<<<<<<<<<<
+ *         return self._repr()
+ * 
+ */
+  __pyx_codeobj__401 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_5, __pyx_n_s_repr_2, 70, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__401)) __PYX_ERR(6, 70, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":73
+ *         return self._repr()
+ * 
+ *     def __str__(self) -> str:             # <<<<<<<<<<<<<<
+ *         return self._repr()
+ * 
+ */
+  __pyx_codeobj__402 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_5, __pyx_n_s_str_2, 73, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__402)) __PYX_ERR(6, 73, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":110
+ * 
+ * 
+ * def schedule_coro_threadsafe(object coro, object loop):             # <<<<<<<<<<<<<<
+ *     try:
+ *         return loop.create_task(coro)
+ */
+  __pyx_tuple__403 = PyTuple_Pack(3, __pyx_n_s_coro, __pyx_n_s_loop, __pyx_n_s_runtime_error); if (unlikely(!__pyx_tuple__403)) __PYX_ERR(6, 110, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__403);
+  __Pyx_GIVEREF(__pyx_tuple__403);
+  __pyx_codeobj__404 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__403, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_5, __pyx_n_s_schedule_coro_threadsafe, 110, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__404)) __PYX_ERR(6, 110, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":123
+ * 
+ * 
+ * def async_generator_to_generator(object agen, object loop):             # <<<<<<<<<<<<<<
+ *     """Converts an async generator into generator."""
+ *     try:
+ */
+  __pyx_tuple__405 = PyTuple_Pack(4, __pyx_n_s_agen, __pyx_n_s_loop, __pyx_n_s_future, __pyx_n_s_response); if (unlikely(!__pyx_tuple__405)) __PYX_ERR(6, 123, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__405);
+  __Pyx_GIVEREF(__pyx_tuple__405);
+  __pyx_codeobj__44 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_GENERATOR, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__405, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_5, __pyx_n_s_async_generator_to_generator, 123, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__44)) __PYX_ERR(6, 123, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":141
+ * 
+ * 
+ * async def generator_to_async_generator(object gen, object loop, object thread_pool):             # <<<<<<<<<<<<<<
+ *     """Converts a generator into async generator.
+ * 
+ */
+  __pyx_tuple__406 = PyTuple_Pack(8, __pyx_n_s_gen, __pyx_n_s_loop, __pyx_n_s_thread_pool, __pyx_n_s_queue, __pyx_n_s_yield_to_queue, __pyx_n_s_yield_to_queue, __pyx_n_s_future, __pyx_n_s_response); if (unlikely(!__pyx_tuple__406)) __PYX_ERR(6, 141, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__406);
+  __Pyx_GIVEREF(__pyx_tuple__406);
+  __pyx_codeobj__45 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_ASYNC_GENERATOR, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__406, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_5, __pyx_n_s_generator_to_async_generator, 141, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__45)) __PYX_ERR(6, 141, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":177
+ * 
+ * if PY_MAJOR_VERSION >= 3 and PY_MINOR_VERSION >= 7:
+ *     def get_working_loop():             # <<<<<<<<<<<<<<
+ *         """Returns a running event loop.
+ * 
+ */
+  __pyx_codeobj__407 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_5, __pyx_n_s_get_working_loop, 177, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__407)) __PYX_ERR(6, 177, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":196
+ *                     return asyncio.get_event_loop_policy().new_event_loop()
+ * else:
+ *     def get_working_loop():             # <<<<<<<<<<<<<<
+ *         """Returns a running event loop."""
+ *         return asyncio.get_event_loop()
+ */
+  __pyx_codeobj__408 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_5, __pyx_n_s_get_working_loop, 196, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__408)) __PYX_ERR(6, 196, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":201
+ * 
+ * 
+ * def raise_if_not_valid_trailing_metadata(object metadata):             # <<<<<<<<<<<<<<
+ *     if not hasattr(metadata, '__iter__') or isinstance(metadata, dict):
+ *         raise TypeError(f'Invalid trailing metadata type, expected {TYPE_METADATA_STRING}: {metadata}')
+ */
+  __pyx_tuple__409 = PyTuple_Pack(2, __pyx_n_s_metadata, __pyx_n_s_item); if (unlikely(!__pyx_tuple__409)) __PYX_ERR(6, 201, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__409);
+  __Pyx_GIVEREF(__pyx_tuple__409);
+  __pyx_codeobj__410 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__409, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_5, __pyx_n_s_raise_if_not_valid_trailing_meta, 201, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__410)) __PYX_ERR(6, 201, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pyx.pxi":31
+ *         self._debug_error_string = debug_error_string
+ * 
+ *     cpdef grpc_status_code code(self):             # <<<<<<<<<<<<<<
+ *         return self._code
+ * 
+ */
+  __pyx_codeobj__411 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_18, __pyx_n_s_code, 31, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__411)) __PYX_ERR(30, 31, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pyx.pxi":34
+ *         return self._code
+ * 
+ *     cpdef str details(self):             # <<<<<<<<<<<<<<
+ *         return self._details
+ * 
+ */
+  __pyx_codeobj__412 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_18, __pyx_n_s_details, 34, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__412)) __PYX_ERR(30, 34, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pyx.pxi":37
+ *         return self._details
+ * 
+ *     cpdef tuple trailing_metadata(self):             # <<<<<<<<<<<<<<
+ *         return self._trailing_metadata
+ * 
+ */
+  __pyx_codeobj__413 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_18, __pyx_n_s_trailing_metadata, 37, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__413)) __PYX_ERR(30, 37, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pyx.pxi":40
+ *         return self._trailing_metadata
+ * 
+ *     cpdef str debug_error_string(self):             # <<<<<<<<<<<<<<
+ *         return self._debug_error_string
+ * 
+ */
+  __pyx_codeobj__414 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_18, __pyx_n_s_debug_error_string, 40, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__414)) __PYX_ERR(30, 40, __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__415 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__415)) __PYX_ERR(10, 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__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__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__416)) __PYX_ERR(10, 3, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":34
+ * 
+ * 
+ * def _handle_callback_wrapper(CallbackWrapper callback_wrapper, int success):             # <<<<<<<<<<<<<<
+ *     CallbackWrapper.functor_run(callback_wrapper.c_functor(), success)
+ * 
+ */
+  __pyx_tuple__417 = PyTuple_Pack(2, __pyx_n_s_callback_wrapper, __pyx_n_s_success); if (unlikely(!__pyx_tuple__417)) __PYX_ERR(7, 34, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__417);
+  __Pyx_GIVEREF(__pyx_tuple__417);
+  __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__417, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_19, __pyx_n_s_handle_callback_wrapper, 34, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__418)) __PYX_ERR(7, 34, __pyx_L1_error)
+
+  /* "(tree fragment)":1
+ * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
+ *     raise TypeError, "self._cq cannot be converted to a Python object for pickling"
+ * def __setstate_cython__(self, __pyx_state):
+ */
+  __pyx_codeobj__419 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__419)) __PYX_ERR(10, 1, __pyx_L1_error)
+
+  /* "(tree fragment)":3
+ * def __reduce_cython__(self):
+ *     raise TypeError, "self._cq cannot be converted to a Python object for pickling"
+ * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
+ *     raise TypeError, "self._cq cannot be converted to a Python object for pickling"
+ */
+  __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__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__420)) __PYX_ERR(10, 3, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":66
+ *                 self._has_reader = False
+ * 
+ *     def close(self):             # <<<<<<<<<<<<<<
+ *         if self.loop:
+ *             if self._has_reader:
+ */
+  __pyx_codeobj__421 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_19, __pyx_n_s_close, 66, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__421)) __PYX_ERR(7, 66, __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__422 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__422)) __PYX_ERR(10, 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__423 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__423)) __PYX_ERR(10, 3, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":91
+ *         self._queue = cpp_event_queue()
+ * 
+ *     def bind_loop(self, object loop):             # <<<<<<<<<<<<<<
+ *         if loop in self._loops:
+ *             return
+ */
+  __pyx_tuple__424 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_loop); if (unlikely(!__pyx_tuple__424)) __PYX_ERR(7, 91, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__424);
+  __Pyx_GIVEREF(__pyx_tuple__424);
+  __pyx_codeobj__425 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__424, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_19, __pyx_n_s_bind_loop, 91, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__425)) __PYX_ERR(7, 91, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":124
+ *                         self._handle_events(None)
+ * 
+ *     def _poll_wrapper(self):             # <<<<<<<<<<<<<<
+ *         with nogil:
+ *             self._poll()
+ */
+  __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__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_19, __pyx_n_s_poll_wrapper, 124, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__426)) __PYX_ERR(7, 124, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":143
+ *         self._write_socket.close()
+ * 
+ *     def _handle_events(self, object context_loop):             # <<<<<<<<<<<<<<
+ *         cdef bytes data
+ *         if _has_fd_monitoring:
+ */
+  __pyx_tuple__427 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_context_loop, __pyx_n_s_data, __pyx_n_s_event, __pyx_n_s_context, __pyx_n_s_loop); if (unlikely(!__pyx_tuple__427)) __PYX_ERR(7, 143, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__427);
+  __Pyx_GIVEREF(__pyx_tuple__427);
+  __pyx_codeobj__428 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__427, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_19, __pyx_n_s_handle_events, 143, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__428)) __PYX_ERR(7, 143, __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__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__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__429)) __PYX_ERR(10, 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__430 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__430)) __PYX_ERR(10, 3, __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__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__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__431)) __PYX_ERR(10, 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__432 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__432)) __PYX_ERR(10, 3, __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__433 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__433)) __PYX_ERR(10, 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__434 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__434)) __PYX_ERR(10, 3, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":77
+ * 
+ * 
+ * async def execute_batch(GrpcCallWrapper grpc_call_wrapper,             # <<<<<<<<<<<<<<
+ *                                tuple operations,
+ *                                object loop):
+ */
+  __pyx_tuple__435 = PyTuple_Pack(9, __pyx_n_s_grpc_call_wrapper, __pyx_n_s_operations, __pyx_n_s_loop, __pyx_n_s_batch_operation_tag, __pyx_n_s_future, __pyx_n_s_wrapper, __pyx_n_s_error, __pyx_n_s_grpc_call_error_string, __pyx_n_s_c_event); if (unlikely(!__pyx_tuple__435)) __PYX_ERR(32, 77, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__435);
+  __Pyx_GIVEREF(__pyx_tuple__435);
+  __pyx_codeobj__51 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 9, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__435, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_20, __pyx_n_s_execute_batch, 77, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__51)) __PYX_ERR(32, 77, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":115
+ * 
+ * 
+ * async def _receive_message(GrpcCallWrapper grpc_call_wrapper,             # <<<<<<<<<<<<<<
+ *                            object loop):
+ *     """Retrives parsed messages from Core.
+ */
+  __pyx_tuple__436 = PyTuple_Pack(5, __pyx_n_s_grpc_call_wrapper, __pyx_n_s_loop, __pyx_n_s_receive_op, __pyx_n_s_ops, __pyx_n_s_e); if (unlikely(!__pyx_tuple__436)) __PYX_ERR(32, 115, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__436);
+  __Pyx_GIVEREF(__pyx_tuple__436);
+  __pyx_codeobj__52 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__436, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_20, __pyx_n_s_receive_message, 115, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__52)) __PYX_ERR(32, 115, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":139
+ * 
+ * 
+ * async def _send_message(GrpcCallWrapper grpc_call_wrapper,             # <<<<<<<<<<<<<<
+ *                         bytes message,
+ *                         Operation send_initial_metadata_op,
+ */
+  __pyx_tuple__437 = PyTuple_Pack(7, __pyx_n_s_grpc_call_wrapper, __pyx_n_s_message, __pyx_n_s_send_initial_metadata_op, __pyx_n_s_write_flag, __pyx_n_s_loop, __pyx_n_s_op, __pyx_n_s_ops); if (unlikely(!__pyx_tuple__437)) __PYX_ERR(32, 139, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__437);
+  __Pyx_GIVEREF(__pyx_tuple__437);
+  __pyx_codeobj__53 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__437, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_20, __pyx_n_s_send_message, 139, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__53)) __PYX_ERR(32, 139, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":151
+ * 
+ * 
+ * async def _send_initial_metadata(GrpcCallWrapper grpc_call_wrapper,             # <<<<<<<<<<<<<<
+ *                                  tuple metadata,
+ *                                  int flags,
+ */
+  __pyx_tuple__438 = PyTuple_Pack(6, __pyx_n_s_grpc_call_wrapper, __pyx_n_s_metadata, __pyx_n_s_flags, __pyx_n_s_loop, __pyx_n_s_op, __pyx_n_s_ops); if (unlikely(!__pyx_tuple__438)) __PYX_ERR(32, 151, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__438);
+  __Pyx_GIVEREF(__pyx_tuple__438);
+  __pyx_codeobj__54 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__438, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_20, __pyx_n_s_send_initial_metadata, 151, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__54)) __PYX_ERR(32, 151, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":162
+ * 
+ * 
+ * async def _receive_initial_metadata(GrpcCallWrapper grpc_call_wrapper,             # <<<<<<<<<<<<<<
+ *                                     object loop):
+ *     cdef ReceiveInitialMetadataOperation op = ReceiveInitialMetadataOperation(_EMPTY_FLAGS)
+ */
+  __pyx_tuple__439 = PyTuple_Pack(4, __pyx_n_s_grpc_call_wrapper, __pyx_n_s_loop, __pyx_n_s_op, __pyx_n_s_ops); if (unlikely(!__pyx_tuple__439)) __PYX_ERR(32, 162, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__439);
+  __Pyx_GIVEREF(__pyx_tuple__439);
+  __pyx_codeobj__55 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__439, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_20, __pyx_n_s_receive_initial_metadata, 162, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__55)) __PYX_ERR(32, 162, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":169
+ *     return op.initial_metadata()
+ * 
+ * async def _send_error_status_from_server(GrpcCallWrapper grpc_call_wrapper,             # <<<<<<<<<<<<<<
+ *                                          grpc_status_code code,
+ *                                          str details,
+ */
+  __pyx_tuple__440 = PyTuple_Pack(8, __pyx_n_s_grpc_call_wrapper, __pyx_n_s_code, __pyx_n_s_details, __pyx_n_s_trailing_metadata, __pyx_n_s_send_initial_metadata_op, __pyx_n_s_loop, __pyx_n_s_op, __pyx_n_s_ops); if (unlikely(!__pyx_tuple__440)) __PYX_ERR(32, 169, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__440);
+  __Pyx_GIVEREF(__pyx_tuple__440);
+  __pyx_codeobj__56 = (PyObject*)__Pyx_PyCode_New(6, 0, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__440, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_20, __pyx_n_s_send_error_status_from_server, 169, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__56)) __PYX_ERR(32, 169, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":17
+ * import enum
+ * 
+ * cdef str _GRPC_ASYNCIO_ENGINE = os.environ.get('GRPC_ASYNCIO_ENGINE', 'poller').upper()             # <<<<<<<<<<<<<<
+ * cdef _AioState _global_aio_state = _AioState()
+ * 
+ */
+  __pyx_tuple__441 = PyTuple_Pack(2, __pyx_n_s_GRPC_ASYNCIO_ENGINE, __pyx_n_s_poller); if (unlikely(!__pyx_tuple__441)) __PYX_ERR(33, 17, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__441);
+  __Pyx_GIVEREF(__pyx_tuple__441);
+
+  /* "(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__442 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__442)) __PYX_ERR(10, 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__443 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__443)) __PYX_ERR(10, 3, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":68
+ * 
+ * 
+ * def _grpc_shutdown_wrapper(_):             # <<<<<<<<<<<<<<
+ *     """A thin Python wrapper of Core's shutdown function.
+ * 
+ */
+  __pyx_tuple__444 = PyTuple_Pack(1, __pyx_n_s__57); if (unlikely(!__pyx_tuple__444)) __PYX_ERR(33, 68, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__444);
+  __Pyx_GIVEREF(__pyx_tuple__444);
+  __pyx_codeobj__445 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__444, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_21, __pyx_n_s_grpc_shutdown_wrapper, 68, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__445)) __PYX_ERR(33, 68, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":91
+ * 
+ * 
+ * cpdef init_grpc_aio():             # <<<<<<<<<<<<<<
+ *     """Initializes the gRPC AsyncIO module.
+ * 
+ */
+  __pyx_codeobj__446 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_21, __pyx_n_s_init_grpc_aio, 91, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__446)) __PYX_ERR(33, 91, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":104
+ * 
+ * 
+ * cpdef shutdown_grpc_aio():             # <<<<<<<<<<<<<<
+ *     """Shuts down the gRPC AsyncIO module.
+ * 
+ */
+  __pyx_codeobj__447 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_21, __pyx_n_s_shutdown_grpc_aio, 104, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__447)) __PYX_ERR(33, 104, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":69
+ *         shutdown_grpc_aio()
+ * 
+ *     def _repr(self) -> str:             # <<<<<<<<<<<<<<
+ *         """Assembles the RPC representation string."""
+ *         # This needs to be loaded at run time once everything
+ */
+  __pyx_tuple__448 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_common); if (unlikely(!__pyx_tuple__448)) __PYX_ERR(34, 69, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__448);
+  __Pyx_GIVEREF(__pyx_tuple__448);
+  __pyx_codeobj__449 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 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_python_grpcio_grpc__cython_22, __pyx_n_s_repr, 69, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__449)) __PYX_ERR(34, 69, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":170
+ *         self._waiters_initial_metadata = []
+ * 
+ *     def add_done_callback(self, callback):             # <<<<<<<<<<<<<<
+ *         if self.done():
+ *             callback()
+ */
+  __pyx_tuple__450 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_callback); if (unlikely(!__pyx_tuple__450)) __PYX_ERR(34, 170, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__450);
+  __Pyx_GIVEREF(__pyx_tuple__450);
+  __pyx_codeobj__451 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 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_python_grpcio_grpc__cython_22, __pyx_n_s_add_done_callback, 170, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__451)) __PYX_ERR(34, 170, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":176
+ *             self._done_callbacks.append(callback)
+ * 
+ *     def time_remaining(self):             # <<<<<<<<<<<<<<
+ *         if self._deadline is None:
+ *             return None
+ */
+  __pyx_codeobj__452 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_22, __pyx_n_s_time_remaining, 176, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__452)) __PYX_ERR(34, 176, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":182
+ *             return max(0, self._deadline - time.time())
+ * 
+ *     def cancel(self, str details):             # <<<<<<<<<<<<<<
+ *         """Cancels the RPC in Core with given RPC status.
+ * 
+ */
+  __pyx_tuple__453 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_details, __pyx_n_s_details_bytes, __pyx_n_s_c_details, __pyx_n_s_error); if (unlikely(!__pyx_tuple__453)) __PYX_ERR(34, 182, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__453);
+  __Pyx_GIVEREF(__pyx_tuple__453);
+  __pyx_codeobj__454 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__453, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_22, __pyx_n_s_cancel, 182, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__454)) __PYX_ERR(34, 182, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":213
+ *         assert error == GRPC_CALL_OK
+ * 
+ *     def done(self):             # <<<<<<<<<<<<<<
+ *         """Returns if the RPC call has finished.
+ * 
+ */
+  __pyx_codeobj__455 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_22, __pyx_n_s_done, 213, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__455)) __PYX_ERR(34, 213, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":224
+ *         return self._status is not None
+ * 
+ *     def cancelled(self):             # <<<<<<<<<<<<<<
+ *         """Returns if the RPC was cancelled.
+ * 
+ */
+  __pyx_codeobj__456 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_22, __pyx_n_s_cancelled, 224, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__456)) __PYX_ERR(34, 224, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":235
+ *         return self._status.code() == StatusCode.cancelled
+ * 
+ *     async def status(self):             # <<<<<<<<<<<<<<
+ *         """Returns the status of the RPC call.
+ * 
+ */
+  __pyx_tuple__457 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_future); if (unlikely(!__pyx_tuple__457)) __PYX_ERR(34, 235, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__457);
+  __Pyx_GIVEREF(__pyx_tuple__457);
+  __pyx_codeobj__59 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__457, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_22, __pyx_n_s_status, 235, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__59)) __PYX_ERR(34, 235, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":254
+ *         return self._status
+ * 
+ *     def is_ok(self):             # <<<<<<<<<<<<<<
+ *         """Returns if the RPC is ended with ok."""
+ *         return self.done() and self._status.code() == StatusCode.ok
+ */
+  __pyx_codeobj__458 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_22, __pyx_n_s_is_ok, 254, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__458)) __PYX_ERR(34, 254, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":258
+ *         return self.done() and self._status.code() == StatusCode.ok
+ * 
+ *     async def initial_metadata(self):             # <<<<<<<<<<<<<<
+ *         """Returns the initial metadata of the RPC call.
+ * 
+ */
+  __pyx_codeobj__60 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__457, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_22, __pyx_n_s_initial_metadata, 258, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__60)) __PYX_ERR(34, 258, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":276
+ *         return self._initial_metadata
+ * 
+ *     def is_locally_cancelled(self):             # <<<<<<<<<<<<<<
+ *         """Returns if the RPC was cancelled locally.
+ * 
+ */
+  __pyx_codeobj__459 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_22, __pyx_n_s_is_locally_cancelled, 276, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__459)) __PYX_ERR(34, 276, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":288
+ *         return False
+ * 
+ *     def set_internal_error(self, str error_str):             # <<<<<<<<<<<<<<
+ *         self._set_status(AioRpcStatus(
+ *             StatusCode.internal,
+ */
+  __pyx_tuple__460 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_error_str); if (unlikely(!__pyx_tuple__460)) __PYX_ERR(34, 288, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__460);
+  __Pyx_GIVEREF(__pyx_tuple__460);
+  __pyx_codeobj__461 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 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_python_grpcio_grpc__cython_22, __pyx_n_s_set_internal_error, 288, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__461)) __PYX_ERR(34, 288, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":296
+ *         ))
+ * 
+ *     async def unary_unary(self,             # <<<<<<<<<<<<<<
+ *                           bytes request,
+ *                           tuple outbound_initial_metadata,
+ */
+  __pyx_tuple__462 = PyTuple_Pack(12, __pyx_n_s_self, __pyx_n_s_request, __pyx_n_s_outbound_initial_metadata, __pyx_n_s_context, __pyx_n_s_ops, __pyx_n_s_initial_metadata_op, __pyx_n_s_send_message_op, __pyx_n_s_send_close_op, __pyx_n_s_receive_initial_metadata_op, __pyx_n_s_receive_message_op, __pyx_n_s_receive_status_on_client_op, __pyx_n_s_code); if (unlikely(!__pyx_tuple__462)) __PYX_ERR(34, 296, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__462);
+  __Pyx_GIVEREF(__pyx_tuple__462);
+  __pyx_codeobj__61 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 12, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__462, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_22, __pyx_n_s_unary_unary, 296, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__61)) __PYX_ERR(34, 296, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":347
+ *             return None
+ * 
+ *     async def _handle_status_once_received(self):             # <<<<<<<<<<<<<<
+ *         """Handles the status sent by peer once received."""
+ *         cdef ReceiveStatusOnClientOperation op = ReceiveStatusOnClientOperation(_EMPTY_FLAGS)
+ */
+  __pyx_tuple__463 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_op, __pyx_n_s_ops); if (unlikely(!__pyx_tuple__463)) __PYX_ERR(34, 347, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__463);
+  __Pyx_GIVEREF(__pyx_tuple__463);
+  __pyx_codeobj__62 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__463, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_22, __pyx_n_s_handle_status_once_received, 347, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__62)) __PYX_ERR(34, 347, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":364
+ *         ))
+ * 
+ *     async def receive_serialized_message(self):             # <<<<<<<<<<<<<<
+ *         """Receives one single raw message in bytes."""
+ *         cdef bytes received_message
+ */
+  __pyx_tuple__464 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_received_message); if (unlikely(!__pyx_tuple__464)) __PYX_ERR(34, 364, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__464);
+  __Pyx_GIVEREF(__pyx_tuple__464);
+  __pyx_codeobj__63 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__464, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_22, __pyx_n_s_receive_serialized_message, 364, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__63)) __PYX_ERR(34, 364, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":381
+ *             return EOF
+ * 
+ *     async def send_serialized_message(self, bytes message):             # <<<<<<<<<<<<<<
+ *         """Sends one single raw message in bytes."""
+ *         await _send_message(self,
+ */
+  __pyx_tuple__465 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_message); if (unlikely(!__pyx_tuple__465)) __PYX_ERR(34, 381, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__465);
+  __Pyx_GIVEREF(__pyx_tuple__465);
+  __pyx_codeobj__64 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__465, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_22, __pyx_n_s_send_serialized_message, 381, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__64)) __PYX_ERR(34, 381, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":389
+ *                             self._loop)
+ * 
+ *     async def send_receive_close(self):             # <<<<<<<<<<<<<<
+ *         """Half close the RPC on the client-side."""
+ *         cdef SendCloseFromClientOperation op = SendCloseFromClientOperation(_EMPTY_FLAGS)
+ */
+  __pyx_codeobj__65 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__463, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_22, __pyx_n_s_send_receive_close, 389, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__65)) __PYX_ERR(34, 389, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":395
+ *         await execute_batch(self, ops, self._loop)
+ * 
+ *     async def initiate_unary_stream(self,             # <<<<<<<<<<<<<<
+ *                            bytes request,
+ *                            tuple outbound_initial_metadata,
+ */
+  __pyx_tuple__466 = PyTuple_Pack(10, __pyx_n_s_self, __pyx_n_s_request, __pyx_n_s_outbound_initial_metadata, __pyx_n_s_context, __pyx_n_s_status_task, __pyx_n_s_outbound_ops, __pyx_n_s_initial_metadata_op, __pyx_n_s_send_message_op, __pyx_n_s_send_close_op, __pyx_n_s_batch_error); if (unlikely(!__pyx_tuple__466)) __PYX_ERR(34, 395, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__466);
+  __Pyx_GIVEREF(__pyx_tuple__466);
+  __pyx_codeobj__66 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 10, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__466, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_22, __pyx_n_s_initiate_unary_stream, 395, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__66)) __PYX_ERR(34, 395, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":437
+ *             await status_task
+ * 
+ *     async def stream_unary(self,             # <<<<<<<<<<<<<<
+ *                            tuple outbound_initial_metadata,
+ *                            object metadata_sent_observer,
+ */
+  __pyx_tuple__467 = PyTuple_Pack(8, __pyx_n_s_self, __pyx_n_s_outbound_initial_metadata, __pyx_n_s_metadata_sent_observer, __pyx_n_s_context, __pyx_n_s_inbound_ops, __pyx_n_s_receive_message_op, __pyx_n_s_receive_status_on_client_op, __pyx_n_s_code); if (unlikely(!__pyx_tuple__467)) __PYX_ERR(34, 437, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__467);
+  __Pyx_GIVEREF(__pyx_tuple__467);
+  __pyx_codeobj__67 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__467, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_22, __pyx_n_s_stream_unary, 437, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__67)) __PYX_ERR(34, 437, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":496
+ *             return None
+ * 
+ *     async def initiate_stream_stream(self,             # <<<<<<<<<<<<<<
+ *                            tuple outbound_initial_metadata,
+ *                            object metadata_sent_observer,
+ */
+  __pyx_tuple__468 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_outbound_initial_metadata, __pyx_n_s_metadata_sent_observer, __pyx_n_s_context, __pyx_n_s_status_task, __pyx_n_s_batch_error); if (unlikely(!__pyx_tuple__468)) __PYX_ERR(34, 496, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__468);
+  __Pyx_GIVEREF(__pyx_tuple__468);
+  __pyx_codeobj__68 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__468, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_22, __pyx_n_s_initiate_stream_stream, 496, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__68)) __PYX_ERR(34, 496, __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__469 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__469)) __PYX_ERR(10, 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__470 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__470)) __PYX_ERR(10, 3, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":61
+ *         return f"<{class_name} {id_}>"
+ * 
+ *     def check_connectivity_state(self, bint try_to_connect):             # <<<<<<<<<<<<<<
+ *         """A Cython wrapper for Core's check connectivity state API."""
+ *         if self._status == AIO_CHANNEL_STATUS_DESTROYED:
+ */
+  __pyx_codeobj__471 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 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_python_grpcio_grpc__cython_23, __pyx_n_s_check_connectivity_state, 61, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__471)) __PYX_ERR(8, 61, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":71
+ *             )
+ * 
+ *     async def watch_connectivity_state(self,             # <<<<<<<<<<<<<<
+ *                                        grpc_connectivity_state last_observed_state,
+ *                                        object deadline):
+ */
+  __pyx_tuple__472 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_last_observed_state, __pyx_n_s_deadline, __pyx_n_s_c_deadline, __pyx_n_s_future, __pyx_n_s_wrapper); if (unlikely(!__pyx_tuple__472)) __PYX_ERR(8, 71, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__472);
+  __Pyx_GIVEREF(__pyx_tuple__472);
+  __pyx_codeobj__72 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__472, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_23, __pyx_n_s_watch_connectivity_state, 71, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__72)) __PYX_ERR(8, 71, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":103
+ *             return True
+ * 
+ *     def closing(self):             # <<<<<<<<<<<<<<
+ *         self._status = AIO_CHANNEL_STATUS_CLOSING
+ * 
+ */
+  __pyx_codeobj__473 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_23, __pyx_n_s_closing, 103, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__473)) __PYX_ERR(8, 103, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":106
+ *         self._status = AIO_CHANNEL_STATUS_CLOSING
+ * 
+ *     def close(self):             # <<<<<<<<<<<<<<
+ *         self._status = AIO_CHANNEL_STATUS_DESTROYED
+ *         grpc_channel_destroy(self.channel)
+ */
+  __pyx_codeobj__474 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_23, __pyx_n_s_close, 106, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__474)) __PYX_ERR(8, 106, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":110
+ *         grpc_channel_destroy(self.channel)
+ * 
+ *     def closed(self):             # <<<<<<<<<<<<<<
+ *         return self._status in (AIO_CHANNEL_STATUS_CLOSING, AIO_CHANNEL_STATUS_DESTROYED)
+ * 
+ */
+  __pyx_codeobj__475 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_23, __pyx_n_s_closed, 110, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__475)) __PYX_ERR(8, 110, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":113
+ *         return self._status in (AIO_CHANNEL_STATUS_CLOSING, AIO_CHANNEL_STATUS_DESTROYED)
+ * 
+ *     def call(self,             # <<<<<<<<<<<<<<
+ *              bytes method,
+ *              object deadline,
+ */
+  __pyx_tuple__476 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_method, __pyx_n_s_deadline, __pyx_n_s_python_call_credentials, __pyx_n_s_wait_for_ready, __pyx_n_s_cython_call_credentials); if (unlikely(!__pyx_tuple__476)) __PYX_ERR(8, 113, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__476);
+  __Pyx_GIVEREF(__pyx_tuple__476);
+  __pyx_codeobj__477 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 6, 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_python_grpcio_grpc__cython_23, __pyx_n_s_call, 113, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__477)) __PYX_ERR(8, 113, __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__478 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__478)) __PYX_ERR(10, 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__479 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__479)) __PYX_ERR(10, 3, __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__480 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__480)) __PYX_ERR(10, 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__481 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__481)) __PYX_ERR(10, 3, __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__482 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__482)) __PYX_ERR(10, 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__483 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__483)) __PYX_ERR(10, 3, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":127
+ *         self._loop = loop
+ * 
+ *     async def read(self):             # <<<<<<<<<<<<<<
+ *         cdef bytes raw_message
+ *         self._rpc_state.raise_for_termination()
+ */
+  __pyx_tuple__484 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_raw_message); if (unlikely(!__pyx_tuple__484)) __PYX_ERR(9, 127, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__484);
+  __Pyx_GIVEREF(__pyx_tuple__484);
+  __pyx_codeobj__73 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__484, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_read, 127, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__73)) __PYX_ERR(9, 127, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":140
+ *                             raw_message)
+ * 
+ *     async def write(self, object message):             # <<<<<<<<<<<<<<
+ *         self._rpc_state.raise_for_termination()
+ * 
+ */
+  __pyx_codeobj__74 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__465, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_write, 140, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__74)) __PYX_ERR(9, 140, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":150
+ *         self._rpc_state.metadata_sent = True
+ * 
+ *     async def send_initial_metadata(self, object metadata):             # <<<<<<<<<<<<<<
+ *         self._rpc_state.raise_for_termination()
+ * 
+ */
+  __pyx_tuple__485 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_metadata); if (unlikely(!__pyx_tuple__485)) __PYX_ERR(9, 150, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__485);
+  __Pyx_GIVEREF(__pyx_tuple__485);
+  __pyx_codeobj__75 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__485, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_send_initial_metadata_2, 150, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__75)) __PYX_ERR(9, 150, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":164
+ *             self._rpc_state.metadata_sent = True
+ * 
+ *     async def abort(self,             # <<<<<<<<<<<<<<
+ *               object code,
+ *               str details='',
+ */
+  __pyx_tuple__486 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_code, __pyx_n_s_details, __pyx_n_s_trailing_metadata, __pyx_n_s_actual_code); if (unlikely(!__pyx_tuple__486)) __PYX_ERR(9, 164, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__486);
+  __Pyx_GIVEREF(__pyx_tuple__486);
+  __pyx_codeobj__77 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__486, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_abort, 164, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__77)) __PYX_ERR(9, 164, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":203
+ *             raise self._rpc_state.abort_exception
+ * 
+ *     async def abort_with_status(self, object status):             # <<<<<<<<<<<<<<
+ *         await self.abort(status.code, status.details, status.trailing_metadata)
+ * 
+ */
+  __pyx_tuple__487 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_status); if (unlikely(!__pyx_tuple__487)) __PYX_ERR(9, 203, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__487);
+  __Pyx_GIVEREF(__pyx_tuple__487);
+  __pyx_codeobj__78 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__487, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_abort_with_status, 203, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__78)) __PYX_ERR(9, 203, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":206
+ *         await self.abort(status.code, status.details, status.trailing_metadata)
+ * 
+ *     def set_trailing_metadata(self, object metadata):             # <<<<<<<<<<<<<<
+ *         raise_if_not_valid_trailing_metadata(metadata)
+ *         self._rpc_state.trailing_metadata = tuple(metadata)
+ */
+  __pyx_codeobj__488 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__485, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_set_trailing_metadata, 206, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__488)) __PYX_ERR(9, 206, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":210
+ *         self._rpc_state.trailing_metadata = tuple(metadata)
+ * 
+ *     def trailing_metadata(self):             # <<<<<<<<<<<<<<
+ *         return self._rpc_state.trailing_metadata
+ * 
+ */
+  __pyx_codeobj__489 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_trailing_metadata, 210, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__489)) __PYX_ERR(9, 210, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":213
+ *         return self._rpc_state.trailing_metadata
+ * 
+ *     def invocation_metadata(self):             # <<<<<<<<<<<<<<
+ *         return self._rpc_state.invocation_metadata()
+ * 
+ */
+  __pyx_codeobj__490 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_invocation_metadata, 213, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__490)) __PYX_ERR(9, 213, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":216
+ *         return self._rpc_state.invocation_metadata()
+ * 
+ *     def set_code(self, object code):             # <<<<<<<<<<<<<<
+ *         self._rpc_state.status_code = get_status_code(code)
+ *         self._rpc_state.py_status_code = code
+ */
+  __pyx_tuple__491 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_code); if (unlikely(!__pyx_tuple__491)) __PYX_ERR(9, 216, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__491);
+  __Pyx_GIVEREF(__pyx_tuple__491);
+  __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__491, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_set_code, 216, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__492)) __PYX_ERR(9, 216, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":220
+ *         self._rpc_state.py_status_code = code
+ * 
+ *     def code(self):             # <<<<<<<<<<<<<<
+ *         return self._rpc_state.py_status_code
+ * 
+ */
+  __pyx_codeobj__493 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_code, 220, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__493)) __PYX_ERR(9, 220, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":223
+ *         return self._rpc_state.py_status_code
+ * 
+ *     def set_details(self, str details):             # <<<<<<<<<<<<<<
+ *         self._rpc_state.status_details = details
+ * 
+ */
+  __pyx_tuple__494 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_details); if (unlikely(!__pyx_tuple__494)) __PYX_ERR(9, 223, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__494);
+  __Pyx_GIVEREF(__pyx_tuple__494);
+  __pyx_codeobj__495 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__494, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_set_details, 223, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__495)) __PYX_ERR(9, 223, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":226
+ *         self._rpc_state.status_details = details
+ * 
+ *     def details(self):             # <<<<<<<<<<<<<<
+ *         return self._rpc_state.status_details
+ * 
+ */
+  __pyx_codeobj__496 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_details, 226, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__496)) __PYX_ERR(9, 226, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":229
+ *         return self._rpc_state.status_details
+ * 
+ *     def set_compression(self, object compression):             # <<<<<<<<<<<<<<
+ *         if self._rpc_state.metadata_sent:
+ *             raise RuntimeError('Compression setting must be specified before sending initial metadata')
+ */
+  __pyx_tuple__497 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_compression); if (unlikely(!__pyx_tuple__497)) __PYX_ERR(9, 229, __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_python_grpcio_grpc__cython_6, __pyx_n_s_set_compression, 229, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__498)) __PYX_ERR(9, 229, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":235
+ *             self._rpc_state.compression_algorithm = compression
+ * 
+ *     def disable_next_message_compression(self):             # <<<<<<<<<<<<<<
+ *         self._rpc_state.disable_next_compression = True
+ * 
+ */
+  __pyx_codeobj__499 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_disable_next_message_compression, 235, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__499)) __PYX_ERR(9, 235, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":238
+ *         self._rpc_state.disable_next_compression = True
+ * 
+ *     def peer(self):             # <<<<<<<<<<<<<<
+ *         cdef char *c_peer = NULL
+ *         c_peer = grpc_call_get_peer(self._rpc_state.call)
+ */
+  __pyx_tuple__500 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_c_peer, __pyx_n_s_peer); if (unlikely(!__pyx_tuple__500)) __PYX_ERR(9, 238, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__500);
+  __Pyx_GIVEREF(__pyx_tuple__500);
+  __pyx_codeobj__501 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__500, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_peer, 238, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__501)) __PYX_ERR(9, 238, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":245
+ *         return peer
+ * 
+ *     def peer_identities(self):             # <<<<<<<<<<<<<<
+ *         cdef Call query_call = Call()
+ *         query_call.c_call = self._rpc_state.call
+ */
+  __pyx_tuple__502 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_query_call, __pyx_n_s_identities); if (unlikely(!__pyx_tuple__502)) __PYX_ERR(9, 245, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__502);
+  __Pyx_GIVEREF(__pyx_tuple__502);
+  __pyx_codeobj__503 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__502, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_peer_identities, 245, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__503)) __PYX_ERR(9, 245, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":252
+ *         return identities
+ * 
+ *     def peer_identity_key(self):             # <<<<<<<<<<<<<<
+ *         cdef Call query_call = Call()
+ *         query_call.c_call = self._rpc_state.call
+ */
+  __pyx_tuple__504 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_query_call, __pyx_n_s_identity_key); if (unlikely(!__pyx_tuple__504)) __PYX_ERR(9, 252, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__504);
+  __Pyx_GIVEREF(__pyx_tuple__504);
+  __pyx_codeobj__505 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__504, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_peer_identity_key, 252, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__505)) __PYX_ERR(9, 252, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":262
+ *             return None
+ * 
+ *     def auth_context(self):             # <<<<<<<<<<<<<<
+ *         cdef Call query_call = Call()
+ *         query_call.c_call = self._rpc_state.call
+ */
+  __pyx_tuple__506 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_query_call, __pyx_n_s_bytes_ctx, __pyx_n_s_ctx, __pyx_n_s_key); if (unlikely(!__pyx_tuple__506)) __PYX_ERR(9, 262, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__506);
+  __Pyx_GIVEREF(__pyx_tuple__506);
+  __pyx_codeobj__507 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__506, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_auth_context, 262, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__507)) __PYX_ERR(9, 262, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":275
+ *             return {}
+ * 
+ *     def time_remaining(self):             # <<<<<<<<<<<<<<
+ *         if self._rpc_state.details.deadline.seconds == _GPR_INF_FUTURE.seconds:
+ *             return None
+ */
+  __pyx_codeobj__508 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_time_remaining, 275, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__508)) __PYX_ERR(9, 275, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":281
+ *             return max(_time_from_timespec(self._rpc_state.details.deadline) - time.time(), 0)
+ * 
+ *     def add_done_callback(self, callback):             # <<<<<<<<<<<<<<
+ *         cb = functools.partial(callback, self)
+ *         self._rpc_state.callbacks.append(cb)
+ */
+  __pyx_tuple__509 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_callback, __pyx_n_s_cb); if (unlikely(!__pyx_tuple__509)) __PYX_ERR(9, 281, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__509);
+  __Pyx_GIVEREF(__pyx_tuple__509);
+  __pyx_codeobj__510 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__509, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_add_done_callback, 281, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__510)) __PYX_ERR(9, 281, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":285
+ *         self._rpc_state.callbacks.append(cb)
+ * 
+ *     def done(self):             # <<<<<<<<<<<<<<
+ *         return self._rpc_state.status_sent
+ * 
+ */
+  __pyx_codeobj__511 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_done, 285, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__511)) __PYX_ERR(9, 285, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":288
+ *         return self._rpc_state.status_sent
+ * 
+ *     def cancelled(self):             # <<<<<<<<<<<<<<
+ *         return self._rpc_state.status_code == StatusCode.cancelled
+ * 
+ */
+  __pyx_codeobj__512 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_cancelled, 288, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__512)) __PYX_ERR(9, 288, __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__513 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__513)) __PYX_ERR(10, 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__514 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__514)) __PYX_ERR(10, 3, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":301
+ *         self._loop = context._loop
+ * 
+ *     def abort(self,             # <<<<<<<<<<<<<<
+ *               object code,
+ *               str details='',
+ */
+  __pyx_tuple__515 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_code, __pyx_n_s_details, __pyx_n_s_trailing_metadata, __pyx_n_s_future); if (unlikely(!__pyx_tuple__515)) __PYX_ERR(9, 301, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__515);
+  __Pyx_GIVEREF(__pyx_tuple__515);
+  __pyx_codeobj__516 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__515, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_abort, 301, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__516)) __PYX_ERR(9, 301, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":311
+ *         future.exception()
+ * 
+ *     def send_initial_metadata(self, object metadata):             # <<<<<<<<<<<<<<
+ *         future = asyncio.run_coroutine_threadsafe(
+ *             self._context.send_initial_metadata(metadata),
+ */
+  __pyx_tuple__517 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_metadata, __pyx_n_s_future); if (unlikely(!__pyx_tuple__517)) __PYX_ERR(9, 311, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__517);
+  __Pyx_GIVEREF(__pyx_tuple__517);
+  __pyx_codeobj__518 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__517, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_send_initial_metadata_2, 311, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__518)) __PYX_ERR(9, 311, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":317
+ *         future.result()
+ * 
+ *     def set_trailing_metadata(self, object metadata):             # <<<<<<<<<<<<<<
+ *         self._context.set_trailing_metadata(metadata)
+ * 
+ */
+  __pyx_codeobj__519 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__485, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_set_trailing_metadata, 317, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__519)) __PYX_ERR(9, 317, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":320
+ *         self._context.set_trailing_metadata(metadata)
+ * 
+ *     def invocation_metadata(self):             # <<<<<<<<<<<<<<
+ *         return self._context.invocation_metadata()
+ * 
+ */
+  __pyx_codeobj__520 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_invocation_metadata, 320, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__520)) __PYX_ERR(9, 320, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":323
+ *         return self._context.invocation_metadata()
+ * 
+ *     def set_code(self, object code):             # <<<<<<<<<<<<<<
+ *         self._context.set_code(code)
+ * 
+ */
+  __pyx_codeobj__521 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__491, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_set_code, 323, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__521)) __PYX_ERR(9, 323, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":326
+ *         self._context.set_code(code)
+ * 
+ *     def set_details(self, str details):             # <<<<<<<<<<<<<<
+ *         self._context.set_details(details)
+ * 
+ */
+  __pyx_codeobj__522 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__494, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_set_details, 326, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__522)) __PYX_ERR(9, 326, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":329
+ *         self._context.set_details(details)
+ * 
+ *     def set_compression(self, object compression):             # <<<<<<<<<<<<<<
+ *         self._context.set_compression(compression)
+ * 
+ */
+  __pyx_codeobj__523 = (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_python_grpcio_grpc__cython_6, __pyx_n_s_set_compression, 329, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__523)) __PYX_ERR(9, 329, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":332
+ *         self._context.set_compression(compression)
+ * 
+ *     def disable_next_message_compression(self):             # <<<<<<<<<<<<<<
+ *         self._context.disable_next_message_compression()
+ * 
+ */
+  __pyx_codeobj__524 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_disable_next_message_compression, 332, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__524)) __PYX_ERR(9, 332, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":335
+ *         self._context.disable_next_message_compression()
+ * 
+ *     def add_callback(self, object callback):             # <<<<<<<<<<<<<<
+ *         self._callbacks.append(callback)
+ * 
+ */
+  __pyx_codeobj__525 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 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_python_grpcio_grpc__cython_6, __pyx_n_s_add_callback, 335, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__525)) __PYX_ERR(9, 335, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":338
+ *         self._callbacks.append(callback)
+ * 
+ *     def peer(self):             # <<<<<<<<<<<<<<
+ *         return self._context.peer()
+ * 
+ */
+  __pyx_codeobj__526 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_peer, 338, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__526)) __PYX_ERR(9, 338, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":341
+ *         return self._context.peer()
+ * 
+ *     def peer_identities(self):             # <<<<<<<<<<<<<<
+ *         return self._context.peer_identities()
+ * 
+ */
+  __pyx_codeobj__527 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_peer_identities, 341, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__527)) __PYX_ERR(9, 341, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":344
+ *         return self._context.peer_identities()
+ * 
+ *     def peer_identity_key(self):             # <<<<<<<<<<<<<<
+ *         return self._context.peer_identity_key()
+ * 
+ */
+  __pyx_codeobj__528 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_peer_identity_key, 344, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__528)) __PYX_ERR(9, 344, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":347
+ *         return self._context.peer_identity_key()
+ * 
+ *     def auth_context(self):             # <<<<<<<<<<<<<<
+ *         return self._context.auth_context()
+ * 
+ */
+  __pyx_codeobj__529 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_auth_context, 347, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__529)) __PYX_ERR(9, 347, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":350
+ *         return self._context.auth_context()
+ * 
+ *     def time_remaining(self):             # <<<<<<<<<<<<<<
+ *         return self._context.time_remaining()
+ * 
+ */
+  __pyx_codeobj__530 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_time_remaining, 350, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__530)) __PYX_ERR(9, 350, __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__531 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__531)) __PYX_ERR(10, 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__532 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__532)) __PYX_ERR(10, 3, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":354
+ * 
+ * 
+ * async def _run_interceptor(object interceptors, object query_handler,             # <<<<<<<<<<<<<<
+ *                            object handler_call_details):
+ *     interceptor = next(interceptors, None)
+ */
+  __pyx_tuple__533 = PyTuple_Pack(5, __pyx_n_s_interceptors, __pyx_n_s_query_handler, __pyx_n_s_handler_call_details, __pyx_n_s_interceptor, __pyx_n_s_continuation); if (unlikely(!__pyx_tuple__533)) __PYX_ERR(9, 354, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__533);
+  __Pyx_GIVEREF(__pyx_tuple__533);
+  __pyx_codeobj__81 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__533, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_run_interceptor, 354, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__81)) __PYX_ERR(9, 354, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":365
+ * 
+ * 
+ * def _is_async_handler(object handler):             # <<<<<<<<<<<<<<
+ *     """Inspect if a method handler is async or sync."""
+ *     return inspect.isawaitable(handler) or inspect.iscoroutinefunction(handler) or inspect.isasyncgenfunction(handler)
+ */
+  __pyx_tuple__534 = PyTuple_Pack(1, __pyx_n_s_handler); if (unlikely(!__pyx_tuple__534)) __PYX_ERR(9, 365, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__534);
+  __Pyx_GIVEREF(__pyx_tuple__534);
+  __pyx_codeobj__535 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__534, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_is_async_handler, 365, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__535)) __PYX_ERR(9, 365, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":370
+ * 
+ * 
+ * async def _find_method_handler(str method, tuple metadata, list generic_handlers,             # <<<<<<<<<<<<<<
+ *                           tuple interceptors):
+ *     def query_handlers(handler_call_details):
+ */
+  __pyx_tuple__536 = PyTuple_Pack(7, __pyx_n_s_method, __pyx_n_s_metadata, __pyx_n_s_generic_handlers, __pyx_n_s_interceptors, __pyx_n_s_query_handlers, __pyx_n_s_query_handlers, __pyx_n_s_handler_call_details); if (unlikely(!__pyx_tuple__536)) __PYX_ERR(9, 370, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__536);
+  __Pyx_GIVEREF(__pyx_tuple__536);
+  __pyx_codeobj__82 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__536, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_find_method_handler, 370, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__82)) __PYX_ERR(9, 370, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":389
+ * 
+ * 
+ * async def _finish_handler_with_unary_response(RPCState rpc_state,             # <<<<<<<<<<<<<<
+ *                                               object unary_handler,
+ *                                               object request,
+ */
+  __pyx_tuple__537 = PyTuple_Pack(11, __pyx_n_s_rpc_state, __pyx_n_s_unary_handler, __pyx_n_s_request, __pyx_n_s_servicer_context, __pyx_n_s_response_serializer, __pyx_n_s_loop, __pyx_n_s_response_message, __pyx_n_s_sync_servicer_context, __pyx_n_s_callback, __pyx_n_s_response_raw, __pyx_n_s_finish_ops); if (unlikely(!__pyx_tuple__537)) __PYX_ERR(9, 389, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__537);
+  __Pyx_GIVEREF(__pyx_tuple__537);
+  __pyx_codeobj__85 = (PyObject*)__Pyx_PyCode_New(6, 0, 0, 11, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__537, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_finish_handler_with_unary_respo, 389, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__85)) __PYX_ERR(9, 389, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":460
+ * 
+ * 
+ * async def _finish_handler_with_stream_responses(RPCState rpc_state,             # <<<<<<<<<<<<<<
+ *                                                 object stream_handler,
+ *                                                 object request,
+ */
+  __pyx_tuple__538 = PyTuple_Pack(11, __pyx_n_s_rpc_state, __pyx_n_s_stream_handler, __pyx_n_s_request, __pyx_n_s_servicer_context, __pyx_n_s_loop, __pyx_n_s_async_response_generator, __pyx_n_s_response_message, __pyx_n_s_sync_servicer_context, __pyx_n_s_gen, __pyx_n_s_op, __pyx_n_s_finish_ops); if (unlikely(!__pyx_tuple__538)) __PYX_ERR(9, 460, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__538);
+  __Pyx_GIVEREF(__pyx_tuple__538);
+  __pyx_codeobj__86 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 11, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__538, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_finish_handler_with_stream_resp, 460, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__86)) __PYX_ERR(9, 460, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":530
+ * 
+ * 
+ * async def _handle_unary_unary_rpc(object method_handler,             # <<<<<<<<<<<<<<
+ *                                   RPCState rpc_state,
+ *                                   object loop):
+ */
+  __pyx_tuple__539 = PyTuple_Pack(6, __pyx_n_s_method_handler, __pyx_n_s_rpc_state, __pyx_n_s_loop, __pyx_n_s_request_raw, __pyx_n_s_request_message, __pyx_n_s_servicer_context); if (unlikely(!__pyx_tuple__539)) __PYX_ERR(9, 530, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__539);
+  __Pyx_GIVEREF(__pyx_tuple__539);
+  __pyx_codeobj__87 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__539, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_handle_unary_unary_rpc, 530, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__87)) __PYX_ERR(9, 530, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":564
+ * 
+ * 
+ * async def _handle_unary_stream_rpc(object method_handler,             # <<<<<<<<<<<<<<
+ *                                    RPCState rpc_state,
+ *                                    object loop):
+ */
+  __pyx_codeobj__88 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__539, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_handle_unary_stream_rpc, 564, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__88)) __PYX_ERR(9, 564, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":603
+ *         self._agen = None
+ * 
+ *     async def _async_message_receiver(self):             # <<<<<<<<<<<<<<
+ *         """An async generator that receives messages."""
+ *         cdef object message
+ */
+  __pyx_codeobj__89 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_ASYNC_GENERATOR, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__465, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_async_message_receiver, 603, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__89)) __PYX_ERR(9, 603, __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__540 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__540)) __PYX_ERR(10, 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__541 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__541)) __PYX_ERR(10, 3, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":623
+ * 
+ * 
+ * async def _handle_stream_unary_rpc(object method_handler,             # <<<<<<<<<<<<<<
+ *                                    RPCState rpc_state,
+ *                                    object loop):
+ */
+  __pyx_tuple__542 = PyTuple_Pack(5, __pyx_n_s_method_handler, __pyx_n_s_rpc_state, __pyx_n_s_loop, __pyx_n_s_servicer_context, __pyx_n_s_request_iterator); if (unlikely(!__pyx_tuple__542)) __PYX_ERR(9, 623, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__542);
+  __Pyx_GIVEREF(__pyx_tuple__542);
+  __pyx_codeobj__90 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__542, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_handle_stream_unary_rpc, 623, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__90)) __PYX_ERR(9, 623, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":655
+ * 
+ * 
+ * async def _handle_stream_stream_rpc(object method_handler,             # <<<<<<<<<<<<<<
+ *                                     RPCState rpc_state,
+ *                                     object loop):
+ */
+  __pyx_codeobj__91 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__542, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_handle_stream_stream_rpc, 655, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__91)) __PYX_ERR(9, 655, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":686
+ * 
+ * 
+ * async def _handle_exceptions(RPCState rpc_state, object rpc_coro, object loop):             # <<<<<<<<<<<<<<
+ *     try:
+ *         try:
+ */
+  __pyx_tuple__543 = PyTuple_Pack(5, __pyx_n_s_rpc_state, __pyx_n_s_rpc_coro, __pyx_n_s_loop, __pyx_n_s_e, __pyx_n_s_status_code); if (unlikely(!__pyx_tuple__543)) __PYX_ERR(9, 686, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__543);
+  __Pyx_GIVEREF(__pyx_tuple__543);
+  __pyx_codeobj__92 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__543, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_handle_exceptions, 686, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__92)) __PYX_ERR(9, 686, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":755
+ * 
+ * 
+ * async def _handle_cancellation_from_core(object rpc_task,             # <<<<<<<<<<<<<<
+ *                                          RPCState rpc_state,
+ *                                          object loop):
+ */
+  __pyx_tuple__544 = PyTuple_Pack(5, __pyx_n_s_rpc_task, __pyx_n_s_rpc_state, __pyx_n_s_loop, __pyx_n_s_op, __pyx_n_s_ops); if (unlikely(!__pyx_tuple__544)) __PYX_ERR(9, 755, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__544);
+  __Pyx_GIVEREF(__pyx_tuple__544);
+  __pyx_codeobj__95 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__544, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_handle_cancellation_from_core, 755, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__95)) __PYX_ERR(9, 755, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":772
+ * 
+ * 
+ * async def _schedule_rpc_coro(object rpc_coro,             # <<<<<<<<<<<<<<
+ *                              RPCState rpc_state,
+ *                              object loop):
+ */
+  __pyx_tuple__545 = PyTuple_Pack(4, __pyx_n_s_rpc_coro, __pyx_n_s_rpc_state, __pyx_n_s_loop, __pyx_n_s_rpc_task); if (unlikely(!__pyx_tuple__545)) __PYX_ERR(9, 772, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__545);
+  __Pyx_GIVEREF(__pyx_tuple__545);
+  __pyx_codeobj__96 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__545, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_schedule_rpc_coro, 772, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__96)) __PYX_ERR(9, 772, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":785
+ * 
+ * 
+ * async def _handle_rpc(list generic_handlers, tuple interceptors,             # <<<<<<<<<<<<<<
+ *                       RPCState rpc_state, object loop, bint concurrency_exceeded):
+ *     cdef object method_handler
+ */
+  __pyx_tuple__546 = PyTuple_Pack(6, __pyx_n_s_generic_handlers, __pyx_n_s_interceptors, __pyx_n_s_rpc_state, __pyx_n_s_loop, __pyx_n_s_concurrency_exceeded, __pyx_n_s_method_handler); if (unlikely(!__pyx_tuple__546)) __PYX_ERR(9, 785, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__546);
+  __Pyx_GIVEREF(__pyx_tuple__546);
+  __pyx_codeobj__97 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__546, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_handle_rpc, 785, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__97)) __PYX_ERR(9, 785, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":869
+ *         self.limiter_concurrency_exceeded = False
+ * 
+ *     def check_before_request_call(self):             # <<<<<<<<<<<<<<
+ *         if self._active_rpcs >= self._maximum_concurrent_rpcs:
+ *             self.limiter_concurrency_exceeded = True
+ */
+  __pyx_codeobj__547 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_check_before_request_call, 869, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__547)) __PYX_ERR(9, 869, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":875
+ *             self._active_rpcs += 1
+ * 
+ *     def _decrease_active_rpcs_count(self, unused_future):             # <<<<<<<<<<<<<<
+ *         self._active_rpcs -= 1
+ *         if self._active_rpcs < self._maximum_concurrent_rpcs:
+ */
+  __pyx_tuple__548 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_unused_future); if (unlikely(!__pyx_tuple__548)) __PYX_ERR(9, 875, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__548);
+  __Pyx_GIVEREF(__pyx_tuple__548);
+  __pyx_codeobj__549 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__548, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_decrease_active_rpcs_count, 875, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__549)) __PYX_ERR(9, 875, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":880
+ *             self.limiter_concurrency_exceeded = False
+ * 
+ *     def decrease_once_finished(self, object rpc_task):             # <<<<<<<<<<<<<<
+ *         rpc_task.add_done_callback(self._decrease_active_rpcs_count)
+ * 
+ */
+  __pyx_tuple__550 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_rpc_task); if (unlikely(!__pyx_tuple__550)) __PYX_ERR(9, 880, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__550);
+  __Pyx_GIVEREF(__pyx_tuple__550);
+  __pyx_codeobj__551 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__550, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_decrease_once_finished, 880, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__551)) __PYX_ERR(9, 880, __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__552 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__552)) __PYX_ERR(10, 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__553 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__553)) __PYX_ERR(10, 3, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":922
+ *             self._limiter = _ConcurrentRpcLimiter(maximum_concurrent_rpcs)
+ * 
+ *     def add_generic_rpc_handlers(self, object generic_rpc_handlers):             # <<<<<<<<<<<<<<
+ *         self._generic_handlers.extend(generic_rpc_handlers)
+ * 
+ */
+  __pyx_tuple__554 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_generic_rpc_handlers); if (unlikely(!__pyx_tuple__554)) __PYX_ERR(9, 922, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__554);
+  __Pyx_GIVEREF(__pyx_tuple__554);
+  __pyx_codeobj__555 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__554, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_add_generic_rpc_handlers, 922, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__555)) __PYX_ERR(9, 922, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":925
+ *         self._generic_handlers.extend(generic_rpc_handlers)
+ * 
+ *     def add_insecure_port(self, address):             # <<<<<<<<<<<<<<
+ *         return self._server.add_http2_port(address)
+ * 
+ */
+  __pyx_tuple__556 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_address); if (unlikely(!__pyx_tuple__556)) __PYX_ERR(9, 925, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__556);
+  __Pyx_GIVEREF(__pyx_tuple__556);
+  __pyx_codeobj__557 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__556, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_add_insecure_port, 925, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__557)) __PYX_ERR(9, 925, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":928
+ *         return self._server.add_http2_port(address)
+ * 
+ *     def add_secure_port(self, address, server_credentials):             # <<<<<<<<<<<<<<
+ *         return self._server.add_http2_port(address,
+ *                                            server_credentials._credentials)
+ */
+  __pyx_tuple__558 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_address, __pyx_n_s_server_credentials); if (unlikely(!__pyx_tuple__558)) __PYX_ERR(9, 928, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__558);
+  __Pyx_GIVEREF(__pyx_tuple__558);
+  __pyx_codeobj__559 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__558, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_add_secure_port, 928, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__559)) __PYX_ERR(9, 928, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":932
+ *                                            server_credentials._credentials)
+ * 
+ *     async def _request_call(self):             # <<<<<<<<<<<<<<
+ *         cdef grpc_call_error error
+ *         cdef RPCState rpc_state = RPCState(self)
+ */
+  __pyx_tuple__560 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_error, __pyx_n_s_rpc_state, __pyx_n_s_future, __pyx_n_s_wrapper); if (unlikely(!__pyx_tuple__560)) __PYX_ERR(9, 932, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__560);
+  __Pyx_GIVEREF(__pyx_tuple__560);
+  __pyx_codeobj__99 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__560, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_request_call, 932, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__99)) __PYX_ERR(9, 932, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":952
+ *         return rpc_state
+ * 
+ *     async def _server_main_loop(self,             # <<<<<<<<<<<<<<
+ *                                 object server_started):
+ *         self._server.start(backup_queue=False)
+ */
+  __pyx_tuple__561 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_server_started, __pyx_n_s_rpc_state, __pyx_n_s_concurrency_exceeded, __pyx_n_s_rpc_coro, __pyx_n_s_rpc_task); if (unlikely(!__pyx_tuple__561)) __PYX_ERR(9, 952, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__561);
+  __Pyx_GIVEREF(__pyx_tuple__561);
+  __pyx_codeobj__100 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__561, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_server_main_loop, 952, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__100)) __PYX_ERR(9, 952, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":994
+ *                 self._limiter.decrease_once_finished(rpc_task)
+ * 
+ *     def _serving_task_crash_handler(self, object task):             # <<<<<<<<<<<<<<
+ *         """Shutdown the server immediately if unexpectedly exited."""
+ *         if task.cancelled():
+ */
+  __pyx_tuple__562 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_task); if (unlikely(!__pyx_tuple__562)) __PYX_ERR(9, 994, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__562);
+  __Pyx_GIVEREF(__pyx_tuple__562);
+  __pyx_codeobj__563 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__562, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_serving_task_crash_handler, 994, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__563)) __PYX_ERR(9, 994, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1005
+ *             self._loop.create_task(self.shutdown(None))
+ * 
+ *     async def start(self):             # <<<<<<<<<<<<<<
+ *         if self._status == AIO_SERVER_STATUS_RUNNING:
+ *             return
+ */
+  __pyx_tuple__564 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_server_started); if (unlikely(!__pyx_tuple__564)) __PYX_ERR(9, 1005, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__564);
+  __Pyx_GIVEREF(__pyx_tuple__564);
+  __pyx_codeobj__101 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__564, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_start, 1005, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__101)) __PYX_ERR(9, 1005, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1019
+ *         await server_started
+ * 
+ *     async def _start_shutting_down(self):             # <<<<<<<<<<<<<<
+ *         """Prepares the server to shutting down.
+ * 
+ */
+  __pyx_codeobj__102 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_start_shutting_down, 1019, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__102)) __PYX_ERR(9, 1019, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1036
+ *             pass
+ * 
+ *     async def shutdown(self, grace):             # <<<<<<<<<<<<<<
+ *         """Gracefully shutdown the Core server.
+ * 
+ */
+  __pyx_tuple__565 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_grace); if (unlikely(!__pyx_tuple__565)) __PYX_ERR(9, 1036, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__565);
+  __Pyx_GIVEREF(__pyx_tuple__565);
+  __pyx_codeobj__103 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__565, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_shutdown, 1036, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__103)) __PYX_ERR(9, 1036, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1076
+ *                 self._status = AIO_SERVER_STATUS_STOPPED
+ * 
+ *     async def wait_for_termination(self, object timeout):             # <<<<<<<<<<<<<<
+ *         if timeout is None:
+ *             await self._shutdown_completed
+ */
+  __pyx_tuple__566 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_timeout); if (unlikely(!__pyx_tuple__566)) __PYX_ERR(9, 1076, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__566);
+  __Pyx_GIVEREF(__pyx_tuple__566);
+  __pyx_codeobj__104 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__566, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_wait_for_termination, 1076, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__104)) __PYX_ERR(9, 1076, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1109
+ *         return self._thread_pool
+ * 
+ *     def is_running(self):             # <<<<<<<<<<<<<<
+ *         return self._status == AIO_SERVER_STATUS_RUNNING
+ */
+  __pyx_codeobj__567 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__108, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_is_running, 1109, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__567)) __PYX_ERR(9, 1109, __pyx_L1_error)
+
+  /* "(tree fragment)":1
+ * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
+ *     cdef tuple state
+ *     cdef object _dict
+ */
+  __pyx_codeobj__568 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__194, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__568)) __PYX_ERR(10, 1, __pyx_L1_error)
+
+  /* "(tree fragment)":16
+ *     else:
+ *         return __pyx_unpickle_AioServer, (type(self), 0xa3b308d, state)
+ * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
+ *     __pyx_unpickle_AioServer__set_state(self, __pyx_state)
+ */
+  __pyx_codeobj__569 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__110, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 16, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__569)) __PYX_ERR(10, 16, __pyx_L1_error)
+
+  /* "(tree fragment)":1
+ * def __pyx_unpickle_ChannelCredentials(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
+ *     cdef object __pyx_PickleError
+ *     cdef object __pyx_result
+ */
+  __pyx_tuple__570 = 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__570)) __PYX_ERR(10, 1, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__570);
+  __Pyx_GIVEREF(__pyx_tuple__570);
+  __pyx_codeobj__571 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__570, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_ChannelCredential, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__571)) __PYX_ERR(10, 1, __pyx_L1_error)
+  __pyx_codeobj__572 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__570, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_InsecureChannelCr, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__572)) __PYX_ERR(10, 1, __pyx_L1_error)
+  __pyx_codeobj__573 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__570, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle__Tag, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__573)) __PYX_ERR(10, 1, __pyx_L1_error)
+  __pyx_codeobj__574 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__570, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_CensusContext, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__574)) __PYX_ERR(10, 1, __pyx_L1_error)
+  __pyx_codeobj__575 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__570, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_AioServer, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__575)) __PYX_ERR(10, 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) {
+  __pyx_umethod_PyDict_Type_get.type = (PyObject*)&PyDict_Type;
+  __pyx_umethod_PyDict_Type_get.method_name = &__pyx_n_s_get;
+  __pyx_umethod_PyDict_Type_keys.type = (PyObject*)&PyDict_Type;
+  __pyx_umethod_PyDict_Type_keys.method_name = &__pyx_n_s_keys;
+  __pyx_umethod_PyDict_Type_pop.type = (PyObject*)&PyDict_Type;
+  __pyx_umethod_PyDict_Type_pop.method_name = &__pyx_n_s_pop;
+  __pyx_umethod_PyDict_Type_values.type = (PyObject*)&PyDict_Type;
+  __pyx_umethod_PyDict_Type_values.method_name = &__pyx_n_s_values;
+  if (__Pyx_CreateStringTabAndInitStrings() < 0) __PYX_ERR(0, 1, __pyx_L1_error);
+  __pyx_float_1_0 = PyFloat_FromDouble(1.0); if (unlikely(!__pyx_float_1_0)) __PYX_ERR(0, 1, __pyx_L1_error)
+  __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error)
+  __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error)
+  __pyx_int_5 = PyInt_FromLong(5); if (unlikely(!__pyx_int_5)) __PYX_ERR(0, 1, __pyx_L1_error)
+  __pyx_int_118587260 = PyInt_FromLong(118587260L); if (unlikely(!__pyx_int_118587260)) __PYX_ERR(0, 1, __pyx_L1_error)
+  __pyx_int_171381981 = PyInt_FromLong(171381981L); if (unlikely(!__pyx_int_171381981)) __PYX_ERR(0, 1, __pyx_L1_error)
+  __pyx_int_171651213 = PyInt_FromLong(171651213L); if (unlikely(!__pyx_int_171651213)) __PYX_ERR(0, 1, __pyx_L1_error)
+  __pyx_int_222419149 = PyInt_FromLong(222419149L); if (unlikely(!__pyx_int_222419149)) __PYX_ERR(0, 1, __pyx_L1_error)
+  __pyx_int_228825662 = PyInt_FromLong(228825662L); if (unlikely(!__pyx_int_228825662)) __PYX_ERR(0, 1, __pyx_L1_error)
+  __pyx_int_238750788 = PyInt_FromLong(238750788L); if (unlikely(!__pyx_int_238750788)) __PYX_ERR(0, 1, __pyx_L1_error)
+  return 0;
+  __pyx_L1_error:;
+  return -1;
+}
+/* #### Code section: init_globals ### */
+
+static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) {
+  /* AssertionsEnabled.init */
+  if (likely(__Pyx_init_assertions_enabled() == 0)); else
+
+if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L1_error)
+
+  return 0;
+  __pyx_L1_error:;
+  return -1;
+}
+/* #### 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_v_7_cython_6cygrpc_CQ_SHUTDOWN_FAILURE_HANDLER = ((struct __pyx_obj_7_cython_6cygrpc_CallbackFailureHandler *)Py_None); Py_INCREF(Py_None);
+  __pyx_v_7_cython_6cygrpc__GRPC_ASYNCIO_ENGINE = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  __pyx_v_7_cython_6cygrpc__global_aio_state = ((struct __pyx_obj_7_cython_6cygrpc__AioState *)Py_None); Py_INCREF(Py_None);
+  __pyx_v_7_cython_6cygrpc__WATCH_CONNECTIVITY_FAILURE_HANDLER = ((struct __pyx_obj_7_cython_6cygrpc_CallbackFailureHandler *)Py_None); Py_INCREF(Py_None);
+  __pyx_v_7_cython_6cygrpc__RPC_FINISHED_DETAILS = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  __pyx_v_7_cython_6cygrpc__SERVER_STOPPED_DETAILS = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  __pyx_v_7_cython_6cygrpc_REQUEST_CALL_FAILURE_HANDLER = ((struct __pyx_obj_7_cython_6cygrpc_CallbackFailureHandler *)Py_None); Py_INCREF(Py_None);
+  __pyx_v_7_cython_6cygrpc_SERVER_SHUTDOWN_FAILURE_HANDLER = ((struct __pyx_obj_7_cython_6cygrpc_CallbackFailureHandler *)Py_None); Py_INCREF(Py_None);
+  __Pyx_RefNannyFinishContext();
+  return 0;
+}
+
+static int __Pyx_modinit_variable_export_code(void) {
+  __Pyx_RefNannyDeclarations
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0);
+  /*--- Variable export code ---*/
+  if (__Pyx_ExportVoidPtr(__pyx_n_s_g_interrupt_check_period_ms, (void *)&__pyx_v_7_cython_6cygrpc_g_interrupt_check_period_ms, "int") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  if (__Pyx_ExportVoidPtr(__pyx_n_s_default_vtable, (void *)&__pyx_v_7_cython_6cygrpc_default_vtable, "grpc_arg_pointer_vtable") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  __Pyx_RefNannyFinishContext();
+  return 0;
+  __pyx_L1_error:;
+  __Pyx_RefNannyFinishContext();
+  return -1;
+}
+
+static int __Pyx_modinit_function_export_code(void) {
+  __Pyx_RefNannyDeclarations
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0);
+  /*--- Function export code ---*/
+  if (__Pyx_ExportFunction("_wrap_grpc_arg", (void (*)(void))__pyx_f_7_cython_6cygrpc__wrap_grpc_arg, "PyObject *(grpc_arg)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  if (__Pyx_ExportFunction("_unwrap_grpc_arg", (void (*)(void))__pyx_f_7_cython_6cygrpc__unwrap_grpc_arg, "grpc_arg (PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  if (__Pyx_ExportFunction("_check_call_error_no_metadata", (void (*)(void))__pyx_f_7_cython_6cygrpc__check_call_error_no_metadata, "PyObject *(PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  if (__Pyx_ExportFunction("_check_and_raise_call_error_no_metadata", (void (*)(void))__pyx_f_7_cython_6cygrpc__check_and_raise_call_error_no_metadata, "PyObject *(PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  if (__Pyx_ExportFunction("_check_call_error", (void (*)(void))__pyx_f_7_cython_6cygrpc__check_call_error, "PyObject *(PyObject *, PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  if (__Pyx_ExportFunction("_get_metadata", (void (*)(void))__pyx_f_7_cython_6cygrpc__get_metadata, "int (void *, grpc_auth_metadata_context, grpc_credentials_plugin_metadata_cb, void *, grpc_metadata *, size_t *, grpc_status_code *, char const **)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  if (__Pyx_ExportFunction("_destroy", (void (*)(void))__pyx_f_7_cython_6cygrpc__destroy, "void (void *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  if (__Pyx_ExportFunction("_composition", (void (*)(void))__pyx_f_7_cython_6cygrpc__composition, "grpc_call_credentials *(PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  if (__Pyx_ExportFunction("_next", (void (*)(void))__pyx_f_7_cython_6cygrpc__next, "grpc_event (grpc_completion_queue *, PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  if (__Pyx_ExportFunction("_interpret_event", (void (*)(void))__pyx_f_7_cython_6cygrpc__interpret_event, "PyObject *(grpc_event)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  if (__Pyx_ExportFunction("_store_c_metadata", (void (*)(void))__pyx_f_7_cython_6cygrpc__store_c_metadata, "void (PyObject *, grpc_metadata **, size_t *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  if (__Pyx_ExportFunction("_release_c_metadata", (void (*)(void))__pyx_f_7_cython_6cygrpc__release_c_metadata, "void (grpc_metadata *, int)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  if (__Pyx_ExportFunction("_metadatum", (void (*)(void))__pyx_f_7_cython_6cygrpc__metadatum, "PyObject *(grpc_slice, grpc_slice)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  if (__Pyx_ExportFunction("_metadata", (void (*)(void))__pyx_f_7_cython_6cygrpc__metadata, "PyObject *(grpc_metadata_array *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  if (__Pyx_ExportFunction("_slice_bytes", (void (*)(void))__pyx_f_7_cython_6cygrpc__slice_bytes, "PyObject *(grpc_slice)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  if (__Pyx_ExportFunction("_copy_slice", (void (*)(void))__pyx_f_7_cython_6cygrpc__copy_slice, "grpc_slice (grpc_slice)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  if (__Pyx_ExportFunction("_slice_from_bytes", (void (*)(void))__pyx_f_7_cython_6cygrpc__slice_from_bytes, "grpc_slice (PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  if (__Pyx_ExportFunction("ssl_roots_override_callback", (void (*)(void))__pyx_f_7_cython_6cygrpc_ssl_roots_override_callback, "grpc_ssl_roots_override_result (char **)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  if (__Pyx_ExportFunction("_timespec_from_time", (void (*)(void))__pyx_f_7_cython_6cygrpc__timespec_from_time, "gpr_timespec (PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  if (__Pyx_ExportFunction("_time_from_timespec", (void (*)(void))__pyx_f_7_cython_6cygrpc__time_from_timespec, "double (gpr_timespec)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  if (__Pyx_ExportFunction("_copy_pointer", (void (*)(void))__pyx_f_7_cython_6cygrpc__copy_pointer, "void *(void *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  if (__Pyx_ExportFunction("_destroy_pointer", (void (*)(void))__pyx_f_7_cython_6cygrpc__destroy_pointer, "void (void *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  if (__Pyx_ExportFunction("_compare_pointer", (void (*)(void))__pyx_f_7_cython_6cygrpc__compare_pointer, "int (void *, void *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  if (__Pyx_ExportFunction("_custom_op_on_c_call", (void (*)(void))__pyx_f_7_cython_6cygrpc__custom_op_on_c_call, "PyObject *(int, grpc_call *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  if (__Pyx_ExportFunction("gevent_increment_channel_count", (void (*)(void))__pyx_f_7_cython_6cygrpc_gevent_increment_channel_count, "void (int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  if (__Pyx_ExportFunction("gevent_decrement_channel_count", (void (*)(void))__pyx_f_7_cython_6cygrpc_gevent_decrement_channel_count, "void (int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  if (__Pyx_ExportFunction("__prefork", (void (*)(void))__pyx_f_7_cython_6cygrpc___prefork, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  if (__Pyx_ExportFunction("__postfork_parent", (void (*)(void))__pyx_f_7_cython_6cygrpc___postfork_parent, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  if (__Pyx_ExportFunction("__postfork_child", (void (*)(void))__pyx_f_7_cython_6cygrpc___postfork_child, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  if (__Pyx_ExportFunction("_unified_socket_write", (void (*)(void))__pyx_f_7_cython_6cygrpc__unified_socket_write, "void (int)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  if (__Pyx_ExportFunction("global_completion_queue", (void (*)(void))__pyx_f_7_cython_6cygrpc_global_completion_queue, "grpc_completion_queue *(void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  if (__Pyx_ExportFunction("init_grpc_aio", (void (*)(void))__pyx_f_7_cython_6cygrpc_init_grpc_aio, "PyObject *(int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  if (__Pyx_ExportFunction("shutdown_grpc_aio", (void (*)(void))__pyx_f_7_cython_6cygrpc_shutdown_grpc_aio, "PyObject *(int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  __Pyx_RefNannyFinishContext();
+  return 0;
+  __pyx_L1_error:;
+  __Pyx_RefNannyFinishContext();
+  return -1;
+}
+
+static int __Pyx_modinit_type_init_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_init_code", 0);
+  /*--- Type init code ---*/
+  __pyx_vtabptr_7_cython_6cygrpc__ChannelArg = &__pyx_vtable_7_cython_6cygrpc__ChannelArg;
+  __pyx_vtable_7_cython_6cygrpc__ChannelArg.c = (void (*)(struct __pyx_obj_7_cython_6cygrpc__ChannelArg *, PyObject *, PyObject *))__pyx_f_7_cython_6cygrpc_11_ChannelArg_c;
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc__ChannelArg = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc__ChannelArg_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc__ChannelArg)) __PYX_ERR(3, 32, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc__ChannelArg_spec, __pyx_ptype_7_cython_6cygrpc__ChannelArg) < 0) __PYX_ERR(3, 32, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc__ChannelArg = &__pyx_type_7_cython_6cygrpc__ChannelArg;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc__ChannelArg) < 0) __PYX_ERR(3, 32, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc__ChannelArg->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc__ChannelArg->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc__ChannelArg->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc__ChannelArg->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (__Pyx_SetVtable(__pyx_ptype_7_cython_6cygrpc__ChannelArg, __pyx_vtabptr_7_cython_6cygrpc__ChannelArg) < 0) __PYX_ERR(3, 32, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_MergeVtables(__pyx_ptype_7_cython_6cygrpc__ChannelArg) < 0) __PYX_ERR(3, 32, __pyx_L1_error)
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ChannelArg, (PyObject *) __pyx_ptype_7_cython_6cygrpc__ChannelArg) < 0) __PYX_ERR(3, 32, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc__ChannelArg) < 0) __PYX_ERR(3, 32, __pyx_L1_error)
+  #endif
+  __pyx_vtabptr_7_cython_6cygrpc__ChannelArgs = &__pyx_vtable_7_cython_6cygrpc__ChannelArgs;
+  __pyx_vtable_7_cython_6cygrpc__ChannelArgs.c_args = (grpc_channel_args *(*)(struct __pyx_obj_7_cython_6cygrpc__ChannelArgs *))__pyx_f_7_cython_6cygrpc_12_ChannelArgs_c_args;
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc__ChannelArgs = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc__ChannelArgs_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc__ChannelArgs)) __PYX_ERR(3, 64, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc__ChannelArgs_spec, __pyx_ptype_7_cython_6cygrpc__ChannelArgs) < 0) __PYX_ERR(3, 64, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc__ChannelArgs = &__pyx_type_7_cython_6cygrpc__ChannelArgs;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc__ChannelArgs) < 0) __PYX_ERR(3, 64, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc__ChannelArgs->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc__ChannelArgs->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc__ChannelArgs->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc__ChannelArgs->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (__Pyx_SetVtable(__pyx_ptype_7_cython_6cygrpc__ChannelArgs, __pyx_vtabptr_7_cython_6cygrpc__ChannelArgs) < 0) __PYX_ERR(3, 64, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_MergeVtables(__pyx_ptype_7_cython_6cygrpc__ChannelArgs) < 0) __PYX_ERR(3, 64, __pyx_L1_error)
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ChannelArgs, (PyObject *) __pyx_ptype_7_cython_6cygrpc__ChannelArgs) < 0) __PYX_ERR(3, 64, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc__ChannelArgs) < 0) __PYX_ERR(3, 64, __pyx_L1_error)
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc_Call = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc_Call_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc_Call)) __PYX_ERR(4, 16, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc_Call_spec, __pyx_ptype_7_cython_6cygrpc_Call) < 0) __PYX_ERR(4, 16, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc_Call = &__pyx_type_7_cython_6cygrpc_Call;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc_Call) < 0) __PYX_ERR(4, 16, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc_Call->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc_Call->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc_Call->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc_Call->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Call, (PyObject *) __pyx_ptype_7_cython_6cygrpc_Call) < 0) __PYX_ERR(4, 16, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc_Call) < 0) __PYX_ERR(4, 16, __pyx_L1_error)
+  #endif
+  __pyx_vtabptr_7_cython_6cygrpc__CallState = &__pyx_vtable_7_cython_6cygrpc__CallState;
+  __pyx_vtable_7_cython_6cygrpc__CallState.maybe_set_client_call_tracer_on_call = (void (*)(struct __pyx_obj_7_cython_6cygrpc__CallState *, PyObject *, PyObject *))__pyx_f_7_cython_6cygrpc_10_CallState_maybe_set_client_call_tracer_on_call;
+  __pyx_vtable_7_cython_6cygrpc__CallState.maybe_delete_call_tracer = (void (*)(struct __pyx_obj_7_cython_6cygrpc__CallState *))__pyx_f_7_cython_6cygrpc_10_CallState_maybe_delete_call_tracer;
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc__CallState = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc__CallState_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc__CallState)) __PYX_ERR(12, 70, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc__CallState_spec, __pyx_ptype_7_cython_6cygrpc__CallState) < 0) __PYX_ERR(12, 70, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc__CallState = &__pyx_type_7_cython_6cygrpc__CallState;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc__CallState) < 0) __PYX_ERR(12, 70, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc__CallState->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc__CallState->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc__CallState->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc__CallState->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (__Pyx_SetVtable(__pyx_ptype_7_cython_6cygrpc__CallState, __pyx_vtabptr_7_cython_6cygrpc__CallState) < 0) __PYX_ERR(12, 70, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_MergeVtables(__pyx_ptype_7_cython_6cygrpc__CallState) < 0) __PYX_ERR(12, 70, __pyx_L1_error)
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_CallState, (PyObject *) __pyx_ptype_7_cython_6cygrpc__CallState) < 0) __PYX_ERR(12, 70, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc__CallState) < 0) __PYX_ERR(12, 70, __pyx_L1_error)
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc__ChannelState = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc__ChannelState_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc__ChannelState)) __PYX_ERR(12, 93, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc__ChannelState_spec, __pyx_ptype_7_cython_6cygrpc__ChannelState) < 0) __PYX_ERR(12, 93, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc__ChannelState = &__pyx_type_7_cython_6cygrpc__ChannelState;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc__ChannelState) < 0) __PYX_ERR(12, 93, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc__ChannelState->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc__ChannelState->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc__ChannelState->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc__ChannelState->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ChannelState, (PyObject *) __pyx_ptype_7_cython_6cygrpc__ChannelState) < 0) __PYX_ERR(12, 93, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc__ChannelState) < 0) __PYX_ERR(12, 93, __pyx_L1_error)
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc_IntegratedCall = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc_IntegratedCall_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc_IntegratedCall)) __PYX_ERR(12, 322, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc_IntegratedCall_spec, __pyx_ptype_7_cython_6cygrpc_IntegratedCall) < 0) __PYX_ERR(12, 322, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc_IntegratedCall = &__pyx_type_7_cython_6cygrpc_IntegratedCall;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc_IntegratedCall) < 0) __PYX_ERR(12, 322, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc_IntegratedCall->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc_IntegratedCall->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc_IntegratedCall->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc_IntegratedCall->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_IntegratedCall, (PyObject *) __pyx_ptype_7_cython_6cygrpc_IntegratedCall) < 0) __PYX_ERR(12, 322, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc_IntegratedCall) < 0) __PYX_ERR(12, 322, __pyx_L1_error)
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc_SegregatedCall = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc_SegregatedCall_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc_SegregatedCall)) __PYX_ERR(12, 371, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc_SegregatedCall_spec, __pyx_ptype_7_cython_6cygrpc_SegregatedCall) < 0) __PYX_ERR(12, 371, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc_SegregatedCall = &__pyx_type_7_cython_6cygrpc_SegregatedCall;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc_SegregatedCall) < 0) __PYX_ERR(12, 371, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc_SegregatedCall->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc_SegregatedCall->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc_SegregatedCall->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc_SegregatedCall->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_SegregatedCall, (PyObject *) __pyx_ptype_7_cython_6cygrpc_SegregatedCall) < 0) __PYX_ERR(12, 371, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc_SegregatedCall) < 0) __PYX_ERR(12, 371, __pyx_L1_error)
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc_Channel = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc_Channel_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc_Channel)) __PYX_ERR(12, 498, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc_Channel_spec, __pyx_ptype_7_cython_6cygrpc_Channel) < 0) __PYX_ERR(12, 498, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc_Channel = &__pyx_type_7_cython_6cygrpc_Channel;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc_Channel) < 0) __PYX_ERR(12, 498, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc_Channel->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc_Channel->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc_Channel->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc_Channel->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Channel, (PyObject *) __pyx_ptype_7_cython_6cygrpc_Channel) < 0) __PYX_ERR(12, 498, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc_Channel) < 0) __PYX_ERR(12, 498, __pyx_L1_error)
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc_CallHandle = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc_CallHandle_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc_CallHandle)) __PYX_ERR(12, 104, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc_CallHandle_spec, __pyx_ptype_7_cython_6cygrpc_CallHandle) < 0) __PYX_ERR(12, 104, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc_CallHandle = &__pyx_type_7_cython_6cygrpc_CallHandle;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc_CallHandle) < 0) __PYX_ERR(12, 104, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc_CallHandle->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc_CallHandle->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc_CallHandle->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc_CallHandle->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_CallHandle, (PyObject *) __pyx_ptype_7_cython_6cygrpc_CallHandle) < 0) __PYX_ERR(12, 104, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc_CallHandle) < 0) __PYX_ERR(12, 104, __pyx_L1_error)
+  #endif
+  __pyx_vtabptr_7_cython_6cygrpc_CallCredentials = &__pyx_vtable_7_cython_6cygrpc_CallCredentials;
+  __pyx_vtable_7_cython_6cygrpc_CallCredentials.c = (grpc_call_credentials *(*)(struct __pyx_obj_7_cython_6cygrpc_CallCredentials *))__pyx_f_7_cython_6cygrpc_15CallCredentials_c;
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc_CallCredentials = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc_CallCredentials_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc_CallCredentials)) __PYX_ERR(5, 31, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc_CallCredentials_spec, __pyx_ptype_7_cython_6cygrpc_CallCredentials) < 0) __PYX_ERR(5, 31, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc_CallCredentials = &__pyx_type_7_cython_6cygrpc_CallCredentials;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc_CallCredentials) < 0) __PYX_ERR(5, 31, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc_CallCredentials->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc_CallCredentials->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc_CallCredentials->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc_CallCredentials->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (__Pyx_SetVtable(__pyx_ptype_7_cython_6cygrpc_CallCredentials, __pyx_vtabptr_7_cython_6cygrpc_CallCredentials) < 0) __PYX_ERR(5, 31, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_MergeVtables(__pyx_ptype_7_cython_6cygrpc_CallCredentials) < 0) __PYX_ERR(5, 31, __pyx_L1_error)
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_CallCredentials, (PyObject *) __pyx_ptype_7_cython_6cygrpc_CallCredentials) < 0) __PYX_ERR(5, 31, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc_CallCredentials) < 0) __PYX_ERR(5, 31, __pyx_L1_error)
+  #endif
+  __pyx_vtabptr_7_cython_6cygrpc_MetadataPluginCallCredentials = &__pyx_vtable_7_cython_6cygrpc_MetadataPluginCallCredentials;
+  __pyx_vtable_7_cython_6cygrpc_MetadataPluginCallCredentials.__pyx_base = *__pyx_vtabptr_7_cython_6cygrpc_CallCredentials;
+  __pyx_vtable_7_cython_6cygrpc_MetadataPluginCallCredentials.__pyx_base.c = (grpc_call_credentials *(*)(struct __pyx_obj_7_cython_6cygrpc_CallCredentials *))__pyx_f_7_cython_6cygrpc_29MetadataPluginCallCredentials_c;
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_t_1 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_7_cython_6cygrpc_CallCredentials); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 73, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_ptype_7_cython_6cygrpc_MetadataPluginCallCredentials = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc_MetadataPluginCallCredentials_spec, __pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (unlikely(!__pyx_ptype_7_cython_6cygrpc_MetadataPluginCallCredentials)) __PYX_ERR(5, 73, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc_MetadataPluginCallCredentials_spec, __pyx_ptype_7_cython_6cygrpc_MetadataPluginCallCredentials) < 0) __PYX_ERR(5, 73, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc_MetadataPluginCallCredentials = &__pyx_type_7_cython_6cygrpc_MetadataPluginCallCredentials;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  __pyx_ptype_7_cython_6cygrpc_MetadataPluginCallCredentials->tp_base = __pyx_ptype_7_cython_6cygrpc_CallCredentials;
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc_MetadataPluginCallCredentials) < 0) __PYX_ERR(5, 73, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc_MetadataPluginCallCredentials->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc_MetadataPluginCallCredentials->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc_MetadataPluginCallCredentials->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc_MetadataPluginCallCredentials->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (__Pyx_SetVtable(__pyx_ptype_7_cython_6cygrpc_MetadataPluginCallCredentials, __pyx_vtabptr_7_cython_6cygrpc_MetadataPluginCallCredentials) < 0) __PYX_ERR(5, 73, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_MergeVtables(__pyx_ptype_7_cython_6cygrpc_MetadataPluginCallCredentials) < 0) __PYX_ERR(5, 73, __pyx_L1_error)
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_MetadataPluginCallCredentials, (PyObject *) __pyx_ptype_7_cython_6cygrpc_MetadataPluginCallCredentials) < 0) __PYX_ERR(5, 73, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc_MetadataPluginCallCredentials) < 0) __PYX_ERR(5, 73, __pyx_L1_error)
+  #endif
+  __pyx_vtabptr_7_cython_6cygrpc_CompositeCallCredentials = &__pyx_vtable_7_cython_6cygrpc_CompositeCallCredentials;
+  __pyx_vtable_7_cython_6cygrpc_CompositeCallCredentials.__pyx_base = *__pyx_vtabptr_7_cython_6cygrpc_CallCredentials;
+  __pyx_vtable_7_cython_6cygrpc_CompositeCallCredentials.__pyx_base.c = (grpc_call_credentials *(*)(struct __pyx_obj_7_cython_6cygrpc_CallCredentials *))__pyx_f_7_cython_6cygrpc_24CompositeCallCredentials_c;
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_t_1 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_7_cython_6cygrpc_CallCredentials); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 109, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_ptype_7_cython_6cygrpc_CompositeCallCredentials = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc_CompositeCallCredentials_spec, __pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (unlikely(!__pyx_ptype_7_cython_6cygrpc_CompositeCallCredentials)) __PYX_ERR(5, 109, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc_CompositeCallCredentials_spec, __pyx_ptype_7_cython_6cygrpc_CompositeCallCredentials) < 0) __PYX_ERR(5, 109, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc_CompositeCallCredentials = &__pyx_type_7_cython_6cygrpc_CompositeCallCredentials;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  __pyx_ptype_7_cython_6cygrpc_CompositeCallCredentials->tp_base = __pyx_ptype_7_cython_6cygrpc_CallCredentials;
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc_CompositeCallCredentials) < 0) __PYX_ERR(5, 109, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc_CompositeCallCredentials->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc_CompositeCallCredentials->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc_CompositeCallCredentials->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc_CompositeCallCredentials->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (__Pyx_SetVtable(__pyx_ptype_7_cython_6cygrpc_CompositeCallCredentials, __pyx_vtabptr_7_cython_6cygrpc_CompositeCallCredentials) < 0) __PYX_ERR(5, 109, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_MergeVtables(__pyx_ptype_7_cython_6cygrpc_CompositeCallCredentials) < 0) __PYX_ERR(5, 109, __pyx_L1_error)
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_CompositeCallCredentials, (PyObject *) __pyx_ptype_7_cython_6cygrpc_CompositeCallCredentials) < 0) __PYX_ERR(5, 109, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc_CompositeCallCredentials) < 0) __PYX_ERR(5, 109, __pyx_L1_error)
+  #endif
+  __pyx_vtabptr_7_cython_6cygrpc_ChannelCredentials = &__pyx_vtable_7_cython_6cygrpc_ChannelCredentials;
+  __pyx_vtable_7_cython_6cygrpc_ChannelCredentials.c = (grpc_channel_credentials *(*)(struct __pyx_obj_7_cython_6cygrpc_ChannelCredentials *))__pyx_f_7_cython_6cygrpc_18ChannelCredentials_c;
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc_ChannelCredentials = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc_ChannelCredentials_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc_ChannelCredentials)) __PYX_ERR(5, 118, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc_ChannelCredentials_spec, __pyx_ptype_7_cython_6cygrpc_ChannelCredentials) < 0) __PYX_ERR(5, 118, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc_ChannelCredentials = &__pyx_type_7_cython_6cygrpc_ChannelCredentials;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc_ChannelCredentials) < 0) __PYX_ERR(5, 118, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc_ChannelCredentials->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc_ChannelCredentials->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc_ChannelCredentials->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc_ChannelCredentials->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (__Pyx_SetVtable(__pyx_ptype_7_cython_6cygrpc_ChannelCredentials, __pyx_vtabptr_7_cython_6cygrpc_ChannelCredentials) < 0) __PYX_ERR(5, 118, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_MergeVtables(__pyx_ptype_7_cython_6cygrpc_ChannelCredentials) < 0) __PYX_ERR(5, 118, __pyx_L1_error)
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ChannelCredentials, (PyObject *) __pyx_ptype_7_cython_6cygrpc_ChannelCredentials) < 0) __PYX_ERR(5, 118, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc_ChannelCredentials) < 0) __PYX_ERR(5, 118, __pyx_L1_error)
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc_SSLSessionCacheLRU = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc_SSLSessionCacheLRU_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc_SSLSessionCacheLRU)) __PYX_ERR(5, 124, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc_SSLSessionCacheLRU_spec, __pyx_ptype_7_cython_6cygrpc_SSLSessionCacheLRU) < 0) __PYX_ERR(5, 124, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc_SSLSessionCacheLRU = &__pyx_type_7_cython_6cygrpc_SSLSessionCacheLRU;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc_SSLSessionCacheLRU) < 0) __PYX_ERR(5, 124, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc_SSLSessionCacheLRU->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc_SSLSessionCacheLRU->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc_SSLSessionCacheLRU->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc_SSLSessionCacheLRU->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_SSLSessionCacheLRU, (PyObject *) __pyx_ptype_7_cython_6cygrpc_SSLSessionCacheLRU) < 0) __PYX_ERR(5, 124, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc_SSLSessionCacheLRU) < 0) __PYX_ERR(5, 124, __pyx_L1_error)
+  #endif
+  __pyx_vtabptr_7_cython_6cygrpc_SSLChannelCredentials = &__pyx_vtable_7_cython_6cygrpc_SSLChannelCredentials;
+  __pyx_vtable_7_cython_6cygrpc_SSLChannelCredentials.__pyx_base = *__pyx_vtabptr_7_cython_6cygrpc_ChannelCredentials;
+  __pyx_vtable_7_cython_6cygrpc_SSLChannelCredentials.__pyx_base.c = (grpc_channel_credentials *(*)(struct __pyx_obj_7_cython_6cygrpc_ChannelCredentials *))__pyx_f_7_cython_6cygrpc_21SSLChannelCredentials_c;
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_t_1 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_7_cython_6cygrpc_ChannelCredentials); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 139, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_ptype_7_cython_6cygrpc_SSLChannelCredentials = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc_SSLChannelCredentials_spec, __pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (unlikely(!__pyx_ptype_7_cython_6cygrpc_SSLChannelCredentials)) __PYX_ERR(5, 139, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc_SSLChannelCredentials_spec, __pyx_ptype_7_cython_6cygrpc_SSLChannelCredentials) < 0) __PYX_ERR(5, 139, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc_SSLChannelCredentials = &__pyx_type_7_cython_6cygrpc_SSLChannelCredentials;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  __pyx_ptype_7_cython_6cygrpc_SSLChannelCredentials->tp_base = __pyx_ptype_7_cython_6cygrpc_ChannelCredentials;
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc_SSLChannelCredentials) < 0) __PYX_ERR(5, 139, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc_SSLChannelCredentials->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc_SSLChannelCredentials->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc_SSLChannelCredentials->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc_SSLChannelCredentials->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (__Pyx_SetVtable(__pyx_ptype_7_cython_6cygrpc_SSLChannelCredentials, __pyx_vtabptr_7_cython_6cygrpc_SSLChannelCredentials) < 0) __PYX_ERR(5, 139, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_MergeVtables(__pyx_ptype_7_cython_6cygrpc_SSLChannelCredentials) < 0) __PYX_ERR(5, 139, __pyx_L1_error)
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_SSLChannelCredentials, (PyObject *) __pyx_ptype_7_cython_6cygrpc_SSLChannelCredentials) < 0) __PYX_ERR(5, 139, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc_SSLChannelCredentials) < 0) __PYX_ERR(5, 139, __pyx_L1_error)
+  #endif
+  __pyx_vtabptr_7_cython_6cygrpc_CompositeChannelCredentials = &__pyx_vtable_7_cython_6cygrpc_CompositeChannelCredentials;
+  __pyx_vtable_7_cython_6cygrpc_CompositeChannelCredentials.__pyx_base = *__pyx_vtabptr_7_cython_6cygrpc_ChannelCredentials;
+  __pyx_vtable_7_cython_6cygrpc_CompositeChannelCredentials.__pyx_base.c = (grpc_channel_credentials *(*)(struct __pyx_obj_7_cython_6cygrpc_ChannelCredentials *))__pyx_f_7_cython_6cygrpc_27CompositeChannelCredentials_c;
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_t_1 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_7_cython_6cygrpc_ChannelCredentials); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 173, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_ptype_7_cython_6cygrpc_CompositeChannelCredentials = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc_CompositeChannelCredentials_spec, __pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (unlikely(!__pyx_ptype_7_cython_6cygrpc_CompositeChannelCredentials)) __PYX_ERR(5, 173, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc_CompositeChannelCredentials_spec, __pyx_ptype_7_cython_6cygrpc_CompositeChannelCredentials) < 0) __PYX_ERR(5, 173, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc_CompositeChannelCredentials = &__pyx_type_7_cython_6cygrpc_CompositeChannelCredentials;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  __pyx_ptype_7_cython_6cygrpc_CompositeChannelCredentials->tp_base = __pyx_ptype_7_cython_6cygrpc_ChannelCredentials;
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc_CompositeChannelCredentials) < 0) __PYX_ERR(5, 173, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc_CompositeChannelCredentials->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc_CompositeChannelCredentials->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc_CompositeChannelCredentials->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc_CompositeChannelCredentials->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (__Pyx_SetVtable(__pyx_ptype_7_cython_6cygrpc_CompositeChannelCredentials, __pyx_vtabptr_7_cython_6cygrpc_CompositeChannelCredentials) < 0) __PYX_ERR(5, 173, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_MergeVtables(__pyx_ptype_7_cython_6cygrpc_CompositeChannelCredentials) < 0) __PYX_ERR(5, 173, __pyx_L1_error)
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_CompositeChannelCredentials, (PyObject *) __pyx_ptype_7_cython_6cygrpc_CompositeChannelCredentials) < 0) __PYX_ERR(5, 173, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc_CompositeChannelCredentials) < 0) __PYX_ERR(5, 173, __pyx_L1_error)
+  #endif
+  __pyx_vtabptr_7_cython_6cygrpc_XDSChannelCredentials = &__pyx_vtable_7_cython_6cygrpc_XDSChannelCredentials;
+  __pyx_vtable_7_cython_6cygrpc_XDSChannelCredentials.__pyx_base = *__pyx_vtabptr_7_cython_6cygrpc_ChannelCredentials;
+  __pyx_vtable_7_cython_6cygrpc_XDSChannelCredentials.__pyx_base.c = (grpc_channel_credentials *(*)(struct __pyx_obj_7_cython_6cygrpc_ChannelCredentials *))__pyx_f_7_cython_6cygrpc_21XDSChannelCredentials_c;
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_t_1 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_7_cython_6cygrpc_ChannelCredentials); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 192, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_ptype_7_cython_6cygrpc_XDSChannelCredentials = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc_XDSChannelCredentials_spec, __pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (unlikely(!__pyx_ptype_7_cython_6cygrpc_XDSChannelCredentials)) __PYX_ERR(5, 192, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc_XDSChannelCredentials_spec, __pyx_ptype_7_cython_6cygrpc_XDSChannelCredentials) < 0) __PYX_ERR(5, 192, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc_XDSChannelCredentials = &__pyx_type_7_cython_6cygrpc_XDSChannelCredentials;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  __pyx_ptype_7_cython_6cygrpc_XDSChannelCredentials->tp_base = __pyx_ptype_7_cython_6cygrpc_ChannelCredentials;
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc_XDSChannelCredentials) < 0) __PYX_ERR(5, 192, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc_XDSChannelCredentials->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc_XDSChannelCredentials->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc_XDSChannelCredentials->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc_XDSChannelCredentials->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (__Pyx_SetVtable(__pyx_ptype_7_cython_6cygrpc_XDSChannelCredentials, __pyx_vtabptr_7_cython_6cygrpc_XDSChannelCredentials) < 0) __PYX_ERR(5, 192, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_MergeVtables(__pyx_ptype_7_cython_6cygrpc_XDSChannelCredentials) < 0) __PYX_ERR(5, 192, __pyx_L1_error)
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_XDSChannelCredentials, (PyObject *) __pyx_ptype_7_cython_6cygrpc_XDSChannelCredentials) < 0) __PYX_ERR(5, 192, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc_XDSChannelCredentials) < 0) __PYX_ERR(5, 192, __pyx_L1_error)
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc_ServerCertificateConfig = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc_ServerCertificateConfig_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc_ServerCertificateConfig)) __PYX_ERR(5, 204, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc_ServerCertificateConfig_spec, __pyx_ptype_7_cython_6cygrpc_ServerCertificateConfig) < 0) __PYX_ERR(5, 204, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc_ServerCertificateConfig = &__pyx_type_7_cython_6cygrpc_ServerCertificateConfig;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc_ServerCertificateConfig) < 0) __PYX_ERR(5, 204, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc_ServerCertificateConfig->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc_ServerCertificateConfig->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc_ServerCertificateConfig->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc_ServerCertificateConfig->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ServerCertificateConfig, (PyObject *) __pyx_ptype_7_cython_6cygrpc_ServerCertificateConfig) < 0) __PYX_ERR(5, 204, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc_ServerCertificateConfig) < 0) __PYX_ERR(5, 204, __pyx_L1_error)
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc_ServerCredentials = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc_ServerCredentials_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc_ServerCredentials)) __PYX_ERR(5, 219, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc_ServerCredentials_spec, __pyx_ptype_7_cython_6cygrpc_ServerCredentials) < 0) __PYX_ERR(5, 219, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc_ServerCredentials = &__pyx_type_7_cython_6cygrpc_ServerCredentials;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc_ServerCredentials) < 0) __PYX_ERR(5, 219, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc_ServerCredentials->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc_ServerCredentials->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc_ServerCredentials->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc_ServerCredentials->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ServerCredentials, (PyObject *) __pyx_ptype_7_cython_6cygrpc_ServerCredentials) < 0) __PYX_ERR(5, 219, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc_ServerCredentials) < 0) __PYX_ERR(5, 219, __pyx_L1_error)
+  #endif
+  __pyx_vtabptr_7_cython_6cygrpc_LocalChannelCredentials = &__pyx_vtable_7_cython_6cygrpc_LocalChannelCredentials;
+  __pyx_vtable_7_cython_6cygrpc_LocalChannelCredentials.__pyx_base = *__pyx_vtabptr_7_cython_6cygrpc_ChannelCredentials;
+  __pyx_vtable_7_cython_6cygrpc_LocalChannelCredentials.__pyx_base.c = (grpc_channel_credentials *(*)(struct __pyx_obj_7_cython_6cygrpc_ChannelCredentials *))__pyx_f_7_cython_6cygrpc_23LocalChannelCredentials_c;
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_t_1 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_7_cython_6cygrpc_ChannelCredentials); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 360, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_ptype_7_cython_6cygrpc_LocalChannelCredentials = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc_LocalChannelCredentials_spec, __pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (unlikely(!__pyx_ptype_7_cython_6cygrpc_LocalChannelCredentials)) __PYX_ERR(5, 360, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc_LocalChannelCredentials_spec, __pyx_ptype_7_cython_6cygrpc_LocalChannelCredentials) < 0) __PYX_ERR(5, 360, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc_LocalChannelCredentials = &__pyx_type_7_cython_6cygrpc_LocalChannelCredentials;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  __pyx_ptype_7_cython_6cygrpc_LocalChannelCredentials->tp_base = __pyx_ptype_7_cython_6cygrpc_ChannelCredentials;
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc_LocalChannelCredentials) < 0) __PYX_ERR(5, 360, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc_LocalChannelCredentials->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc_LocalChannelCredentials->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc_LocalChannelCredentials->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc_LocalChannelCredentials->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (__Pyx_SetVtable(__pyx_ptype_7_cython_6cygrpc_LocalChannelCredentials, __pyx_vtabptr_7_cython_6cygrpc_LocalChannelCredentials) < 0) __PYX_ERR(5, 360, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_MergeVtables(__pyx_ptype_7_cython_6cygrpc_LocalChannelCredentials) < 0) __PYX_ERR(5, 360, __pyx_L1_error)
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_LocalChannelCredentials, (PyObject *) __pyx_ptype_7_cython_6cygrpc_LocalChannelCredentials) < 0) __PYX_ERR(5, 360, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc_LocalChannelCredentials) < 0) __PYX_ERR(5, 360, __pyx_L1_error)
+  #endif
+  __pyx_vtabptr_7_cython_6cygrpc_ALTSChannelCredentials = &__pyx_vtable_7_cython_6cygrpc_ALTSChannelCredentials;
+  __pyx_vtable_7_cython_6cygrpc_ALTSChannelCredentials.__pyx_base = *__pyx_vtabptr_7_cython_6cygrpc_ChannelCredentials;
+  __pyx_vtable_7_cython_6cygrpc_ALTSChannelCredentials.__pyx_base.c = (grpc_channel_credentials *(*)(struct __pyx_obj_7_cython_6cygrpc_ChannelCredentials *))__pyx_f_7_cython_6cygrpc_22ALTSChannelCredentials_c;
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_t_1 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_7_cython_6cygrpc_ChannelCredentials); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 399, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_ptype_7_cython_6cygrpc_ALTSChannelCredentials = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc_ALTSChannelCredentials_spec, __pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (unlikely(!__pyx_ptype_7_cython_6cygrpc_ALTSChannelCredentials)) __PYX_ERR(5, 399, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc_ALTSChannelCredentials_spec, __pyx_ptype_7_cython_6cygrpc_ALTSChannelCredentials) < 0) __PYX_ERR(5, 399, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc_ALTSChannelCredentials = &__pyx_type_7_cython_6cygrpc_ALTSChannelCredentials;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  __pyx_ptype_7_cython_6cygrpc_ALTSChannelCredentials->tp_base = __pyx_ptype_7_cython_6cygrpc_ChannelCredentials;
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc_ALTSChannelCredentials) < 0) __PYX_ERR(5, 399, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc_ALTSChannelCredentials->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc_ALTSChannelCredentials->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc_ALTSChannelCredentials->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc_ALTSChannelCredentials->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (__Pyx_SetVtable(__pyx_ptype_7_cython_6cygrpc_ALTSChannelCredentials, __pyx_vtabptr_7_cython_6cygrpc_ALTSChannelCredentials) < 0) __PYX_ERR(5, 399, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_MergeVtables(__pyx_ptype_7_cython_6cygrpc_ALTSChannelCredentials) < 0) __PYX_ERR(5, 399, __pyx_L1_error)
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ALTSChannelCredentials, (PyObject *) __pyx_ptype_7_cython_6cygrpc_ALTSChannelCredentials) < 0) __PYX_ERR(5, 399, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc_ALTSChannelCredentials) < 0) __PYX_ERR(5, 399, __pyx_L1_error)
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc__LatentEventArg = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc__LatentEventArg_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc__LatentEventArg)) __PYX_ERR(35, 22, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc__LatentEventArg_spec, __pyx_ptype_7_cython_6cygrpc__LatentEventArg) < 0) __PYX_ERR(35, 22, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc__LatentEventArg = &__pyx_type_7_cython_6cygrpc__LatentEventArg;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc__LatentEventArg) < 0) __PYX_ERR(35, 22, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc__LatentEventArg->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc__LatentEventArg->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc__LatentEventArg->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc__LatentEventArg->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_LatentEventArg, (PyObject *) __pyx_ptype_7_cython_6cygrpc__LatentEventArg) < 0) __PYX_ERR(35, 22, __pyx_L1_error)
+  __pyx_vtabptr_7_cython_6cygrpc_CompletionQueue = &__pyx_vtable_7_cython_6cygrpc_CompletionQueue;
+  __pyx_vtable_7_cython_6cygrpc_CompletionQueue._interpret_event = (PyObject *(*)(struct __pyx_obj_7_cython_6cygrpc_CompletionQueue *, grpc_event))__pyx_f_7_cython_6cygrpc_15CompletionQueue__interpret_event;
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc_CompletionQueue = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc_CompletionQueue_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc_CompletionQueue)) __PYX_ERR(15, 80, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc_CompletionQueue_spec, __pyx_ptype_7_cython_6cygrpc_CompletionQueue) < 0) __PYX_ERR(15, 80, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc_CompletionQueue = &__pyx_type_7_cython_6cygrpc_CompletionQueue;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc_CompletionQueue) < 0) __PYX_ERR(15, 80, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc_CompletionQueue->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc_CompletionQueue->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc_CompletionQueue->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc_CompletionQueue->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (__Pyx_SetVtable(__pyx_ptype_7_cython_6cygrpc_CompletionQueue, __pyx_vtabptr_7_cython_6cygrpc_CompletionQueue) < 0) __PYX_ERR(15, 80, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_MergeVtables(__pyx_ptype_7_cython_6cygrpc_CompletionQueue) < 0) __PYX_ERR(15, 80, __pyx_L1_error)
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_CompletionQueue, (PyObject *) __pyx_ptype_7_cython_6cygrpc_CompletionQueue) < 0) __PYX_ERR(15, 80, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc_CompletionQueue) < 0) __PYX_ERR(15, 80, __pyx_L1_error)
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc_BaseEvent = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc_BaseEvent_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc_BaseEvent)) __PYX_ERR(17, 15, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc_BaseEvent_spec, __pyx_ptype_7_cython_6cygrpc_BaseEvent) < 0) __PYX_ERR(17, 15, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc_BaseEvent = &__pyx_type_7_cython_6cygrpc_BaseEvent;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc_BaseEvent) < 0) __PYX_ERR(17, 15, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc_BaseEvent->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc_BaseEvent->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc_BaseEvent->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc_BaseEvent->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_BaseEvent, (PyObject *) __pyx_ptype_7_cython_6cygrpc_BaseEvent) < 0) __PYX_ERR(17, 15, __pyx_L1_error)
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_t_1 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_7_cython_6cygrpc_BaseEvent); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 15, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_ptype_7_cython_6cygrpc_ConnectivityEvent = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc_ConnectivityEvent_spec, __pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (unlikely(!__pyx_ptype_7_cython_6cygrpc_ConnectivityEvent)) __PYX_ERR(16, 15, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc_ConnectivityEvent_spec, __pyx_ptype_7_cython_6cygrpc_ConnectivityEvent) < 0) __PYX_ERR(16, 15, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc_ConnectivityEvent = &__pyx_type_7_cython_6cygrpc_ConnectivityEvent;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  __pyx_ptype_7_cython_6cygrpc_ConnectivityEvent->tp_base = __pyx_ptype_7_cython_6cygrpc_BaseEvent;
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc_ConnectivityEvent) < 0) __PYX_ERR(16, 15, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc_ConnectivityEvent->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc_ConnectivityEvent->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc_ConnectivityEvent->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc_ConnectivityEvent->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ConnectivityEvent, (PyObject *) __pyx_ptype_7_cython_6cygrpc_ConnectivityEvent) < 0) __PYX_ERR(16, 15, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc_ConnectivityEvent) < 0) __PYX_ERR(16, 15, __pyx_L1_error)
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_t_1 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_7_cython_6cygrpc_BaseEvent); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 24, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_ptype_7_cython_6cygrpc_RequestCallEvent = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc_RequestCallEvent_spec, __pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (unlikely(!__pyx_ptype_7_cython_6cygrpc_RequestCallEvent)) __PYX_ERR(16, 24, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc_RequestCallEvent_spec, __pyx_ptype_7_cython_6cygrpc_RequestCallEvent) < 0) __PYX_ERR(16, 24, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc_RequestCallEvent = &__pyx_type_7_cython_6cygrpc_RequestCallEvent;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  __pyx_ptype_7_cython_6cygrpc_RequestCallEvent->tp_base = __pyx_ptype_7_cython_6cygrpc_BaseEvent;
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc_RequestCallEvent) < 0) __PYX_ERR(16, 24, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc_RequestCallEvent->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc_RequestCallEvent->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc_RequestCallEvent->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc_RequestCallEvent->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_RequestCallEvent, (PyObject *) __pyx_ptype_7_cython_6cygrpc_RequestCallEvent) < 0) __PYX_ERR(16, 24, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc_RequestCallEvent) < 0) __PYX_ERR(16, 24, __pyx_L1_error)
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_t_1 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_7_cython_6cygrpc_BaseEvent); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 37, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_ptype_7_cython_6cygrpc_BatchOperationEvent = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc_BatchOperationEvent_spec, __pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (unlikely(!__pyx_ptype_7_cython_6cygrpc_BatchOperationEvent)) __PYX_ERR(16, 37, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc_BatchOperationEvent_spec, __pyx_ptype_7_cython_6cygrpc_BatchOperationEvent) < 0) __PYX_ERR(16, 37, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc_BatchOperationEvent = &__pyx_type_7_cython_6cygrpc_BatchOperationEvent;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  __pyx_ptype_7_cython_6cygrpc_BatchOperationEvent->tp_base = __pyx_ptype_7_cython_6cygrpc_BaseEvent;
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc_BatchOperationEvent) < 0) __PYX_ERR(16, 37, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc_BatchOperationEvent->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc_BatchOperationEvent->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc_BatchOperationEvent->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc_BatchOperationEvent->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_BatchOperationEvent, (PyObject *) __pyx_ptype_7_cython_6cygrpc_BatchOperationEvent) < 0) __PYX_ERR(16, 37, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc_BatchOperationEvent) < 0) __PYX_ERR(16, 37, __pyx_L1_error)
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_t_1 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_7_cython_6cygrpc_BaseEvent); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 48, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_ptype_7_cython_6cygrpc_ServerShutdownEvent = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc_ServerShutdownEvent_spec, __pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (unlikely(!__pyx_ptype_7_cython_6cygrpc_ServerShutdownEvent)) __PYX_ERR(16, 48, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc_ServerShutdownEvent_spec, __pyx_ptype_7_cython_6cygrpc_ServerShutdownEvent) < 0) __PYX_ERR(16, 48, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc_ServerShutdownEvent = &__pyx_type_7_cython_6cygrpc_ServerShutdownEvent;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  __pyx_ptype_7_cython_6cygrpc_ServerShutdownEvent->tp_base = __pyx_ptype_7_cython_6cygrpc_BaseEvent;
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc_ServerShutdownEvent) < 0) __PYX_ERR(16, 48, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc_ServerShutdownEvent->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc_ServerShutdownEvent->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc_ServerShutdownEvent->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc_ServerShutdownEvent->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ServerShutdownEvent, (PyObject *) __pyx_ptype_7_cython_6cygrpc_ServerShutdownEvent) < 0) __PYX_ERR(16, 48, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc_ServerShutdownEvent) < 0) __PYX_ERR(16, 48, __pyx_L1_error)
+  #endif
+  __pyx_vtabptr_7_cython_6cygrpc_Operation = &__pyx_vtable_7_cython_6cygrpc_Operation;
+  __pyx_vtable_7_cython_6cygrpc_Operation.c = (void (*)(struct __pyx_obj_7_cython_6cygrpc_Operation *))__pyx_f_7_cython_6cygrpc_9Operation_c;
+  __pyx_vtable_7_cython_6cygrpc_Operation.un_c = (void (*)(struct __pyx_obj_7_cython_6cygrpc_Operation *))__pyx_f_7_cython_6cygrpc_9Operation_un_c;
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc_Operation = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc_Operation_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc_Operation)) __PYX_ERR(19, 16, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc_Operation_spec, __pyx_ptype_7_cython_6cygrpc_Operation) < 0) __PYX_ERR(19, 16, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc_Operation = &__pyx_type_7_cython_6cygrpc_Operation;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc_Operation) < 0) __PYX_ERR(19, 16, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc_Operation->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc_Operation->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc_Operation->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc_Operation->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (__Pyx_SetVtable(__pyx_ptype_7_cython_6cygrpc_Operation, __pyx_vtabptr_7_cython_6cygrpc_Operation) < 0) __PYX_ERR(19, 16, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_MergeVtables(__pyx_ptype_7_cython_6cygrpc_Operation) < 0) __PYX_ERR(19, 16, __pyx_L1_error)
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Operation, (PyObject *) __pyx_ptype_7_cython_6cygrpc_Operation) < 0) __PYX_ERR(19, 16, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc_Operation) < 0) __PYX_ERR(19, 16, __pyx_L1_error)
+  #endif
+  __pyx_vtabptr_7_cython_6cygrpc_SendInitialMetadataOperation = &__pyx_vtable_7_cython_6cygrpc_SendInitialMetadataOperation;
+  __pyx_vtable_7_cython_6cygrpc_SendInitialMetadataOperation.__pyx_base = *__pyx_vtabptr_7_cython_6cygrpc_Operation;
+  __pyx_vtable_7_cython_6cygrpc_SendInitialMetadataOperation.__pyx_base.c = (void (*)(struct __pyx_obj_7_cython_6cygrpc_Operation *))__pyx_f_7_cython_6cygrpc_28SendInitialMetadataOperation_c;
+  __pyx_vtable_7_cython_6cygrpc_SendInitialMetadataOperation.__pyx_base.un_c = (void (*)(struct __pyx_obj_7_cython_6cygrpc_Operation *))__pyx_f_7_cython_6cygrpc_28SendInitialMetadataOperation_un_c;
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_t_1 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_7_cython_6cygrpc_Operation); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 25, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_ptype_7_cython_6cygrpc_SendInitialMetadataOperation = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc_SendInitialMetadataOperation_spec, __pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (unlikely(!__pyx_ptype_7_cython_6cygrpc_SendInitialMetadataOperation)) __PYX_ERR(19, 25, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc_SendInitialMetadataOperation_spec, __pyx_ptype_7_cython_6cygrpc_SendInitialMetadataOperation) < 0) __PYX_ERR(19, 25, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc_SendInitialMetadataOperation = &__pyx_type_7_cython_6cygrpc_SendInitialMetadataOperation;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  __pyx_ptype_7_cython_6cygrpc_SendInitialMetadataOperation->tp_base = __pyx_ptype_7_cython_6cygrpc_Operation;
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc_SendInitialMetadataOperation) < 0) __PYX_ERR(19, 25, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc_SendInitialMetadataOperation->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc_SendInitialMetadataOperation->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc_SendInitialMetadataOperation->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc_SendInitialMetadataOperation->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (__Pyx_SetVtable(__pyx_ptype_7_cython_6cygrpc_SendInitialMetadataOperation, __pyx_vtabptr_7_cython_6cygrpc_SendInitialMetadataOperation) < 0) __PYX_ERR(19, 25, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_MergeVtables(__pyx_ptype_7_cython_6cygrpc_SendInitialMetadataOperation) < 0) __PYX_ERR(19, 25, __pyx_L1_error)
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_SendInitialMetadataOperation, (PyObject *) __pyx_ptype_7_cython_6cygrpc_SendInitialMetadataOperation) < 0) __PYX_ERR(19, 25, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc_SendInitialMetadataOperation) < 0) __PYX_ERR(19, 25, __pyx_L1_error)
+  #endif
+  __pyx_vtabptr_7_cython_6cygrpc_SendMessageOperation = &__pyx_vtable_7_cython_6cygrpc_SendMessageOperation;
+  __pyx_vtable_7_cython_6cygrpc_SendMessageOperation.__pyx_base = *__pyx_vtabptr_7_cython_6cygrpc_Operation;
+  __pyx_vtable_7_cython_6cygrpc_SendMessageOperation.__pyx_base.c = (void (*)(struct __pyx_obj_7_cython_6cygrpc_Operation *))__pyx_f_7_cython_6cygrpc_20SendMessageOperation_c;
+  __pyx_vtable_7_cython_6cygrpc_SendMessageOperation.__pyx_base.un_c = (void (*)(struct __pyx_obj_7_cython_6cygrpc_Operation *))__pyx_f_7_cython_6cygrpc_20SendMessageOperation_un_c;
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_t_1 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_7_cython_6cygrpc_Operation); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 49, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_ptype_7_cython_6cygrpc_SendMessageOperation = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc_SendMessageOperation_spec, __pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (unlikely(!__pyx_ptype_7_cython_6cygrpc_SendMessageOperation)) __PYX_ERR(19, 49, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc_SendMessageOperation_spec, __pyx_ptype_7_cython_6cygrpc_SendMessageOperation) < 0) __PYX_ERR(19, 49, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc_SendMessageOperation = &__pyx_type_7_cython_6cygrpc_SendMessageOperation;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  __pyx_ptype_7_cython_6cygrpc_SendMessageOperation->tp_base = __pyx_ptype_7_cython_6cygrpc_Operation;
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc_SendMessageOperation) < 0) __PYX_ERR(19, 49, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc_SendMessageOperation->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc_SendMessageOperation->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc_SendMessageOperation->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc_SendMessageOperation->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (__Pyx_SetVtable(__pyx_ptype_7_cython_6cygrpc_SendMessageOperation, __pyx_vtabptr_7_cython_6cygrpc_SendMessageOperation) < 0) __PYX_ERR(19, 49, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_MergeVtables(__pyx_ptype_7_cython_6cygrpc_SendMessageOperation) < 0) __PYX_ERR(19, 49, __pyx_L1_error)
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_SendMessageOperation, (PyObject *) __pyx_ptype_7_cython_6cygrpc_SendMessageOperation) < 0) __PYX_ERR(19, 49, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc_SendMessageOperation) < 0) __PYX_ERR(19, 49, __pyx_L1_error)
+  #endif
+  __pyx_vtabptr_7_cython_6cygrpc_SendCloseFromClientOperation = &__pyx_vtable_7_cython_6cygrpc_SendCloseFromClientOperation;
+  __pyx_vtable_7_cython_6cygrpc_SendCloseFromClientOperation.__pyx_base = *__pyx_vtabptr_7_cython_6cygrpc_Operation;
+  __pyx_vtable_7_cython_6cygrpc_SendCloseFromClientOperation.__pyx_base.c = (void (*)(struct __pyx_obj_7_cython_6cygrpc_Operation *))__pyx_f_7_cython_6cygrpc_28SendCloseFromClientOperation_c;
+  __pyx_vtable_7_cython_6cygrpc_SendCloseFromClientOperation.__pyx_base.un_c = (void (*)(struct __pyx_obj_7_cython_6cygrpc_Operation *))__pyx_f_7_cython_6cygrpc_28SendCloseFromClientOperation_un_c;
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_t_1 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_7_cython_6cygrpc_Operation); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 75, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_ptype_7_cython_6cygrpc_SendCloseFromClientOperation = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc_SendCloseFromClientOperation_spec, __pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (unlikely(!__pyx_ptype_7_cython_6cygrpc_SendCloseFromClientOperation)) __PYX_ERR(19, 75, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc_SendCloseFromClientOperation_spec, __pyx_ptype_7_cython_6cygrpc_SendCloseFromClientOperation) < 0) __PYX_ERR(19, 75, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc_SendCloseFromClientOperation = &__pyx_type_7_cython_6cygrpc_SendCloseFromClientOperation;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  __pyx_ptype_7_cython_6cygrpc_SendCloseFromClientOperation->tp_base = __pyx_ptype_7_cython_6cygrpc_Operation;
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc_SendCloseFromClientOperation) < 0) __PYX_ERR(19, 75, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc_SendCloseFromClientOperation->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc_SendCloseFromClientOperation->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc_SendCloseFromClientOperation->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc_SendCloseFromClientOperation->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (__Pyx_SetVtable(__pyx_ptype_7_cython_6cygrpc_SendCloseFromClientOperation, __pyx_vtabptr_7_cython_6cygrpc_SendCloseFromClientOperation) < 0) __PYX_ERR(19, 75, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_MergeVtables(__pyx_ptype_7_cython_6cygrpc_SendCloseFromClientOperation) < 0) __PYX_ERR(19, 75, __pyx_L1_error)
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_SendCloseFromClientOperation, (PyObject *) __pyx_ptype_7_cython_6cygrpc_SendCloseFromClientOperation) < 0) __PYX_ERR(19, 75, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc_SendCloseFromClientOperation) < 0) __PYX_ERR(19, 75, __pyx_L1_error)
+  #endif
+  __pyx_vtabptr_7_cython_6cygrpc_SendStatusFromServerOperation = &__pyx_vtable_7_cython_6cygrpc_SendStatusFromServerOperation;
+  __pyx_vtable_7_cython_6cygrpc_SendStatusFromServerOperation.__pyx_base = *__pyx_vtabptr_7_cython_6cygrpc_Operation;
+  __pyx_vtable_7_cython_6cygrpc_SendStatusFromServerOperation.__pyx_base.c = (void (*)(struct __pyx_obj_7_cython_6cygrpc_Operation *))__pyx_f_7_cython_6cygrpc_29SendStatusFromServerOperation_c;
+  __pyx_vtable_7_cython_6cygrpc_SendStatusFromServerOperation.__pyx_base.un_c = (void (*)(struct __pyx_obj_7_cython_6cygrpc_Operation *))__pyx_f_7_cython_6cygrpc_29SendStatusFromServerOperation_un_c;
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_t_1 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_7_cython_6cygrpc_Operation); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 91, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_ptype_7_cython_6cygrpc_SendStatusFromServerOperation = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc_SendStatusFromServerOperation_spec, __pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (unlikely(!__pyx_ptype_7_cython_6cygrpc_SendStatusFromServerOperation)) __PYX_ERR(19, 91, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc_SendStatusFromServerOperation_spec, __pyx_ptype_7_cython_6cygrpc_SendStatusFromServerOperation) < 0) __PYX_ERR(19, 91, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc_SendStatusFromServerOperation = &__pyx_type_7_cython_6cygrpc_SendStatusFromServerOperation;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  __pyx_ptype_7_cython_6cygrpc_SendStatusFromServerOperation->tp_base = __pyx_ptype_7_cython_6cygrpc_Operation;
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc_SendStatusFromServerOperation) < 0) __PYX_ERR(19, 91, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc_SendStatusFromServerOperation->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc_SendStatusFromServerOperation->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc_SendStatusFromServerOperation->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc_SendStatusFromServerOperation->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (__Pyx_SetVtable(__pyx_ptype_7_cython_6cygrpc_SendStatusFromServerOperation, __pyx_vtabptr_7_cython_6cygrpc_SendStatusFromServerOperation) < 0) __PYX_ERR(19, 91, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_MergeVtables(__pyx_ptype_7_cython_6cygrpc_SendStatusFromServerOperation) < 0) __PYX_ERR(19, 91, __pyx_L1_error)
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_SendStatusFromServerOperation, (PyObject *) __pyx_ptype_7_cython_6cygrpc_SendStatusFromServerOperation) < 0) __PYX_ERR(19, 91, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc_SendStatusFromServerOperation) < 0) __PYX_ERR(19, 91, __pyx_L1_error)
+  #endif
+  __pyx_vtabptr_7_cython_6cygrpc_ReceiveInitialMetadataOperation = &__pyx_vtable_7_cython_6cygrpc_ReceiveInitialMetadataOperation;
+  __pyx_vtable_7_cython_6cygrpc_ReceiveInitialMetadataOperation.__pyx_base = *__pyx_vtabptr_7_cython_6cygrpc_Operation;
+  __pyx_vtable_7_cython_6cygrpc_ReceiveInitialMetadataOperation.__pyx_base.c = (void (*)(struct __pyx_obj_7_cython_6cygrpc_Operation *))__pyx_f_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_c;
+  __pyx_vtable_7_cython_6cygrpc_ReceiveInitialMetadataOperation.__pyx_base.un_c = (void (*)(struct __pyx_obj_7_cython_6cygrpc_Operation *))__pyx_f_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_un_c;
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_t_1 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_7_cython_6cygrpc_Operation); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 122, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_ptype_7_cython_6cygrpc_ReceiveInitialMetadataOperation = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc_ReceiveInitialMetadataOperation_spec, __pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (unlikely(!__pyx_ptype_7_cython_6cygrpc_ReceiveInitialMetadataOperation)) __PYX_ERR(19, 122, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc_ReceiveInitialMetadataOperation_spec, __pyx_ptype_7_cython_6cygrpc_ReceiveInitialMetadataOperation) < 0) __PYX_ERR(19, 122, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc_ReceiveInitialMetadataOperation = &__pyx_type_7_cython_6cygrpc_ReceiveInitialMetadataOperation;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  __pyx_ptype_7_cython_6cygrpc_ReceiveInitialMetadataOperation->tp_base = __pyx_ptype_7_cython_6cygrpc_Operation;
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc_ReceiveInitialMetadataOperation) < 0) __PYX_ERR(19, 122, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc_ReceiveInitialMetadataOperation->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc_ReceiveInitialMetadataOperation->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc_ReceiveInitialMetadataOperation->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc_ReceiveInitialMetadataOperation->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (__Pyx_SetVtable(__pyx_ptype_7_cython_6cygrpc_ReceiveInitialMetadataOperation, __pyx_vtabptr_7_cython_6cygrpc_ReceiveInitialMetadataOperation) < 0) __PYX_ERR(19, 122, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_MergeVtables(__pyx_ptype_7_cython_6cygrpc_ReceiveInitialMetadataOperation) < 0) __PYX_ERR(19, 122, __pyx_L1_error)
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ReceiveInitialMetadataOperation, (PyObject *) __pyx_ptype_7_cython_6cygrpc_ReceiveInitialMetadataOperation) < 0) __PYX_ERR(19, 122, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc_ReceiveInitialMetadataOperation) < 0) __PYX_ERR(19, 122, __pyx_L1_error)
+  #endif
+  __pyx_vtabptr_7_cython_6cygrpc_ReceiveMessageOperation = &__pyx_vtable_7_cython_6cygrpc_ReceiveMessageOperation;
+  __pyx_vtable_7_cython_6cygrpc_ReceiveMessageOperation.__pyx_base = *__pyx_vtabptr_7_cython_6cygrpc_Operation;
+  __pyx_vtable_7_cython_6cygrpc_ReceiveMessageOperation.__pyx_base.c = (void (*)(struct __pyx_obj_7_cython_6cygrpc_Operation *))__pyx_f_7_cython_6cygrpc_23ReceiveMessageOperation_c;
+  __pyx_vtable_7_cython_6cygrpc_ReceiveMessageOperation.__pyx_base.un_c = (void (*)(struct __pyx_obj_7_cython_6cygrpc_Operation *))__pyx_f_7_cython_6cygrpc_23ReceiveMessageOperation_un_c;
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_t_1 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_7_cython_6cygrpc_Operation); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 145, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_ptype_7_cython_6cygrpc_ReceiveMessageOperation = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc_ReceiveMessageOperation_spec, __pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (unlikely(!__pyx_ptype_7_cython_6cygrpc_ReceiveMessageOperation)) __PYX_ERR(19, 145, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc_ReceiveMessageOperation_spec, __pyx_ptype_7_cython_6cygrpc_ReceiveMessageOperation) < 0) __PYX_ERR(19, 145, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc_ReceiveMessageOperation = &__pyx_type_7_cython_6cygrpc_ReceiveMessageOperation;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  __pyx_ptype_7_cython_6cygrpc_ReceiveMessageOperation->tp_base = __pyx_ptype_7_cython_6cygrpc_Operation;
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc_ReceiveMessageOperation) < 0) __PYX_ERR(19, 145, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc_ReceiveMessageOperation->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc_ReceiveMessageOperation->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc_ReceiveMessageOperation->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc_ReceiveMessageOperation->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (__Pyx_SetVtable(__pyx_ptype_7_cython_6cygrpc_ReceiveMessageOperation, __pyx_vtabptr_7_cython_6cygrpc_ReceiveMessageOperation) < 0) __PYX_ERR(19, 145, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_MergeVtables(__pyx_ptype_7_cython_6cygrpc_ReceiveMessageOperation) < 0) __PYX_ERR(19, 145, __pyx_L1_error)
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ReceiveMessageOperation, (PyObject *) __pyx_ptype_7_cython_6cygrpc_ReceiveMessageOperation) < 0) __PYX_ERR(19, 145, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc_ReceiveMessageOperation) < 0) __PYX_ERR(19, 145, __pyx_L1_error)
+  #endif
+  __pyx_vtabptr_7_cython_6cygrpc_ReceiveStatusOnClientOperation = &__pyx_vtable_7_cython_6cygrpc_ReceiveStatusOnClientOperation;
+  __pyx_vtable_7_cython_6cygrpc_ReceiveStatusOnClientOperation.__pyx_base = *__pyx_vtabptr_7_cython_6cygrpc_Operation;
+  __pyx_vtable_7_cython_6cygrpc_ReceiveStatusOnClientOperation.__pyx_base.c = (void (*)(struct __pyx_obj_7_cython_6cygrpc_Operation *))__pyx_f_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_c;
+  __pyx_vtable_7_cython_6cygrpc_ReceiveStatusOnClientOperation.__pyx_base.un_c = (void (*)(struct __pyx_obj_7_cython_6cygrpc_Operation *))__pyx_f_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_un_c;
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_t_1 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_7_cython_6cygrpc_Operation); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 187, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_ptype_7_cython_6cygrpc_ReceiveStatusOnClientOperation = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc_ReceiveStatusOnClientOperation_spec, __pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (unlikely(!__pyx_ptype_7_cython_6cygrpc_ReceiveStatusOnClientOperation)) __PYX_ERR(19, 187, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc_ReceiveStatusOnClientOperation_spec, __pyx_ptype_7_cython_6cygrpc_ReceiveStatusOnClientOperation) < 0) __PYX_ERR(19, 187, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc_ReceiveStatusOnClientOperation = &__pyx_type_7_cython_6cygrpc_ReceiveStatusOnClientOperation;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  __pyx_ptype_7_cython_6cygrpc_ReceiveStatusOnClientOperation->tp_base = __pyx_ptype_7_cython_6cygrpc_Operation;
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc_ReceiveStatusOnClientOperation) < 0) __PYX_ERR(19, 187, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc_ReceiveStatusOnClientOperation->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc_ReceiveStatusOnClientOperation->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc_ReceiveStatusOnClientOperation->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc_ReceiveStatusOnClientOperation->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (__Pyx_SetVtable(__pyx_ptype_7_cython_6cygrpc_ReceiveStatusOnClientOperation, __pyx_vtabptr_7_cython_6cygrpc_ReceiveStatusOnClientOperation) < 0) __PYX_ERR(19, 187, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_MergeVtables(__pyx_ptype_7_cython_6cygrpc_ReceiveStatusOnClientOperation) < 0) __PYX_ERR(19, 187, __pyx_L1_error)
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ReceiveStatusOnClientOperation, (PyObject *) __pyx_ptype_7_cython_6cygrpc_ReceiveStatusOnClientOperation) < 0) __PYX_ERR(19, 187, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc_ReceiveStatusOnClientOperation) < 0) __PYX_ERR(19, 187, __pyx_L1_error)
+  #endif
+  __pyx_vtabptr_7_cython_6cygrpc_ReceiveCloseOnServerOperation = &__pyx_vtable_7_cython_6cygrpc_ReceiveCloseOnServerOperation;
+  __pyx_vtable_7_cython_6cygrpc_ReceiveCloseOnServerOperation.__pyx_base = *__pyx_vtabptr_7_cython_6cygrpc_Operation;
+  __pyx_vtable_7_cython_6cygrpc_ReceiveCloseOnServerOperation.__pyx_base.c = (void (*)(struct __pyx_obj_7_cython_6cygrpc_Operation *))__pyx_f_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_c;
+  __pyx_vtable_7_cython_6cygrpc_ReceiveCloseOnServerOperation.__pyx_base.un_c = (void (*)(struct __pyx_obj_7_cython_6cygrpc_Operation *))__pyx_f_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_un_c;
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_t_1 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_7_cython_6cygrpc_Operation); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 233, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_ptype_7_cython_6cygrpc_ReceiveCloseOnServerOperation = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc_ReceiveCloseOnServerOperation_spec, __pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (unlikely(!__pyx_ptype_7_cython_6cygrpc_ReceiveCloseOnServerOperation)) __PYX_ERR(19, 233, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc_ReceiveCloseOnServerOperation_spec, __pyx_ptype_7_cython_6cygrpc_ReceiveCloseOnServerOperation) < 0) __PYX_ERR(19, 233, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc_ReceiveCloseOnServerOperation = &__pyx_type_7_cython_6cygrpc_ReceiveCloseOnServerOperation;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  __pyx_ptype_7_cython_6cygrpc_ReceiveCloseOnServerOperation->tp_base = __pyx_ptype_7_cython_6cygrpc_Operation;
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc_ReceiveCloseOnServerOperation) < 0) __PYX_ERR(19, 233, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc_ReceiveCloseOnServerOperation->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc_ReceiveCloseOnServerOperation->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc_ReceiveCloseOnServerOperation->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc_ReceiveCloseOnServerOperation->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (__Pyx_SetVtable(__pyx_ptype_7_cython_6cygrpc_ReceiveCloseOnServerOperation, __pyx_vtabptr_7_cython_6cygrpc_ReceiveCloseOnServerOperation) < 0) __PYX_ERR(19, 233, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_MergeVtables(__pyx_ptype_7_cython_6cygrpc_ReceiveCloseOnServerOperation) < 0) __PYX_ERR(19, 233, __pyx_L1_error)
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ReceiveCloseOnServerOperation, (PyObject *) __pyx_ptype_7_cython_6cygrpc_ReceiveCloseOnServerOperation) < 0) __PYX_ERR(19, 233, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc_ReceiveCloseOnServerOperation) < 0) __PYX_ERR(19, 233, __pyx_L1_error)
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc_CallDetails = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc_CallDetails_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc_CallDetails)) __PYX_ERR(21, 130, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc_CallDetails_spec, __pyx_ptype_7_cython_6cygrpc_CallDetails) < 0) __PYX_ERR(21, 130, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc_CallDetails = &__pyx_type_7_cython_6cygrpc_CallDetails;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc_CallDetails) < 0) __PYX_ERR(21, 130, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc_CallDetails->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc_CallDetails->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc_CallDetails->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc_CallDetails->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_CallDetails, (PyObject *) __pyx_ptype_7_cython_6cygrpc_CallDetails) < 0) __PYX_ERR(21, 130, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc_CallDetails) < 0) __PYX_ERR(21, 130, __pyx_L1_error)
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc_SslPemKeyCertPair = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc_SslPemKeyCertPair_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc_SslPemKeyCertPair)) __PYX_ERR(21, 155, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc_SslPemKeyCertPair_spec, __pyx_ptype_7_cython_6cygrpc_SslPemKeyCertPair) < 0) __PYX_ERR(21, 155, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc_SslPemKeyCertPair = &__pyx_type_7_cython_6cygrpc_SslPemKeyCertPair;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc_SslPemKeyCertPair) < 0) __PYX_ERR(21, 155, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc_SslPemKeyCertPair->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc_SslPemKeyCertPair->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc_SslPemKeyCertPair->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc_SslPemKeyCertPair->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_SslPemKeyCertPair, (PyObject *) __pyx_ptype_7_cython_6cygrpc_SslPemKeyCertPair) < 0) __PYX_ERR(21, 155, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc_SslPemKeyCertPair) < 0) __PYX_ERR(21, 155, __pyx_L1_error)
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc_CompressionOptions = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc_CompressionOptions_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc_CompressionOptions)) __PYX_ERR(21, 164, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc_CompressionOptions_spec, __pyx_ptype_7_cython_6cygrpc_CompressionOptions) < 0) __PYX_ERR(21, 164, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc_CompressionOptions = &__pyx_type_7_cython_6cygrpc_CompressionOptions;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc_CompressionOptions) < 0) __PYX_ERR(21, 164, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc_CompressionOptions->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc_CompressionOptions->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc_CompressionOptions->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc_CompressionOptions->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_CompressionOptions, (PyObject *) __pyx_ptype_7_cython_6cygrpc_CompressionOptions) < 0) __PYX_ERR(21, 164, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc_CompressionOptions) < 0) __PYX_ERR(21, 164, __pyx_L1_error)
+  #endif
+  __pyx_vtabptr_7_cython_6cygrpc_Server = &__pyx_vtable_7_cython_6cygrpc_Server;
+  __pyx_vtable_7_cython_6cygrpc_Server._c_shutdown = (PyObject *(*)(struct __pyx_obj_7_cython_6cygrpc_Server *, struct __pyx_obj_7_cython_6cygrpc_CompletionQueue *, PyObject *))__pyx_f_7_cython_6cygrpc_6Server__c_shutdown;
+  __pyx_vtable_7_cython_6cygrpc_Server.notify_shutdown_complete = (PyObject *(*)(struct __pyx_obj_7_cython_6cygrpc_Server *))__pyx_f_7_cython_6cygrpc_6Server_notify_shutdown_complete;
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc_Server = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc_Server_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc_Server)) __PYX_ERR(23, 16, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc_Server_spec, __pyx_ptype_7_cython_6cygrpc_Server) < 0) __PYX_ERR(23, 16, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc_Server = &__pyx_type_7_cython_6cygrpc_Server;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc_Server) < 0) __PYX_ERR(23, 16, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc_Server->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc_Server->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc_Server->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc_Server->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (__Pyx_SetVtable(__pyx_ptype_7_cython_6cygrpc_Server, __pyx_vtabptr_7_cython_6cygrpc_Server) < 0) __PYX_ERR(23, 16, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_MergeVtables(__pyx_ptype_7_cython_6cygrpc_Server) < 0) __PYX_ERR(23, 16, __pyx_L1_error)
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Server, (PyObject *) __pyx_ptype_7_cython_6cygrpc_Server) < 0) __PYX_ERR(23, 16, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc_Server) < 0) __PYX_ERR(23, 16, __pyx_L1_error)
+  #endif
+  __pyx_vtabptr_7_cython_6cygrpc__Tag = &__pyx_vtable_7_cython_6cygrpc__Tag;
+  __pyx_vtable_7_cython_6cygrpc__Tag.event = (struct __pyx_obj_7_cython_6cygrpc_BaseEvent *(*)(struct __pyx_obj_7_cython_6cygrpc__Tag *, grpc_event))__pyx_f_7_cython_6cygrpc_4_Tag_event;
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc__Tag = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc__Tag_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc__Tag)) __PYX_ERR(24, 16, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc__Tag_spec, __pyx_ptype_7_cython_6cygrpc__Tag) < 0) __PYX_ERR(24, 16, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc__Tag = &__pyx_type_7_cython_6cygrpc__Tag;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc__Tag) < 0) __PYX_ERR(24, 16, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc__Tag->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc__Tag->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc__Tag->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc__Tag->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (__Pyx_SetVtable(__pyx_ptype_7_cython_6cygrpc__Tag, __pyx_vtabptr_7_cython_6cygrpc__Tag) < 0) __PYX_ERR(24, 16, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_MergeVtables(__pyx_ptype_7_cython_6cygrpc__Tag) < 0) __PYX_ERR(24, 16, __pyx_L1_error)
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Tag, (PyObject *) __pyx_ptype_7_cython_6cygrpc__Tag) < 0) __PYX_ERR(24, 16, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc__Tag) < 0) __PYX_ERR(24, 16, __pyx_L1_error)
+  #endif
+  __pyx_vtabptr_7_cython_6cygrpc__ConnectivityTag = &__pyx_vtable_7_cython_6cygrpc__ConnectivityTag;
+  __pyx_vtable_7_cython_6cygrpc__ConnectivityTag.__pyx_base = *__pyx_vtabptr_7_cython_6cygrpc__Tag;
+  __pyx_vtable_7_cython_6cygrpc__ConnectivityTag.__pyx_base.event = (struct __pyx_obj_7_cython_6cygrpc_BaseEvent *(*)(struct __pyx_obj_7_cython_6cygrpc__Tag *, grpc_event))__pyx_f_7_cython_6cygrpc_16_ConnectivityTag_event__pyx_wrap_1;
+  __pyx_vtable_7_cython_6cygrpc__ConnectivityTag.event = (struct __pyx_obj_7_cython_6cygrpc_ConnectivityEvent *(*)(struct __pyx_obj_7_cython_6cygrpc__ConnectivityTag *, grpc_event))__pyx_f_7_cython_6cygrpc_16_ConnectivityTag_event;
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_t_1 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_7_cython_6cygrpc__Tag); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 22, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_ptype_7_cython_6cygrpc__ConnectivityTag = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc__ConnectivityTag_spec, __pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (unlikely(!__pyx_ptype_7_cython_6cygrpc__ConnectivityTag)) __PYX_ERR(24, 22, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc__ConnectivityTag_spec, __pyx_ptype_7_cython_6cygrpc__ConnectivityTag) < 0) __PYX_ERR(24, 22, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc__ConnectivityTag = &__pyx_type_7_cython_6cygrpc__ConnectivityTag;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  __pyx_ptype_7_cython_6cygrpc__ConnectivityTag->tp_base = __pyx_ptype_7_cython_6cygrpc__Tag;
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc__ConnectivityTag) < 0) __PYX_ERR(24, 22, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc__ConnectivityTag->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc__ConnectivityTag->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc__ConnectivityTag->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc__ConnectivityTag->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (__Pyx_SetVtable(__pyx_ptype_7_cython_6cygrpc__ConnectivityTag, __pyx_vtabptr_7_cython_6cygrpc__ConnectivityTag) < 0) __PYX_ERR(24, 22, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_MergeVtables(__pyx_ptype_7_cython_6cygrpc__ConnectivityTag) < 0) __PYX_ERR(24, 22, __pyx_L1_error)
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ConnectivityTag, (PyObject *) __pyx_ptype_7_cython_6cygrpc__ConnectivityTag) < 0) __PYX_ERR(24, 22, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc__ConnectivityTag) < 0) __PYX_ERR(24, 22, __pyx_L1_error)
+  #endif
+  __pyx_vtabptr_7_cython_6cygrpc__RequestCallTag = &__pyx_vtable_7_cython_6cygrpc__RequestCallTag;
+  __pyx_vtable_7_cython_6cygrpc__RequestCallTag.__pyx_base = *__pyx_vtabptr_7_cython_6cygrpc__Tag;
+  __pyx_vtable_7_cython_6cygrpc__RequestCallTag.__pyx_base.event = (struct __pyx_obj_7_cython_6cygrpc_BaseEvent *(*)(struct __pyx_obj_7_cython_6cygrpc__Tag *, grpc_event))__pyx_f_7_cython_6cygrpc_15_RequestCallTag_event__pyx_wrap_1;
+  __pyx_vtable_7_cython_6cygrpc__RequestCallTag.prepare = (void (*)(struct __pyx_obj_7_cython_6cygrpc__RequestCallTag *))__pyx_f_7_cython_6cygrpc_15_RequestCallTag_prepare;
+  __pyx_vtable_7_cython_6cygrpc__RequestCallTag.event = (struct __pyx_obj_7_cython_6cygrpc_RequestCallEvent *(*)(struct __pyx_obj_7_cython_6cygrpc__RequestCallTag *, grpc_event))__pyx_f_7_cython_6cygrpc_15_RequestCallTag_event;
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_t_1 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_7_cython_6cygrpc__Tag); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 31, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_ptype_7_cython_6cygrpc__RequestCallTag = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc__RequestCallTag_spec, __pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (unlikely(!__pyx_ptype_7_cython_6cygrpc__RequestCallTag)) __PYX_ERR(24, 31, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc__RequestCallTag_spec, __pyx_ptype_7_cython_6cygrpc__RequestCallTag) < 0) __PYX_ERR(24, 31, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc__RequestCallTag = &__pyx_type_7_cython_6cygrpc__RequestCallTag;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  __pyx_ptype_7_cython_6cygrpc__RequestCallTag->tp_base = __pyx_ptype_7_cython_6cygrpc__Tag;
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc__RequestCallTag) < 0) __PYX_ERR(24, 31, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc__RequestCallTag->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc__RequestCallTag->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc__RequestCallTag->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc__RequestCallTag->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (__Pyx_SetVtable(__pyx_ptype_7_cython_6cygrpc__RequestCallTag, __pyx_vtabptr_7_cython_6cygrpc__RequestCallTag) < 0) __PYX_ERR(24, 31, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_MergeVtables(__pyx_ptype_7_cython_6cygrpc__RequestCallTag) < 0) __PYX_ERR(24, 31, __pyx_L1_error)
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_RequestCallTag, (PyObject *) __pyx_ptype_7_cython_6cygrpc__RequestCallTag) < 0) __PYX_ERR(24, 31, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc__RequestCallTag) < 0) __PYX_ERR(24, 31, __pyx_L1_error)
+  #endif
+  __pyx_vtabptr_7_cython_6cygrpc__BatchOperationTag = &__pyx_vtable_7_cython_6cygrpc__BatchOperationTag;
+  __pyx_vtable_7_cython_6cygrpc__BatchOperationTag.__pyx_base = *__pyx_vtabptr_7_cython_6cygrpc__Tag;
+  __pyx_vtable_7_cython_6cygrpc__BatchOperationTag.__pyx_base.event = (struct __pyx_obj_7_cython_6cygrpc_BaseEvent *(*)(struct __pyx_obj_7_cython_6cygrpc__Tag *, grpc_event))__pyx_f_7_cython_6cygrpc_18_BatchOperationTag_event__pyx_wrap_1;
+  __pyx_vtable_7_cython_6cygrpc__BatchOperationTag.prepare = (void (*)(struct __pyx_obj_7_cython_6cygrpc__BatchOperationTag *))__pyx_f_7_cython_6cygrpc_18_BatchOperationTag_prepare;
+  __pyx_vtable_7_cython_6cygrpc__BatchOperationTag.event = (struct __pyx_obj_7_cython_6cygrpc_BatchOperationEvent *(*)(struct __pyx_obj_7_cython_6cygrpc__BatchOperationTag *, grpc_event))__pyx_f_7_cython_6cygrpc_18_BatchOperationTag_event;
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_t_1 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_7_cython_6cygrpc__Tag); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 51, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_ptype_7_cython_6cygrpc__BatchOperationTag = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc__BatchOperationTag_spec, __pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (unlikely(!__pyx_ptype_7_cython_6cygrpc__BatchOperationTag)) __PYX_ERR(24, 51, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc__BatchOperationTag_spec, __pyx_ptype_7_cython_6cygrpc__BatchOperationTag) < 0) __PYX_ERR(24, 51, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc__BatchOperationTag = &__pyx_type_7_cython_6cygrpc__BatchOperationTag;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  __pyx_ptype_7_cython_6cygrpc__BatchOperationTag->tp_base = __pyx_ptype_7_cython_6cygrpc__Tag;
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc__BatchOperationTag) < 0) __PYX_ERR(24, 51, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc__BatchOperationTag->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc__BatchOperationTag->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc__BatchOperationTag->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc__BatchOperationTag->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (__Pyx_SetVtable(__pyx_ptype_7_cython_6cygrpc__BatchOperationTag, __pyx_vtabptr_7_cython_6cygrpc__BatchOperationTag) < 0) __PYX_ERR(24, 51, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_MergeVtables(__pyx_ptype_7_cython_6cygrpc__BatchOperationTag) < 0) __PYX_ERR(24, 51, __pyx_L1_error)
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_BatchOperationTag, (PyObject *) __pyx_ptype_7_cython_6cygrpc__BatchOperationTag) < 0) __PYX_ERR(24, 51, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc__BatchOperationTag) < 0) __PYX_ERR(24, 51, __pyx_L1_error)
+  #endif
+  __pyx_vtabptr_7_cython_6cygrpc__ServerShutdownTag = &__pyx_vtable_7_cython_6cygrpc__ServerShutdownTag;
+  __pyx_vtable_7_cython_6cygrpc__ServerShutdownTag.__pyx_base = *__pyx_vtabptr_7_cython_6cygrpc__Tag;
+  __pyx_vtable_7_cython_6cygrpc__ServerShutdownTag.__pyx_base.event = (struct __pyx_obj_7_cython_6cygrpc_BaseEvent *(*)(struct __pyx_obj_7_cython_6cygrpc__Tag *, grpc_event))__pyx_f_7_cython_6cygrpc_18_ServerShutdownTag_event__pyx_wrap_1;
+  __pyx_vtable_7_cython_6cygrpc__ServerShutdownTag.event = (struct __pyx_obj_7_cython_6cygrpc_ServerShutdownEvent *(*)(struct __pyx_obj_7_cython_6cygrpc__ServerShutdownTag *, grpc_event))__pyx_f_7_cython_6cygrpc_18_ServerShutdownTag_event;
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_t_1 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_7_cython_6cygrpc__Tag); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 80, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_ptype_7_cython_6cygrpc__ServerShutdownTag = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc__ServerShutdownTag_spec, __pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (unlikely(!__pyx_ptype_7_cython_6cygrpc__ServerShutdownTag)) __PYX_ERR(24, 80, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc__ServerShutdownTag_spec, __pyx_ptype_7_cython_6cygrpc__ServerShutdownTag) < 0) __PYX_ERR(24, 80, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc__ServerShutdownTag = &__pyx_type_7_cython_6cygrpc__ServerShutdownTag;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  __pyx_ptype_7_cython_6cygrpc__ServerShutdownTag->tp_base = __pyx_ptype_7_cython_6cygrpc__Tag;
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc__ServerShutdownTag) < 0) __PYX_ERR(24, 80, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc__ServerShutdownTag->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc__ServerShutdownTag->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc__ServerShutdownTag->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc__ServerShutdownTag->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (__Pyx_SetVtable(__pyx_ptype_7_cython_6cygrpc__ServerShutdownTag, __pyx_vtabptr_7_cython_6cygrpc__ServerShutdownTag) < 0) __PYX_ERR(24, 80, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_MergeVtables(__pyx_ptype_7_cython_6cygrpc__ServerShutdownTag) < 0) __PYX_ERR(24, 80, __pyx_L1_error)
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ServerShutdownTag, (PyObject *) __pyx_ptype_7_cython_6cygrpc__ServerShutdownTag) < 0) __PYX_ERR(24, 80, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc__ServerShutdownTag) < 0) __PYX_ERR(24, 80, __pyx_L1_error)
+  #endif
+  __pyx_vtabptr_7_cython_6cygrpc_BaseCompletionQueue = &__pyx_vtable_7_cython_6cygrpc_BaseCompletionQueue;
+  __pyx_vtable_7_cython_6cygrpc_BaseCompletionQueue.c_ptr = (grpc_completion_queue *(*)(struct __pyx_obj_7_cython_6cygrpc_BaseCompletionQueue *))__pyx_f_7_cython_6cygrpc_19BaseCompletionQueue_c_ptr;
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc_BaseCompletionQueue = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc_BaseCompletionQueue_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc_BaseCompletionQueue)) __PYX_ERR(7, 38, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc_BaseCompletionQueue_spec, __pyx_ptype_7_cython_6cygrpc_BaseCompletionQueue) < 0) __PYX_ERR(7, 38, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc_BaseCompletionQueue = &__pyx_type_7_cython_6cygrpc_BaseCompletionQueue;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc_BaseCompletionQueue) < 0) __PYX_ERR(7, 38, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc_BaseCompletionQueue->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc_BaseCompletionQueue->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc_BaseCompletionQueue->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc_BaseCompletionQueue->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (__Pyx_SetVtable(__pyx_ptype_7_cython_6cygrpc_BaseCompletionQueue, __pyx_vtabptr_7_cython_6cygrpc_BaseCompletionQueue) < 0) __PYX_ERR(7, 38, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_MergeVtables(__pyx_ptype_7_cython_6cygrpc_BaseCompletionQueue) < 0) __PYX_ERR(7, 38, __pyx_L1_error)
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_BaseCompletionQueue, (PyObject *) __pyx_ptype_7_cython_6cygrpc_BaseCompletionQueue) < 0) __PYX_ERR(7, 38, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc_BaseCompletionQueue) < 0) __PYX_ERR(7, 38, __pyx_L1_error)
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc__BoundEventLoop = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc__BoundEventLoop_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc__BoundEventLoop)) __PYX_ERR(7, 44, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc__BoundEventLoop_spec, __pyx_ptype_7_cython_6cygrpc__BoundEventLoop) < 0) __PYX_ERR(7, 44, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc__BoundEventLoop = &__pyx_type_7_cython_6cygrpc__BoundEventLoop;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc__BoundEventLoop) < 0) __PYX_ERR(7, 44, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc__BoundEventLoop->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc__BoundEventLoop->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc__BoundEventLoop->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc__BoundEventLoop->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_BoundEventLoop, (PyObject *) __pyx_ptype_7_cython_6cygrpc__BoundEventLoop) < 0) __PYX_ERR(7, 44, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc__BoundEventLoop) < 0) __PYX_ERR(7, 44, __pyx_L1_error)
+  #endif
+  __pyx_vtabptr_7_cython_6cygrpc_PollerCompletionQueue = &__pyx_vtable_7_cython_6cygrpc_PollerCompletionQueue;
+  __pyx_vtable_7_cython_6cygrpc_PollerCompletionQueue.__pyx_base = *__pyx_vtabptr_7_cython_6cygrpc_BaseCompletionQueue;
+  __pyx_vtable_7_cython_6cygrpc_PollerCompletionQueue._poll = (void (*)(struct __pyx_obj_7_cython_6cygrpc_PollerCompletionQueue *))__pyx_f_7_cython_6cygrpc_21PollerCompletionQueue__poll;
+  __pyx_vtable_7_cython_6cygrpc_PollerCompletionQueue.shutdown = (PyObject *(*)(struct __pyx_obj_7_cython_6cygrpc_PollerCompletionQueue *))__pyx_f_7_cython_6cygrpc_21PollerCompletionQueue_shutdown;
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_t_1 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_7_cython_6cygrpc_BaseCompletionQueue); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 72, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_ptype_7_cython_6cygrpc_PollerCompletionQueue = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc_PollerCompletionQueue_spec, __pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (unlikely(!__pyx_ptype_7_cython_6cygrpc_PollerCompletionQueue)) __PYX_ERR(7, 72, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc_PollerCompletionQueue_spec, __pyx_ptype_7_cython_6cygrpc_PollerCompletionQueue) < 0) __PYX_ERR(7, 72, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc_PollerCompletionQueue = &__pyx_type_7_cython_6cygrpc_PollerCompletionQueue;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  __pyx_ptype_7_cython_6cygrpc_PollerCompletionQueue->tp_base = __pyx_ptype_7_cython_6cygrpc_BaseCompletionQueue;
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc_PollerCompletionQueue) < 0) __PYX_ERR(7, 72, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc_PollerCompletionQueue->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc_PollerCompletionQueue->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc_PollerCompletionQueue->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc_PollerCompletionQueue->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (__Pyx_SetVtable(__pyx_ptype_7_cython_6cygrpc_PollerCompletionQueue, __pyx_vtabptr_7_cython_6cygrpc_PollerCompletionQueue) < 0) __PYX_ERR(7, 72, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_MergeVtables(__pyx_ptype_7_cython_6cygrpc_PollerCompletionQueue) < 0) __PYX_ERR(7, 72, __pyx_L1_error)
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_PollerCompletionQueue, (PyObject *) __pyx_ptype_7_cython_6cygrpc_PollerCompletionQueue) < 0) __PYX_ERR(7, 72, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc_PollerCompletionQueue) < 0) __PYX_ERR(7, 72, __pyx_L1_error)
+  #endif
+  __pyx_vtabptr_7_cython_6cygrpc_AioRpcStatus = &__pyx_vtable_7_cython_6cygrpc_AioRpcStatus;
+  __pyx_vtable_7_cython_6cygrpc_AioRpcStatus.code = (grpc_status_code (*)(struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *, int __pyx_skip_dispatch))__pyx_f_7_cython_6cygrpc_12AioRpcStatus_code;
+  __pyx_vtable_7_cython_6cygrpc_AioRpcStatus.details = (PyObject *(*)(struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *, int __pyx_skip_dispatch))__pyx_f_7_cython_6cygrpc_12AioRpcStatus_details;
+  __pyx_vtable_7_cython_6cygrpc_AioRpcStatus.trailing_metadata = (PyObject *(*)(struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *, int __pyx_skip_dispatch))__pyx_f_7_cython_6cygrpc_12AioRpcStatus_trailing_metadata;
+  __pyx_vtable_7_cython_6cygrpc_AioRpcStatus.debug_error_string = (PyObject *(*)(struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *, int __pyx_skip_dispatch))__pyx_f_7_cython_6cygrpc_12AioRpcStatus_debug_error_string;
+  __pyx_vtable_7_cython_6cygrpc_AioRpcStatus.c_code = (grpc_status_code (*)(struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *))__pyx_f_7_cython_6cygrpc_12AioRpcStatus_c_code;
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_t_1 = PyTuple_Pack(1, (PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])); if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 17, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_ptype_7_cython_6cygrpc_AioRpcStatus = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc_AioRpcStatus_spec, __pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (unlikely(!__pyx_ptype_7_cython_6cygrpc_AioRpcStatus)) __PYX_ERR(30, 17, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc_AioRpcStatus_spec, __pyx_ptype_7_cython_6cygrpc_AioRpcStatus) < 0) __PYX_ERR(30, 17, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc_AioRpcStatus = &__pyx_type_7_cython_6cygrpc_AioRpcStatus;
+  #endif
+  if (sizeof(struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus) != sizeof(PyBaseExceptionObject)) {
+    if (__Pyx_validate_extern_base((&((PyTypeObject*)PyExc_Exception)[0])) < 0) __PYX_ERR(30, 17, __pyx_L1_error)
+  }
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  __pyx_ptype_7_cython_6cygrpc_AioRpcStatus->tp_base = (&((PyTypeObject*)PyExc_Exception)[0]);
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc_AioRpcStatus) < 0) __PYX_ERR(30, 17, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc_AioRpcStatus->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc_AioRpcStatus->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc_AioRpcStatus->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc_AioRpcStatus->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (__Pyx_SetVtable(__pyx_ptype_7_cython_6cygrpc_AioRpcStatus, __pyx_vtabptr_7_cython_6cygrpc_AioRpcStatus) < 0) __PYX_ERR(30, 17, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_MergeVtables(__pyx_ptype_7_cython_6cygrpc_AioRpcStatus) < 0) __PYX_ERR(30, 17, __pyx_L1_error)
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_AioRpcStatus, (PyObject *) __pyx_ptype_7_cython_6cygrpc_AioRpcStatus) < 0) __PYX_ERR(30, 17, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc_AioRpcStatus) < 0) __PYX_ERR(30, 17, __pyx_L1_error)
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc__AioState = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc__AioState_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc__AioState)) __PYX_ERR(33, 36, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc__AioState_spec, __pyx_ptype_7_cython_6cygrpc__AioState) < 0) __PYX_ERR(33, 36, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc__AioState = &__pyx_type_7_cython_6cygrpc__AioState;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc__AioState) < 0) __PYX_ERR(33, 36, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc__AioState->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc__AioState->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc__AioState->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc__AioState->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_AioState, (PyObject *) __pyx_ptype_7_cython_6cygrpc__AioState) < 0) __PYX_ERR(33, 36, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc__AioState) < 0) __PYX_ERR(33, 36, __pyx_L1_error)
+  #endif
+  __pyx_vtabptr_7_cython_6cygrpc_CallbackFailureHandler = &__pyx_vtable_7_cython_6cygrpc_CallbackFailureHandler;
+  __pyx_vtable_7_cython_6cygrpc_CallbackFailureHandler.handle = (PyObject *(*)(struct __pyx_obj_7_cython_6cygrpc_CallbackFailureHandler *, PyObject *))__pyx_f_7_cython_6cygrpc_22CallbackFailureHandler_handle;
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc_CallbackFailureHandler = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc_CallbackFailureHandler_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc_CallbackFailureHandler)) __PYX_ERR(32, 16, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc_CallbackFailureHandler_spec, __pyx_ptype_7_cython_6cygrpc_CallbackFailureHandler) < 0) __PYX_ERR(32, 16, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc_CallbackFailureHandler = &__pyx_type_7_cython_6cygrpc_CallbackFailureHandler;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc_CallbackFailureHandler) < 0) __PYX_ERR(32, 16, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc_CallbackFailureHandler->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc_CallbackFailureHandler->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc_CallbackFailureHandler->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc_CallbackFailureHandler->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (__Pyx_SetVtable(__pyx_ptype_7_cython_6cygrpc_CallbackFailureHandler, __pyx_vtabptr_7_cython_6cygrpc_CallbackFailureHandler) < 0) __PYX_ERR(32, 16, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_MergeVtables(__pyx_ptype_7_cython_6cygrpc_CallbackFailureHandler) < 0) __PYX_ERR(32, 16, __pyx_L1_error)
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_CallbackFailureHandler, (PyObject *) __pyx_ptype_7_cython_6cygrpc_CallbackFailureHandler) < 0) __PYX_ERR(32, 16, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc_CallbackFailureHandler) < 0) __PYX_ERR(32, 16, __pyx_L1_error)
+  #endif
+  __pyx_vtabptr_7_cython_6cygrpc_CallbackWrapper = &__pyx_vtable_7_cython_6cygrpc_CallbackWrapper;
+  __pyx_vtable_7_cython_6cygrpc_CallbackWrapper.functor_run = (void (*)(grpc_completion_queue_functor *, int))__pyx_f_7_cython_6cygrpc_15CallbackWrapper_functor_run;
+  __pyx_vtable_7_cython_6cygrpc_CallbackWrapper.c_functor = (grpc_completion_queue_functor *(*)(struct __pyx_obj_7_cython_6cygrpc_CallbackWrapper *))__pyx_f_7_cython_6cygrpc_15CallbackWrapper_c_functor;
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc_CallbackWrapper = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc_CallbackWrapper_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc_CallbackWrapper)) __PYX_ERR(32, 33, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc_CallbackWrapper_spec, __pyx_ptype_7_cython_6cygrpc_CallbackWrapper) < 0) __PYX_ERR(32, 33, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc_CallbackWrapper = &__pyx_type_7_cython_6cygrpc_CallbackWrapper;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc_CallbackWrapper) < 0) __PYX_ERR(32, 33, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc_CallbackWrapper->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc_CallbackWrapper->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc_CallbackWrapper->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc_CallbackWrapper->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (__Pyx_SetVtable(__pyx_ptype_7_cython_6cygrpc_CallbackWrapper, __pyx_vtabptr_7_cython_6cygrpc_CallbackWrapper) < 0) __PYX_ERR(32, 33, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_MergeVtables(__pyx_ptype_7_cython_6cygrpc_CallbackWrapper) < 0) __PYX_ERR(32, 33, __pyx_L1_error)
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_CallbackWrapper, (PyObject *) __pyx_ptype_7_cython_6cygrpc_CallbackWrapper) < 0) __PYX_ERR(32, 33, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc_CallbackWrapper) < 0) __PYX_ERR(32, 33, __pyx_L1_error)
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc_GrpcCallWrapper = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc_GrpcCallWrapper_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc_GrpcCallWrapper)) __PYX_ERR(36, 56, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc_GrpcCallWrapper_spec, __pyx_ptype_7_cython_6cygrpc_GrpcCallWrapper) < 0) __PYX_ERR(36, 56, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc_GrpcCallWrapper = &__pyx_type_7_cython_6cygrpc_GrpcCallWrapper;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc_GrpcCallWrapper) < 0) __PYX_ERR(36, 56, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc_GrpcCallWrapper->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc_GrpcCallWrapper->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc_GrpcCallWrapper->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc_GrpcCallWrapper->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_GrpcCallWrapper, (PyObject *) __pyx_ptype_7_cython_6cygrpc_GrpcCallWrapper) < 0) __PYX_ERR(36, 56, __pyx_L1_error)
+  __pyx_vtabptr_7_cython_6cygrpc__AioCall = &__pyx_vtable_7_cython_6cygrpc__AioCall;
+  __pyx_vtable_7_cython_6cygrpc__AioCall._create_grpc_call = (void (*)(struct __pyx_obj_7_cython_6cygrpc__AioCall *, PyObject *, PyObject *, struct __pyx_obj_7_cython_6cygrpc_CallCredentials *))__pyx_f_7_cython_6cygrpc_8_AioCall__create_grpc_call;
+  __pyx_vtable_7_cython_6cygrpc__AioCall._set_status = (void (*)(struct __pyx_obj_7_cython_6cygrpc__AioCall *, struct __pyx_obj_7_cython_6cygrpc_AioRpcStatus *))__pyx_f_7_cython_6cygrpc_8_AioCall__set_status;
+  __pyx_vtable_7_cython_6cygrpc__AioCall._set_initial_metadata = (void (*)(struct __pyx_obj_7_cython_6cygrpc__AioCall *, PyObject *))__pyx_f_7_cython_6cygrpc_8_AioCall__set_initial_metadata;
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_t_1 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_7_cython_6cygrpc_GrpcCallWrapper); if (unlikely(!__pyx_t_1)) __PYX_ERR(34, 45, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_ptype_7_cython_6cygrpc__AioCall = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc__AioCall_spec, __pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (unlikely(!__pyx_ptype_7_cython_6cygrpc__AioCall)) __PYX_ERR(34, 45, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc__AioCall_spec, __pyx_ptype_7_cython_6cygrpc__AioCall) < 0) __PYX_ERR(34, 45, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc__AioCall = &__pyx_type_7_cython_6cygrpc__AioCall;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  __pyx_ptype_7_cython_6cygrpc__AioCall->tp_base = __pyx_ptype_7_cython_6cygrpc_GrpcCallWrapper;
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc__AioCall) < 0) __PYX_ERR(34, 45, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc__AioCall->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc__AioCall->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc__AioCall->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc__AioCall->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (__Pyx_SetVtable(__pyx_ptype_7_cython_6cygrpc__AioCall, __pyx_vtabptr_7_cython_6cygrpc__AioCall) < 0) __PYX_ERR(34, 45, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_MergeVtables(__pyx_ptype_7_cython_6cygrpc__AioCall) < 0) __PYX_ERR(34, 45, __pyx_L1_error)
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_AioCall, (PyObject *) __pyx_ptype_7_cython_6cygrpc__AioCall) < 0) __PYX_ERR(34, 45, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc__AioCall) < 0) __PYX_ERR(34, 45, __pyx_L1_error)
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc_AioChannel = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc_AioChannel_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc_AioChannel)) __PYX_ERR(8, 28, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc_AioChannel_spec, __pyx_ptype_7_cython_6cygrpc_AioChannel) < 0) __PYX_ERR(8, 28, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc_AioChannel = &__pyx_type_7_cython_6cygrpc_AioChannel;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc_AioChannel) < 0) __PYX_ERR(8, 28, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc_AioChannel->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc_AioChannel->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc_AioChannel->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc_AioChannel->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_AioChannel, (PyObject *) __pyx_ptype_7_cython_6cygrpc_AioChannel) < 0) __PYX_ERR(8, 28, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc_AioChannel) < 0) __PYX_ERR(8, 28, __pyx_L1_error)
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc__HandlerCallDetails = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc__HandlerCallDetails_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc__HandlerCallDetails)) __PYX_ERR(9, 35, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc__HandlerCallDetails_spec, __pyx_ptype_7_cython_6cygrpc__HandlerCallDetails) < 0) __PYX_ERR(9, 35, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc__HandlerCallDetails = &__pyx_type_7_cython_6cygrpc__HandlerCallDetails;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc__HandlerCallDetails) < 0) __PYX_ERR(9, 35, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc__HandlerCallDetails->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc__HandlerCallDetails->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc__HandlerCallDetails->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc__HandlerCallDetails->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_HandlerCallDetails, (PyObject *) __pyx_ptype_7_cython_6cygrpc__HandlerCallDetails) < 0) __PYX_ERR(9, 35, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc__HandlerCallDetails) < 0) __PYX_ERR(9, 35, __pyx_L1_error)
+  #endif
+  __pyx_vtabptr_7_cython_6cygrpc_RPCState = &__pyx_vtable_7_cython_6cygrpc_RPCState;
+  __pyx_vtable_7_cython_6cygrpc_RPCState.method = (PyObject *(*)(struct __pyx_obj_7_cython_6cygrpc_RPCState *))__pyx_f_7_cython_6cygrpc_8RPCState_method;
+  __pyx_vtable_7_cython_6cygrpc_RPCState.invocation_metadata = (PyObject *(*)(struct __pyx_obj_7_cython_6cygrpc_RPCState *))__pyx_f_7_cython_6cygrpc_8RPCState_invocation_metadata;
+  __pyx_vtable_7_cython_6cygrpc_RPCState.raise_for_termination = (void (*)(struct __pyx_obj_7_cython_6cygrpc_RPCState *))__pyx_f_7_cython_6cygrpc_8RPCState_raise_for_termination;
+  __pyx_vtable_7_cython_6cygrpc_RPCState.get_write_flag = (int (*)(struct __pyx_obj_7_cython_6cygrpc_RPCState *))__pyx_f_7_cython_6cygrpc_8RPCState_get_write_flag;
+  __pyx_vtable_7_cython_6cygrpc_RPCState.create_send_initial_metadata_op_if_not_sent = (struct __pyx_obj_7_cython_6cygrpc_Operation *(*)(struct __pyx_obj_7_cython_6cygrpc_RPCState *))__pyx_f_7_cython_6cygrpc_8RPCState_create_send_initial_metadata_op_if_not_sent;
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_t_1 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_7_cython_6cygrpc_GrpcCallWrapper); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 45, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_ptype_7_cython_6cygrpc_RPCState = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc_RPCState_spec, __pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (unlikely(!__pyx_ptype_7_cython_6cygrpc_RPCState)) __PYX_ERR(9, 45, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc_RPCState_spec, __pyx_ptype_7_cython_6cygrpc_RPCState) < 0) __PYX_ERR(9, 45, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc_RPCState = &__pyx_type_7_cython_6cygrpc_RPCState;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  __pyx_ptype_7_cython_6cygrpc_RPCState->tp_base = __pyx_ptype_7_cython_6cygrpc_GrpcCallWrapper;
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc_RPCState) < 0) __PYX_ERR(9, 45, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc_RPCState->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc_RPCState->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc_RPCState->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc_RPCState->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (__Pyx_SetVtable(__pyx_ptype_7_cython_6cygrpc_RPCState, __pyx_vtabptr_7_cython_6cygrpc_RPCState) < 0) __PYX_ERR(9, 45, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_MergeVtables(__pyx_ptype_7_cython_6cygrpc_RPCState) < 0) __PYX_ERR(9, 45, __pyx_L1_error)
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_RPCState, (PyObject *) __pyx_ptype_7_cython_6cygrpc_RPCState) < 0) __PYX_ERR(9, 45, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc_RPCState) < 0) __PYX_ERR(9, 45, __pyx_L1_error)
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc__ServicerContext = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc__ServicerContext_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc__ServicerContext)) __PYX_ERR(9, 115, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc__ServicerContext_spec, __pyx_ptype_7_cython_6cygrpc__ServicerContext) < 0) __PYX_ERR(9, 115, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc__ServicerContext = &__pyx_type_7_cython_6cygrpc__ServicerContext;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc__ServicerContext) < 0) __PYX_ERR(9, 115, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc__ServicerContext->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc__ServicerContext->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc__ServicerContext->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc__ServicerContext->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ServicerContext, (PyObject *) __pyx_ptype_7_cython_6cygrpc__ServicerContext) < 0) __PYX_ERR(9, 115, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc__ServicerContext) < 0) __PYX_ERR(9, 115, __pyx_L1_error)
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc__SyncServicerContext = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc__SyncServicerContext_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc__SyncServicerContext)) __PYX_ERR(9, 292, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc__SyncServicerContext_spec, __pyx_ptype_7_cython_6cygrpc__SyncServicerContext) < 0) __PYX_ERR(9, 292, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc__SyncServicerContext = &__pyx_type_7_cython_6cygrpc__SyncServicerContext;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc__SyncServicerContext) < 0) __PYX_ERR(9, 292, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc__SyncServicerContext->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc__SyncServicerContext->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc__SyncServicerContext->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc__SyncServicerContext->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_SyncServicerContext, (PyObject *) __pyx_ptype_7_cython_6cygrpc__SyncServicerContext) < 0) __PYX_ERR(9, 292, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc__SyncServicerContext) < 0) __PYX_ERR(9, 292, __pyx_L1_error)
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc__MessageReceiver = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc__MessageReceiver_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc__MessageReceiver)) __PYX_ERR(9, 596, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc__MessageReceiver_spec, __pyx_ptype_7_cython_6cygrpc__MessageReceiver) < 0) __PYX_ERR(9, 596, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc__MessageReceiver = &__pyx_type_7_cython_6cygrpc__MessageReceiver;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc__MessageReceiver) < 0) __PYX_ERR(9, 596, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc__MessageReceiver->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc__MessageReceiver->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc__MessageReceiver->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc__MessageReceiver->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_MessageReceiver, (PyObject *) __pyx_ptype_7_cython_6cygrpc__MessageReceiver) < 0) __PYX_ERR(9, 596, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc__MessageReceiver) < 0) __PYX_ERR(9, 596, __pyx_L1_error)
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc__ConcurrentRpcLimiter = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc__ConcurrentRpcLimiter_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc__ConcurrentRpcLimiter)) __PYX_ERR(9, 860, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc__ConcurrentRpcLimiter_spec, __pyx_ptype_7_cython_6cygrpc__ConcurrentRpcLimiter) < 0) __PYX_ERR(9, 860, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc__ConcurrentRpcLimiter = &__pyx_type_7_cython_6cygrpc__ConcurrentRpcLimiter;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc__ConcurrentRpcLimiter) < 0) __PYX_ERR(9, 860, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc__ConcurrentRpcLimiter->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc__ConcurrentRpcLimiter->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc__ConcurrentRpcLimiter->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc__ConcurrentRpcLimiter->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ConcurrentRpcLimiter, (PyObject *) __pyx_ptype_7_cython_6cygrpc__ConcurrentRpcLimiter) < 0) __PYX_ERR(9, 860, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc__ConcurrentRpcLimiter) < 0) __PYX_ERR(9, 860, __pyx_L1_error)
+  #endif
+  __pyx_vtabptr_7_cython_6cygrpc_AioServer = &__pyx_vtable_7_cython_6cygrpc_AioServer;
+  __pyx_vtable_7_cython_6cygrpc_AioServer.thread_pool = (PyObject *(*)(struct __pyx_obj_7_cython_6cygrpc_AioServer *))__pyx_f_7_cython_6cygrpc_9AioServer_thread_pool;
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc_AioServer = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc_AioServer_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc_AioServer)) __PYX_ERR(9, 884, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc_AioServer_spec, __pyx_ptype_7_cython_6cygrpc_AioServer) < 0) __PYX_ERR(9, 884, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc_AioServer = &__pyx_type_7_cython_6cygrpc_AioServer;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc_AioServer) < 0) __PYX_ERR(9, 884, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc_AioServer->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc_AioServer->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc_AioServer->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc_AioServer->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (__Pyx_SetVtable(__pyx_ptype_7_cython_6cygrpc_AioServer, __pyx_vtabptr_7_cython_6cygrpc_AioServer) < 0) __PYX_ERR(9, 884, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_MergeVtables(__pyx_ptype_7_cython_6cygrpc_AioServer) < 0) __PYX_ERR(9, 884, __pyx_L1_error)
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_AioServer, (PyObject *) __pyx_ptype_7_cython_6cygrpc_AioServer) < 0) __PYX_ERR(9, 884, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc_AioServer) < 0) __PYX_ERR(9, 884, __pyx_L1_error)
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc__GrpcArgWrapper = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc__GrpcArgWrapper_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc__GrpcArgWrapper)) __PYX_ERR(3, 16, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc__GrpcArgWrapper_spec, __pyx_ptype_7_cython_6cygrpc__GrpcArgWrapper) < 0) __PYX_ERR(3, 16, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc__GrpcArgWrapper = &__pyx_type_7_cython_6cygrpc__GrpcArgWrapper;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc__GrpcArgWrapper) < 0) __PYX_ERR(3, 16, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc__GrpcArgWrapper->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc__GrpcArgWrapper->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc__GrpcArgWrapper->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc__GrpcArgWrapper->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_GrpcArgWrapper, (PyObject *) __pyx_ptype_7_cython_6cygrpc__GrpcArgWrapper) < 0) __PYX_ERR(3, 16, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc__GrpcArgWrapper) < 0) __PYX_ERR(3, 16, __pyx_L1_error)
+  #endif
+  __pyx_vtabptr_7_cython_6cygrpc_InsecureChannelCredentials = &__pyx_vtable_7_cython_6cygrpc_InsecureChannelCredentials;
+  __pyx_vtable_7_cython_6cygrpc_InsecureChannelCredentials.__pyx_base = *__pyx_vtabptr_7_cython_6cygrpc_ChannelCredentials;
+  __pyx_vtable_7_cython_6cygrpc_InsecureChannelCredentials.__pyx_base.c = (grpc_channel_credentials *(*)(struct __pyx_obj_7_cython_6cygrpc_ChannelCredentials *))__pyx_f_7_cython_6cygrpc_26InsecureChannelCredentials_c;
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_t_1 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_7_cython_6cygrpc_ChannelCredentials); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 373, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_ptype_7_cython_6cygrpc_InsecureChannelCredentials = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc_InsecureChannelCredentials_spec, __pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (unlikely(!__pyx_ptype_7_cython_6cygrpc_InsecureChannelCredentials)) __PYX_ERR(5, 373, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc_InsecureChannelCredentials_spec, __pyx_ptype_7_cython_6cygrpc_InsecureChannelCredentials) < 0) __PYX_ERR(5, 373, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc_InsecureChannelCredentials = &__pyx_type_7_cython_6cygrpc_InsecureChannelCredentials;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  __pyx_ptype_7_cython_6cygrpc_InsecureChannelCredentials->tp_base = __pyx_ptype_7_cython_6cygrpc_ChannelCredentials;
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc_InsecureChannelCredentials) < 0) __PYX_ERR(5, 373, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc_InsecureChannelCredentials->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc_InsecureChannelCredentials->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc_InsecureChannelCredentials->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc_InsecureChannelCredentials->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (__Pyx_SetVtable(__pyx_ptype_7_cython_6cygrpc_InsecureChannelCredentials, __pyx_vtabptr_7_cython_6cygrpc_InsecureChannelCredentials) < 0) __PYX_ERR(5, 373, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_MergeVtables(__pyx_ptype_7_cython_6cygrpc_InsecureChannelCredentials) < 0) __PYX_ERR(5, 373, __pyx_L1_error)
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_InsecureChannelCredentials, (PyObject *) __pyx_ptype_7_cython_6cygrpc_InsecureChannelCredentials) < 0) __PYX_ERR(5, 373, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc_InsecureChannelCredentials) < 0) __PYX_ERR(5, 373, __pyx_L1_error)
+  #endif
+  __pyx_vtabptr_7_cython_6cygrpc_ComputeEngineChannelCredentials = &__pyx_vtable_7_cython_6cygrpc_ComputeEngineChannelCredentials;
+  __pyx_vtable_7_cython_6cygrpc_ComputeEngineChannelCredentials.__pyx_base = *__pyx_vtabptr_7_cython_6cygrpc_ChannelCredentials;
+  __pyx_vtable_7_cython_6cygrpc_ComputeEngineChannelCredentials.__pyx_base.c = (grpc_channel_credentials *(*)(struct __pyx_obj_7_cython_6cygrpc_ChannelCredentials *))__pyx_f_7_cython_6cygrpc_31ComputeEngineChannelCredentials_c;
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_t_1 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_7_cython_6cygrpc_ChannelCredentials); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 429, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_ptype_7_cython_6cygrpc_ComputeEngineChannelCredentials = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc_ComputeEngineChannelCredentials_spec, __pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (unlikely(!__pyx_ptype_7_cython_6cygrpc_ComputeEngineChannelCredentials)) __PYX_ERR(5, 429, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc_ComputeEngineChannelCredentials_spec, __pyx_ptype_7_cython_6cygrpc_ComputeEngineChannelCredentials) < 0) __PYX_ERR(5, 429, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc_ComputeEngineChannelCredentials = &__pyx_type_7_cython_6cygrpc_ComputeEngineChannelCredentials;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  __pyx_ptype_7_cython_6cygrpc_ComputeEngineChannelCredentials->tp_base = __pyx_ptype_7_cython_6cygrpc_ChannelCredentials;
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc_ComputeEngineChannelCredentials) < 0) __PYX_ERR(5, 429, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc_ComputeEngineChannelCredentials->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc_ComputeEngineChannelCredentials->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc_ComputeEngineChannelCredentials->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc_ComputeEngineChannelCredentials->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (__Pyx_SetVtable(__pyx_ptype_7_cython_6cygrpc_ComputeEngineChannelCredentials, __pyx_vtabptr_7_cython_6cygrpc_ComputeEngineChannelCredentials) < 0) __PYX_ERR(5, 429, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_MergeVtables(__pyx_ptype_7_cython_6cygrpc_ComputeEngineChannelCredentials) < 0) __PYX_ERR(5, 429, __pyx_L1_error)
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ComputeEngineChannelCredentials, (PyObject *) __pyx_ptype_7_cython_6cygrpc_ComputeEngineChannelCredentials) < 0) __PYX_ERR(5, 429, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc_ComputeEngineChannelCredentials) < 0) __PYX_ERR(5, 429, __pyx_L1_error)
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc_CensusContext = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc_CensusContext_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc_CensusContext)) __PYX_ERR(26, 31, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc_CensusContext_spec, __pyx_ptype_7_cython_6cygrpc_CensusContext) < 0) __PYX_ERR(26, 31, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc_CensusContext = &__pyx_type_7_cython_6cygrpc_CensusContext;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc_CensusContext) < 0) __PYX_ERR(26, 31, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc_CensusContext->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc_CensusContext->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc_CensusContext->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc_CensusContext->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+  }
+  #endif
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_CensusContext, (PyObject *) __pyx_ptype_7_cython_6cygrpc_CensusContext) < 0) __PYX_ERR(26, 31, __pyx_L1_error)
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_7_cython_6cygrpc_CensusContext) < 0) __PYX_ERR(26, 31, __pyx_L1_error)
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call)) __PYX_ERR(12, 336, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call_spec, __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call) < 0) __PYX_ERR(12, 336, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call = &__pyx_type_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call) < 0) __PYX_ERR(12, 336, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct____pyx_f_7_cython_6cygrpc__integrated_call->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+  }
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_1_next_event = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_1_next_event_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_1_next_event)) __PYX_ERR(12, 384, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc___pyx_scope_struct_1_next_event_spec, __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_1_next_event) < 0) __PYX_ERR(12, 384, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_1_next_event = &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_1_next_event;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_1_next_event) < 0) __PYX_ERR(12, 384, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_1_next_event->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_1_next_event->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_1_next_event->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_1_next_event->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+  }
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call)) __PYX_ERR(12, 399, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call_spec, __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call) < 0) __PYX_ERR(12, 399, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call = &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call) < 0) __PYX_ERR(12, 399, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_7_cython_6cygrpc__segregated_call->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+  }
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event)) __PYX_ERR(12, 536, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event_spec, __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event) < 0) __PYX_ERR(12, 536, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event = &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event) < 0) __PYX_ERR(12, 536, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+  }
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata)) __PYX_ERR(5, 37, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata_spec, __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata) < 0) __PYX_ERR(5, 37, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata = &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata) < 0) __PYX_ERR(5, 37, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_7_cython_6cygrpc__get_metadata->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+  }
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_7_cython_6cygrpc__metadata = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_7_cython_6cygrpc__metadata_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_7_cython_6cygrpc__metadata)) __PYX_ERR(18, 68, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_7_cython_6cygrpc__metadata_spec, __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_7_cython_6cygrpc__metadata) < 0) __PYX_ERR(18, 68, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_7_cython_6cygrpc__metadata = &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_7_cython_6cygrpc__metadata;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_7_cython_6cygrpc__metadata) < 0) __PYX_ERR(18, 68, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_7_cython_6cygrpc__metadata->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_7_cython_6cygrpc__metadata->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_7_cython_6cygrpc__metadata->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_7_cython_6cygrpc__metadata->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+  }
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_6_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_6_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_6_genexpr)) __PYX_ERR(18, 70, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc___pyx_scope_struct_6_genexpr_spec, __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_6_genexpr) < 0) __PYX_ERR(18, 70, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_6_genexpr = &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_6_genexpr;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_6_genexpr) < 0) __PYX_ERR(18, 70, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_6_genexpr->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_6_genexpr->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_6_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_6_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+  }
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context)) __PYX_ERR(29, 50, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context_spec, __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context) < 0) __PYX_ERR(29, 50, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context = &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context) < 0) __PYX_ERR(29, 50, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_7__run_with_context->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+  }
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context)) __PYX_ERR(29, 56, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context_spec, __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context) < 0) __PYX_ERR(29, 56, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context = &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context) < 0) __PYX_ERR(29, 56, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_8__run_with_context->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+  }
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_9___init__ = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_9___init___spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_9___init__)) __PYX_ERR(1, 103, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc___pyx_scope_struct_9___init___spec, __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_9___init__) < 0) __PYX_ERR(1, 103, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_9___init__ = &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_9___init__;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_9___init__) < 0) __PYX_ERR(1, 103, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_9___init__->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_9___init__->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_9___init__->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_9___init__->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+  }
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator)) __PYX_ERR(6, 123, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator_spec, __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator) < 0) __PYX_ERR(6, 123, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator = &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator) < 0) __PYX_ERR(6, 123, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_10_async_generator_to_generator->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+  }
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator)) __PYX_ERR(6, 141, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator_spec, __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator) < 0) __PYX_ERR(6, 141, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator = &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator) < 0) __PYX_ERR(6, 141, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_11_generator_to_async_generator->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+  }
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch)) __PYX_ERR(32, 77, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch_spec, __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch) < 0) __PYX_ERR(32, 77, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch = &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch) < 0) __PYX_ERR(32, 77, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_12_execute_batch->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+  }
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_13__receive_message = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_13__receive_message_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_13__receive_message)) __PYX_ERR(32, 115, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc___pyx_scope_struct_13__receive_message_spec, __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_13__receive_message) < 0) __PYX_ERR(32, 115, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_13__receive_message = &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_13__receive_message;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_13__receive_message) < 0) __PYX_ERR(32, 115, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_13__receive_message->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_13__receive_message->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_13__receive_message->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_13__receive_message->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+  }
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_14__send_message = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_14__send_message_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_14__send_message)) __PYX_ERR(32, 139, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc___pyx_scope_struct_14__send_message_spec, __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_14__send_message) < 0) __PYX_ERR(32, 139, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_14__send_message = &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_14__send_message;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_14__send_message) < 0) __PYX_ERR(32, 139, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_14__send_message->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_14__send_message->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_14__send_message->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_14__send_message->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+  }
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata)) __PYX_ERR(32, 151, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata_spec, __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata) < 0) __PYX_ERR(32, 151, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata = &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata) < 0) __PYX_ERR(32, 151, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_15__send_initial_metadata->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+  }
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata)) __PYX_ERR(32, 162, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata_spec, __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata) < 0) __PYX_ERR(32, 162, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata = &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata) < 0) __PYX_ERR(32, 162, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_16__receive_initial_metadata->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+  }
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server)) __PYX_ERR(32, 169, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server_spec, __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server) < 0) __PYX_ERR(32, 169, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server = &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server) < 0) __PYX_ERR(32, 169, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_17__send_error_status_from_server->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+  }
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_18_status = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_18_status_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_18_status)) __PYX_ERR(34, 235, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc___pyx_scope_struct_18_status_spec, __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_18_status) < 0) __PYX_ERR(34, 235, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_18_status = &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_18_status;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_18_status) < 0) __PYX_ERR(34, 235, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_18_status->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_18_status->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_18_status->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_18_status->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+  }
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata)) __PYX_ERR(34, 258, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata_spec, __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata) < 0) __PYX_ERR(34, 258, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata = &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata) < 0) __PYX_ERR(34, 258, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_19_initial_metadata->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+  }
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary)) __PYX_ERR(34, 296, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary_spec, __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary) < 0) __PYX_ERR(34, 296, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary = &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary) < 0) __PYX_ERR(34, 296, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_20_unary_unary->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+  }
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received)) __PYX_ERR(34, 347, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received_spec, __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received) < 0) __PYX_ERR(34, 347, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received = &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received) < 0) __PYX_ERR(34, 347, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_21__handle_status_once_received->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+  }
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message)) __PYX_ERR(34, 364, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message_spec, __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message) < 0) __PYX_ERR(34, 364, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message = &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message) < 0) __PYX_ERR(34, 364, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_22_receive_serialized_message->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+  }
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message)) __PYX_ERR(34, 381, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message_spec, __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message) < 0) __PYX_ERR(34, 381, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message = &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message) < 0) __PYX_ERR(34, 381, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_23_send_serialized_message->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+  }
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close)) __PYX_ERR(34, 389, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close_spec, __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close) < 0) __PYX_ERR(34, 389, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close = &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close) < 0) __PYX_ERR(34, 389, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_24_send_receive_close->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+  }
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream)) __PYX_ERR(34, 395, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream_spec, __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream) < 0) __PYX_ERR(34, 395, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream = &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream) < 0) __PYX_ERR(34, 395, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_25_initiate_unary_stream->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+  }
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary)) __PYX_ERR(34, 437, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary_spec, __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary) < 0) __PYX_ERR(34, 437, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary = &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary) < 0) __PYX_ERR(34, 437, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_26_stream_unary->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+  }
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream)) __PYX_ERR(34, 496, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream_spec, __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream) < 0) __PYX_ERR(34, 496, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream = &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream) < 0) __PYX_ERR(34, 496, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_27_initiate_stream_stream->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+  }
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state)) __PYX_ERR(8, 71, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state_spec, __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state) < 0) __PYX_ERR(8, 71, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state = &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state) < 0) __PYX_ERR(8, 71, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_28_watch_connectivity_state->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+  }
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_29_read = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_29_read_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_29_read)) __PYX_ERR(9, 127, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc___pyx_scope_struct_29_read_spec, __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_29_read) < 0) __PYX_ERR(9, 127, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_29_read = &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_29_read;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_29_read) < 0) __PYX_ERR(9, 127, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_29_read->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_29_read->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_29_read->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_29_read->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+  }
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_30_write = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_30_write_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_30_write)) __PYX_ERR(9, 140, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc___pyx_scope_struct_30_write_spec, __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_30_write) < 0) __PYX_ERR(9, 140, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_30_write = &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_30_write;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_30_write) < 0) __PYX_ERR(9, 140, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_30_write->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_30_write->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_30_write->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_30_write->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+  }
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata)) __PYX_ERR(9, 150, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata_spec, __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata) < 0) __PYX_ERR(9, 150, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata = &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata) < 0) __PYX_ERR(9, 150, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_31_send_initial_metadata->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+  }
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_32_abort = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_32_abort_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_32_abort)) __PYX_ERR(9, 164, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc___pyx_scope_struct_32_abort_spec, __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_32_abort) < 0) __PYX_ERR(9, 164, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_32_abort = &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_32_abort;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_32_abort) < 0) __PYX_ERR(9, 164, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_32_abort->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_32_abort->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_32_abort->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_32_abort->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+  }
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status)) __PYX_ERR(9, 203, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status_spec, __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status) < 0) __PYX_ERR(9, 203, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status = &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status) < 0) __PYX_ERR(9, 203, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_33_abort_with_status->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+  }
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor)) __PYX_ERR(9, 354, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor_spec, __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor) < 0) __PYX_ERR(9, 354, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor = &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor) < 0) __PYX_ERR(9, 354, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_34__run_interceptor->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+  }
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler)) __PYX_ERR(9, 370, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler_spec, __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler) < 0) __PYX_ERR(9, 370, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler = &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler) < 0) __PYX_ERR(9, 370, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_35__find_method_handler->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+  }
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response)) __PYX_ERR(9, 389, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response_spec, __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response) < 0) __PYX_ERR(9, 389, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response = &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response) < 0) __PYX_ERR(9, 389, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_36__finish_handler_with_unary_response->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+  }
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses)) __PYX_ERR(9, 460, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses_spec, __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses) < 0) __PYX_ERR(9, 460, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses = &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses) < 0) __PYX_ERR(9, 460, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_37__finish_handler_with_stream_responses->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+  }
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc)) __PYX_ERR(9, 530, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc_spec, __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc) < 0) __PYX_ERR(9, 530, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc = &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc) < 0) __PYX_ERR(9, 530, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_38__handle_unary_unary_rpc->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+  }
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc)) __PYX_ERR(9, 564, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc_spec, __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc) < 0) __PYX_ERR(9, 564, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc = &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc) < 0) __PYX_ERR(9, 564, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_39__handle_unary_stream_rpc->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+  }
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver)) __PYX_ERR(9, 603, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver_spec, __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver) < 0) __PYX_ERR(9, 603, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver = &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver) < 0) __PYX_ERR(9, 603, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_40__async_message_receiver->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+  }
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_41___anext__ = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_41___anext___spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_41___anext__)) __PYX_ERR(9, 619, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc___pyx_scope_struct_41___anext___spec, __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_41___anext__) < 0) __PYX_ERR(9, 619, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_41___anext__ = &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_41___anext__;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_41___anext__) < 0) __PYX_ERR(9, 619, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_41___anext__->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_41___anext__->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_41___anext__->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_41___anext__->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+  }
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc)) __PYX_ERR(9, 623, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc_spec, __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc) < 0) __PYX_ERR(9, 623, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc = &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc) < 0) __PYX_ERR(9, 623, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_42__handle_stream_unary_rpc->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+  }
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc)) __PYX_ERR(9, 655, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc_spec, __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc) < 0) __PYX_ERR(9, 655, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc = &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc) < 0) __PYX_ERR(9, 655, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_43__handle_stream_stream_rpc->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+  }
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions)) __PYX_ERR(9, 686, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions_spec, __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions) < 0) __PYX_ERR(9, 686, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions = &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions) < 0) __PYX_ERR(9, 686, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_44__handle_exceptions->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+  }
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler)) __PYX_ERR(9, 742, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler_spec, __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler) < 0) __PYX_ERR(9, 742, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler = &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler) < 0) __PYX_ERR(9, 742, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_45___pyx_f_7_cython_6cygrpc__add_callback_handler->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+  }
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core)) __PYX_ERR(9, 755, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core_spec, __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core) < 0) __PYX_ERR(9, 755, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core = &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core) < 0) __PYX_ERR(9, 755, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_46__handle_cancellation_from_core->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+  }
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro)) __PYX_ERR(9, 772, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro_spec, __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro) < 0) __PYX_ERR(9, 772, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro = &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro) < 0) __PYX_ERR(9, 772, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_47__schedule_rpc_coro->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+  }
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc)) __PYX_ERR(9, 785, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc_spec, __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc) < 0) __PYX_ERR(9, 785, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc = &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc) < 0) __PYX_ERR(9, 785, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_48__handle_rpc->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+  }
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_49__request_call = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_49__request_call_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_49__request_call)) __PYX_ERR(9, 932, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc___pyx_scope_struct_49__request_call_spec, __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_49__request_call) < 0) __PYX_ERR(9, 932, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_49__request_call = &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_49__request_call;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_49__request_call) < 0) __PYX_ERR(9, 932, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_49__request_call->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_49__request_call->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_49__request_call->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_49__request_call->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+  }
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop)) __PYX_ERR(9, 952, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop_spec, __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop) < 0) __PYX_ERR(9, 952, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop = &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop) < 0) __PYX_ERR(9, 952, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_50__server_main_loop->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+  }
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_51_start = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_51_start_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_51_start)) __PYX_ERR(9, 1005, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc___pyx_scope_struct_51_start_spec, __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_51_start) < 0) __PYX_ERR(9, 1005, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_51_start = &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_51_start;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_51_start) < 0) __PYX_ERR(9, 1005, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_51_start->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_51_start->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_51_start->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_51_start->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+  }
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down)) __PYX_ERR(9, 1019, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down_spec, __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down) < 0) __PYX_ERR(9, 1019, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down = &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down) < 0) __PYX_ERR(9, 1019, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_52__start_shutting_down->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+  }
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_53_shutdown = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_53_shutdown_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_53_shutdown)) __PYX_ERR(9, 1036, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc___pyx_scope_struct_53_shutdown_spec, __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_53_shutdown) < 0) __PYX_ERR(9, 1036, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_53_shutdown = &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_53_shutdown;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_53_shutdown) < 0) __PYX_ERR(9, 1036, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_53_shutdown->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_53_shutdown->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_53_shutdown->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_53_shutdown->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+  }
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination_spec, NULL); if (unlikely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination)) __PYX_ERR(9, 1076, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination_spec, __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination) < 0) __PYX_ERR(9, 1076, __pyx_L1_error)
+  #else
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination = &__pyx_type_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination) < 0) __PYX_ERR(9, 1076, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination->tp_dictoffset && __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype_7_cython_6cygrpc___pyx_scope_struct_54_wait_for_termination->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+  }
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg_spec, NULL); if (unlikely(!__pyx_ptype___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg)) __PYX_ERR(10, 66, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg_spec, __pyx_ptype___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg) < 0) __PYX_ERR(10, 66, __pyx_L1_error)
+  #else
+  __pyx_ptype___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg = &__pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg) < 0) __PYX_ERR(10, 66, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg->tp_dictoffset && __pyx_ptype___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen_LatentEventArg__rParen_to_py_16latent_event_arg->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+  }
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_ = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py__spec, NULL); if (unlikely(!__pyx_ptype___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_)) __PYX_ERR(10, 66, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py__spec, __pyx_ptype___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_) < 0) __PYX_ERR(10, 66, __pyx_L1_error)
+  #else
+  __pyx_ptype___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_ = &__pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_) < 0) __PYX_ERR(10, 66, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_->tp_dictoffset && __pyx_ptype___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParen__rParen_to_py_->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+  }
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args_spec, NULL); if (unlikely(!__pyx_ptype___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args)) __PYX_ERR(10, 66, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args_spec, __pyx_ptype___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args) < 0) __PYX_ERR(10, 66, __pyx_L1_error)
+  #else
+  __pyx_ptype___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args = &__pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args) < 0) __PYX_ERR(10, 66, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args->tp_dictoffset && __pyx_ptype___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_object__lParenobject__comma_tuple__rParen_to_py_2cb_4args->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+  }
+  #endif
+  #if CYTHON_USE_TYPE_SPECS
+  __pyx_ptype___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_ = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py__spec, NULL); if (unlikely(!__pyx_ptype___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_)) __PYX_ERR(10, 66, __pyx_L1_error)
+  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py__spec, __pyx_ptype___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_) < 0) __PYX_ERR(10, 66, __pyx_L1_error)
+  #else
+  __pyx_ptype___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_ = &__pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  #endif
+  #if !CYTHON_USE_TYPE_SPECS
+  if (__Pyx_PyType_Ready(__pyx_ptype___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_) < 0) __PYX_ERR(10, 66, __pyx_L1_error)
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  __pyx_ptype___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_->tp_print = 0;
+  #endif
+  #if !CYTHON_COMPILING_IN_LIMITED_API
+  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_->tp_dictoffset && __pyx_ptype___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_->tp_getattro == PyObject_GenericGetAttr)) {
+    __pyx_ptype___pyx_scope_struct____Pyx_CFunc_7_cython_6cygrpc_void__lParen__rParennoexcept__space_nogil_to_py_->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+  }
+  #endif
+  __Pyx_RefNannyFinishContext();
+  return 0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __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(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_t_1)) __PYX_ERR(37, 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(37, 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(38, 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(38, 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(39, 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(39, 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_cygrpc(PyObject* module); /*proto*/
+static PyModuleDef_Slot __pyx_moduledef_slots[] = {
+  {Py_mod_create, (void*)__pyx_pymod_create},
+  {Py_mod_exec, (void*)__pyx_pymod_exec_cygrpc},
+  {0, NULL}
+};
+#endif
+
+#ifdef __cplusplus
+namespace {
+  struct PyModuleDef __pyx_moduledef =
+  #else
+  static struct PyModuleDef __pyx_moduledef =
+  #endif
+  {
+      PyModuleDef_HEAD_INIT,
+      "cygrpc",
+      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 initcygrpc(void) CYTHON_SMALL_CODE; /*proto*/
+__Pyx_PyMODINIT_FUNC initcygrpc(void)
+#else
+__Pyx_PyMODINIT_FUNC PyInit_cygrpc(void) CYTHON_SMALL_CODE; /*proto*/
+__Pyx_PyMODINIT_FUNC PyInit_cygrpc(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_cygrpc(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_t_5;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  int __pyx_t_8;
+  PyObject *__pyx_t_9 = NULL;
+  int __pyx_t_10;
+  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 'cygrpc' 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("cygrpc", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m);
+  if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error)
+  #elif CYTHON_USE_MODULE_STATE
+  __pyx_t_1 = PyModule_Create(&__pyx_moduledef); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 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 "cygrpc" pseudovariable */
+    if (unlikely((add_module_result < 0))) __PYX_ERR(0, 1, __pyx_L1_error)
+    pystate_addmodule_run = 1;
+  }
+  #else
+  __pyx_m = PyModule_Create(&__pyx_moduledef);
+  if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error)
+  #endif
+  #endif
+  CYTHON_UNUSED_VAR(__pyx_t_1);
+  __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error)
+  Py_INCREF(__pyx_d);
+  __pyx_b = __Pyx_PyImport_AddModuleRef(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error)
+  __pyx_cython_runtime = __Pyx_PyImport_AddModuleRef((const char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error)
+  if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 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_cygrpc(void)", 0);
+  if (__Pyx_check_binary_version(__PYX_LIMITED_VERSION_HEX, __Pyx_get_runtime_version(), CYTHON_COMPILING_IN_LIMITED_API) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  #ifdef __Pxy_PyFrame_Initialize_Offsets
+  __Pxy_PyFrame_Initialize_Offsets();
+  #endif
+  __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error)
+  __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error)
+  __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error)
+  #ifdef __Pyx_CyFunction_USED
+  if (__pyx_CyFunction_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  #endif
+  #ifdef __Pyx_FusedFunction_USED
+  if (__pyx_FusedFunction_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  #endif
+  #ifdef __Pyx_Coroutine_USED
+  if (__pyx_Coroutine_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  #endif
+  #ifdef __Pyx_Generator_USED
+  if (__pyx_Generator_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  #endif
+  #ifdef __Pyx_AsyncGen_USED
+  if (__pyx_AsyncGen_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  #endif
+  #ifdef __Pyx_StopAsyncIteration_USED
+  if (__pyx_StopAsyncIteration_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  #endif
+  /*--- Library function declarations ---*/
+  /*--- Threads initialization code ---*/
+  #if defined(WITH_THREAD) && PY_VERSION_HEX < 0x030700F0 && defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
+  PyEval_InitThreads();
+  #endif
+  /*--- Initialize various global constants etc. ---*/
+  if (__Pyx_InitConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  stringtab_initialized = 1;
+  if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT)
+  if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  #endif
+  if (__pyx_module_is_main__cython__cygrpc) {
+    if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name_2, __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  }
+  #if PY_MAJOR_VERSION >= 3
+  {
+    PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error)
+    if (!PyDict_GetItemString(modules, "_cython.cygrpc")) {
+      if (unlikely((PyDict_SetItemString(modules, "_cython.cygrpc", __pyx_m) < 0))) __PYX_ERR(0, 1, __pyx_L1_error)
+    }
+  }
+  #endif
+  /*--- Builtin init code ---*/
+  if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  /*--- Constants init code ---*/
+  if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  /*--- Global type/function init code ---*/
+  (void)__Pyx_modinit_global_init_code();
+  if (unlikely((__Pyx_modinit_variable_export_code() < 0))) __PYX_ERR(0, 1, __pyx_L1_error)
+  if (unlikely((__Pyx_modinit_function_export_code() < 0))) __PYX_ERR(0, 1, __pyx_L1_error)
+  if (unlikely((__Pyx_modinit_type_init_code() < 0))) __PYX_ERR(0, 1, __pyx_L1_error)
+  if (unlikely((__Pyx_modinit_type_import_code() < 0))) __PYX_ERR(0, 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(0, 1, __pyx_L1_error)
+  #endif
+
+  /* "_cython/cygrpc.pyx":18
+ * cimport cpython
+ * 
+ * import logging             # <<<<<<<<<<<<<<
+ * import os
+ * import sys
+ */
+  __pyx_t_2 = __Pyx_ImportDottedModule(__pyx_n_s_logging, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 18, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_logging, __pyx_t_2) < 0) __PYX_ERR(0, 18, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "_cython/cygrpc.pyx":19
+ * 
+ * import logging
+ * import os             # <<<<<<<<<<<<<<
+ * import sys
+ * import threading
+ */
+  __pyx_t_2 = __Pyx_ImportDottedModule(__pyx_n_s_os, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 19, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_os, __pyx_t_2) < 0) __PYX_ERR(0, 19, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "_cython/cygrpc.pyx":20
+ * import logging
+ * import os
+ * import sys             # <<<<<<<<<<<<<<
+ * import threading
+ * import time
+ */
+  __pyx_t_2 = __Pyx_ImportDottedModule(__pyx_n_s_sys, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 20, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_sys, __pyx_t_2) < 0) __PYX_ERR(0, 20, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "_cython/cygrpc.pyx":21
+ * import os
+ * import sys
+ * import threading             # <<<<<<<<<<<<<<
+ * import time
+ * 
+ */
+  __pyx_t_2 = __Pyx_ImportDottedModule(__pyx_n_s_threading, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 21, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_threading, __pyx_t_2) < 0) __PYX_ERR(0, 21, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "_cython/cygrpc.pyx":22
+ * import sys
+ * import threading
+ * import time             # <<<<<<<<<<<<<<
+ * 
+ * import grpc
+ */
+  __pyx_t_2 = __Pyx_ImportDottedModule(__pyx_n_s_time, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 22, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_time, __pyx_t_2) < 0) __PYX_ERR(0, 22, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "_cython/cygrpc.pyx":24
+ * import time
+ * 
+ * import grpc             # <<<<<<<<<<<<<<
+ * 
+ * try:
+ */
+  __pyx_t_2 = __Pyx_ImportDottedModule(__pyx_n_s_grpc, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 24, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_grpc, __pyx_t_2) < 0) __PYX_ERR(0, 24, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "_cython/cygrpc.pyx":26
+ * import grpc
+ * 
+ * try:             # <<<<<<<<<<<<<<
+ *     import asyncio
+ * except ImportError:
+ */
+  {
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_3, &__pyx_t_4);
+    __Pyx_XGOTREF(__pyx_t_1);
+    __Pyx_XGOTREF(__pyx_t_3);
+    __Pyx_XGOTREF(__pyx_t_4);
+    /*try:*/ {
+
+      /* "_cython/cygrpc.pyx":27
+ * 
+ * try:
+ *     import asyncio             # <<<<<<<<<<<<<<
+ * except ImportError:
+ *     # TODO(https://github.com/grpc/grpc/issues/19728) Improve how Aio Cython is
+ */
+      __pyx_t_2 = __Pyx_patch_asyncio(__Pyx_ImportDottedModule(__pyx_n_s_asyncio, NULL)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 27, __pyx_L2_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      if (PyDict_SetItem(__pyx_d, __pyx_n_s_asyncio, __pyx_t_2) < 0) __PYX_ERR(0, 27, __pyx_L2_error)
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+      /* "_cython/cygrpc.pyx":26
+ * import grpc
+ * 
+ * try:             # <<<<<<<<<<<<<<
+ *     import asyncio
+ * except ImportError:
+ */
+    }
+    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+    goto __pyx_L7_try_end;
+    __pyx_L2_error:;
+    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+    /* "_cython/cygrpc.pyx":28
+ * try:
+ *     import asyncio
+ * except ImportError:             # <<<<<<<<<<<<<<
+ *     # TODO(https://github.com/grpc/grpc/issues/19728) Improve how Aio Cython is
+ *     # distributed without breaking none compatible Python versions. For now, if
+ */
+    __pyx_t_5 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ImportError);
+    if (__pyx_t_5) {
+      __Pyx_ErrRestore(0,0,0);
+      goto __pyx_L3_exception_handled;
+    }
+    goto __pyx_L4_except_error;
+
+    /* "_cython/cygrpc.pyx":26
+ * import grpc
+ * 
+ * try:             # <<<<<<<<<<<<<<
+ *     import asyncio
+ * except ImportError:
+ */
+    __pyx_L4_except_error:;
+    __Pyx_XGIVEREF(__pyx_t_1);
+    __Pyx_XGIVEREF(__pyx_t_3);
+    __Pyx_XGIVEREF(__pyx_t_4);
+    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_3, __pyx_t_4);
+    goto __pyx_L1_error;
+    __pyx_L3_exception_handled:;
+    __Pyx_XGIVEREF(__pyx_t_1);
+    __Pyx_XGIVEREF(__pyx_t_3);
+    __Pyx_XGIVEREF(__pyx_t_4);
+    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_3, __pyx_t_4);
+    __pyx_L7_try_end:;
+  }
+
+  /* "_cython/cygrpc.pyx":35
+ * 
+ * # The only copy of Python logger for the Cython extension
+ * _LOGGER = logging.getLogger(__name__)             # <<<<<<<<<<<<<<
+ * 
+ * # TODO(atash): figure out why the coverage tool gets confused about the Cython
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_logging); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 35, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_getLogger); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 35, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_name_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 35, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 35, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_LOGGER, __pyx_t_7) < 0) __PYX_ERR(0, 35, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "(tree fragment)":1
+ * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
+ *     raise TypeError, "self.arg cannot be converted to a Python object for pickling"
+ * def __setstate_cython__(self, __pyx_state):
+ */
+  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_15_GrpcArgWrapper_1__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_GrpcArgWrapper___reduce_cython, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__109)); if (unlikely(!__pyx_t_7)) __PYX_ERR(10, 1, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_7) < 0) __PYX_ERR(10, 1, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "(tree fragment)":3
+ * def __reduce_cython__(self):
+ *     raise TypeError, "self.arg cannot be converted to a Python object for pickling"
+ * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
+ *     raise TypeError, "self.arg cannot be converted to a Python object for pickling"
+ */
+  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_15_GrpcArgWrapper_3__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_GrpcArgWrapper___setstate_cytho, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__111)); if (unlikely(!__pyx_t_7)) __PYX_ERR(10, 3, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_7) < 0) __PYX_ERR(10, 3, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "(tree fragment)":1
+ * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
+ *     raise TypeError, "self.c_argument cannot be converted to a Python object for pickling"
+ * def __setstate_cython__(self, __pyx_state):
+ */
+  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_11_ChannelArg_1__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ChannelArg___reduce_cython, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__112)); if (unlikely(!__pyx_t_7)) __PYX_ERR(10, 1, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_7) < 0) __PYX_ERR(10, 1, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "(tree fragment)":3
+ * def __reduce_cython__(self):
+ *     raise TypeError, "self.c_argument cannot be converted to a Python object for pickling"
+ * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
+ *     raise TypeError, "self.c_argument cannot be converted to a Python object for pickling"
+ */
+  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_11_ChannelArg_3__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ChannelArg___setstate_cython, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__113)); if (unlikely(!__pyx_t_7)) __PYX_ERR(10, 3, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_7) < 0) __PYX_ERR(10, 3, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "(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_7 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_12_ChannelArgs_5__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ChannelArgs___reduce_cython, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__114)); if (unlikely(!__pyx_t_7)) __PYX_ERR(10, 1, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_7) < 0) __PYX_ERR(10, 1, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 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_7 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_12_ChannelArgs_7__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ChannelArgs___setstate_cython, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__115)); if (unlikely(!__pyx_t_7)) __PYX_ERR(10, 3, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_7) < 0) __PYX_ERR(10, 3, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":24
+ *     self.references = []
+ * 
+ *   def _start_batch(self, operations, tag, retain_self):             # <<<<<<<<<<<<<<
+ *     if not self.is_valid:
+ *       raise ValueError("invalid call object cannot be used from Python")
+ */
+  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_4Call_3_start_batch, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Call__start_batch, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__117)); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 24, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_Call, __pyx_n_s_start_batch, __pyx_t_7) < 0) __PYX_ERR(4, 24, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_Call);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":38
+ *     return error
+ * 
+ *   def start_client_batch(self, operations, tag):             # <<<<<<<<<<<<<<
+ *     # We don't reference this call in the operations tag because
+ *     # it should be cancelled when it goes out of scope
+ */
+  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_4Call_5start_client_batch, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Call_start_client_batch, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__119)); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 38, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_Call, __pyx_n_s_start_client_batch, __pyx_t_7) < 0) __PYX_ERR(4, 38, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_Call);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":43
+ *     return self._start_batch(operations, tag, False)
+ * 
+ *   def start_server_batch(self, operations, tag):             # <<<<<<<<<<<<<<
+ *     return self._start_batch(operations, tag, True)
+ * 
+ */
+  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_4Call_7start_server_batch, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Call_start_server_batch, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__120)); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 43, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_Call, __pyx_n_s_start_server_batch, __pyx_t_7) < 0) __PYX_ERR(4, 43, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_Call);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":47
+ * 
+ *   def cancel(
+ *       self, grpc_status_code error_code=GRPC_STATUS__DO_NOT_USE,             # <<<<<<<<<<<<<<
+ *       details=None):
+ *     details = str_to_bytes(details)
+ */
+  __pyx_k__9 = GRPC_STATUS__DO_NOT_USE;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":46
+ *     return self._start_batch(operations, tag, True)
+ * 
+ *   def cancel(             # <<<<<<<<<<<<<<
+ *       self, grpc_status_code error_code=GRPC_STATUS__DO_NOT_USE,
+ *       details=None):
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_grpc_status_code(GRPC_STATUS__DO_NOT_USE); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 47, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":48
+ *   def cancel(
+ *       self, grpc_status_code error_code=GRPC_STATUS__DO_NOT_USE,
+ *       details=None):             # <<<<<<<<<<<<<<
+ *     details = str_to_bytes(details)
+ *     if not self.is_valid:
+ */
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 46, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_7);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_7)) __PYX_ERR(4, 46, __pyx_L1_error);
+  __Pyx_INCREF(Py_None);
+  __Pyx_GIVEREF(Py_None);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, Py_None)) __PYX_ERR(4, 46, __pyx_L1_error);
+  __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":46
+ *     return self._start_batch(operations, tag, True)
+ * 
+ *   def cancel(             # <<<<<<<<<<<<<<
+ *       self, grpc_status_code error_code=GRPC_STATUS__DO_NOT_USE,
+ *       details=None):
+ */
+  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_4Call_9cancel, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Call_cancel, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__122)); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 46, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_7, __pyx_t_2);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_Call, __pyx_n_s_cancel, __pyx_t_7) < 0) __PYX_ERR(4, 46, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_Call);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":69
+ *       return result
+ * 
+ *   def set_credentials(self, CallCredentials call_credentials not None):             # <<<<<<<<<<<<<<
+ *     cdef grpc_call_credentials *c_call_credentials = call_credentials.c()
+ *     cdef grpc_call_error call_error = grpc_call_set_credentials(
+ */
+  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_4Call_11set_credentials, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Call_set_credentials, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__124)); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 69, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_Call, __pyx_n_s_set_credentials, __pyx_t_7) < 0) __PYX_ERR(4, 69, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_Call);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":76
+ *     return call_error
+ * 
+ *   def peer(self):             # <<<<<<<<<<<<<<
+ *     cdef char *peer = NULL
+ *     with nogil:
+ */
+  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_4Call_13peer, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Call_peer, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__126)); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 76, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_Call, __pyx_n_s_peer, __pyx_t_7) < 0) __PYX_ERR(4, 76, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_Call);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":96
+ *     return self.c_call != NULL
+ * 
+ *   def _custom_op_on_c_call(self, int op):             # <<<<<<<<<<<<<<
+ *     return _custom_op_on_c_call(op, self.c_call)
+ */
+  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_4Call_17_custom_op_on_c_call, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Call__custom_op_on_c_call, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__128)); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 96, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_Call, __pyx_n_s_custom_op_on_c_call, __pyx_t_7) < 0) __PYX_ERR(4, 96, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_Call);
+
+  /* "(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_7 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_4Call_19__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Call___reduce_cython, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__129)); if (unlikely(!__pyx_t_7)) __PYX_ERR(10, 1, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_7) < 0) __PYX_ERR(10, 1, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 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_7 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_4Call_21__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Call___setstate_cython, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__130)); if (unlikely(!__pyx_t_7)) __PYX_ERR(10, 3, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_7) < 0) __PYX_ERR(10, 3, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":15
+ * # limitations under the License.
+ * 
+ * from grpc import _observability             # <<<<<<<<<<<<<<
+ * 
+ * _INTERNAL_CALL_ERROR_MESSAGE_FORMAT = (
+ */
+  __pyx_t_7 = PyList_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(12, 15, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  __Pyx_INCREF(__pyx_n_s_observability);
+  __Pyx_GIVEREF(__pyx_n_s_observability);
+  if (__Pyx_PyList_SET_ITEM(__pyx_t_7, 0, __pyx_n_s_observability)) __PYX_ERR(12, 15, __pyx_L1_error);
+  __pyx_t_2 = __Pyx_Import(__pyx_n_s_grpc, __pyx_t_7, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 15, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  __pyx_t_7 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_observability); if (unlikely(!__pyx_t_7)) __PYX_ERR(12, 15, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_observability, __pyx_t_7) < 0) __PYX_ERR(12, 15, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":18
+ * 
+ * _INTERNAL_CALL_ERROR_MESSAGE_FORMAT = (
+ *     'Internal gRPC call error %d. ' +             # <<<<<<<<<<<<<<
+ *     'Please report to https://github.com/grpc/grpc/issues')
+ * 
+ */
+  __pyx_t_2 = __Pyx_PyStr_Concat(__pyx_kp_s_Internal_gRPC_call_error_d, __pyx_kp_s_Please_report_to_https_github_co); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 18, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_INTERNAL_CALL_ERROR_MESSAGE_FOR, __pyx_t_2) < 0) __PYX_ERR(12, 17, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "(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_7_cython_6cygrpc_10_CallState_3__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_CallState___reduce_cython, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__131)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 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_7_cython_6cygrpc_10_CallState_5__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_CallState___setstate_cython, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__132)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 3, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "(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_7_cython_6cygrpc_13_ChannelState_3__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ChannelState___reduce_cython, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__133)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 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_7_cython_6cygrpc_13_ChannelState_5__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ChannelState___setstate_cython, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__134)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 3, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "(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_7_cython_6cygrpc_10CallHandle_5__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_CallHandle___reduce_cython, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__135)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 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_7_cython_6cygrpc_10CallHandle_7__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_CallHandle___setstate_cython, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__136)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 3, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":328
+ *     self._call_state = call_state
+ * 
+ *   def operate(self, operations, tag):             # <<<<<<<<<<<<<<
+ *     return _operate_from_integrated_call(
+ *         self._channel_state, self._call_state, operations, tag)
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_14IntegratedCall_3operate, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_IntegratedCall_operate, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__137)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 328, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_IntegratedCall, __pyx_n_s_operate, __pyx_t_2) < 0) __PYX_ERR(12, 328, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_IntegratedCall);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":332
+ *         self._channel_state, self._call_state, operations, tag)
+ * 
+ *   def cancel(self, code, details):             # <<<<<<<<<<<<<<
+ *     _cancel(self._channel_state, self._call_state, code, details)
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_14IntegratedCall_5cancel, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_IntegratedCall_cancel, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__139)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 332, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_IntegratedCall, __pyx_n_s_cancel, __pyx_t_2) < 0) __PYX_ERR(12, 332, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_IntegratedCall);
+
+  /* "(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_7_cython_6cygrpc_14IntegratedCall_7__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_IntegratedCall___reduce_cython, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__140)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 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_7_cython_6cygrpc_14IntegratedCall_9__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_IntegratedCall___setstate_cython, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__141)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 3, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":377
+ *     self._call_state = call_state
+ * 
+ *   def operate(self, operations, tag):             # <<<<<<<<<<<<<<
+ *     return _operate_from_segregated_call(
+ *         self._channel_state, self._call_state, operations, tag)
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_14SegregatedCall_3operate, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_SegregatedCall_operate, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__142)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 377, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_SegregatedCall, __pyx_n_s_operate, __pyx_t_2) < 0) __PYX_ERR(12, 377, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_SegregatedCall);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":381
+ *         self._channel_state, self._call_state, operations, tag)
+ * 
+ *   def cancel(self, code, details):             # <<<<<<<<<<<<<<
+ *     _cancel(self._channel_state, self._call_state, code, details)
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_14SegregatedCall_5cancel, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_SegregatedCall_cancel, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__143)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 381, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_SegregatedCall, __pyx_n_s_cancel, __pyx_t_2) < 0) __PYX_ERR(12, 381, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_SegregatedCall);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":384
+ *     _cancel(self._channel_state, self._call_state, code, details)
+ * 
+ *   def next_event(self):             # <<<<<<<<<<<<<<
+ *     def on_success(tag):
+ *       _process_segregated_call_tag(
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_14SegregatedCall_7next_event, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_SegregatedCall_next_event, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__145)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 384, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_SegregatedCall, __pyx_n_s_next_event, __pyx_t_2) < 0) __PYX_ERR(12, 384, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_SegregatedCall);
+
+  /* "(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_7_cython_6cygrpc_14SegregatedCall_9__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_SegregatedCall___reduce_cython, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__146)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 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_7_cython_6cygrpc_14SegregatedCall_11__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_SegregatedCall___setstate_cython, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__147)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 3, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":520
+ *     grpc_channel_credentials_release(c_channel_credentials)
+ * 
+ *   def target(self):             # <<<<<<<<<<<<<<
+ *     cdef char *c_target
+ *     with self._state.condition:
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_7Channel_3target, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Channel_target, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__149)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 520, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_Channel, __pyx_n_s_target, __pyx_t_2) < 0) __PYX_ERR(12, 520, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_Channel);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":528
+ *       return target
+ * 
+ *   def integrated_call(             # <<<<<<<<<<<<<<
+ *       self, int flags, method, host, object deadline, object metadata,
+ *       CallCredentials credentials, operationses_and_tags,
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_7Channel_5integrated_call, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Channel_integrated_call, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__151)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 528, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__152);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_Channel, __pyx_n_s_integrated_call, __pyx_t_2) < 0) __PYX_ERR(12, 528, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_Channel);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":536
+ *         operationses_and_tags, context, registered_call_handle)
+ * 
+ *   def next_call_event(self):             # <<<<<<<<<<<<<<
+ *     def on_success(tag):
+ *       if tag is not None:
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_7Channel_7next_call_event, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Channel_next_call_event, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__154)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 536, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_Channel, __pyx_n_s_next_call_event, __pyx_t_2) < 0) __PYX_ERR(12, 536, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_Channel);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":550
+ *                             on_success, None, queue_deadline)
+ * 
+ *   def segregated_call(             # <<<<<<<<<<<<<<
+ *       self, int flags, method, host, object deadline, object metadata,
+ *       CallCredentials credentials, operationses_and_tags,
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_7Channel_9segregated_call, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Channel_segregated_call, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__155)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 550, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__152);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_Channel, __pyx_n_s_segregated_call, __pyx_t_2) < 0) __PYX_ERR(12, 550, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_Channel);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":558
+ *         operationses_and_tags, context, registered_call_handle)
+ * 
+ *   def check_connectivity_state(self, bint try_to_connect):             # <<<<<<<<<<<<<<
+ *     with self._state.condition:
+ *       if self._state.open:
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_7Channel_11check_connectivity_state, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Channel_check_connectivity_state, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__157)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 558, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_Channel, __pyx_n_s_check_connectivity_state, __pyx_t_2) < 0) __PYX_ERR(12, 558, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_Channel);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":566
+ *         raise ValueError('Cannot invoke RPC: %s' % self._state.closed_reason)
+ * 
+ *   def watch_connectivity_state(             # <<<<<<<<<<<<<<
+ *       self, grpc_connectivity_state last_observed_state, object deadline):
+ *     return _watch_connectivity_state(self._state, last_observed_state, deadline)
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_7Channel_13watch_connectivity_state, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Channel_watch_connectivity_state, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__159)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 566, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_Channel, __pyx_n_s_watch_connectivity_state, __pyx_t_2) < 0) __PYX_ERR(12, 566, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_Channel);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":570
+ *     return _watch_connectivity_state(self._state, last_observed_state, deadline)
+ * 
+ *   def close(self, code, details):             # <<<<<<<<<<<<<<
+ *     _close(self, code, details, False)
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_7Channel_15close, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Channel_close, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__160)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 570, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_Channel, __pyx_n_s_close, __pyx_t_2) < 0) __PYX_ERR(12, 570, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_Channel);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":573
+ *     _close(self, code, details, False)
+ * 
+ *   def close_on_fork(self, code, details):             # <<<<<<<<<<<<<<
+ *     _close(self, code, details, True)
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_7Channel_17close_on_fork, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Channel_close_on_fork, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__161)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 573, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_Channel, __pyx_n_s_close_on_fork_2, __pyx_t_2) < 0) __PYX_ERR(12, 573, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_Channel);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":576
+ *     _close(self, code, details, True)
+ * 
+ *   def get_registered_call_handle(self, method):             # <<<<<<<<<<<<<<
+ *     """
+ *     Get or registers a call handler for a method.
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_7Channel_19get_registered_call_handle, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Channel_get_registered_call_hand, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__163)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 576, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_Channel, __pyx_n_s_get_registered_call_handle, __pyx_t_2) < 0) __PYX_ERR(12, 576, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_Channel);
+
+  /* "(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_7_cython_6cygrpc_7Channel_21__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Channel___reduce_cython, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__164)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 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_7_cython_6cygrpc_7Channel_23__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Channel___setstate_cython, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__165)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 3, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":16
+ * 
+ * 
+ * def channelz_get_top_channels(start_channel_id):             # <<<<<<<<<<<<<<
+ *     cdef char *c_returned_str = grpc_channelz_get_top_channels(
+ *         start_channel_id,
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_1channelz_get_top_channels, 0, __pyx_n_s_channelz_get_top_channels, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__167)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 16, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_channelz_get_top_channels, __pyx_t_2) < 0) __PYX_ERR(13, 16, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":25
+ *     return c_returned_str
+ * 
+ * def channelz_get_servers(start_server_id):             # <<<<<<<<<<<<<<
+ *     cdef char *c_returned_str = grpc_channelz_get_servers(start_server_id)
+ *     if c_returned_str == NULL:
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_3channelz_get_servers, 0, __pyx_n_s_channelz_get_servers, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__169)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 25, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_channelz_get_servers, __pyx_t_2) < 0) __PYX_ERR(13, 25, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":32
+ *     return c_returned_str
+ * 
+ * def channelz_get_server(server_id):             # <<<<<<<<<<<<<<
+ *     cdef char *c_returned_str = grpc_channelz_get_server(server_id)
+ *     if c_returned_str == NULL:
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_5channelz_get_server, 0, __pyx_n_s_channelz_get_server, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__171)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 32, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_channelz_get_server, __pyx_t_2) < 0) __PYX_ERR(13, 32, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":39
+ *     return c_returned_str
+ * 
+ * def channelz_get_server_sockets(server_id, start_socket_id, max_results):             # <<<<<<<<<<<<<<
+ *     cdef char *c_returned_str = grpc_channelz_get_server_sockets(
+ *         server_id,
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_7channelz_get_server_sockets, 0, __pyx_n_s_channelz_get_server_sockets, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__173)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 39, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_channelz_get_server_sockets, __pyx_t_2) < 0) __PYX_ERR(13, 39, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":52
+ *     return c_returned_str
+ * 
+ * def channelz_get_channel(channel_id):             # <<<<<<<<<<<<<<
+ *     cdef char *c_returned_str = grpc_channelz_get_channel(channel_id)
+ *     if c_returned_str == NULL:
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_9channelz_get_channel, 0, __pyx_n_s_channelz_get_channel, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__175)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 52, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_channelz_get_channel, __pyx_t_2) < 0) __PYX_ERR(13, 52, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":59
+ *     return c_returned_str
+ * 
+ * def channelz_get_subchannel(subchannel_id):             # <<<<<<<<<<<<<<
+ *     cdef char *c_returned_str = grpc_channelz_get_subchannel(subchannel_id)
+ *     if c_returned_str == NULL:
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_11channelz_get_subchannel, 0, __pyx_n_s_channelz_get_subchannel, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__177)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 59, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_channelz_get_subchannel, __pyx_t_2) < 0) __PYX_ERR(13, 59, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":66
+ *     return c_returned_str
+ * 
+ * def channelz_get_socket(socket_id):             # <<<<<<<<<<<<<<
+ *     cdef char *c_returned_str = grpc_channelz_get_socket(socket_id)
+ *     if c_returned_str == NULL:
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_13channelz_get_socket, 0, __pyx_n_s_channelz_get_socket, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__179)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 66, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_channelz_get_socket, __pyx_t_2) < 0) __PYX_ERR(13, 66, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/csds.pyx.pxi":16
+ * 
+ * 
+ * def dump_xds_configs():             # <<<<<<<<<<<<<<
+ *     cdef grpc_slice client_config_in_slice
+ *     with nogil:
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_15dump_xds_configs, 0, __pyx_n_s_dump_xds_configs, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__181)); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 16, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_dump_xds_configs, __pyx_t_2) < 0) __PYX_ERR(14, 16, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":16
+ * 
+ * 
+ * def _spawn_callback_in_thread(cb_func, args):             # <<<<<<<<<<<<<<
+ *   t = ForkManagedThread(target=cb_func, args=args)
+ *   t.setDaemon(True)
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_17_spawn_callback_in_thread, 0, __pyx_n_s_spawn_callback_in_thread, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__183)); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 16, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_spawn_callback_in_thread, __pyx_t_2) < 0) __PYX_ERR(5, 16, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":21
+ *   t.start()
+ * 
+ * async_callback_func = _spawn_callback_in_thread             # <<<<<<<<<<<<<<
+ * 
+ * def set_async_callback_func(callback_func):
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_spawn_callback_in_thread); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 21, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_async_callback_func, __pyx_t_2) < 0) __PYX_ERR(5, 21, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":23
+ * async_callback_func = _spawn_callback_in_thread
+ * 
+ * def set_async_callback_func(callback_func):             # <<<<<<<<<<<<<<
+ *   global async_callback_func
+ *   async_callback_func = callback_func
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_19set_async_callback_func, 0, __pyx_n_s_set_async_callback_func, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__185)); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 23, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_async_callback_func, __pyx_t_2) < 0) __PYX_ERR(5, 23, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":27
+ *   async_callback_func = callback_func
+ * 
+ * def _spawn_callback_async(callback, args):             # <<<<<<<<<<<<<<
+ *   async_callback_func(callback, args)
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_21_spawn_callback_async, 0, __pyx_n_s_spawn_callback_async, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__187)); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 27, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_spawn_callback_async, __pyx_t_2) < 0) __PYX_ERR(5, 27, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "(tree fragment)":1
+ * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
+ *     raise TypeError, "self.c_credentials cannot be converted to a Python object for pickling"
+ * def __setstate_cython__(self, __pyx_state):
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_15CallCredentials_1__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_CallCredentials___reduce_cython, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__188)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 1, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "(tree fragment)":3
+ * def __reduce_cython__(self):
+ *     raise TypeError, "self.c_credentials cannot be converted to a Python object for pickling"
+ * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
+ *     raise TypeError, "self.c_credentials cannot be converted to a Python object for pickling"
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_15CallCredentials_3__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_CallCredentials___setstate_cytho, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__189)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 3, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "(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_7_cython_6cygrpc_29MetadataPluginCallCredentials_3__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_MetadataPluginCallCredentials_2, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__190)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 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_7_cython_6cygrpc_29MetadataPluginCallCredentials_5__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_MetadataPluginCallCredentials_3, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__191)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 3, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "(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_7_cython_6cygrpc_24CompositeCallCredentials_3__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_CompositeCallCredentials___reduc, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__192)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 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_7_cython_6cygrpc_24CompositeCallCredentials_5__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_CompositeCallCredentials___setst, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__193)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 3, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "(tree fragment)":1
+ * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
+ *     cdef tuple state
+ *     cdef object _dict
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_18ChannelCredentials_1__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ChannelCredentials___reduce_cyth, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__195)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 1, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_ChannelCredentials, __pyx_n_s_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(10, 1, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_ChannelCredentials);
+
+  /* "(tree fragment)":16
+ *     else:
+ *         return __pyx_unpickle_ChannelCredentials, (type(self), 0xe3b0c44, state)
+ * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
+ *     __pyx_unpickle_ChannelCredentials__set_state(self, __pyx_state)
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_18ChannelCredentials_3__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ChannelCredentials___setstate_cy, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__196)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 16, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_ChannelCredentials, __pyx_n_s_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(10, 16, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_ChannelCredentials);
+
+  /* "(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_7_cython_6cygrpc_18SSLSessionCacheLRU_7__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_SSLSessionCacheLRU___reduce_cyth, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__197)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 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_7_cython_6cygrpc_18SSLSessionCacheLRU_9__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_SSLSessionCacheLRU___setstate_cy, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__198)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 3, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "(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_7_cython_6cygrpc_21SSLChannelCredentials_3__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_SSLChannelCredentials___reduce_c, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__199)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 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_7_cython_6cygrpc_21SSLChannelCredentials_5__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_SSLChannelCredentials___setstate, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__200)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 3, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "(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_7_cython_6cygrpc_27CompositeChannelCredentials_3__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_CompositeChannelCredentials___re, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__201)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 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_7_cython_6cygrpc_27CompositeChannelCredentials_5__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_CompositeChannelCredentials___se, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__202)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 3, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "(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_7_cython_6cygrpc_21XDSChannelCredentials_3__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_XDSChannelCredentials___reduce_c, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__203)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 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_7_cython_6cygrpc_21XDSChannelCredentials_5__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_XDSChannelCredentials___setstate, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__204)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 3, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "(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_7_cython_6cygrpc_23ServerCertificateConfig_5__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ServerCertificateConfig___reduce, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__205)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 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_7_cython_6cygrpc_23ServerCertificateConfig_7__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ServerCertificateConfig___setsta, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__206)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 3, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "(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_7_cython_6cygrpc_17ServerCredentials_5__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ServerCredentials___reduce_cytho, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__207)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 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_7_cython_6cygrpc_17ServerCredentials_7__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ServerCredentials___setstate_cyt, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__208)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 3, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":257
+ *   return c_ssl_pem_key_cert_pairs
+ * 
+ * def server_credentials_ssl(pem_root_certs, pem_key_cert_pairs,             # <<<<<<<<<<<<<<
+ *                            bint force_client_auth):
+ *   pem_root_certs = str_to_bytes(pem_root_certs)
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_23server_credentials_ssl, 0, __pyx_n_s_server_credentials_ssl, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__210)); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 257, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_server_credentials_ssl, __pyx_t_2) < 0) __PYX_ERR(5, 257, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":282
+ *   return credentials
+ * 
+ * def server_certificate_config_ssl(pem_root_certs, pem_key_cert_pairs):             # <<<<<<<<<<<<<<
+ *   pem_root_certs = str_to_bytes(pem_root_certs)
+ *   pem_key_cert_pairs = list(pem_key_cert_pairs)
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_25server_certificate_config_ssl, 0, __pyx_n_s_server_certificate_config_ssl, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__212)); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 282, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_server_certificate_config_ssl, __pyx_t_2) < 0) __PYX_ERR(5, 282, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":296
+ *   return cert_config
+ * 
+ * def server_credentials_ssl_dynamic_cert_config(initial_cert_config,             # <<<<<<<<<<<<<<
+ *                                                cert_config_fetcher,
+ *                                                bint force_client_auth):
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_27server_credentials_ssl_dynamic_cert_config, 0, __pyx_n_s_server_credentials_ssl_dynamic_c, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__214)); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 296, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_server_credentials_ssl_dynamic_c, __pyx_t_2) < 0) __PYX_ERR(5, 296, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":356
+ * 
+ * 
+ * class LocalConnectionType:             # <<<<<<<<<<<<<<
+ *   uds = UDS
+ *   local_tcp = LOCAL_TCP
+ */
+  __pyx_t_2 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_LocalConnectionType, __pyx_n_s_LocalConnectionType, (PyObject *) NULL, __pyx_n_s_cython_cygrpc, (PyObject *) NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 356, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":357
+ * 
+ * class LocalConnectionType:
+ *   uds = UDS             # <<<<<<<<<<<<<<
+ *   local_tcp = LOCAL_TCP
+ * 
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_grpc_local_connect_type(UDS); if (unlikely(!__pyx_t_7)) __PYX_ERR(5, 357, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_uds, __pyx_t_7) < 0) __PYX_ERR(5, 357, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":358
+ * class LocalConnectionType:
+ *   uds = UDS
+ *   local_tcp = LOCAL_TCP             # <<<<<<<<<<<<<<
+ * 
+ * cdef class LocalChannelCredentials(ChannelCredentials):
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_grpc_local_connect_type(LOCAL_TCP); if (unlikely(!__pyx_t_7)) __PYX_ERR(5, 358, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_local_tcp, __pyx_t_7) < 0) __PYX_ERR(5, 358, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":356
+ * 
+ * 
+ * class LocalConnectionType:             # <<<<<<<<<<<<<<
+ *   uds = UDS
+ *   local_tcp = LOCAL_TCP
+ */
+  __pyx_t_7 = __Pyx_Py3ClassCreate(((PyObject*)&PyType_Type), __pyx_n_s_LocalConnectionType, __pyx_empty_tuple, __pyx_t_2, NULL, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(5, 356, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_LocalConnectionType, __pyx_t_7) < 0) __PYX_ERR(5, 356, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "(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_7_cython_6cygrpc_23LocalChannelCredentials_3__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_LocalChannelCredentials___reduce, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__215)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 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_7_cython_6cygrpc_23LocalChannelCredentials_5__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_LocalChannelCredentials___setsta, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__216)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 3, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":370
+ *     return grpc_local_credentials_create(local_connect_type)
+ * 
+ * def channel_credentials_local(grpc_local_connect_type local_connect_type):             # <<<<<<<<<<<<<<
+ *   return LocalChannelCredentials(local_connect_type)
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_29channel_credentials_local, 0, __pyx_n_s_channel_credentials_local, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__218)); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 370, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_channel_credentials_local, __pyx_t_2) < 0) __PYX_ERR(5, 370, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "(tree fragment)":1
+ * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
+ *     cdef tuple state
+ *     cdef object _dict
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_26InsecureChannelCredentials_1__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_InsecureChannelCredentials___red, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__219)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 1, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_InsecureChannelCredentials, __pyx_n_s_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(10, 1, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_InsecureChannelCredentials);
+
+  /* "(tree fragment)":16
+ *     else:
+ *         return __pyx_unpickle_InsecureChannelCredentials, (type(self), 0xe3b0c44, state)
+ * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
+ *     __pyx_unpickle_InsecureChannelCredentials__set_state(self, __pyx_state)
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_26InsecureChannelCredentials_3__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_InsecureChannelCredentials___set, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__220)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 16, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_InsecureChannelCredentials, __pyx_n_s_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(10, 16, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_InsecureChannelCredentials);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":378
+ *     return grpc_insecure_credentials_create()
+ * 
+ * def channel_credentials_insecure():             # <<<<<<<<<<<<<<
+ *   return InsecureChannelCredentials()
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_31channel_credentials_insecure, 0, __pyx_n_s_channel_credentials_insecure, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__221)); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 378, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_channel_credentials_insecure, __pyx_t_2) < 0) __PYX_ERR(5, 378, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":381
+ *   return InsecureChannelCredentials()
+ * 
+ * def server_credentials_local(grpc_local_connect_type local_connect_type):             # <<<<<<<<<<<<<<
+ *   cdef ServerCredentials credentials = ServerCredentials()
+ *   credentials.c_credentials = grpc_local_server_credentials_create(local_connect_type)
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_33server_credentials_local, 0, __pyx_n_s_server_credentials_local, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__223)); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 381, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_server_credentials_local, __pyx_t_2) < 0) __PYX_ERR(5, 381, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":386
+ *   return credentials
+ * 
+ * def xds_server_credentials(ServerCredentials fallback_credentials):             # <<<<<<<<<<<<<<
+ *   cdef ServerCredentials credentials = ServerCredentials()
+ *   credentials.c_credentials = grpc_xds_server_credentials_create(fallback_credentials.c_credentials)
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_35xds_server_credentials, 0, __pyx_n_s_xds_server_credentials, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__225)); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 386, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_xds_server_credentials, __pyx_t_2) < 0) __PYX_ERR(5, 386, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":394
+ *   return credentials
+ * 
+ * def insecure_server_credentials():             # <<<<<<<<<<<<<<
+ *   cdef ServerCredentials credentials = ServerCredentials()
+ *   credentials.c_credentials = grpc_insecure_server_credentials_create()
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_37insecure_server_credentials, 0, __pyx_n_s_insecure_server_credentials, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__227)); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 394, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_insecure_server_credentials, __pyx_t_2) < 0) __PYX_ERR(5, 394, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "(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_7_cython_6cygrpc_22ALTSChannelCredentials_5__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ALTSChannelCredentials___reduce, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__228)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 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_7_cython_6cygrpc_22ALTSChannelCredentials_7__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ALTSChannelCredentials___setstat, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__229)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 3, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":416
+ * 
+ * 
+ * def channel_credentials_alts(list service_accounts):             # <<<<<<<<<<<<<<
+ *   return ALTSChannelCredentials(service_accounts)
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_39channel_credentials_alts, 0, __pyx_n_s_channel_credentials_alts, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__231)); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 416, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_channel_credentials_alts, __pyx_t_2) < 0) __PYX_ERR(5, 416, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":420
+ * 
+ * 
+ * def server_credentials_alts():             # <<<<<<<<<<<<<<
+ *   cdef ServerCredentials credentials = ServerCredentials()
+ *   cdef grpc_alts_credentials_options* c_options = grpc_alts_credentials_server_options_create()
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_41server_credentials_alts, 0, __pyx_n_s_server_credentials_alts, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__233)); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 420, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_server_credentials_alts, __pyx_t_2) < 0) __PYX_ERR(5, 420, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "(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_7_cython_6cygrpc_31ComputeEngineChannelCredentials_3__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ComputeEngineChannelCredentials_2, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__234)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 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_7_cython_6cygrpc_31ComputeEngineChannelCredentials_5__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ComputeEngineChannelCredentials_3, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__235)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 3, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":445
+ * 
+ * 
+ * def channel_credentials_compute_engine(call_creds):             # <<<<<<<<<<<<<<
+ *   return ComputeEngineChannelCredentials(call_creds)
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_43channel_credentials_compute_engine, 0, __pyx_n_s_channel_credentials_compute_engi, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__237)); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 445, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_channel_credentials_compute_engi, __pyx_t_2) < 0) __PYX_ERR(5, 445, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":16
+ * 
+ * 
+ * g_interrupt_check_period_ms = 200             # <<<<<<<<<<<<<<
+ * 
+ * cdef grpc_event _next(grpc_completion_queue *c_completion_queue, deadline) except *:
+ */
+  __pyx_v_7_cython_6cygrpc_g_interrupt_check_period_ms = 0xC8;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":103
+ *     return event
+ * 
+ *   def _internal_poll(self, deadline):             # <<<<<<<<<<<<<<
+ *     return self._interpret_event(_next(self.c_completion_queue, deadline))
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_15CompletionQueue_3_internal_poll, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_CompletionQueue__internal_poll, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__239)); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 103, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_CompletionQueue, __pyx_n_s_internal_poll, __pyx_t_2) < 0) __PYX_ERR(15, 103, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_CompletionQueue);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":108
+ *   # We name this 'poll' to avoid problems with CPython's expectations for
+ *   # 'special' methods (like next and __next__).
+ *   def poll(self, deadline=None):             # <<<<<<<<<<<<<<
+ *     global g_gevent_activated
+ *     if g_gevent_activated:
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_15CompletionQueue_5poll, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_CompletionQueue_poll, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__240)); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 108, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__241);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_CompletionQueue, __pyx_n_s_poll, __pyx_t_2) < 0) __PYX_ERR(15, 108, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_CompletionQueue);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":115
+ *       return self._internal_poll(deadline)
+ * 
+ *   def shutdown(self):             # <<<<<<<<<<<<<<
+ *     with nogil:
+ *       grpc_completion_queue_shutdown(self.c_completion_queue)
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_15CompletionQueue_7shutdown, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_CompletionQueue_shutdown, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__242)); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 115, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_CompletionQueue, __pyx_n_s_shutdown, __pyx_t_2) < 0) __PYX_ERR(15, 115, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_CompletionQueue);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":120
+ *     self.is_shutting_down = True
+ * 
+ *   def clear(self):             # <<<<<<<<<<<<<<
+ *     if not self.is_shutting_down:
+ *       raise ValueError('queue must be shutting down to be cleared')
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_15CompletionQueue_9clear, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_CompletionQueue_clear, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__243)); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 120, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_CompletionQueue, __pyx_n_s_clear, __pyx_t_2) < 0) __PYX_ERR(15, 120, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_CompletionQueue);
+
+  /* "(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_7_cython_6cygrpc_15CompletionQueue_13__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_CompletionQueue___reduce_cython, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__244)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 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_7_cython_6cygrpc_15CompletionQueue_15__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_CompletionQueue___setstate_cytho, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__245)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 3, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "(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_7_cython_6cygrpc_17ConnectivityEvent_3__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ConnectivityEvent___reduce_cytho, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__246)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 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_7_cython_6cygrpc_17ConnectivityEvent_5__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ConnectivityEvent___setstate_cyt, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__247)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 3, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "(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_7_cython_6cygrpc_16RequestCallEvent_3__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_RequestCallEvent___reduce_cython, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__248)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 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_7_cython_6cygrpc_16RequestCallEvent_5__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_RequestCallEvent___setstate_cyth, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__249)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 3, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "(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_7_cython_6cygrpc_19BatchOperationEvent_3__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BatchOperationEvent___reduce_cyt, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__250)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 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_7_cython_6cygrpc_19BatchOperationEvent_5__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BatchOperationEvent___setstate_c, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__251)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 3, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "(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_7_cython_6cygrpc_19ServerShutdownEvent_3__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ServerShutdownEvent___reduce_cyt, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__252)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 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_7_cython_6cygrpc_19ServerShutdownEvent_5__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ServerShutdownEvent___setstate_c, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__253)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 3, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":15
+ * # limitations under the License.
+ * 
+ * import collections             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_2 = __Pyx_ImportDottedModule(__pyx_n_s_collections, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 15, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_collections, __pyx_t_2) < 0) __PYX_ERR(18, 15, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":18
+ * 
+ * 
+ * class InitialMetadataFlags:             # <<<<<<<<<<<<<<
+ *   used_mask = GRPC_INITIAL_METADATA_USED_MASK
+ *   wait_for_ready = GRPC_INITIAL_METADATA_WAIT_FOR_READY
+ */
+  __pyx_t_2 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_InitialMetadataFlags, __pyx_n_s_InitialMetadataFlags, (PyObject *) NULL, __pyx_n_s_cython_cygrpc, (PyObject *) NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 18, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":19
+ * 
+ * class InitialMetadataFlags:
+ *   used_mask = GRPC_INITIAL_METADATA_USED_MASK             # <<<<<<<<<<<<<<
+ *   wait_for_ready = GRPC_INITIAL_METADATA_WAIT_FOR_READY
+ *   wait_for_ready_explicitly_set = GRPC_INITIAL_METADATA_WAIT_FOR_READY_EXPLICITLY_SET
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_int(GRPC_INITIAL_METADATA_USED_MASK); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 19, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_used_mask, __pyx_t_7) < 0) __PYX_ERR(18, 19, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":20
+ * class InitialMetadataFlags:
+ *   used_mask = GRPC_INITIAL_METADATA_USED_MASK
+ *   wait_for_ready = GRPC_INITIAL_METADATA_WAIT_FOR_READY             # <<<<<<<<<<<<<<
+ *   wait_for_ready_explicitly_set = GRPC_INITIAL_METADATA_WAIT_FOR_READY_EXPLICITLY_SET
+ * 
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_int(GRPC_INITIAL_METADATA_WAIT_FOR_READY); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 20, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_wait_for_ready, __pyx_t_7) < 0) __PYX_ERR(18, 20, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":21
+ *   used_mask = GRPC_INITIAL_METADATA_USED_MASK
+ *   wait_for_ready = GRPC_INITIAL_METADATA_WAIT_FOR_READY
+ *   wait_for_ready_explicitly_set = GRPC_INITIAL_METADATA_WAIT_FOR_READY_EXPLICITLY_SET             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_int(GRPC_INITIAL_METADATA_WAIT_FOR_READY_EXPLICITLY_SET); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 21, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_wait_for_ready_explicitly_set, __pyx_t_7) < 0) __PYX_ERR(18, 21, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":18
+ * 
+ * 
+ * class InitialMetadataFlags:             # <<<<<<<<<<<<<<
+ *   used_mask = GRPC_INITIAL_METADATA_USED_MASK
+ *   wait_for_ready = GRPC_INITIAL_METADATA_WAIT_FOR_READY
+ */
+  __pyx_t_7 = __Pyx_Py3ClassCreate(((PyObject*)&PyType_Type), __pyx_n_s_InitialMetadataFlags, __pyx_empty_tuple, __pyx_t_2, NULL, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 18, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_InitialMetadataFlags, __pyx_t_7) < 0) __PYX_ERR(18, 18, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":24
+ * 
+ * 
+ * _Metadatum = collections.namedtuple('_Metadatum', ('key', 'value',))             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_collections); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 24, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_namedtuple); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 24, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_tuple__255, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 24, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Metadatum, __pyx_t_2) < 0) __PYX_ERR(18, 24, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "(tree fragment)":1
+ * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
+ *     raise TypeError, "self.c_op cannot be converted to a Python object for pickling"
+ * def __setstate_cython__(self, __pyx_state):
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_9Operation_1__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Operation___reduce_cython, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__256)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 1, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "(tree fragment)":3
+ * def __reduce_cython__(self):
+ *     raise TypeError, "self.c_op cannot be converted to a Python object for pickling"
+ * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
+ *     raise TypeError, "self.c_op cannot be converted to a Python object for pickling"
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_9Operation_3__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Operation___setstate_cython, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__257)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 3, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":31
+ *     self._flags = flags
+ * 
+ *   def type(self):             # <<<<<<<<<<<<<<
+ *     return GRPC_OP_SEND_INITIAL_METADATA
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_28SendInitialMetadataOperation_3type, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_SendInitialMetadataOperation_typ, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__258)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 31, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_SendInitialMetadataOperation, __pyx_n_s_type, __pyx_t_2) < 0) __PYX_ERR(19, 31, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_SendInitialMetadataOperation);
+
+  /* "(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_7_cython_6cygrpc_28SendInitialMetadataOperation_5__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_SendInitialMetadataOperation___r, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__259)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 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_7_cython_6cygrpc_28SendInitialMetadataOperation_7__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_SendInitialMetadataOperation___s, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__260)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 3, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":58
+ *     self._flags = flags
+ * 
+ *   def type(self):             # <<<<<<<<<<<<<<
+ *     return GRPC_OP_SEND_MESSAGE
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_20SendMessageOperation_3type, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_SendMessageOperation_type, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__261)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 58, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_SendMessageOperation, __pyx_n_s_type, __pyx_t_2) < 0) __PYX_ERR(19, 58, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_SendMessageOperation);
+
+  /* "(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_7_cython_6cygrpc_20SendMessageOperation_5__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_SendMessageOperation___reduce_cy, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__262)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 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_7_cython_6cygrpc_20SendMessageOperation_7__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_SendMessageOperation___setstate, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__263)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 3, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":80
+ *     self._flags = flags
+ * 
+ *   def type(self):             # <<<<<<<<<<<<<<
+ *     return GRPC_OP_SEND_CLOSE_FROM_CLIENT
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_28SendCloseFromClientOperation_3type, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_SendCloseFromClientOperation_typ, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__264)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 80, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_SendCloseFromClientOperation, __pyx_n_s_type, __pyx_t_2) < 0) __PYX_ERR(19, 80, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_SendCloseFromClientOperation);
+
+  /* "(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_7_cython_6cygrpc_28SendCloseFromClientOperation_5__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_SendCloseFromClientOperation___r, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__265)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 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_7_cython_6cygrpc_28SendCloseFromClientOperation_7__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_SendCloseFromClientOperation___s, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__266)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 3, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":99
+ *     self._flags = flags
+ * 
+ *   def type(self):             # <<<<<<<<<<<<<<
+ *     return GRPC_OP_SEND_STATUS_FROM_SERVER
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_29SendStatusFromServerOperation_3type, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_SendStatusFromServerOperation_ty, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__267)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 99, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_SendStatusFromServerOperation, __pyx_n_s_type, __pyx_t_2) < 0) __PYX_ERR(19, 99, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_SendStatusFromServerOperation);
+
+  /* "(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_7_cython_6cygrpc_29SendStatusFromServerOperation_5__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_SendStatusFromServerOperation_2, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__268)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 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_7_cython_6cygrpc_29SendStatusFromServerOperation_7__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_SendStatusFromServerOperation_3, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__269)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 3, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":127
+ *     self._flags = flags
+ * 
+ *   def type(self):             # <<<<<<<<<<<<<<
+ *     return GRPC_OP_RECV_INITIAL_METADATA
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_3type, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ReceiveInitialMetadataOperation_2, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__270)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 127, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_ReceiveInitialMetadataOperation, __pyx_n_s_type, __pyx_t_2) < 0) __PYX_ERR(19, 127, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_ReceiveInitialMetadataOperation);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":141
+ *     grpc_metadata_array_destroy(&self._c_initial_metadata)
+ * 
+ *   def initial_metadata(self):             # <<<<<<<<<<<<<<
+ *     return self._initial_metadata
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_5initial_metadata, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ReceiveInitialMetadataOperation_3, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__271)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 141, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_ReceiveInitialMetadataOperation, __pyx_n_s_initial_metadata, __pyx_t_2) < 0) __PYX_ERR(19, 141, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_ReceiveInitialMetadataOperation);
+
+  /* "(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_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_7__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ReceiveInitialMetadataOperation_4, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__272)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 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_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_9__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ReceiveInitialMetadataOperation_5, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__273)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 3, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":150
+ *     self._flags = flags
+ * 
+ *   def type(self):             # <<<<<<<<<<<<<<
+ *     return GRPC_OP_RECV_MESSAGE
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_23ReceiveMessageOperation_3type, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ReceiveMessageOperation_type, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__274)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 150, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_ReceiveMessageOperation, __pyx_n_s_type, __pyx_t_2) < 0) __PYX_ERR(19, 150, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_ReceiveMessageOperation);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":183
+ *       self._message = None
+ * 
+ *   def message(self):             # <<<<<<<<<<<<<<
+ *     return self._message
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_23ReceiveMessageOperation_5message, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ReceiveMessageOperation_message, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__275)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 183, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_ReceiveMessageOperation, __pyx_n_s_message, __pyx_t_2) < 0) __PYX_ERR(19, 183, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_ReceiveMessageOperation);
+
+  /* "(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_7_cython_6cygrpc_23ReceiveMessageOperation_7__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ReceiveMessageOperation___reduce, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__276)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 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_7_cython_6cygrpc_23ReceiveMessageOperation_9__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ReceiveMessageOperation___setsta, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__277)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 3, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":192
+ *     self._flags = flags
+ * 
+ *   def type(self):             # <<<<<<<<<<<<<<
+ *     return GRPC_OP_RECV_STATUS_ON_CLIENT
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_3type, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ReceiveStatusOnClientOperation_t, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__278)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 192, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_ReceiveStatusOnClientOperation, __pyx_n_s_type, __pyx_t_2) < 0) __PYX_ERR(19, 192, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_ReceiveStatusOnClientOperation);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":220
+ *       self._error_string = ""
+ * 
+ *   def trailing_metadata(self):             # <<<<<<<<<<<<<<
+ *     return self._trailing_metadata
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_5trailing_metadata, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ReceiveStatusOnClientOperation_t_2, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__279)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 220, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_ReceiveStatusOnClientOperation, __pyx_n_s_trailing_metadata, __pyx_t_2) < 0) __PYX_ERR(19, 220, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_ReceiveStatusOnClientOperation);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":223
+ *     return self._trailing_metadata
+ * 
+ *   def code(self):             # <<<<<<<<<<<<<<
+ *     return self._code
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_7code, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ReceiveStatusOnClientOperation_c, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__280)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 223, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_ReceiveStatusOnClientOperation, __pyx_n_s_code, __pyx_t_2) < 0) __PYX_ERR(19, 223, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_ReceiveStatusOnClientOperation);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":226
+ *     return self._code
+ * 
+ *   def details(self):             # <<<<<<<<<<<<<<
+ *     return self._details
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_9details, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ReceiveStatusOnClientOperation_d, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__281)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 226, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_ReceiveStatusOnClientOperation, __pyx_n_s_details, __pyx_t_2) < 0) __PYX_ERR(19, 226, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_ReceiveStatusOnClientOperation);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":229
+ *     return self._details
+ * 
+ *   def error_string(self):             # <<<<<<<<<<<<<<
+ *     return self._error_string
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_11error_string, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ReceiveStatusOnClientOperation_e, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__282)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 229, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_ReceiveStatusOnClientOperation, __pyx_n_s_error_string, __pyx_t_2) < 0) __PYX_ERR(19, 229, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_ReceiveStatusOnClientOperation);
+
+  /* "(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_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_13__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ReceiveStatusOnClientOperation_2, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__283)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 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_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_15__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ReceiveStatusOnClientOperation_3, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__284)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 3, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":238
+ *     self._flags = flags
+ * 
+ *   def type(self):             # <<<<<<<<<<<<<<
+ *     return GRPC_OP_RECV_CLOSE_ON_SERVER
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_3type, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ReceiveCloseOnServerOperation_ty, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__285)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 238, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_ReceiveCloseOnServerOperation, __pyx_n_s_type, __pyx_t_2) < 0) __PYX_ERR(19, 238, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_ReceiveCloseOnServerOperation);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":249
+ *     self._cancelled = bool(self._c_cancelled)
+ * 
+ *   def cancelled(self):             # <<<<<<<<<<<<<<
+ *     return self._cancelled
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_5cancelled, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ReceiveCloseOnServerOperation_ca, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__286)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 249, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_ReceiveCloseOnServerOperation, __pyx_n_s_cancelled, __pyx_t_2) < 0) __PYX_ERR(19, 249, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_ReceiveCloseOnServerOperation);
+
+  /* "(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_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_7__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ReceiveCloseOnServerOperation_2, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__287)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 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_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_9__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ReceiveCloseOnServerOperation_3, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__288)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 3, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/propagation_bits.pyx.pxi":15
+ * # limitations under the License.
+ * 
+ * class PropagationConstants:             # <<<<<<<<<<<<<<
+ *     GRPC_PROPAGATE_DEADLINE = _GRPC_PROPAGATE_DEADLINE
+ *     GRPC_PROPAGATE_CENSUS_STATS_CONTEXT = _GRPC_PROPAGATE_CENSUS_STATS_CONTEXT
+ */
+  __pyx_t_2 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_PropagationConstants, __pyx_n_s_PropagationConstants, (PyObject *) NULL, __pyx_n_s_cython_cygrpc, (PyObject *) NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(40, 15, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/propagation_bits.pyx.pxi":16
+ * 
+ * class PropagationConstants:
+ *     GRPC_PROPAGATE_DEADLINE = _GRPC_PROPAGATE_DEADLINE             # <<<<<<<<<<<<<<
+ *     GRPC_PROPAGATE_CENSUS_STATS_CONTEXT = _GRPC_PROPAGATE_CENSUS_STATS_CONTEXT
+ *     GRPC_PROPAGATE_CENSUS_TRACING_CONTEXT = _GRPC_PROPAGATE_CENSUS_TRACING_CONTEXT
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_int(GRPC_PROPAGATE_DEADLINE); if (unlikely(!__pyx_t_7)) __PYX_ERR(40, 16, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_GRPC_PROPAGATE_DEADLINE, __pyx_t_7) < 0) __PYX_ERR(40, 16, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/propagation_bits.pyx.pxi":17
+ * class PropagationConstants:
+ *     GRPC_PROPAGATE_DEADLINE = _GRPC_PROPAGATE_DEADLINE
+ *     GRPC_PROPAGATE_CENSUS_STATS_CONTEXT = _GRPC_PROPAGATE_CENSUS_STATS_CONTEXT             # <<<<<<<<<<<<<<
+ *     GRPC_PROPAGATE_CENSUS_TRACING_CONTEXT = _GRPC_PROPAGATE_CENSUS_TRACING_CONTEXT
+ *     GRPC_PROPAGATE_CANCELLATION = _GRPC_PROPAGATE_CANCELLATION
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_int(GRPC_PROPAGATE_CENSUS_STATS_CONTEXT); if (unlikely(!__pyx_t_7)) __PYX_ERR(40, 17, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_GRPC_PROPAGATE_CENSUS_STATS_CONT, __pyx_t_7) < 0) __PYX_ERR(40, 17, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/propagation_bits.pyx.pxi":18
+ *     GRPC_PROPAGATE_DEADLINE = _GRPC_PROPAGATE_DEADLINE
+ *     GRPC_PROPAGATE_CENSUS_STATS_CONTEXT = _GRPC_PROPAGATE_CENSUS_STATS_CONTEXT
+ *     GRPC_PROPAGATE_CENSUS_TRACING_CONTEXT = _GRPC_PROPAGATE_CENSUS_TRACING_CONTEXT             # <<<<<<<<<<<<<<
+ *     GRPC_PROPAGATE_CANCELLATION = _GRPC_PROPAGATE_CANCELLATION
+ *     GRPC_PROPAGATE_DEFAULTS = _GRPC_PROPAGATE_DEFAULTS
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_int(GRPC_PROPAGATE_CENSUS_TRACING_CONTEXT); if (unlikely(!__pyx_t_7)) __PYX_ERR(40, 18, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_GRPC_PROPAGATE_CENSUS_TRACING_CO, __pyx_t_7) < 0) __PYX_ERR(40, 18, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/propagation_bits.pyx.pxi":19
+ *     GRPC_PROPAGATE_CENSUS_STATS_CONTEXT = _GRPC_PROPAGATE_CENSUS_STATS_CONTEXT
+ *     GRPC_PROPAGATE_CENSUS_TRACING_CONTEXT = _GRPC_PROPAGATE_CENSUS_TRACING_CONTEXT
+ *     GRPC_PROPAGATE_CANCELLATION = _GRPC_PROPAGATE_CANCELLATION             # <<<<<<<<<<<<<<
+ *     GRPC_PROPAGATE_DEFAULTS = _GRPC_PROPAGATE_DEFAULTS
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_int(GRPC_PROPAGATE_CANCELLATION); if (unlikely(!__pyx_t_7)) __PYX_ERR(40, 19, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_GRPC_PROPAGATE_CANCELLATION, __pyx_t_7) < 0) __PYX_ERR(40, 19, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/propagation_bits.pyx.pxi":20
+ *     GRPC_PROPAGATE_CENSUS_TRACING_CONTEXT = _GRPC_PROPAGATE_CENSUS_TRACING_CONTEXT
+ *     GRPC_PROPAGATE_CANCELLATION = _GRPC_PROPAGATE_CANCELLATION
+ *     GRPC_PROPAGATE_DEFAULTS = _GRPC_PROPAGATE_DEFAULTS             # <<<<<<<<<<<<<<
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_int(GRPC_PROPAGATE_DEFAULTS); if (unlikely(!__pyx_t_7)) __PYX_ERR(40, 20, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_GRPC_PROPAGATE_DEFAULTS, __pyx_t_7) < 0) __PYX_ERR(40, 20, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/propagation_bits.pyx.pxi":15
+ * # limitations under the License.
+ * 
+ * class PropagationConstants:             # <<<<<<<<<<<<<<
+ *     GRPC_PROPAGATE_DEADLINE = _GRPC_PROPAGATE_DEADLINE
+ *     GRPC_PROPAGATE_CENSUS_STATS_CONTEXT = _GRPC_PROPAGATE_CENSUS_STATS_CONTEXT
+ */
+  __pyx_t_7 = __Pyx_Py3ClassCreate(((PyObject*)&PyType_Type), __pyx_n_s_PropagationConstants, __pyx_empty_tuple, __pyx_t_2, NULL, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(40, 15, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_PropagationConstants, __pyx_t_7) < 0) __PYX_ERR(40, 15, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":35
+ * 
+ * 
+ * class ConnectivityState:             # <<<<<<<<<<<<<<
+ *   idle = GRPC_CHANNEL_IDLE
+ *   connecting = GRPC_CHANNEL_CONNECTING
+ */
+  __pyx_t_2 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_ConnectivityState, __pyx_n_s_ConnectivityState, (PyObject *) NULL, __pyx_n_s_cython_cygrpc, (PyObject *) NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 35, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":36
+ * 
+ * class ConnectivityState:
+ *   idle = GRPC_CHANNEL_IDLE             # <<<<<<<<<<<<<<
+ *   connecting = GRPC_CHANNEL_CONNECTING
+ *   ready = GRPC_CHANNEL_READY
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_grpc_connectivity_state(GRPC_CHANNEL_IDLE); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 36, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_idle, __pyx_t_7) < 0) __PYX_ERR(21, 36, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":37
+ * class ConnectivityState:
+ *   idle = GRPC_CHANNEL_IDLE
+ *   connecting = GRPC_CHANNEL_CONNECTING             # <<<<<<<<<<<<<<
+ *   ready = GRPC_CHANNEL_READY
+ *   transient_failure = GRPC_CHANNEL_TRANSIENT_FAILURE
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_grpc_connectivity_state(GRPC_CHANNEL_CONNECTING); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 37, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_connecting, __pyx_t_7) < 0) __PYX_ERR(21, 37, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":38
+ *   idle = GRPC_CHANNEL_IDLE
+ *   connecting = GRPC_CHANNEL_CONNECTING
+ *   ready = GRPC_CHANNEL_READY             # <<<<<<<<<<<<<<
+ *   transient_failure = GRPC_CHANNEL_TRANSIENT_FAILURE
+ *   shutdown = GRPC_CHANNEL_SHUTDOWN
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_grpc_connectivity_state(GRPC_CHANNEL_READY); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 38, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_ready, __pyx_t_7) < 0) __PYX_ERR(21, 38, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":39
+ *   connecting = GRPC_CHANNEL_CONNECTING
+ *   ready = GRPC_CHANNEL_READY
+ *   transient_failure = GRPC_CHANNEL_TRANSIENT_FAILURE             # <<<<<<<<<<<<<<
+ *   shutdown = GRPC_CHANNEL_SHUTDOWN
+ * 
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_grpc_connectivity_state(GRPC_CHANNEL_TRANSIENT_FAILURE); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 39, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_transient_failure, __pyx_t_7) < 0) __PYX_ERR(21, 39, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":40
+ *   ready = GRPC_CHANNEL_READY
+ *   transient_failure = GRPC_CHANNEL_TRANSIENT_FAILURE
+ *   shutdown = GRPC_CHANNEL_SHUTDOWN             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_grpc_connectivity_state(GRPC_CHANNEL_SHUTDOWN); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 40, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_shutdown, __pyx_t_7) < 0) __PYX_ERR(21, 40, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":35
+ * 
+ * 
+ * class ConnectivityState:             # <<<<<<<<<<<<<<
+ *   idle = GRPC_CHANNEL_IDLE
+ *   connecting = GRPC_CHANNEL_CONNECTING
+ */
+  __pyx_t_7 = __Pyx_Py3ClassCreate(((PyObject*)&PyType_Type), __pyx_n_s_ConnectivityState, __pyx_empty_tuple, __pyx_t_2, NULL, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 35, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ConnectivityState, __pyx_t_7) < 0) __PYX_ERR(21, 35, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":43
+ * 
+ * 
+ * class ChannelArgKey:             # <<<<<<<<<<<<<<
+ *   enable_census = GRPC_ARG_ENABLE_CENSUS
+ *   max_concurrent_streams = GRPC_ARG_MAX_CONCURRENT_STREAMS
+ */
+  __pyx_t_2 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_ChannelArgKey, __pyx_n_s_ChannelArgKey, (PyObject *) NULL, __pyx_n_s_cython_cygrpc, (PyObject *) NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 43, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":44
+ * 
+ * class ChannelArgKey:
+ *   enable_census = GRPC_ARG_ENABLE_CENSUS             # <<<<<<<<<<<<<<
+ *   max_concurrent_streams = GRPC_ARG_MAX_CONCURRENT_STREAMS
+ *   max_receive_message_length = GRPC_ARG_MAX_RECEIVE_MESSAGE_LENGTH
+ */
+  __pyx_t_7 = __Pyx_PyBytes_FromString(GRPC_ARG_ENABLE_CENSUS); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 44, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_enable_census, __pyx_t_7) < 0) __PYX_ERR(21, 44, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":45
+ * class ChannelArgKey:
+ *   enable_census = GRPC_ARG_ENABLE_CENSUS
+ *   max_concurrent_streams = GRPC_ARG_MAX_CONCURRENT_STREAMS             # <<<<<<<<<<<<<<
+ *   max_receive_message_length = GRPC_ARG_MAX_RECEIVE_MESSAGE_LENGTH
+ *   max_send_message_length = GRPC_ARG_MAX_SEND_MESSAGE_LENGTH
+ */
+  __pyx_t_7 = __Pyx_PyBytes_FromString(GRPC_ARG_MAX_CONCURRENT_STREAMS); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 45, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_max_concurrent_streams, __pyx_t_7) < 0) __PYX_ERR(21, 45, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":46
+ *   enable_census = GRPC_ARG_ENABLE_CENSUS
+ *   max_concurrent_streams = GRPC_ARG_MAX_CONCURRENT_STREAMS
+ *   max_receive_message_length = GRPC_ARG_MAX_RECEIVE_MESSAGE_LENGTH             # <<<<<<<<<<<<<<
+ *   max_send_message_length = GRPC_ARG_MAX_SEND_MESSAGE_LENGTH
+ *   http2_initial_sequence_number = GRPC_ARG_HTTP2_INITIAL_SEQUENCE_NUMBER
+ */
+  __pyx_t_7 = __Pyx_PyBytes_FromString(GRPC_ARG_MAX_RECEIVE_MESSAGE_LENGTH); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 46, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_max_receive_message_length, __pyx_t_7) < 0) __PYX_ERR(21, 46, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":47
+ *   max_concurrent_streams = GRPC_ARG_MAX_CONCURRENT_STREAMS
+ *   max_receive_message_length = GRPC_ARG_MAX_RECEIVE_MESSAGE_LENGTH
+ *   max_send_message_length = GRPC_ARG_MAX_SEND_MESSAGE_LENGTH             # <<<<<<<<<<<<<<
+ *   http2_initial_sequence_number = GRPC_ARG_HTTP2_INITIAL_SEQUENCE_NUMBER
+ *   default_authority = GRPC_ARG_DEFAULT_AUTHORITY
+ */
+  __pyx_t_7 = __Pyx_PyBytes_FromString(GRPC_ARG_MAX_SEND_MESSAGE_LENGTH); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 47, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_max_send_message_length, __pyx_t_7) < 0) __PYX_ERR(21, 47, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":48
+ *   max_receive_message_length = GRPC_ARG_MAX_RECEIVE_MESSAGE_LENGTH
+ *   max_send_message_length = GRPC_ARG_MAX_SEND_MESSAGE_LENGTH
+ *   http2_initial_sequence_number = GRPC_ARG_HTTP2_INITIAL_SEQUENCE_NUMBER             # <<<<<<<<<<<<<<
+ *   default_authority = GRPC_ARG_DEFAULT_AUTHORITY
+ *   primary_user_agent_string = GRPC_ARG_PRIMARY_USER_AGENT_STRING
+ */
+  __pyx_t_7 = __Pyx_PyBytes_FromString(GRPC_ARG_HTTP2_INITIAL_SEQUENCE_NUMBER); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 48, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_http2_initial_sequence_number, __pyx_t_7) < 0) __PYX_ERR(21, 48, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":49
+ *   max_send_message_length = GRPC_ARG_MAX_SEND_MESSAGE_LENGTH
+ *   http2_initial_sequence_number = GRPC_ARG_HTTP2_INITIAL_SEQUENCE_NUMBER
+ *   default_authority = GRPC_ARG_DEFAULT_AUTHORITY             # <<<<<<<<<<<<<<
+ *   primary_user_agent_string = GRPC_ARG_PRIMARY_USER_AGENT_STRING
+ *   secondary_user_agent_string = GRPC_ARG_SECONDARY_USER_AGENT_STRING
+ */
+  __pyx_t_7 = __Pyx_PyBytes_FromString(GRPC_ARG_DEFAULT_AUTHORITY); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 49, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_default_authority, __pyx_t_7) < 0) __PYX_ERR(21, 49, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":50
+ *   http2_initial_sequence_number = GRPC_ARG_HTTP2_INITIAL_SEQUENCE_NUMBER
+ *   default_authority = GRPC_ARG_DEFAULT_AUTHORITY
+ *   primary_user_agent_string = GRPC_ARG_PRIMARY_USER_AGENT_STRING             # <<<<<<<<<<<<<<
+ *   secondary_user_agent_string = GRPC_ARG_SECONDARY_USER_AGENT_STRING
+ *   ssl_session_cache = GRPC_SSL_SESSION_CACHE_ARG
+ */
+  __pyx_t_7 = __Pyx_PyBytes_FromString(GRPC_ARG_PRIMARY_USER_AGENT_STRING); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 50, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_primary_user_agent_string, __pyx_t_7) < 0) __PYX_ERR(21, 50, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":51
+ *   default_authority = GRPC_ARG_DEFAULT_AUTHORITY
+ *   primary_user_agent_string = GRPC_ARG_PRIMARY_USER_AGENT_STRING
+ *   secondary_user_agent_string = GRPC_ARG_SECONDARY_USER_AGENT_STRING             # <<<<<<<<<<<<<<
+ *   ssl_session_cache = GRPC_SSL_SESSION_CACHE_ARG
+ *   ssl_target_name_override = GRPC_SSL_TARGET_NAME_OVERRIDE_ARG
+ */
+  __pyx_t_7 = __Pyx_PyBytes_FromString(GRPC_ARG_SECONDARY_USER_AGENT_STRING); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 51, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_secondary_user_agent_string, __pyx_t_7) < 0) __PYX_ERR(21, 51, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":52
+ *   primary_user_agent_string = GRPC_ARG_PRIMARY_USER_AGENT_STRING
+ *   secondary_user_agent_string = GRPC_ARG_SECONDARY_USER_AGENT_STRING
+ *   ssl_session_cache = GRPC_SSL_SESSION_CACHE_ARG             # <<<<<<<<<<<<<<
+ *   ssl_target_name_override = GRPC_SSL_TARGET_NAME_OVERRIDE_ARG
+ * 
+ */
+  __pyx_t_7 = __Pyx_PyBytes_FromString(GRPC_SSL_SESSION_CACHE_ARG); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 52, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_ssl_session_cache, __pyx_t_7) < 0) __PYX_ERR(21, 52, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":53
+ *   secondary_user_agent_string = GRPC_ARG_SECONDARY_USER_AGENT_STRING
+ *   ssl_session_cache = GRPC_SSL_SESSION_CACHE_ARG
+ *   ssl_target_name_override = GRPC_SSL_TARGET_NAME_OVERRIDE_ARG             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_7 = __Pyx_PyBytes_FromString(GRPC_SSL_TARGET_NAME_OVERRIDE_ARG); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 53, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_ssl_target_name_override, __pyx_t_7) < 0) __PYX_ERR(21, 53, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":43
+ * 
+ * 
+ * class ChannelArgKey:             # <<<<<<<<<<<<<<
+ *   enable_census = GRPC_ARG_ENABLE_CENSUS
+ *   max_concurrent_streams = GRPC_ARG_MAX_CONCURRENT_STREAMS
+ */
+  __pyx_t_7 = __Pyx_Py3ClassCreate(((PyObject*)&PyType_Type), __pyx_n_s_ChannelArgKey, __pyx_empty_tuple, __pyx_t_2, NULL, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 43, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ChannelArgKey, __pyx_t_7) < 0) __PYX_ERR(21, 43, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":56
+ * 
+ * 
+ * class WriteFlag:             # <<<<<<<<<<<<<<
+ *   buffer_hint = GRPC_WRITE_BUFFER_HINT
+ *   no_compress = GRPC_WRITE_NO_COMPRESS
+ */
+  __pyx_t_2 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_WriteFlag, __pyx_n_s_WriteFlag, (PyObject *) NULL, __pyx_n_s_cython_cygrpc, (PyObject *) NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 56, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":57
+ * 
+ * class WriteFlag:
+ *   buffer_hint = GRPC_WRITE_BUFFER_HINT             # <<<<<<<<<<<<<<
+ *   no_compress = GRPC_WRITE_NO_COMPRESS
+ * 
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_int(GRPC_WRITE_BUFFER_HINT); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 57, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_buffer_hint, __pyx_t_7) < 0) __PYX_ERR(21, 57, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":58
+ * class WriteFlag:
+ *   buffer_hint = GRPC_WRITE_BUFFER_HINT
+ *   no_compress = GRPC_WRITE_NO_COMPRESS             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_int(GRPC_WRITE_NO_COMPRESS); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 58, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_no_compress, __pyx_t_7) < 0) __PYX_ERR(21, 58, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":56
+ * 
+ * 
+ * class WriteFlag:             # <<<<<<<<<<<<<<
+ *   buffer_hint = GRPC_WRITE_BUFFER_HINT
+ *   no_compress = GRPC_WRITE_NO_COMPRESS
+ */
+  __pyx_t_7 = __Pyx_Py3ClassCreate(((PyObject*)&PyType_Type), __pyx_n_s_WriteFlag, __pyx_empty_tuple, __pyx_t_2, NULL, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 56, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_WriteFlag, __pyx_t_7) < 0) __PYX_ERR(21, 56, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":61
+ * 
+ * 
+ * class StatusCode:             # <<<<<<<<<<<<<<
+ *   ok = GRPC_STATUS_OK
+ *   cancelled = GRPC_STATUS_CANCELLED
+ */
+  __pyx_t_2 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_StatusCode, __pyx_n_s_StatusCode, (PyObject *) NULL, __pyx_n_s_cython_cygrpc, (PyObject *) NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 61, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":62
+ * 
+ * class StatusCode:
+ *   ok = GRPC_STATUS_OK             # <<<<<<<<<<<<<<
+ *   cancelled = GRPC_STATUS_CANCELLED
+ *   unknown = GRPC_STATUS_UNKNOWN
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_grpc_status_code(GRPC_STATUS_OK); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 62, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_ok, __pyx_t_7) < 0) __PYX_ERR(21, 62, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":63
+ * class StatusCode:
+ *   ok = GRPC_STATUS_OK
+ *   cancelled = GRPC_STATUS_CANCELLED             # <<<<<<<<<<<<<<
+ *   unknown = GRPC_STATUS_UNKNOWN
+ *   invalid_argument = GRPC_STATUS_INVALID_ARGUMENT
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_grpc_status_code(GRPC_STATUS_CANCELLED); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 63, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_cancelled, __pyx_t_7) < 0) __PYX_ERR(21, 63, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":64
+ *   ok = GRPC_STATUS_OK
+ *   cancelled = GRPC_STATUS_CANCELLED
+ *   unknown = GRPC_STATUS_UNKNOWN             # <<<<<<<<<<<<<<
+ *   invalid_argument = GRPC_STATUS_INVALID_ARGUMENT
+ *   deadline_exceeded = GRPC_STATUS_DEADLINE_EXCEEDED
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_grpc_status_code(GRPC_STATUS_UNKNOWN); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 64, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_unknown, __pyx_t_7) < 0) __PYX_ERR(21, 64, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":65
+ *   cancelled = GRPC_STATUS_CANCELLED
+ *   unknown = GRPC_STATUS_UNKNOWN
+ *   invalid_argument = GRPC_STATUS_INVALID_ARGUMENT             # <<<<<<<<<<<<<<
+ *   deadline_exceeded = GRPC_STATUS_DEADLINE_EXCEEDED
+ *   not_found = GRPC_STATUS_NOT_FOUND
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_grpc_status_code(GRPC_STATUS_INVALID_ARGUMENT); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 65, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_invalid_argument, __pyx_t_7) < 0) __PYX_ERR(21, 65, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":66
+ *   unknown = GRPC_STATUS_UNKNOWN
+ *   invalid_argument = GRPC_STATUS_INVALID_ARGUMENT
+ *   deadline_exceeded = GRPC_STATUS_DEADLINE_EXCEEDED             # <<<<<<<<<<<<<<
+ *   not_found = GRPC_STATUS_NOT_FOUND
+ *   already_exists = GRPC_STATUS_ALREADY_EXISTS
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_grpc_status_code(GRPC_STATUS_DEADLINE_EXCEEDED); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 66, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_deadline_exceeded, __pyx_t_7) < 0) __PYX_ERR(21, 66, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":67
+ *   invalid_argument = GRPC_STATUS_INVALID_ARGUMENT
+ *   deadline_exceeded = GRPC_STATUS_DEADLINE_EXCEEDED
+ *   not_found = GRPC_STATUS_NOT_FOUND             # <<<<<<<<<<<<<<
+ *   already_exists = GRPC_STATUS_ALREADY_EXISTS
+ *   permission_denied = GRPC_STATUS_PERMISSION_DENIED
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_grpc_status_code(GRPC_STATUS_NOT_FOUND); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 67, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_not_found, __pyx_t_7) < 0) __PYX_ERR(21, 67, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":68
+ *   deadline_exceeded = GRPC_STATUS_DEADLINE_EXCEEDED
+ *   not_found = GRPC_STATUS_NOT_FOUND
+ *   already_exists = GRPC_STATUS_ALREADY_EXISTS             # <<<<<<<<<<<<<<
+ *   permission_denied = GRPC_STATUS_PERMISSION_DENIED
+ *   unauthenticated = GRPC_STATUS_UNAUTHENTICATED
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_grpc_status_code(GRPC_STATUS_ALREADY_EXISTS); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 68, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_already_exists, __pyx_t_7) < 0) __PYX_ERR(21, 68, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":69
+ *   not_found = GRPC_STATUS_NOT_FOUND
+ *   already_exists = GRPC_STATUS_ALREADY_EXISTS
+ *   permission_denied = GRPC_STATUS_PERMISSION_DENIED             # <<<<<<<<<<<<<<
+ *   unauthenticated = GRPC_STATUS_UNAUTHENTICATED
+ *   resource_exhausted = GRPC_STATUS_RESOURCE_EXHAUSTED
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_grpc_status_code(GRPC_STATUS_PERMISSION_DENIED); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 69, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_permission_denied, __pyx_t_7) < 0) __PYX_ERR(21, 69, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":70
+ *   already_exists = GRPC_STATUS_ALREADY_EXISTS
+ *   permission_denied = GRPC_STATUS_PERMISSION_DENIED
+ *   unauthenticated = GRPC_STATUS_UNAUTHENTICATED             # <<<<<<<<<<<<<<
+ *   resource_exhausted = GRPC_STATUS_RESOURCE_EXHAUSTED
+ *   failed_precondition = GRPC_STATUS_FAILED_PRECONDITION
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_grpc_status_code(GRPC_STATUS_UNAUTHENTICATED); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 70, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_unauthenticated, __pyx_t_7) < 0) __PYX_ERR(21, 70, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":71
+ *   permission_denied = GRPC_STATUS_PERMISSION_DENIED
+ *   unauthenticated = GRPC_STATUS_UNAUTHENTICATED
+ *   resource_exhausted = GRPC_STATUS_RESOURCE_EXHAUSTED             # <<<<<<<<<<<<<<
+ *   failed_precondition = GRPC_STATUS_FAILED_PRECONDITION
+ *   aborted = GRPC_STATUS_ABORTED
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_grpc_status_code(GRPC_STATUS_RESOURCE_EXHAUSTED); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 71, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_resource_exhausted, __pyx_t_7) < 0) __PYX_ERR(21, 71, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":72
+ *   unauthenticated = GRPC_STATUS_UNAUTHENTICATED
+ *   resource_exhausted = GRPC_STATUS_RESOURCE_EXHAUSTED
+ *   failed_precondition = GRPC_STATUS_FAILED_PRECONDITION             # <<<<<<<<<<<<<<
+ *   aborted = GRPC_STATUS_ABORTED
+ *   out_of_range = GRPC_STATUS_OUT_OF_RANGE
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_grpc_status_code(GRPC_STATUS_FAILED_PRECONDITION); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 72, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_failed_precondition, __pyx_t_7) < 0) __PYX_ERR(21, 72, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":73
+ *   resource_exhausted = GRPC_STATUS_RESOURCE_EXHAUSTED
+ *   failed_precondition = GRPC_STATUS_FAILED_PRECONDITION
+ *   aborted = GRPC_STATUS_ABORTED             # <<<<<<<<<<<<<<
+ *   out_of_range = GRPC_STATUS_OUT_OF_RANGE
+ *   unimplemented = GRPC_STATUS_UNIMPLEMENTED
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_grpc_status_code(GRPC_STATUS_ABORTED); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 73, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_aborted, __pyx_t_7) < 0) __PYX_ERR(21, 73, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":74
+ *   failed_precondition = GRPC_STATUS_FAILED_PRECONDITION
+ *   aborted = GRPC_STATUS_ABORTED
+ *   out_of_range = GRPC_STATUS_OUT_OF_RANGE             # <<<<<<<<<<<<<<
+ *   unimplemented = GRPC_STATUS_UNIMPLEMENTED
+ *   internal = GRPC_STATUS_INTERNAL
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_grpc_status_code(GRPC_STATUS_OUT_OF_RANGE); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 74, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_out_of_range, __pyx_t_7) < 0) __PYX_ERR(21, 74, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":75
+ *   aborted = GRPC_STATUS_ABORTED
+ *   out_of_range = GRPC_STATUS_OUT_OF_RANGE
+ *   unimplemented = GRPC_STATUS_UNIMPLEMENTED             # <<<<<<<<<<<<<<
+ *   internal = GRPC_STATUS_INTERNAL
+ *   unavailable = GRPC_STATUS_UNAVAILABLE
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_grpc_status_code(GRPC_STATUS_UNIMPLEMENTED); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 75, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_unimplemented, __pyx_t_7) < 0) __PYX_ERR(21, 75, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":76
+ *   out_of_range = GRPC_STATUS_OUT_OF_RANGE
+ *   unimplemented = GRPC_STATUS_UNIMPLEMENTED
+ *   internal = GRPC_STATUS_INTERNAL             # <<<<<<<<<<<<<<
+ *   unavailable = GRPC_STATUS_UNAVAILABLE
+ *   data_loss = GRPC_STATUS_DATA_LOSS
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_grpc_status_code(GRPC_STATUS_INTERNAL); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 76, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_internal, __pyx_t_7) < 0) __PYX_ERR(21, 76, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":77
+ *   unimplemented = GRPC_STATUS_UNIMPLEMENTED
+ *   internal = GRPC_STATUS_INTERNAL
+ *   unavailable = GRPC_STATUS_UNAVAILABLE             # <<<<<<<<<<<<<<
+ *   data_loss = GRPC_STATUS_DATA_LOSS
+ * 
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_grpc_status_code(GRPC_STATUS_UNAVAILABLE); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 77, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_unavailable, __pyx_t_7) < 0) __PYX_ERR(21, 77, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":78
+ *   internal = GRPC_STATUS_INTERNAL
+ *   unavailable = GRPC_STATUS_UNAVAILABLE
+ *   data_loss = GRPC_STATUS_DATA_LOSS             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_grpc_status_code(GRPC_STATUS_DATA_LOSS); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 78, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_data_loss, __pyx_t_7) < 0) __PYX_ERR(21, 78, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":61
+ * 
+ * 
+ * class StatusCode:             # <<<<<<<<<<<<<<
+ *   ok = GRPC_STATUS_OK
+ *   cancelled = GRPC_STATUS_CANCELLED
+ */
+  __pyx_t_7 = __Pyx_Py3ClassCreate(((PyObject*)&PyType_Type), __pyx_n_s_StatusCode, __pyx_empty_tuple, __pyx_t_2, NULL, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 61, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_StatusCode, __pyx_t_7) < 0) __PYX_ERR(21, 61, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":81
+ * 
+ * 
+ * class CallError:             # <<<<<<<<<<<<<<
+ *   ok = GRPC_CALL_OK
+ *   error = GRPC_CALL_ERROR
+ */
+  __pyx_t_2 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_CallError, __pyx_n_s_CallError, (PyObject *) NULL, __pyx_n_s_cython_cygrpc, (PyObject *) NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 81, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":82
+ * 
+ * class CallError:
+ *   ok = GRPC_CALL_OK             # <<<<<<<<<<<<<<
+ *   error = GRPC_CALL_ERROR
+ *   not_on_server = GRPC_CALL_ERROR_NOT_ON_SERVER
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_grpc_call_error(GRPC_CALL_OK); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 82, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_ok, __pyx_t_7) < 0) __PYX_ERR(21, 82, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":83
+ * class CallError:
+ *   ok = GRPC_CALL_OK
+ *   error = GRPC_CALL_ERROR             # <<<<<<<<<<<<<<
+ *   not_on_server = GRPC_CALL_ERROR_NOT_ON_SERVER
+ *   not_on_client = GRPC_CALL_ERROR_NOT_ON_CLIENT
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_grpc_call_error(GRPC_CALL_ERROR); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 83, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_error, __pyx_t_7) < 0) __PYX_ERR(21, 83, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":84
+ *   ok = GRPC_CALL_OK
+ *   error = GRPC_CALL_ERROR
+ *   not_on_server = GRPC_CALL_ERROR_NOT_ON_SERVER             # <<<<<<<<<<<<<<
+ *   not_on_client = GRPC_CALL_ERROR_NOT_ON_CLIENT
+ *   already_accepted = GRPC_CALL_ERROR_ALREADY_ACCEPTED
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_grpc_call_error(GRPC_CALL_ERROR_NOT_ON_SERVER); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 84, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_not_on_server, __pyx_t_7) < 0) __PYX_ERR(21, 84, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":85
+ *   error = GRPC_CALL_ERROR
+ *   not_on_server = GRPC_CALL_ERROR_NOT_ON_SERVER
+ *   not_on_client = GRPC_CALL_ERROR_NOT_ON_CLIENT             # <<<<<<<<<<<<<<
+ *   already_accepted = GRPC_CALL_ERROR_ALREADY_ACCEPTED
+ *   already_invoked = GRPC_CALL_ERROR_ALREADY_INVOKED
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_grpc_call_error(GRPC_CALL_ERROR_NOT_ON_CLIENT); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 85, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_not_on_client, __pyx_t_7) < 0) __PYX_ERR(21, 85, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":86
+ *   not_on_server = GRPC_CALL_ERROR_NOT_ON_SERVER
+ *   not_on_client = GRPC_CALL_ERROR_NOT_ON_CLIENT
+ *   already_accepted = GRPC_CALL_ERROR_ALREADY_ACCEPTED             # <<<<<<<<<<<<<<
+ *   already_invoked = GRPC_CALL_ERROR_ALREADY_INVOKED
+ *   not_invoked = GRPC_CALL_ERROR_NOT_INVOKED
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_grpc_call_error(GRPC_CALL_ERROR_ALREADY_ACCEPTED); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 86, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_already_accepted, __pyx_t_7) < 0) __PYX_ERR(21, 86, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":87
+ *   not_on_client = GRPC_CALL_ERROR_NOT_ON_CLIENT
+ *   already_accepted = GRPC_CALL_ERROR_ALREADY_ACCEPTED
+ *   already_invoked = GRPC_CALL_ERROR_ALREADY_INVOKED             # <<<<<<<<<<<<<<
+ *   not_invoked = GRPC_CALL_ERROR_NOT_INVOKED
+ *   already_finished = GRPC_CALL_ERROR_ALREADY_FINISHED
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_grpc_call_error(GRPC_CALL_ERROR_ALREADY_INVOKED); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 87, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_already_invoked, __pyx_t_7) < 0) __PYX_ERR(21, 87, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":88
+ *   already_accepted = GRPC_CALL_ERROR_ALREADY_ACCEPTED
+ *   already_invoked = GRPC_CALL_ERROR_ALREADY_INVOKED
+ *   not_invoked = GRPC_CALL_ERROR_NOT_INVOKED             # <<<<<<<<<<<<<<
+ *   already_finished = GRPC_CALL_ERROR_ALREADY_FINISHED
+ *   too_many_operations = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_grpc_call_error(GRPC_CALL_ERROR_NOT_INVOKED); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 88, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_not_invoked, __pyx_t_7) < 0) __PYX_ERR(21, 88, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":89
+ *   already_invoked = GRPC_CALL_ERROR_ALREADY_INVOKED
+ *   not_invoked = GRPC_CALL_ERROR_NOT_INVOKED
+ *   already_finished = GRPC_CALL_ERROR_ALREADY_FINISHED             # <<<<<<<<<<<<<<
+ *   too_many_operations = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS
+ *   invalid_flags = GRPC_CALL_ERROR_INVALID_FLAGS
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_grpc_call_error(GRPC_CALL_ERROR_ALREADY_FINISHED); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 89, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_already_finished, __pyx_t_7) < 0) __PYX_ERR(21, 89, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":90
+ *   not_invoked = GRPC_CALL_ERROR_NOT_INVOKED
+ *   already_finished = GRPC_CALL_ERROR_ALREADY_FINISHED
+ *   too_many_operations = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS             # <<<<<<<<<<<<<<
+ *   invalid_flags = GRPC_CALL_ERROR_INVALID_FLAGS
+ *   invalid_metadata = GRPC_CALL_ERROR_INVALID_METADATA
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_grpc_call_error(GRPC_CALL_ERROR_TOO_MANY_OPERATIONS); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 90, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_too_many_operations, __pyx_t_7) < 0) __PYX_ERR(21, 90, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":91
+ *   already_finished = GRPC_CALL_ERROR_ALREADY_FINISHED
+ *   too_many_operations = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS
+ *   invalid_flags = GRPC_CALL_ERROR_INVALID_FLAGS             # <<<<<<<<<<<<<<
+ *   invalid_metadata = GRPC_CALL_ERROR_INVALID_METADATA
+ * 
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_grpc_call_error(GRPC_CALL_ERROR_INVALID_FLAGS); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 91, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_invalid_flags, __pyx_t_7) < 0) __PYX_ERR(21, 91, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":92
+ *   too_many_operations = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS
+ *   invalid_flags = GRPC_CALL_ERROR_INVALID_FLAGS
+ *   invalid_metadata = GRPC_CALL_ERROR_INVALID_METADATA             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_grpc_call_error(GRPC_CALL_ERROR_INVALID_METADATA); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 92, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_invalid_metadata, __pyx_t_7) < 0) __PYX_ERR(21, 92, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":81
+ * 
+ * 
+ * class CallError:             # <<<<<<<<<<<<<<
+ *   ok = GRPC_CALL_OK
+ *   error = GRPC_CALL_ERROR
+ */
+  __pyx_t_7 = __Pyx_Py3ClassCreate(((PyObject*)&PyType_Type), __pyx_n_s_CallError, __pyx_empty_tuple, __pyx_t_2, NULL, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 81, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_CallError, __pyx_t_7) < 0) __PYX_ERR(21, 81, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":95
+ * 
+ * 
+ * class CompletionType:             # <<<<<<<<<<<<<<
+ *   queue_shutdown = GRPC_QUEUE_SHUTDOWN
+ *   queue_timeout = GRPC_QUEUE_TIMEOUT
+ */
+  __pyx_t_2 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_CompletionType, __pyx_n_s_CompletionType, (PyObject *) NULL, __pyx_n_s_cython_cygrpc, (PyObject *) NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 95, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":96
+ * 
+ * class CompletionType:
+ *   queue_shutdown = GRPC_QUEUE_SHUTDOWN             # <<<<<<<<<<<<<<
+ *   queue_timeout = GRPC_QUEUE_TIMEOUT
+ *   operation_complete = GRPC_OP_COMPLETE
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_grpc_completion_type(GRPC_QUEUE_SHUTDOWN); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 96, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_queue_shutdown, __pyx_t_7) < 0) __PYX_ERR(21, 96, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":97
+ * class CompletionType:
+ *   queue_shutdown = GRPC_QUEUE_SHUTDOWN
+ *   queue_timeout = GRPC_QUEUE_TIMEOUT             # <<<<<<<<<<<<<<
+ *   operation_complete = GRPC_OP_COMPLETE
+ * 
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_grpc_completion_type(GRPC_QUEUE_TIMEOUT); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 97, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_queue_timeout, __pyx_t_7) < 0) __PYX_ERR(21, 97, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":98
+ *   queue_shutdown = GRPC_QUEUE_SHUTDOWN
+ *   queue_timeout = GRPC_QUEUE_TIMEOUT
+ *   operation_complete = GRPC_OP_COMPLETE             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_grpc_completion_type(GRPC_OP_COMPLETE); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 98, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_operation_complete, __pyx_t_7) < 0) __PYX_ERR(21, 98, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":95
+ * 
+ * 
+ * class CompletionType:             # <<<<<<<<<<<<<<
+ *   queue_shutdown = GRPC_QUEUE_SHUTDOWN
+ *   queue_timeout = GRPC_QUEUE_TIMEOUT
+ */
+  __pyx_t_7 = __Pyx_Py3ClassCreate(((PyObject*)&PyType_Type), __pyx_n_s_CompletionType, __pyx_empty_tuple, __pyx_t_2, NULL, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 95, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_CompletionType, __pyx_t_7) < 0) __PYX_ERR(21, 95, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":101
+ * 
+ * 
+ * class OperationType:             # <<<<<<<<<<<<<<
+ *   send_initial_metadata = GRPC_OP_SEND_INITIAL_METADATA
+ *   send_message = GRPC_OP_SEND_MESSAGE
+ */
+  __pyx_t_2 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_OperationType, __pyx_n_s_OperationType, (PyObject *) NULL, __pyx_n_s_cython_cygrpc, (PyObject *) NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 101, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":102
+ * 
+ * class OperationType:
+ *   send_initial_metadata = GRPC_OP_SEND_INITIAL_METADATA             # <<<<<<<<<<<<<<
+ *   send_message = GRPC_OP_SEND_MESSAGE
+ *   send_close_from_client = GRPC_OP_SEND_CLOSE_FROM_CLIENT
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_grpc_op_type(GRPC_OP_SEND_INITIAL_METADATA); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 102, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_send_initial_metadata_2, __pyx_t_7) < 0) __PYX_ERR(21, 102, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":103
+ * class OperationType:
+ *   send_initial_metadata = GRPC_OP_SEND_INITIAL_METADATA
+ *   send_message = GRPC_OP_SEND_MESSAGE             # <<<<<<<<<<<<<<
+ *   send_close_from_client = GRPC_OP_SEND_CLOSE_FROM_CLIENT
+ *   send_status_from_server = GRPC_OP_SEND_STATUS_FROM_SERVER
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_grpc_op_type(GRPC_OP_SEND_MESSAGE); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 103, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_send_message_2, __pyx_t_7) < 0) __PYX_ERR(21, 103, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":104
+ *   send_initial_metadata = GRPC_OP_SEND_INITIAL_METADATA
+ *   send_message = GRPC_OP_SEND_MESSAGE
+ *   send_close_from_client = GRPC_OP_SEND_CLOSE_FROM_CLIENT             # <<<<<<<<<<<<<<
+ *   send_status_from_server = GRPC_OP_SEND_STATUS_FROM_SERVER
+ *   receive_initial_metadata = GRPC_OP_RECV_INITIAL_METADATA
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_grpc_op_type(GRPC_OP_SEND_CLOSE_FROM_CLIENT); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 104, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_send_close_from_client, __pyx_t_7) < 0) __PYX_ERR(21, 104, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":105
+ *   send_message = GRPC_OP_SEND_MESSAGE
+ *   send_close_from_client = GRPC_OP_SEND_CLOSE_FROM_CLIENT
+ *   send_status_from_server = GRPC_OP_SEND_STATUS_FROM_SERVER             # <<<<<<<<<<<<<<
+ *   receive_initial_metadata = GRPC_OP_RECV_INITIAL_METADATA
+ *   receive_message = GRPC_OP_RECV_MESSAGE
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_grpc_op_type(GRPC_OP_SEND_STATUS_FROM_SERVER); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 105, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_send_status_from_server, __pyx_t_7) < 0) __PYX_ERR(21, 105, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":106
+ *   send_close_from_client = GRPC_OP_SEND_CLOSE_FROM_CLIENT
+ *   send_status_from_server = GRPC_OP_SEND_STATUS_FROM_SERVER
+ *   receive_initial_metadata = GRPC_OP_RECV_INITIAL_METADATA             # <<<<<<<<<<<<<<
+ *   receive_message = GRPC_OP_RECV_MESSAGE
+ *   receive_status_on_client = GRPC_OP_RECV_STATUS_ON_CLIENT
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_grpc_op_type(GRPC_OP_RECV_INITIAL_METADATA); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 106, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_receive_initial_metadata_2, __pyx_t_7) < 0) __PYX_ERR(21, 106, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":107
+ *   send_status_from_server = GRPC_OP_SEND_STATUS_FROM_SERVER
+ *   receive_initial_metadata = GRPC_OP_RECV_INITIAL_METADATA
+ *   receive_message = GRPC_OP_RECV_MESSAGE             # <<<<<<<<<<<<<<
+ *   receive_status_on_client = GRPC_OP_RECV_STATUS_ON_CLIENT
+ *   receive_close_on_server = GRPC_OP_RECV_CLOSE_ON_SERVER
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_grpc_op_type(GRPC_OP_RECV_MESSAGE); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 107, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_receive_message_2, __pyx_t_7) < 0) __PYX_ERR(21, 107, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":108
+ *   receive_initial_metadata = GRPC_OP_RECV_INITIAL_METADATA
+ *   receive_message = GRPC_OP_RECV_MESSAGE
+ *   receive_status_on_client = GRPC_OP_RECV_STATUS_ON_CLIENT             # <<<<<<<<<<<<<<
+ *   receive_close_on_server = GRPC_OP_RECV_CLOSE_ON_SERVER
+ * 
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_grpc_op_type(GRPC_OP_RECV_STATUS_ON_CLIENT); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 108, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_receive_status_on_client, __pyx_t_7) < 0) __PYX_ERR(21, 108, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":109
+ *   receive_message = GRPC_OP_RECV_MESSAGE
+ *   receive_status_on_client = GRPC_OP_RECV_STATUS_ON_CLIENT
+ *   receive_close_on_server = GRPC_OP_RECV_CLOSE_ON_SERVER             # <<<<<<<<<<<<<<
+ * 
+ * GRPC_COMPRESSION_CHANNEL_DEFAULT_ALGORITHM= (
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_grpc_op_type(GRPC_OP_RECV_CLOSE_ON_SERVER); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 109, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_receive_close_on_server, __pyx_t_7) < 0) __PYX_ERR(21, 109, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":101
+ * 
+ * 
+ * class OperationType:             # <<<<<<<<<<<<<<
+ *   send_initial_metadata = GRPC_OP_SEND_INITIAL_METADATA
+ *   send_message = GRPC_OP_SEND_MESSAGE
+ */
+  __pyx_t_7 = __Pyx_Py3ClassCreate(((PyObject*)&PyType_Type), __pyx_n_s_OperationType, __pyx_empty_tuple, __pyx_t_2, NULL, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 101, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_OperationType, __pyx_t_7) < 0) __PYX_ERR(21, 101, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":112
+ * 
+ * GRPC_COMPRESSION_CHANNEL_DEFAULT_ALGORITHM= (
+ *   _GRPC_COMPRESSION_CHANNEL_DEFAULT_ALGORITHM)             # <<<<<<<<<<<<<<
+ * 
+ * GRPC_COMPRESSION_REQUEST_ALGORITHM_MD_KEY = (
+ */
+  __pyx_t_2 = __Pyx_PyBytes_FromString(GRPC_COMPRESSION_CHANNEL_DEFAULT_ALGORITHM); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 112, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_GRPC_COMPRESSION_CHANNEL_DEFAULT, __pyx_t_2) < 0) __PYX_ERR(21, 111, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":115
+ * 
+ * GRPC_COMPRESSION_REQUEST_ALGORITHM_MD_KEY = (
+ *   _GRPC_COMPRESSION_REQUEST_ALGORITHM_MD_KEY)             # <<<<<<<<<<<<<<
+ * 
+ * class CompressionAlgorithm:
+ */
+  __pyx_t_2 = __Pyx_PyBytes_FromString(GRPC_COMPRESSION_REQUEST_ALGORITHM_MD_KEY); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 115, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_GRPC_COMPRESSION_REQUEST_ALGORIT, __pyx_t_2) < 0) __PYX_ERR(21, 114, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":117
+ *   _GRPC_COMPRESSION_REQUEST_ALGORITHM_MD_KEY)
+ * 
+ * class CompressionAlgorithm:             # <<<<<<<<<<<<<<
+ *   none = GRPC_COMPRESS_NONE
+ *   deflate = GRPC_COMPRESS_DEFLATE
+ */
+  __pyx_t_2 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_CompressionAlgorithm, __pyx_n_s_CompressionAlgorithm, (PyObject *) NULL, __pyx_n_s_cython_cygrpc, (PyObject *) NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 117, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":118
+ * 
+ * class CompressionAlgorithm:
+ *   none = GRPC_COMPRESS_NONE             # <<<<<<<<<<<<<<
+ *   deflate = GRPC_COMPRESS_DEFLATE
+ *   gzip = GRPC_COMPRESS_GZIP
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_grpc_compression_algorithm(GRPC_COMPRESS_NONE); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 118, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_none, __pyx_t_7) < 0) __PYX_ERR(21, 118, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":119
+ * class CompressionAlgorithm:
+ *   none = GRPC_COMPRESS_NONE
+ *   deflate = GRPC_COMPRESS_DEFLATE             # <<<<<<<<<<<<<<
+ *   gzip = GRPC_COMPRESS_GZIP
+ * 
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_grpc_compression_algorithm(GRPC_COMPRESS_DEFLATE); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 119, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_deflate, __pyx_t_7) < 0) __PYX_ERR(21, 119, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":120
+ *   none = GRPC_COMPRESS_NONE
+ *   deflate = GRPC_COMPRESS_DEFLATE
+ *   gzip = GRPC_COMPRESS_GZIP             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_grpc_compression_algorithm(GRPC_COMPRESS_GZIP); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 120, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_gzip, __pyx_t_7) < 0) __PYX_ERR(21, 120, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":117
+ *   _GRPC_COMPRESSION_REQUEST_ALGORITHM_MD_KEY)
+ * 
+ * class CompressionAlgorithm:             # <<<<<<<<<<<<<<
+ *   none = GRPC_COMPRESS_NONE
+ *   deflate = GRPC_COMPRESS_DEFLATE
+ */
+  __pyx_t_7 = __Pyx_Py3ClassCreate(((PyObject*)&PyType_Type), __pyx_n_s_CompressionAlgorithm, __pyx_empty_tuple, __pyx_t_2, NULL, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 117, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_CompressionAlgorithm, __pyx_t_7) < 0) __PYX_ERR(21, 117, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":123
+ * 
+ * 
+ * class CompressionLevel:             # <<<<<<<<<<<<<<
+ *   none = GRPC_COMPRESS_LEVEL_NONE
+ *   low = GRPC_COMPRESS_LEVEL_LOW
+ */
+  __pyx_t_2 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_CompressionLevel, __pyx_n_s_CompressionLevel, (PyObject *) NULL, __pyx_n_s_cython_cygrpc, (PyObject *) NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 123, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":124
+ * 
+ * class CompressionLevel:
+ *   none = GRPC_COMPRESS_LEVEL_NONE             # <<<<<<<<<<<<<<
+ *   low = GRPC_COMPRESS_LEVEL_LOW
+ *   medium = GRPC_COMPRESS_LEVEL_MED
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_grpc_compression_level(GRPC_COMPRESS_LEVEL_NONE); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 124, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_none, __pyx_t_7) < 0) __PYX_ERR(21, 124, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":125
+ * class CompressionLevel:
+ *   none = GRPC_COMPRESS_LEVEL_NONE
+ *   low = GRPC_COMPRESS_LEVEL_LOW             # <<<<<<<<<<<<<<
+ *   medium = GRPC_COMPRESS_LEVEL_MED
+ *   high = GRPC_COMPRESS_LEVEL_HIGH
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_grpc_compression_level(GRPC_COMPRESS_LEVEL_LOW); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 125, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_low, __pyx_t_7) < 0) __PYX_ERR(21, 125, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":126
+ *   none = GRPC_COMPRESS_LEVEL_NONE
+ *   low = GRPC_COMPRESS_LEVEL_LOW
+ *   medium = GRPC_COMPRESS_LEVEL_MED             # <<<<<<<<<<<<<<
+ *   high = GRPC_COMPRESS_LEVEL_HIGH
+ * 
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_grpc_compression_level(GRPC_COMPRESS_LEVEL_MED); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 126, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_medium, __pyx_t_7) < 0) __PYX_ERR(21, 126, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":127
+ *   low = GRPC_COMPRESS_LEVEL_LOW
+ *   medium = GRPC_COMPRESS_LEVEL_MED
+ *   high = GRPC_COMPRESS_LEVEL_HIGH             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_7 = __Pyx_PyInt_From_grpc_compression_level(GRPC_COMPRESS_LEVEL_HIGH); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 127, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_high, __pyx_t_7) < 0) __PYX_ERR(21, 127, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":123
+ * 
+ * 
+ * class CompressionLevel:             # <<<<<<<<<<<<<<
+ *   none = GRPC_COMPRESS_LEVEL_NONE
+ *   low = GRPC_COMPRESS_LEVEL_LOW
+ */
+  __pyx_t_7 = __Pyx_Py3ClassCreate(((PyObject*)&PyType_Type), __pyx_n_s_CompressionLevel, __pyx_empty_tuple, __pyx_t_2, NULL, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 123, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_CompressionLevel, __pyx_t_7) < 0) __PYX_ERR(21, 123, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "(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_7_cython_6cygrpc_11CallDetails_5__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_CallDetails___reduce_cython, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__289)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 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_7_cython_6cygrpc_11CallDetails_7__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_CallDetails___setstate_cython, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__290)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 3, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "(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_7_cython_6cygrpc_17SslPemKeyCertPair_3__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_SslPemKeyCertPair___reduce_cytho, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__291)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 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_7_cython_6cygrpc_17SslPemKeyCertPair_5__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_SslPemKeyCertPair___setstate_cyt, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__292)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 3, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":170
+ *       grpc_compression_options_init(&self.c_options)
+ * 
+ *   def enable_algorithm(self, grpc_compression_algorithm algorithm):             # <<<<<<<<<<<<<<
+ *     with nogil:
+ *       grpc_compression_options_enable_algorithm(&self.c_options, algorithm)
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_18CompressionOptions_3enable_algorithm, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_CompressionOptions_enable_algori, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__294)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 170, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_CompressionOptions, __pyx_n_s_enable_algorithm, __pyx_t_2) < 0) __PYX_ERR(21, 170, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_CompressionOptions);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":174
+ *       grpc_compression_options_enable_algorithm(&self.c_options, algorithm)
+ * 
+ *   def disable_algorithm(self, grpc_compression_algorithm algorithm):             # <<<<<<<<<<<<<<
+ *     with nogil:
+ *       grpc_compression_options_disable_algorithm(&self.c_options, algorithm)
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_18CompressionOptions_5disable_algorithm, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_CompressionOptions_disable_algor, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__295)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 174, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_CompressionOptions, __pyx_n_s_disable_algorithm, __pyx_t_2) < 0) __PYX_ERR(21, 174, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_CompressionOptions);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":178
+ *       grpc_compression_options_disable_algorithm(&self.c_options, algorithm)
+ * 
+ *   def is_algorithm_enabled(self, grpc_compression_algorithm algorithm):             # <<<<<<<<<<<<<<
+ *     cdef int result
+ *     with nogil:
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_18CompressionOptions_7is_algorithm_enabled, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_CompressionOptions_is_algorithm, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__297)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 178, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_CompressionOptions, __pyx_n_s_is_algorithm_enabled, __pyx_t_2) < 0) __PYX_ERR(21, 178, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_CompressionOptions);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":185
+ *     return result
+ * 
+ *   def to_channel_arg(self):             # <<<<<<<<<<<<<<
+ *     return (
+ *         GRPC_COMPRESSION_CHANNEL_ENABLED_ALGORITHMS_BITSET,
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_18CompressionOptions_9to_channel_arg, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_CompressionOptions_to_channel_ar, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__298)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 185, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_CompressionOptions, __pyx_n_s_to_channel_arg, __pyx_t_2) < 0) __PYX_ERR(21, 185, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_CompressionOptions);
+
+  /* "(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_7_cython_6cygrpc_18CompressionOptions_11__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_CompressionOptions___reduce_cyth, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__299)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 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_7_cython_6cygrpc_18CompressionOptions_13__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_CompressionOptions___setstate_cy, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__300)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 3, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":192
+ * 
+ * 
+ * def compression_algorithm_name(grpc_compression_algorithm algorithm):             # <<<<<<<<<<<<<<
+ *   cdef const char* name
+ *   with nogil:
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_45compression_algorithm_name, 0, __pyx_n_s_compression_algorithm_name, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__302)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 192, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_compression_algorithm_name, __pyx_t_2) < 0) __PYX_ERR(21, 192, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":200
+ * 
+ * 
+ * def reset_grpc_config_vars():             # <<<<<<<<<<<<<<
+ *   ConfigVars.Reset()
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_47reset_grpc_config_vars, 0, __pyx_n_s_reset_grpc_config_vars, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__303)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 200, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_reset_grpc_config_vars, __pyx_t_2) < 0) __PYX_ERR(21, 200, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":17
+ * from libc.string cimport memcpy
+ * 
+ * import pkgutil             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_2 = __Pyx_ImportDottedModule(__pyx_n_s_pkgutil, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 17, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pkgutil, __pyx_t_2) < 0) __PYX_ERR(22, 17, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":36
+ * 
+ * 
+ * def peer_identities(Call call):             # <<<<<<<<<<<<<<
+ *   cdef grpc_auth_context* auth_context
+ *   cdef grpc_auth_property_iterator properties
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_49peer_identities, 0, __pyx_n_s_peer_identities, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__305)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 36, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_peer_identities, __pyx_t_2) < 0) __PYX_ERR(22, 36, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":55
+ *   return identities if identities else None
+ * 
+ * def peer_identity_key(Call call):             # <<<<<<<<<<<<<<
+ *   cdef grpc_auth_context* auth_context
+ *   cdef const char* c_key
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_51peer_identity_key, 0, __pyx_n_s_peer_identity_key, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__307)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 55, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_peer_identity_key, __pyx_t_2) < 0) __PYX_ERR(22, 55, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":69
+ *   return key
+ * 
+ * def auth_context(Call call):             # <<<<<<<<<<<<<<
+ *   cdef grpc_auth_context* auth_context
+ *   cdef grpc_auth_property_iterator properties
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_53auth_context, 0, __pyx_n_s_auth_context, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__309)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 69, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_auth_context, __pyx_t_2) < 0) __PYX_ERR(22, 69, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":36
+ *     self.references.append(arguments)
+ * 
+ *   def request_call(             # <<<<<<<<<<<<<<
+ *       self, CompletionQueue call_queue not None,
+ *       CompletionQueue server_queue not None, tag):
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_6Server_3request_call, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Server_request_call, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__311)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 36, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_Server, __pyx_n_s_request_call_2, __pyx_t_2) < 0) __PYX_ERR(23, 36, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_Server);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":53
+ *         <cpython.PyObject *>request_call_tag)
+ * 
+ *   def register_completion_queue(             # <<<<<<<<<<<<<<
+ *       self, CompletionQueue queue not None):
+ *     if self.is_started:
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_6Server_5register_completion_queue, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Server_register_completion_queue, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__313)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 53, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_Server, __pyx_n_s_register_completion_queue, __pyx_t_2) < 0) __PYX_ERR(23, 53, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_Server);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":62
+ *     self.registered_completion_queues.append(queue)
+ * 
+ *   def start(self, backup_queue=True):             # <<<<<<<<<<<<<<
+ *     """Start the Cython gRPC Server.
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_6Server_7start, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Server_start, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__315)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 62, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__316);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_Server, __pyx_n_s_start, __pyx_t_2) < 0) __PYX_ERR(23, 62, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_Server);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":82
+ *       self.backup_shutdown_queue.poll(deadline=time.time())
+ * 
+ *   def add_http2_port(self, bytes address,             # <<<<<<<<<<<<<<
+ *                      ServerCredentials server_credentials=None):
+ *     address = str_to_bytes(address)
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_6Server_9add_http2_port, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Server_add_http2_port, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__318)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 82, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__241);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_Server, __pyx_n_s_add_http2_port, __pyx_t_2) < 0) __PYX_ERR(23, 82, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_Server);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":110
+ *           <cpython.PyObject *>server_shutdown_tag)
+ * 
+ *   def shutdown(self, CompletionQueue queue not None, tag):             # <<<<<<<<<<<<<<
+ *     if queue.is_shutting_down:
+ *       raise ValueError("queue must be live")
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_6Server_11shutdown, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Server_shutdown, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__320)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 110, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_Server, __pyx_n_s_shutdown, __pyx_t_2) < 0) __PYX_ERR(23, 110, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_Server);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":127
+ *     self.is_shutdown = True
+ * 
+ *   def cancel_all_calls(self):             # <<<<<<<<<<<<<<
+ *     if not self.is_shutting_down:
+ *       raise UsageError("the server must be shutting down to cancel all calls")
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_6Server_13cancel_all_calls, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Server_cancel_all_calls, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__321)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 127, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_Server, __pyx_n_s_cancel_all_calls, __pyx_t_2) < 0) __PYX_ERR(23, 127, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_Server);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":139
+ *   # portion of this is safe to call from __dealloc__, and potentially remove
+ *   # backup_shutdown_queue.
+ *   def destroy(self):             # <<<<<<<<<<<<<<
+ *     if self.c_server != NULL:
+ *       if not self.is_started:
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_6Server_15destroy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Server_destroy, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__322)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 139, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_Server, __pyx_n_s_destroy, __pyx_t_2) < 0) __PYX_ERR(23, 139, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_Server);
+
+  /* "(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_7_cython_6cygrpc_6Server_19__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Server___reduce_cython, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__323)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 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_7_cython_6cygrpc_6Server_21__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Server___setstate_cython, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__324)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 3, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "(tree fragment)":1
+ * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
+ *     cdef tuple state
+ *     cdef object _dict
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_4_Tag_1__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Tag___reduce_cython, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__325)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 1, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__Tag, __pyx_n_s_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(10, 1, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__Tag);
+
+  /* "(tree fragment)":16
+ *     else:
+ *         return __pyx_unpickle__Tag, (type(self), 0xe3b0c44, state)
+ * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
+ *     __pyx_unpickle__Tag__set_state(self, __pyx_state)
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_4_Tag_3__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Tag___setstate_cython, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__326)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 16, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__Tag, __pyx_n_s_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(10, 16, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__Tag);
+
+  /* "(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_7_cython_6cygrpc_16_ConnectivityTag_3__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ConnectivityTag___reduce_cython, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__327)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 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_7_cython_6cygrpc_16_ConnectivityTag_5__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ConnectivityTag___setstate_cyth, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__328)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 3, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "(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_7_cython_6cygrpc_15_RequestCallTag_3__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_RequestCallTag___reduce_cython, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__329)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 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_7_cython_6cygrpc_15_RequestCallTag_5__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_RequestCallTag___setstate_cytho, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__330)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 3, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "(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_7_cython_6cygrpc_18_BatchOperationTag_3__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BatchOperationTag___reduce_cyth, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__331)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 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_7_cython_6cygrpc_18_BatchOperationTag_5__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BatchOperationTag___setstate_cy, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__332)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 3, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "(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_7_cython_6cygrpc_18_ServerShutdownTag_3__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ServerShutdownTag___reduce_cyth, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__333)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 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_7_cython_6cygrpc_18_ServerShutdownTag_5__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ServerShutdownTag___setstate_cy, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__334)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 3, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/vtable.pyx.pxi":34
+ * 
+ * cdef grpc_arg_pointer_vtable default_vtable
+ * default_vtable.copy = &_copy_pointer             # <<<<<<<<<<<<<<
+ * default_vtable.destroy = &_destroy_pointer
+ * default_vtable.cmp = &_compare_pointer
+ */
+  __pyx_v_7_cython_6cygrpc_default_vtable.copy = (&__pyx_f_7_cython_6cygrpc__copy_pointer);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/vtable.pyx.pxi":35
+ * cdef grpc_arg_pointer_vtable default_vtable
+ * default_vtable.copy = &_copy_pointer
+ * default_vtable.destroy = &_destroy_pointer             # <<<<<<<<<<<<<<
+ * default_vtable.cmp = &_compare_pointer
+ */
+  __pyx_v_7_cython_6cygrpc_default_vtable.destroy = (&__pyx_f_7_cython_6cygrpc__destroy_pointer);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/vtable.pyx.pxi":36
+ * default_vtable.copy = &_copy_pointer
+ * default_vtable.destroy = &_destroy_pointer
+ * default_vtable.cmp = &_compare_pointer             # <<<<<<<<<<<<<<
+ */
+  __pyx_v_7_cython_6cygrpc_default_vtable.cmp = (&__pyx_f_7_cython_6cygrpc__compare_pointer);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/_hooks.pyx.pxi":19
+ *   raise NotImplementedError("No custom hooks are implemented")
+ * 
+ * def install_context_from_request_call_event(RequestCallEvent event):             # <<<<<<<<<<<<<<
+ *   maybe_save_server_trace_context(event)
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_55install_context_from_request_call_event, 0, __pyx_n_s_install_context_from_request_cal_2, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__336)); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 19, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_install_context_from_request_cal_2, __pyx_t_2) < 0) __PYX_ERR(26, 19, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/_hooks.pyx.pxi":22
+ *   maybe_save_server_trace_context(event)
+ * 
+ * def install_context_from_request_call_event_aio(GrpcCallWrapper event):             # <<<<<<<<<<<<<<
+ *   pass
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_57install_context_from_request_call_event_aio, 0, __pyx_n_s_install_context_from_request_cal, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__337)); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 22, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_install_context_from_request_cal, __pyx_t_2) < 0) __PYX_ERR(26, 22, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/_hooks.pyx.pxi":25
+ *   pass
+ * 
+ * def uninstall_context():             # <<<<<<<<<<<<<<
+ *   pass
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_59uninstall_context, 0, __pyx_n_s_uninstall_context, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__338)); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 25, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_uninstall_context, __pyx_t_2) < 0) __PYX_ERR(26, 25, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/_hooks.pyx.pxi":28
+ *   pass
+ * 
+ * def build_census_context():             # <<<<<<<<<<<<<<
+ *   pass
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_61build_census_context, 0, __pyx_n_s_build_census_context, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__339)); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 28, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_build_census_context, __pyx_t_2) < 0) __PYX_ERR(26, 28, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "(tree fragment)":1
+ * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
+ *     cdef tuple state
+ *     cdef object _dict
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_13CensusContext_1__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_CensusContext___reduce_cython, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__340)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 1, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_CensusContext, __pyx_n_s_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(10, 1, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_CensusContext);
+
+  /* "(tree fragment)":16
+ *     else:
+ *         return __pyx_unpickle_CensusContext, (type(self), 0xe3b0c44, state)
+ * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
+ *     __pyx_unpickle_CensusContext__set_state(self, __pyx_state)
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_13CensusContext_3__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_CensusContext___setstate_cython, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__341)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 16, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_CensusContext, __pyx_n_s_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(10, 16, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_CensusContext);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/_hooks.pyx.pxi":34
+ *   pass
+ * 
+ * def set_census_context_on_call(_CallState call_state, CensusContext census_ctx):             # <<<<<<<<<<<<<<
+ *   pass
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_63set_census_context_on_call, 0, __pyx_n_s_set_census_context_on_call, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__343)); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 34, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_census_context_on_call, __pyx_t_2) < 0) __PYX_ERR(26, 34, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/_hooks.pyx.pxi":37
+ *   pass
+ * 
+ * def set_instrumentation_context_on_call_aio(GrpcCallWrapper call_state, CensusContext census_ctx):             # <<<<<<<<<<<<<<
+ *   pass
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_65set_instrumentation_context_on_call_aio, 0, __pyx_n_s_set_instrumentation_context_on_c, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__344)); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 37, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_instrumentation_context_on_c, __pyx_t_2) < 0) __PYX_ERR(26, 37, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/_hooks.pyx.pxi":40
+ *   pass
+ * 
+ * def get_deadline_from_context():             # <<<<<<<<<<<<<<
+ *   return None
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_67get_deadline_from_context, 0, __pyx_n_s_get_deadline_from_context, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__345)); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 40, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_deadline_from_context, __pyx_t_2) < 0) __PYX_ERR(26, 40, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/observability.pyx.pxi":14
+ * # See the License for the specific language governing permissions and
+ * # limitations under the License.
+ * import codecs             # <<<<<<<<<<<<<<
+ * from typing import Optional
+ * 
+ */
+  __pyx_t_2 = __Pyx_ImportDottedModule(__pyx_n_s_codecs, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 14, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_codecs, __pyx_t_2) < 0) __PYX_ERR(27, 14, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/observability.pyx.pxi":15
+ * # limitations under the License.
+ * import codecs
+ * from typing import Optional             # <<<<<<<<<<<<<<
+ * 
+ * from libcpp.cast cimport static_cast
+ */
+  __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 15, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_n_s_Optional);
+  __Pyx_GIVEREF(__pyx_n_s_Optional);
+  if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_Optional)) __PYX_ERR(27, 15, __pyx_L1_error);
+  __pyx_t_7 = __Pyx_Import(__pyx_n_s_typing, __pyx_t_2, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(27, 15, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_7, __pyx_n_s_Optional); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 15, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Optional, __pyx_t_2) < 0) __PYX_ERR(27, 15, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/observability.pyx.pxi":19
+ * from libcpp.cast cimport static_cast
+ * 
+ * from grpc import _observability             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_7 = PyList_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(27, 19, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  __Pyx_INCREF(__pyx_n_s_observability);
+  __Pyx_GIVEREF(__pyx_n_s_observability);
+  if (__Pyx_PyList_SET_ITEM(__pyx_t_7, 0, __pyx_n_s_observability)) __PYX_ERR(27, 19, __pyx_L1_error);
+  __pyx_t_2 = __Pyx_Import(__pyx_n_s_grpc, __pyx_t_7, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 19, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  __pyx_t_7 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_observability); if (unlikely(!__pyx_t_7)) __PYX_ERR(27, 19, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_observability, __pyx_t_7) < 0) __PYX_ERR(27, 19, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/observability.pyx.pxi":22
+ * 
+ * 
+ * cdef const char* CLIENT_CALL_TRACER = "client_call_tracer"             # <<<<<<<<<<<<<<
+ * cdef const char* SERVER_CALL_TRACER_FACTORY = "server_call_tracer_factory"
+ * 
+ */
+  __pyx_v_7_cython_6cygrpc_CLIENT_CALL_TRACER = ((char const *)"client_call_tracer");
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/observability.pyx.pxi":23
+ * 
+ * cdef const char* CLIENT_CALL_TRACER = "client_call_tracer"
+ * cdef const char* SERVER_CALL_TRACER_FACTORY = "server_call_tracer_factory"             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_v_7_cython_6cygrpc_SERVER_CALL_TRACER_FACTORY = ((char const *)"server_call_tracer_factory");
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/observability.pyx.pxi":26
+ * 
+ * 
+ * def set_server_call_tracer_factory(object observability_plugin) -> None:             # <<<<<<<<<<<<<<
+ *   capsule = observability_plugin.create_server_call_tracer_factory()
+ *   capsule_ptr = cpython.PyCapsule_GetPointer(capsule, SERVER_CALL_TRACER_FACTORY)
+ */
+  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 26, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(27, 26, __pyx_L1_error)
+  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_69set_server_call_tracer_factory, 0, __pyx_n_s_set_server_call_tracer_factory, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__347)); if (unlikely(!__pyx_t_7)) __PYX_ERR(27, 26, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_7, __pyx_t_2);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_server_call_tracer_factory, __pyx_t_7) < 0) __PYX_ERR(27, 26, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/observability.pyx.pxi":32
+ * 
+ * 
+ * def clear_server_call_tracer_factory() -> None:             # <<<<<<<<<<<<<<
+ *   _register_server_call_tracer_factory(NULL)
+ * 
+ */
+  __pyx_t_7 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(27, 32, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(27, 32, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_71clear_server_call_tracer_factory, 0, __pyx_n_s_clear_server_call_tracer_factory, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__348)); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 32, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_7);
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_clear_server_call_tracer_factory, __pyx_t_2) < 0) __PYX_ERR(27, 32, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/observability.pyx.pxi":36
+ * 
+ * 
+ * def maybe_save_server_trace_context(RequestCallEvent event) -> None:             # <<<<<<<<<<<<<<
+ *   cdef ServerCallTracer* server_call_tracer
+ *   with _observability.get_plugin() as plugin:
+ */
+  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 36, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_return, __pyx_n_s_None) < 0) __PYX_ERR(27, 36, __pyx_L1_error)
+  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_73maybe_save_server_trace_context, 0, __pyx_n_s_maybe_save_server_trace_context, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__350)); if (unlikely(!__pyx_t_7)) __PYX_ERR(27, 36, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_7, __pyx_t_2);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_maybe_save_server_trace_context, __pyx_t_7) < 0) __PYX_ERR(27, 36, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":21
+ * from cpython cimport Py_INCREF, Py_DECREF
+ * 
+ * import atexit             # <<<<<<<<<<<<<<
+ * import errno
+ * import sys
+ */
+  __pyx_t_7 = __Pyx_ImportDottedModule(__pyx_n_s_atexit, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(28, 21, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_atexit, __pyx_t_7) < 0) __PYX_ERR(28, 21, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":22
+ * 
+ * import atexit
+ * import errno             # <<<<<<<<<<<<<<
+ * import sys
+ * 
+ */
+  __pyx_t_7 = __Pyx_ImportDottedModule(__pyx_n_s_errno, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(28, 22, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_errno, __pyx_t_7) < 0) __PYX_ERR(28, 22, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":23
+ * import atexit
+ * import errno
+ * import sys             # <<<<<<<<<<<<<<
+ * 
+ * gevent_hub = None
+ */
+  __pyx_t_7 = __Pyx_ImportDottedModule(__pyx_n_s_sys, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(28, 23, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_sys, __pyx_t_7) < 0) __PYX_ERR(28, 23, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":25
+ * import sys
+ * 
+ * gevent_hub = None             # <<<<<<<<<<<<<<
+ * g_gevent_pool = None
+ * g_gevent_threadpool = None
+ */
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_gevent_hub, Py_None) < 0) __PYX_ERR(28, 25, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":26
+ * 
+ * gevent_hub = None
+ * g_gevent_pool = None             # <<<<<<<<<<<<<<
+ * g_gevent_threadpool = None
+ * g_gevent_activated = False
+ */
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_g_gevent_pool, Py_None) < 0) __PYX_ERR(28, 26, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":27
+ * gevent_hub = None
+ * g_gevent_pool = None
+ * g_gevent_threadpool = None             # <<<<<<<<<<<<<<
+ * g_gevent_activated = False
+ * 
+ */
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_g_gevent_threadpool, Py_None) < 0) __PYX_ERR(28, 27, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":28
+ * g_gevent_pool = None
+ * g_gevent_threadpool = None
+ * g_gevent_activated = False             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_g_gevent_activated, Py_False) < 0) __PYX_ERR(28, 28, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":34
+ * cdef condition_variable g_greenlets_cv
+ * cdef mutex g_greenlets_mu
+ * cdef bint g_shutdown_greenlets_to_run_queue = False             # <<<<<<<<<<<<<<
+ * cdef int g_channel_count = 0
+ * 
+ */
+  __pyx_v_7_cython_6cygrpc_g_shutdown_greenlets_to_run_queue = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":35
+ * cdef mutex g_greenlets_mu
+ * cdef bint g_shutdown_greenlets_to_run_queue = False
+ * cdef int g_channel_count = 0             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_v_7_cython_6cygrpc_g_channel_count = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":49
+ * 
+ * 
+ * cpdef void gevent_increment_channel_count():             # <<<<<<<<<<<<<<
+ *   global g_channel_count
+ *   cdef int old_channel_count
+ */
+  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_75gevent_increment_channel_count, 0, __pyx_n_s_gevent_increment_channel_count, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__351)); if (unlikely(!__pyx_t_7)) __PYX_ERR(28, 49, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_gevent_increment_channel_count, __pyx_t_7) < 0) __PYX_ERR(28, 49, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":61
+ * 
+ * 
+ * cpdef void gevent_decrement_channel_count():             # <<<<<<<<<<<<<<
+ *   global g_channel_count
+ *   with nogil:
+ */
+  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_77gevent_decrement_channel_count, 0, __pyx_n_s_gevent_decrement_channel_count, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__352)); if (unlikely(!__pyx_t_7)) __PYX_ERR(28, 61, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_gevent_decrement_channel_count, __pyx_t_7) < 0) __PYX_ERR(28, 61, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":93
+ *   return to_call
+ * 
+ * def spawn_greenlets():             # <<<<<<<<<<<<<<
+ *   while True:
+ *     to_call = g_gevent_threadpool.apply(await_next_greenlet, ())
+ */
+  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_79spawn_greenlets, 0, __pyx_n_s_spawn_greenlets, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__354)); if (unlikely(!__pyx_t_7)) __PYX_ERR(28, 93, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_spawn_greenlets, __pyx_t_7) < 0) __PYX_ERR(28, 93, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":102
+ *     fn(*args)
+ * 
+ * def run_spawn_greenlets():             # <<<<<<<<<<<<<<
+ *   g_gevent_pool.spawn(spawn_greenlets)
+ * 
+ */
+  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_81run_spawn_greenlets, 0, __pyx_n_s_run_spawn_greenlets, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__355)); if (unlikely(!__pyx_t_7)) __PYX_ERR(28, 102, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_run_spawn_greenlets, __pyx_t_7) < 0) __PYX_ERR(28, 102, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":105
+ *   g_gevent_pool.spawn(spawn_greenlets)
+ * 
+ * def shutdown_await_next_greenlet():             # <<<<<<<<<<<<<<
+ *   global g_shutdown_greenlets_to_run_queue
+ *   cdef unique_lock[mutex]* lk
+ */
+  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_83shutdown_await_next_greenlet, 0, __pyx_n_s_shutdown_await_next_greenlet, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__357)); if (unlikely(!__pyx_t_7)) __PYX_ERR(28, 105, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_shutdown_await_next_greenlet, __pyx_t_7) < 0) __PYX_ERR(28, 105, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":114
+ *   g_greenlets_cv.notify_all()
+ * 
+ * def init_grpc_gevent():             # <<<<<<<<<<<<<<
+ *   # Lazily import gevent
+ *   global gevent_hub
+ */
+  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_85init_grpc_gevent, 0, __pyx_n_s_init_grpc_gevent, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__359)); if (unlikely(!__pyx_t_7)) __PYX_ERR(28, 114, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_init_grpc_gevent, __pyx_t_7) < 0) __PYX_ERR(28, 114, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":15
+ * # limitations under the License.
+ * 
+ * def _contextvars_supported():             # <<<<<<<<<<<<<<
+ *     """Determines if the contextvars module is supported.
+ * 
+ */
+  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_87_contextvars_supported, 0, __pyx_n_s_contextvars_supported, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__361)); if (unlikely(!__pyx_t_7)) __PYX_ERR(29, 15, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_contextvars_supported, __pyx_t_7) < 0) __PYX_ERR(29, 15, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":33
+ * 
+ * 
+ * def _run_with_context(target):             # <<<<<<<<<<<<<<
+ *     """Runs a callable with contextvars propagated.
+ * 
+ */
+  __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_89_run_with_context, 0, __pyx_n_s_run_with_context, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__363)); if (unlikely(!__pyx_t_7)) __PYX_ERR(29, 33, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_run_with_context, __pyx_t_7) < 0) __PYX_ERR(29, 33, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":48
+ * 
+ * 
+ * if _contextvars_supported():             # <<<<<<<<<<<<<<
+ *     import contextvars
+ *     def _run_with_context(target):
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_contextvars_supported); if (unlikely(!__pyx_t_7)) __PYX_ERR(29, 48, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 48, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(29, 48, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (__pyx_t_8) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":49
+ * 
+ * if _contextvars_supported():
+ *     import contextvars             # <<<<<<<<<<<<<<
+ *     def _run_with_context(target):
+ *         ctx = contextvars.copy_context()
+ */
+    __pyx_t_2 = __Pyx_ImportDottedModule(__pyx_n_s_contextvars, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 49, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    if (PyDict_SetItem(__pyx_d, __pyx_n_s_contextvars, __pyx_t_2) < 0) __PYX_ERR(29, 49, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":50
+ * if _contextvars_supported():
+ *     import contextvars
+ *     def _run_with_context(target):             # <<<<<<<<<<<<<<
+ *         ctx = contextvars.copy_context()
+ *         def _run(*args):
+ */
+    __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_91_run_with_context, 0, __pyx_n_s_run_with_context, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__365)); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 50, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    if (PyDict_SetItem(__pyx_d, __pyx_n_s_run_with_context, __pyx_t_2) < 0) __PYX_ERR(29, 50, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":48
+ * 
+ * 
+ * if _contextvars_supported():             # <<<<<<<<<<<<<<
+ *     import contextvars
+ *     def _run_with_context(target):
+ */
+    goto __pyx_L8;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":56
+ *         return _run
+ * else:
+ *     def _run_with_context(target):             # <<<<<<<<<<<<<<
+ *         def _run(*args):
+ *             target(*args)
+ */
+  /*else*/ {
+    __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_93_run_with_context, 0, __pyx_n_s_run_with_context, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__367)); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 56, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    if (PyDict_SetItem(__pyx_d, __pyx_n_s_run_with_context, __pyx_t_2) < 0) __PYX_ERR(29, 56, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  }
+  __pyx_L8:;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":15
+ * # limitations under the License.
+ * 
+ * import os             # <<<<<<<<<<<<<<
+ * 
+ * _AWAIT_THREADS_TIMEOUT_SECONDS = 5
+ */
+  __pyx_t_2 = __Pyx_ImportDottedModule(__pyx_n_s_os, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 15, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_os, __pyx_t_2) < 0) __PYX_ERR(1, 15, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":17
+ * import os
+ * 
+ * _AWAIT_THREADS_TIMEOUT_SECONDS = 5             # <<<<<<<<<<<<<<
+ * 
+ * _TRUE_VALUES = ['yes',  'Yes',  'YES', 'true', 'True', 'TRUE', '1']
+ */
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_AWAIT_THREADS_TIMEOUT_SECONDS, __pyx_int_5) < 0) __PYX_ERR(1, 17, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":19
+ * _AWAIT_THREADS_TIMEOUT_SECONDS = 5
+ * 
+ * _TRUE_VALUES = ['yes',  'Yes',  'YES', 'true', 'True', 'TRUE', '1']             # <<<<<<<<<<<<<<
+ * 
+ * # This flag enables experimental support within gRPC Python for applications
+ */
+  __pyx_t_2 = PyList_New(7); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 19, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_n_s_yes);
+  __Pyx_GIVEREF(__pyx_n_s_yes);
+  if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_yes)) __PYX_ERR(1, 19, __pyx_L1_error);
+  __Pyx_INCREF(__pyx_n_s_Yes);
+  __Pyx_GIVEREF(__pyx_n_s_Yes);
+  if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 1, __pyx_n_s_Yes)) __PYX_ERR(1, 19, __pyx_L1_error);
+  __Pyx_INCREF(__pyx_n_s_YES);
+  __Pyx_GIVEREF(__pyx_n_s_YES);
+  if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 2, __pyx_n_s_YES)) __PYX_ERR(1, 19, __pyx_L1_error);
+  __Pyx_INCREF(__pyx_n_s_true);
+  __Pyx_GIVEREF(__pyx_n_s_true);
+  if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 3, __pyx_n_s_true)) __PYX_ERR(1, 19, __pyx_L1_error);
+  __Pyx_INCREF(__pyx_n_s_True);
+  __Pyx_GIVEREF(__pyx_n_s_True);
+  if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 4, __pyx_n_s_True)) __PYX_ERR(1, 19, __pyx_L1_error);
+  __Pyx_INCREF(__pyx_n_s_TRUE);
+  __Pyx_GIVEREF(__pyx_n_s_TRUE);
+  if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 5, __pyx_n_s_TRUE)) __PYX_ERR(1, 19, __pyx_L1_error);
+  __Pyx_INCREF(__pyx_kp_s_1);
+  __Pyx_GIVEREF(__pyx_kp_s_1);
+  if (__Pyx_PyList_SET_ITEM(__pyx_t_2, 6, __pyx_kp_s_1)) __PYX_ERR(1, 19, __pyx_L1_error);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_TRUE_VALUES, __pyx_t_2) < 0) __PYX_ERR(1, 19, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":33
+ * # This flag is also not supported for non-native IO manager.
+ * _GRPC_ENABLE_FORK_SUPPORT = (
+ *     os.environ.get('GRPC_ENABLE_FORK_SUPPORT', '0')             # <<<<<<<<<<<<<<
+ *         .lower() in _TRUE_VALUES)
+ * 
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_os); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 33, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_environ); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 33, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 33, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__368, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 33, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":34
+ * _GRPC_ENABLE_FORK_SUPPORT = (
+ *     os.environ.get('GRPC_ENABLE_FORK_SUPPORT', '0')
+ *         .lower() in _TRUE_VALUES)             # <<<<<<<<<<<<<<
+ * 
+ * _fork_handler_failed = False
+ */
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_lower); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 34, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 34, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_TRUE_VALUES); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 34, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_8 = (__Pyx_PySequence_ContainsTF(__pyx_t_7, __pyx_t_2, Py_EQ)); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(1, 34, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 34, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_GRPC_ENABLE_FORK_SUPPORT, __pyx_t_2) < 0) __PYX_ERR(1, 32, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":36
+ *         .lower() in _TRUE_VALUES)
+ * 
+ * _fork_handler_failed = False             # <<<<<<<<<<<<<<
+ * 
+ * cdef void __prefork() noexcept nogil:
+ */
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_fork_handler_failed, Py_False) < 0) __PYX_ERR(1, 36, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":89
+ * 
+ * 
+ * def fork_handlers_and_grpc_init():             # <<<<<<<<<<<<<<
+ *     grpc_init()
+ *     if _GRPC_ENABLE_FORK_SUPPORT:
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_95fork_handlers_and_grpc_init, 0, __pyx_n_s_fork_handlers_and_grpc_init, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__369)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 89, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_fork_handlers_and_grpc_init, __pyx_t_2) < 0) __PYX_ERR(1, 89, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":102
+ * 
+ * 
+ * class ForkManagedThread(object):             # <<<<<<<<<<<<<<
+ *     def __init__(self, target, args=()):
+ *         if _GRPC_ENABLE_FORK_SUPPORT:
+ */
+  __pyx_t_2 = __Pyx_PEP560_update_bases(__pyx_tuple__371); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 102, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_7 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 102, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  __pyx_t_6 = __Pyx_Py3MetaclassPrepare(__pyx_t_7, __pyx_t_2, __pyx_n_s_ForkManagedThread, __pyx_n_s_ForkManagedThread, (PyObject *) NULL, __pyx_n_s_cython_cygrpc, (PyObject *) NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 102, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  if (__pyx_t_2 != __pyx_tuple__371) {
+    if (unlikely((PyDict_SetItemString(__pyx_t_6, "__orig_bases__", __pyx_tuple__371) < 0))) __PYX_ERR(1, 102, __pyx_L1_error)
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":103
+ * 
+ * class ForkManagedThread(object):
+ *     def __init__(self, target, args=()):             # <<<<<<<<<<<<<<
+ *         if _GRPC_ENABLE_FORK_SUPPORT:
+ *             def managed_target(*args):
+ */
+  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_17ForkManagedThread_1__init__, 0, __pyx_n_s_ForkManagedThread___init, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__373)); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 103, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_9, __pyx_tuple__374);
+  if (__Pyx_SetNameInClass(__pyx_t_6, __pyx_n_s_init, __pyx_t_9) < 0) __PYX_ERR(1, 103, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":114
+ *             self._thread = threading.Thread(target=_run_with_context(target), args=args)
+ * 
+ *     def setDaemon(self, daemonic):             # <<<<<<<<<<<<<<
+ *         self._thread.daemon = daemonic
+ * 
+ */
+  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_17ForkManagedThread_3setDaemon, 0, __pyx_n_s_ForkManagedThread_setDaemon, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__376)); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 114, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  if (__Pyx_SetNameInClass(__pyx_t_6, __pyx_n_s_setDaemon, __pyx_t_9) < 0) __PYX_ERR(1, 114, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":117
+ *         self._thread.daemon = daemonic
+ * 
+ *     def start(self):             # <<<<<<<<<<<<<<
+ *         if _GRPC_ENABLE_FORK_SUPPORT:
+ *             _fork_state.active_thread_count.increment()
+ */
+  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_17ForkManagedThread_5start, 0, __pyx_n_s_ForkManagedThread_start, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__377)); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 117, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  if (__Pyx_SetNameInClass(__pyx_t_6, __pyx_n_s_start, __pyx_t_9) < 0) __PYX_ERR(1, 117, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":122
+ *         self._thread.start()
+ * 
+ *     def join(self):             # <<<<<<<<<<<<<<
+ *         self._thread.join()
+ * 
+ */
+  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_17ForkManagedThread_7join, 0, __pyx_n_s_ForkManagedThread_join, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__378)); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 122, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  if (__Pyx_SetNameInClass(__pyx_t_6, __pyx_n_s_join, __pyx_t_9) < 0) __PYX_ERR(1, 122, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":102
+ * 
+ * 
+ * class ForkManagedThread(object):             # <<<<<<<<<<<<<<
+ *     def __init__(self, target, args=()):
+ *         if _GRPC_ENABLE_FORK_SUPPORT:
+ */
+  __pyx_t_9 = __Pyx_Py3ClassCreate(__pyx_t_7, __pyx_n_s_ForkManagedThread, __pyx_t_2, __pyx_t_6, NULL, 0, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 102, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ForkManagedThread, __pyx_t_9) < 0) __PYX_ERR(1, 102, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":126
+ * 
+ * 
+ * def block_if_fork_in_progress(postfork_state_to_reset=None):             # <<<<<<<<<<<<<<
+ *     if _GRPC_ENABLE_FORK_SUPPORT:
+ *         with _fork_state.fork_in_progress_condition:
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_97block_if_fork_in_progress, 0, __pyx_n_s_block_if_fork_in_progress, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__380)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 126, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__241);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_block_if_fork_in_progress, __pyx_t_2) < 0) __PYX_ERR(1, 126, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":138
+ * 
+ * 
+ * def enter_user_request_generator():             # <<<<<<<<<<<<<<
+ *     if _GRPC_ENABLE_FORK_SUPPORT:
+ *         _fork_state.active_thread_count.decrement()
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_99enter_user_request_generator, 0, __pyx_n_s_enter_user_request_generator, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__381)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 138, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_enter_user_request_generator, __pyx_t_2) < 0) __PYX_ERR(1, 138, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":143
+ * 
+ * 
+ * def return_from_user_request_generator():             # <<<<<<<<<<<<<<
+ *     if _GRPC_ENABLE_FORK_SUPPORT:
+ *         _fork_state.active_thread_count.increment()
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_101return_from_user_request_generator, 0, __pyx_n_s_return_from_user_request_generat, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__382)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 143, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_return_from_user_request_generat, __pyx_t_2) < 0) __PYX_ERR(1, 143, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":149
+ * 
+ * 
+ * def get_fork_epoch():             # <<<<<<<<<<<<<<
+ *     return _fork_state.fork_epoch
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_103get_fork_epoch, 0, __pyx_n_s_get_fork_epoch, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__383)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 149, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_fork_epoch, __pyx_t_2) < 0) __PYX_ERR(1, 149, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":153
+ * 
+ * 
+ * def is_fork_support_enabled():             # <<<<<<<<<<<<<<
+ *     return _GRPC_ENABLE_FORK_SUPPORT
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_105is_fork_support_enabled, 0, __pyx_n_s_is_fork_support_enabled, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__384)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 153, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_is_fork_support_enabled, __pyx_t_2) < 0) __PYX_ERR(1, 153, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":157
+ * 
+ * 
+ * def fork_register_channel(channel):             # <<<<<<<<<<<<<<
+ *     if _GRPC_ENABLE_FORK_SUPPORT:
+ *         _fork_state.channels.add(channel)
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_107fork_register_channel, 0, __pyx_n_s_fork_register_channel, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__386)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 157, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_fork_register_channel, __pyx_t_2) < 0) __PYX_ERR(1, 157, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":162
+ * 
+ * 
+ * def fork_unregister_channel(channel):             # <<<<<<<<<<<<<<
+ *     if _GRPC_ENABLE_FORK_SUPPORT:
+ *         _fork_state.channels.discard(channel)
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_109fork_unregister_channel, 0, __pyx_n_s_fork_unregister_channel, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__387)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 162, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_fork_unregister_channel, __pyx_t_2) < 0) __PYX_ERR(1, 162, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":167
+ * 
+ * 
+ * class _ActiveThreadCount(object):             # <<<<<<<<<<<<<<
+ *     def __init__(self):
+ *         self._num_active_threads = 0
+ */
+  __pyx_t_2 = __Pyx_PEP560_update_bases(__pyx_tuple__389); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 167, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_7 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 167, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  __pyx_t_6 = __Pyx_Py3MetaclassPrepare(__pyx_t_7, __pyx_t_2, __pyx_n_s_ActiveThreadCount, __pyx_n_s_ActiveThreadCount, (PyObject *) NULL, __pyx_n_s_cython_cygrpc, (PyObject *) NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 167, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  if (__pyx_t_2 != __pyx_tuple__389) {
+    if (unlikely((PyDict_SetItemString(__pyx_t_6, "__orig_bases__", __pyx_tuple__389) < 0))) __PYX_ERR(1, 167, __pyx_L1_error)
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":168
+ * 
+ * class _ActiveThreadCount(object):
+ *     def __init__(self):             # <<<<<<<<<<<<<<
+ *         self._num_active_threads = 0
+ *         self._condition = threading.Condition()
+ */
+  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_18_ActiveThreadCount_1__init__, 0, __pyx_n_s_ActiveThreadCount___init, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__390)); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 168, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  if (__Pyx_SetNameInClass(__pyx_t_6, __pyx_n_s_init, __pyx_t_9) < 0) __PYX_ERR(1, 168, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":172
+ *         self._condition = threading.Condition()
+ * 
+ *     def increment(self):             # <<<<<<<<<<<<<<
+ *         with self._condition:
+ *             self._num_active_threads += 1
+ */
+  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_18_ActiveThreadCount_3increment, 0, __pyx_n_s_ActiveThreadCount_increment, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__391)); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 172, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  if (__Pyx_SetNameInClass(__pyx_t_6, __pyx_n_s_increment, __pyx_t_9) < 0) __PYX_ERR(1, 172, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":176
+ *             self._num_active_threads += 1
+ * 
+ *     def decrement(self):             # <<<<<<<<<<<<<<
+ *         with self._condition:
+ *             self._num_active_threads -= 1
+ */
+  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_18_ActiveThreadCount_5decrement, 0, __pyx_n_s_ActiveThreadCount_decrement, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__392)); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 176, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  if (__Pyx_SetNameInClass(__pyx_t_6, __pyx_n_s_decrement, __pyx_t_9) < 0) __PYX_ERR(1, 176, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":182
+ *                 self._condition.notify_all()
+ * 
+ *     def await_zero_threads(self, timeout_secs):             # <<<<<<<<<<<<<<
+ *         end_time = time.time() + timeout_secs
+ *         wait_time = timeout_secs
+ */
+  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_18_ActiveThreadCount_7await_zero_threads, 0, __pyx_n_s_ActiveThreadCount_await_zero_th, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__394)); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 182, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  if (__Pyx_SetNameInClass(__pyx_t_6, __pyx_n_s_await_zero_threads, __pyx_t_9) < 0) __PYX_ERR(1, 182, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":167
+ * 
+ * 
+ * class _ActiveThreadCount(object):             # <<<<<<<<<<<<<<
+ *     def __init__(self):
+ *         self._num_active_threads = 0
+ */
+  __pyx_t_9 = __Pyx_Py3ClassCreate(__pyx_t_7, __pyx_n_s_ActiveThreadCount, __pyx_t_2, __pyx_t_6, NULL, 0, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 167, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ActiveThreadCount, __pyx_t_9) < 0) __PYX_ERR(1, 167, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":199
+ * 
+ * 
+ * class _ForkState(object):             # <<<<<<<<<<<<<<
+ *     def __init__(self):
+ *         self.fork_in_progress_condition = threading.Condition()
+ */
+  __pyx_t_2 = __Pyx_PEP560_update_bases(__pyx_tuple__396); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 199, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_7 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 199, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  __pyx_t_6 = __Pyx_Py3MetaclassPrepare(__pyx_t_7, __pyx_t_2, __pyx_n_s_ForkState, __pyx_n_s_ForkState, (PyObject *) NULL, __pyx_n_s_cython_cygrpc, (PyObject *) NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 199, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  if (__pyx_t_2 != __pyx_tuple__396) {
+    if (unlikely((PyDict_SetItemString(__pyx_t_6, "__orig_bases__", __pyx_tuple__396) < 0))) __PYX_ERR(1, 199, __pyx_L1_error)
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":200
+ * 
+ * class _ForkState(object):
+ *     def __init__(self):             # <<<<<<<<<<<<<<
+ *         self.fork_in_progress_condition = threading.Condition()
+ *         self.fork_in_progress = False
+ */
+  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_10_ForkState_1__init__, 0, __pyx_n_s_ForkState___init, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__397)); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 200, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  if (__Pyx_SetNameInClass(__pyx_t_6, __pyx_n_s_init, __pyx_t_9) < 0) __PYX_ERR(1, 200, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":199
+ * 
+ * 
+ * class _ForkState(object):             # <<<<<<<<<<<<<<
+ *     def __init__(self):
+ *         self.fork_in_progress_condition = threading.Condition()
+ */
+  __pyx_t_9 = __Pyx_Py3ClassCreate(__pyx_t_7, __pyx_n_s_ForkState, __pyx_t_2, __pyx_t_6, NULL, 0, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 199, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ForkState, __pyx_t_9) < 0) __PYX_ERR(1, 199, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":211
+ * 
+ * 
+ * _fork_state = _ForkState()             # <<<<<<<<<<<<<<
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_ForkState); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 211, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 211, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_fork_state, __pyx_t_7) < 0) __PYX_ERR(1, 211, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":15
+ * # limitations under the License.
+ * 
+ * import warnings             # <<<<<<<<<<<<<<
+ * 
+ * from cpython.version cimport PY_MAJOR_VERSION, PY_MINOR_VERSION
+ */
+  __pyx_t_7 = __Pyx_ImportDottedModule(__pyx_n_s_warnings, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 15, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_warnings, __pyx_t_7) < 0) __PYX_ERR(6, 15, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":19
+ * from cpython.version cimport PY_MAJOR_VERSION, PY_MINOR_VERSION
+ * 
+ * TYPE_METADATA_STRING = "Tuple[Tuple[str, Union[str, bytes]]...]"             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_TYPE_METADATA_STRING, __pyx_kp_s_Tuple_Tuple_str_Union_str_bytes) < 0) __PYX_ERR(6, 19, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":59
+ * 
+ * 
+ * class _EOF:             # <<<<<<<<<<<<<<
+ * 
+ *     def __bool__(self):
+ */
+  __pyx_t_7 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_EOF_2, __pyx_n_s_EOF_2, (PyObject *) NULL, __pyx_n_s_cython_cygrpc, (PyObject *) NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 59, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":61
+ * class _EOF:
+ * 
+ *     def __bool__(self):             # <<<<<<<<<<<<<<
+ *         return False
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_4_EOF_1__bool__, 0, __pyx_n_s_EOF___bool, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__398)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 61, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_bool, __pyx_t_2) < 0) __PYX_ERR(6, 61, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":64
+ *         return False
+ * 
+ *     def __len__(self):             # <<<<<<<<<<<<<<
+ *         return 0
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_4_EOF_3__len__, 0, __pyx_n_s_EOF___len, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__399)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 64, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_len, __pyx_t_2) < 0) __PYX_ERR(6, 64, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":67
+ *         return 0
+ * 
+ *     def _repr(self) -> str:             # <<<<<<<<<<<<<<
+ *         return '<grpc.aio.EOF>'
+ * 
+ */
+  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 67, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_return, __pyx_n_s_str) < 0) __PYX_ERR(6, 67, __pyx_L1_error)
+  __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_4_EOF_5_repr, 0, __pyx_n_s_EOF__repr, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__400)); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 67, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_6, __pyx_t_2);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_repr, __pyx_t_6) < 0) __PYX_ERR(6, 67, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":70
+ *         return '<grpc.aio.EOF>'
+ * 
+ *     def __repr__(self) -> str:             # <<<<<<<<<<<<<<
+ *         return self._repr()
+ * 
+ */
+  __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 70, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_return, __pyx_n_s_str) < 0) __PYX_ERR(6, 70, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_4_EOF_7__repr__, 0, __pyx_n_s_EOF___repr, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__401)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 70, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_6);
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_repr_2, __pyx_t_2) < 0) __PYX_ERR(6, 70, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":73
+ *         return self._repr()
+ * 
+ *     def __str__(self) -> str:             # <<<<<<<<<<<<<<
+ *         return self._repr()
+ * 
+ */
+  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 73, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_return, __pyx_n_s_str) < 0) __PYX_ERR(6, 73, __pyx_L1_error)
+  __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_4_EOF_9__str__, 0, __pyx_n_s_EOF___str, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__402)); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 73, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_6, __pyx_t_2);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_str_2, __pyx_t_6) < 0) __PYX_ERR(6, 73, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":59
+ * 
+ * 
+ * class _EOF:             # <<<<<<<<<<<<<<
+ * 
+ *     def __bool__(self):
+ */
+  __pyx_t_6 = __Pyx_Py3ClassCreate(((PyObject*)&PyType_Type), __pyx_n_s_EOF_2, __pyx_empty_tuple, __pyx_t_7, NULL, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 59, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_EOF_2, __pyx_t_6) < 0) __PYX_ERR(6, 59, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":77
+ * 
+ * 
+ * EOF = _EOF()             # <<<<<<<<<<<<<<
+ * 
+ * _COMPRESSION_METADATA_STRING_MAPPING = {
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_EOF_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 77, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 77, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_EOF, __pyx_t_6) < 0) __PYX_ERR(6, 77, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":80
+ * 
+ * _COMPRESSION_METADATA_STRING_MAPPING = {
+ *     CompressionAlgorithm.none: 'identity',             # <<<<<<<<<<<<<<
+ *     CompressionAlgorithm.deflate: 'deflate',
+ *     CompressionAlgorithm.gzip: 'gzip',
+ */
+  __pyx_t_6 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 80, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_CompressionAlgorithm); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 80, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_none); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 80, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  if (PyDict_SetItem(__pyx_t_6, __pyx_t_2, __pyx_n_s_identity) < 0) __PYX_ERR(6, 80, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":81
+ * _COMPRESSION_METADATA_STRING_MAPPING = {
+ *     CompressionAlgorithm.none: 'identity',
+ *     CompressionAlgorithm.deflate: 'deflate',             # <<<<<<<<<<<<<<
+ *     CompressionAlgorithm.gzip: 'gzip',
+ * }
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_CompressionAlgorithm); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 81, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_deflate); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 81, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (PyDict_SetItem(__pyx_t_6, __pyx_t_7, __pyx_n_s_deflate) < 0) __PYX_ERR(6, 80, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":82
+ *     CompressionAlgorithm.none: 'identity',
+ *     CompressionAlgorithm.deflate: 'deflate',
+ *     CompressionAlgorithm.gzip: 'gzip',             # <<<<<<<<<<<<<<
+ * }
+ * 
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_CompressionAlgorithm); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 82, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_gzip); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 82, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  if (PyDict_SetItem(__pyx_t_6, __pyx_t_2, __pyx_n_s_gzip) < 0) __PYX_ERR(6, 80, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_COMPRESSION_METADATA_STRING_MAP, __pyx_t_6) < 0) __PYX_ERR(6, 79, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":85
+ * }
+ * 
+ * class BaseError(Exception):             # <<<<<<<<<<<<<<
+ *     """The base class for exceptions generated by gRPC AsyncIO stack."""
+ * 
+ */
+  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 85, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  __Pyx_INCREF((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]));
+  __Pyx_GIVEREF((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]));
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])))) __PYX_ERR(6, 85, __pyx_L1_error);
+  __pyx_t_2 = __Pyx_PEP560_update_bases(__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 85, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_7 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 85, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  __pyx_t_9 = __Pyx_Py3MetaclassPrepare(__pyx_t_7, __pyx_t_2, __pyx_n_s_BaseError, __pyx_n_s_BaseError, (PyObject *) NULL, __pyx_n_s_cython_cygrpc, __pyx_kp_s_The_base_class_for_exceptions_ge); if (unlikely(!__pyx_t_9)) __PYX_ERR(6, 85, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  if (__pyx_t_2 != __pyx_t_6) {
+    if (unlikely((PyDict_SetItemString(__pyx_t_9, "__orig_bases__", __pyx_t_6) < 0))) __PYX_ERR(6, 85, __pyx_L1_error)
+  }
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  __pyx_t_6 = __Pyx_Py3ClassCreate(__pyx_t_7, __pyx_n_s_BaseError, __pyx_t_2, __pyx_t_9, NULL, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 85, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_BaseError, __pyx_t_6) < 0) __PYX_ERR(6, 85, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":89
+ * 
+ * 
+ * class UsageError(BaseError):             # <<<<<<<<<<<<<<
+ *     """Raised when the usage of API by applications is inappropriate.
+ * 
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_BaseError); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 89, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 89, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  __Pyx_GIVEREF(__pyx_t_2);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2)) __PYX_ERR(6, 89, __pyx_L1_error);
+  __pyx_t_2 = 0;
+  __pyx_t_2 = __Pyx_PEP560_update_bases(__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 89, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_9 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(6, 89, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  __pyx_t_6 = __Pyx_Py3MetaclassPrepare(__pyx_t_9, __pyx_t_2, __pyx_n_s_UsageError, __pyx_n_s_UsageError, (PyObject *) NULL, __pyx_n_s_cython_cygrpc, __pyx_kp_s_Raised_when_the_usage_of_API_by); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 89, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  if (__pyx_t_2 != __pyx_t_7) {
+    if (unlikely((PyDict_SetItemString(__pyx_t_6, "__orig_bases__", __pyx_t_7) < 0))) __PYX_ERR(6, 89, __pyx_L1_error)
+  }
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  __pyx_t_7 = __Pyx_Py3ClassCreate(__pyx_t_9, __pyx_n_s_UsageError, __pyx_t_2, __pyx_t_6, NULL, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 89, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_UsageError, __pyx_t_7) < 0) __PYX_ERR(6, 89, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":98
+ * 
+ * 
+ * class AbortError(BaseError):             # <<<<<<<<<<<<<<
+ *     """Raised when calling abort in servicer methods.
+ * 
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_BaseError); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 98, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(6, 98, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  __Pyx_GIVEREF(__pyx_t_2);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_2)) __PYX_ERR(6, 98, __pyx_L1_error);
+  __pyx_t_2 = 0;
+  __pyx_t_2 = __Pyx_PEP560_update_bases(__pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 98, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_6 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 98, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  __pyx_t_7 = __Pyx_Py3MetaclassPrepare(__pyx_t_6, __pyx_t_2, __pyx_n_s_AbortError, __pyx_n_s_AbortError, (PyObject *) NULL, __pyx_n_s_cython_cygrpc, __pyx_kp_s_Raised_when_calling_abort_in_ser); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 98, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__pyx_t_2 != __pyx_t_9) {
+    if (unlikely((PyDict_SetItemString(__pyx_t_7, "__orig_bases__", __pyx_t_9) < 0))) __PYX_ERR(6, 98, __pyx_L1_error)
+  }
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  __pyx_t_9 = __Pyx_Py3ClassCreate(__pyx_t_6, __pyx_n_s_AbortError, __pyx_t_2, __pyx_t_7, NULL, 0, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(6, 98, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_AbortError, __pyx_t_9) < 0) __PYX_ERR(6, 98, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":106
+ * 
+ * 
+ * class InternalError(BaseError):             # <<<<<<<<<<<<<<
+ *     """Raised upon unexpected errors in native code."""
+ * 
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_BaseError); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 106, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 106, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  __Pyx_GIVEREF(__pyx_t_2);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2)) __PYX_ERR(6, 106, __pyx_L1_error);
+  __pyx_t_2 = 0;
+  __pyx_t_2 = __Pyx_PEP560_update_bases(__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 106, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_7 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 106, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  __pyx_t_9 = __Pyx_Py3MetaclassPrepare(__pyx_t_7, __pyx_t_2, __pyx_n_s_InternalError, __pyx_n_s_InternalError, (PyObject *) NULL, __pyx_n_s_cython_cygrpc, __pyx_kp_s_Raised_upon_unexpected_errors_in); if (unlikely(!__pyx_t_9)) __PYX_ERR(6, 106, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  if (__pyx_t_2 != __pyx_t_6) {
+    if (unlikely((PyDict_SetItemString(__pyx_t_9, "__orig_bases__", __pyx_t_6) < 0))) __PYX_ERR(6, 106, __pyx_L1_error)
+  }
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  __pyx_t_6 = __Pyx_Py3ClassCreate(__pyx_t_7, __pyx_n_s_InternalError, __pyx_t_2, __pyx_t_9, NULL, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 106, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_InternalError, __pyx_t_6) < 0) __PYX_ERR(6, 106, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":110
+ * 
+ * 
+ * def schedule_coro_threadsafe(object coro, object loop):             # <<<<<<<<<<<<<<
+ *     try:
+ *         return loop.create_task(coro)
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_111schedule_coro_threadsafe, 0, __pyx_n_s_schedule_coro_threadsafe, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__404)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 110, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_schedule_coro_threadsafe, __pyx_t_2) < 0) __PYX_ERR(6, 110, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":123
+ * 
+ * 
+ * def async_generator_to_generator(object agen, object loop):             # <<<<<<<<<<<<<<
+ *     """Converts an async generator into generator."""
+ *     try:
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_113async_generator_to_generator, 0, __pyx_n_s_async_generator_to_generator, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__44)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 123, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_async_generator_to_generator, __pyx_t_2) < 0) __PYX_ERR(6, 123, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":141
+ * 
+ * 
+ * async def generator_to_async_generator(object gen, object loop, object thread_pool):             # <<<<<<<<<<<<<<
+ *     """Converts a generator into async generator.
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_116generator_to_async_generator, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_generator_to_async_generator, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__45)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 141, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_generator_to_async_generator, __pyx_t_2) < 0) __PYX_ERR(6, 141, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":176
+ * 
+ * 
+ * if PY_MAJOR_VERSION >= 3 and PY_MINOR_VERSION >= 7:             # <<<<<<<<<<<<<<
+ *     def get_working_loop():
+ *         """Returns a running event loop.
+ */
+  __pyx_t_10 = (PY_MAJOR_VERSION >= 3);
+  if (__pyx_t_10) {
+  } else {
+    __pyx_t_8 = __pyx_t_10;
+    goto __pyx_L10_bool_binop_done;
+  }
+  __pyx_t_10 = (PY_MINOR_VERSION >= 7);
+  __pyx_t_8 = __pyx_t_10;
+  __pyx_L10_bool_binop_done:;
+  if (__pyx_t_8) {
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":177
+ * 
+ * if PY_MAJOR_VERSION >= 3 and PY_MINOR_VERSION >= 7:
+ *     def get_working_loop():             # <<<<<<<<<<<<<<
+ *         """Returns a running event loop.
+ * 
+ */
+    __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_119get_working_loop, 0, __pyx_n_s_get_working_loop, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__407)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 177, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_working_loop, __pyx_t_2) < 0) __PYX_ERR(6, 177, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":176
+ * 
+ * 
+ * if PY_MAJOR_VERSION >= 3 and PY_MINOR_VERSION >= 7:             # <<<<<<<<<<<<<<
+ *     def get_working_loop():
+ *         """Returns a running event loop.
+ */
+    goto __pyx_L9;
+  }
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":196
+ *                     return asyncio.get_event_loop_policy().new_event_loop()
+ * else:
+ *     def get_working_loop():             # <<<<<<<<<<<<<<
+ *         """Returns a running event loop."""
+ *         return asyncio.get_event_loop()
+ */
+  /*else*/ {
+    __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_121get_working_loop, 0, __pyx_n_s_get_working_loop, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__408)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 196, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_working_loop, __pyx_t_2) < 0) __PYX_ERR(6, 196, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  }
+  __pyx_L9:;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":201
+ * 
+ * 
+ * def raise_if_not_valid_trailing_metadata(object metadata):             # <<<<<<<<<<<<<<
+ *     if not hasattr(metadata, '__iter__') or isinstance(metadata, dict):
+ *         raise TypeError(f'Invalid trailing metadata type, expected {TYPE_METADATA_STRING}: {metadata}')
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_123raise_if_not_valid_trailing_metadata, 0, __pyx_n_s_raise_if_not_valid_trailing_meta, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__410)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 201, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_raise_if_not_valid_trailing_meta, __pyx_t_2) < 0) __PYX_ERR(6, 201, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pyx.pxi":31
+ *         self._debug_error_string = debug_error_string
+ * 
+ *     cpdef grpc_status_code code(self):             # <<<<<<<<<<<<<<
+ *         return self._code
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_12AioRpcStatus_3code, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AioRpcStatus_code, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__411)); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 31, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_AioRpcStatus, __pyx_n_s_code, __pyx_t_2) < 0) __PYX_ERR(30, 31, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_AioRpcStatus);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pyx.pxi":34
+ *         return self._code
+ * 
+ *     cpdef str details(self):             # <<<<<<<<<<<<<<
+ *         return self._details
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_12AioRpcStatus_5details, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AioRpcStatus_details, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__412)); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 34, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_AioRpcStatus, __pyx_n_s_details, __pyx_t_2) < 0) __PYX_ERR(30, 34, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_AioRpcStatus);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pyx.pxi":37
+ *         return self._details
+ * 
+ *     cpdef tuple trailing_metadata(self):             # <<<<<<<<<<<<<<
+ *         return self._trailing_metadata
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_12AioRpcStatus_7trailing_metadata, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AioRpcStatus_trailing_metadata, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__413)); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 37, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_AioRpcStatus, __pyx_n_s_trailing_metadata, __pyx_t_2) < 0) __PYX_ERR(30, 37, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_AioRpcStatus);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pyx.pxi":40
+ *         return self._trailing_metadata
+ * 
+ *     cpdef str debug_error_string(self):             # <<<<<<<<<<<<<<
+ *         return self._debug_error_string
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_12AioRpcStatus_9debug_error_string, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AioRpcStatus_debug_error_string, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__414)); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 40, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_AioRpcStatus, __pyx_n_s_debug_error_string, __pyx_t_2) < 0) __PYX_ERR(30, 40, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_AioRpcStatus);
+
+  /* "(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_7_cython_6cygrpc_12AioRpcStatus_11__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AioRpcStatus___reduce_cython, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__415)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 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_7_cython_6cygrpc_12AioRpcStatus_13__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AioRpcStatus___setstate_cython, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__416)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 3, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":15
+ * # limitations under the License.
+ * 
+ * import socket             # <<<<<<<<<<<<<<
+ * 
+ * cdef gpr_timespec _GPR_INF_FUTURE = gpr_inf_future(GPR_CLOCK_REALTIME)
+ */
+  __pyx_t_2 = __Pyx_ImportDottedModule(__pyx_n_s_socket, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 15, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_socket, __pyx_t_2) < 0) __PYX_ERR(7, 15, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":17
+ * import socket
+ * 
+ * cdef gpr_timespec _GPR_INF_FUTURE = gpr_inf_future(GPR_CLOCK_REALTIME)             # <<<<<<<<<<<<<<
+ * cdef float _POLL_AWAKE_INTERVAL_S = 0.2
+ * 
+ */
+  __pyx_v_7_cython_6cygrpc__GPR_INF_FUTURE = gpr_inf_future(GPR_CLOCK_REALTIME);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":18
+ * 
+ * cdef gpr_timespec _GPR_INF_FUTURE = gpr_inf_future(GPR_CLOCK_REALTIME)
+ * cdef float _POLL_AWAKE_INTERVAL_S = 0.2             # <<<<<<<<<<<<<<
+ * 
+ * # This bool indicates if the event loop impl can monitor a given fd, or has
+ */
+  __pyx_v_7_cython_6cygrpc__POLL_AWAKE_INTERVAL_S = 0.2;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":22
+ * # This bool indicates if the event loop impl can monitor a given fd, or has
+ * # loop.add_reader method.
+ * cdef bint _has_fd_monitoring = True             # <<<<<<<<<<<<<<
+ * 
+ * IF UNAME_SYSNAME == "Windows":
+ */
+  __pyx_v_7_cython_6cygrpc__has_fd_monitoring = 1;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":34
+ * 
+ * 
+ * def _handle_callback_wrapper(CallbackWrapper callback_wrapper, int success):             # <<<<<<<<<<<<<<
+ *     CallbackWrapper.functor_run(callback_wrapper.c_functor(), success)
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_125_handle_callback_wrapper, 0, __pyx_n_s_handle_callback_wrapper, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__418)); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 34, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_handle_callback_wrapper, __pyx_t_2) < 0) __PYX_ERR(7, 34, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "(tree fragment)":1
+ * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
+ *     raise TypeError, "self._cq cannot be converted to a Python object for pickling"
+ * def __setstate_cython__(self, __pyx_state):
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_19BaseCompletionQueue_1__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BaseCompletionQueue___reduce_cyt, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__419)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 1, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "(tree fragment)":3
+ * def __reduce_cython__(self):
+ *     raise TypeError, "self._cq cannot be converted to a Python object for pickling"
+ * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
+ *     raise TypeError, "self._cq cannot be converted to a Python object for pickling"
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_19BaseCompletionQueue_3__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BaseCompletionQueue___setstate_c, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__420)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 3, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":66
+ *                 self._has_reader = False
+ * 
+ *     def close(self):             # <<<<<<<<<<<<<<
+ *         if self.loop:
+ *             if self._has_reader:
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_15_BoundEventLoop_3close, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BoundEventLoop_close, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__421)); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 66, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__BoundEventLoop, __pyx_n_s_close, __pyx_t_2) < 0) __PYX_ERR(7, 66, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__BoundEventLoop);
+
+  /* "(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_7_cython_6cygrpc_15_BoundEventLoop_5__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BoundEventLoop___reduce_cython, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__422)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 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_7_cython_6cygrpc_15_BoundEventLoop_7__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_BoundEventLoop___setstate_cytho, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__423)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 3, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":91
+ *         self._queue = cpp_event_queue()
+ * 
+ *     def bind_loop(self, object loop):             # <<<<<<<<<<<<<<
+ *         if loop in self._loops:
+ *             return
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_21PollerCompletionQueue_3bind_loop, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PollerCompletionQueue_bind_loop, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__425)); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 91, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_PollerCompletionQueue, __pyx_n_s_bind_loop, __pyx_t_2) < 0) __PYX_ERR(7, 91, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_PollerCompletionQueue);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":124
+ *                         self._handle_events(None)
+ * 
+ *     def _poll_wrapper(self):             # <<<<<<<<<<<<<<
+ *         with nogil:
+ *             self._poll()
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_21PollerCompletionQueue_5_poll_wrapper, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PollerCompletionQueue__poll_wrap, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__426)); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 124, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_PollerCompletionQueue, __pyx_n_s_poll_wrapper, __pyx_t_2) < 0) __PYX_ERR(7, 124, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_PollerCompletionQueue);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":143
+ *         self._write_socket.close()
+ * 
+ *     def _handle_events(self, object context_loop):             # <<<<<<<<<<<<<<
+ *         cdef bytes data
+ *         if _has_fd_monitoring:
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_21PollerCompletionQueue_7_handle_events, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PollerCompletionQueue__handle_ev, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__428)); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 143, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_PollerCompletionQueue, __pyx_n_s_handle_events, __pyx_t_2) < 0) __PYX_ERR(7, 143, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_PollerCompletionQueue);
+
+  /* "(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_7_cython_6cygrpc_21PollerCompletionQueue_9__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PollerCompletionQueue___reduce_c, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__429)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 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_7_cython_6cygrpc_21PollerCompletionQueue_11__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_PollerCompletionQueue___setstate, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__430)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 3, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "(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_7_cython_6cygrpc_22CallbackFailureHandler_3__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_CallbackFailureHandler___reduce, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__431)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 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_7_cython_6cygrpc_22CallbackFailureHandler_5__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_CallbackFailureHandler___setstat, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__432)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 3, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "(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_7_cython_6cygrpc_15CallbackWrapper_3__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_CallbackWrapper___reduce_cython, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__433)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 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_7_cython_6cygrpc_15CallbackWrapper_5__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_CallbackWrapper___setstate_cytho, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__434)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 3, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":70
+ *     'grpc_completion_queue_shutdown',
+ *     'Unknown',
+ *     InternalError)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_InternalError); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 70, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":67
+ * 
+ * 
+ * cdef CallbackFailureHandler CQ_SHUTDOWN_FAILURE_HANDLER = CallbackFailureHandler(             # <<<<<<<<<<<<<<
+ *     'grpc_completion_queue_shutdown',
+ *     'Unknown',
+ */
+  __pyx_t_7 = PyTuple_New(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(32, 67, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  __Pyx_INCREF(__pyx_n_s_grpc_completion_queue_shutdown);
+  __Pyx_GIVEREF(__pyx_n_s_grpc_completion_queue_shutdown);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_n_s_grpc_completion_queue_shutdown)) __PYX_ERR(32, 67, __pyx_L1_error);
+  __Pyx_INCREF(__pyx_n_s_Unknown);
+  __Pyx_GIVEREF(__pyx_n_s_Unknown);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_n_s_Unknown)) __PYX_ERR(32, 67, __pyx_L1_error);
+  __Pyx_GIVEREF(__pyx_t_2);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_t_2)) __PYX_ERR(32, 67, __pyx_L1_error);
+  __pyx_t_2 = 0;
+  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_7_cython_6cygrpc_CallbackFailureHandler), __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 67, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  __Pyx_XGOTREF((PyObject *)__pyx_v_7_cython_6cygrpc_CQ_SHUTDOWN_FAILURE_HANDLER);
+  __Pyx_DECREF_SET(__pyx_v_7_cython_6cygrpc_CQ_SHUTDOWN_FAILURE_HANDLER, ((struct __pyx_obj_7_cython_6cygrpc_CallbackFailureHandler *)__pyx_t_2));
+  __Pyx_GIVEREF(__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":73
+ * 
+ * 
+ * class ExecuteBatchError(InternalError):             # <<<<<<<<<<<<<<
+ *     """Raised when execute batch returns a failure from Core."""
+ * 
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_InternalError); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 73, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(32, 73, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  __Pyx_GIVEREF(__pyx_t_2);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2)) __PYX_ERR(32, 73, __pyx_L1_error);
+  __pyx_t_2 = 0;
+  __pyx_t_2 = __Pyx_PEP560_update_bases(__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 73, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_9 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 73, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  __pyx_t_6 = __Pyx_Py3MetaclassPrepare(__pyx_t_9, __pyx_t_2, __pyx_n_s_ExecuteBatchError, __pyx_n_s_ExecuteBatchError, (PyObject *) NULL, __pyx_n_s_cython_cygrpc, __pyx_kp_s_Raised_when_execute_batch_return); if (unlikely(!__pyx_t_6)) __PYX_ERR(32, 73, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  if (__pyx_t_2 != __pyx_t_7) {
+    if (unlikely((PyDict_SetItemString(__pyx_t_6, "__orig_bases__", __pyx_t_7) < 0))) __PYX_ERR(32, 73, __pyx_L1_error)
+  }
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  __pyx_t_7 = __Pyx_Py3ClassCreate(__pyx_t_9, __pyx_n_s_ExecuteBatchError, __pyx_t_2, __pyx_t_6, NULL, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(32, 73, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ExecuteBatchError, __pyx_t_7) < 0) __PYX_ERR(32, 73, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":77
+ * 
+ * 
+ * async def execute_batch(GrpcCallWrapper grpc_call_wrapper,             # <<<<<<<<<<<<<<
+ *                                tuple operations,
+ *                                object loop):
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_127execute_batch, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_execute_batch, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__51)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 77, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_execute_batch, __pyx_t_2) < 0) __PYX_ERR(32, 77, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":115
+ * 
+ * 
+ * async def _receive_message(GrpcCallWrapper grpc_call_wrapper,             # <<<<<<<<<<<<<<
+ *                            object loop):
+ *     """Retrives parsed messages from Core.
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_130_receive_message, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_receive_message, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__52)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 115, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_receive_message, __pyx_t_2) < 0) __PYX_ERR(32, 115, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":139
+ * 
+ * 
+ * async def _send_message(GrpcCallWrapper grpc_call_wrapper,             # <<<<<<<<<<<<<<
+ *                         bytes message,
+ *                         Operation send_initial_metadata_op,
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_133_send_message, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_send_message, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__53)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 139, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_send_message, __pyx_t_2) < 0) __PYX_ERR(32, 139, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":151
+ * 
+ * 
+ * async def _send_initial_metadata(GrpcCallWrapper grpc_call_wrapper,             # <<<<<<<<<<<<<<
+ *                                  tuple metadata,
+ *                                  int flags,
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_136_send_initial_metadata, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_send_initial_metadata, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__54)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 151, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_send_initial_metadata, __pyx_t_2) < 0) __PYX_ERR(32, 151, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":162
+ * 
+ * 
+ * async def _receive_initial_metadata(GrpcCallWrapper grpc_call_wrapper,             # <<<<<<<<<<<<<<
+ *                                     object loop):
+ *     cdef ReceiveInitialMetadataOperation op = ReceiveInitialMetadataOperation(_EMPTY_FLAGS)
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_139_receive_initial_metadata, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_receive_initial_metadata, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__55)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 162, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_receive_initial_metadata, __pyx_t_2) < 0) __PYX_ERR(32, 162, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":169
+ *     return op.initial_metadata()
+ * 
+ * async def _send_error_status_from_server(GrpcCallWrapper grpc_call_wrapper,             # <<<<<<<<<<<<<<
+ *                                          grpc_status_code code,
+ *                                          str details,
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_142_send_error_status_from_server, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_send_error_status_from_server, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__56)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 169, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_send_error_status_from_server, __pyx_t_2) < 0) __PYX_ERR(32, 169, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":15
+ * # limitations under the License.
+ * 
+ * import enum             # <<<<<<<<<<<<<<
+ * 
+ * cdef str _GRPC_ASYNCIO_ENGINE = os.environ.get('GRPC_ASYNCIO_ENGINE', 'poller').upper()
+ */
+  __pyx_t_2 = __Pyx_ImportDottedModule(__pyx_n_s_enum, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 15, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_enum, __pyx_t_2) < 0) __PYX_ERR(33, 15, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":17
+ * import enum
+ * 
+ * cdef str _GRPC_ASYNCIO_ENGINE = os.environ.get('GRPC_ASYNCIO_ENGINE', 'poller').upper()             # <<<<<<<<<<<<<<
+ * cdef _AioState _global_aio_state = _AioState()
+ * 
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_os); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 17, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_environ); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 17, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 17, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__441, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 17, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_upper); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 17, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  __pyx_t_9 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 17, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (!(likely(PyString_CheckExact(__pyx_t_9))||((__pyx_t_9) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_9))) __PYX_ERR(33, 17, __pyx_L1_error)
+  __Pyx_XGOTREF(__pyx_v_7_cython_6cygrpc__GRPC_ASYNCIO_ENGINE);
+  __Pyx_DECREF_SET(__pyx_v_7_cython_6cygrpc__GRPC_ASYNCIO_ENGINE, ((PyObject*)__pyx_t_9));
+  __Pyx_GIVEREF(__pyx_t_9);
+  __pyx_t_9 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":18
+ * 
+ * cdef str _GRPC_ASYNCIO_ENGINE = os.environ.get('GRPC_ASYNCIO_ENGINE', 'poller').upper()
+ * cdef _AioState _global_aio_state = _AioState()             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_9 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_7_cython_6cygrpc__AioState)); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 18, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  __Pyx_XGOTREF((PyObject *)__pyx_v_7_cython_6cygrpc__global_aio_state);
+  __Pyx_DECREF_SET(__pyx_v_7_cython_6cygrpc__global_aio_state, ((struct __pyx_obj_7_cython_6cygrpc__AioState *)__pyx_t_9));
+  __Pyx_GIVEREF(__pyx_t_9);
+  __pyx_t_9 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":21
+ * 
+ * 
+ * class AsyncIOEngine(enum.Enum):             # <<<<<<<<<<<<<<
+ *     # NOTE(lidiz) the support for custom_io_manager is removed in favor of the
+ *     # EventEngine project, which will be the only IO platform in Core.
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_enum); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 21, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_Enum); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 21, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 21, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  __Pyx_GIVEREF(__pyx_t_2);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_2)) __PYX_ERR(33, 21, __pyx_L1_error);
+  __pyx_t_2 = 0;
+  __pyx_t_2 = __Pyx_PEP560_update_bases(__pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 21, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_6 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(33, 21, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  __pyx_t_7 = __Pyx_Py3MetaclassPrepare(__pyx_t_6, __pyx_t_2, __pyx_n_s_AsyncIOEngine, __pyx_n_s_AsyncIOEngine, (PyObject *) NULL, __pyx_n_s_cython_cygrpc, (PyObject *) NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(33, 21, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__pyx_t_2 != __pyx_t_9) {
+    if (unlikely((PyDict_SetItemString(__pyx_t_7, "__orig_bases__", __pyx_t_9) < 0))) __PYX_ERR(33, 21, __pyx_L1_error)
+  }
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":24
+ *     # NOTE(lidiz) the support for custom_io_manager is removed in favor of the
+ *     # EventEngine project, which will be the only IO platform in Core.
+ *     CUSTOM_IO_MANAGER = 'custom_io_manager'             # <<<<<<<<<<<<<<
+ *     POLLER = 'poller'
+ * 
+ */
+  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_CUSTOM_IO_MANAGER, __pyx_n_s_custom_io_manager) < 0) __PYX_ERR(33, 24, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":25
+ *     # EventEngine project, which will be the only IO platform in Core.
+ *     CUSTOM_IO_MANAGER = 'custom_io_manager'
+ *     POLLER = 'poller'             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_POLLER, __pyx_n_s_poller) < 0) __PYX_ERR(33, 25, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":21
+ * 
+ * 
+ * class AsyncIOEngine(enum.Enum):             # <<<<<<<<<<<<<<
+ *     # NOTE(lidiz) the support for custom_io_manager is removed in favor of the
+ *     # EventEngine project, which will be the only IO platform in Core.
+ */
+  __pyx_t_9 = __Pyx_Py3ClassCreate(__pyx_t_6, __pyx_n_s_AsyncIOEngine, __pyx_t_2, __pyx_t_7, NULL, 0, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 21, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_AsyncIOEngine, __pyx_t_9) < 0) __PYX_ERR(33, 21, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "(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_7_cython_6cygrpc_9_AioState_3__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AioState___reduce_cython, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__442)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 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_7_cython_6cygrpc_9_AioState_5__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AioState___setstate_cython, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__443)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 3, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":68
+ * 
+ * 
+ * def _grpc_shutdown_wrapper(_):             # <<<<<<<<<<<<<<
+ *     """A thin Python wrapper of Core's shutdown function.
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_145_grpc_shutdown_wrapper, 0, __pyx_n_s_grpc_shutdown_wrapper, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__445)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 68, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_grpc_shutdown_wrapper, __pyx_t_2) < 0) __PYX_ERR(33, 68, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":91
+ * 
+ * 
+ * cpdef init_grpc_aio():             # <<<<<<<<<<<<<<
+ *     """Initializes the gRPC AsyncIO module.
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_147init_grpc_aio, 0, __pyx_n_s_init_grpc_aio, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__446)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 91, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_init_grpc_aio, __pyx_t_2) < 0) __PYX_ERR(33, 91, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":104
+ * 
+ * 
+ * cpdef shutdown_grpc_aio():             # <<<<<<<<<<<<<<
+ *     """Shuts down the gRPC AsyncIO module.
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_149shutdown_grpc_aio, 0, __pyx_n_s_shutdown_grpc_aio, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__447)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 104, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_shutdown_grpc_aio, __pyx_t_2) < 0) __PYX_ERR(33, 104, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":16
+ * 
+ * 
+ * _EMPTY_FLAGS = 0             # <<<<<<<<<<<<<<
+ * _EMPTY_MASK = 0
+ * _IMMUTABLE_EMPTY_METADATA = tuple()
+ */
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_EMPTY_FLAGS, __pyx_int_0) < 0) __PYX_ERR(34, 16, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":17
+ * 
+ * _EMPTY_FLAGS = 0
+ * _EMPTY_MASK = 0             # <<<<<<<<<<<<<<
+ * _IMMUTABLE_EMPTY_METADATA = tuple()
+ * 
+ */
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_EMPTY_MASK, __pyx_int_0) < 0) __PYX_ERR(34, 17, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":18
+ * _EMPTY_FLAGS = 0
+ * _EMPTY_MASK = 0
+ * _IMMUTABLE_EMPTY_METADATA = tuple()             # <<<<<<<<<<<<<<
+ * 
+ * _UNKNOWN_CANCELLATION_DETAILS = 'RPC cancelled for unknown reason.'
+ */
+  __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)(&PyTuple_Type))); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 18, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_IMMUTABLE_EMPTY_METADATA, __pyx_t_2) < 0) __PYX_ERR(34, 18, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":20
+ * _IMMUTABLE_EMPTY_METADATA = tuple()
+ * 
+ * _UNKNOWN_CANCELLATION_DETAILS = 'RPC cancelled for unknown reason.'             # <<<<<<<<<<<<<<
+ * _OK_CALL_REPRESENTATION = ('<{} of RPC that terminated with:\n'
+ *                            '\tstatus = {}\n'
+ */
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_UNKNOWN_CANCELLATION_DETAILS, __pyx_kp_s_RPC_cancelled_for_unknown_reason) < 0) __PYX_ERR(34, 20, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":21
+ * 
+ * _UNKNOWN_CANCELLATION_DETAILS = 'RPC cancelled for unknown reason.'
+ * _OK_CALL_REPRESENTATION = ('<{} of RPC that terminated with:\n'             # <<<<<<<<<<<<<<
+ *                            '\tstatus = {}\n'
+ *                            '\tdetails = "{}"\n'
+ */
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_OK_CALL_REPRESENTATION, __pyx_kp_s_of_RPC_that_terminated_with_sta) < 0) __PYX_ERR(34, 21, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":26
+ *                            '>')
+ * 
+ * _NON_OK_CALL_REPRESENTATION = ('<{} of RPC that terminated with:\n'             # <<<<<<<<<<<<<<
+ *                                '\tstatus = {}\n'
+ *                                '\tdetails = "{}"\n'
+ */
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_NON_OK_CALL_REPRESENTATION, __pyx_kp_s_of_RPC_that_terminated_with_sta_2) < 0) __PYX_ERR(34, 26, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":69
+ *         shutdown_grpc_aio()
+ * 
+ *     def _repr(self) -> str:             # <<<<<<<<<<<<<<
+ *         """Assembles the RPC representation string."""
+ *         # This needs to be loaded at run time once everything
+ */
+  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(34, 69, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_return, __pyx_n_s_str) < 0) __PYX_ERR(34, 69, __pyx_L1_error)
+  __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_8_AioCall_5_repr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AioCall__repr, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__449)); if (unlikely(!__pyx_t_6)) __PYX_ERR(34, 69, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_6, __pyx_t_2);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__AioCall, __pyx_n_s_repr, __pyx_t_6) < 0) __PYX_ERR(34, 69, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__AioCall);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":170
+ *         self._waiters_initial_metadata = []
+ * 
+ *     def add_done_callback(self, callback):             # <<<<<<<<<<<<<<
+ *         if self.done():
+ *             callback()
+ */
+  __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_8_AioCall_11add_done_callback, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AioCall_add_done_callback, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__451)); if (unlikely(!__pyx_t_6)) __PYX_ERR(34, 170, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__AioCall, __pyx_n_s_add_done_callback, __pyx_t_6) < 0) __PYX_ERR(34, 170, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__AioCall);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":176
+ *             self._done_callbacks.append(callback)
+ * 
+ *     def time_remaining(self):             # <<<<<<<<<<<<<<
+ *         if self._deadline is None:
+ *             return None
+ */
+  __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_8_AioCall_13time_remaining, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AioCall_time_remaining, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__452)); if (unlikely(!__pyx_t_6)) __PYX_ERR(34, 176, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__AioCall, __pyx_n_s_time_remaining, __pyx_t_6) < 0) __PYX_ERR(34, 176, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__AioCall);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":182
+ *             return max(0, self._deadline - time.time())
+ * 
+ *     def cancel(self, str details):             # <<<<<<<<<<<<<<
+ *         """Cancels the RPC in Core with given RPC status.
+ * 
+ */
+  __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_8_AioCall_15cancel, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AioCall_cancel, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__454)); if (unlikely(!__pyx_t_6)) __PYX_ERR(34, 182, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__AioCall, __pyx_n_s_cancel, __pyx_t_6) < 0) __PYX_ERR(34, 182, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__AioCall);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":213
+ *         assert error == GRPC_CALL_OK
+ * 
+ *     def done(self):             # <<<<<<<<<<<<<<
+ *         """Returns if the RPC call has finished.
+ * 
+ */
+  __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_8_AioCall_17done, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AioCall_done, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__455)); if (unlikely(!__pyx_t_6)) __PYX_ERR(34, 213, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__AioCall, __pyx_n_s_done, __pyx_t_6) < 0) __PYX_ERR(34, 213, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__AioCall);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":224
+ *         return self._status is not None
+ * 
+ *     def cancelled(self):             # <<<<<<<<<<<<<<
+ *         """Returns if the RPC was cancelled.
+ * 
+ */
+  __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_8_AioCall_19cancelled, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AioCall_cancelled, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__456)); if (unlikely(!__pyx_t_6)) __PYX_ERR(34, 224, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__AioCall, __pyx_n_s_cancelled, __pyx_t_6) < 0) __PYX_ERR(34, 224, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__AioCall);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":235
+ *         return self._status.code() == StatusCode.cancelled
+ * 
+ *     async def status(self):             # <<<<<<<<<<<<<<
+ *         """Returns the status of the RPC call.
+ * 
+ */
+  __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_8_AioCall_21status, __Pyx_CYFUNCTION_CCLASS | __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_AioCall_status, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__59)); if (unlikely(!__pyx_t_6)) __PYX_ERR(34, 235, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__AioCall, __pyx_n_s_status, __pyx_t_6) < 0) __PYX_ERR(34, 235, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__AioCall);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":254
+ *         return self._status
+ * 
+ *     def is_ok(self):             # <<<<<<<<<<<<<<
+ *         """Returns if the RPC is ended with ok."""
+ *         return self.done() and self._status.code() == StatusCode.ok
+ */
+  __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_8_AioCall_24is_ok, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AioCall_is_ok, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__458)); if (unlikely(!__pyx_t_6)) __PYX_ERR(34, 254, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__AioCall, __pyx_n_s_is_ok, __pyx_t_6) < 0) __PYX_ERR(34, 254, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__AioCall);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":258
+ *         return self.done() and self._status.code() == StatusCode.ok
+ * 
+ *     async def initial_metadata(self):             # <<<<<<<<<<<<<<
+ *         """Returns the initial metadata of the RPC call.
+ * 
+ */
+  __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_8_AioCall_26initial_metadata, __Pyx_CYFUNCTION_CCLASS | __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_AioCall_initial_metadata, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__60)); if (unlikely(!__pyx_t_6)) __PYX_ERR(34, 258, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__AioCall, __pyx_n_s_initial_metadata, __pyx_t_6) < 0) __PYX_ERR(34, 258, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__AioCall);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":276
+ *         return self._initial_metadata
+ * 
+ *     def is_locally_cancelled(self):             # <<<<<<<<<<<<<<
+ *         """Returns if the RPC was cancelled locally.
+ * 
+ */
+  __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_8_AioCall_29is_locally_cancelled, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AioCall_is_locally_cancelled, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__459)); if (unlikely(!__pyx_t_6)) __PYX_ERR(34, 276, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__AioCall, __pyx_n_s_is_locally_cancelled, __pyx_t_6) < 0) __PYX_ERR(34, 276, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__AioCall);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":288
+ *         return False
+ * 
+ *     def set_internal_error(self, str error_str):             # <<<<<<<<<<<<<<
+ *         self._set_status(AioRpcStatus(
+ *             StatusCode.internal,
+ */
+  __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_8_AioCall_31set_internal_error, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AioCall_set_internal_error, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__461)); if (unlikely(!__pyx_t_6)) __PYX_ERR(34, 288, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__AioCall, __pyx_n_s_set_internal_error, __pyx_t_6) < 0) __PYX_ERR(34, 288, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__AioCall);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":296
+ *         ))
+ * 
+ *     async def unary_unary(self,             # <<<<<<<<<<<<<<
+ *                           bytes request,
+ *                           tuple outbound_initial_metadata,
+ */
+  __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_8_AioCall_33unary_unary, __Pyx_CYFUNCTION_CCLASS | __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_AioCall_unary_unary, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__61)); if (unlikely(!__pyx_t_6)) __PYX_ERR(34, 296, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_6, __pyx_tuple__241);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__AioCall, __pyx_n_s_unary_unary, __pyx_t_6) < 0) __PYX_ERR(34, 296, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__AioCall);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":347
+ *             return None
+ * 
+ *     async def _handle_status_once_received(self):             # <<<<<<<<<<<<<<
+ *         """Handles the status sent by peer once received."""
+ *         cdef ReceiveStatusOnClientOperation op = ReceiveStatusOnClientOperation(_EMPTY_FLAGS)
+ */
+  __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_8_AioCall_36_handle_status_once_received, __Pyx_CYFUNCTION_CCLASS | __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_AioCall__handle_status_once_rec, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__62)); if (unlikely(!__pyx_t_6)) __PYX_ERR(34, 347, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__AioCall, __pyx_n_s_handle_status_once_received, __pyx_t_6) < 0) __PYX_ERR(34, 347, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__AioCall);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":364
+ *         ))
+ * 
+ *     async def receive_serialized_message(self):             # <<<<<<<<<<<<<<
+ *         """Receives one single raw message in bytes."""
+ *         cdef bytes received_message
+ */
+  __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_8_AioCall_39receive_serialized_message, __Pyx_CYFUNCTION_CCLASS | __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_AioCall_receive_serialized_mess, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__63)); if (unlikely(!__pyx_t_6)) __PYX_ERR(34, 364, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__AioCall, __pyx_n_s_receive_serialized_message, __pyx_t_6) < 0) __PYX_ERR(34, 364, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__AioCall);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":381
+ *             return EOF
+ * 
+ *     async def send_serialized_message(self, bytes message):             # <<<<<<<<<<<<<<
+ *         """Sends one single raw message in bytes."""
+ *         await _send_message(self,
+ */
+  __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_8_AioCall_42send_serialized_message, __Pyx_CYFUNCTION_CCLASS | __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_AioCall_send_serialized_message, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__64)); if (unlikely(!__pyx_t_6)) __PYX_ERR(34, 381, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__AioCall, __pyx_n_s_send_serialized_message, __pyx_t_6) < 0) __PYX_ERR(34, 381, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__AioCall);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":389
+ *                             self._loop)
+ * 
+ *     async def send_receive_close(self):             # <<<<<<<<<<<<<<
+ *         """Half close the RPC on the client-side."""
+ *         cdef SendCloseFromClientOperation op = SendCloseFromClientOperation(_EMPTY_FLAGS)
+ */
+  __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_8_AioCall_45send_receive_close, __Pyx_CYFUNCTION_CCLASS | __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_AioCall_send_receive_close, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__65)); if (unlikely(!__pyx_t_6)) __PYX_ERR(34, 389, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__AioCall, __pyx_n_s_send_receive_close, __pyx_t_6) < 0) __PYX_ERR(34, 389, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__AioCall);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":395
+ *         await execute_batch(self, ops, self._loop)
+ * 
+ *     async def initiate_unary_stream(self,             # <<<<<<<<<<<<<<
+ *                            bytes request,
+ *                            tuple outbound_initial_metadata,
+ */
+  __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_8_AioCall_48initiate_unary_stream, __Pyx_CYFUNCTION_CCLASS | __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_AioCall_initiate_unary_stream, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_6)) __PYX_ERR(34, 395, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_6, __pyx_tuple__241);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__AioCall, __pyx_n_s_initiate_unary_stream, __pyx_t_6) < 0) __PYX_ERR(34, 395, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__AioCall);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":437
+ *             await status_task
+ * 
+ *     async def stream_unary(self,             # <<<<<<<<<<<<<<
+ *                            tuple outbound_initial_metadata,
+ *                            object metadata_sent_observer,
+ */
+  __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_8_AioCall_51stream_unary, __Pyx_CYFUNCTION_CCLASS | __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_AioCall_stream_unary, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__67)); if (unlikely(!__pyx_t_6)) __PYX_ERR(34, 437, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_6, __pyx_tuple__241);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__AioCall, __pyx_n_s_stream_unary, __pyx_t_6) < 0) __PYX_ERR(34, 437, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__AioCall);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":496
+ *             return None
+ * 
+ *     async def initiate_stream_stream(self,             # <<<<<<<<<<<<<<
+ *                            tuple outbound_initial_metadata,
+ *                            object metadata_sent_observer,
+ */
+  __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_8_AioCall_54initiate_stream_stream, __Pyx_CYFUNCTION_CCLASS | __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_AioCall_initiate_stream_stream, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__68)); if (unlikely(!__pyx_t_6)) __PYX_ERR(34, 496, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_6, __pyx_tuple__241);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__AioCall, __pyx_n_s_initiate_stream_stream, __pyx_t_6) < 0) __PYX_ERR(34, 496, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__AioCall);
+
+  /* "(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_6 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_8_AioCall_57__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AioCall___reduce_cython, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__469)); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 1, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_6) < 0) __PYX_ERR(10, 1, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 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_6 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_8_AioCall_59__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AioCall___setstate_cython, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__470)); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 3, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_6) < 0) __PYX_ERR(10, 3, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":17
+ * 
+ * 
+ * class _WatchConnectivityFailed(Exception):             # <<<<<<<<<<<<<<
+ *     """Dedicated exception class for watch connectivity failed.
+ * 
+ */
+  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(8, 17, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  __Pyx_INCREF((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]));
+  __Pyx_GIVEREF((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]));
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])))) __PYX_ERR(8, 17, __pyx_L1_error);
+  __pyx_t_2 = __Pyx_PEP560_update_bases(__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 17, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_7 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(8, 17, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  __pyx_t_9 = __Pyx_Py3MetaclassPrepare(__pyx_t_7, __pyx_t_2, __pyx_n_s_WatchConnectivityFailed, __pyx_n_s_WatchConnectivityFailed, (PyObject *) NULL, __pyx_n_s_cython_cygrpc, __pyx_kp_s_Dedicated_exception_class_for_wa); if (unlikely(!__pyx_t_9)) __PYX_ERR(8, 17, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  if (__pyx_t_2 != __pyx_t_6) {
+    if (unlikely((PyDict_SetItemString(__pyx_t_9, "__orig_bases__", __pyx_t_6) < 0))) __PYX_ERR(8, 17, __pyx_L1_error)
+  }
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  __pyx_t_6 = __Pyx_Py3ClassCreate(__pyx_t_7, __pyx_n_s_WatchConnectivityFailed, __pyx_t_2, __pyx_t_9, NULL, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(8, 17, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_WatchConnectivityFailed, __pyx_t_6) < 0) __PYX_ERR(8, 17, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":25
+ *     'watch_connectivity_state',
+ *     'Timed out',
+ *     _WatchConnectivityFailed)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_WatchConnectivityFailed); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 25, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":22
+ *     It might be failed due to deadline exceeded.
+ *     """
+ * cdef CallbackFailureHandler _WATCH_CONNECTIVITY_FAILURE_HANDLER = CallbackFailureHandler(             # <<<<<<<<<<<<<<
+ *     'watch_connectivity_state',
+ *     'Timed out',
+ */
+  __pyx_t_7 = PyTuple_New(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(8, 22, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  __Pyx_INCREF(__pyx_n_s_watch_connectivity_state);
+  __Pyx_GIVEREF(__pyx_n_s_watch_connectivity_state);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_n_s_watch_connectivity_state)) __PYX_ERR(8, 22, __pyx_L1_error);
+  __Pyx_INCREF(__pyx_kp_s_Timed_out);
+  __Pyx_GIVEREF(__pyx_kp_s_Timed_out);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_kp_s_Timed_out)) __PYX_ERR(8, 22, __pyx_L1_error);
+  __Pyx_GIVEREF(__pyx_t_2);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_t_2)) __PYX_ERR(8, 22, __pyx_L1_error);
+  __pyx_t_2 = 0;
+  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_7_cython_6cygrpc_CallbackFailureHandler), __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 22, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  __Pyx_XGOTREF((PyObject *)__pyx_v_7_cython_6cygrpc__WATCH_CONNECTIVITY_FAILURE_HANDLER);
+  __Pyx_DECREF_SET(__pyx_v_7_cython_6cygrpc__WATCH_CONNECTIVITY_FAILURE_HANDLER, ((struct __pyx_obj_7_cython_6cygrpc_CallbackFailureHandler *)__pyx_t_2));
+  __Pyx_GIVEREF(__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":61
+ *         return f"<{class_name} {id_}>"
+ * 
+ *     def check_connectivity_state(self, bint try_to_connect):             # <<<<<<<<<<<<<<
+ *         """A Cython wrapper for Core's check connectivity state API."""
+ *         if self._status == AIO_CHANNEL_STATUS_DESTROYED:
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_10AioChannel_7check_connectivity_state, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AioChannel_check_connectivity_st, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__471)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 61, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_AioChannel, __pyx_n_s_check_connectivity_state, __pyx_t_2) < 0) __PYX_ERR(8, 61, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_AioChannel);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":71
+ *             )
+ * 
+ *     async def watch_connectivity_state(self,             # <<<<<<<<<<<<<<
+ *                                        grpc_connectivity_state last_observed_state,
+ *                                        object deadline):
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_10AioChannel_9watch_connectivity_state, __Pyx_CYFUNCTION_CCLASS | __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_AioChannel_watch_connectivity_st, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__72)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 71, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_AioChannel, __pyx_n_s_watch_connectivity_state, __pyx_t_2) < 0) __PYX_ERR(8, 71, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_AioChannel);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":103
+ *             return True
+ * 
+ *     def closing(self):             # <<<<<<<<<<<<<<
+ *         self._status = AIO_CHANNEL_STATUS_CLOSING
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_10AioChannel_12closing, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AioChannel_closing, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__473)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 103, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_AioChannel, __pyx_n_s_closing, __pyx_t_2) < 0) __PYX_ERR(8, 103, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_AioChannel);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":106
+ *         self._status = AIO_CHANNEL_STATUS_CLOSING
+ * 
+ *     def close(self):             # <<<<<<<<<<<<<<
+ *         self._status = AIO_CHANNEL_STATUS_DESTROYED
+ *         grpc_channel_destroy(self.channel)
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_10AioChannel_14close, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AioChannel_close, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__474)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 106, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_AioChannel, __pyx_n_s_close, __pyx_t_2) < 0) __PYX_ERR(8, 106, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_AioChannel);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":110
+ *         grpc_channel_destroy(self.channel)
+ * 
+ *     def closed(self):             # <<<<<<<<<<<<<<
+ *         return self._status in (AIO_CHANNEL_STATUS_CLOSING, AIO_CHANNEL_STATUS_DESTROYED)
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_10AioChannel_16closed, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AioChannel_closed, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__475)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 110, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_AioChannel, __pyx_n_s_closed, __pyx_t_2) < 0) __PYX_ERR(8, 110, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_AioChannel);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":113
+ *         return self._status in (AIO_CHANNEL_STATUS_CLOSING, AIO_CHANNEL_STATUS_DESTROYED)
+ * 
+ *     def call(self,             # <<<<<<<<<<<<<<
+ *              bytes method,
+ *              object deadline,
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_10AioChannel_18call, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AioChannel_call, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__477)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 113, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_AioChannel, __pyx_n_s_call, __pyx_t_2) < 0) __PYX_ERR(8, 113, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_AioChannel);
+
+  /* "(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_7_cython_6cygrpc_10AioChannel_20__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AioChannel___reduce_cython, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__478)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 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_7_cython_6cygrpc_10AioChannel_22__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AioChannel___setstate_cython, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__479)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 3, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":16
+ * 
+ * 
+ * import inspect             # <<<<<<<<<<<<<<
+ * import traceback
+ * import functools
+ */
+  __pyx_t_2 = __Pyx_patch_inspect(__Pyx_ImportDottedModule(__pyx_n_s_inspect, NULL)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 16, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_inspect, __pyx_t_2) < 0) __PYX_ERR(9, 16, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":17
+ * 
+ * import inspect
+ * import traceback             # <<<<<<<<<<<<<<
+ * import functools
+ * 
+ */
+  __pyx_t_2 = __Pyx_ImportDottedModule(__pyx_n_s_traceback, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 17, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_traceback, __pyx_t_2) < 0) __PYX_ERR(9, 17, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":18
+ * import inspect
+ * import traceback
+ * import functools             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_2 = __Pyx_ImportDottedModule(__pyx_n_s_functools, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 18, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_functools, __pyx_t_2) < 0) __PYX_ERR(9, 18, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":21
+ * 
+ * 
+ * cdef int _EMPTY_FLAG = 0             # <<<<<<<<<<<<<<
+ * cdef str _RPC_FINISHED_DETAILS = 'RPC already finished.'
+ * cdef str _SERVER_STOPPED_DETAILS = 'Server already stopped.'
+ */
+  __pyx_v_7_cython_6cygrpc__EMPTY_FLAG = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":22
+ * 
+ * cdef int _EMPTY_FLAG = 0
+ * cdef str _RPC_FINISHED_DETAILS = 'RPC already finished.'             # <<<<<<<<<<<<<<
+ * cdef str _SERVER_STOPPED_DETAILS = 'Server already stopped.'
+ * 
+ */
+  __Pyx_INCREF(__pyx_kp_s_RPC_already_finished);
+  __Pyx_XGOTREF(__pyx_v_7_cython_6cygrpc__RPC_FINISHED_DETAILS);
+  __Pyx_DECREF_SET(__pyx_v_7_cython_6cygrpc__RPC_FINISHED_DETAILS, __pyx_kp_s_RPC_already_finished);
+  __Pyx_GIVEREF(__pyx_kp_s_RPC_already_finished);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":23
+ * cdef int _EMPTY_FLAG = 0
+ * cdef str _RPC_FINISHED_DETAILS = 'RPC already finished.'
+ * cdef str _SERVER_STOPPED_DETAILS = 'Server already stopped.'             # <<<<<<<<<<<<<<
+ * 
+ * cdef _augment_metadata(tuple metadata, object compression):
+ */
+  __Pyx_INCREF(__pyx_kp_s_Server_already_stopped);
+  __Pyx_XGOTREF(__pyx_v_7_cython_6cygrpc__SERVER_STOPPED_DETAILS);
+  __Pyx_DECREF_SET(__pyx_v_7_cython_6cygrpc__SERVER_STOPPED_DETAILS, __pyx_kp_s_Server_already_stopped);
+  __Pyx_GIVEREF(__pyx_kp_s_Server_already_stopped);
+
+  /* "(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_7_cython_6cygrpc_19_HandlerCallDetails_3__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_HandlerCallDetails___reduce_cyt, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__480)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 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_7_cython_6cygrpc_19_HandlerCallDetails_5__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_HandlerCallDetails___setstate_c, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__481)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 3, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":41
+ * 
+ * 
+ * class _ServerStoppedError(BaseError):             # <<<<<<<<<<<<<<
+ *     """Raised if the server is stopped."""
+ * 
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_BaseError); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 41, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 41, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  __Pyx_GIVEREF(__pyx_t_2);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2)) __PYX_ERR(9, 41, __pyx_L1_error);
+  __pyx_t_2 = 0;
+  __pyx_t_2 = __Pyx_PEP560_update_bases(__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 41, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_9 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 41, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  __pyx_t_6 = __Pyx_Py3MetaclassPrepare(__pyx_t_9, __pyx_t_2, __pyx_n_s_ServerStoppedError, __pyx_n_s_ServerStoppedError, (PyObject *) NULL, __pyx_n_s_cython_cygrpc, __pyx_kp_s_Raised_if_the_server_is_stopped); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 41, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  if (__pyx_t_2 != __pyx_t_7) {
+    if (unlikely((PyDict_SetItemString(__pyx_t_6, "__orig_bases__", __pyx_t_7) < 0))) __PYX_ERR(9, 41, __pyx_L1_error)
+  }
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  __pyx_t_7 = __Pyx_Py3ClassCreate(__pyx_t_9, __pyx_n_s_ServerStoppedError, __pyx_t_2, __pyx_t_6, NULL, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 41, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ServerStoppedError, __pyx_t_7) < 0) __PYX_ERR(9, 41, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "(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_7_cython_6cygrpc_8RPCState_5__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_RPCState___reduce_cython, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__482)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 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_7_cython_6cygrpc_8RPCState_7__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_RPCState___setstate_cython, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__483)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 3, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":127
+ *         self._loop = loop
+ * 
+ *     async def read(self):             # <<<<<<<<<<<<<<
+ *         cdef bytes raw_message
+ *         self._rpc_state.raise_for_termination()
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_16_ServicerContext_3read, __Pyx_CYFUNCTION_CCLASS | __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_ServicerContext_read, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__73)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 127, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__ServicerContext, __pyx_n_s_read, __pyx_t_2) < 0) __PYX_ERR(9, 127, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__ServicerContext);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":140
+ *                             raw_message)
+ * 
+ *     async def write(self, object message):             # <<<<<<<<<<<<<<
+ *         self._rpc_state.raise_for_termination()
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_16_ServicerContext_6write, __Pyx_CYFUNCTION_CCLASS | __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_ServicerContext_write, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__74)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 140, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__ServicerContext, __pyx_n_s_write, __pyx_t_2) < 0) __PYX_ERR(9, 140, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__ServicerContext);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":150
+ *         self._rpc_state.metadata_sent = True
+ * 
+ *     async def send_initial_metadata(self, object metadata):             # <<<<<<<<<<<<<<
+ *         self._rpc_state.raise_for_termination()
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_16_ServicerContext_9send_initial_metadata, __Pyx_CYFUNCTION_CCLASS | __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_ServicerContext_send_initial_me, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__75)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 150, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__ServicerContext, __pyx_n_s_send_initial_metadata_2, __pyx_t_2) < 0) __PYX_ERR(9, 150, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__ServicerContext);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":167
+ *               object code,
+ *               str details='',
+ *               tuple trailing_metadata=_IMMUTABLE_EMPTY_METADATA):             # <<<<<<<<<<<<<<
+ *         if self._rpc_state.abort_exception is not None:
+ *             raise UsageError('Abort already called!')
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_IMMUTABLE_EMPTY_METADATA); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 167, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (!(likely(PyTuple_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_t_2))) __PYX_ERR(9, 167, __pyx_L1_error)
+  __pyx_k__76 = ((PyObject*)__pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":164
+ *             self._rpc_state.metadata_sent = True
+ * 
+ *     async def abort(self,             # <<<<<<<<<<<<<<
+ *               object code,
+ *               str details='',
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_IMMUTABLE_EMPTY_METADATA); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 167, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":167
+ *               object code,
+ *               str details='',
+ *               tuple trailing_metadata=_IMMUTABLE_EMPTY_METADATA):             # <<<<<<<<<<<<<<
+ *         if self._rpc_state.abort_exception is not None:
+ *             raise UsageError('Abort already called!')
+ */
+  if (!(likely(PyTuple_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_t_2))) __PYX_ERR(9, 167, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":164
+ *             self._rpc_state.metadata_sent = True
+ * 
+ *     async def abort(self,             # <<<<<<<<<<<<<<
+ *               object code,
+ *               str details='',
+ */
+  __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 164, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  __Pyx_INCREF(__pyx_kp_s__7);
+  __Pyx_GIVEREF(__pyx_kp_s__7);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_kp_s__7)) __PYX_ERR(9, 164, __pyx_L1_error);
+  __Pyx_GIVEREF(__pyx_t_2);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_2)) __PYX_ERR(9, 164, __pyx_L1_error);
+  __pyx_t_2 = 0;
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_16_ServicerContext_12abort, __Pyx_CYFUNCTION_CCLASS | __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_ServicerContext_abort, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__77)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 164, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_t_9);
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__ServicerContext, __pyx_n_s_abort, __pyx_t_2) < 0) __PYX_ERR(9, 164, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__ServicerContext);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":203
+ *             raise self._rpc_state.abort_exception
+ * 
+ *     async def abort_with_status(self, object status):             # <<<<<<<<<<<<<<
+ *         await self.abort(status.code, status.details, status.trailing_metadata)
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_16_ServicerContext_15abort_with_status, __Pyx_CYFUNCTION_CCLASS | __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_ServicerContext_abort_with_stat, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__78)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 203, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__ServicerContext, __pyx_n_s_abort_with_status, __pyx_t_2) < 0) __PYX_ERR(9, 203, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__ServicerContext);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":206
+ *         await self.abort(status.code, status.details, status.trailing_metadata)
+ * 
+ *     def set_trailing_metadata(self, object metadata):             # <<<<<<<<<<<<<<
+ *         raise_if_not_valid_trailing_metadata(metadata)
+ *         self._rpc_state.trailing_metadata = tuple(metadata)
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_16_ServicerContext_18set_trailing_metadata, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ServicerContext_set_trailing_me, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__488)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 206, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__ServicerContext, __pyx_n_s_set_trailing_metadata, __pyx_t_2) < 0) __PYX_ERR(9, 206, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__ServicerContext);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":210
+ *         self._rpc_state.trailing_metadata = tuple(metadata)
+ * 
+ *     def trailing_metadata(self):             # <<<<<<<<<<<<<<
+ *         return self._rpc_state.trailing_metadata
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_16_ServicerContext_20trailing_metadata, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ServicerContext_trailing_metada, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__489)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 210, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__ServicerContext, __pyx_n_s_trailing_metadata, __pyx_t_2) < 0) __PYX_ERR(9, 210, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__ServicerContext);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":213
+ *         return self._rpc_state.trailing_metadata
+ * 
+ *     def invocation_metadata(self):             # <<<<<<<<<<<<<<
+ *         return self._rpc_state.invocation_metadata()
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_16_ServicerContext_22invocation_metadata, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ServicerContext_invocation_meta, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__490)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 213, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__ServicerContext, __pyx_n_s_invocation_metadata, __pyx_t_2) < 0) __PYX_ERR(9, 213, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__ServicerContext);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":216
+ *         return self._rpc_state.invocation_metadata()
+ * 
+ *     def set_code(self, object code):             # <<<<<<<<<<<<<<
+ *         self._rpc_state.status_code = get_status_code(code)
+ *         self._rpc_state.py_status_code = code
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_16_ServicerContext_24set_code, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ServicerContext_set_code, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__492)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 216, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__ServicerContext, __pyx_n_s_set_code, __pyx_t_2) < 0) __PYX_ERR(9, 216, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__ServicerContext);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":220
+ *         self._rpc_state.py_status_code = code
+ * 
+ *     def code(self):             # <<<<<<<<<<<<<<
+ *         return self._rpc_state.py_status_code
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_16_ServicerContext_26code, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ServicerContext_code, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__493)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 220, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__ServicerContext, __pyx_n_s_code, __pyx_t_2) < 0) __PYX_ERR(9, 220, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__ServicerContext);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":223
+ *         return self._rpc_state.py_status_code
+ * 
+ *     def set_details(self, str details):             # <<<<<<<<<<<<<<
+ *         self._rpc_state.status_details = details
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_16_ServicerContext_28set_details, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ServicerContext_set_details, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__495)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 223, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__ServicerContext, __pyx_n_s_set_details, __pyx_t_2) < 0) __PYX_ERR(9, 223, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__ServicerContext);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":226
+ *         self._rpc_state.status_details = details
+ * 
+ *     def details(self):             # <<<<<<<<<<<<<<
+ *         return self._rpc_state.status_details
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_16_ServicerContext_30details, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ServicerContext_details, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__496)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 226, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__ServicerContext, __pyx_n_s_details, __pyx_t_2) < 0) __PYX_ERR(9, 226, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__ServicerContext);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":229
+ *         return self._rpc_state.status_details
+ * 
+ *     def set_compression(self, object compression):             # <<<<<<<<<<<<<<
+ *         if self._rpc_state.metadata_sent:
+ *             raise RuntimeError('Compression setting must be specified before sending initial metadata')
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_16_ServicerContext_32set_compression, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ServicerContext_set_compression, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__498)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 229, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__ServicerContext, __pyx_n_s_set_compression, __pyx_t_2) < 0) __PYX_ERR(9, 229, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__ServicerContext);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":235
+ *             self._rpc_state.compression_algorithm = compression
+ * 
+ *     def disable_next_message_compression(self):             # <<<<<<<<<<<<<<
+ *         self._rpc_state.disable_next_compression = True
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_16_ServicerContext_34disable_next_message_compression, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ServicerContext_disable_next_me, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__499)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 235, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__ServicerContext, __pyx_n_s_disable_next_message_compression, __pyx_t_2) < 0) __PYX_ERR(9, 235, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__ServicerContext);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":238
+ *         self._rpc_state.disable_next_compression = True
+ * 
+ *     def peer(self):             # <<<<<<<<<<<<<<
+ *         cdef char *c_peer = NULL
+ *         c_peer = grpc_call_get_peer(self._rpc_state.call)
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_16_ServicerContext_36peer, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ServicerContext_peer, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__501)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 238, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__ServicerContext, __pyx_n_s_peer, __pyx_t_2) < 0) __PYX_ERR(9, 238, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__ServicerContext);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":245
+ *         return peer
+ * 
+ *     def peer_identities(self):             # <<<<<<<<<<<<<<
+ *         cdef Call query_call = Call()
+ *         query_call.c_call = self._rpc_state.call
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_16_ServicerContext_38peer_identities, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ServicerContext_peer_identities, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__503)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 245, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__ServicerContext, __pyx_n_s_peer_identities, __pyx_t_2) < 0) __PYX_ERR(9, 245, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__ServicerContext);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":252
+ *         return identities
+ * 
+ *     def peer_identity_key(self):             # <<<<<<<<<<<<<<
+ *         cdef Call query_call = Call()
+ *         query_call.c_call = self._rpc_state.call
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_16_ServicerContext_40peer_identity_key, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ServicerContext_peer_identity_k, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__505)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 252, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__ServicerContext, __pyx_n_s_peer_identity_key, __pyx_t_2) < 0) __PYX_ERR(9, 252, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__ServicerContext);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":262
+ *             return None
+ * 
+ *     def auth_context(self):             # <<<<<<<<<<<<<<
+ *         cdef Call query_call = Call()
+ *         query_call.c_call = self._rpc_state.call
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_16_ServicerContext_42auth_context, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ServicerContext_auth_context, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__507)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 262, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__ServicerContext, __pyx_n_s_auth_context, __pyx_t_2) < 0) __PYX_ERR(9, 262, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__ServicerContext);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":275
+ *             return {}
+ * 
+ *     def time_remaining(self):             # <<<<<<<<<<<<<<
+ *         if self._rpc_state.details.deadline.seconds == _GPR_INF_FUTURE.seconds:
+ *             return None
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_16_ServicerContext_44time_remaining, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ServicerContext_time_remaining, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__508)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 275, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__ServicerContext, __pyx_n_s_time_remaining, __pyx_t_2) < 0) __PYX_ERR(9, 275, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__ServicerContext);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":281
+ *             return max(_time_from_timespec(self._rpc_state.details.deadline) - time.time(), 0)
+ * 
+ *     def add_done_callback(self, callback):             # <<<<<<<<<<<<<<
+ *         cb = functools.partial(callback, self)
+ *         self._rpc_state.callbacks.append(cb)
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_16_ServicerContext_46add_done_callback, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ServicerContext_add_done_callba, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__510)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 281, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__ServicerContext, __pyx_n_s_add_done_callback, __pyx_t_2) < 0) __PYX_ERR(9, 281, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__ServicerContext);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":285
+ *         self._rpc_state.callbacks.append(cb)
+ * 
+ *     def done(self):             # <<<<<<<<<<<<<<
+ *         return self._rpc_state.status_sent
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_16_ServicerContext_48done, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ServicerContext_done, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__511)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 285, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__ServicerContext, __pyx_n_s_done, __pyx_t_2) < 0) __PYX_ERR(9, 285, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__ServicerContext);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":288
+ *         return self._rpc_state.status_sent
+ * 
+ *     def cancelled(self):             # <<<<<<<<<<<<<<
+ *         return self._rpc_state.status_code == StatusCode.cancelled
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_16_ServicerContext_50cancelled, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ServicerContext_cancelled, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__512)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 288, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__ServicerContext, __pyx_n_s_cancelled, __pyx_t_2) < 0) __PYX_ERR(9, 288, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__ServicerContext);
+
+  /* "(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_7_cython_6cygrpc_16_ServicerContext_52__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ServicerContext___reduce_cython, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__513)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 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_7_cython_6cygrpc_16_ServicerContext_54__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ServicerContext___setstate_cyth, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__514)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 3, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":304
+ *               object code,
+ *               str details='',
+ *               tuple trailing_metadata=_IMMUTABLE_EMPTY_METADATA):             # <<<<<<<<<<<<<<
+ *         future = asyncio.run_coroutine_threadsafe(
+ *             self._context.abort(code, details, trailing_metadata),
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_IMMUTABLE_EMPTY_METADATA); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 304, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (!(likely(PyTuple_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_t_2))) __PYX_ERR(9, 304, __pyx_L1_error)
+  __pyx_k__80 = ((PyObject*)__pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":301
+ *         self._loop = context._loop
+ * 
+ *     def abort(self,             # <<<<<<<<<<<<<<
+ *               object code,
+ *               str details='',
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_IMMUTABLE_EMPTY_METADATA); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 304, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":304
+ *               object code,
+ *               str details='',
+ *               tuple trailing_metadata=_IMMUTABLE_EMPTY_METADATA):             # <<<<<<<<<<<<<<
+ *         future = asyncio.run_coroutine_threadsafe(
+ *             self._context.abort(code, details, trailing_metadata),
+ */
+  if (!(likely(PyTuple_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_t_2))) __PYX_ERR(9, 304, __pyx_L1_error)
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":301
+ *         self._loop = context._loop
+ * 
+ *     def abort(self,             # <<<<<<<<<<<<<<
+ *               object code,
+ *               str details='',
+ */
+  __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 301, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  __Pyx_INCREF(__pyx_kp_s__7);
+  __Pyx_GIVEREF(__pyx_kp_s__7);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_kp_s__7)) __PYX_ERR(9, 301, __pyx_L1_error);
+  __Pyx_GIVEREF(__pyx_t_2);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_2)) __PYX_ERR(9, 301, __pyx_L1_error);
+  __pyx_t_2 = 0;
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_20_SyncServicerContext_3abort, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_SyncServicerContext_abort, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__516)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 301, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_t_9);
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__SyncServicerContext, __pyx_n_s_abort, __pyx_t_2) < 0) __PYX_ERR(9, 301, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__SyncServicerContext);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":311
+ *         future.exception()
+ * 
+ *     def send_initial_metadata(self, object metadata):             # <<<<<<<<<<<<<<
+ *         future = asyncio.run_coroutine_threadsafe(
+ *             self._context.send_initial_metadata(metadata),
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_20_SyncServicerContext_5send_initial_metadata, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_SyncServicerContext_send_initia, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__518)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 311, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__SyncServicerContext, __pyx_n_s_send_initial_metadata_2, __pyx_t_2) < 0) __PYX_ERR(9, 311, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__SyncServicerContext);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":317
+ *         future.result()
+ * 
+ *     def set_trailing_metadata(self, object metadata):             # <<<<<<<<<<<<<<
+ *         self._context.set_trailing_metadata(metadata)
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_20_SyncServicerContext_7set_trailing_metadata, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_SyncServicerContext_set_trailin, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__519)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 317, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__SyncServicerContext, __pyx_n_s_set_trailing_metadata, __pyx_t_2) < 0) __PYX_ERR(9, 317, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__SyncServicerContext);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":320
+ *         self._context.set_trailing_metadata(metadata)
+ * 
+ *     def invocation_metadata(self):             # <<<<<<<<<<<<<<
+ *         return self._context.invocation_metadata()
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_20_SyncServicerContext_9invocation_metadata, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_SyncServicerContext_invocation, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__520)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 320, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__SyncServicerContext, __pyx_n_s_invocation_metadata, __pyx_t_2) < 0) __PYX_ERR(9, 320, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__SyncServicerContext);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":323
+ *         return self._context.invocation_metadata()
+ * 
+ *     def set_code(self, object code):             # <<<<<<<<<<<<<<
+ *         self._context.set_code(code)
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_20_SyncServicerContext_11set_code, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_SyncServicerContext_set_code, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__521)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 323, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__SyncServicerContext, __pyx_n_s_set_code, __pyx_t_2) < 0) __PYX_ERR(9, 323, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__SyncServicerContext);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":326
+ *         self._context.set_code(code)
+ * 
+ *     def set_details(self, str details):             # <<<<<<<<<<<<<<
+ *         self._context.set_details(details)
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_20_SyncServicerContext_13set_details, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_SyncServicerContext_set_details, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__522)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 326, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__SyncServicerContext, __pyx_n_s_set_details, __pyx_t_2) < 0) __PYX_ERR(9, 326, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__SyncServicerContext);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":329
+ *         self._context.set_details(details)
+ * 
+ *     def set_compression(self, object compression):             # <<<<<<<<<<<<<<
+ *         self._context.set_compression(compression)
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_20_SyncServicerContext_15set_compression, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_SyncServicerContext_set_compres, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__523)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 329, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__SyncServicerContext, __pyx_n_s_set_compression, __pyx_t_2) < 0) __PYX_ERR(9, 329, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__SyncServicerContext);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":332
+ *         self._context.set_compression(compression)
+ * 
+ *     def disable_next_message_compression(self):             # <<<<<<<<<<<<<<
+ *         self._context.disable_next_message_compression()
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_20_SyncServicerContext_17disable_next_message_compression, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_SyncServicerContext_disable_nex, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__524)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 332, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__SyncServicerContext, __pyx_n_s_disable_next_message_compression, __pyx_t_2) < 0) __PYX_ERR(9, 332, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__SyncServicerContext);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":335
+ *         self._context.disable_next_message_compression()
+ * 
+ *     def add_callback(self, object callback):             # <<<<<<<<<<<<<<
+ *         self._callbacks.append(callback)
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_20_SyncServicerContext_19add_callback, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_SyncServicerContext_add_callbac, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__525)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 335, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__SyncServicerContext, __pyx_n_s_add_callback, __pyx_t_2) < 0) __PYX_ERR(9, 335, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__SyncServicerContext);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":338
+ *         self._callbacks.append(callback)
+ * 
+ *     def peer(self):             # <<<<<<<<<<<<<<
+ *         return self._context.peer()
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_20_SyncServicerContext_21peer, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_SyncServicerContext_peer, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__526)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 338, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__SyncServicerContext, __pyx_n_s_peer, __pyx_t_2) < 0) __PYX_ERR(9, 338, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__SyncServicerContext);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":341
+ *         return self._context.peer()
+ * 
+ *     def peer_identities(self):             # <<<<<<<<<<<<<<
+ *         return self._context.peer_identities()
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_20_SyncServicerContext_23peer_identities, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_SyncServicerContext_peer_identi, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__527)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 341, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__SyncServicerContext, __pyx_n_s_peer_identities, __pyx_t_2) < 0) __PYX_ERR(9, 341, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__SyncServicerContext);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":344
+ *         return self._context.peer_identities()
+ * 
+ *     def peer_identity_key(self):             # <<<<<<<<<<<<<<
+ *         return self._context.peer_identity_key()
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_20_SyncServicerContext_25peer_identity_key, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_SyncServicerContext_peer_identi_2, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__528)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 344, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__SyncServicerContext, __pyx_n_s_peer_identity_key, __pyx_t_2) < 0) __PYX_ERR(9, 344, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__SyncServicerContext);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":347
+ *         return self._context.peer_identity_key()
+ * 
+ *     def auth_context(self):             # <<<<<<<<<<<<<<
+ *         return self._context.auth_context()
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_20_SyncServicerContext_27auth_context, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_SyncServicerContext_auth_contex, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__529)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 347, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__SyncServicerContext, __pyx_n_s_auth_context, __pyx_t_2) < 0) __PYX_ERR(9, 347, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__SyncServicerContext);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":350
+ *         return self._context.auth_context()
+ * 
+ *     def time_remaining(self):             # <<<<<<<<<<<<<<
+ *         return self._context.time_remaining()
+ * 
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_20_SyncServicerContext_29time_remaining, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_SyncServicerContext_time_remain, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__530)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 350, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__SyncServicerContext, __pyx_n_s_time_remaining, __pyx_t_2) < 0) __PYX_ERR(9, 350, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__SyncServicerContext);
+
+  /* "(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_7_cython_6cygrpc_20_SyncServicerContext_31__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_SyncServicerContext___reduce_cy, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__531)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 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_7_cython_6cygrpc_20_SyncServicerContext_33__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_SyncServicerContext___setstate, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__532)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 3, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":354
+ * 
+ * 
+ * async def _run_interceptor(object interceptors, object query_handler,             # <<<<<<<<<<<<<<
+ *                            object handler_call_details):
+ *     interceptor = next(interceptors, None)
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_151_run_interceptor, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_run_interceptor, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__81)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 354, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_run_interceptor, __pyx_t_2) < 0) __PYX_ERR(9, 354, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":365
+ * 
+ * 
+ * def _is_async_handler(object handler):             # <<<<<<<<<<<<<<
+ *     """Inspect if a method handler is async or sync."""
+ *     return inspect.isawaitable(handler) or inspect.iscoroutinefunction(handler) or inspect.isasyncgenfunction(handler)
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_154_is_async_handler, 0, __pyx_n_s_is_async_handler, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__535)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 365, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_is_async_handler, __pyx_t_2) < 0) __PYX_ERR(9, 365, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":370
+ * 
+ * 
+ * async def _find_method_handler(str method, tuple metadata, list generic_handlers,             # <<<<<<<<<<<<<<
+ *                           tuple interceptors):
+ *     def query_handlers(handler_call_details):
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_156_find_method_handler, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_find_method_handler, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__82)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 370, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_find_method_handler, __pyx_t_2) < 0) __PYX_ERR(9, 370, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":389
+ * 
+ * 
+ * async def _finish_handler_with_unary_response(RPCState rpc_state,             # <<<<<<<<<<<<<<
+ *                                               object unary_handler,
+ *                                               object request,
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_159_finish_handler_with_unary_response, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_finish_handler_with_unary_respo, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__85)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 389, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_finish_handler_with_unary_respo, __pyx_t_2) < 0) __PYX_ERR(9, 389, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":460
+ * 
+ * 
+ * async def _finish_handler_with_stream_responses(RPCState rpc_state,             # <<<<<<<<<<<<<<
+ *                                                 object stream_handler,
+ *                                                 object request,
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_162_finish_handler_with_stream_responses, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_finish_handler_with_stream_resp, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__86)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 460, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_finish_handler_with_stream_resp, __pyx_t_2) < 0) __PYX_ERR(9, 460, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":530
+ * 
+ * 
+ * async def _handle_unary_unary_rpc(object method_handler,             # <<<<<<<<<<<<<<
+ *                                   RPCState rpc_state,
+ *                                   object loop):
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_165_handle_unary_unary_rpc, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_handle_unary_unary_rpc, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__87)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 530, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_handle_unary_unary_rpc, __pyx_t_2) < 0) __PYX_ERR(9, 530, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":564
+ * 
+ * 
+ * async def _handle_unary_stream_rpc(object method_handler,             # <<<<<<<<<<<<<<
+ *                                    RPCState rpc_state,
+ *                                    object loop):
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_168_handle_unary_stream_rpc, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_handle_unary_stream_rpc, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__88)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 564, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_handle_unary_stream_rpc, __pyx_t_2) < 0) __PYX_ERR(9, 564, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":603
+ *         self._agen = None
+ * 
+ *     async def _async_message_receiver(self):             # <<<<<<<<<<<<<<
+ *         """An async generator that receives messages."""
+ *         cdef object message
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_16_MessageReceiver_3_async_message_receiver, __Pyx_CYFUNCTION_CCLASS | __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_MessageReceiver__async_message, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__89)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 603, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__MessageReceiver, __pyx_n_s_async_message_receiver, __pyx_t_2) < 0) __PYX_ERR(9, 603, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__MessageReceiver);
+
+  /* "(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_7_cython_6cygrpc_16_MessageReceiver_11__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_MessageReceiver___reduce_cython, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__540)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 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_7_cython_6cygrpc_16_MessageReceiver_13__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_MessageReceiver___setstate_cyth, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__541)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 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(10, 3, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":623
+ * 
+ * 
+ * async def _handle_stream_unary_rpc(object method_handler,             # <<<<<<<<<<<<<<
+ *                                    RPCState rpc_state,
+ *                                    object loop):
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_171_handle_stream_unary_rpc, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_handle_stream_unary_rpc, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__90)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 623, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_handle_stream_unary_rpc, __pyx_t_2) < 0) __PYX_ERR(9, 623, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":655
+ * 
+ * 
+ * async def _handle_stream_stream_rpc(object method_handler,             # <<<<<<<<<<<<<<
+ *                                     RPCState rpc_state,
+ *                                     object loop):
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_174_handle_stream_stream_rpc, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_handle_stream_stream_rpc, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__91)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 655, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_handle_stream_stream_rpc, __pyx_t_2) < 0) __PYX_ERR(9, 655, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":686
+ * 
+ * 
+ * async def _handle_exceptions(RPCState rpc_state, object rpc_coro, object loop):             # <<<<<<<<<<<<<<
+ *     try:
+ *         try:
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_177_handle_exceptions, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_handle_exceptions, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__92)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 686, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_handle_exceptions, __pyx_t_2) < 0) __PYX_ERR(9, 686, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":755
+ * 
+ * 
+ * async def _handle_cancellation_from_core(object rpc_task,             # <<<<<<<<<<<<<<
+ *                                          RPCState rpc_state,
+ *                                          object loop):
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_180_handle_cancellation_from_core, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_handle_cancellation_from_core, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__95)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 755, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_handle_cancellation_from_core, __pyx_t_2) < 0) __PYX_ERR(9, 755, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":772
+ * 
+ * 
+ * async def _schedule_rpc_coro(object rpc_coro,             # <<<<<<<<<<<<<<
+ *                              RPCState rpc_state,
+ *                              object loop):
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_183_schedule_rpc_coro, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_schedule_rpc_coro, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__96)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 772, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_schedule_rpc_coro, __pyx_t_2) < 0) __PYX_ERR(9, 772, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":785
+ * 
+ * 
+ * async def _handle_rpc(list generic_handlers, tuple interceptors,             # <<<<<<<<<<<<<<
+ *                       RPCState rpc_state, object loop, bint concurrency_exceeded):
+ *     cdef object method_handler
+ */
+  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_186_handle_rpc, __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_handle_rpc, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__97)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 785, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_handle_rpc, __pyx_t_2) < 0) __PYX_ERR(9, 785, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":848
+ * 
+ * 
+ * class _RequestCallError(Exception): pass             # <<<<<<<<<<<<<<
+ * 
+ * cdef CallbackFailureHandler REQUEST_CALL_FAILURE_HANDLER = CallbackFailureHandler(
+ */
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 848, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]));
+  __Pyx_GIVEREF((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]));
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])))) __PYX_ERR(9, 848, __pyx_L1_error);
+  __pyx_t_9 = __Pyx_PEP560_update_bases(__pyx_t_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 848, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  __pyx_t_6 = __Pyx_CalculateMetaclass(NULL, __pyx_t_9); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 848, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  __pyx_t_7 = __Pyx_Py3MetaclassPrepare(__pyx_t_6, __pyx_t_9, __pyx_n_s_RequestCallError, __pyx_n_s_RequestCallError, (PyObject *) NULL, __pyx_n_s_cython_cygrpc, (PyObject *) NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 848, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  if (__pyx_t_9 != __pyx_t_2) {
+    if (unlikely((PyDict_SetItemString(__pyx_t_7, "__orig_bases__", __pyx_t_2) < 0))) __PYX_ERR(9, 848, __pyx_L1_error)
+  }
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = __Pyx_Py3ClassCreate(__pyx_t_6, __pyx_n_s_RequestCallError, __pyx_t_9, __pyx_t_7, NULL, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 848, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_RequestCallError, __pyx_t_2) < 0) __PYX_ERR(9, 848, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":851
+ * 
+ * cdef CallbackFailureHandler REQUEST_CALL_FAILURE_HANDLER = CallbackFailureHandler(
+ *     'grpc_server_request_call', None, _RequestCallError)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_RequestCallError); if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 851, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":850
+ * class _RequestCallError(Exception): pass
+ * 
+ * cdef CallbackFailureHandler REQUEST_CALL_FAILURE_HANDLER = CallbackFailureHandler(             # <<<<<<<<<<<<<<
+ *     'grpc_server_request_call', None, _RequestCallError)
+ * 
+ */
+  __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 850, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  __Pyx_INCREF(__pyx_n_s_grpc_server_request_call);
+  __Pyx_GIVEREF(__pyx_n_s_grpc_server_request_call);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_n_s_grpc_server_request_call)) __PYX_ERR(9, 850, __pyx_L1_error);
+  __Pyx_INCREF(Py_None);
+  __Pyx_GIVEREF(Py_None);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 1, Py_None)) __PYX_ERR(9, 850, __pyx_L1_error);
+  __Pyx_GIVEREF(__pyx_t_9);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_9)) __PYX_ERR(9, 850, __pyx_L1_error);
+  __pyx_t_9 = 0;
+  __pyx_t_9 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_7_cython_6cygrpc_CallbackFailureHandler), __pyx_t_6, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 850, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  __Pyx_XGOTREF((PyObject *)__pyx_v_7_cython_6cygrpc_REQUEST_CALL_FAILURE_HANDLER);
+  __Pyx_DECREF_SET(__pyx_v_7_cython_6cygrpc_REQUEST_CALL_FAILURE_HANDLER, ((struct __pyx_obj_7_cython_6cygrpc_CallbackFailureHandler *)__pyx_t_9));
+  __Pyx_GIVEREF(__pyx_t_9);
+  __pyx_t_9 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":857
+ *     'grpc_server_shutdown_and_notify',
+ *     None,
+ *     InternalError)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_InternalError); if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 857, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":854
+ * 
+ * 
+ * cdef CallbackFailureHandler SERVER_SHUTDOWN_FAILURE_HANDLER = CallbackFailureHandler(             # <<<<<<<<<<<<<<
+ *     'grpc_server_shutdown_and_notify',
+ *     None,
+ */
+  __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 854, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  __Pyx_INCREF(__pyx_n_s_grpc_server_shutdown_and_notify);
+  __Pyx_GIVEREF(__pyx_n_s_grpc_server_shutdown_and_notify);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_n_s_grpc_server_shutdown_and_notify)) __PYX_ERR(9, 854, __pyx_L1_error);
+  __Pyx_INCREF(Py_None);
+  __Pyx_GIVEREF(Py_None);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 1, Py_None)) __PYX_ERR(9, 854, __pyx_L1_error);
+  __Pyx_GIVEREF(__pyx_t_9);
+  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_9)) __PYX_ERR(9, 854, __pyx_L1_error);
+  __pyx_t_9 = 0;
+  __pyx_t_9 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_7_cython_6cygrpc_CallbackFailureHandler), __pyx_t_6, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 854, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  __Pyx_XGOTREF((PyObject *)__pyx_v_7_cython_6cygrpc_SERVER_SHUTDOWN_FAILURE_HANDLER);
+  __Pyx_DECREF_SET(__pyx_v_7_cython_6cygrpc_SERVER_SHUTDOWN_FAILURE_HANDLER, ((struct __pyx_obj_7_cython_6cygrpc_CallbackFailureHandler *)__pyx_t_9));
+  __Pyx_GIVEREF(__pyx_t_9);
+  __pyx_t_9 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":869
+ *         self.limiter_concurrency_exceeded = False
+ * 
+ *     def check_before_request_call(self):             # <<<<<<<<<<<<<<
+ *         if self._active_rpcs >= self._maximum_concurrent_rpcs:
+ *             self.limiter_concurrency_exceeded = True
+ */
+  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_21_ConcurrentRpcLimiter_3check_before_request_call, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ConcurrentRpcLimiter_check_befo, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__547)); if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 869, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__ConcurrentRpcLimiter, __pyx_n_s_check_before_request_call, __pyx_t_9) < 0) __PYX_ERR(9, 869, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__ConcurrentRpcLimiter);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":875
+ *             self._active_rpcs += 1
+ * 
+ *     def _decrease_active_rpcs_count(self, unused_future):             # <<<<<<<<<<<<<<
+ *         self._active_rpcs -= 1
+ *         if self._active_rpcs < self._maximum_concurrent_rpcs:
+ */
+  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_21_ConcurrentRpcLimiter_5_decrease_active_rpcs_count, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ConcurrentRpcLimiter__decrease, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__549)); if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 875, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__ConcurrentRpcLimiter, __pyx_n_s_decrease_active_rpcs_count, __pyx_t_9) < 0) __PYX_ERR(9, 875, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__ConcurrentRpcLimiter);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":880
+ *             self.limiter_concurrency_exceeded = False
+ * 
+ *     def decrease_once_finished(self, object rpc_task):             # <<<<<<<<<<<<<<
+ *         rpc_task.add_done_callback(self._decrease_active_rpcs_count)
+ * 
+ */
+  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_21_ConcurrentRpcLimiter_7decrease_once_finished, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ConcurrentRpcLimiter_decrease_o, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__551)); if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 880, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc__ConcurrentRpcLimiter, __pyx_n_s_decrease_once_finished, __pyx_t_9) < 0) __PYX_ERR(9, 880, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc__ConcurrentRpcLimiter);
+
+  /* "(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_9 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_21_ConcurrentRpcLimiter_9__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ConcurrentRpcLimiter___reduce_c, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__552)); if (unlikely(!__pyx_t_9)) __PYX_ERR(10, 1, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_9) < 0) __PYX_ERR(10, 1, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 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_9 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_21_ConcurrentRpcLimiter_11__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ConcurrentRpcLimiter___setstate, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__553)); if (unlikely(!__pyx_t_9)) __PYX_ERR(10, 3, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_9) < 0) __PYX_ERR(10, 3, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":922
+ *             self._limiter = _ConcurrentRpcLimiter(maximum_concurrent_rpcs)
+ * 
+ *     def add_generic_rpc_handlers(self, object generic_rpc_handlers):             # <<<<<<<<<<<<<<
+ *         self._generic_handlers.extend(generic_rpc_handlers)
+ * 
+ */
+  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_9AioServer_3add_generic_rpc_handlers, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AioServer_add_generic_rpc_handle, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__555)); if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 922, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_AioServer, __pyx_n_s_add_generic_rpc_handlers, __pyx_t_9) < 0) __PYX_ERR(9, 922, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_AioServer);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":925
+ *         self._generic_handlers.extend(generic_rpc_handlers)
+ * 
+ *     def add_insecure_port(self, address):             # <<<<<<<<<<<<<<
+ *         return self._server.add_http2_port(address)
+ * 
+ */
+  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_9AioServer_5add_insecure_port, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AioServer_add_insecure_port, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__557)); if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 925, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_AioServer, __pyx_n_s_add_insecure_port, __pyx_t_9) < 0) __PYX_ERR(9, 925, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_AioServer);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":928
+ *         return self._server.add_http2_port(address)
+ * 
+ *     def add_secure_port(self, address, server_credentials):             # <<<<<<<<<<<<<<
+ *         return self._server.add_http2_port(address,
+ *                                            server_credentials._credentials)
+ */
+  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_9AioServer_7add_secure_port, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AioServer_add_secure_port, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__559)); if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 928, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_AioServer, __pyx_n_s_add_secure_port, __pyx_t_9) < 0) __PYX_ERR(9, 928, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_AioServer);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":932
+ *                                            server_credentials._credentials)
+ * 
+ *     async def _request_call(self):             # <<<<<<<<<<<<<<
+ *         cdef grpc_call_error error
+ *         cdef RPCState rpc_state = RPCState(self)
+ */
+  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_9AioServer_9_request_call, __Pyx_CYFUNCTION_CCLASS | __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_AioServer__request_call, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__99)); if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 932, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_AioServer, __pyx_n_s_request_call, __pyx_t_9) < 0) __PYX_ERR(9, 932, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_AioServer);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":952
+ *         return rpc_state
+ * 
+ *     async def _server_main_loop(self,             # <<<<<<<<<<<<<<
+ *                                 object server_started):
+ *         self._server.start(backup_queue=False)
+ */
+  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_9AioServer_12_server_main_loop, __Pyx_CYFUNCTION_CCLASS | __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_AioServer__server_main_loop, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__100)); if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 952, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_AioServer, __pyx_n_s_server_main_loop, __pyx_t_9) < 0) __PYX_ERR(9, 952, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_AioServer);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":994
+ *                 self._limiter.decrease_once_finished(rpc_task)
+ * 
+ *     def _serving_task_crash_handler(self, object task):             # <<<<<<<<<<<<<<
+ *         """Shutdown the server immediately if unexpectedly exited."""
+ *         if task.cancelled():
+ */
+  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_9AioServer_15_serving_task_crash_handler, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AioServer__serving_task_crash_ha, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__563)); if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 994, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_AioServer, __pyx_n_s_serving_task_crash_handler, __pyx_t_9) < 0) __PYX_ERR(9, 994, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_AioServer);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1005
+ *             self._loop.create_task(self.shutdown(None))
+ * 
+ *     async def start(self):             # <<<<<<<<<<<<<<
+ *         if self._status == AIO_SERVER_STATUS_RUNNING:
+ *             return
+ */
+  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_9AioServer_17start, __Pyx_CYFUNCTION_CCLASS | __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_AioServer_start, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__101)); if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 1005, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_AioServer, __pyx_n_s_start, __pyx_t_9) < 0) __PYX_ERR(9, 1005, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_AioServer);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1019
+ *         await server_started
+ * 
+ *     async def _start_shutting_down(self):             # <<<<<<<<<<<<<<
+ *         """Prepares the server to shutting down.
+ * 
+ */
+  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_9AioServer_20_start_shutting_down, __Pyx_CYFUNCTION_CCLASS | __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_AioServer__start_shutting_down, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__102)); if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 1019, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_AioServer, __pyx_n_s_start_shutting_down, __pyx_t_9) < 0) __PYX_ERR(9, 1019, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_AioServer);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1036
+ *             pass
+ * 
+ *     async def shutdown(self, grace):             # <<<<<<<<<<<<<<
+ *         """Gracefully shutdown the Core server.
+ * 
+ */
+  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_9AioServer_23shutdown, __Pyx_CYFUNCTION_CCLASS | __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_AioServer_shutdown, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__103)); if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 1036, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_AioServer, __pyx_n_s_shutdown, __pyx_t_9) < 0) __PYX_ERR(9, 1036, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_AioServer);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1076
+ *                 self._status = AIO_SERVER_STATUS_STOPPED
+ * 
+ *     async def wait_for_termination(self, object timeout):             # <<<<<<<<<<<<<<
+ *         if timeout is None:
+ *             await self._shutdown_completed
+ */
+  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_9AioServer_26wait_for_termination, __Pyx_CYFUNCTION_CCLASS | __Pyx_CYFUNCTION_COROUTINE, __pyx_n_s_AioServer_wait_for_termination, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__104)); if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 1076, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_AioServer, __pyx_n_s_wait_for_termination, __pyx_t_9) < 0) __PYX_ERR(9, 1076, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_AioServer);
+
+  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1109
+ *         return self._thread_pool
+ * 
+ *     def is_running(self):             # <<<<<<<<<<<<<<
+ *         return self._status == AIO_SERVER_STATUS_RUNNING
+ */
+  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_9AioServer_31is_running, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AioServer_is_running, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__567)); if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 1109, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_AioServer, __pyx_n_s_is_running, __pyx_t_9) < 0) __PYX_ERR(9, 1109, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_AioServer);
+
+  /* "(tree fragment)":1
+ * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
+ *     cdef tuple state
+ *     cdef object _dict
+ */
+  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_9AioServer_33__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AioServer___reduce_cython, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__568)); if (unlikely(!__pyx_t_9)) __PYX_ERR(10, 1, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_AioServer, __pyx_n_s_reduce_cython, __pyx_t_9) < 0) __PYX_ERR(10, 1, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_AioServer);
+
+  /* "(tree fragment)":16
+ *     else:
+ *         return __pyx_unpickle_AioServer, (type(self), 0xa3b308d, state)
+ * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
+ *     __pyx_unpickle_AioServer__set_state(self, __pyx_state)
+ */
+  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_9AioServer_35__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AioServer___setstate_cython, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__569)); if (unlikely(!__pyx_t_9)) __PYX_ERR(10, 16, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_7_cython_6cygrpc_AioServer, __pyx_n_s_setstate_cython, __pyx_t_9) < 0) __PYX_ERR(10, 16, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  PyType_Modified(__pyx_ptype_7_cython_6cygrpc_AioServer);
+
+  /* "_cython/cygrpc.pyx":88
+ * 
+ * 
+ * _initialize()             # <<<<<<<<<<<<<<
+ */
+  __pyx_t_9 = __pyx_f_7_cython_6cygrpc__initialize(); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 88, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+
+  /* "(tree fragment)":1
+ * def __pyx_unpickle_ChannelCredentials(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
+ *     cdef object __pyx_PickleError
+ *     cdef object __pyx_result
+ */
+  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_189__pyx_unpickle_ChannelCredentials, 0, __pyx_n_s_pyx_unpickle_ChannelCredential, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__571)); if (unlikely(!__pyx_t_9)) __PYX_ERR(10, 1, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_ChannelCredential, __pyx_t_9) < 0) __PYX_ERR(10, 1, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+
+  /* "(tree fragment)":11
+ *         __pyx_unpickle_ChannelCredentials__set_state(<ChannelCredentials> __pyx_result, __pyx_state)
+ *     return __pyx_result
+ * cdef __pyx_unpickle_ChannelCredentials__set_state(ChannelCredentials __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
+ *     if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'):
+ *         __pyx_result.__dict__.update(__pyx_state[0])
+ */
+  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_191__pyx_unpickle_InsecureChannelCredentials, 0, __pyx_n_s_pyx_unpickle_InsecureChannelCr, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__572)); if (unlikely(!__pyx_t_9)) __PYX_ERR(10, 1, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_InsecureChannelCr, __pyx_t_9) < 0) __PYX_ERR(10, 1, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+
+  /* "(tree fragment)":1
+ * def __pyx_unpickle__Tag(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
+ *     cdef object __pyx_PickleError
+ *     cdef object __pyx_result
+ */
+  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_193__pyx_unpickle__Tag, 0, __pyx_n_s_pyx_unpickle__Tag, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__573)); if (unlikely(!__pyx_t_9)) __PYX_ERR(10, 1, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle__Tag, __pyx_t_9) < 0) __PYX_ERR(10, 1, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+
+  /* "(tree fragment)":11
+ *         __pyx_unpickle__Tag__set_state(<_Tag> __pyx_result, __pyx_state)
+ *     return __pyx_result
+ * cdef __pyx_unpickle__Tag__set_state(_Tag __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
+ *     if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'):
+ *         __pyx_result.__dict__.update(__pyx_state[0])
+ */
+  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_195__pyx_unpickle_CensusContext, 0, __pyx_n_s_pyx_unpickle_CensusContext, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__574)); if (unlikely(!__pyx_t_9)) __PYX_ERR(10, 1, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_CensusContext, __pyx_t_9) < 0) __PYX_ERR(10, 1, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+
+  /* "(tree fragment)":1
+ * def __pyx_unpickle_AioServer(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
+ *     cdef object __pyx_PickleError
+ *     cdef object __pyx_result
+ */
+  __pyx_t_9 = __Pyx_CyFunction_New(&__pyx_mdef_7_cython_6cygrpc_197__pyx_unpickle_AioServer, 0, __pyx_n_s_pyx_unpickle_AioServer, NULL, __pyx_n_s_cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__575)); if (unlikely(!__pyx_t_9)) __PYX_ERR(10, 1, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_AioServer, __pyx_t_9) < 0) __PYX_ERR(10, 1, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+
+  /* "_cython/cygrpc.pyx":1
+ * # Copyright 2015 gRPC authors.             # <<<<<<<<<<<<<<
+ * #
+ * # Licensed under the Apache License, Version 2.0 (the "License");
+ */
+  __pyx_t_9 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_9) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+
+  /*--- Wrapped vars code ---*/
+
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_9);
+  if (__pyx_m) {
+    if (__pyx_d && stringtab_initialized) {
+      __Pyx_AddTraceback("init _cython.cygrpc", __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 _cython.cygrpc");
+  }
+  __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;
+}
+
+/* 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
+
+/* 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;
+}
+
+/* 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);
+}
+
+/* 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;
+}
+
+/* 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
+
+/* 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;
+}
+
+/* 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;
+}
+
+/* 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
+
+/* decode_c_bytes */
+static CYTHON_INLINE PyObject* __Pyx_decode_c_bytes(
+         const char* cstring, Py_ssize_t length, 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)) {
+    if (unlikely((start < 0) | (stop < 0))) {
+        if (start < 0) {
+            start += length;
+            if (start < 0)
+                start = 0;
+        }
+        if (stop < 0)
+            stop += length;
+    }
+    if (stop > length)
+        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);
+    }
+}
+
+/* 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;
+}
+
+/* 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);
+}
+
+/* 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;
+}
+
+/* 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);
+}
+
+/* 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));
+}
+
+/* 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;
+}
+
+/* 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();
+}
+
+/* PyObjectCall2Args */
+static CYTHON_INLINE PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2) {
+    PyObject *args[3] = {NULL, arg1, arg2};
+    return __Pyx_PyObject_FastCall(function, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET);
+}
+
+/* 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;
+}
+
+/* PyObjectCallMethod1 */
+#if !(CYTHON_VECTORCALL && __PYX_LIMITED_VERSION_HEX >= 0x030C00A2)
+static PyObject* __Pyx__PyObject_CallMethod1(PyObject* method, PyObject* arg) {
+    PyObject *result = __Pyx_PyObject_CallOneArg(method, arg);
+    Py_DECREF(method);
+    return result;
+}
+#endif
+static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg) {
+#if CYTHON_VECTORCALL && __PYX_LIMITED_VERSION_HEX >= 0x030C00A2
+    PyObject *args[2] = {obj, arg};
+    (void) __Pyx_PyObject_GetMethod;
+    (void) __Pyx_PyObject_CallOneArg;
+    (void) __Pyx_PyObject_Call2Args;
+    return PyObject_VectorcallMethod(method_name, args, 2 | PY_VECTORCALL_ARGUMENTS_OFFSET, NULL);
+#else
+    PyObject *method = NULL, *result;
+    int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method);
+    if (likely(is_method)) {
+        result = __Pyx_PyObject_Call2Args(method, obj, arg);
+        Py_DECREF(method);
+        return result;
+    }
+    if (unlikely(!method)) return NULL;
+    return __Pyx__PyObject_CallMethod1(method, arg);
+#endif
+}
+
+/* append */
+static CYTHON_INLINE int __Pyx_PyObject_Append(PyObject* L, PyObject* x) {
+    if (likely(PyList_CheckExact(L))) {
+        if (unlikely(__Pyx_PyList_Append(L, x) < 0)) return -1;
+    } else {
+        PyObject* retval = __Pyx_PyObject_CallMethod1(L, __pyx_n_s_append, x);
+        if (unlikely(!retval))
+            return -1;
+        Py_DECREF(retval);
+    }
+    return 0;
+}
+
+/* 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;
+    }
+}
+
+/* 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
+
+/* 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
+
+/* RaiseNoneIterError */
+static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) {
+    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
+}
+
+/* UnpackUnboundCMethod */
+static PyObject *__Pyx_SelflessCall(PyObject *method, PyObject *args, PyObject *kwargs) {
+    PyObject *result;
+    PyObject *selfless_args = PyTuple_GetSlice(args, 1, PyTuple_Size(args));
+    if (unlikely(!selfless_args)) return NULL;
+    result = PyObject_Call(method, selfless_args, kwargs);
+    Py_DECREF(selfless_args);
+    return result;
+}
+static PyMethodDef __Pyx_UnboundCMethod_Def = {
+     "CythonUnboundCMethod",
+     __PYX_REINTERPRET_FUNCION(PyCFunction, __Pyx_SelflessCall),
+     METH_VARARGS | METH_KEYWORDS,
+     NULL
+};
+static int __Pyx_TryUnpackUnboundCMethod(__Pyx_CachedCFunction* target) {
+    PyObject *method;
+    method = __Pyx_PyObject_GetAttrStr(target->type, *target->method_name);
+    if (unlikely(!method))
+        return -1;
+    target->method = method;
+#if CYTHON_COMPILING_IN_CPYTHON
+    #if PY_MAJOR_VERSION >= 3
+    if (likely(__Pyx_TypeCheck(method, &PyMethodDescr_Type)))
+    #else
+    if (likely(!__Pyx_CyOrPyCFunction_Check(method)))
+    #endif
+    {
+        PyMethodDescrObject *descr = (PyMethodDescrObject*) method;
+        target->func = descr->d_method->ml_meth;
+        target->flag = descr->d_method->ml_flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_STACKLESS);
+    } else
+#endif
+#if CYTHON_COMPILING_IN_PYPY
+#else
+    if (PyCFunction_Check(method))
+#endif
+    {
+        PyObject *self;
+        int self_found;
+#if CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_PYPY
+        self = PyObject_GetAttrString(method, "__self__");
+        if (!self) {
+            PyErr_Clear();
+        }
+#else
+        self = PyCFunction_GET_SELF(method);
+#endif
+        self_found = (self && self != Py_None);
+#if CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_PYPY
+        Py_XDECREF(self);
+#endif
+        if (self_found) {
+            PyObject *unbound_method = PyCFunction_New(&__Pyx_UnboundCMethod_Def, method);
+            if (unlikely(!unbound_method)) return -1;
+            Py_DECREF(method);
+            target->method = unbound_method;
+        }
+    }
+    return 0;
+}
+
+/* CallUnboundCMethod2 */
+#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030600B1
+static CYTHON_INLINE PyObject *__Pyx_CallUnboundCMethod2(__Pyx_CachedCFunction *cfunc, PyObject *self, PyObject *arg1, PyObject *arg2) {
+    if (likely(cfunc->func)) {
+        PyObject *args[2] = {arg1, arg2};
+        if (cfunc->flag == METH_FASTCALL) {
+            #if PY_VERSION_HEX >= 0x030700A0
+            return (*(__Pyx_PyCFunctionFast)(void*)(PyCFunction)cfunc->func)(self, args, 2);
+            #else
+            return (*(__Pyx_PyCFunctionFastWithKeywords)(void*)(PyCFunction)cfunc->func)(self, args, 2, NULL);
+            #endif
+        }
+        #if PY_VERSION_HEX >= 0x030700A0
+        if (cfunc->flag == (METH_FASTCALL | METH_KEYWORDS))
+            return (*(__Pyx_PyCFunctionFastWithKeywords)(void*)(PyCFunction)cfunc->func)(self, args, 2, NULL);
+        #endif
+    }
+    return __Pyx__CallUnboundCMethod2(cfunc, self, arg1, arg2);
+}
+#endif
+static PyObject* __Pyx__CallUnboundCMethod2(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg1, PyObject* arg2){
+    PyObject *args, *result = NULL;
+    if (unlikely(!cfunc->func && !cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL;
+#if CYTHON_COMPILING_IN_CPYTHON
+    if (cfunc->func && (cfunc->flag & METH_VARARGS)) {
+        args = PyTuple_New(2);
+        if (unlikely(!args)) goto bad;
+        Py_INCREF(arg1);
+        PyTuple_SET_ITEM(args, 0, arg1);
+        Py_INCREF(arg2);
+        PyTuple_SET_ITEM(args, 1, arg2);
+        if (cfunc->flag & METH_KEYWORDS)
+            result = (*(PyCFunctionWithKeywords)(void*)(PyCFunction)cfunc->func)(self, args, NULL);
+        else
+            result = (*cfunc->func)(self, args);
+    } else {
+        args = PyTuple_New(3);
+        if (unlikely(!args)) goto bad;
+        Py_INCREF(self);
+        PyTuple_SET_ITEM(args, 0, self);
+        Py_INCREF(arg1);
+        PyTuple_SET_ITEM(args, 1, arg1);
+        Py_INCREF(arg2);
+        PyTuple_SET_ITEM(args, 2, arg2);
+        result = __Pyx_PyObject_Call(cfunc->method, args, NULL);
+    }
+#else
+    args = PyTuple_Pack(3, self, arg1, arg2);
+    if (unlikely(!args)) goto bad;
+    result = __Pyx_PyObject_Call(cfunc->method, args, NULL);
+#endif
+bad:
+    Py_XDECREF(args);
+    return result;
+}
+
+/* CallUnboundCMethod1 */
+#if CYTHON_COMPILING_IN_CPYTHON
+static CYTHON_INLINE PyObject* __Pyx_CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg) {
+    if (likely(cfunc->func)) {
+        int flag = cfunc->flag;
+        if (flag == METH_O) {
+            return (*(cfunc->func))(self, arg);
+        } else if ((PY_VERSION_HEX >= 0x030600B1) && flag == METH_FASTCALL) {
+            #if PY_VERSION_HEX >= 0x030700A0
+                return (*(__Pyx_PyCFunctionFast)(void*)(PyCFunction)cfunc->func)(self, &arg, 1);
+            #else
+                return (*(__Pyx_PyCFunctionFastWithKeywords)(void*)(PyCFunction)cfunc->func)(self, &arg, 1, NULL);
+            #endif
+        } else if ((PY_VERSION_HEX >= 0x030700A0) && flag == (METH_FASTCALL | METH_KEYWORDS)) {
+            return (*(__Pyx_PyCFunctionFastWithKeywords)(void*)(PyCFunction)cfunc->func)(self, &arg, 1, NULL);
+        }
+    }
+    return __Pyx__CallUnboundCMethod1(cfunc, self, arg);
+}
+#endif
+static PyObject* __Pyx__CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg){
+    PyObject *args, *result = NULL;
+    if (unlikely(!cfunc->func && !cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL;
+#if CYTHON_COMPILING_IN_CPYTHON
+    if (cfunc->func && (cfunc->flag & METH_VARARGS)) {
+        args = PyTuple_New(1);
+        if (unlikely(!args)) goto bad;
+        Py_INCREF(arg);
+        PyTuple_SET_ITEM(args, 0, arg);
+        if (cfunc->flag & METH_KEYWORDS)
+            result = (*(PyCFunctionWithKeywords)(void*)(PyCFunction)cfunc->func)(self, args, NULL);
+        else
+            result = (*cfunc->func)(self, args);
+    } else {
+        args = PyTuple_New(2);
+        if (unlikely(!args)) goto bad;
+        Py_INCREF(self);
+        PyTuple_SET_ITEM(args, 0, self);
+        Py_INCREF(arg);
+        PyTuple_SET_ITEM(args, 1, arg);
+        result = __Pyx_PyObject_Call(cfunc->method, args, NULL);
+    }
+#else
+    args = PyTuple_Pack(2, self, arg);
+    if (unlikely(!args)) goto bad;
+    result = __Pyx_PyObject_Call(cfunc->method, args, NULL);
+#endif
+bad:
+    Py_XDECREF(args);
+    return result;
+}
+
+/* py_dict_pop */
+static CYTHON_INLINE PyObject *__Pyx_PyDict_Pop(PyObject *d, PyObject *key, PyObject *default_value) {
+#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX > 0x030600B3 & PY_VERSION_HEX < 0x030d0000
+    if ((1)) {
+        return _PyDict_Pop(d, key, default_value);
+    } else
+#endif
+    if (default_value) {
+        return __Pyx_CallUnboundCMethod2(&__pyx_umethod_PyDict_Type_pop, d, key, default_value);
+    } else {
+        return __Pyx_CallUnboundCMethod1(&__pyx_umethod_PyDict_Type_pop, d, key);
+    }
+}
+
+/* pyfrozenset_new */
+static CYTHON_INLINE PyObject* __Pyx_PyFrozenSet_New(PyObject* it) {
+    if (it) {
+        PyObject* result;
+#if CYTHON_COMPILING_IN_PYPY
+        PyObject* args;
+        args = PyTuple_Pack(1, it);
+        if (unlikely(!args))
+            return NULL;
+        result = PyObject_Call((PyObject*)&PyFrozenSet_Type, args, NULL);
+        Py_DECREF(args);
+        return result;
+#else
+        if (PyFrozenSet_CheckExact(it)) {
+            Py_INCREF(it);
+            return it;
+        }
+        result = PyFrozenSet_New(it);
+        if (unlikely(!result))
+            return NULL;
+        if ((PY_VERSION_HEX >= 0x031000A1) || likely(PySet_GET_SIZE(result)))
+            return result;
+        Py_DECREF(result);
+#endif
+    }
+#if CYTHON_USE_TYPE_SLOTS
+    return PyFrozenSet_Type.tp_new(&PyFrozenSet_Type, __pyx_empty_tuple, NULL);
+#else
+    return PyObject_Call((PyObject*)&PyFrozenSet_Type, __pyx_empty_tuple, NULL);
+#endif
+}
+
+/* py_set_discard_unhashable */
+static int __Pyx_PySet_DiscardUnhashable(PyObject *set, PyObject *key) {
+    PyObject *tmpkey;
+    int rv;
+    if (likely(!PySet_Check(key) || !PyErr_ExceptionMatches(PyExc_TypeError)))
+        return -1;
+    PyErr_Clear();
+    tmpkey = __Pyx_PyFrozenSet_New(key);
+    if (tmpkey == NULL)
+        return -1;
+    rv = PySet_Discard(set, tmpkey);
+    Py_DECREF(tmpkey);
+    return rv;
+}
+
+/* py_set_remove */
+static int __Pyx_PySet_RemoveNotFound(PyObject *set, PyObject *key, int found) {
+    if (unlikely(found < 0)) {
+        found = __Pyx_PySet_DiscardUnhashable(set, key);
+    }
+    if (likely(found == 0)) {
+        PyObject *tup;
+        tup = PyTuple_Pack(1, key);
+        if (!tup)
+            return -1;
+        PyErr_SetObject(PyExc_KeyError, tup);
+        Py_DECREF(tup);
+        return -1;
+    }
+    return found;
+}
+static CYTHON_INLINE int __Pyx_PySet_Remove(PyObject *set, PyObject *key) {
+    int found = PySet_Discard(set, key);
+    if (unlikely(found != 1)) {
+        return __Pyx_PySet_RemoveNotFound(set, key, found);
+    }
+    return 0;
+}
+
+/* RaiseClosureNameError */
+static CYTHON_INLINE void __Pyx_RaiseClosureNameError(const char *varname) {
+    PyErr_Format(PyExc_NameError, "free variable '%s' referenced before assignment in enclosing scope", varname);
+}
+
+/* set_iter */
+static CYTHON_INLINE PyObject* __Pyx_set_iterator(PyObject* iterable, int is_set,
+                                                  Py_ssize_t* p_orig_length, int* p_source_is_set) {
+#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030d0000
+    is_set = is_set || likely(PySet_CheckExact(iterable) || PyFrozenSet_CheckExact(iterable));
+    *p_source_is_set = is_set;
+    if (likely(is_set)) {
+        *p_orig_length = PySet_Size(iterable);
+        Py_INCREF(iterable);
+        return iterable;
+    }
+#else
+    CYTHON_UNUSED_VAR(is_set);
+    *p_source_is_set = 0;
+#endif
+    *p_orig_length = 0;
+    return PyObject_GetIter(iterable);
+}
+static CYTHON_INLINE int __Pyx_set_iter_next(
+        PyObject* iter_obj, Py_ssize_t orig_length,
+        Py_ssize_t* ppos, PyObject **value,
+        int source_is_set) {
+    if (!CYTHON_COMPILING_IN_CPYTHON || PY_VERSION_HEX >= 0x030d0000 || unlikely(!source_is_set)) {
+        *value = PyIter_Next(iter_obj);
+        if (unlikely(!*value)) {
+            return __Pyx_IterFinish();
+        }
+        CYTHON_UNUSED_VAR(orig_length);
+        CYTHON_UNUSED_VAR(ppos);
+        return 1;
+    }
+#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030d0000
+    if (unlikely(PySet_GET_SIZE(iter_obj) != orig_length)) {
+        PyErr_SetString(
+            PyExc_RuntimeError,
+            "set changed size during iteration");
+        return -1;
+    }
+    {
+        Py_hash_t hash;
+        int ret = _PySet_NextEntry(iter_obj, ppos, value, &hash);
+        assert (ret != -1);
+        if (likely(ret)) {
+            Py_INCREF(*value);
+            return 1;
+        }
+    }
+#endif
+    return 0;
+}
+
+/* CallUnboundCMethod0 */
+static PyObject* __Pyx__CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self) {
+    PyObject *args, *result = NULL;
+    if (unlikely(!cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL;
+#if CYTHON_ASSUME_SAFE_MACROS
+    args = PyTuple_New(1);
+    if (unlikely(!args)) goto bad;
+    Py_INCREF(self);
+    PyTuple_SET_ITEM(args, 0, self);
+#else
+    args = PyTuple_Pack(1, self);
+    if (unlikely(!args)) goto bad;
+#endif
+    result = __Pyx_PyObject_Call(cfunc->method, args, NULL);
+    Py_DECREF(args);
+bad:
+    return result;
+}
+
+/* py_dict_values */
+static CYTHON_INLINE PyObject* __Pyx_PyDict_Values(PyObject* d) {
+    if (PY_MAJOR_VERSION >= 3)
+        return __Pyx_CallUnboundCMethod0(&__pyx_umethod_PyDict_Type_values, d);
+    else
+        return PyDict_Values(d);
+}
+
+/* PyFloatBinop */
+#if !CYTHON_COMPILING_IN_PYPY
+static PyObject* __Pyx_PyFloat_AddObjC(PyObject *op1, PyObject *op2, double floatval, int inplace, int zerodivision_check) {
+    const double b = floatval;
+    double a, result;
+    CYTHON_UNUSED_VAR(inplace);
+    CYTHON_UNUSED_VAR(zerodivision_check);
+    if (likely(PyFloat_CheckExact(op1))) {
+#if CYTHON_COMPILING_IN_LIMITED_API
+        a = __pyx_PyFloat_AsDouble(op1);
+#else
+        a = PyFloat_AS_DOUBLE(op1);
+#endif
+        
+    } else
+    #if PY_MAJOR_VERSION < 3
+    if (likely(PyInt_CheckExact(op1))) {
+        a = (double) PyInt_AS_LONG(op1);
+        
+    } else
+    #endif
+    if (likely(PyLong_CheckExact(op1))) {
+        #if CYTHON_USE_PYLONG_INTERNALS
+        if (__Pyx_PyLong_IsZero(op1)) {
+            a = 0.0;
+            
+        } else if (__Pyx_PyLong_IsCompact(op1)) {
+            a = (double) __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:
+                case 2:
+                    if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (1 * PyLong_SHIFT < 53))) {
+                        a = (double) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
+                        if ((8 * sizeof(unsigned long) < 53) || (2 * PyLong_SHIFT < 53) || (a < (double) ((PY_LONG_LONG)1 << 53))) {
+                            if (size == -2)
+                                a = -a;
+                            break;
+                        }
+                    }
+                    CYTHON_FALLTHROUGH;
+                case -3:
+                case 3:
+                    if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (2 * PyLong_SHIFT < 53))) {
+                        a = (double) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
+                        if ((8 * sizeof(unsigned long) < 53) || (3 * PyLong_SHIFT < 53) || (a < (double) ((PY_LONG_LONG)1 << 53))) {
+                            if (size == -3)
+                                a = -a;
+                            break;
+                        }
+                    }
+                    CYTHON_FALLTHROUGH;
+                case -4:
+                case 4:
+                    if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (3 * PyLong_SHIFT < 53))) {
+                        a = (double) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
+                        if ((8 * sizeof(unsigned long) < 53) || (4 * PyLong_SHIFT < 53) || (a < (double) ((PY_LONG_LONG)1 << 53))) {
+                            if (size == -4)
+                                a = -a;
+                            break;
+                        }
+                    }
+                    CYTHON_FALLTHROUGH;
+                default:
+        #endif
+                    a = PyLong_AsDouble(op1);
+                    if (unlikely(a == -1.0 && PyErr_Occurred())) return NULL;
+        #if CYTHON_USE_PYLONG_INTERNALS
+            }
+        }
+        #endif
+    } else {
+        return (inplace ? PyNumber_InPlaceAdd : PyNumber_Add)(op1, op2);
+    }
+        PyFPE_START_PROTECT("add", return NULL)
+        result = a + b;
+        PyFPE_END_PROTECT(result)
+        return PyFloat_FromDouble(result);
+}
+#endif
+
+/* py_dict_keys */
+static CYTHON_INLINE PyObject* __Pyx_PyDict_Keys(PyObject* d) {
+    if (PY_MAJOR_VERSION >= 3)
+        return __Pyx_CallUnboundCMethod0(&__pyx_umethod_PyDict_Type_keys, d);
+    else
+        return PyDict_Keys(d);
+}
+
+/* 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
+
+/* IterNext */
+static PyObject *__Pyx_PyIter_Next2Default(PyObject* defval) {
+    PyObject* exc_type;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    exc_type = __Pyx_PyErr_CurrentExceptionType();
+    if (unlikely(exc_type)) {
+        if (!defval || unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))
+            return NULL;
+        __Pyx_PyErr_Clear();
+        Py_INCREF(defval);
+        return defval;
+    }
+    if (defval) {
+        Py_INCREF(defval);
+        return defval;
+    }
+    __Pyx_PyErr_SetNone(PyExc_StopIteration);
+    return NULL;
+}
+static void __Pyx_PyIter_Next_ErrorNoIterator(PyObject *iterator) {
+    __Pyx_TypeName iterator_type_name = __Pyx_PyType_GetName(Py_TYPE(iterator));
+    PyErr_Format(PyExc_TypeError,
+        __Pyx_FMT_TYPENAME " object is not an iterator", iterator_type_name);
+    __Pyx_DECREF_TypeName(iterator_type_name);
+}
+static CYTHON_INLINE PyObject *__Pyx_PyIter_Next2(PyObject* iterator, PyObject* defval) {
+    PyObject* next;
+    iternextfunc iternext = Py_TYPE(iterator)->tp_iternext;
+    if (likely(iternext)) {
+#if CYTHON_USE_TYPE_SLOTS || CYTHON_COMPILING_IN_PYPY
+        next = iternext(iterator);
+        if (likely(next))
+            return next;
+#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030d0000
+        if (unlikely(iternext == &_PyObject_NextNotImplemented))
+            return NULL;
+#endif
+#else
+        next = PyIter_Next(iterator);
+        if (likely(next))
+            return next;
+#endif
+    } else if (CYTHON_USE_TYPE_SLOTS || unlikely(!PyIter_Check(iterator))) {
+        __Pyx_PyIter_Next_ErrorNoIterator(iterator);
+        return NULL;
+    }
+#if !CYTHON_USE_TYPE_SLOTS
+    else {
+        next = PyIter_Next(iterator);
+        if (likely(next))
+            return next;
+    }
+#endif
+    return __Pyx_PyIter_Next2Default(defval);
+}
+
+/* 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
+}
+
+/* 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
+}
+
+/* PyIntCompare */
+static CYTHON_INLINE int __Pyx_PyInt_BoolEqObjC(PyObject *op1, PyObject *op2, long intval, long inplace) {
+    CYTHON_MAYBE_UNUSED_VAR(intval);
+    CYTHON_UNUSED_VAR(inplace);
+    if (op1 == op2) {
+        return 1;
+    }
+    #if PY_MAJOR_VERSION < 3
+    if (likely(PyInt_CheckExact(op1))) {
+        const long b = intval;
+        long a = PyInt_AS_LONG(op1);
+        return (a == b);
+    }
+    #endif
+    #if CYTHON_USE_PYLONG_INTERNALS
+    if (likely(PyLong_CheckExact(op1))) {
+        int unequal;
+        unsigned long uintval;
+        Py_ssize_t size = __Pyx_PyLong_DigitCount(op1);
+        const digit* digits = __Pyx_PyLong_Digits(op1);
+        if (intval == 0) {
+            return (__Pyx_PyLong_IsZero(op1) == 1);
+        } else if (intval < 0) {
+            if (__Pyx_PyLong_IsNonNeg(op1))
+                return 0;
+            intval = -intval;
+        } else {
+            if (__Pyx_PyLong_IsNeg(op1))
+                return 0;
+        }
+        uintval = (unsigned long) intval;
+#if PyLong_SHIFT * 4 < SIZEOF_LONG*8
+        if (uintval >> (PyLong_SHIFT * 4)) {
+            unequal = (size != 5) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
+                 | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[4] != ((uintval >> (4 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
+        } else
+#endif
+#if PyLong_SHIFT * 3 < SIZEOF_LONG*8
+        if (uintval >> (PyLong_SHIFT * 3)) {
+            unequal = (size != 4) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
+                 | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
+        } else
+#endif
+#if PyLong_SHIFT * 2 < SIZEOF_LONG*8
+        if (uintval >> (PyLong_SHIFT * 2)) {
+            unequal = (size != 3) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
+                 | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
+        } else
+#endif
+#if PyLong_SHIFT * 1 < SIZEOF_LONG*8
+        if (uintval >> (PyLong_SHIFT * 1)) {
+            unequal = (size != 2) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
+                 | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
+        } else
+#endif
+            unequal = (size != 1) || (((unsigned long) digits[0]) != (uintval & (unsigned long) PyLong_MASK));
+        return (unequal == 0);
+    }
+    #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
+        return ((double)a == (double)b);
+    }
+    return __Pyx_PyObject_IsTrueAndDecref(
+        PyObject_RichCompare(op1, op2, Py_EQ));
+}
+
+/* pep479 */
+static void __Pyx_Generator_Replace_StopIteration(int in_async_gen) {
+    PyObject *exc, *val, *tb, *cur_exc;
+    __Pyx_PyThreadState_declare
+    #ifdef __Pyx_StopAsyncIteration_USED
+    int is_async_stopiteration = 0;
+    #endif
+    CYTHON_MAYBE_UNUSED_VAR(in_async_gen);
+    cur_exc = PyErr_Occurred();
+    if (likely(!__Pyx_PyErr_GivenExceptionMatches(cur_exc, PyExc_StopIteration))) {
+        #ifdef __Pyx_StopAsyncIteration_USED
+        if (in_async_gen && unlikely(__Pyx_PyErr_GivenExceptionMatches(cur_exc, __Pyx_PyExc_StopAsyncIteration))) {
+            is_async_stopiteration = 1;
+        } else
+        #endif
+            return;
+    }
+    __Pyx_PyThreadState_assign
+    __Pyx_GetException(&exc, &val, &tb);
+    Py_XDECREF(exc);
+    Py_XDECREF(val);
+    Py_XDECREF(tb);
+    PyErr_SetString(PyExc_RuntimeError,
+        #ifdef __Pyx_StopAsyncIteration_USED
+        is_async_stopiteration ? "async generator raised StopAsyncIteration" :
+        in_async_gen ? "async generator raised StopIteration" :
+        #endif
+        "generator raised StopIteration");
+}
+
+/* SliceObject */
+static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(PyObject* obj,
+        Py_ssize_t cstart, Py_ssize_t cstop,
+        PyObject** _py_start, PyObject** _py_stop, PyObject** _py_slice,
+        int has_cstart, int has_cstop, int wraparound) {
+    __Pyx_TypeName obj_type_name;
+#if CYTHON_USE_TYPE_SLOTS
+    PyMappingMethods* mp;
+#if PY_MAJOR_VERSION < 3
+    PySequenceMethods* ms = Py_TYPE(obj)->tp_as_sequence;
+    if (likely(ms && ms->sq_slice)) {
+        if (!has_cstart) {
+            if (_py_start && (*_py_start != Py_None)) {
+                cstart = __Pyx_PyIndex_AsSsize_t(*_py_start);
+                if ((cstart == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad;
+            } else
+                cstart = 0;
+        }
+        if (!has_cstop) {
+            if (_py_stop && (*_py_stop != Py_None)) {
+                cstop = __Pyx_PyIndex_AsSsize_t(*_py_stop);
+                if ((cstop == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad;
+            } else
+                cstop = PY_SSIZE_T_MAX;
+        }
+        if (wraparound && unlikely((cstart < 0) | (cstop < 0)) && likely(ms->sq_length)) {
+            Py_ssize_t l = ms->sq_length(obj);
+            if (likely(l >= 0)) {
+                if (cstop < 0) {
+                    cstop += l;
+                    if (cstop < 0) cstop = 0;
+                }
+                if (cstart < 0) {
+                    cstart += l;
+                    if (cstart < 0) cstart = 0;
+                }
+            } else {
+                if (!PyErr_ExceptionMatches(PyExc_OverflowError))
+                    goto bad;
+                PyErr_Clear();
+            }
+        }
+        return ms->sq_slice(obj, cstart, cstop);
+    }
+#else
+    CYTHON_UNUSED_VAR(wraparound);
+#endif
+    mp = Py_TYPE(obj)->tp_as_mapping;
+    if (likely(mp && mp->mp_subscript))
+#else
+    CYTHON_UNUSED_VAR(wraparound);
+#endif
+    {
+        PyObject* result;
+        PyObject *py_slice, *py_start, *py_stop;
+        if (_py_slice) {
+            py_slice = *_py_slice;
+        } else {
+            PyObject* owned_start = NULL;
+            PyObject* owned_stop = NULL;
+            if (_py_start) {
+                py_start = *_py_start;
+            } else {
+                if (has_cstart) {
+                    owned_start = py_start = PyInt_FromSsize_t(cstart);
+                    if (unlikely(!py_start)) goto bad;
+                } else
+                    py_start = Py_None;
+            }
+            if (_py_stop) {
+                py_stop = *_py_stop;
+            } else {
+                if (has_cstop) {
+                    owned_stop = py_stop = PyInt_FromSsize_t(cstop);
+                    if (unlikely(!py_stop)) {
+                        Py_XDECREF(owned_start);
+                        goto bad;
+                    }
+                } else
+                    py_stop = Py_None;
+            }
+            py_slice = PySlice_New(py_start, py_stop, Py_None);
+            Py_XDECREF(owned_start);
+            Py_XDECREF(owned_stop);
+            if (unlikely(!py_slice)) goto bad;
+        }
+#if CYTHON_USE_TYPE_SLOTS
+        result = mp->mp_subscript(obj, py_slice);
+#else
+        result = PyObject_GetItem(obj, py_slice);
+#endif
+        if (!_py_slice) {
+            Py_DECREF(py_slice);
+        }
+        return result;
+    }
+    obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj));
+    PyErr_Format(PyExc_TypeError,
+        "'" __Pyx_FMT_TYPENAME "' object is unsliceable", obj_type_name);
+    __Pyx_DECREF_TypeName(obj_type_name);
+bad:
+    return NULL;
+}
+
+/* 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;
+}
+
+/* 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__38;
+    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);
+}
+
+/* PyObjectSetAttrStr */
+#if CYTHON_USE_TYPE_SLOTS
+static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value) {
+    PyTypeObject* tp = Py_TYPE(obj);
+    if (likely(tp->tp_setattro))
+        return tp->tp_setattro(obj, attr_name, value);
+#if PY_MAJOR_VERSION < 3
+    if (likely(tp->tp_setattr))
+        return tp->tp_setattr(obj, PyString_AS_STRING(attr_name), value);
+#endif
+    return PyObject_SetAttr(obj, attr_name, value);
+}
+#endif
+
+/* SwapException */
+#if CYTHON_FAST_THREAD_STATE
+static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
+    PyObject *tmp_type, *tmp_value, *tmp_tb;
+  #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4
+    _PyErr_StackItem *exc_info = tstate->exc_info;
+    tmp_value = exc_info->exc_value;
+    exc_info->exc_value = *value;
+    if (tmp_value == NULL || tmp_value == Py_None) {
+        Py_XDECREF(tmp_value);
+        tmp_value = NULL;
+        tmp_type = NULL;
+        tmp_tb = NULL;
+    } else {
+        tmp_type = (PyObject*) Py_TYPE(tmp_value);
+        Py_INCREF(tmp_type);
+        #if CYTHON_COMPILING_IN_CPYTHON
+        tmp_tb = ((PyBaseExceptionObject*) tmp_value)->traceback;
+        Py_XINCREF(tmp_tb);
+        #else
+        tmp_tb = PyException_GetTraceback(tmp_value);
+        #endif
+    }
+  #elif CYTHON_USE_EXC_INFO_STACK
+    _PyErr_StackItem *exc_info = tstate->exc_info;
+    tmp_type = exc_info->exc_type;
+    tmp_value = exc_info->exc_value;
+    tmp_tb = exc_info->exc_traceback;
+    exc_info->exc_type = *type;
+    exc_info->exc_value = *value;
+    exc_info->exc_traceback = *tb;
+  #else
+    tmp_type = tstate->exc_type;
+    tmp_value = tstate->exc_value;
+    tmp_tb = tstate->exc_traceback;
+    tstate->exc_type = *type;
+    tstate->exc_value = *value;
+    tstate->exc_traceback = *tb;
+  #endif
+    *type = tmp_type;
+    *value = tmp_value;
+    *tb = tmp_tb;
+}
+#else
+static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) {
+    PyObject *tmp_type, *tmp_value, *tmp_tb;
+    PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb);
+    PyErr_SetExcInfo(*type, *value, *tb);
+    *type = tmp_type;
+    *value = tmp_value;
+    *tb = tmp_tb;
+}
+#endif
+
+/* PyIntBinop */
+#if !CYTHON_COMPILING_IN_PYPY
+static PyObject* __Pyx_PyInt_SubtractObjC(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_subtract(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 PyLong_FromLong(-intval);
+        }
+        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_subtract(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("subtract", return NULL)
+            result = ((double)a) - (double)b;
+            PyFPE_END_PROTECT(result)
+            return PyFloat_FromDouble(result);
+    }
+    return (inplace ? PyNumber_InPlaceSubtract : PyNumber_Subtract)(op1, op2);
+}
+#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
+
+/* StopAsyncIteration */
+#if PY_VERSION_HEX < 0x030500B1
+#if CYTHON_USE_TYPE_SPECS
+#error Using async coroutines with type specs requires Python 3.5 or later.
+#else
+static PyTypeObject __Pyx__PyExc_StopAsyncIteration_type = {
+    PyVarObject_HEAD_INIT(0, 0)
+    "StopAsyncIteration",
+    sizeof(PyBaseExceptionObject),
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC,
+    PyDoc_STR("Signal the end from iterator.__anext__()."),
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+#if PY_VERSION_HEX >= 0x030400a1
+    0,
+#endif
+#if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000
+    0,
+#endif
+};
+#endif
+#endif
+static int __pyx_StopAsyncIteration_init(PyObject *module) {
+    CYTHON_UNUSED_VAR(module);
+#if PY_VERSION_HEX >= 0x030500B1
+    __Pyx_PyExc_StopAsyncIteration = PyExc_StopAsyncIteration;
+#else
+    PyObject *builtins = PyEval_GetBuiltins();
+    if (likely(builtins)) {
+        PyObject *exc = PyMapping_GetItemString(builtins, (char*) "StopAsyncIteration");
+        if (exc) {
+            __Pyx_PyExc_StopAsyncIteration = exc;
+            return 0;
+        }
+    }
+    PyErr_Clear();
+    __Pyx__PyExc_StopAsyncIteration_type.tp_traverse = ((PyTypeObject*)PyExc_BaseException)->tp_traverse;
+    __Pyx__PyExc_StopAsyncIteration_type.tp_clear = ((PyTypeObject*)PyExc_BaseException)->tp_clear;
+    __Pyx__PyExc_StopAsyncIteration_type.tp_dictoffset = ((PyTypeObject*)PyExc_BaseException)->tp_dictoffset;
+    __Pyx__PyExc_StopAsyncIteration_type.tp_base = (PyTypeObject*)PyExc_Exception;
+    __Pyx_PyExc_StopAsyncIteration = (PyObject*) __Pyx_FetchCommonType(&__Pyx__PyExc_StopAsyncIteration_type);
+    if (unlikely(!__Pyx_PyExc_StopAsyncIteration))
+        return -1;
+    if (likely(builtins) && unlikely(PyMapping_SetItemString(builtins, (char*) "StopAsyncIteration", __Pyx_PyExc_StopAsyncIteration) < 0))
+        return -1;
+#endif
+    return 0;
+}
+
+/* CoroutineBase */
+#include <frameobject.h>
+#if PY_VERSION_HEX >= 0x030b00a6
+  #ifndef Py_BUILD_CORE
+    #define Py_BUILD_CORE 1
+  #endif
+  #include "internal/pycore_frame.h"
+#endif
+#define __Pyx_Coroutine_Undelegate(gen) Py_CLEAR((gen)->yieldfrom)
+static int __Pyx_PyGen__FetchStopIterationValue(PyThreadState *__pyx_tstate, PyObject **pvalue) {
+    PyObject *et, *ev, *tb;
+    PyObject *value = NULL;
+    CYTHON_UNUSED_VAR(__pyx_tstate);
+    __Pyx_ErrFetch(&et, &ev, &tb);
+    if (!et) {
+        Py_XDECREF(tb);
+        Py_XDECREF(ev);
+        Py_INCREF(Py_None);
+        *pvalue = Py_None;
+        return 0;
+    }
+    if (likely(et == PyExc_StopIteration)) {
+        if (!ev) {
+            Py_INCREF(Py_None);
+            value = Py_None;
+        }
+#if PY_VERSION_HEX >= 0x030300A0
+        else if (likely(__Pyx_IS_TYPE(ev, (PyTypeObject*)PyExc_StopIteration))) {
+            value = ((PyStopIterationObject *)ev)->value;
+            Py_INCREF(value);
+            Py_DECREF(ev);
+        }
+#endif
+        else if (unlikely(PyTuple_Check(ev))) {
+            if (PyTuple_GET_SIZE(ev) >= 1) {
+#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+                value = PyTuple_GET_ITEM(ev, 0);
+                Py_INCREF(value);
+#else
+                value = PySequence_ITEM(ev, 0);
+#endif
+            } else {
+                Py_INCREF(Py_None);
+                value = Py_None;
+            }
+            Py_DECREF(ev);
+        }
+        else if (!__Pyx_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration)) {
+            value = ev;
+        }
+        if (likely(value)) {
+            Py_XDECREF(tb);
+            Py_DECREF(et);
+            *pvalue = value;
+            return 0;
+        }
+    } else if (!__Pyx_PyErr_GivenExceptionMatches(et, PyExc_StopIteration)) {
+        __Pyx_ErrRestore(et, ev, tb);
+        return -1;
+    }
+    PyErr_NormalizeException(&et, &ev, &tb);
+    if (unlikely(!PyObject_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration))) {
+        __Pyx_ErrRestore(et, ev, tb);
+        return -1;
+    }
+    Py_XDECREF(tb);
+    Py_DECREF(et);
+#if PY_VERSION_HEX >= 0x030300A0
+    value = ((PyStopIterationObject *)ev)->value;
+    Py_INCREF(value);
+    Py_DECREF(ev);
+#else
+    {
+        PyObject* args = __Pyx_PyObject_GetAttrStr(ev, __pyx_n_s_args);
+        Py_DECREF(ev);
+        if (likely(args)) {
+            value = PySequence_GetItem(args, 0);
+            Py_DECREF(args);
+        }
+        if (unlikely(!value)) {
+            __Pyx_ErrRestore(NULL, NULL, NULL);
+            Py_INCREF(Py_None);
+            value = Py_None;
+        }
+    }
+#endif
+    *pvalue = value;
+    return 0;
+}
+static CYTHON_INLINE
+void __Pyx_Coroutine_ExceptionClear(__Pyx_ExcInfoStruct *exc_state) {
+#if PY_VERSION_HEX >= 0x030B00a4
+    Py_CLEAR(exc_state->exc_value);
+#else
+    PyObject *t, *v, *tb;
+    t = exc_state->exc_type;
+    v = exc_state->exc_value;
+    tb = exc_state->exc_traceback;
+    exc_state->exc_type = NULL;
+    exc_state->exc_value = NULL;
+    exc_state->exc_traceback = NULL;
+    Py_XDECREF(t);
+    Py_XDECREF(v);
+    Py_XDECREF(tb);
+#endif
+}
+#define __Pyx_Coroutine_AlreadyRunningError(gen)  (__Pyx__Coroutine_AlreadyRunningError(gen), (PyObject*)NULL)
+static void __Pyx__Coroutine_AlreadyRunningError(__pyx_CoroutineObject *gen) {
+    const char *msg;
+    CYTHON_MAYBE_UNUSED_VAR(gen);
+    if ((0)) {
+    #ifdef __Pyx_Coroutine_USED
+    } else if (__Pyx_Coroutine_Check((PyObject*)gen)) {
+        msg = "coroutine already executing";
+    #endif
+    #ifdef __Pyx_AsyncGen_USED
+    } else if (__Pyx_AsyncGen_CheckExact((PyObject*)gen)) {
+        msg = "async generator already executing";
+    #endif
+    } else {
+        msg = "generator already executing";
+    }
+    PyErr_SetString(PyExc_ValueError, msg);
+}
+#define __Pyx_Coroutine_NotStartedError(gen)  (__Pyx__Coroutine_NotStartedError(gen), (PyObject*)NULL)
+static void __Pyx__Coroutine_NotStartedError(PyObject *gen) {
+    const char *msg;
+    CYTHON_MAYBE_UNUSED_VAR(gen);
+    if ((0)) {
+    #ifdef __Pyx_Coroutine_USED
+    } else if (__Pyx_Coroutine_Check(gen)) {
+        msg = "can't send non-None value to a just-started coroutine";
+    #endif
+    #ifdef __Pyx_AsyncGen_USED
+    } else if (__Pyx_AsyncGen_CheckExact(gen)) {
+        msg = "can't send non-None value to a just-started async generator";
+    #endif
+    } else {
+        msg = "can't send non-None value to a just-started generator";
+    }
+    PyErr_SetString(PyExc_TypeError, msg);
+}
+#define __Pyx_Coroutine_AlreadyTerminatedError(gen, value, closing)  (__Pyx__Coroutine_AlreadyTerminatedError(gen, value, closing), (PyObject*)NULL)
+static void __Pyx__Coroutine_AlreadyTerminatedError(PyObject *gen, PyObject *value, int closing) {
+    CYTHON_MAYBE_UNUSED_VAR(gen);
+    CYTHON_MAYBE_UNUSED_VAR(closing);
+    #ifdef __Pyx_Coroutine_USED
+    if (!closing && __Pyx_Coroutine_Check(gen)) {
+        PyErr_SetString(PyExc_RuntimeError, "cannot reuse already awaited coroutine");
+    } else
+    #endif
+    if (value) {
+        #ifdef __Pyx_AsyncGen_USED
+        if (__Pyx_AsyncGen_CheckExact(gen))
+            PyErr_SetNone(__Pyx_PyExc_StopAsyncIteration);
+        else
+        #endif
+        PyErr_SetNone(PyExc_StopIteration);
+    }
+}
+static
+PyObject *__Pyx_Coroutine_SendEx(__pyx_CoroutineObject *self, PyObject *value, int closing) {
+    __Pyx_PyThreadState_declare
+    PyThreadState *tstate;
+    __Pyx_ExcInfoStruct *exc_state;
+    PyObject *retval;
+    assert(!self->is_running);
+    if (unlikely(self->resume_label == 0)) {
+        if (unlikely(value && value != Py_None)) {
+            return __Pyx_Coroutine_NotStartedError((PyObject*)self);
+        }
+    }
+    if (unlikely(self->resume_label == -1)) {
+        return __Pyx_Coroutine_AlreadyTerminatedError((PyObject*)self, value, closing);
+    }
+#if CYTHON_FAST_THREAD_STATE
+    __Pyx_PyThreadState_assign
+    tstate = __pyx_tstate;
+#else
+    tstate = __Pyx_PyThreadState_Current;
+#endif
+    exc_state = &self->gi_exc_state;
+    if (exc_state->exc_value) {
+        #if CYTHON_COMPILING_IN_PYPY
+        #else
+        PyObject *exc_tb;
+        #if PY_VERSION_HEX >= 0x030B00a4 && !CYTHON_COMPILING_IN_CPYTHON
+        exc_tb = PyException_GetTraceback(exc_state->exc_value);
+        #elif PY_VERSION_HEX >= 0x030B00a4
+        exc_tb = ((PyBaseExceptionObject*) exc_state->exc_value)->traceback;
+        #else
+        exc_tb = exc_state->exc_traceback;
+        #endif
+        if (exc_tb) {
+            PyTracebackObject *tb = (PyTracebackObject *) exc_tb;
+            PyFrameObject *f = tb->tb_frame;
+            assert(f->f_back == NULL);
+            #if PY_VERSION_HEX >= 0x030B00A1
+            f->f_back = PyThreadState_GetFrame(tstate);
+            #else
+            Py_XINCREF(tstate->frame);
+            f->f_back = tstate->frame;
+            #endif
+            #if PY_VERSION_HEX >= 0x030B00a4 && !CYTHON_COMPILING_IN_CPYTHON
+            Py_DECREF(exc_tb);
+            #endif
+        }
+        #endif
+    }
+#if CYTHON_USE_EXC_INFO_STACK
+    exc_state->previous_item = tstate->exc_info;
+    tstate->exc_info = exc_state;
+#else
+    if (exc_state->exc_type) {
+        __Pyx_ExceptionSwap(&exc_state->exc_type, &exc_state->exc_value, &exc_state->exc_traceback);
+    } else {
+        __Pyx_Coroutine_ExceptionClear(exc_state);
+        __Pyx_ExceptionSave(&exc_state->exc_type, &exc_state->exc_value, &exc_state->exc_traceback);
+    }
+#endif
+    self->is_running = 1;
+    retval = self->body(self, tstate, value);
+    self->is_running = 0;
+#if CYTHON_USE_EXC_INFO_STACK
+    exc_state = &self->gi_exc_state;
+    tstate->exc_info = exc_state->previous_item;
+    exc_state->previous_item = NULL;
+    __Pyx_Coroutine_ResetFrameBackpointer(exc_state);
+#endif
+    return retval;
+}
+static CYTHON_INLINE void __Pyx_Coroutine_ResetFrameBackpointer(__Pyx_ExcInfoStruct *exc_state) {
+#if CYTHON_COMPILING_IN_PYPY
+    CYTHON_UNUSED_VAR(exc_state);
+#else
+    PyObject *exc_tb;
+    #if PY_VERSION_HEX >= 0x030B00a4
+    if (!exc_state->exc_value) return;
+    exc_tb = PyException_GetTraceback(exc_state->exc_value);
+    #else
+    exc_tb = exc_state->exc_traceback;
+    #endif
+    if (likely(exc_tb)) {
+        PyTracebackObject *tb = (PyTracebackObject *) exc_tb;
+        PyFrameObject *f = tb->tb_frame;
+        Py_CLEAR(f->f_back);
+        #if PY_VERSION_HEX >= 0x030B00a4
+        Py_DECREF(exc_tb);
+        #endif
+    }
+#endif
+}
+static CYTHON_INLINE
+PyObject *__Pyx_Coroutine_MethodReturn(PyObject* gen, PyObject *retval) {
+    CYTHON_MAYBE_UNUSED_VAR(gen);
+    if (unlikely(!retval)) {
+        __Pyx_PyThreadState_declare
+        __Pyx_PyThreadState_assign
+        if (!__Pyx_PyErr_Occurred()) {
+            PyObject *exc = PyExc_StopIteration;
+            #ifdef __Pyx_AsyncGen_USED
+            if (__Pyx_AsyncGen_CheckExact(gen))
+                exc = __Pyx_PyExc_StopAsyncIteration;
+            #endif
+            __Pyx_PyErr_SetNone(exc);
+        }
+    }
+    return retval;
+}
+#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03030000 && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3)
+static CYTHON_INLINE
+PyObject *__Pyx_PyGen_Send(PyGenObject *gen, PyObject *arg) {
+#if PY_VERSION_HEX <= 0x030A00A1
+    return _PyGen_Send(gen, arg);
+#else
+    PyObject *result;
+    if (PyIter_Send((PyObject*)gen, arg ? arg : Py_None, &result) == PYGEN_RETURN) {
+        if (PyAsyncGen_CheckExact(gen)) {
+            assert(result == Py_None);
+            PyErr_SetNone(PyExc_StopAsyncIteration);
+        }
+        else if (result == Py_None) {
+            PyErr_SetNone(PyExc_StopIteration);
+        }
+        else {
+#if PY_VERSION_HEX < 0x030d00A1
+            _PyGen_SetStopIterationValue(result);
+#else
+            if (!PyTuple_Check(result) && !PyExceptionInstance_Check(result)) {
+                PyErr_SetObject(PyExc_StopIteration, result);
+            } else {
+                PyObject *exc = __Pyx_PyObject_CallOneArg(PyExc_StopIteration, result);
+                if (likely(exc != NULL)) {
+                    PyErr_SetObject(PyExc_StopIteration, exc);
+                    Py_DECREF(exc);
+                }
+            }
+#endif
+        }
+        Py_DECREF(result);
+        result = NULL;
+    }
+    return result;
+#endif
+}
+#endif
+static CYTHON_INLINE
+PyObject *__Pyx_Coroutine_FinishDelegation(__pyx_CoroutineObject *gen) {
+    PyObject *ret;
+    PyObject *val = NULL;
+    __Pyx_Coroutine_Undelegate(gen);
+    __Pyx_PyGen__FetchStopIterationValue(__Pyx_PyThreadState_Current, &val);
+    ret = __Pyx_Coroutine_SendEx(gen, val, 0);
+    Py_XDECREF(val);
+    return ret;
+}
+static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value) {
+    PyObject *retval;
+    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self;
+    PyObject *yf = gen->yieldfrom;
+    if (unlikely(gen->is_running))
+        return __Pyx_Coroutine_AlreadyRunningError(gen);
+    if (yf) {
+        PyObject *ret;
+        gen->is_running = 1;
+        #ifdef __Pyx_Generator_USED
+        if (__Pyx_Generator_CheckExact(yf)) {
+            ret = __Pyx_Coroutine_Send(yf, value);
+        } else
+        #endif
+        #ifdef __Pyx_Coroutine_USED
+        if (__Pyx_Coroutine_Check(yf)) {
+            ret = __Pyx_Coroutine_Send(yf, value);
+        } else
+        #endif
+        #ifdef __Pyx_AsyncGen_USED
+        if (__pyx_PyAsyncGenASend_CheckExact(yf)) {
+            ret = __Pyx_async_gen_asend_send(yf, value);
+        } else
+        #endif
+        #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03030000 && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3)
+        if (PyGen_CheckExact(yf)) {
+            ret = __Pyx_PyGen_Send((PyGenObject*)yf, value == Py_None ? NULL : value);
+        } else
+        #endif
+        #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03050000 && defined(PyCoro_CheckExact) && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3)
+        if (PyCoro_CheckExact(yf)) {
+            ret = __Pyx_PyGen_Send((PyGenObject*)yf, value == Py_None ? NULL : value);
+        } else
+        #endif
+        {
+            if (value == Py_None)
+                ret = __Pyx_PyObject_GetIterNextFunc(yf)(yf);
+            else
+                ret = __Pyx_PyObject_CallMethod1(yf, __pyx_n_s_send, value);
+        }
+        gen->is_running = 0;
+        if (likely(ret)) {
+            return ret;
+        }
+        retval = __Pyx_Coroutine_FinishDelegation(gen);
+    } else {
+        retval = __Pyx_Coroutine_SendEx(gen, value, 0);
+    }
+    return __Pyx_Coroutine_MethodReturn(self, retval);
+}
+static int __Pyx_Coroutine_CloseIter(__pyx_CoroutineObject *gen, PyObject *yf) {
+    PyObject *retval = NULL;
+    int err = 0;
+    #ifdef __Pyx_Generator_USED
+    if (__Pyx_Generator_CheckExact(yf)) {
+        retval = __Pyx_Coroutine_Close(yf);
+        if (!retval)
+            return -1;
+    } else
+    #endif
+    #ifdef __Pyx_Coroutine_USED
+    if (__Pyx_Coroutine_Check(yf)) {
+        retval = __Pyx_Coroutine_Close(yf);
+        if (!retval)
+            return -1;
+    } else
+    if (__Pyx_CoroutineAwait_CheckExact(yf)) {
+        retval = __Pyx_CoroutineAwait_Close((__pyx_CoroutineAwaitObject*)yf, NULL);
+        if (!retval)
+            return -1;
+    } else
+    #endif
+    #ifdef __Pyx_AsyncGen_USED
+    if (__pyx_PyAsyncGenASend_CheckExact(yf)) {
+        retval = __Pyx_async_gen_asend_close(yf, NULL);
+    } else
+    if (__pyx_PyAsyncGenAThrow_CheckExact(yf)) {
+        retval = __Pyx_async_gen_athrow_close(yf, NULL);
+    } else
+    #endif
+    {
+        PyObject *meth;
+        gen->is_running = 1;
+        meth = __Pyx_PyObject_GetAttrStrNoError(yf, __pyx_n_s_close);
+        if (unlikely(!meth)) {
+            if (unlikely(PyErr_Occurred())) {
+                PyErr_WriteUnraisable(yf);
+            }
+        } else {
+            retval = __Pyx_PyObject_CallNoArg(meth);
+            Py_DECREF(meth);
+            if (unlikely(!retval))
+                err = -1;
+        }
+        gen->is_running = 0;
+    }
+    Py_XDECREF(retval);
+    return err;
+}
+static PyObject *__Pyx_Generator_Next(PyObject *self) {
+    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self;
+    PyObject *yf = gen->yieldfrom;
+    if (unlikely(gen->is_running))
+        return __Pyx_Coroutine_AlreadyRunningError(gen);
+    if (yf) {
+        PyObject *ret;
+        gen->is_running = 1;
+        #ifdef __Pyx_Generator_USED
+        if (__Pyx_Generator_CheckExact(yf)) {
+            ret = __Pyx_Generator_Next(yf);
+        } else
+        #endif
+        #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03030000 && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3)
+        if (PyGen_CheckExact(yf)) {
+            ret = __Pyx_PyGen_Send((PyGenObject*)yf, NULL);
+        } else
+        #endif
+        #ifdef __Pyx_Coroutine_USED
+        if (__Pyx_Coroutine_Check(yf)) {
+            ret = __Pyx_Coroutine_Send(yf, Py_None);
+        } else
+        #endif
+            ret = __Pyx_PyObject_GetIterNextFunc(yf)(yf);
+        gen->is_running = 0;
+        if (likely(ret)) {
+            return ret;
+        }
+        return __Pyx_Coroutine_FinishDelegation(gen);
+    }
+    return __Pyx_Coroutine_SendEx(gen, Py_None, 0);
+}
+static PyObject *__Pyx_Coroutine_Close_Method(PyObject *self, PyObject *arg) {
+    CYTHON_UNUSED_VAR(arg);
+    return __Pyx_Coroutine_Close(self);
+}
+static PyObject *__Pyx_Coroutine_Close(PyObject *self) {
+    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
+    PyObject *retval, *raised_exception;
+    PyObject *yf = gen->yieldfrom;
+    int err = 0;
+    if (unlikely(gen->is_running))
+        return __Pyx_Coroutine_AlreadyRunningError(gen);
+    if (yf) {
+        Py_INCREF(yf);
+        err = __Pyx_Coroutine_CloseIter(gen, yf);
+        __Pyx_Coroutine_Undelegate(gen);
+        Py_DECREF(yf);
+    }
+    if (err == 0)
+        PyErr_SetNone(PyExc_GeneratorExit);
+    retval = __Pyx_Coroutine_SendEx(gen, NULL, 1);
+    if (unlikely(retval)) {
+        const char *msg;
+        Py_DECREF(retval);
+        if ((0)) {
+        #ifdef __Pyx_Coroutine_USED
+        } else if (__Pyx_Coroutine_Check(self)) {
+            msg = "coroutine ignored GeneratorExit";
+        #endif
+        #ifdef __Pyx_AsyncGen_USED
+        } else if (__Pyx_AsyncGen_CheckExact(self)) {
+#if PY_VERSION_HEX < 0x03060000
+            msg = "async generator ignored GeneratorExit - might require Python 3.6+ finalisation (PEP 525)";
+#else
+            msg = "async generator ignored GeneratorExit";
+#endif
+        #endif
+        } else {
+            msg = "generator ignored GeneratorExit";
+        }
+        PyErr_SetString(PyExc_RuntimeError, msg);
+        return NULL;
+    }
+    raised_exception = PyErr_Occurred();
+    if (likely(!raised_exception || __Pyx_PyErr_GivenExceptionMatches2(raised_exception, PyExc_GeneratorExit, PyExc_StopIteration))) {
+        if (raised_exception) PyErr_Clear();
+        Py_INCREF(Py_None);
+        return Py_None;
+    }
+    return NULL;
+}
+static PyObject *__Pyx__Coroutine_Throw(PyObject *self, PyObject *typ, PyObject *val, PyObject *tb,
+                                        PyObject *args, int close_on_genexit) {
+    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
+    PyObject *yf = gen->yieldfrom;
+    if (unlikely(gen->is_running))
+        return __Pyx_Coroutine_AlreadyRunningError(gen);
+    if (yf) {
+        PyObject *ret;
+        Py_INCREF(yf);
+        if (__Pyx_PyErr_GivenExceptionMatches(typ, PyExc_GeneratorExit) && close_on_genexit) {
+            int err = __Pyx_Coroutine_CloseIter(gen, yf);
+            Py_DECREF(yf);
+            __Pyx_Coroutine_Undelegate(gen);
+            if (err < 0)
+                return __Pyx_Coroutine_MethodReturn(self, __Pyx_Coroutine_SendEx(gen, NULL, 0));
+            goto throw_here;
+        }
+        gen->is_running = 1;
+        if (0
+        #ifdef __Pyx_Generator_USED
+            || __Pyx_Generator_CheckExact(yf)
+        #endif
+        #ifdef __Pyx_Coroutine_USED
+            || __Pyx_Coroutine_Check(yf)
+        #endif
+            ) {
+            ret = __Pyx__Coroutine_Throw(yf, typ, val, tb, args, close_on_genexit);
+        #ifdef __Pyx_Coroutine_USED
+        } else if (__Pyx_CoroutineAwait_CheckExact(yf)) {
+            ret = __Pyx__Coroutine_Throw(((__pyx_CoroutineAwaitObject*)yf)->coroutine, typ, val, tb, args, close_on_genexit);
+        #endif
+        } else {
+            PyObject *meth = __Pyx_PyObject_GetAttrStrNoError(yf, __pyx_n_s_throw);
+            if (unlikely(!meth)) {
+                Py_DECREF(yf);
+                if (unlikely(PyErr_Occurred())) {
+                    gen->is_running = 0;
+                    return NULL;
+                }
+                __Pyx_Coroutine_Undelegate(gen);
+                gen->is_running = 0;
+                goto throw_here;
+            }
+            if (likely(args)) {
+                ret = __Pyx_PyObject_Call(meth, args, NULL);
+            } else {
+                PyObject *cargs[4] = {NULL, typ, val, tb};
+                ret = __Pyx_PyObject_FastCall(meth, cargs+1, 3 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET);
+            }
+            Py_DECREF(meth);
+        }
+        gen->is_running = 0;
+        Py_DECREF(yf);
+        if (!ret) {
+            ret = __Pyx_Coroutine_FinishDelegation(gen);
+        }
+        return __Pyx_Coroutine_MethodReturn(self, ret);
+    }
+throw_here:
+    __Pyx_Raise(typ, val, tb, NULL);
+    return __Pyx_Coroutine_MethodReturn(self, __Pyx_Coroutine_SendEx(gen, NULL, 0));
+}
+static PyObject *__Pyx_Coroutine_Throw(PyObject *self, PyObject *args) {
+    PyObject *typ;
+    PyObject *val = NULL;
+    PyObject *tb = NULL;
+    if (unlikely(!PyArg_UnpackTuple(args, (char *)"throw", 1, 3, &typ, &val, &tb)))
+        return NULL;
+    return __Pyx__Coroutine_Throw(self, typ, val, tb, args, 1);
+}
+static CYTHON_INLINE int __Pyx_Coroutine_traverse_excstate(__Pyx_ExcInfoStruct *exc_state, visitproc visit, void *arg) {
+#if PY_VERSION_HEX >= 0x030B00a4
+    Py_VISIT(exc_state->exc_value);
+#else
+    Py_VISIT(exc_state->exc_type);
+    Py_VISIT(exc_state->exc_value);
+    Py_VISIT(exc_state->exc_traceback);
+#endif
+    return 0;
+}
+static int __Pyx_Coroutine_traverse(__pyx_CoroutineObject *gen, visitproc visit, void *arg) {
+    Py_VISIT(gen->closure);
+    Py_VISIT(gen->classobj);
+    Py_VISIT(gen->yieldfrom);
+    return __Pyx_Coroutine_traverse_excstate(&gen->gi_exc_state, visit, arg);
+}
+static int __Pyx_Coroutine_clear(PyObject *self) {
+    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
+    Py_CLEAR(gen->closure);
+    Py_CLEAR(gen->classobj);
+    Py_CLEAR(gen->yieldfrom);
+    __Pyx_Coroutine_ExceptionClear(&gen->gi_exc_state);
+#ifdef __Pyx_AsyncGen_USED
+    if (__Pyx_AsyncGen_CheckExact(self)) {
+        Py_CLEAR(((__pyx_PyAsyncGenObject*)gen)->ag_finalizer);
+    }
+#endif
+    Py_CLEAR(gen->gi_code);
+    Py_CLEAR(gen->gi_frame);
+    Py_CLEAR(gen->gi_name);
+    Py_CLEAR(gen->gi_qualname);
+    Py_CLEAR(gen->gi_modulename);
+    return 0;
+}
+static void __Pyx_Coroutine_dealloc(PyObject *self) {
+    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
+    PyObject_GC_UnTrack(gen);
+    if (gen->gi_weakreflist != NULL)
+        PyObject_ClearWeakRefs(self);
+    if (gen->resume_label >= 0) {
+        PyObject_GC_Track(self);
+#if PY_VERSION_HEX >= 0x030400a1 && CYTHON_USE_TP_FINALIZE
+        if (unlikely(PyObject_CallFinalizerFromDealloc(self)))
+#else
+        Py_TYPE(gen)->tp_del(self);
+        if (unlikely(Py_REFCNT(self) > 0))
+#endif
+        {
+            return;
+        }
+        PyObject_GC_UnTrack(self);
+    }
+#ifdef __Pyx_AsyncGen_USED
+    if (__Pyx_AsyncGen_CheckExact(self)) {
+        /* We have to handle this case for asynchronous generators
+           right here, because this code has to be between UNTRACK
+           and GC_Del. */
+        Py_CLEAR(((__pyx_PyAsyncGenObject*)self)->ag_finalizer);
+    }
+#endif
+    __Pyx_Coroutine_clear(self);
+    __Pyx_PyHeapTypeObject_GC_Del(gen);
+}
+static void __Pyx_Coroutine_del(PyObject *self) {
+    PyObject *error_type, *error_value, *error_traceback;
+    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
+    __Pyx_PyThreadState_declare
+    if (gen->resume_label < 0) {
+        return;
+    }
+#if !CYTHON_USE_TP_FINALIZE
+    assert(self->ob_refcnt == 0);
+    __Pyx_SET_REFCNT(self, 1);
+#endif
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&error_type, &error_value, &error_traceback);
+#ifdef __Pyx_AsyncGen_USED
+    if (__Pyx_AsyncGen_CheckExact(self)) {
+        __pyx_PyAsyncGenObject *agen = (__pyx_PyAsyncGenObject*)self;
+        PyObject *finalizer = agen->ag_finalizer;
+        if (finalizer && !agen->ag_closed) {
+            PyObject *res = __Pyx_PyObject_CallOneArg(finalizer, self);
+            if (unlikely(!res)) {
+                PyErr_WriteUnraisable(self);
+            } else {
+                Py_DECREF(res);
+            }
+            __Pyx_ErrRestore(error_type, error_value, error_traceback);
+            return;
+        }
+    }
+#endif
+    if (unlikely(gen->resume_label == 0 && !error_value)) {
+#ifdef __Pyx_Coroutine_USED
+#ifdef __Pyx_Generator_USED
+    if (!__Pyx_Generator_CheckExact(self))
+#endif
+        {
+        PyObject_GC_UnTrack(self);
+#if PY_MAJOR_VERSION >= 3  || defined(PyErr_WarnFormat)
+        if (unlikely(PyErr_WarnFormat(PyExc_RuntimeWarning, 1, "coroutine '%.50S' was never awaited", gen->gi_qualname) < 0))
+            PyErr_WriteUnraisable(self);
+#else
+        {PyObject *msg;
+        char *cmsg;
+        #if CYTHON_COMPILING_IN_PYPY
+        msg = NULL;
+        cmsg = (char*) "coroutine was never awaited";
+        #else
+        char *cname;
+        PyObject *qualname;
+        qualname = gen->gi_qualname;
+        cname = PyString_AS_STRING(qualname);
+        msg = PyString_FromFormat("coroutine '%.50s' was never awaited", cname);
+        if (unlikely(!msg)) {
+            PyErr_Clear();
+            cmsg = (char*) "coroutine was never awaited";
+        } else {
+            cmsg = PyString_AS_STRING(msg);
+        }
+        #endif
+        if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, cmsg, 1) < 0))
+            PyErr_WriteUnraisable(self);
+        Py_XDECREF(msg);}
+#endif
+        PyObject_GC_Track(self);
+        }
+#endif
+    } else {
+        PyObject *res = __Pyx_Coroutine_Close(self);
+        if (unlikely(!res)) {
+            if (PyErr_Occurred())
+                PyErr_WriteUnraisable(self);
+        } else {
+            Py_DECREF(res);
+        }
+    }
+    __Pyx_ErrRestore(error_type, error_value, error_traceback);
+#if !CYTHON_USE_TP_FINALIZE
+    assert(Py_REFCNT(self) > 0);
+    if (likely(--self->ob_refcnt == 0)) {
+        return;
+    }
+    {
+        Py_ssize_t refcnt = Py_REFCNT(self);
+        _Py_NewReference(self);
+        __Pyx_SET_REFCNT(self, refcnt);
+    }
+#if CYTHON_COMPILING_IN_CPYTHON
+    assert(PyType_IS_GC(Py_TYPE(self)) &&
+           _Py_AS_GC(self)->gc.gc_refs != _PyGC_REFS_UNTRACKED);
+    _Py_DEC_REFTOTAL;
+#endif
+#ifdef COUNT_ALLOCS
+    --Py_TYPE(self)->tp_frees;
+    --Py_TYPE(self)->tp_allocs;
+#endif
+#endif
+}
+static PyObject *
+__Pyx_Coroutine_get_name(__pyx_CoroutineObject *self, void *context)
+{
+    PyObject *name = self->gi_name;
+    CYTHON_UNUSED_VAR(context);
+    if (unlikely(!name)) name = Py_None;
+    Py_INCREF(name);
+    return name;
+}
+static int
+__Pyx_Coroutine_set_name(__pyx_CoroutineObject *self, 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(self->gi_name, value);
+    return 0;
+}
+static PyObject *
+__Pyx_Coroutine_get_qualname(__pyx_CoroutineObject *self, void *context)
+{
+    PyObject *name = self->gi_qualname;
+    CYTHON_UNUSED_VAR(context);
+    if (unlikely(!name)) name = Py_None;
+    Py_INCREF(name);
+    return name;
+}
+static int
+__Pyx_Coroutine_set_qualname(__pyx_CoroutineObject *self, 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(self->gi_qualname, value);
+    return 0;
+}
+static PyObject *
+__Pyx_Coroutine_get_frame(__pyx_CoroutineObject *self, void *context)
+{
+    PyObject *frame = self->gi_frame;
+    CYTHON_UNUSED_VAR(context);
+    if (!frame) {
+        if (unlikely(!self->gi_code)) {
+            Py_RETURN_NONE;
+        }
+        frame = (PyObject *) PyFrame_New(
+            PyThreadState_Get(),            /*PyThreadState *tstate,*/
+            (PyCodeObject*) self->gi_code,  /*PyCodeObject *code,*/
+            __pyx_d,                 /*PyObject *globals,*/
+            0                               /*PyObject *locals*/
+        );
+        if (unlikely(!frame))
+            return NULL;
+        self->gi_frame = frame;
+    }
+    Py_INCREF(frame);
+    return frame;
+}
+static __pyx_CoroutineObject *__Pyx__Coroutine_New(
+            PyTypeObject* type, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure,
+            PyObject *name, PyObject *qualname, PyObject *module_name) {
+    __pyx_CoroutineObject *gen = PyObject_GC_New(__pyx_CoroutineObject, type);
+    if (unlikely(!gen))
+        return NULL;
+    return __Pyx__Coroutine_NewInit(gen, body, code, closure, name, qualname, module_name);
+}
+static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit(
+            __pyx_CoroutineObject *gen, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure,
+            PyObject *name, PyObject *qualname, PyObject *module_name) {
+    gen->body = body;
+    gen->closure = closure;
+    Py_XINCREF(closure);
+    gen->is_running = 0;
+    gen->resume_label = 0;
+    gen->classobj = NULL;
+    gen->yieldfrom = NULL;
+    #if PY_VERSION_HEX >= 0x030B00a4
+    gen->gi_exc_state.exc_value = NULL;
+    #else
+    gen->gi_exc_state.exc_type = NULL;
+    gen->gi_exc_state.exc_value = NULL;
+    gen->gi_exc_state.exc_traceback = NULL;
+    #endif
+#if CYTHON_USE_EXC_INFO_STACK
+    gen->gi_exc_state.previous_item = NULL;
+#endif
+    gen->gi_weakreflist = NULL;
+    Py_XINCREF(qualname);
+    gen->gi_qualname = qualname;
+    Py_XINCREF(name);
+    gen->gi_name = name;
+    Py_XINCREF(module_name);
+    gen->gi_modulename = module_name;
+    Py_XINCREF(code);
+    gen->gi_code = code;
+    gen->gi_frame = NULL;
+    PyObject_GC_Track(gen);
+    return gen;
+}
+
+/* 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
+
+/* PatchModuleWithCoroutine */
+static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code) {
+#if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
+    int result;
+    PyObject *globals, *result_obj;
+    globals = PyDict_New();  if (unlikely(!globals)) goto ignore;
+    result = PyDict_SetItemString(globals, "_cython_coroutine_type",
+    #ifdef __Pyx_Coroutine_USED
+        (PyObject*)__pyx_CoroutineType);
+    #else
+        Py_None);
+    #endif
+    if (unlikely(result < 0)) goto ignore;
+    result = PyDict_SetItemString(globals, "_cython_generator_type",
+    #ifdef __Pyx_Generator_USED
+        (PyObject*)__pyx_GeneratorType);
+    #else
+        Py_None);
+    #endif
+    if (unlikely(result < 0)) goto ignore;
+    if (unlikely(PyDict_SetItemString(globals, "_module", module) < 0)) goto ignore;
+    if (unlikely(PyDict_SetItemString(globals, "__builtins__", __pyx_b) < 0)) goto ignore;
+    result_obj = PyRun_String(py_code, Py_file_input, globals, globals);
+    if (unlikely(!result_obj)) goto ignore;
+    Py_DECREF(result_obj);
+    Py_DECREF(globals);
+    return module;
+ignore:
+    Py_XDECREF(globals);
+    PyErr_WriteUnraisable(module);
+    if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, "Cython module failed to patch module with custom type", 1) < 0)) {
+        Py_DECREF(module);
+        module = NULL;
+    }
+#else
+    py_code++;
+#endif
+    return module;
+}
+
+/* PatchGeneratorABC */
+#ifndef CYTHON_REGISTER_ABCS
+#define CYTHON_REGISTER_ABCS 1
+#endif
+#if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
+static PyObject* __Pyx_patch_abc_module(PyObject *module);
+static PyObject* __Pyx_patch_abc_module(PyObject *module) {
+    module = __Pyx_Coroutine_patch_module(
+        module, ""
+"if _cython_generator_type is not None:\n"
+"    try: Generator = _module.Generator\n"
+"    except AttributeError: pass\n"
+"    else: Generator.register(_cython_generator_type)\n"
+"if _cython_coroutine_type is not None:\n"
+"    try: Coroutine = _module.Coroutine\n"
+"    except AttributeError: pass\n"
+"    else: Coroutine.register(_cython_coroutine_type)\n"
+    );
+    return module;
+}
+#endif
+static int __Pyx_patch_abc(void) {
+#if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
+    static int abc_patched = 0;
+    if (CYTHON_REGISTER_ABCS && !abc_patched) {
+        PyObject *module;
+        module = PyImport_ImportModule((PY_MAJOR_VERSION >= 3) ? "collections.abc" : "collections");
+        if (unlikely(!module)) {
+            PyErr_WriteUnraisable(NULL);
+            if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning,
+                    ((PY_MAJOR_VERSION >= 3) ?
+                        "Cython module failed to register with collections.abc module" :
+                        "Cython module failed to register with collections module"), 1) < 0)) {
+                return -1;
+            }
+        } else {
+            module = __Pyx_patch_abc_module(module);
+            abc_patched = 1;
+            if (unlikely(!module))
+                return -1;
+            Py_DECREF(module);
+        }
+        module = PyImport_ImportModule("backports_abc");
+        if (module) {
+            module = __Pyx_patch_abc_module(module);
+            Py_XDECREF(module);
+        }
+        if (!module) {
+            PyErr_Clear();
+        }
+    }
+#else
+    if ((0)) __Pyx_Coroutine_patch_module(NULL, NULL);
+#endif
+    return 0;
+}
+
+/* Coroutine */
+static void __Pyx_CoroutineAwait_dealloc(PyObject *self) {
+    PyObject_GC_UnTrack(self);
+    Py_CLEAR(((__pyx_CoroutineAwaitObject*)self)->coroutine);
+    __Pyx_PyHeapTypeObject_GC_Del(self);
+}
+static int __Pyx_CoroutineAwait_traverse(__pyx_CoroutineAwaitObject *self, visitproc visit, void *arg) {
+    Py_VISIT(self->coroutine);
+    return 0;
+}
+static int __Pyx_CoroutineAwait_clear(__pyx_CoroutineAwaitObject *self) {
+    Py_CLEAR(self->coroutine);
+    return 0;
+}
+static PyObject *__Pyx_CoroutineAwait_Next(__pyx_CoroutineAwaitObject *self) {
+    return __Pyx_Generator_Next(self->coroutine);
+}
+static PyObject *__Pyx_CoroutineAwait_Send(__pyx_CoroutineAwaitObject *self, PyObject *value) {
+    return __Pyx_Coroutine_Send(self->coroutine, value);
+}
+static PyObject *__Pyx_CoroutineAwait_Throw(__pyx_CoroutineAwaitObject *self, PyObject *args) {
+    return __Pyx_Coroutine_Throw(self->coroutine, args);
+}
+static PyObject *__Pyx_CoroutineAwait_Close(__pyx_CoroutineAwaitObject *self, PyObject *arg) {
+    CYTHON_UNUSED_VAR(arg);
+    return __Pyx_Coroutine_Close(self->coroutine);
+}
+static PyObject *__Pyx_CoroutineAwait_self(PyObject *self) {
+    Py_INCREF(self);
+    return self;
+}
+#if !CYTHON_COMPILING_IN_PYPY
+static PyObject *__Pyx_CoroutineAwait_no_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) {
+    CYTHON_UNUSED_VAR(type);
+    CYTHON_UNUSED_VAR(args);
+    CYTHON_UNUSED_VAR(kwargs);
+    PyErr_SetString(PyExc_TypeError, "cannot instantiate type, use 'await coroutine' instead");
+    return NULL;
+}
+#endif
+static PyObject *__Pyx_CoroutineAwait_reduce_ex(__pyx_CoroutineAwaitObject *self, PyObject *arg) {
+    CYTHON_UNUSED_VAR(arg);
+    PyErr_Format(PyExc_TypeError, "cannot pickle '%.200s' object",
+                         Py_TYPE(self)->tp_name);
+    return NULL;
+}
+static PyMethodDef __pyx_CoroutineAwait_methods[] = {
+    {"send", (PyCFunction) __Pyx_CoroutineAwait_Send, METH_O,
+     (char*) PyDoc_STR("send(arg) -> send 'arg' into coroutine,\nreturn next yielded value or raise StopIteration.")},
+    {"throw", (PyCFunction) __Pyx_CoroutineAwait_Throw, METH_VARARGS,
+     (char*) PyDoc_STR("throw(typ[,val[,tb]]) -> raise exception in coroutine,\nreturn next yielded value or raise StopIteration.")},
+    {"close", (PyCFunction) __Pyx_CoroutineAwait_Close, METH_NOARGS,
+     (char*) PyDoc_STR("close() -> raise GeneratorExit inside coroutine.")},
+    {"__reduce_ex__", (PyCFunction) __Pyx_CoroutineAwait_reduce_ex, METH_O, 0},
+    {"__reduce__", (PyCFunction) __Pyx_CoroutineAwait_reduce_ex, METH_NOARGS, 0},
+    {0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_CoroutineAwaitType_slots[] = {
+    {Py_tp_dealloc, (void *)__Pyx_CoroutineAwait_dealloc},
+    {Py_tp_traverse, (void *)__Pyx_CoroutineAwait_traverse},
+    {Py_tp_clear, (void *)__Pyx_CoroutineAwait_clear},
+#if !CYTHON_COMPILING_IN_PYPY
+    {Py_tp_new, (void *)__Pyx_CoroutineAwait_no_new},
+#endif
+    {Py_tp_methods, (void *)__pyx_CoroutineAwait_methods},
+    {Py_tp_iter, (void *)__Pyx_CoroutineAwait_self},
+    {Py_tp_iternext, (void *)__Pyx_CoroutineAwait_Next},
+    {0, 0},
+};
+static PyType_Spec __pyx_CoroutineAwaitType_spec = {
+    __PYX_TYPE_MODULE_PREFIX "coroutine_wrapper",
+    sizeof(__pyx_CoroutineAwaitObject),
+    0,
+    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,
+    __pyx_CoroutineAwaitType_slots
+};
+#else
+static PyTypeObject __pyx_CoroutineAwaitType_type = {
+    PyVarObject_HEAD_INIT(0, 0)
+    __PYX_TYPE_MODULE_PREFIX "coroutine_wrapper",
+    sizeof(__pyx_CoroutineAwaitObject),
+    0,
+    (destructor) __Pyx_CoroutineAwait_dealloc,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,
+    PyDoc_STR("A wrapper object implementing __await__ for coroutines."),
+    (traverseproc) __Pyx_CoroutineAwait_traverse,
+    (inquiry) __Pyx_CoroutineAwait_clear,
+    0,
+    0,
+    __Pyx_CoroutineAwait_self,
+    (iternextfunc) __Pyx_CoroutineAwait_Next,
+    __pyx_CoroutineAwait_methods,
+    0                         ,
+    0                      ,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+#if !CYTHON_COMPILING_IN_PYPY
+    __Pyx_CoroutineAwait_no_new,
+#else
+    0,
+#endif
+    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
+#if PY_VERSION_HEX < 0x030500B1 || defined(__Pyx_IterableCoroutine_USED) || CYTHON_USE_ASYNC_SLOTS
+static CYTHON_INLINE PyObject *__Pyx__Coroutine_await(PyObject *coroutine) {
+    __pyx_CoroutineAwaitObject *await = PyObject_GC_New(__pyx_CoroutineAwaitObject, __pyx_CoroutineAwaitType);
+    if (unlikely(!await)) return NULL;
+    Py_INCREF(coroutine);
+    await->coroutine = coroutine;
+    PyObject_GC_Track(await);
+    return (PyObject*)await;
+}
+#endif
+#if PY_VERSION_HEX < 0x030500B1
+static PyObject *__Pyx_Coroutine_await_method(PyObject *coroutine, PyObject *arg) {
+    CYTHON_UNUSED_VAR(arg);
+    return __Pyx__Coroutine_await(coroutine);
+}
+#endif
+#if defined(__Pyx_IterableCoroutine_USED) || CYTHON_USE_ASYNC_SLOTS
+static PyObject *__Pyx_Coroutine_await(PyObject *coroutine) {
+    if (unlikely(!coroutine || !__Pyx_Coroutine_Check(coroutine))) {
+        PyErr_SetString(PyExc_TypeError, "invalid input, expected coroutine");
+        return NULL;
+    }
+    return __Pyx__Coroutine_await(coroutine);
+}
+#endif
+#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 && PY_VERSION_HEX < 0x030500B1
+static PyObject *__Pyx_Coroutine_compare(PyObject *obj, PyObject *other, int op) {
+    PyObject* result;
+    switch (op) {
+        case Py_EQ: result = (other == obj) ? Py_True : Py_False; break;
+        case Py_NE: result = (other != obj) ? Py_True : Py_False; break;
+        default:
+            result = Py_NotImplemented;
+    }
+    Py_INCREF(result);
+    return result;
+}
+#endif
+static PyMethodDef __pyx_Coroutine_methods[] = {
+    {"send", (PyCFunction) __Pyx_Coroutine_Send, METH_O,
+     (char*) PyDoc_STR("send(arg) -> send 'arg' into coroutine,\nreturn next iterated value or raise StopIteration.")},
+    {"throw", (PyCFunction) __Pyx_Coroutine_Throw, METH_VARARGS,
+     (char*) PyDoc_STR("throw(typ[,val[,tb]]) -> raise exception in coroutine,\nreturn next iterated value or raise StopIteration.")},
+    {"close", (PyCFunction) __Pyx_Coroutine_Close_Method, METH_NOARGS,
+     (char*) PyDoc_STR("close() -> raise GeneratorExit inside coroutine.")},
+#if PY_VERSION_HEX < 0x030500B1
+    {"__await__", (PyCFunction) __Pyx_Coroutine_await_method, METH_NOARGS,
+     (char*) PyDoc_STR("__await__() -> return an iterator to be used in await expression.")},
+#endif
+    {0, 0, 0, 0}
+};
+static PyMemberDef __pyx_Coroutine_memberlist[] = {
+    {(char *) "cr_running", T_BOOL, offsetof(__pyx_CoroutineObject, is_running), READONLY, NULL},
+    {(char*) "cr_await", T_OBJECT, offsetof(__pyx_CoroutineObject, yieldfrom), READONLY,
+     (char*) PyDoc_STR("object being awaited, or None")},
+    {(char*) "cr_code", T_OBJECT, offsetof(__pyx_CoroutineObject, gi_code), READONLY, NULL},
+    {(char *) "__module__", T_OBJECT, offsetof(__pyx_CoroutineObject, gi_modulename), 0, 0},
+#if CYTHON_USE_TYPE_SPECS
+    {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(__pyx_CoroutineObject, gi_weakreflist), READONLY, 0},
+#endif
+    {0, 0, 0, 0, 0}
+};
+static PyGetSetDef __pyx_Coroutine_getsets[] = {
+    {(char *) "__name__", (getter)__Pyx_Coroutine_get_name, (setter)__Pyx_Coroutine_set_name,
+     (char*) PyDoc_STR("name of the coroutine"), 0},
+    {(char *) "__qualname__", (getter)__Pyx_Coroutine_get_qualname, (setter)__Pyx_Coroutine_set_qualname,
+     (char*) PyDoc_STR("qualified name of the coroutine"), 0},
+    {(char *) "cr_frame", (getter)__Pyx_Coroutine_get_frame, NULL,
+     (char*) PyDoc_STR("Frame of the coroutine"), 0},
+    {0, 0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_CoroutineType_slots[] = {
+    {Py_tp_dealloc, (void *)__Pyx_Coroutine_dealloc},
+    {Py_am_await, (void *)&__Pyx_Coroutine_await},
+    {Py_tp_traverse, (void *)__Pyx_Coroutine_traverse},
+    {Py_tp_methods, (void *)__pyx_Coroutine_methods},
+    {Py_tp_members, (void *)__pyx_Coroutine_memberlist},
+    {Py_tp_getset, (void *)__pyx_Coroutine_getsets},
+    {Py_tp_getattro, (void *) __Pyx_PyObject_GenericGetAttrNoDict},
+#if CYTHON_USE_TP_FINALIZE
+    {Py_tp_finalize, (void *)__Pyx_Coroutine_del},
+#endif
+    {0, 0},
+};
+static PyType_Spec __pyx_CoroutineType_spec = {
+    __PYX_TYPE_MODULE_PREFIX "coroutine",
+    sizeof(__pyx_CoroutineObject),
+    0,
+    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_HAVE_FINALIZE,
+    __pyx_CoroutineType_slots
+};
+#else
+#if CYTHON_USE_ASYNC_SLOTS
+static __Pyx_PyAsyncMethodsStruct __pyx_Coroutine_as_async = {
+    __Pyx_Coroutine_await,
+    0,
+    0,
+#if PY_VERSION_HEX >= 0x030A00A3
+    0,
+#endif
+};
+#endif
+static PyTypeObject __pyx_CoroutineType_type = {
+    PyVarObject_HEAD_INIT(0, 0)
+    __PYX_TYPE_MODULE_PREFIX "coroutine",
+    sizeof(__pyx_CoroutineObject),
+    0,
+    (destructor) __Pyx_Coroutine_dealloc,
+    0,
+    0,
+    0,
+#if CYTHON_USE_ASYNC_SLOTS
+    &__pyx_Coroutine_as_async,
+#else
+    0,
+#endif
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_HAVE_FINALIZE,
+    0,
+    (traverseproc) __Pyx_Coroutine_traverse,
+    0,
+#if CYTHON_USE_ASYNC_SLOTS && CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 && PY_VERSION_HEX < 0x030500B1
+    __Pyx_Coroutine_compare,
+#else
+    0,
+#endif
+    offsetof(__pyx_CoroutineObject, gi_weakreflist),
+    0,
+    0,
+    __pyx_Coroutine_methods,
+    __pyx_Coroutine_memberlist,
+    __pyx_Coroutine_getsets,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+#if CYTHON_USE_TP_FINALIZE
+    0,
+#else
+    __Pyx_Coroutine_del,
+#endif
+    0,
+#if CYTHON_USE_TP_FINALIZE
+    __Pyx_Coroutine_del,
+#elif PY_VERSION_HEX >= 0x030400a1
+    0,
+#endif
+#if PY_VERSION_HEX >= 0x030800b1 && (!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_Coroutine_init(PyObject *module) {
+    CYTHON_MAYBE_UNUSED_VAR(module);
+#if CYTHON_USE_TYPE_SPECS
+    __pyx_CoroutineType = __Pyx_FetchCommonTypeFromSpec(module, &__pyx_CoroutineType_spec, NULL);
+#else
+    __pyx_CoroutineType_type.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+    __pyx_CoroutineType = __Pyx_FetchCommonType(&__pyx_CoroutineType_type);
+#endif
+    if (unlikely(!__pyx_CoroutineType))
+        return -1;
+#ifdef __Pyx_IterableCoroutine_USED
+    if (unlikely(__pyx_IterableCoroutine_init(module) == -1))
+        return -1;
+#endif
+#if CYTHON_USE_TYPE_SPECS
+    __pyx_CoroutineAwaitType = __Pyx_FetchCommonTypeFromSpec(module, &__pyx_CoroutineAwaitType_spec, NULL);
+#else
+    __pyx_CoroutineAwaitType = __Pyx_FetchCommonType(&__pyx_CoroutineAwaitType_type);
+#endif
+    if (unlikely(!__pyx_CoroutineAwaitType))
+        return -1;
+    return 0;
+}
+
+/* GetAwaitIter */
+static CYTHON_INLINE PyObject *__Pyx_Coroutine_GetAwaitableIter(PyObject *o) {
+#ifdef __Pyx_Coroutine_USED
+    if (__Pyx_Coroutine_Check(o)) {
+        return __Pyx_NewRef(o);
+    }
+#endif
+    return __Pyx__Coroutine_GetAwaitableIter(o);
+}
+static void __Pyx_Coroutine_AwaitableIterError(PyObject *source) {
+#if PY_VERSION_HEX >= 0x030600B3 && PY_VERSION_HEX < 0x030d0000 || defined(_PyErr_FormatFromCause)
+    __Pyx_TypeName source_type_name = __Pyx_PyType_GetName(Py_TYPE(source));
+    _PyErr_FormatFromCause(PyExc_TypeError,
+        "'async for' received an invalid object from __anext__: " __Pyx_FMT_TYPENAME, source_type_name);
+    __Pyx_DECREF_TypeName(source_type_name);
+#elif PY_MAJOR_VERSION >= 3
+    PyObject *exc, *val, *val2, *tb;
+    __Pyx_TypeName source_type_name = __Pyx_PyType_GetName(Py_TYPE(source));
+    assert(PyErr_Occurred());
+    PyErr_Fetch(&exc, &val, &tb);
+    PyErr_NormalizeException(&exc, &val, &tb);
+    if (tb != NULL) {
+        PyException_SetTraceback(val, tb);
+        Py_DECREF(tb);
+    }
+    Py_DECREF(exc);
+    assert(!PyErr_Occurred());
+    PyErr_Format(PyExc_TypeError,
+        "'async for' received an invalid object from __anext__: " __Pyx_FMT_TYPENAME, source_type_name);
+    __Pyx_DECREF_TypeName(source_type_name);
+    PyErr_Fetch(&exc, &val2, &tb);
+    PyErr_NormalizeException(&exc, &val2, &tb);
+    Py_INCREF(val);
+    PyException_SetCause(val2, val);
+    PyException_SetContext(val2, val);
+    PyErr_Restore(exc, val2, tb);
+#else
+    CYTHON_UNUSED_VAR(source);
+#endif
+}
+static PyObject *__Pyx__Coroutine_GetAwaitableIter(PyObject *obj) {
+    PyObject *res;
+#if CYTHON_USE_ASYNC_SLOTS
+    __Pyx_PyAsyncMethodsStruct* am = __Pyx_PyType_AsAsync(obj);
+    if (likely(am && am->am_await)) {
+        res = (*am->am_await)(obj);
+    } else
+#endif
+#if PY_VERSION_HEX >= 0x030500B2 || defined(PyCoro_CheckExact)
+    if (PyCoro_CheckExact(obj)) {
+        return __Pyx_NewRef(obj);
+    } else
+#endif
+#if CYTHON_COMPILING_IN_CPYTHON && defined(CO_ITERABLE_COROUTINE)
+#if PY_VERSION_HEX >= 0x030C00A6
+    if (PyGen_CheckExact(obj) && (PyGen_GetCode((PyGenObject*)obj)->co_flags & CO_ITERABLE_COROUTINE)) {
+#else
+    if (PyGen_CheckExact(obj) && ((PyGenObject*)obj)->gi_code && ((PyCodeObject *)((PyGenObject*)obj)->gi_code)->co_flags & CO_ITERABLE_COROUTINE) {
+#endif
+        return __Pyx_NewRef(obj);
+    } else
+#endif
+    {
+        PyObject *method = NULL;
+        int is_method = __Pyx_PyObject_GetMethod(obj, __pyx_n_s_await, &method);
+        if (likely(is_method)) {
+            res = __Pyx_PyObject_CallOneArg(method, obj);
+        } else if (likely(method)) {
+            res = __Pyx_PyObject_CallNoArg(method);
+        } else
+            goto slot_error;
+        Py_DECREF(method);
+    }
+    if (unlikely(!res)) {
+        __Pyx_Coroutine_AwaitableIterError(obj);
+        goto bad;
+    }
+    if (unlikely(!PyIter_Check(res))) {
+        __Pyx_TypeName res_type_name = __Pyx_PyType_GetName(Py_TYPE(res));
+        PyErr_Format(PyExc_TypeError,
+            "__await__() returned non-iterator of type '" __Pyx_FMT_TYPENAME "'", res_type_name);
+        __Pyx_DECREF_TypeName(res_type_name);
+        Py_CLEAR(res);
+    } else {
+        int is_coroutine = 0;
+        #ifdef __Pyx_Coroutine_USED
+        is_coroutine |= __Pyx_Coroutine_Check(res);
+        #endif
+        #if PY_VERSION_HEX >= 0x030500B2 || defined(PyCoro_CheckExact)
+        is_coroutine |= PyCoro_CheckExact(res);
+        #endif
+        if (unlikely(is_coroutine)) {
+            /* __await__ must return an *iterator*, not
+               a coroutine or another awaitable (see PEP 492) */
+            PyErr_SetString(PyExc_TypeError,
+                            "__await__() returned a coroutine");
+            Py_CLEAR(res);
+        }
+    }
+    return res;
+slot_error:
+    {
+        __Pyx_TypeName obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj));
+        PyErr_Format(PyExc_TypeError,
+            "object " __Pyx_FMT_TYPENAME " can't be used in 'await' expression", obj_type_name);
+        __Pyx_DECREF_TypeName(obj_type_name);
+    }
+bad:
+    return NULL;
+}
+
+/* CoroutineYieldFrom */
+  static PyObject* __Pyx__Coroutine_Yield_From_Generic(__pyx_CoroutineObject *gen, PyObject *source) {
+    PyObject *retval;
+    PyObject *source_gen = __Pyx__Coroutine_GetAwaitableIter(source);
+    if (unlikely(!source_gen)) {
+        return NULL;
+    }
+    if (__Pyx_Coroutine_Check(source_gen)) {
+        retval = __Pyx_Generator_Next(source_gen);
+    } else {
+        retval = __Pyx_PyObject_GetIterNextFunc(source_gen)(source_gen);
+    }
+    if (retval) {
+        gen->yieldfrom = source_gen;
+        return retval;
+    }
+    Py_DECREF(source_gen);
+    return NULL;
+}
+static CYTHON_INLINE PyObject* __Pyx_Coroutine_Yield_From(__pyx_CoroutineObject *gen, PyObject *source) {
+    PyObject *retval;
+    if (__Pyx_Coroutine_Check(source)) {
+        if (unlikely(((__pyx_CoroutineObject*)source)->yieldfrom)) {
+            PyErr_SetString(
+                PyExc_RuntimeError,
+                "coroutine is being awaited already");
+            return NULL;
+        }
+        retval = __Pyx_Generator_Next(source);
+#ifdef __Pyx_AsyncGen_USED
+    } else if (__pyx_PyAsyncGenASend_CheckExact(source)) {
+        retval = __Pyx_async_gen_asend_iternext(source);
+#endif
+    } else {
+        return __Pyx__Coroutine_Yield_From_Generic(gen, source);
+    }
+    if (retval) {
+        Py_INCREF(source);
+        gen->yieldfrom = source;
+    }
+    return retval;
+}
+
+/* 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
+}
+
+/* ErrOccurredWithGIL */
+  static CYTHON_INLINE int __Pyx_ErrOccurredWithGIL(void) {
+  int err;
+  #ifdef WITH_THREAD
+  PyGILState_STATE _save = PyGILState_Ensure();
+  #endif
+  err = !!PyErr_Occurred();
+  #ifdef WITH_THREAD
+  PyGILState_Release(_save);
+  #endif
+  return err;
+}
+
+/* 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;
+}
+
+/* UnpackTupleError */
+  static void __Pyx_UnpackTupleError(PyObject *t, Py_ssize_t index) {
+    if (t == Py_None) {
+      __Pyx_RaiseNoneNotIterableError();
+    } else if (PyTuple_GET_SIZE(t) < index) {
+      __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(t));
+    } else {
+      __Pyx_RaiseTooManyValuesError(index);
+    }
+}
+
+/* UnpackTuple2 */
+  static CYTHON_INLINE int __Pyx_unpack_tuple2_exact(
+        PyObject* tuple, PyObject** pvalue1, PyObject** pvalue2, int decref_tuple) {
+    PyObject *value1 = NULL, *value2 = NULL;
+#if CYTHON_COMPILING_IN_PYPY
+    value1 = PySequence_ITEM(tuple, 0);  if (unlikely(!value1)) goto bad;
+    value2 = PySequence_ITEM(tuple, 1);  if (unlikely(!value2)) goto bad;
+#else
+    value1 = PyTuple_GET_ITEM(tuple, 0);  Py_INCREF(value1);
+    value2 = PyTuple_GET_ITEM(tuple, 1);  Py_INCREF(value2);
+#endif
+    if (decref_tuple) {
+        Py_DECREF(tuple);
+    }
+    *pvalue1 = value1;
+    *pvalue2 = value2;
+    return 0;
+#if CYTHON_COMPILING_IN_PYPY
+bad:
+    Py_XDECREF(value1);
+    Py_XDECREF(value2);
+    if (decref_tuple) { Py_XDECREF(tuple); }
+    return -1;
+#endif
+}
+static int __Pyx_unpack_tuple2_generic(PyObject* tuple, PyObject** pvalue1, PyObject** pvalue2,
+                                       int has_known_size, int decref_tuple) {
+    Py_ssize_t index;
+    PyObject *value1 = NULL, *value2 = NULL, *iter = NULL;
+    iternextfunc iternext;
+    iter = PyObject_GetIter(tuple);
+    if (unlikely(!iter)) goto bad;
+    if (decref_tuple) { Py_DECREF(tuple); tuple = NULL; }
+    iternext = __Pyx_PyObject_GetIterNextFunc(iter);
+    value1 = iternext(iter); if (unlikely(!value1)) { index = 0; goto unpacking_failed; }
+    value2 = iternext(iter); if (unlikely(!value2)) { index = 1; goto unpacking_failed; }
+    if (!has_known_size && unlikely(__Pyx_IternextUnpackEndCheck(iternext(iter), 2))) goto bad;
+    Py_DECREF(iter);
+    *pvalue1 = value1;
+    *pvalue2 = value2;
+    return 0;
+unpacking_failed:
+    if (!has_known_size && __Pyx_IterFinish() == 0)
+        __Pyx_RaiseNeedMoreValuesError(index);
+bad:
+    Py_XDECREF(iter);
+    Py_XDECREF(value1);
+    Py_XDECREF(value2);
+    if (decref_tuple) { Py_XDECREF(tuple); }
+    return -1;
+}
+
+/* dict_iter */
+  #if CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
+#include <string.h>
+#endif
+static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* iterable, int is_dict, PyObject* method_name,
+                                                   Py_ssize_t* p_orig_length, int* p_source_is_dict) {
+    is_dict = is_dict || likely(PyDict_CheckExact(iterable));
+    *p_source_is_dict = is_dict;
+    if (is_dict) {
+#if !CYTHON_COMPILING_IN_PYPY
+        *p_orig_length = PyDict_Size(iterable);
+        Py_INCREF(iterable);
+        return iterable;
+#elif PY_MAJOR_VERSION >= 3
+        static PyObject *py_items = NULL, *py_keys = NULL, *py_values = NULL;
+        PyObject **pp = NULL;
+        if (method_name) {
+            const char *name = PyUnicode_AsUTF8(method_name);
+            if (strcmp(name, "iteritems") == 0) pp = &py_items;
+            else if (strcmp(name, "iterkeys") == 0) pp = &py_keys;
+            else if (strcmp(name, "itervalues") == 0) pp = &py_values;
+            if (pp) {
+                if (!*pp) {
+                    *pp = PyUnicode_FromString(name + 4);
+                    if (!*pp)
+                        return NULL;
+                }
+                method_name = *pp;
+            }
+        }
+#endif
+    }
+    *p_orig_length = 0;
+    if (method_name) {
+        PyObject* iter;
+        iterable = __Pyx_PyObject_CallMethod0(iterable, method_name);
+        if (!iterable)
+            return NULL;
+#if !CYTHON_COMPILING_IN_PYPY
+        if (PyTuple_CheckExact(iterable) || PyList_CheckExact(iterable))
+            return iterable;
+#endif
+        iter = PyObject_GetIter(iterable);
+        Py_DECREF(iterable);
+        return iter;
+    }
+    return PyObject_GetIter(iterable);
+}
+static CYTHON_INLINE int __Pyx_dict_iter_next(
+        PyObject* iter_obj, CYTHON_NCP_UNUSED Py_ssize_t orig_length, CYTHON_NCP_UNUSED Py_ssize_t* ppos,
+        PyObject** pkey, PyObject** pvalue, PyObject** pitem, int source_is_dict) {
+    PyObject* next_item;
+#if !CYTHON_COMPILING_IN_PYPY
+    if (source_is_dict) {
+        PyObject *key, *value;
+        if (unlikely(orig_length != PyDict_Size(iter_obj))) {
+            PyErr_SetString(PyExc_RuntimeError, "dictionary changed size during iteration");
+            return -1;
+        }
+        if (unlikely(!PyDict_Next(iter_obj, ppos, &key, &value))) {
+            return 0;
+        }
+        if (pitem) {
+            PyObject* tuple = PyTuple_New(2);
+            if (unlikely(!tuple)) {
+                return -1;
+            }
+            Py_INCREF(key);
+            Py_INCREF(value);
+            PyTuple_SET_ITEM(tuple, 0, key);
+            PyTuple_SET_ITEM(tuple, 1, value);
+            *pitem = tuple;
+        } else {
+            if (pkey) {
+                Py_INCREF(key);
+                *pkey = key;
+            }
+            if (pvalue) {
+                Py_INCREF(value);
+                *pvalue = value;
+            }
+        }
+        return 1;
+    } else if (PyTuple_CheckExact(iter_obj)) {
+        Py_ssize_t pos = *ppos;
+        if (unlikely(pos >= PyTuple_GET_SIZE(iter_obj))) return 0;
+        *ppos = pos + 1;
+        next_item = PyTuple_GET_ITEM(iter_obj, pos);
+        Py_INCREF(next_item);
+    } else if (PyList_CheckExact(iter_obj)) {
+        Py_ssize_t pos = *ppos;
+        if (unlikely(pos >= PyList_GET_SIZE(iter_obj))) return 0;
+        *ppos = pos + 1;
+        next_item = PyList_GET_ITEM(iter_obj, pos);
+        Py_INCREF(next_item);
+    } else
+#endif
+    {
+        next_item = PyIter_Next(iter_obj);
+        if (unlikely(!next_item)) {
+            return __Pyx_IterFinish();
+        }
+    }
+    if (pitem) {
+        *pitem = next_item;
+    } else if (pkey && pvalue) {
+        if (__Pyx_unpack_tuple2(next_item, pkey, pvalue, source_is_dict, source_is_dict, 1))
+            return -1;
+    } else if (pkey) {
+        *pkey = next_item;
+    } else {
+        *pvalue = next_item;
+    }
+    return 1;
+}
+
+/* dict_getitem_default */
+  static PyObject* __Pyx_PyDict_GetItemDefault(PyObject* d, PyObject* key, PyObject* default_value) {
+    PyObject* value;
+#if PY_MAJOR_VERSION >= 3 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07020000)
+    value = PyDict_GetItemWithError(d, key);
+    if (unlikely(!value)) {
+        if (unlikely(PyErr_Occurred()))
+            return NULL;
+        value = default_value;
+    }
+    Py_INCREF(value);
+    if ((1));
+#else
+    if (PyString_CheckExact(key) || PyUnicode_CheckExact(key) || PyInt_CheckExact(key)) {
+        value = PyDict_GetItem(d, key);
+        if (unlikely(!value)) {
+            value = default_value;
+        }
+        Py_INCREF(value);
+    }
+#endif
+    else {
+        if (default_value == Py_None)
+            value = __Pyx_CallUnboundCMethod1(&__pyx_umethod_PyDict_Type_get, d, key);
+        else
+            value = __Pyx_CallUnboundCMethod2(&__pyx_umethod_PyDict_Type_get, d, key, default_value);
+    }
+    return value;
+}
+
+/* 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);
+    }
+}
+
+/* ReturnWithStopIteration */
+  static void __Pyx__ReturnWithStopIteration(PyObject* value) {
+    PyObject *exc, *args;
+#if CYTHON_COMPILING_IN_CPYTHON
+    __Pyx_PyThreadState_declare
+    if (PY_VERSION_HEX >= 0x030C00A6
+            || unlikely(PyTuple_Check(value) || PyExceptionInstance_Check(value))) {
+        args = PyTuple_New(1);
+        if (unlikely(!args)) return;
+        Py_INCREF(value);
+        PyTuple_SET_ITEM(args, 0, value);
+        exc = PyType_Type.tp_call(PyExc_StopIteration, args, NULL);
+        Py_DECREF(args);
+        if (!exc) return;
+    } else {
+        Py_INCREF(value);
+        exc = value;
+    }
+    #if CYTHON_FAST_THREAD_STATE
+    __Pyx_PyThreadState_assign
+    #if CYTHON_USE_EXC_INFO_STACK
+    if (!__pyx_tstate->exc_info->exc_value)
+    #else
+    if (!__pyx_tstate->exc_type)
+    #endif
+    {
+        Py_INCREF(PyExc_StopIteration);
+        __Pyx_ErrRestore(PyExc_StopIteration, exc, NULL);
+        return;
+    }
+    #endif
+#else
+    args = PyTuple_Pack(1, value);
+    if (unlikely(!args)) return;
+    exc = PyObject_Call(PyExc_StopIteration, args, NULL);
+    Py_DECREF(args);
+    if (unlikely(!exc)) return;
+#endif
+    PyErr_SetObject(PyExc_StopIteration, exc);
+    Py_DECREF(exc);
+}
+
+/* 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__58);
+        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;
+}
+
+/* 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
+
+/* AsyncIter */
+  static PyObject *__Pyx_Coroutine_GetAsyncIter_Generic(PyObject *obj) {
+    __Pyx_TypeName obj_type_name;
+#if PY_VERSION_HEX < 0x030500B1
+    {
+        PyObject *iter = __Pyx_PyObject_CallMethod0(obj, __pyx_n_s_aiter);
+        if (likely(iter))
+            return iter;
+        if (!PyErr_ExceptionMatches(PyExc_AttributeError))
+            return NULL;
+    }
+#else
+    (void)&__Pyx_PyObject_CallMethod0;
+#endif
+    obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj));
+    PyErr_Format(PyExc_TypeError,
+                 "'async for' requires an object with __aiter__ method, got " __Pyx_FMT_TYPENAME, obj_type_name);
+    __Pyx_DECREF_TypeName(obj_type_name);
+    return NULL;
+}
+static CYTHON_INLINE PyObject *__Pyx_Coroutine_GetAsyncIter(PyObject *obj) {
+#ifdef __Pyx_AsyncGen_USED
+    if (__Pyx_AsyncGen_CheckExact(obj)) {
+        return __Pyx_NewRef(obj);
+    }
+#endif
+#if CYTHON_USE_ASYNC_SLOTS
+    {
+        __Pyx_PyAsyncMethodsStruct* am = __Pyx_PyType_AsAsync(obj);
+        if (likely(am && am->am_aiter)) {
+            return (*am->am_aiter)(obj);
+        }
+    }
+#endif
+    return __Pyx_Coroutine_GetAsyncIter_Generic(obj);
+}
+static PyObject *__Pyx__Coroutine_AsyncIterNext(PyObject *obj) {
+#if PY_VERSION_HEX < 0x030500B1
+    {
+        PyObject *value = __Pyx_PyObject_CallMethod0(obj, __pyx_n_s_anext);
+        if (likely(value))
+            return value;
+    }
+    if (PyErr_ExceptionMatches(PyExc_AttributeError))
+#endif
+    {
+        __Pyx_TypeName obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj));
+        PyErr_Format(PyExc_TypeError,
+            "'async for' requires an object with __anext__ method, got " __Pyx_FMT_TYPENAME, obj_type_name);
+        __Pyx_DECREF_TypeName(obj_type_name);
+    }
+    return NULL;
+}
+static CYTHON_INLINE PyObject *__Pyx_Coroutine_AsyncIterNext(PyObject *obj) {
+#ifdef __Pyx_AsyncGen_USED
+    if (__Pyx_AsyncGen_CheckExact(obj)) {
+        return __Pyx_async_gen_anext(obj);
+    }
+#endif
+#if CYTHON_USE_ASYNC_SLOTS
+    {
+        __Pyx_PyAsyncMethodsStruct* am = __Pyx_PyType_AsAsync(obj);
+        if (likely(am && am->am_anext)) {
+            return (*am->am_anext)(obj);
+        }
+    }
+#endif
+    return __Pyx__Coroutine_AsyncIterNext(obj);
+}
+
+/* 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);
+}
+
+/* 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_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
+
+/* 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__107);
+    }
+    return name;
+}
+#endif
+
+/* ValidateExternBase */
+  static int __Pyx_validate_extern_base(PyTypeObject *base) {
+    Py_ssize_t itemsize;
+#if CYTHON_COMPILING_IN_LIMITED_API
+    PyObject *py_itemsize;
+#endif
+#if !CYTHON_COMPILING_IN_LIMITED_API
+    itemsize = ((PyTypeObject *)base)->tp_itemsize;
+#else
+    py_itemsize = PyObject_GetAttrString((PyObject*)base, "__itemsize__");
+    if (!py_itemsize)
+        return -1;
+    itemsize = PyLong_AsSsize_t(py_itemsize);
+    Py_DECREF(py_itemsize);
+    py_itemsize = 0;
+    if (itemsize == (Py_ssize_t)-1 && PyErr_Occurred())
+        return -1;
+#endif
+    if (itemsize) {
+        __Pyx_TypeName b_name = __Pyx_PyType_GetName(base);
+        PyErr_Format(PyExc_TypeError,
+                "inheritance from PyVarObject types like '" __Pyx_FMT_TYPENAME "' not currently supported", b_name);
+        __Pyx_DECREF_TypeName(b_name);
+        return -1;
+    }
+    return 0;
+}
+
+/* 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
+
+/* PatchInspect */
+  static PyObject* __Pyx_patch_inspect(PyObject* module) {
+#if defined(__Pyx_Generator_USED) && (!defined(CYTHON_PATCH_INSPECT) || CYTHON_PATCH_INSPECT)
+    static int inspect_patched = 0;
+    if (unlikely((!inspect_patched) && module)) {
+        module = __Pyx_Coroutine_patch_module(
+            module, ""
+"old_types = getattr(_module.isgenerator, '_cython_generator_types', None)\n"
+"if old_types is None or not isinstance(old_types, set):\n"
+"    old_types = set()\n"
+"    def cy_wrap(orig_func, type=type, cython_generator_types=old_types):\n"
+"        def cy_isgenerator(obj): return type(obj) in cython_generator_types or orig_func(obj)\n"
+"        cy_isgenerator._cython_generator_types = cython_generator_types\n"
+"        return cy_isgenerator\n"
+"    _module.isgenerator = cy_wrap(_module.isgenerator)\n"
+"old_types.add(_cython_generator_type)\n"
+        );
+        inspect_patched = 1;
+    }
+#else
+    if ((0)) return __Pyx_Coroutine_patch_module(module, NULL);
+#endif
+    return module;
+}
+
+/* PatchAsyncIO */
+  static PyObject* __Pyx_patch_asyncio(PyObject* module) {
+#if PY_VERSION_HEX < 0x030500B2 &&\
+        (defined(__Pyx_Coroutine_USED) || defined(__Pyx_Generator_USED)) &&\
+        (!defined(CYTHON_PATCH_ASYNCIO) || CYTHON_PATCH_ASYNCIO)
+    PyObject *patch_module = NULL;
+    static int asyncio_patched = 0;
+    if (unlikely((!asyncio_patched) && module)) {
+        PyObject *package;
+        package = __Pyx_Import(__pyx_n_s_asyncio_coroutines, NULL, 0);
+        if (package) {
+            patch_module = __Pyx_Coroutine_patch_module(
+                PyObject_GetAttrString(package, "coroutines"), ""
+"try:\n"
+"    coro_types = _module._COROUTINE_TYPES\n"
+"except AttributeError: pass\n"
+"else:\n"
+"    if _cython_coroutine_type is not None and _cython_coroutine_type not in coro_types:\n"
+"        coro_types = tuple(coro_types) + (_cython_coroutine_type,)\n"
+"    if _cython_generator_type is not None and _cython_generator_type not in coro_types:\n"
+"        coro_types = tuple(coro_types) + (_cython_generator_type,)\n"
+"_module._COROUTINE_TYPES = coro_types\n"
+            );
+        } else {
+            PyErr_Clear();
+            package = __Pyx_Import(__pyx_n_s_asyncio_tasks, NULL, 0);
+            if (unlikely(!package)) goto asyncio_done;
+            patch_module = __Pyx_Coroutine_patch_module(
+                PyObject_GetAttrString(package, "tasks"), ""
+"if hasattr(_module, 'iscoroutine'):\n"
+"    old_types = getattr(_module.iscoroutine, '_cython_coroutine_types', None)\n"
+"    if old_types is None or not isinstance(old_types, set):\n"
+"        old_types = set()\n"
+"        def cy_wrap(orig_func, type=type, cython_coroutine_types=old_types):\n"
+"            def cy_iscoroutine(obj): return type(obj) in cython_coroutine_types or orig_func(obj)\n"
+"            cy_iscoroutine._cython_coroutine_types = cython_coroutine_types\n"
+"            return cy_iscoroutine\n"
+"        _module.iscoroutine = cy_wrap(_module.iscoroutine)\n"
+"    if _cython_coroutine_type is not None:\n"
+"        old_types.add(_cython_coroutine_type)\n"
+"    if _cython_generator_type is not None:\n"
+"        old_types.add(_cython_generator_type)\n"
+            );
+        }
+        Py_DECREF(package);
+        if (unlikely(!patch_module)) goto ignore;
+asyncio_done:
+        PyErr_Clear();
+        asyncio_patched = 1;
+#ifdef __Pyx_Generator_USED
+        {
+            PyObject *inspect_module;
+            if (patch_module) {
+                inspect_module = PyObject_GetAttr(patch_module, __pyx_n_s_inspect);
+                Py_DECREF(patch_module);
+            } else {
+                inspect_module = __Pyx_Import(__pyx_n_s_inspect, NULL, 0);
+            }
+            if (unlikely(!inspect_module)) goto ignore;
+            inspect_module = __Pyx_patch_inspect(inspect_module);
+            if (unlikely(!inspect_module)) {
+                Py_DECREF(module);
+                module = NULL;
+            }
+            Py_XDECREF(inspect_module);
+        }
+#else
+        if ((0)) return __Pyx_patch_inspect(module);
+#endif
+    }
+    return module;
+ignore:
+    PyErr_WriteUnraisable(module);
+    if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, "Cython module failed to patch asyncio package with custom generator type", 1) < 0)) {
+        Py_DECREF(module);
+        module = NULL;
+    }
+#else
+    if ((0)) return __Pyx_patch_inspect(__Pyx_Coroutine_patch_module(module, NULL));
+#endif
+    return module;
+}
+
+/* UnicodeConcatInPlace */
+  # if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
+static int
+__Pyx_unicode_modifiable(PyObject *unicode)
+{
+    if (Py_REFCNT(unicode) != 1)
+        return 0;
+    if (!PyUnicode_CheckExact(unicode))
+        return 0;
+    if (PyUnicode_CHECK_INTERNED(unicode))
+        return 0;
+    return 1;
+}
+static CYTHON_INLINE PyObject *__Pyx_PyUnicode_ConcatInPlaceImpl(PyObject **p_left, PyObject *right
+        #if CYTHON_REFNANNY
+        , void* __pyx_refnanny
+        #endif
+    ) {
+    PyObject *left = *p_left;
+    Py_ssize_t left_len, right_len, new_len;
+    if (unlikely(__Pyx_PyUnicode_READY(left) == -1))
+        return NULL;
+    if (unlikely(__Pyx_PyUnicode_READY(right) == -1))
+        return NULL;
+    left_len = PyUnicode_GET_LENGTH(left);
+    if (left_len == 0) {
+        Py_INCREF(right);
+        return right;
+    }
+    right_len = PyUnicode_GET_LENGTH(right);
+    if (right_len == 0) {
+        Py_INCREF(left);
+        return left;
+    }
+    if (unlikely(left_len > PY_SSIZE_T_MAX - right_len)) {
+        PyErr_SetString(PyExc_OverflowError,
+                        "strings are too large to concat");
+        return NULL;
+    }
+    new_len = left_len + right_len;
+    if (__Pyx_unicode_modifiable(left)
+            && PyUnicode_CheckExact(right)
+            && PyUnicode_KIND(right) <= PyUnicode_KIND(left)
+            && !(PyUnicode_IS_ASCII(left) && !PyUnicode_IS_ASCII(right))) {
+        int ret;
+        __Pyx_GIVEREF(*p_left);
+        ret = PyUnicode_Resize(p_left, new_len);
+        __Pyx_GOTREF(*p_left);
+        if (unlikely(ret != 0))
+            return NULL;
+        #if PY_VERSION_HEX >= 0x030d0000
+        if (unlikely(PyUnicode_CopyCharacters(*p_left, left_len, right, 0, right_len) < 0)) return NULL;
+        #else
+        _PyUnicode_FastCopyCharacters(*p_left, left_len, right, 0, right_len);
+        #endif
+        __Pyx_INCREF(*p_left);
+        __Pyx_GIVEREF(*p_left);
+        return *p_left;
+    } else {
+        return __Pyx_PyUnicode_Concat(left, right);
+    }
+  }
+#endif
+
+/* CalculateMetaclass */
+  static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases) {
+    Py_ssize_t i, nbases;
+#if CYTHON_ASSUME_SAFE_MACROS
+    nbases = PyTuple_GET_SIZE(bases);
+#else
+    nbases = PyTuple_Size(bases);
+    if (nbases < 0) return NULL;
+#endif
+    for (i=0; i < nbases; i++) {
+        PyTypeObject *tmptype;
+#if CYTHON_ASSUME_SAFE_MACROS
+        PyObject *tmp = PyTuple_GET_ITEM(bases, i);
+#else
+        PyObject *tmp = PyTuple_GetItem(bases, i);
+        if (!tmp) return NULL;
+#endif
+        tmptype = Py_TYPE(tmp);
+#if PY_MAJOR_VERSION < 3
+        if (tmptype == &PyClass_Type)
+            continue;
+#endif
+        if (!metaclass) {
+            metaclass = tmptype;
+            continue;
+        }
+        if (PyType_IsSubtype(metaclass, tmptype))
+            continue;
+        if (PyType_IsSubtype(tmptype, metaclass)) {
+            metaclass = tmptype;
+            continue;
+        }
+        PyErr_SetString(PyExc_TypeError,
+                        "metaclass conflict: "
+                        "the metaclass of a derived class "
+                        "must be a (non-strict) subclass "
+                        "of the metaclasses of all its bases");
+        return NULL;
+    }
+    if (!metaclass) {
+#if PY_MAJOR_VERSION < 3
+        metaclass = &PyClass_Type;
+#else
+        metaclass = &PyType_Type;
+#endif
+    }
+    Py_INCREF((PyObject*) metaclass);
+    return (PyObject*) metaclass;
+}
+
+/* Py3ClassCreate */
+  static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name,
+                                           PyObject *qualname, PyObject *mkw, PyObject *modname, PyObject *doc) {
+    PyObject *ns;
+    if (metaclass) {
+        PyObject *prep = __Pyx_PyObject_GetAttrStrNoError(metaclass, __pyx_n_s_prepare);
+        if (prep) {
+            PyObject *pargs[3] = {NULL, name, bases};
+            ns = __Pyx_PyObject_FastCallDict(prep, pargs+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, mkw);
+            Py_DECREF(prep);
+        } else {
+            if (unlikely(PyErr_Occurred()))
+                return NULL;
+            ns = PyDict_New();
+        }
+    } else {
+        ns = PyDict_New();
+    }
+    if (unlikely(!ns))
+        return NULL;
+    if (unlikely(PyObject_SetItem(ns, __pyx_n_s_module, modname) < 0)) goto bad;
+#if PY_VERSION_HEX >= 0x03030000
+    if (unlikely(PyObject_SetItem(ns, __pyx_n_s_qualname, qualname) < 0)) goto bad;
+#else
+    CYTHON_MAYBE_UNUSED_VAR(qualname);
+#endif
+    if (unlikely(doc && PyObject_SetItem(ns, __pyx_n_s_doc, doc) < 0)) goto bad;
+    return ns;
+bad:
+    Py_DECREF(ns);
+    return NULL;
+}
+#if PY_VERSION_HEX < 0x030600A4 && CYTHON_PEP487_INIT_SUBCLASS
+static int __Pyx_SetNamesPEP487(PyObject *type_obj) {
+    PyTypeObject *type = (PyTypeObject*) type_obj;
+    PyObject *names_to_set, *key, *value, *set_name, *tmp;
+    Py_ssize_t i = 0;
+#if CYTHON_USE_TYPE_SLOTS
+    names_to_set = PyDict_Copy(type->tp_dict);
+#else
+    {
+        PyObject *d = PyObject_GetAttr(type_obj, __pyx_n_s_dict);
+        names_to_set = NULL;
+        if (likely(d)) {
+            PyObject *names_to_set = PyDict_New();
+            int ret = likely(names_to_set) ? PyDict_Update(names_to_set, d) : -1;
+            Py_DECREF(d);
+            if (unlikely(ret < 0))
+                Py_CLEAR(names_to_set);
+        }
+    }
+#endif
+    if (unlikely(names_to_set == NULL))
+        goto bad;
+    while (PyDict_Next(names_to_set, &i, &key, &value)) {
+        set_name = __Pyx_PyObject_LookupSpecialNoError(value, __pyx_n_s_set_name);
+        if (unlikely(set_name != NULL)) {
+            tmp = __Pyx_PyObject_Call2Args(set_name, type_obj, key);
+            Py_DECREF(set_name);
+            if (unlikely(tmp == NULL)) {
+                __Pyx_TypeName value_type_name =
+                    __Pyx_PyType_GetName(Py_TYPE(value));
+                __Pyx_TypeName type_name = __Pyx_PyType_GetName(type);
+                PyErr_Format(PyExc_RuntimeError,
+#if PY_MAJOR_VERSION >= 3
+                    "Error calling __set_name__ on '" __Pyx_FMT_TYPENAME "' instance %R " "in '" __Pyx_FMT_TYPENAME "'",
+                    value_type_name, key, type_name);
+#else
+                    "Error calling __set_name__ on '" __Pyx_FMT_TYPENAME "' instance %.100s in '" __Pyx_FMT_TYPENAME "'",
+                    value_type_name,
+                    PyString_Check(key) ? PyString_AS_STRING(key) : "?",
+                    type_name);
+#endif
+                goto bad;
+            } else {
+                Py_DECREF(tmp);
+            }
+        }
+        else if (unlikely(PyErr_Occurred())) {
+            goto bad;
+        }
+    }
+    Py_DECREF(names_to_set);
+    return 0;
+bad:
+    Py_XDECREF(names_to_set);
+    return -1;
+}
+static PyObject *__Pyx_InitSubclassPEP487(PyObject *type_obj, PyObject *mkw) {
+#if CYTHON_USE_TYPE_SLOTS && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+    PyTypeObject *type = (PyTypeObject*) type_obj;
+    PyObject *mro = type->tp_mro;
+    Py_ssize_t i, nbases;
+    if (unlikely(!mro)) goto done;
+    (void) &__Pyx_GetBuiltinName;
+    Py_INCREF(mro);
+    nbases = PyTuple_GET_SIZE(mro);
+    assert(PyTuple_GET_ITEM(mro, 0) == type_obj);
+    for (i = 1; i < nbases-1; i++) {
+        PyObject *base, *dict, *meth;
+        base = PyTuple_GET_ITEM(mro, i);
+        dict = ((PyTypeObject *)base)->tp_dict;
+        meth = __Pyx_PyDict_GetItemStrWithError(dict, __pyx_n_s_init_subclass);
+        if (unlikely(meth)) {
+            descrgetfunc f = Py_TYPE(meth)->tp_descr_get;
+            PyObject *res;
+            Py_INCREF(meth);
+            if (likely(f)) {
+                res = f(meth, NULL, type_obj);
+                Py_DECREF(meth);
+                if (unlikely(!res)) goto bad;
+                meth = res;
+            }
+            res = __Pyx_PyObject_FastCallDict(meth, NULL, 0, mkw);
+            Py_DECREF(meth);
+            if (unlikely(!res)) goto bad;
+            Py_DECREF(res);
+            goto done;
+        } else if (unlikely(PyErr_Occurred())) {
+            goto bad;
+        }
+    }
+done:
+    Py_XDECREF(mro);
+    return type_obj;
+bad:
+    Py_XDECREF(mro);
+    Py_DECREF(type_obj);
+    return NULL;
+#else
+    PyObject *super_type, *super, *func, *res;
+#if CYTHON_COMPILING_IN_PYPY && !defined(PySuper_Type)
+    super_type = __Pyx_GetBuiltinName(__pyx_n_s_super);
+#else
+    super_type = (PyObject*) &PySuper_Type;
+    (void) &__Pyx_GetBuiltinName;
+#endif
+    super = likely(super_type) ? __Pyx_PyObject_Call2Args(super_type, type_obj, type_obj) : NULL;
+#if CYTHON_COMPILING_IN_PYPY && !defined(PySuper_Type)
+    Py_XDECREF(super_type);
+#endif
+    if (unlikely(!super)) {
+        Py_CLEAR(type_obj);
+        goto done;
+    }
+    func = __Pyx_PyObject_GetAttrStrNoError(super, __pyx_n_s_init_subclass);
+    Py_DECREF(super);
+    if (likely(!func)) {
+        if (unlikely(PyErr_Occurred()))
+            Py_CLEAR(type_obj);
+        goto done;
+    }
+    res = __Pyx_PyObject_FastCallDict(func, NULL, 0, mkw);
+    Py_DECREF(func);
+    if (unlikely(!res))
+        Py_CLEAR(type_obj);
+    Py_XDECREF(res);
+done:
+    return type_obj;
+#endif
+}
+#endif
+static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases,
+                                      PyObject *dict, PyObject *mkw,
+                                      int calculate_metaclass, int allow_py2_metaclass) {
+    PyObject *result;
+    PyObject *owned_metaclass = NULL;
+    PyObject *margs[4] = {NULL, name, bases, dict};
+    if (allow_py2_metaclass) {
+        owned_metaclass = PyObject_GetItem(dict, __pyx_n_s_metaclass);
+        if (owned_metaclass) {
+            metaclass = owned_metaclass;
+        } else if (likely(PyErr_ExceptionMatches(PyExc_KeyError))) {
+            PyErr_Clear();
+        } else {
+            return NULL;
+        }
+    }
+    if (calculate_metaclass && (!metaclass || PyType_Check(metaclass))) {
+        metaclass = __Pyx_CalculateMetaclass((PyTypeObject*) metaclass, bases);
+        Py_XDECREF(owned_metaclass);
+        if (unlikely(!metaclass))
+            return NULL;
+        owned_metaclass = metaclass;
+    }
+    result = __Pyx_PyObject_FastCallDict(metaclass, margs+1, 3 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET,
+#if PY_VERSION_HEX < 0x030600A4
+        (metaclass == (PyObject*)&PyType_Type) ? NULL : mkw
+#else
+        mkw
+#endif
+    );
+    Py_XDECREF(owned_metaclass);
+#if PY_VERSION_HEX < 0x030600A4 && CYTHON_PEP487_INIT_SUBCLASS
+    if (likely(result) && likely(PyType_Check(result))) {
+        if (unlikely(__Pyx_SetNamesPEP487(result) < 0)) {
+            Py_CLEAR(result);
+        } else {
+            result = __Pyx_InitSubclassPEP487(result, mkw);
+        }
+    }
+#else
+    (void) &__Pyx_GetBuiltinName;
+#endif
+    return result;
+}
+
+/* Py3UpdateBases */
+  static PyObject*
+__Pyx_PEP560_update_bases(PyObject *bases)
+{
+    Py_ssize_t i, j, size_bases;
+    PyObject *base, *meth, *new_base, *result, *new_bases = NULL;
+    size_bases = PyTuple_GET_SIZE(bases);
+    for (i = 0; i < size_bases; i++) {
+        base  = PyTuple_GET_ITEM(bases, i);
+        if (PyType_Check(base)) {
+            if (new_bases) {
+                if (PyList_Append(new_bases, base) < 0) {
+                    goto error;
+                }
+            }
+            continue;
+        }
+        meth = __Pyx_PyObject_GetAttrStrNoError(base, __pyx_n_s_mro_entries);
+        if (!meth && PyErr_Occurred()) {
+            goto error;
+        }
+        if (!meth) {
+            if (new_bases) {
+                if (PyList_Append(new_bases, base) < 0) {
+                    goto error;
+                }
+            }
+            continue;
+        }
+        new_base = __Pyx_PyObject_CallOneArg(meth, bases);
+        Py_DECREF(meth);
+        if (!new_base) {
+            goto error;
+        }
+        if (!PyTuple_Check(new_base)) {
+            PyErr_SetString(PyExc_TypeError,
+                            "__mro_entries__ must return a tuple");
+            Py_DECREF(new_base);
+            goto error;
+        }
+        if (!new_bases) {
+            if (!(new_bases = PyList_New(i))) {
+                goto error;
+            }
+            for (j = 0; j < i; j++) {
+                base = PyTuple_GET_ITEM(bases, j);
+                PyList_SET_ITEM(new_bases, j, base);
+                Py_INCREF(base);
+            }
+        }
+        j = PyList_GET_SIZE(new_bases);
+        if (PyList_SetSlice(new_bases, j, j, new_base) < 0) {
+            goto error;
+        }
+        Py_DECREF(new_base);
+    }
+    if (!new_bases) {
+        Py_INCREF(bases);
+        return bases;
+    }
+    result = PyList_AsTuple(new_bases);
+    Py_DECREF(new_bases);
+    return result;
+error:
+    Py_XDECREF(new_bases);
+    return NULL;
+}
+
+/* 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;\
+    }
+
+/* CIntToPy */
+  static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum____pyx_t_7_cython_6cygrpc_AioServerStatus(enum __pyx_t_7_cython_6cygrpc_AioServerStatus value) {
+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wconversion"
+#endif
+    const enum __pyx_t_7_cython_6cygrpc_AioServerStatus neg_one = (enum __pyx_t_7_cython_6cygrpc_AioServerStatus) -1, const_zero = (enum __pyx_t_7_cython_6cygrpc_AioServerStatus) 0;
+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
+#pragma GCC diagnostic pop
+#endif
+    const int is_unsigned = neg_one > const_zero;
+    if (is_unsigned) {
+        if (sizeof(enum __pyx_t_7_cython_6cygrpc_AioServerStatus) < sizeof(long)) {
+            return PyInt_FromLong((long) value);
+        } else if (sizeof(enum __pyx_t_7_cython_6cygrpc_AioServerStatus) <= sizeof(unsigned long)) {
+            return PyLong_FromUnsignedLong((unsigned long) value);
+#ifdef HAVE_LONG_LONG
+        } else if (sizeof(enum __pyx_t_7_cython_6cygrpc_AioServerStatus) <= sizeof(unsigned PY_LONG_LONG)) {
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+#endif
+        }
+    } else {
+        if (sizeof(enum __pyx_t_7_cython_6cygrpc_AioServerStatus) <= sizeof(long)) {
+            return PyInt_FromLong((long) value);
+#ifdef HAVE_LONG_LONG
+        } else if (sizeof(enum __pyx_t_7_cython_6cygrpc_AioServerStatus) <= 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(enum __pyx_t_7_cython_6cygrpc_AioServerStatus),
+                                     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(enum __pyx_t_7_cython_6cygrpc_AioServerStatus));
+        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 enum __pyx_t_7_cython_6cygrpc_AioServerStatus __Pyx_PyInt_As_enum____pyx_t_7_cython_6cygrpc_AioServerStatus(PyObject *x) {
+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wconversion"
+#endif
+    const enum __pyx_t_7_cython_6cygrpc_AioServerStatus neg_one = (enum __pyx_t_7_cython_6cygrpc_AioServerStatus) -1, const_zero = (enum __pyx_t_7_cython_6cygrpc_AioServerStatus) 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(enum __pyx_t_7_cython_6cygrpc_AioServerStatus) < sizeof(long))) {
+            __PYX_VERIFY_RETURN_INT(enum __pyx_t_7_cython_6cygrpc_AioServerStatus, long, PyInt_AS_LONG(x))
+        } else {
+            long val = PyInt_AS_LONG(x);
+            if (is_unsigned && unlikely(val < 0)) {
+                goto raise_neg_overflow;
+            }
+            return (enum __pyx_t_7_cython_6cygrpc_AioServerStatus) val;
+        }
+    }
+#endif
+    if (unlikely(!PyLong_Check(x))) {
+        enum __pyx_t_7_cython_6cygrpc_AioServerStatus val;
+        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
+        if (!tmp) return (enum __pyx_t_7_cython_6cygrpc_AioServerStatus) -1;
+        val = __Pyx_PyInt_As_enum____pyx_t_7_cython_6cygrpc_AioServerStatus(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(enum __pyx_t_7_cython_6cygrpc_AioServerStatus, __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(enum __pyx_t_7_cython_6cygrpc_AioServerStatus) > 1 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(enum __pyx_t_7_cython_6cygrpc_AioServerStatus, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if ((8 * sizeof(enum __pyx_t_7_cython_6cygrpc_AioServerStatus) >= 2 * PyLong_SHIFT)) {
+                            return (enum __pyx_t_7_cython_6cygrpc_AioServerStatus) (((((enum __pyx_t_7_cython_6cygrpc_AioServerStatus)digits[1]) << PyLong_SHIFT) | (enum __pyx_t_7_cython_6cygrpc_AioServerStatus)digits[0]));
+                        }
+                    }
+                    break;
+                case 3:
+                    if ((8 * sizeof(enum __pyx_t_7_cython_6cygrpc_AioServerStatus) > 2 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(enum __pyx_t_7_cython_6cygrpc_AioServerStatus, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if ((8 * sizeof(enum __pyx_t_7_cython_6cygrpc_AioServerStatus) >= 3 * PyLong_SHIFT)) {
+                            return (enum __pyx_t_7_cython_6cygrpc_AioServerStatus) (((((((enum __pyx_t_7_cython_6cygrpc_AioServerStatus)digits[2]) << PyLong_SHIFT) | (enum __pyx_t_7_cython_6cygrpc_AioServerStatus)digits[1]) << PyLong_SHIFT) | (enum __pyx_t_7_cython_6cygrpc_AioServerStatus)digits[0]));
+                        }
+                    }
+                    break;
+                case 4:
+                    if ((8 * sizeof(enum __pyx_t_7_cython_6cygrpc_AioServerStatus) > 3 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(enum __pyx_t_7_cython_6cygrpc_AioServerStatus, 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(enum __pyx_t_7_cython_6cygrpc_AioServerStatus) >= 4 * PyLong_SHIFT)) {
+                            return (enum __pyx_t_7_cython_6cygrpc_AioServerStatus) (((((((((enum __pyx_t_7_cython_6cygrpc_AioServerStatus)digits[3]) << PyLong_SHIFT) | (enum __pyx_t_7_cython_6cygrpc_AioServerStatus)digits[2]) << PyLong_SHIFT) | (enum __pyx_t_7_cython_6cygrpc_AioServerStatus)digits[1]) << PyLong_SHIFT) | (enum __pyx_t_7_cython_6cygrpc_AioServerStatus)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 (enum __pyx_t_7_cython_6cygrpc_AioServerStatus) -1;
+            if (unlikely(result == 1))
+                goto raise_neg_overflow;
+        }
+#endif
+        if ((sizeof(enum __pyx_t_7_cython_6cygrpc_AioServerStatus) <= sizeof(unsigned long))) {
+            __PYX_VERIFY_RETURN_INT_EXC(enum __pyx_t_7_cython_6cygrpc_AioServerStatus, unsigned long, PyLong_AsUnsignedLong(x))
+#ifdef HAVE_LONG_LONG
+        } else if ((sizeof(enum __pyx_t_7_cython_6cygrpc_AioServerStatus) <= sizeof(unsigned PY_LONG_LONG))) {
+            __PYX_VERIFY_RETURN_INT_EXC(enum __pyx_t_7_cython_6cygrpc_AioServerStatus, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+#endif
+        }
+    } else {
+#if CYTHON_USE_PYLONG_INTERNALS
+        if (__Pyx_PyLong_IsCompact(x)) {
+            __PYX_VERIFY_RETURN_INT(enum __pyx_t_7_cython_6cygrpc_AioServerStatus, __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(enum __pyx_t_7_cython_6cygrpc_AioServerStatus) - 1 > 1 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(enum __pyx_t_7_cython_6cygrpc_AioServerStatus, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if ((8 * sizeof(enum __pyx_t_7_cython_6cygrpc_AioServerStatus) - 1 > 2 * PyLong_SHIFT)) {
+                            return (enum __pyx_t_7_cython_6cygrpc_AioServerStatus) (((enum __pyx_t_7_cython_6cygrpc_AioServerStatus)-1)*(((((enum __pyx_t_7_cython_6cygrpc_AioServerStatus)digits[1]) << PyLong_SHIFT) | (enum __pyx_t_7_cython_6cygrpc_AioServerStatus)digits[0])));
+                        }
+                    }
+                    break;
+                case 2:
+                    if ((8 * sizeof(enum __pyx_t_7_cython_6cygrpc_AioServerStatus) > 1 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(enum __pyx_t_7_cython_6cygrpc_AioServerStatus, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if ((8 * sizeof(enum __pyx_t_7_cython_6cygrpc_AioServerStatus) - 1 > 2 * PyLong_SHIFT)) {
+                            return (enum __pyx_t_7_cython_6cygrpc_AioServerStatus) ((((((enum __pyx_t_7_cython_6cygrpc_AioServerStatus)digits[1]) << PyLong_SHIFT) | (enum __pyx_t_7_cython_6cygrpc_AioServerStatus)digits[0])));
+                        }
+                    }
+                    break;
+                case -3:
+                    if ((8 * sizeof(enum __pyx_t_7_cython_6cygrpc_AioServerStatus) - 1 > 2 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(enum __pyx_t_7_cython_6cygrpc_AioServerStatus, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if ((8 * sizeof(enum __pyx_t_7_cython_6cygrpc_AioServerStatus) - 1 > 3 * PyLong_SHIFT)) {
+                            return (enum __pyx_t_7_cython_6cygrpc_AioServerStatus) (((enum __pyx_t_7_cython_6cygrpc_AioServerStatus)-1)*(((((((enum __pyx_t_7_cython_6cygrpc_AioServerStatus)digits[2]) << PyLong_SHIFT) | (enum __pyx_t_7_cython_6cygrpc_AioServerStatus)digits[1]) << PyLong_SHIFT) | (enum __pyx_t_7_cython_6cygrpc_AioServerStatus)digits[0])));
+                        }
+                    }
+                    break;
+                case 3:
+                    if ((8 * sizeof(enum __pyx_t_7_cython_6cygrpc_AioServerStatus) > 2 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(enum __pyx_t_7_cython_6cygrpc_AioServerStatus, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if ((8 * sizeof(enum __pyx_t_7_cython_6cygrpc_AioServerStatus) - 1 > 3 * PyLong_SHIFT)) {
+                            return (enum __pyx_t_7_cython_6cygrpc_AioServerStatus) ((((((((enum __pyx_t_7_cython_6cygrpc_AioServerStatus)digits[2]) << PyLong_SHIFT) | (enum __pyx_t_7_cython_6cygrpc_AioServerStatus)digits[1]) << PyLong_SHIFT) | (enum __pyx_t_7_cython_6cygrpc_AioServerStatus)digits[0])));
+                        }
+                    }
+                    break;
+                case -4:
+                    if ((8 * sizeof(enum __pyx_t_7_cython_6cygrpc_AioServerStatus) - 1 > 3 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(enum __pyx_t_7_cython_6cygrpc_AioServerStatus, 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(enum __pyx_t_7_cython_6cygrpc_AioServerStatus) - 1 > 4 * PyLong_SHIFT)) {
+                            return (enum __pyx_t_7_cython_6cygrpc_AioServerStatus) (((enum __pyx_t_7_cython_6cygrpc_AioServerStatus)-1)*(((((((((enum __pyx_t_7_cython_6cygrpc_AioServerStatus)digits[3]) << PyLong_SHIFT) | (enum __pyx_t_7_cython_6cygrpc_AioServerStatus)digits[2]) << PyLong_SHIFT) | (enum __pyx_t_7_cython_6cygrpc_AioServerStatus)digits[1]) << PyLong_SHIFT) | (enum __pyx_t_7_cython_6cygrpc_AioServerStatus)digits[0])));
+                        }
+                    }
+                    break;
+                case 4:
+                    if ((8 * sizeof(enum __pyx_t_7_cython_6cygrpc_AioServerStatus) > 3 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(enum __pyx_t_7_cython_6cygrpc_AioServerStatus, 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(enum __pyx_t_7_cython_6cygrpc_AioServerStatus) - 1 > 4 * PyLong_SHIFT)) {
+                            return (enum __pyx_t_7_cython_6cygrpc_AioServerStatus) ((((((((((enum __pyx_t_7_cython_6cygrpc_AioServerStatus)digits[3]) << PyLong_SHIFT) | (enum __pyx_t_7_cython_6cygrpc_AioServerStatus)digits[2]) << PyLong_SHIFT) | (enum __pyx_t_7_cython_6cygrpc_AioServerStatus)digits[1]) << PyLong_SHIFT) | (enum __pyx_t_7_cython_6cygrpc_AioServerStatus)digits[0])));
+                        }
+                    }
+                    break;
+            }
+        }
+#endif
+        if ((sizeof(enum __pyx_t_7_cython_6cygrpc_AioServerStatus) <= sizeof(long))) {
+            __PYX_VERIFY_RETURN_INT_EXC(enum __pyx_t_7_cython_6cygrpc_AioServerStatus, long, PyLong_AsLong(x))
+#ifdef HAVE_LONG_LONG
+        } else if ((sizeof(enum __pyx_t_7_cython_6cygrpc_AioServerStatus) <= sizeof(PY_LONG_LONG))) {
+            __PYX_VERIFY_RETURN_INT_EXC(enum __pyx_t_7_cython_6cygrpc_AioServerStatus, PY_LONG_LONG, PyLong_AsLongLong(x))
+#endif
+        }
+    }
+    {
+        enum __pyx_t_7_cython_6cygrpc_AioServerStatus 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 = (enum __pyx_t_7_cython_6cygrpc_AioServerStatus) -1;
+#endif
+        if (unlikely(ret))
+            return (enum __pyx_t_7_cython_6cygrpc_AioServerStatus) -1;
+        return val;
+    }
+raise_overflow:
+    PyErr_SetString(PyExc_OverflowError,
+        "value too large to convert to enum __pyx_t_7_cython_6cygrpc_AioServerStatus");
+    return (enum __pyx_t_7_cython_6cygrpc_AioServerStatus) -1;
+raise_neg_overflow:
+    PyErr_SetString(PyExc_OverflowError,
+        "can't convert negative value to enum __pyx_t_7_cython_6cygrpc_AioServerStatus");
+    return (enum __pyx_t_7_cython_6cygrpc_AioServerStatus) -1;
+}
+
+/* CIntFromPy */
+  static CYTHON_INLINE grpc_status_code __Pyx_PyInt_As_grpc_status_code(PyObject *x) {
+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wconversion"
+#endif
+    const grpc_status_code neg_one = (grpc_status_code) -1, const_zero = (grpc_status_code) 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(grpc_status_code) < sizeof(long))) {
+            __PYX_VERIFY_RETURN_INT(grpc_status_code, long, PyInt_AS_LONG(x))
+        } else {
+            long val = PyInt_AS_LONG(x);
+            if (is_unsigned && unlikely(val < 0)) {
+                goto raise_neg_overflow;
+            }
+            return (grpc_status_code) val;
+        }
+    }
+#endif
+    if (unlikely(!PyLong_Check(x))) {
+        grpc_status_code val;
+        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
+        if (!tmp) return (grpc_status_code) -1;
+        val = __Pyx_PyInt_As_grpc_status_code(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(grpc_status_code, __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(grpc_status_code) > 1 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(grpc_status_code, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if ((8 * sizeof(grpc_status_code) >= 2 * PyLong_SHIFT)) {
+                            return (grpc_status_code) (((((grpc_status_code)digits[1]) << PyLong_SHIFT) | (grpc_status_code)digits[0]));
+                        }
+                    }
+                    break;
+                case 3:
+                    if ((8 * sizeof(grpc_status_code) > 2 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(grpc_status_code, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if ((8 * sizeof(grpc_status_code) >= 3 * PyLong_SHIFT)) {
+                            return (grpc_status_code) (((((((grpc_status_code)digits[2]) << PyLong_SHIFT) | (grpc_status_code)digits[1]) << PyLong_SHIFT) | (grpc_status_code)digits[0]));
+                        }
+                    }
+                    break;
+                case 4:
+                    if ((8 * sizeof(grpc_status_code) > 3 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(grpc_status_code, 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(grpc_status_code) >= 4 * PyLong_SHIFT)) {
+                            return (grpc_status_code) (((((((((grpc_status_code)digits[3]) << PyLong_SHIFT) | (grpc_status_code)digits[2]) << PyLong_SHIFT) | (grpc_status_code)digits[1]) << PyLong_SHIFT) | (grpc_status_code)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 (grpc_status_code) -1;
+            if (unlikely(result == 1))
+                goto raise_neg_overflow;
+        }
+#endif
+        if ((sizeof(grpc_status_code) <= sizeof(unsigned long))) {
+            __PYX_VERIFY_RETURN_INT_EXC(grpc_status_code, unsigned long, PyLong_AsUnsignedLong(x))
+#ifdef HAVE_LONG_LONG
+        } else if ((sizeof(grpc_status_code) <= sizeof(unsigned PY_LONG_LONG))) {
+            __PYX_VERIFY_RETURN_INT_EXC(grpc_status_code, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+#endif
+        }
+    } else {
+#if CYTHON_USE_PYLONG_INTERNALS
+        if (__Pyx_PyLong_IsCompact(x)) {
+            __PYX_VERIFY_RETURN_INT(grpc_status_code, __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(grpc_status_code) - 1 > 1 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(grpc_status_code, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if ((8 * sizeof(grpc_status_code) - 1 > 2 * PyLong_SHIFT)) {
+                            return (grpc_status_code) (((grpc_status_code)-1)*(((((grpc_status_code)digits[1]) << PyLong_SHIFT) | (grpc_status_code)digits[0])));
+                        }
+                    }
+                    break;
+                case 2:
+                    if ((8 * sizeof(grpc_status_code) > 1 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(grpc_status_code, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if ((8 * sizeof(grpc_status_code) - 1 > 2 * PyLong_SHIFT)) {
+                            return (grpc_status_code) ((((((grpc_status_code)digits[1]) << PyLong_SHIFT) | (grpc_status_code)digits[0])));
+                        }
+                    }
+                    break;
+                case -3:
+                    if ((8 * sizeof(grpc_status_code) - 1 > 2 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(grpc_status_code, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if ((8 * sizeof(grpc_status_code) - 1 > 3 * PyLong_SHIFT)) {
+                            return (grpc_status_code) (((grpc_status_code)-1)*(((((((grpc_status_code)digits[2]) << PyLong_SHIFT) | (grpc_status_code)digits[1]) << PyLong_SHIFT) | (grpc_status_code)digits[0])));
+                        }
+                    }
+                    break;
+                case 3:
+                    if ((8 * sizeof(grpc_status_code) > 2 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(grpc_status_code, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if ((8 * sizeof(grpc_status_code) - 1 > 3 * PyLong_SHIFT)) {
+                            return (grpc_status_code) ((((((((grpc_status_code)digits[2]) << PyLong_SHIFT) | (grpc_status_code)digits[1]) << PyLong_SHIFT) | (grpc_status_code)digits[0])));
+                        }
+                    }
+                    break;
+                case -4:
+                    if ((8 * sizeof(grpc_status_code) - 1 > 3 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(grpc_status_code, 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(grpc_status_code) - 1 > 4 * PyLong_SHIFT)) {
+                            return (grpc_status_code) (((grpc_status_code)-1)*(((((((((grpc_status_code)digits[3]) << PyLong_SHIFT) | (grpc_status_code)digits[2]) << PyLong_SHIFT) | (grpc_status_code)digits[1]) << PyLong_SHIFT) | (grpc_status_code)digits[0])));
+                        }
+                    }
+                    break;
+                case 4:
+                    if ((8 * sizeof(grpc_status_code) > 3 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(grpc_status_code, 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(grpc_status_code) - 1 > 4 * PyLong_SHIFT)) {
+                            return (grpc_status_code) ((((((((((grpc_status_code)digits[3]) << PyLong_SHIFT) | (grpc_status_code)digits[2]) << PyLong_SHIFT) | (grpc_status_code)digits[1]) << PyLong_SHIFT) | (grpc_status_code)digits[0])));
+                        }
+                    }
+                    break;
+            }
+        }
+#endif
+        if ((sizeof(grpc_status_code) <= sizeof(long))) {
+            __PYX_VERIFY_RETURN_INT_EXC(grpc_status_code, long, PyLong_AsLong(x))
+#ifdef HAVE_LONG_LONG
+        } else if ((sizeof(grpc_status_code) <= sizeof(PY_LONG_LONG))) {
+            __PYX_VERIFY_RETURN_INT_EXC(grpc_status_code, PY_LONG_LONG, PyLong_AsLongLong(x))
+#endif
+        }
+    }
+    {
+        grpc_status_code 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 = (grpc_status_code) -1;
+#endif
+        if (unlikely(ret))
+            return (grpc_status_code) -1;
+        return val;
+    }
+raise_overflow:
+    PyErr_SetString(PyExc_OverflowError,
+        "value too large to convert to grpc_status_code");
+    return (grpc_status_code) -1;
+raise_neg_overflow:
+    PyErr_SetString(PyExc_OverflowError,
+        "can't convert negative value to grpc_status_code");
+    return (grpc_status_code) -1;
+}
+
+/* CIntToPy */
+  static CYTHON_INLINE PyObject* __Pyx_PyInt_From_grpc_status_code(grpc_status_code value) {
+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wconversion"
+#endif
+    const grpc_status_code neg_one = (grpc_status_code) -1, const_zero = (grpc_status_code) 0;
+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
+#pragma GCC diagnostic pop
+#endif
+    const int is_unsigned = neg_one > const_zero;
+    if (is_unsigned) {
+        if (sizeof(grpc_status_code) < sizeof(long)) {
+            return PyInt_FromLong((long) value);
+        } else if (sizeof(grpc_status_code) <= sizeof(unsigned long)) {
+            return PyLong_FromUnsignedLong((unsigned long) value);
+#ifdef HAVE_LONG_LONG
+        } else if (sizeof(grpc_status_code) <= sizeof(unsigned PY_LONG_LONG)) {
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+#endif
+        }
+    } else {
+        if (sizeof(grpc_status_code) <= sizeof(long)) {
+            return PyInt_FromLong((long) value);
+#ifdef HAVE_LONG_LONG
+        } else if (sizeof(grpc_status_code) <= 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(grpc_status_code),
+                                     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(grpc_status_code));
+        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 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 grpc_connectivity_state __Pyx_PyInt_As_grpc_connectivity_state(PyObject *x) {
+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wconversion"
+#endif
+    const grpc_connectivity_state neg_one = (grpc_connectivity_state) -1, const_zero = (grpc_connectivity_state) 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(grpc_connectivity_state) < sizeof(long))) {
+            __PYX_VERIFY_RETURN_INT(grpc_connectivity_state, long, PyInt_AS_LONG(x))
+        } else {
+            long val = PyInt_AS_LONG(x);
+            if (is_unsigned && unlikely(val < 0)) {
+                goto raise_neg_overflow;
+            }
+            return (grpc_connectivity_state) val;
+        }
+    }
+#endif
+    if (unlikely(!PyLong_Check(x))) {
+        grpc_connectivity_state val;
+        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
+        if (!tmp) return (grpc_connectivity_state) -1;
+        val = __Pyx_PyInt_As_grpc_connectivity_state(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(grpc_connectivity_state, __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(grpc_connectivity_state) > 1 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(grpc_connectivity_state, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if ((8 * sizeof(grpc_connectivity_state) >= 2 * PyLong_SHIFT)) {
+                            return (grpc_connectivity_state) (((((grpc_connectivity_state)digits[1]) << PyLong_SHIFT) | (grpc_connectivity_state)digits[0]));
+                        }
+                    }
+                    break;
+                case 3:
+                    if ((8 * sizeof(grpc_connectivity_state) > 2 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(grpc_connectivity_state, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if ((8 * sizeof(grpc_connectivity_state) >= 3 * PyLong_SHIFT)) {
+                            return (grpc_connectivity_state) (((((((grpc_connectivity_state)digits[2]) << PyLong_SHIFT) | (grpc_connectivity_state)digits[1]) << PyLong_SHIFT) | (grpc_connectivity_state)digits[0]));
+                        }
+                    }
+                    break;
+                case 4:
+                    if ((8 * sizeof(grpc_connectivity_state) > 3 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(grpc_connectivity_state, 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(grpc_connectivity_state) >= 4 * PyLong_SHIFT)) {
+                            return (grpc_connectivity_state) (((((((((grpc_connectivity_state)digits[3]) << PyLong_SHIFT) | (grpc_connectivity_state)digits[2]) << PyLong_SHIFT) | (grpc_connectivity_state)digits[1]) << PyLong_SHIFT) | (grpc_connectivity_state)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 (grpc_connectivity_state) -1;
+            if (unlikely(result == 1))
+                goto raise_neg_overflow;
+        }
+#endif
+        if ((sizeof(grpc_connectivity_state) <= sizeof(unsigned long))) {
+            __PYX_VERIFY_RETURN_INT_EXC(grpc_connectivity_state, unsigned long, PyLong_AsUnsignedLong(x))
+#ifdef HAVE_LONG_LONG
+        } else if ((sizeof(grpc_connectivity_state) <= sizeof(unsigned PY_LONG_LONG))) {
+            __PYX_VERIFY_RETURN_INT_EXC(grpc_connectivity_state, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+#endif
+        }
+    } else {
+#if CYTHON_USE_PYLONG_INTERNALS
+        if (__Pyx_PyLong_IsCompact(x)) {
+            __PYX_VERIFY_RETURN_INT(grpc_connectivity_state, __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(grpc_connectivity_state) - 1 > 1 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(grpc_connectivity_state, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if ((8 * sizeof(grpc_connectivity_state) - 1 > 2 * PyLong_SHIFT)) {
+                            return (grpc_connectivity_state) (((grpc_connectivity_state)-1)*(((((grpc_connectivity_state)digits[1]) << PyLong_SHIFT) | (grpc_connectivity_state)digits[0])));
+                        }
+                    }
+                    break;
+                case 2:
+                    if ((8 * sizeof(grpc_connectivity_state) > 1 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(grpc_connectivity_state, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if ((8 * sizeof(grpc_connectivity_state) - 1 > 2 * PyLong_SHIFT)) {
+                            return (grpc_connectivity_state) ((((((grpc_connectivity_state)digits[1]) << PyLong_SHIFT) | (grpc_connectivity_state)digits[0])));
+                        }
+                    }
+                    break;
+                case -3:
+                    if ((8 * sizeof(grpc_connectivity_state) - 1 > 2 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(grpc_connectivity_state, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if ((8 * sizeof(grpc_connectivity_state) - 1 > 3 * PyLong_SHIFT)) {
+                            return (grpc_connectivity_state) (((grpc_connectivity_state)-1)*(((((((grpc_connectivity_state)digits[2]) << PyLong_SHIFT) | (grpc_connectivity_state)digits[1]) << PyLong_SHIFT) | (grpc_connectivity_state)digits[0])));
+                        }
+                    }
+                    break;
+                case 3:
+                    if ((8 * sizeof(grpc_connectivity_state) > 2 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(grpc_connectivity_state, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if ((8 * sizeof(grpc_connectivity_state) - 1 > 3 * PyLong_SHIFT)) {
+                            return (grpc_connectivity_state) ((((((((grpc_connectivity_state)digits[2]) << PyLong_SHIFT) | (grpc_connectivity_state)digits[1]) << PyLong_SHIFT) | (grpc_connectivity_state)digits[0])));
+                        }
+                    }
+                    break;
+                case -4:
+                    if ((8 * sizeof(grpc_connectivity_state) - 1 > 3 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(grpc_connectivity_state, 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(grpc_connectivity_state) - 1 > 4 * PyLong_SHIFT)) {
+                            return (grpc_connectivity_state) (((grpc_connectivity_state)-1)*(((((((((grpc_connectivity_state)digits[3]) << PyLong_SHIFT) | (grpc_connectivity_state)digits[2]) << PyLong_SHIFT) | (grpc_connectivity_state)digits[1]) << PyLong_SHIFT) | (grpc_connectivity_state)digits[0])));
+                        }
+                    }
+                    break;
+                case 4:
+                    if ((8 * sizeof(grpc_connectivity_state) > 3 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(grpc_connectivity_state, 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(grpc_connectivity_state) - 1 > 4 * PyLong_SHIFT)) {
+                            return (grpc_connectivity_state) ((((((((((grpc_connectivity_state)digits[3]) << PyLong_SHIFT) | (grpc_connectivity_state)digits[2]) << PyLong_SHIFT) | (grpc_connectivity_state)digits[1]) << PyLong_SHIFT) | (grpc_connectivity_state)digits[0])));
+                        }
+                    }
+                    break;
+            }
+        }
+#endif
+        if ((sizeof(grpc_connectivity_state) <= sizeof(long))) {
+            __PYX_VERIFY_RETURN_INT_EXC(grpc_connectivity_state, long, PyLong_AsLong(x))
+#ifdef HAVE_LONG_LONG
+        } else if ((sizeof(grpc_connectivity_state) <= sizeof(PY_LONG_LONG))) {
+            __PYX_VERIFY_RETURN_INT_EXC(grpc_connectivity_state, PY_LONG_LONG, PyLong_AsLongLong(x))
+#endif
+        }
+    }
+    {
+        grpc_connectivity_state 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 = (grpc_connectivity_state) -1;
+#endif
+        if (unlikely(ret))
+            return (grpc_connectivity_state) -1;
+        return val;
+    }
+raise_overflow:
+    PyErr_SetString(PyExc_OverflowError,
+        "value too large to convert to grpc_connectivity_state");
+    return (grpc_connectivity_state) -1;
+raise_neg_overflow:
+    PyErr_SetString(PyExc_OverflowError,
+        "can't convert negative value to grpc_connectivity_state");
+    return (grpc_connectivity_state) -1;
+}
+
+/* CIntToPy */
+  static CYTHON_INLINE PyObject* __Pyx_PyInt_From_grpc_local_connect_type(grpc_local_connect_type value) {
+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wconversion"
+#endif
+    const grpc_local_connect_type neg_one = (grpc_local_connect_type) -1, const_zero = (grpc_local_connect_type) 0;
+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
+#pragma GCC diagnostic pop
+#endif
+    const int is_unsigned = neg_one > const_zero;
+    if (is_unsigned) {
+        if (sizeof(grpc_local_connect_type) < sizeof(long)) {
+            return PyInt_FromLong((long) value);
+        } else if (sizeof(grpc_local_connect_type) <= sizeof(unsigned long)) {
+            return PyLong_FromUnsignedLong((unsigned long) value);
+#ifdef HAVE_LONG_LONG
+        } else if (sizeof(grpc_local_connect_type) <= sizeof(unsigned PY_LONG_LONG)) {
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+#endif
+        }
+    } else {
+        if (sizeof(grpc_local_connect_type) <= sizeof(long)) {
+            return PyInt_FromLong((long) value);
+#ifdef HAVE_LONG_LONG
+        } else if (sizeof(grpc_local_connect_type) <= 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(grpc_local_connect_type),
+                                     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(grpc_local_connect_type));
+        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 grpc_local_connect_type __Pyx_PyInt_As_grpc_local_connect_type(PyObject *x) {
+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wconversion"
+#endif
+    const grpc_local_connect_type neg_one = (grpc_local_connect_type) -1, const_zero = (grpc_local_connect_type) 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(grpc_local_connect_type) < sizeof(long))) {
+            __PYX_VERIFY_RETURN_INT(grpc_local_connect_type, long, PyInt_AS_LONG(x))
+        } else {
+            long val = PyInt_AS_LONG(x);
+            if (is_unsigned && unlikely(val < 0)) {
+                goto raise_neg_overflow;
+            }
+            return (grpc_local_connect_type) val;
+        }
+    }
+#endif
+    if (unlikely(!PyLong_Check(x))) {
+        grpc_local_connect_type val;
+        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
+        if (!tmp) return (grpc_local_connect_type) -1;
+        val = __Pyx_PyInt_As_grpc_local_connect_type(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(grpc_local_connect_type, __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(grpc_local_connect_type) > 1 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(grpc_local_connect_type, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if ((8 * sizeof(grpc_local_connect_type) >= 2 * PyLong_SHIFT)) {
+                            return (grpc_local_connect_type) (((((grpc_local_connect_type)digits[1]) << PyLong_SHIFT) | (grpc_local_connect_type)digits[0]));
+                        }
+                    }
+                    break;
+                case 3:
+                    if ((8 * sizeof(grpc_local_connect_type) > 2 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(grpc_local_connect_type, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if ((8 * sizeof(grpc_local_connect_type) >= 3 * PyLong_SHIFT)) {
+                            return (grpc_local_connect_type) (((((((grpc_local_connect_type)digits[2]) << PyLong_SHIFT) | (grpc_local_connect_type)digits[1]) << PyLong_SHIFT) | (grpc_local_connect_type)digits[0]));
+                        }
+                    }
+                    break;
+                case 4:
+                    if ((8 * sizeof(grpc_local_connect_type) > 3 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(grpc_local_connect_type, 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(grpc_local_connect_type) >= 4 * PyLong_SHIFT)) {
+                            return (grpc_local_connect_type) (((((((((grpc_local_connect_type)digits[3]) << PyLong_SHIFT) | (grpc_local_connect_type)digits[2]) << PyLong_SHIFT) | (grpc_local_connect_type)digits[1]) << PyLong_SHIFT) | (grpc_local_connect_type)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 (grpc_local_connect_type) -1;
+            if (unlikely(result == 1))
+                goto raise_neg_overflow;
+        }
+#endif
+        if ((sizeof(grpc_local_connect_type) <= sizeof(unsigned long))) {
+            __PYX_VERIFY_RETURN_INT_EXC(grpc_local_connect_type, unsigned long, PyLong_AsUnsignedLong(x))
+#ifdef HAVE_LONG_LONG
+        } else if ((sizeof(grpc_local_connect_type) <= sizeof(unsigned PY_LONG_LONG))) {
+            __PYX_VERIFY_RETURN_INT_EXC(grpc_local_connect_type, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+#endif
+        }
+    } else {
+#if CYTHON_USE_PYLONG_INTERNALS
+        if (__Pyx_PyLong_IsCompact(x)) {
+            __PYX_VERIFY_RETURN_INT(grpc_local_connect_type, __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(grpc_local_connect_type) - 1 > 1 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(grpc_local_connect_type, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if ((8 * sizeof(grpc_local_connect_type) - 1 > 2 * PyLong_SHIFT)) {
+                            return (grpc_local_connect_type) (((grpc_local_connect_type)-1)*(((((grpc_local_connect_type)digits[1]) << PyLong_SHIFT) | (grpc_local_connect_type)digits[0])));
+                        }
+                    }
+                    break;
+                case 2:
+                    if ((8 * sizeof(grpc_local_connect_type) > 1 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(grpc_local_connect_type, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if ((8 * sizeof(grpc_local_connect_type) - 1 > 2 * PyLong_SHIFT)) {
+                            return (grpc_local_connect_type) ((((((grpc_local_connect_type)digits[1]) << PyLong_SHIFT) | (grpc_local_connect_type)digits[0])));
+                        }
+                    }
+                    break;
+                case -3:
+                    if ((8 * sizeof(grpc_local_connect_type) - 1 > 2 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(grpc_local_connect_type, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if ((8 * sizeof(grpc_local_connect_type) - 1 > 3 * PyLong_SHIFT)) {
+                            return (grpc_local_connect_type) (((grpc_local_connect_type)-1)*(((((((grpc_local_connect_type)digits[2]) << PyLong_SHIFT) | (grpc_local_connect_type)digits[1]) << PyLong_SHIFT) | (grpc_local_connect_type)digits[0])));
+                        }
+                    }
+                    break;
+                case 3:
+                    if ((8 * sizeof(grpc_local_connect_type) > 2 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(grpc_local_connect_type, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if ((8 * sizeof(grpc_local_connect_type) - 1 > 3 * PyLong_SHIFT)) {
+                            return (grpc_local_connect_type) ((((((((grpc_local_connect_type)digits[2]) << PyLong_SHIFT) | (grpc_local_connect_type)digits[1]) << PyLong_SHIFT) | (grpc_local_connect_type)digits[0])));
+                        }
+                    }
+                    break;
+                case -4:
+                    if ((8 * sizeof(grpc_local_connect_type) - 1 > 3 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(grpc_local_connect_type, 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(grpc_local_connect_type) - 1 > 4 * PyLong_SHIFT)) {
+                            return (grpc_local_connect_type) (((grpc_local_connect_type)-1)*(((((((((grpc_local_connect_type)digits[3]) << PyLong_SHIFT) | (grpc_local_connect_type)digits[2]) << PyLong_SHIFT) | (grpc_local_connect_type)digits[1]) << PyLong_SHIFT) | (grpc_local_connect_type)digits[0])));
+                        }
+                    }
+                    break;
+                case 4:
+                    if ((8 * sizeof(grpc_local_connect_type) > 3 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(grpc_local_connect_type, 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(grpc_local_connect_type) - 1 > 4 * PyLong_SHIFT)) {
+                            return (grpc_local_connect_type) ((((((((((grpc_local_connect_type)digits[3]) << PyLong_SHIFT) | (grpc_local_connect_type)digits[2]) << PyLong_SHIFT) | (grpc_local_connect_type)digits[1]) << PyLong_SHIFT) | (grpc_local_connect_type)digits[0])));
+                        }
+                    }
+                    break;
+            }
+        }
+#endif
+        if ((sizeof(grpc_local_connect_type) <= sizeof(long))) {
+            __PYX_VERIFY_RETURN_INT_EXC(grpc_local_connect_type, long, PyLong_AsLong(x))
+#ifdef HAVE_LONG_LONG
+        } else if ((sizeof(grpc_local_connect_type) <= sizeof(PY_LONG_LONG))) {
+            __PYX_VERIFY_RETURN_INT_EXC(grpc_local_connect_type, PY_LONG_LONG, PyLong_AsLongLong(x))
+#endif
+        }
+    }
+    {
+        grpc_local_connect_type 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 = (grpc_local_connect_type) -1;
+#endif
+        if (unlikely(ret))
+            return (grpc_local_connect_type) -1;
+        return val;
+    }
+raise_overflow:
+    PyErr_SetString(PyExc_OverflowError,
+        "value too large to convert to grpc_local_connect_type");
+    return (grpc_local_connect_type) -1;
+raise_neg_overflow:
+    PyErr_SetString(PyExc_OverflowError,
+        "can't convert negative value to grpc_local_connect_type");
+    return (grpc_local_connect_type) -1;
+}
+
+/* CIntFromPy */
+  static CYTHON_INLINE grpc_completion_type __Pyx_PyInt_As_grpc_completion_type(PyObject *x) {
+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wconversion"
+#endif
+    const grpc_completion_type neg_one = (grpc_completion_type) -1, const_zero = (grpc_completion_type) 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(grpc_completion_type) < sizeof(long))) {
+            __PYX_VERIFY_RETURN_INT(grpc_completion_type, long, PyInt_AS_LONG(x))
+        } else {
+            long val = PyInt_AS_LONG(x);
+            if (is_unsigned && unlikely(val < 0)) {
+                goto raise_neg_overflow;
+            }
+            return (grpc_completion_type) val;
+        }
+    }
+#endif
+    if (unlikely(!PyLong_Check(x))) {
+        grpc_completion_type val;
+        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
+        if (!tmp) return (grpc_completion_type) -1;
+        val = __Pyx_PyInt_As_grpc_completion_type(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(grpc_completion_type, __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(grpc_completion_type) > 1 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(grpc_completion_type, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if ((8 * sizeof(grpc_completion_type) >= 2 * PyLong_SHIFT)) {
+                            return (grpc_completion_type) (((((grpc_completion_type)digits[1]) << PyLong_SHIFT) | (grpc_completion_type)digits[0]));
+                        }
+                    }
+                    break;
+                case 3:
+                    if ((8 * sizeof(grpc_completion_type) > 2 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(grpc_completion_type, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if ((8 * sizeof(grpc_completion_type) >= 3 * PyLong_SHIFT)) {
+                            return (grpc_completion_type) (((((((grpc_completion_type)digits[2]) << PyLong_SHIFT) | (grpc_completion_type)digits[1]) << PyLong_SHIFT) | (grpc_completion_type)digits[0]));
+                        }
+                    }
+                    break;
+                case 4:
+                    if ((8 * sizeof(grpc_completion_type) > 3 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(grpc_completion_type, 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(grpc_completion_type) >= 4 * PyLong_SHIFT)) {
+                            return (grpc_completion_type) (((((((((grpc_completion_type)digits[3]) << PyLong_SHIFT) | (grpc_completion_type)digits[2]) << PyLong_SHIFT) | (grpc_completion_type)digits[1]) << PyLong_SHIFT) | (grpc_completion_type)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 (grpc_completion_type) -1;
+            if (unlikely(result == 1))
+                goto raise_neg_overflow;
+        }
+#endif
+        if ((sizeof(grpc_completion_type) <= sizeof(unsigned long))) {
+            __PYX_VERIFY_RETURN_INT_EXC(grpc_completion_type, unsigned long, PyLong_AsUnsignedLong(x))
+#ifdef HAVE_LONG_LONG
+        } else if ((sizeof(grpc_completion_type) <= sizeof(unsigned PY_LONG_LONG))) {
+            __PYX_VERIFY_RETURN_INT_EXC(grpc_completion_type, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+#endif
+        }
+    } else {
+#if CYTHON_USE_PYLONG_INTERNALS
+        if (__Pyx_PyLong_IsCompact(x)) {
+            __PYX_VERIFY_RETURN_INT(grpc_completion_type, __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(grpc_completion_type) - 1 > 1 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(grpc_completion_type, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if ((8 * sizeof(grpc_completion_type) - 1 > 2 * PyLong_SHIFT)) {
+                            return (grpc_completion_type) (((grpc_completion_type)-1)*(((((grpc_completion_type)digits[1]) << PyLong_SHIFT) | (grpc_completion_type)digits[0])));
+                        }
+                    }
+                    break;
+                case 2:
+                    if ((8 * sizeof(grpc_completion_type) > 1 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(grpc_completion_type, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if ((8 * sizeof(grpc_completion_type) - 1 > 2 * PyLong_SHIFT)) {
+                            return (grpc_completion_type) ((((((grpc_completion_type)digits[1]) << PyLong_SHIFT) | (grpc_completion_type)digits[0])));
+                        }
+                    }
+                    break;
+                case -3:
+                    if ((8 * sizeof(grpc_completion_type) - 1 > 2 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(grpc_completion_type, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if ((8 * sizeof(grpc_completion_type) - 1 > 3 * PyLong_SHIFT)) {
+                            return (grpc_completion_type) (((grpc_completion_type)-1)*(((((((grpc_completion_type)digits[2]) << PyLong_SHIFT) | (grpc_completion_type)digits[1]) << PyLong_SHIFT) | (grpc_completion_type)digits[0])));
+                        }
+                    }
+                    break;
+                case 3:
+                    if ((8 * sizeof(grpc_completion_type) > 2 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(grpc_completion_type, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if ((8 * sizeof(grpc_completion_type) - 1 > 3 * PyLong_SHIFT)) {
+                            return (grpc_completion_type) ((((((((grpc_completion_type)digits[2]) << PyLong_SHIFT) | (grpc_completion_type)digits[1]) << PyLong_SHIFT) | (grpc_completion_type)digits[0])));
+                        }
+                    }
+                    break;
+                case -4:
+                    if ((8 * sizeof(grpc_completion_type) - 1 > 3 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(grpc_completion_type, 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(grpc_completion_type) - 1 > 4 * PyLong_SHIFT)) {
+                            return (grpc_completion_type) (((grpc_completion_type)-1)*(((((((((grpc_completion_type)digits[3]) << PyLong_SHIFT) | (grpc_completion_type)digits[2]) << PyLong_SHIFT) | (grpc_completion_type)digits[1]) << PyLong_SHIFT) | (grpc_completion_type)digits[0])));
+                        }
+                    }
+                    break;
+                case 4:
+                    if ((8 * sizeof(grpc_completion_type) > 3 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(grpc_completion_type, 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(grpc_completion_type) - 1 > 4 * PyLong_SHIFT)) {
+                            return (grpc_completion_type) ((((((((((grpc_completion_type)digits[3]) << PyLong_SHIFT) | (grpc_completion_type)digits[2]) << PyLong_SHIFT) | (grpc_completion_type)digits[1]) << PyLong_SHIFT) | (grpc_completion_type)digits[0])));
+                        }
+                    }
+                    break;
+            }
+        }
+#endif
+        if ((sizeof(grpc_completion_type) <= sizeof(long))) {
+            __PYX_VERIFY_RETURN_INT_EXC(grpc_completion_type, long, PyLong_AsLong(x))
+#ifdef HAVE_LONG_LONG
+        } else if ((sizeof(grpc_completion_type) <= sizeof(PY_LONG_LONG))) {
+            __PYX_VERIFY_RETURN_INT_EXC(grpc_completion_type, PY_LONG_LONG, PyLong_AsLongLong(x))
+#endif
+        }
+    }
+    {
+        grpc_completion_type 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 = (grpc_completion_type) -1;
+#endif
+        if (unlikely(ret))
+            return (grpc_completion_type) -1;
+        return val;
+    }
+raise_overflow:
+    PyErr_SetString(PyExc_OverflowError,
+        "value too large to convert to grpc_completion_type");
+    return (grpc_completion_type) -1;
+raise_neg_overflow:
+    PyErr_SetString(PyExc_OverflowError,
+        "can't convert negative value to grpc_completion_type");
+    return (grpc_completion_type) -1;
+}
+
+/* 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
+    }
+}
+
+/* CIntToPy */
+  static CYTHON_INLINE PyObject* __Pyx_PyInt_From_grpc_connectivity_state(grpc_connectivity_state value) {
+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wconversion"
+#endif
+    const grpc_connectivity_state neg_one = (grpc_connectivity_state) -1, const_zero = (grpc_connectivity_state) 0;
+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
+#pragma GCC diagnostic pop
+#endif
+    const int is_unsigned = neg_one > const_zero;
+    if (is_unsigned) {
+        if (sizeof(grpc_connectivity_state) < sizeof(long)) {
+            return PyInt_FromLong((long) value);
+        } else if (sizeof(grpc_connectivity_state) <= sizeof(unsigned long)) {
+            return PyLong_FromUnsignedLong((unsigned long) value);
+#ifdef HAVE_LONG_LONG
+        } else if (sizeof(grpc_connectivity_state) <= sizeof(unsigned PY_LONG_LONG)) {
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+#endif
+        }
+    } else {
+        if (sizeof(grpc_connectivity_state) <= sizeof(long)) {
+            return PyInt_FromLong((long) value);
+#ifdef HAVE_LONG_LONG
+        } else if (sizeof(grpc_connectivity_state) <= 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(grpc_connectivity_state),
+                                     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(grpc_connectivity_state));
+        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_grpc_call_error(grpc_call_error value) {
+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wconversion"
+#endif
+    const grpc_call_error neg_one = (grpc_call_error) -1, const_zero = (grpc_call_error) 0;
+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
+#pragma GCC diagnostic pop
+#endif
+    const int is_unsigned = neg_one > const_zero;
+    if (is_unsigned) {
+        if (sizeof(grpc_call_error) < sizeof(long)) {
+            return PyInt_FromLong((long) value);
+        } else if (sizeof(grpc_call_error) <= sizeof(unsigned long)) {
+            return PyLong_FromUnsignedLong((unsigned long) value);
+#ifdef HAVE_LONG_LONG
+        } else if (sizeof(grpc_call_error) <= sizeof(unsigned PY_LONG_LONG)) {
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+#endif
+        }
+    } else {
+        if (sizeof(grpc_call_error) <= sizeof(long)) {
+            return PyInt_FromLong((long) value);
+#ifdef HAVE_LONG_LONG
+        } else if (sizeof(grpc_call_error) <= 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(grpc_call_error),
+                                     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(grpc_call_error));
+        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_grpc_completion_type(grpc_completion_type value) {
+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wconversion"
+#endif
+    const grpc_completion_type neg_one = (grpc_completion_type) -1, const_zero = (grpc_completion_type) 0;
+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
+#pragma GCC diagnostic pop
+#endif
+    const int is_unsigned = neg_one > const_zero;
+    if (is_unsigned) {
+        if (sizeof(grpc_completion_type) < sizeof(long)) {
+            return PyInt_FromLong((long) value);
+        } else if (sizeof(grpc_completion_type) <= sizeof(unsigned long)) {
+            return PyLong_FromUnsignedLong((unsigned long) value);
+#ifdef HAVE_LONG_LONG
+        } else if (sizeof(grpc_completion_type) <= sizeof(unsigned PY_LONG_LONG)) {
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+#endif
+        }
+    } else {
+        if (sizeof(grpc_completion_type) <= sizeof(long)) {
+            return PyInt_FromLong((long) value);
+#ifdef HAVE_LONG_LONG
+        } else if (sizeof(grpc_completion_type) <= 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(grpc_completion_type),
+                                     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(grpc_completion_type));
+        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_grpc_op_type(grpc_op_type value) {
+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wconversion"
+#endif
+    const grpc_op_type neg_one = (grpc_op_type) -1, const_zero = (grpc_op_type) 0;
+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
+#pragma GCC diagnostic pop
+#endif
+    const int is_unsigned = neg_one > const_zero;
+    if (is_unsigned) {
+        if (sizeof(grpc_op_type) < sizeof(long)) {
+            return PyInt_FromLong((long) value);
+        } else if (sizeof(grpc_op_type) <= sizeof(unsigned long)) {
+            return PyLong_FromUnsignedLong((unsigned long) value);
+#ifdef HAVE_LONG_LONG
+        } else if (sizeof(grpc_op_type) <= sizeof(unsigned PY_LONG_LONG)) {
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+#endif
+        }
+    } else {
+        if (sizeof(grpc_op_type) <= sizeof(long)) {
+            return PyInt_FromLong((long) value);
+#ifdef HAVE_LONG_LONG
+        } else if (sizeof(grpc_op_type) <= 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(grpc_op_type),
+                                     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(grpc_op_type));
+        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_grpc_compression_algorithm(grpc_compression_algorithm value) {
+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wconversion"
+#endif
+    const grpc_compression_algorithm neg_one = (grpc_compression_algorithm) -1, const_zero = (grpc_compression_algorithm) 0;
+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
+#pragma GCC diagnostic pop
+#endif
+    const int is_unsigned = neg_one > const_zero;
+    if (is_unsigned) {
+        if (sizeof(grpc_compression_algorithm) < sizeof(long)) {
+            return PyInt_FromLong((long) value);
+        } else if (sizeof(grpc_compression_algorithm) <= sizeof(unsigned long)) {
+            return PyLong_FromUnsignedLong((unsigned long) value);
+#ifdef HAVE_LONG_LONG
+        } else if (sizeof(grpc_compression_algorithm) <= sizeof(unsigned PY_LONG_LONG)) {
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+#endif
+        }
+    } else {
+        if (sizeof(grpc_compression_algorithm) <= sizeof(long)) {
+            return PyInt_FromLong((long) value);
+#ifdef HAVE_LONG_LONG
+        } else if (sizeof(grpc_compression_algorithm) <= 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(grpc_compression_algorithm),
+                                     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(grpc_compression_algorithm));
+        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_grpc_compression_level(grpc_compression_level value) {
+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wconversion"
+#endif
+    const grpc_compression_level neg_one = (grpc_compression_level) -1, const_zero = (grpc_compression_level) 0;
+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
+#pragma GCC diagnostic pop
+#endif
+    const int is_unsigned = neg_one > const_zero;
+    if (is_unsigned) {
+        if (sizeof(grpc_compression_level) < sizeof(long)) {
+            return PyInt_FromLong((long) value);
+        } else if (sizeof(grpc_compression_level) <= sizeof(unsigned long)) {
+            return PyLong_FromUnsignedLong((unsigned long) value);
+#ifdef HAVE_LONG_LONG
+        } else if (sizeof(grpc_compression_level) <= sizeof(unsigned PY_LONG_LONG)) {
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+#endif
+        }
+    } else {
+        if (sizeof(grpc_compression_level) <= sizeof(long)) {
+            return PyInt_FromLong((long) value);
+#ifdef HAVE_LONG_LONG
+        } else if (sizeof(grpc_compression_level) <= 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(grpc_compression_level),
+                                     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(grpc_compression_level));
+        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 grpc_compression_algorithm __Pyx_PyInt_As_grpc_compression_algorithm(PyObject *x) {
+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wconversion"
+#endif
+    const grpc_compression_algorithm neg_one = (grpc_compression_algorithm) -1, const_zero = (grpc_compression_algorithm) 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(grpc_compression_algorithm) < sizeof(long))) {
+            __PYX_VERIFY_RETURN_INT(grpc_compression_algorithm, long, PyInt_AS_LONG(x))
+        } else {
+            long val = PyInt_AS_LONG(x);
+            if (is_unsigned && unlikely(val < 0)) {
+                goto raise_neg_overflow;
+            }
+            return (grpc_compression_algorithm) val;
+        }
+    }
+#endif
+    if (unlikely(!PyLong_Check(x))) {
+        grpc_compression_algorithm val;
+        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
+        if (!tmp) return (grpc_compression_algorithm) -1;
+        val = __Pyx_PyInt_As_grpc_compression_algorithm(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(grpc_compression_algorithm, __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(grpc_compression_algorithm) > 1 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(grpc_compression_algorithm, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if ((8 * sizeof(grpc_compression_algorithm) >= 2 * PyLong_SHIFT)) {
+                            return (grpc_compression_algorithm) (((((grpc_compression_algorithm)digits[1]) << PyLong_SHIFT) | (grpc_compression_algorithm)digits[0]));
+                        }
+                    }
+                    break;
+                case 3:
+                    if ((8 * sizeof(grpc_compression_algorithm) > 2 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(grpc_compression_algorithm, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if ((8 * sizeof(grpc_compression_algorithm) >= 3 * PyLong_SHIFT)) {
+                            return (grpc_compression_algorithm) (((((((grpc_compression_algorithm)digits[2]) << PyLong_SHIFT) | (grpc_compression_algorithm)digits[1]) << PyLong_SHIFT) | (grpc_compression_algorithm)digits[0]));
+                        }
+                    }
+                    break;
+                case 4:
+                    if ((8 * sizeof(grpc_compression_algorithm) > 3 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(grpc_compression_algorithm, 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(grpc_compression_algorithm) >= 4 * PyLong_SHIFT)) {
+                            return (grpc_compression_algorithm) (((((((((grpc_compression_algorithm)digits[3]) << PyLong_SHIFT) | (grpc_compression_algorithm)digits[2]) << PyLong_SHIFT) | (grpc_compression_algorithm)digits[1]) << PyLong_SHIFT) | (grpc_compression_algorithm)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 (grpc_compression_algorithm) -1;
+            if (unlikely(result == 1))
+                goto raise_neg_overflow;
+        }
+#endif
+        if ((sizeof(grpc_compression_algorithm) <= sizeof(unsigned long))) {
+            __PYX_VERIFY_RETURN_INT_EXC(grpc_compression_algorithm, unsigned long, PyLong_AsUnsignedLong(x))
+#ifdef HAVE_LONG_LONG
+        } else if ((sizeof(grpc_compression_algorithm) <= sizeof(unsigned PY_LONG_LONG))) {
+            __PYX_VERIFY_RETURN_INT_EXC(grpc_compression_algorithm, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+#endif
+        }
+    } else {
+#if CYTHON_USE_PYLONG_INTERNALS
+        if (__Pyx_PyLong_IsCompact(x)) {
+            __PYX_VERIFY_RETURN_INT(grpc_compression_algorithm, __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(grpc_compression_algorithm) - 1 > 1 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(grpc_compression_algorithm, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if ((8 * sizeof(grpc_compression_algorithm) - 1 > 2 * PyLong_SHIFT)) {
+                            return (grpc_compression_algorithm) (((grpc_compression_algorithm)-1)*(((((grpc_compression_algorithm)digits[1]) << PyLong_SHIFT) | (grpc_compression_algorithm)digits[0])));
+                        }
+                    }
+                    break;
+                case 2:
+                    if ((8 * sizeof(grpc_compression_algorithm) > 1 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(grpc_compression_algorithm, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if ((8 * sizeof(grpc_compression_algorithm) - 1 > 2 * PyLong_SHIFT)) {
+                            return (grpc_compression_algorithm) ((((((grpc_compression_algorithm)digits[1]) << PyLong_SHIFT) | (grpc_compression_algorithm)digits[0])));
+                        }
+                    }
+                    break;
+                case -3:
+                    if ((8 * sizeof(grpc_compression_algorithm) - 1 > 2 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(grpc_compression_algorithm, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if ((8 * sizeof(grpc_compression_algorithm) - 1 > 3 * PyLong_SHIFT)) {
+                            return (grpc_compression_algorithm) (((grpc_compression_algorithm)-1)*(((((((grpc_compression_algorithm)digits[2]) << PyLong_SHIFT) | (grpc_compression_algorithm)digits[1]) << PyLong_SHIFT) | (grpc_compression_algorithm)digits[0])));
+                        }
+                    }
+                    break;
+                case 3:
+                    if ((8 * sizeof(grpc_compression_algorithm) > 2 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(grpc_compression_algorithm, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if ((8 * sizeof(grpc_compression_algorithm) - 1 > 3 * PyLong_SHIFT)) {
+                            return (grpc_compression_algorithm) ((((((((grpc_compression_algorithm)digits[2]) << PyLong_SHIFT) | (grpc_compression_algorithm)digits[1]) << PyLong_SHIFT) | (grpc_compression_algorithm)digits[0])));
+                        }
+                    }
+                    break;
+                case -4:
+                    if ((8 * sizeof(grpc_compression_algorithm) - 1 > 3 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(grpc_compression_algorithm, 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(grpc_compression_algorithm) - 1 > 4 * PyLong_SHIFT)) {
+                            return (grpc_compression_algorithm) (((grpc_compression_algorithm)-1)*(((((((((grpc_compression_algorithm)digits[3]) << PyLong_SHIFT) | (grpc_compression_algorithm)digits[2]) << PyLong_SHIFT) | (grpc_compression_algorithm)digits[1]) << PyLong_SHIFT) | (grpc_compression_algorithm)digits[0])));
+                        }
+                    }
+                    break;
+                case 4:
+                    if ((8 * sizeof(grpc_compression_algorithm) > 3 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(grpc_compression_algorithm, 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(grpc_compression_algorithm) - 1 > 4 * PyLong_SHIFT)) {
+                            return (grpc_compression_algorithm) ((((((((((grpc_compression_algorithm)digits[3]) << PyLong_SHIFT) | (grpc_compression_algorithm)digits[2]) << PyLong_SHIFT) | (grpc_compression_algorithm)digits[1]) << PyLong_SHIFT) | (grpc_compression_algorithm)digits[0])));
+                        }
+                    }
+                    break;
+            }
+        }
+#endif
+        if ((sizeof(grpc_compression_algorithm) <= sizeof(long))) {
+            __PYX_VERIFY_RETURN_INT_EXC(grpc_compression_algorithm, long, PyLong_AsLong(x))
+#ifdef HAVE_LONG_LONG
+        } else if ((sizeof(grpc_compression_algorithm) <= sizeof(PY_LONG_LONG))) {
+            __PYX_VERIFY_RETURN_INT_EXC(grpc_compression_algorithm, PY_LONG_LONG, PyLong_AsLongLong(x))
+#endif
+        }
+    }
+    {
+        grpc_compression_algorithm 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 = (grpc_compression_algorithm) -1;
+#endif
+        if (unlikely(ret))
+            return (grpc_compression_algorithm) -1;
+        return val;
+    }
+raise_overflow:
+    PyErr_SetString(PyExc_OverflowError,
+        "value too large to convert to grpc_compression_algorithm");
+    return (grpc_compression_algorithm) -1;
+raise_neg_overflow:
+    PyErr_SetString(PyExc_OverflowError,
+        "can't convert negative value to grpc_compression_algorithm");
+    return (grpc_compression_algorithm) -1;
+}
+
+/* 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;
+}
+
+/* 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
+    }
+}
+
+/* CIntFromPy */
+  static CYTHON_INLINE grpc_call_error __Pyx_PyInt_As_grpc_call_error(PyObject *x) {
+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wconversion"
+#endif
+    const grpc_call_error neg_one = (grpc_call_error) -1, const_zero = (grpc_call_error) 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(grpc_call_error) < sizeof(long))) {
+            __PYX_VERIFY_RETURN_INT(grpc_call_error, long, PyInt_AS_LONG(x))
+        } else {
+            long val = PyInt_AS_LONG(x);
+            if (is_unsigned && unlikely(val < 0)) {
+                goto raise_neg_overflow;
+            }
+            return (grpc_call_error) val;
+        }
+    }
+#endif
+    if (unlikely(!PyLong_Check(x))) {
+        grpc_call_error val;
+        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
+        if (!tmp) return (grpc_call_error) -1;
+        val = __Pyx_PyInt_As_grpc_call_error(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(grpc_call_error, __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(grpc_call_error) > 1 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(grpc_call_error, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if ((8 * sizeof(grpc_call_error) >= 2 * PyLong_SHIFT)) {
+                            return (grpc_call_error) (((((grpc_call_error)digits[1]) << PyLong_SHIFT) | (grpc_call_error)digits[0]));
+                        }
+                    }
+                    break;
+                case 3:
+                    if ((8 * sizeof(grpc_call_error) > 2 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(grpc_call_error, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if ((8 * sizeof(grpc_call_error) >= 3 * PyLong_SHIFT)) {
+                            return (grpc_call_error) (((((((grpc_call_error)digits[2]) << PyLong_SHIFT) | (grpc_call_error)digits[1]) << PyLong_SHIFT) | (grpc_call_error)digits[0]));
+                        }
+                    }
+                    break;
+                case 4:
+                    if ((8 * sizeof(grpc_call_error) > 3 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(grpc_call_error, 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(grpc_call_error) >= 4 * PyLong_SHIFT)) {
+                            return (grpc_call_error) (((((((((grpc_call_error)digits[3]) << PyLong_SHIFT) | (grpc_call_error)digits[2]) << PyLong_SHIFT) | (grpc_call_error)digits[1]) << PyLong_SHIFT) | (grpc_call_error)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 (grpc_call_error) -1;
+            if (unlikely(result == 1))
+                goto raise_neg_overflow;
+        }
+#endif
+        if ((sizeof(grpc_call_error) <= sizeof(unsigned long))) {
+            __PYX_VERIFY_RETURN_INT_EXC(grpc_call_error, unsigned long, PyLong_AsUnsignedLong(x))
+#ifdef HAVE_LONG_LONG
+        } else if ((sizeof(grpc_call_error) <= sizeof(unsigned PY_LONG_LONG))) {
+            __PYX_VERIFY_RETURN_INT_EXC(grpc_call_error, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+#endif
+        }
+    } else {
+#if CYTHON_USE_PYLONG_INTERNALS
+        if (__Pyx_PyLong_IsCompact(x)) {
+            __PYX_VERIFY_RETURN_INT(grpc_call_error, __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(grpc_call_error) - 1 > 1 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(grpc_call_error, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if ((8 * sizeof(grpc_call_error) - 1 > 2 * PyLong_SHIFT)) {
+                            return (grpc_call_error) (((grpc_call_error)-1)*(((((grpc_call_error)digits[1]) << PyLong_SHIFT) | (grpc_call_error)digits[0])));
+                        }
+                    }
+                    break;
+                case 2:
+                    if ((8 * sizeof(grpc_call_error) > 1 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(grpc_call_error, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if ((8 * sizeof(grpc_call_error) - 1 > 2 * PyLong_SHIFT)) {
+                            return (grpc_call_error) ((((((grpc_call_error)digits[1]) << PyLong_SHIFT) | (grpc_call_error)digits[0])));
+                        }
+                    }
+                    break;
+                case -3:
+                    if ((8 * sizeof(grpc_call_error) - 1 > 2 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(grpc_call_error, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if ((8 * sizeof(grpc_call_error) - 1 > 3 * PyLong_SHIFT)) {
+                            return (grpc_call_error) (((grpc_call_error)-1)*(((((((grpc_call_error)digits[2]) << PyLong_SHIFT) | (grpc_call_error)digits[1]) << PyLong_SHIFT) | (grpc_call_error)digits[0])));
+                        }
+                    }
+                    break;
+                case 3:
+                    if ((8 * sizeof(grpc_call_error) > 2 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(grpc_call_error, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if ((8 * sizeof(grpc_call_error) - 1 > 3 * PyLong_SHIFT)) {
+                            return (grpc_call_error) ((((((((grpc_call_error)digits[2]) << PyLong_SHIFT) | (grpc_call_error)digits[1]) << PyLong_SHIFT) | (grpc_call_error)digits[0])));
+                        }
+                    }
+                    break;
+                case -4:
+                    if ((8 * sizeof(grpc_call_error) - 1 > 3 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(grpc_call_error, 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(grpc_call_error) - 1 > 4 * PyLong_SHIFT)) {
+                            return (grpc_call_error) (((grpc_call_error)-1)*(((((((((grpc_call_error)digits[3]) << PyLong_SHIFT) | (grpc_call_error)digits[2]) << PyLong_SHIFT) | (grpc_call_error)digits[1]) << PyLong_SHIFT) | (grpc_call_error)digits[0])));
+                        }
+                    }
+                    break;
+                case 4:
+                    if ((8 * sizeof(grpc_call_error) > 3 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(grpc_call_error, 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(grpc_call_error) - 1 > 4 * PyLong_SHIFT)) {
+                            return (grpc_call_error) ((((((((((grpc_call_error)digits[3]) << PyLong_SHIFT) | (grpc_call_error)digits[2]) << PyLong_SHIFT) | (grpc_call_error)digits[1]) << PyLong_SHIFT) | (grpc_call_error)digits[0])));
+                        }
+                    }
+                    break;
+            }
+        }
+#endif
+        if ((sizeof(grpc_call_error) <= sizeof(long))) {
+            __PYX_VERIFY_RETURN_INT_EXC(grpc_call_error, long, PyLong_AsLong(x))
+#ifdef HAVE_LONG_LONG
+        } else if ((sizeof(grpc_call_error) <= sizeof(PY_LONG_LONG))) {
+            __PYX_VERIFY_RETURN_INT_EXC(grpc_call_error, PY_LONG_LONG, PyLong_AsLongLong(x))
+#endif
+        }
+    }
+    {
+        grpc_call_error 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 = (grpc_call_error) -1;
+#endif
+        if (unlikely(ret))
+            return (grpc_call_error) -1;
+        return val;
+    }
+raise_overflow:
+    PyErr_SetString(PyExc_OverflowError,
+        "value too large to convert to grpc_call_error");
+    return (grpc_call_error) -1;
+raise_neg_overflow:
+    PyErr_SetString(PyExc_OverflowError,
+        "can't convert negative value to grpc_call_error");
+    return (grpc_call_error) -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_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
+    }
+}
+
+/* CIntFromPy */
+  static CYTHON_INLINE unsigned int __Pyx_PyInt_As_unsigned_int(PyObject *x) {
+#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 PY_MAJOR_VERSION < 3
+    if (likely(PyInt_Check(x))) {
+        if ((sizeof(unsigned int) < sizeof(long))) {
+            __PYX_VERIFY_RETURN_INT(unsigned int, long, PyInt_AS_LONG(x))
+        } else {
+            long val = PyInt_AS_LONG(x);
+            if (is_unsigned && unlikely(val < 0)) {
+                goto raise_neg_overflow;
+            }
+            return (unsigned int) val;
+        }
+    }
+#endif
+    if (unlikely(!PyLong_Check(x))) {
+        unsigned int val;
+        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
+        if (!tmp) return (unsigned int) -1;
+        val = __Pyx_PyInt_As_unsigned_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(unsigned 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(unsigned int) > 1 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if ((8 * sizeof(unsigned int) >= 2 * PyLong_SHIFT)) {
+                            return (unsigned int) (((((unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0]));
+                        }
+                    }
+                    break;
+                case 3:
+                    if ((8 * sizeof(unsigned int) > 2 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if ((8 * sizeof(unsigned int) >= 3 * PyLong_SHIFT)) {
+                            return (unsigned int) (((((((unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0]));
+                        }
+                    }
+                    break;
+                case 4:
+                    if ((8 * sizeof(unsigned int) > 3 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(unsigned 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(unsigned int) >= 4 * PyLong_SHIFT)) {
+                            return (unsigned int) (((((((((unsigned int)digits[3]) << PyLong_SHIFT) | (unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned 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 (unsigned int) -1;
+            if (unlikely(result == 1))
+                goto raise_neg_overflow;
+        }
+#endif
+        if ((sizeof(unsigned int) <= sizeof(unsigned long))) {
+            __PYX_VERIFY_RETURN_INT_EXC(unsigned int, unsigned long, PyLong_AsUnsignedLong(x))
+#ifdef HAVE_LONG_LONG
+        } else if ((sizeof(unsigned int) <= sizeof(unsigned PY_LONG_LONG))) {
+            __PYX_VERIFY_RETURN_INT_EXC(unsigned int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
+#endif
+        }
+    } else {
+#if CYTHON_USE_PYLONG_INTERNALS
+        if (__Pyx_PyLong_IsCompact(x)) {
+            __PYX_VERIFY_RETURN_INT(unsigned 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(unsigned int) - 1 > 1 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(unsigned int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if ((8 * sizeof(unsigned int) - 1 > 2 * PyLong_SHIFT)) {
+                            return (unsigned int) (((unsigned int)-1)*(((((unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0])));
+                        }
+                    }
+                    break;
+                case 2:
+                    if ((8 * sizeof(unsigned int) > 1 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if ((8 * sizeof(unsigned int) - 1 > 2 * PyLong_SHIFT)) {
+                            return (unsigned int) ((((((unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0])));
+                        }
+                    }
+                    break;
+                case -3:
+                    if ((8 * sizeof(unsigned int) - 1 > 2 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(unsigned int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if ((8 * sizeof(unsigned int) - 1 > 3 * PyLong_SHIFT)) {
+                            return (unsigned int) (((unsigned int)-1)*(((((((unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0])));
+                        }
+                    }
+                    break;
+                case 3:
+                    if ((8 * sizeof(unsigned int) > 2 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
+                        } else if ((8 * sizeof(unsigned int) - 1 > 3 * PyLong_SHIFT)) {
+                            return (unsigned int) ((((((((unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0])));
+                        }
+                    }
+                    break;
+                case -4:
+                    if ((8 * sizeof(unsigned int) - 1 > 3 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(unsigned 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(unsigned int) - 1 > 4 * PyLong_SHIFT)) {
+                            return (unsigned int) (((unsigned int)-1)*(((((((((unsigned int)digits[3]) << PyLong_SHIFT) | (unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0])));
+                        }
+                    }
+                    break;
+                case 4:
+                    if ((8 * sizeof(unsigned int) > 3 * PyLong_SHIFT)) {
+                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
+                            __PYX_VERIFY_RETURN_INT(unsigned 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(unsigned int) - 1 > 4 * PyLong_SHIFT)) {
+                            return (unsigned int) ((((((((((unsigned int)digits[3]) << PyLong_SHIFT) | (unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0])));
+                        }
+                    }
+                    break;
+            }
+        }
+#endif
+        if ((sizeof(unsigned int) <= sizeof(long))) {
+            __PYX_VERIFY_RETURN_INT_EXC(unsigned int, long, PyLong_AsLong(x))
+#ifdef HAVE_LONG_LONG
+        } else if ((sizeof(unsigned int) <= sizeof(PY_LONG_LONG))) {
+            __PYX_VERIFY_RETURN_INT_EXC(unsigned int, PY_LONG_LONG, PyLong_AsLongLong(x))
+#endif
+        }
+    }
+    {
+        unsigned 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 (unsigned int) -1;
+            assert(PyLong_CheckExact(v));
+        }
+        {
+            int result = PyObject_RichCompareBool(v, Py_False, Py_LT);
+            if (unlikely(result < 0)) {
+                Py_DECREF(v);
+                return (unsigned 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 (unsigned int) -1;
+        } else {
+            stepval = v;
+        }
+        v = NULL;
+        val = (unsigned 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(unsigned 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 |= ((unsigned 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(unsigned int) * 8) - bits - (is_unsigned ? 0 : 1);
+            if (unlikely(idigit >= (1L << remaining_bits)))
+                goto raise_overflow;
+            val |= ((unsigned int) idigit) << bits;
+        }
+        if (!is_unsigned) {
+            if (unlikely(val & (((unsigned int) 1) << (sizeof(unsigned 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 (unsigned int) -1;
+        return val;
+    }
+raise_overflow:
+    PyErr_SetString(PyExc_OverflowError,
+        "value too large to convert to unsigned int");
+    return (unsigned int) -1;
+raise_neg_overflow:
+    PyErr_SetString(PyExc_OverflowError,
+        "can't convert negative value to unsigned int");
+    return (unsigned int) -1;
+}
+
+/* Generator */
+  static PyMethodDef __pyx_Generator_methods[] = {
+    {"send", (PyCFunction) __Pyx_Coroutine_Send, METH_O,
+     (char*) PyDoc_STR("send(arg) -> send 'arg' into generator,\nreturn next yielded value or raise StopIteration.")},
+    {"throw", (PyCFunction) __Pyx_Coroutine_Throw, METH_VARARGS,
+     (char*) PyDoc_STR("throw(typ[,val[,tb]]) -> raise exception in generator,\nreturn next yielded value or raise StopIteration.")},
+    {"close", (PyCFunction) __Pyx_Coroutine_Close_Method, METH_NOARGS,
+     (char*) PyDoc_STR("close() -> raise GeneratorExit inside generator.")},
+    {0, 0, 0, 0}
+};
+static PyMemberDef __pyx_Generator_memberlist[] = {
+    {(char *) "gi_running", T_BOOL, offsetof(__pyx_CoroutineObject, is_running), READONLY, NULL},
+    {(char*) "gi_yieldfrom", T_OBJECT, offsetof(__pyx_CoroutineObject, yieldfrom), READONLY,
+     (char*) PyDoc_STR("object being iterated by 'yield from', or None")},
+    {(char*) "gi_code", T_OBJECT, offsetof(__pyx_CoroutineObject, gi_code), READONLY, NULL},
+    {(char *) "__module__", T_OBJECT, offsetof(__pyx_CoroutineObject, gi_modulename), 0, 0},
+#if CYTHON_USE_TYPE_SPECS
+    {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(__pyx_CoroutineObject, gi_weakreflist), READONLY, 0},
+#endif
+    {0, 0, 0, 0, 0}
+};
+static PyGetSetDef __pyx_Generator_getsets[] = {
+    {(char *) "__name__", (getter)__Pyx_Coroutine_get_name, (setter)__Pyx_Coroutine_set_name,
+     (char*) PyDoc_STR("name of the generator"), 0},
+    {(char *) "__qualname__", (getter)__Pyx_Coroutine_get_qualname, (setter)__Pyx_Coroutine_set_qualname,
+     (char*) PyDoc_STR("qualified name of the generator"), 0},
+    {(char *) "gi_frame", (getter)__Pyx_Coroutine_get_frame, NULL,
+     (char*) PyDoc_STR("Frame of the generator"), 0},
+    {0, 0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_GeneratorType_slots[] = {
+    {Py_tp_dealloc, (void *)__Pyx_Coroutine_dealloc},
+    {Py_tp_traverse, (void *)__Pyx_Coroutine_traverse},
+    {Py_tp_iter, (void *)PyObject_SelfIter},
+    {Py_tp_iternext, (void *)__Pyx_Generator_Next},
+    {Py_tp_methods, (void *)__pyx_Generator_methods},
+    {Py_tp_members, (void *)__pyx_Generator_memberlist},
+    {Py_tp_getset, (void *)__pyx_Generator_getsets},
+    {Py_tp_getattro, (void *) __Pyx_PyObject_GenericGetAttrNoDict},
+#if CYTHON_USE_TP_FINALIZE
+    {Py_tp_finalize, (void *)__Pyx_Coroutine_del},
+#endif
+    {0, 0},
+};
+static PyType_Spec __pyx_GeneratorType_spec = {
+    __PYX_TYPE_MODULE_PREFIX "generator",
+    sizeof(__pyx_CoroutineObject),
+    0,
+    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_HAVE_FINALIZE,
+    __pyx_GeneratorType_slots
+};
+#else
+static PyTypeObject __pyx_GeneratorType_type = {
+    PyVarObject_HEAD_INIT(0, 0)
+    __PYX_TYPE_MODULE_PREFIX "generator",
+    sizeof(__pyx_CoroutineObject),
+    0,
+    (destructor) __Pyx_Coroutine_dealloc,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_HAVE_FINALIZE,
+    0,
+    (traverseproc) __Pyx_Coroutine_traverse,
+    0,
+    0,
+    offsetof(__pyx_CoroutineObject, gi_weakreflist),
+    0,
+    (iternextfunc) __Pyx_Generator_Next,
+    __pyx_Generator_methods,
+    __pyx_Generator_memberlist,
+    __pyx_Generator_getsets,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+#if CYTHON_USE_TP_FINALIZE
+    0,
+#else
+    __Pyx_Coroutine_del,
+#endif
+    0,
+#if CYTHON_USE_TP_FINALIZE
+    __Pyx_Coroutine_del,
+#elif PY_VERSION_HEX >= 0x030400a1
+    0,
+#endif
+#if PY_VERSION_HEX >= 0x030800b1 && (!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_Generator_init(PyObject *module) {
+#if CYTHON_USE_TYPE_SPECS
+    __pyx_GeneratorType = __Pyx_FetchCommonTypeFromSpec(module, &__pyx_GeneratorType_spec, NULL);
+#else
+    CYTHON_UNUSED_VAR(module);
+    __pyx_GeneratorType_type.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+    __pyx_GeneratorType_type.tp_iter = PyObject_SelfIter;
+    __pyx_GeneratorType = __Pyx_FetchCommonType(&__pyx_GeneratorType_type);
+#endif
+    if (unlikely(!__pyx_GeneratorType)) {
+        return -1;
+    }
+    return 0;
+}
+
+/* AsyncGeneratorInitFinalizer */
+  #if PY_VERSION_HEX < 0x030600B0
+static int __Pyx_async_gen_init_hooks(__pyx_PyAsyncGenObject *o) {
+#if 0
+    PyThreadState *tstate;
+    PyObject *finalizer;
+    PyObject *firstiter;
+#endif
+    if (likely(o->ag_hooks_inited)) {
+        return 0;
+    }
+    o->ag_hooks_inited = 1;
+#if 0
+    tstate = __Pyx_PyThreadState_Current;
+    finalizer = tstate->async_gen_finalizer;
+    if (finalizer) {
+        Py_INCREF(finalizer);
+        o->ag_finalizer = finalizer;
+    }
+    firstiter = tstate->async_gen_firstiter;
+    if (firstiter) {
+        PyObject *res;
+        Py_INCREF(firstiter);
+        res = __Pyx_PyObject_CallOneArg(firstiter, (PyObject*)o);
+        Py_DECREF(firstiter);
+        if (res == NULL) {
+            return 1;
+        }
+        Py_DECREF(res);
+    }
+#endif
+    return 0;
+}
+#endif
+
+/* AsyncGenerator */
+  PyDoc_STRVAR(__Pyx_async_gen_send_doc,
+"send(arg) -> send 'arg' into generator,\n\
+return next yielded value or raise StopIteration.");
+PyDoc_STRVAR(__Pyx_async_gen_close_doc,
+"close() -> raise GeneratorExit inside generator.");
+PyDoc_STRVAR(__Pyx_async_gen_throw_doc,
+"throw(typ[,val[,tb]]) -> raise exception in generator,\n\
+return next yielded value or raise StopIteration.");
+PyDoc_STRVAR(__Pyx_async_gen_await_doc,
+"__await__() -> return a representation that can be passed into the 'await' expression.");
+static PyObject *__Pyx_async_gen_asend_new(__pyx_PyAsyncGenObject *, PyObject *);
+static PyObject *__Pyx_async_gen_athrow_new(__pyx_PyAsyncGenObject *, PyObject *);
+static const char *__Pyx_NON_INIT_CORO_MSG = "can't send non-None value to a just-started coroutine";
+static const char *__Pyx_ASYNC_GEN_IGNORED_EXIT_MSG = "async generator ignored GeneratorExit";
+static const char *__Pyx_ASYNC_GEN_CANNOT_REUSE_SEND_MSG = "cannot reuse already awaited __anext__()/asend()";
+static const char *__Pyx_ASYNC_GEN_CANNOT_REUSE_CLOSE_MSG = "cannot reuse already awaited aclose()/athrow()";
+typedef enum {
+    __PYX_AWAITABLE_STATE_INIT,
+    __PYX_AWAITABLE_STATE_ITER,
+    __PYX_AWAITABLE_STATE_CLOSED,
+} __pyx_AwaitableState;
+typedef struct {
+    PyObject_HEAD
+    __pyx_PyAsyncGenObject *ags_gen;
+    PyObject *ags_sendval;
+    __pyx_AwaitableState ags_state;
+} __pyx_PyAsyncGenASend;
+typedef struct {
+    PyObject_HEAD
+    __pyx_PyAsyncGenObject *agt_gen;
+    PyObject *agt_args;
+    __pyx_AwaitableState agt_state;
+} __pyx_PyAsyncGenAThrow;
+typedef struct {
+    PyObject_HEAD
+    PyObject *agw_val;
+} __pyx__PyAsyncGenWrappedValue;
+#ifndef _PyAsyncGen_MAXFREELIST
+#define _PyAsyncGen_MAXFREELIST 80
+#endif
+static __pyx__PyAsyncGenWrappedValue *__Pyx_ag_value_freelist[_PyAsyncGen_MAXFREELIST];
+static int __Pyx_ag_value_freelist_free = 0;
+static __pyx_PyAsyncGenASend *__Pyx_ag_asend_freelist[_PyAsyncGen_MAXFREELIST];
+static int __Pyx_ag_asend_freelist_free = 0;
+#define __pyx__PyAsyncGenWrappedValue_CheckExact(o)\
+                    __Pyx_IS_TYPE(o, __pyx__PyAsyncGenWrappedValueType)
+static int
+__Pyx_async_gen_traverse(__pyx_PyAsyncGenObject *gen, visitproc visit, void *arg)
+{
+    Py_VISIT(gen->ag_finalizer);
+    return __Pyx_Coroutine_traverse((__pyx_CoroutineObject*)gen, visit, arg);
+}
+static PyObject *
+__Pyx_async_gen_repr(__pyx_CoroutineObject *o)
+{
+    return PyUnicode_FromFormat("<async_generator object %S at %p>",
+                                o->gi_qualname ? o->gi_qualname : Py_None, o);
+}
+#if PY_VERSION_HEX >= 0x030600B0
+static int
+__Pyx_async_gen_init_hooks(__pyx_PyAsyncGenObject *o)
+{
+#if !CYTHON_COMPILING_IN_PYPY
+    PyThreadState *tstate;
+#endif
+    PyObject *finalizer;
+    PyObject *firstiter;
+    if (o->ag_hooks_inited) {
+        return 0;
+    }
+    o->ag_hooks_inited = 1;
+#if CYTHON_COMPILING_IN_PYPY
+    finalizer = _PyEval_GetAsyncGenFinalizer();
+#else
+    tstate = __Pyx_PyThreadState_Current;
+    finalizer = tstate->async_gen_finalizer;
+#endif
+    if (finalizer) {
+        Py_INCREF(finalizer);
+        o->ag_finalizer = finalizer;
+    }
+#if CYTHON_COMPILING_IN_PYPY
+    firstiter = _PyEval_GetAsyncGenFirstiter();
+#else
+    firstiter = tstate->async_gen_firstiter;
+#endif
+    if (firstiter) {
+        PyObject *res;
+#if CYTHON_UNPACK_METHODS
+        PyObject *self;
+#endif
+        Py_INCREF(firstiter);
+#if CYTHON_UNPACK_METHODS
+        if (likely(PyMethod_Check(firstiter)) && likely((self = PyMethod_GET_SELF(firstiter)) != NULL)) {
+            PyObject *function = PyMethod_GET_FUNCTION(firstiter);
+            res = __Pyx_PyObject_Call2Args(function, self, (PyObject*)o);
+        } else
+#endif
+        res = __Pyx_PyObject_CallOneArg(firstiter, (PyObject*)o);
+        Py_DECREF(firstiter);
+        if (unlikely(res == NULL)) {
+            return 1;
+        }
+        Py_DECREF(res);
+    }
+    return 0;
+}
+#endif
+static PyObject *
+__Pyx_async_gen_anext(PyObject *g)
+{
+    __pyx_PyAsyncGenObject *o = (__pyx_PyAsyncGenObject*) g;
+    if (unlikely(__Pyx_async_gen_init_hooks(o))) {
+        return NULL;
+    }
+    return __Pyx_async_gen_asend_new(o, NULL);
+}
+static PyObject *
+__Pyx_async_gen_anext_method(PyObject *g, PyObject *arg) {
+    CYTHON_UNUSED_VAR(arg);
+    return __Pyx_async_gen_anext(g);
+}
+static PyObject *
+__Pyx_async_gen_asend(__pyx_PyAsyncGenObject *o, PyObject *arg)
+{
+    if (unlikely(__Pyx_async_gen_init_hooks(o))) {
+        return NULL;
+    }
+    return __Pyx_async_gen_asend_new(o, arg);
+}
+static PyObject *
+__Pyx_async_gen_aclose(__pyx_PyAsyncGenObject *o, PyObject *arg)
+{
+    CYTHON_UNUSED_VAR(arg);
+    if (unlikely(__Pyx_async_gen_init_hooks(o))) {
+        return NULL;
+    }
+    return __Pyx_async_gen_athrow_new(o, NULL);
+}
+static PyObject *
+__Pyx_async_gen_athrow(__pyx_PyAsyncGenObject *o, PyObject *args)
+{
+    if (unlikely(__Pyx_async_gen_init_hooks(o))) {
+        return NULL;
+    }
+    return __Pyx_async_gen_athrow_new(o, args);
+}
+static PyObject *
+__Pyx_async_gen_self_method(PyObject *g, PyObject *arg) {
+    CYTHON_UNUSED_VAR(arg);
+    return __Pyx_NewRef(g);
+}
+static PyGetSetDef __Pyx_async_gen_getsetlist[] = {
+    {(char*) "__name__", (getter)__Pyx_Coroutine_get_name, (setter)__Pyx_Coroutine_set_name,
+     (char*) PyDoc_STR("name of the async generator"), 0},
+    {(char*) "__qualname__", (getter)__Pyx_Coroutine_get_qualname, (setter)__Pyx_Coroutine_set_qualname,
+     (char*) PyDoc_STR("qualified name of the async generator"), 0},
+    {0, 0, 0, 0, 0}
+};
+static PyMemberDef __Pyx_async_gen_memberlist[] = {
+    {(char*) "ag_running", T_BOOL,   offsetof(__pyx_PyAsyncGenObject, ag_running_async), READONLY, NULL},
+    {(char*) "ag_await", T_OBJECT, offsetof(__pyx_CoroutineObject, yieldfrom), READONLY,
+     (char*) PyDoc_STR("object being awaited on, or None")},
+    {(char *) "__module__", T_OBJECT, offsetof(__pyx_CoroutineObject, gi_modulename), 0, 0},
+#if CYTHON_USE_TYPE_SPECS
+    {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(__pyx_CoroutineObject, gi_weakreflist), READONLY, 0},
+#endif
+    {0, 0, 0, 0, 0}
+};
+PyDoc_STRVAR(__Pyx_async_aclose_doc,
+"aclose() -> raise GeneratorExit inside generator.");
+PyDoc_STRVAR(__Pyx_async_asend_doc,
+"asend(v) -> send 'v' in generator.");
+PyDoc_STRVAR(__Pyx_async_athrow_doc,
+"athrow(typ[,val[,tb]]) -> raise exception in generator.");
+PyDoc_STRVAR(__Pyx_async_aiter_doc,
+"__aiter__(v) -> return an asynchronous iterator.");
+PyDoc_STRVAR(__Pyx_async_anext_doc,
+"__anext__(v) -> continue asynchronous iteration and return the next element.");
+static PyMethodDef __Pyx_async_gen_methods[] = {
+    {"asend", (PyCFunction)__Pyx_async_gen_asend, METH_O, __Pyx_async_asend_doc},
+    {"athrow",(PyCFunction)__Pyx_async_gen_athrow, METH_VARARGS, __Pyx_async_athrow_doc},
+    {"aclose", (PyCFunction)__Pyx_async_gen_aclose, METH_NOARGS, __Pyx_async_aclose_doc},
+    {"__aiter__", (PyCFunction)__Pyx_async_gen_self_method, METH_NOARGS, __Pyx_async_aiter_doc},
+    {"__anext__", (PyCFunction)__Pyx_async_gen_anext_method, METH_NOARGS, __Pyx_async_anext_doc},
+    {0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx_AsyncGenType_slots[] = {
+    {Py_tp_dealloc, (void *)__Pyx_Coroutine_dealloc},
+    {Py_am_aiter, (void *)PyObject_SelfIter},
+    {Py_am_anext, (void *)__Pyx_async_gen_anext},
+    {Py_tp_repr, (void *)__Pyx_async_gen_repr},
+    {Py_tp_traverse, (void *)__Pyx_async_gen_traverse},
+    {Py_tp_methods, (void *)__Pyx_async_gen_methods},
+    {Py_tp_members, (void *)__Pyx_async_gen_memberlist},
+    {Py_tp_getset, (void *)__Pyx_async_gen_getsetlist},
+#if CYTHON_USE_TP_FINALIZE
+    {Py_tp_finalize, (void *)__Pyx_Coroutine_del},
+#endif
+    {0, 0},
+};
+static PyType_Spec __pyx_AsyncGenType_spec = {
+    __PYX_TYPE_MODULE_PREFIX "async_generator",
+    sizeof(__pyx_PyAsyncGenObject),
+    0,
+    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_HAVE_FINALIZE,
+    __pyx_AsyncGenType_slots
+};
+#else
+#if CYTHON_USE_ASYNC_SLOTS
+static __Pyx_PyAsyncMethodsStruct __Pyx_async_gen_as_async = {
+    0,
+    PyObject_SelfIter,
+    (unaryfunc)__Pyx_async_gen_anext,
+#if PY_VERSION_HEX >= 0x030A00A3
+    0,
+#endif
+};
+#endif
+static PyTypeObject __pyx_AsyncGenType_type = {
+    PyVarObject_HEAD_INIT(0, 0)
+    "async_generator",
+    sizeof(__pyx_PyAsyncGenObject),
+    0,
+    (destructor)__Pyx_Coroutine_dealloc,
+    0,
+    0,
+    0,
+#if CYTHON_USE_ASYNC_SLOTS
+    &__Pyx_async_gen_as_async,
+#else
+    0,
+#endif
+    (reprfunc)__Pyx_async_gen_repr,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC |
+        Py_TPFLAGS_HAVE_FINALIZE,
+    0,
+    (traverseproc)__Pyx_async_gen_traverse,
+    0,
+#if CYTHON_USE_ASYNC_SLOTS && CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 && PY_VERSION_HEX < 0x030500B1
+    __Pyx_Coroutine_compare,
+#else
+    0,
+#endif
+    offsetof(__pyx_CoroutineObject, gi_weakreflist),
+    0,
+    0,
+    __Pyx_async_gen_methods,
+    __Pyx_async_gen_memberlist,
+    __Pyx_async_gen_getsetlist,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+#if CYTHON_USE_TP_FINALIZE
+    0,
+#else
+    __Pyx_Coroutine_del,
+#endif
+    0,
+#if CYTHON_USE_TP_FINALIZE
+    __Pyx_Coroutine_del,
+#elif PY_VERSION_HEX >= 0x030400a1
+    0,
+#endif
+#if PY_VERSION_HEX >= 0x030800b1 && (!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_PyAsyncGen_ClearFreeLists(void)
+{
+    int ret = __Pyx_ag_value_freelist_free + __Pyx_ag_asend_freelist_free;
+    while (__Pyx_ag_value_freelist_free) {
+        __pyx__PyAsyncGenWrappedValue *o;
+        o = __Pyx_ag_value_freelist[--__Pyx_ag_value_freelist_free];
+        assert(__pyx__PyAsyncGenWrappedValue_CheckExact(o));
+        __Pyx_PyHeapTypeObject_GC_Del(o);
+    }
+    while (__Pyx_ag_asend_freelist_free) {
+        __pyx_PyAsyncGenASend *o;
+        o = __Pyx_ag_asend_freelist[--__Pyx_ag_asend_freelist_free];
+        assert(__Pyx_IS_TYPE(o, __pyx__PyAsyncGenASendType));
+        __Pyx_PyHeapTypeObject_GC_Del(o);
+    }
+    return ret;
+}
+static void
+__Pyx_PyAsyncGen_Fini(void)
+{
+    __Pyx_PyAsyncGen_ClearFreeLists();
+}
+static PyObject *
+__Pyx_async_gen_unwrap_value(__pyx_PyAsyncGenObject *gen, PyObject *result)
+{
+    if (result == NULL) {
+        PyObject *exc_type = PyErr_Occurred();
+        if (!exc_type) {
+            PyErr_SetNone(__Pyx_PyExc_StopAsyncIteration);
+            gen->ag_closed = 1;
+        } else if (__Pyx_PyErr_GivenExceptionMatches2(exc_type, __Pyx_PyExc_StopAsyncIteration, PyExc_GeneratorExit)) {
+            gen->ag_closed = 1;
+        }
+        gen->ag_running_async = 0;
+        return NULL;
+    }
+    if (__pyx__PyAsyncGenWrappedValue_CheckExact(result)) {
+        __Pyx_ReturnWithStopIteration(((__pyx__PyAsyncGenWrappedValue*)result)->agw_val);
+        Py_DECREF(result);
+        gen->ag_running_async = 0;
+        return NULL;
+    }
+    return result;
+}
+static void
+__Pyx_async_gen_asend_dealloc(__pyx_PyAsyncGenASend *o)
+{
+    PyObject_GC_UnTrack((PyObject *)o);
+    Py_CLEAR(o->ags_gen);
+    Py_CLEAR(o->ags_sendval);
+    if (likely(__Pyx_ag_asend_freelist_free < _PyAsyncGen_MAXFREELIST)) {
+        assert(__pyx_PyAsyncGenASend_CheckExact(o));
+        __Pyx_ag_asend_freelist[__Pyx_ag_asend_freelist_free++] = o;
+    } else {
+        __Pyx_PyHeapTypeObject_GC_Del(o);
+    }
+}
+static int
+__Pyx_async_gen_asend_traverse(__pyx_PyAsyncGenASend *o, visitproc visit, void *arg)
+{
+    Py_VISIT(o->ags_gen);
+    Py_VISIT(o->ags_sendval);
+    return 0;
+}
+static PyObject *
+__Pyx_async_gen_asend_send(PyObject *g, PyObject *arg)
+{
+    __pyx_PyAsyncGenASend *o = (__pyx_PyAsyncGenASend*) g;
+    PyObject *result;
+    if (unlikely(o->ags_state == __PYX_AWAITABLE_STATE_CLOSED)) {
+        PyErr_SetString(PyExc_RuntimeError, __Pyx_ASYNC_GEN_CANNOT_REUSE_SEND_MSG);
+        return NULL;
+    }
+    if (o->ags_state == __PYX_AWAITABLE_STATE_INIT) {
+        if (unlikely(o->ags_gen->ag_running_async)) {
+            PyErr_SetString(
+                PyExc_RuntimeError,
+                "anext(): asynchronous generator is already running");
+            return NULL;
+        }
+        if (arg == NULL || arg == Py_None) {
+            arg = o->ags_sendval ? o->ags_sendval : Py_None;
+        }
+        o->ags_state = __PYX_AWAITABLE_STATE_ITER;
+    }
+    o->ags_gen->ag_running_async = 1;
+    result = __Pyx_Coroutine_Send((PyObject*)o->ags_gen, arg);
+    result = __Pyx_async_gen_unwrap_value(o->ags_gen, result);
+    if (result == NULL) {
+        o->ags_state = __PYX_AWAITABLE_STATE_CLOSED;
+    }
+    return result;
+}
+static CYTHON_INLINE PyObject *
+__Pyx_async_gen_asend_iternext(PyObject *o)
+{
+    return __Pyx_async_gen_asend_send(o, Py_None);
+}
+static PyObject *
+__Pyx_async_gen_asend_throw(__pyx_PyAsyncGenASend *o, PyObject *args)
+{
+    PyObject *result;
+    if (unlikely(o->ags_state == __PYX_AWAITABLE_STATE_CLOSED)) {
+        PyErr_SetString(PyExc_RuntimeError, __Pyx_ASYNC_GEN_CANNOT_REUSE_SEND_MSG);
+        return NULL;
+    }
+    result = __Pyx_Coroutine_Throw((PyObject*)o->ags_gen, args);
+    result = __Pyx_async_gen_unwrap_value(o->ags_gen, result);
+    if (result == NULL) {
+        o->ags_state = __PYX_AWAITABLE_STATE_CLOSED;
+    }
+    return result;
+}
+static PyObject *
+__Pyx_async_gen_asend_close(PyObject *g, PyObject *args)
+{
+    __pyx_PyAsyncGenASend *o = (__pyx_PyAsyncGenASend*) g;
+    CYTHON_UNUSED_VAR(args);
+    o->ags_state = __PYX_AWAITABLE_STATE_CLOSED;
+    Py_RETURN_NONE;
+}
+static PyMethodDef __Pyx_async_gen_asend_methods[] = {
+    {"send", (PyCFunction)__Pyx_async_gen_asend_send, METH_O, __Pyx_async_gen_send_doc},
+    {"throw", (PyCFunction)__Pyx_async_gen_asend_throw, METH_VARARGS, __Pyx_async_gen_throw_doc},
+    {"close", (PyCFunction)__Pyx_async_gen_asend_close, METH_NOARGS, __Pyx_async_gen_close_doc},
+    {"__await__", (PyCFunction)__Pyx_async_gen_self_method, METH_NOARGS, __Pyx_async_gen_await_doc},
+    {0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx__PyAsyncGenASendType_slots[] = {
+    {Py_tp_dealloc, (void *)__Pyx_async_gen_asend_dealloc},
+    {Py_am_await, (void *)PyObject_SelfIter},
+    {Py_tp_traverse, (void *)__Pyx_async_gen_asend_traverse},
+    {Py_tp_methods, (void *)__Pyx_async_gen_asend_methods},
+    {Py_tp_iter, (void *)PyObject_SelfIter},
+    {Py_tp_iternext, (void *)__Pyx_async_gen_asend_iternext},
+    {0, 0},
+};
+static PyType_Spec __pyx__PyAsyncGenASendType_spec = {
+    __PYX_TYPE_MODULE_PREFIX "async_generator_asend",
+    sizeof(__pyx_PyAsyncGenASend),
+    0,
+    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,
+    __pyx__PyAsyncGenASendType_slots
+};
+#else
+#if CYTHON_USE_ASYNC_SLOTS
+static __Pyx_PyAsyncMethodsStruct __Pyx_async_gen_asend_as_async = {
+    PyObject_SelfIter,
+    0,
+    0,
+#if PY_VERSION_HEX >= 0x030A00A3
+    0,
+#endif
+};
+#endif
+static PyTypeObject __pyx__PyAsyncGenASendType_type = {
+    PyVarObject_HEAD_INIT(0, 0)
+    "async_generator_asend",
+    sizeof(__pyx_PyAsyncGenASend),
+    0,
+    (destructor)__Pyx_async_gen_asend_dealloc,
+    0,
+    0,
+    0,
+#if CYTHON_USE_ASYNC_SLOTS
+    &__Pyx_async_gen_asend_as_async,
+#else
+    0,
+#endif
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,
+    0,
+    (traverseproc)__Pyx_async_gen_asend_traverse,
+    0,
+#if CYTHON_USE_ASYNC_SLOTS && CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 && PY_VERSION_HEX < 0x030500B1
+    __Pyx_Coroutine_compare,
+#else
+    0,
+#endif
+    0,
+    PyObject_SelfIter,
+    (iternextfunc)__Pyx_async_gen_asend_iternext,
+    __Pyx_async_gen_asend_methods,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    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 PyObject *
+__Pyx_async_gen_asend_new(__pyx_PyAsyncGenObject *gen, PyObject *sendval)
+{
+    __pyx_PyAsyncGenASend *o;
+    if (likely(__Pyx_ag_asend_freelist_free)) {
+        __Pyx_ag_asend_freelist_free--;
+        o = __Pyx_ag_asend_freelist[__Pyx_ag_asend_freelist_free];
+        _Py_NewReference((PyObject *)o);
+    } else {
+        o = PyObject_GC_New(__pyx_PyAsyncGenASend, __pyx__PyAsyncGenASendType);
+        if (unlikely(o == NULL)) {
+            return NULL;
+        }
+    }
+    Py_INCREF(gen);
+    o->ags_gen = gen;
+    Py_XINCREF(sendval);
+    o->ags_sendval = sendval;
+    o->ags_state = __PYX_AWAITABLE_STATE_INIT;
+    PyObject_GC_Track((PyObject*)o);
+    return (PyObject*)o;
+}
+static void
+__Pyx_async_gen_wrapped_val_dealloc(__pyx__PyAsyncGenWrappedValue *o)
+{
+    PyObject_GC_UnTrack((PyObject *)o);
+    Py_CLEAR(o->agw_val);
+    if (likely(__Pyx_ag_value_freelist_free < _PyAsyncGen_MAXFREELIST)) {
+        assert(__pyx__PyAsyncGenWrappedValue_CheckExact(o));
+        __Pyx_ag_value_freelist[__Pyx_ag_value_freelist_free++] = o;
+    } else {
+        __Pyx_PyHeapTypeObject_GC_Del(o);
+    }
+}
+static int
+__Pyx_async_gen_wrapped_val_traverse(__pyx__PyAsyncGenWrappedValue *o,
+                                     visitproc visit, void *arg)
+{
+    Py_VISIT(o->agw_val);
+    return 0;
+}
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx__PyAsyncGenWrappedValueType_slots[] = {
+    {Py_tp_dealloc, (void *)__Pyx_async_gen_wrapped_val_dealloc},
+    {Py_tp_traverse, (void *)__Pyx_async_gen_wrapped_val_traverse},
+    {0, 0},
+};
+static PyType_Spec __pyx__PyAsyncGenWrappedValueType_spec = {
+    __PYX_TYPE_MODULE_PREFIX "async_generator_wrapped_value",
+    sizeof(__pyx__PyAsyncGenWrappedValue),
+    0,
+    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,
+    __pyx__PyAsyncGenWrappedValueType_slots
+};
+#else
+static PyTypeObject __pyx__PyAsyncGenWrappedValueType_type = {
+    PyVarObject_HEAD_INIT(0, 0)
+    "async_generator_wrapped_value",
+    sizeof(__pyx__PyAsyncGenWrappedValue),
+    0,
+    (destructor)__Pyx_async_gen_wrapped_val_dealloc,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,
+    0,
+    (traverseproc)__Pyx_async_gen_wrapped_val_traverse,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    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 PyObject *
+__Pyx__PyAsyncGenValueWrapperNew(PyObject *val)
+{
+    __pyx__PyAsyncGenWrappedValue *o;
+    assert(val);
+    if (likely(__Pyx_ag_value_freelist_free)) {
+        __Pyx_ag_value_freelist_free--;
+        o = __Pyx_ag_value_freelist[__Pyx_ag_value_freelist_free];
+        assert(__pyx__PyAsyncGenWrappedValue_CheckExact(o));
+        _Py_NewReference((PyObject*)o);
+    } else {
+        o = PyObject_GC_New(__pyx__PyAsyncGenWrappedValue, __pyx__PyAsyncGenWrappedValueType);
+        if (unlikely(!o)) {
+            Py_DECREF(val);
+            return NULL;
+        }
+    }
+    o->agw_val = val;
+    PyObject_GC_Track((PyObject*)o);
+    return (PyObject*)o;
+}
+static void
+__Pyx_async_gen_athrow_dealloc(__pyx_PyAsyncGenAThrow *o)
+{
+    PyObject_GC_UnTrack((PyObject *)o);
+    Py_CLEAR(o->agt_gen);
+    Py_CLEAR(o->agt_args);
+    __Pyx_PyHeapTypeObject_GC_Del(o);
+}
+static int
+__Pyx_async_gen_athrow_traverse(__pyx_PyAsyncGenAThrow *o, visitproc visit, void *arg)
+{
+    Py_VISIT(o->agt_gen);
+    Py_VISIT(o->agt_args);
+    return 0;
+}
+static PyObject *
+__Pyx_async_gen_athrow_send(__pyx_PyAsyncGenAThrow *o, PyObject *arg)
+{
+    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*)o->agt_gen;
+    PyObject *retval, *exc_type;
+    if (unlikely(o->agt_state == __PYX_AWAITABLE_STATE_CLOSED)) {
+        PyErr_SetString(PyExc_RuntimeError, __Pyx_ASYNC_GEN_CANNOT_REUSE_CLOSE_MSG);
+        return NULL;
+    }
+    if (unlikely(gen->resume_label == -1)) {
+        o->agt_state = __PYX_AWAITABLE_STATE_CLOSED;
+        PyErr_SetNone(PyExc_StopIteration);
+        return NULL;
+    }
+    if (o->agt_state == __PYX_AWAITABLE_STATE_INIT) {
+        if (unlikely(o->agt_gen->ag_running_async)) {
+            o->agt_state = __PYX_AWAITABLE_STATE_CLOSED;
+            if (o->agt_args == NULL) {
+                PyErr_SetString(
+                    PyExc_RuntimeError,
+                    "aclose(): asynchronous generator is already running");
+            } else {
+                PyErr_SetString(
+                    PyExc_RuntimeError,
+                    "athrow(): asynchronous generator is already running");
+            }
+            return NULL;
+        }
+        if (unlikely(o->agt_gen->ag_closed)) {
+            o->agt_state = __PYX_AWAITABLE_STATE_CLOSED;
+            PyErr_SetNone(__Pyx_PyExc_StopAsyncIteration);
+            return NULL;
+        }
+        if (unlikely(arg != Py_None)) {
+            PyErr_SetString(PyExc_RuntimeError, __Pyx_NON_INIT_CORO_MSG);
+            return NULL;
+        }
+        o->agt_state = __PYX_AWAITABLE_STATE_ITER;
+        o->agt_gen->ag_running_async = 1;
+        if (o->agt_args == NULL) {
+            o->agt_gen->ag_closed = 1;
+            retval = __Pyx__Coroutine_Throw((PyObject*)gen,
+                PyExc_GeneratorExit, NULL, NULL, NULL, 0);
+            if (retval && __pyx__PyAsyncGenWrappedValue_CheckExact(retval)) {
+                Py_DECREF(retval);
+                goto yield_close;
+            }
+        } else {
+            PyObject *typ;
+            PyObject *tb = NULL;
+            PyObject *val = NULL;
+            if (unlikely(!PyArg_UnpackTuple(o->agt_args, "athrow", 1, 3, &typ, &val, &tb))) {
+                return NULL;
+            }
+            retval = __Pyx__Coroutine_Throw((PyObject*)gen,
+                typ, val, tb, o->agt_args, 0);
+            retval = __Pyx_async_gen_unwrap_value(o->agt_gen, retval);
+        }
+        if (retval == NULL) {
+            goto check_error;
+        }
+        return retval;
+    }
+    assert (o->agt_state == __PYX_AWAITABLE_STATE_ITER);
+    retval = __Pyx_Coroutine_Send((PyObject *)gen, arg);
+    if (o->agt_args) {
+        return __Pyx_async_gen_unwrap_value(o->agt_gen, retval);
+    } else {
+        if (retval) {
+            if (unlikely(__pyx__PyAsyncGenWrappedValue_CheckExact(retval))) {
+                Py_DECREF(retval);
+                goto yield_close;
+            }
+            else {
+                return retval;
+            }
+        }
+        else {
+            goto check_error;
+        }
+    }
+yield_close:
+    o->agt_gen->ag_running_async = 0;
+    o->agt_state = __PYX_AWAITABLE_STATE_CLOSED;
+    PyErr_SetString(
+        PyExc_RuntimeError, __Pyx_ASYNC_GEN_IGNORED_EXIT_MSG);
+    return NULL;
+check_error:
+    o->agt_gen->ag_running_async = 0;
+    o->agt_state = __PYX_AWAITABLE_STATE_CLOSED;
+    exc_type = PyErr_Occurred();
+    if (__Pyx_PyErr_GivenExceptionMatches2(exc_type, __Pyx_PyExc_StopAsyncIteration, PyExc_GeneratorExit)) {
+        if (o->agt_args == NULL) {
+            PyErr_Clear();
+            PyErr_SetNone(PyExc_StopIteration);
+        }
+    }
+    return NULL;
+}
+static PyObject *
+__Pyx_async_gen_athrow_throw(__pyx_PyAsyncGenAThrow *o, PyObject *args)
+{
+    PyObject *retval;
+    if (unlikely(o->agt_state == __PYX_AWAITABLE_STATE_CLOSED)) {
+        PyErr_SetString(PyExc_RuntimeError, __Pyx_ASYNC_GEN_CANNOT_REUSE_CLOSE_MSG);
+        return NULL;
+    }
+    retval = __Pyx_Coroutine_Throw((PyObject*)o->agt_gen, args);
+    if (o->agt_args) {
+        return __Pyx_async_gen_unwrap_value(o->agt_gen, retval);
+    } else {
+        PyObject *exc_type;
+        if (unlikely(retval && __pyx__PyAsyncGenWrappedValue_CheckExact(retval))) {
+            o->agt_gen->ag_running_async = 0;
+            o->agt_state = __PYX_AWAITABLE_STATE_CLOSED;
+            Py_DECREF(retval);
+            PyErr_SetString(PyExc_RuntimeError, __Pyx_ASYNC_GEN_IGNORED_EXIT_MSG);
+            return NULL;
+        }
+        exc_type = PyErr_Occurred();
+        if (__Pyx_PyErr_GivenExceptionMatches2(exc_type, __Pyx_PyExc_StopAsyncIteration, PyExc_GeneratorExit)) {
+            PyErr_Clear();
+            PyErr_SetNone(PyExc_StopIteration);
+        }
+        return retval;
+    }
+}
+static PyObject *
+__Pyx_async_gen_athrow_iternext(__pyx_PyAsyncGenAThrow *o)
+{
+    return __Pyx_async_gen_athrow_send(o, Py_None);
+}
+static PyObject *
+__Pyx_async_gen_athrow_close(PyObject *g, PyObject *args)
+{
+    __pyx_PyAsyncGenAThrow *o = (__pyx_PyAsyncGenAThrow*) g;
+    CYTHON_UNUSED_VAR(args);
+    o->agt_state = __PYX_AWAITABLE_STATE_CLOSED;
+    Py_RETURN_NONE;
+}
+static PyMethodDef __Pyx_async_gen_athrow_methods[] = {
+    {"send", (PyCFunction)__Pyx_async_gen_athrow_send, METH_O, __Pyx_async_gen_send_doc},
+    {"throw", (PyCFunction)__Pyx_async_gen_athrow_throw, METH_VARARGS, __Pyx_async_gen_throw_doc},
+    {"close", (PyCFunction)__Pyx_async_gen_athrow_close, METH_NOARGS, __Pyx_async_gen_close_doc},
+    {"__await__", (PyCFunction)__Pyx_async_gen_self_method, METH_NOARGS, __Pyx_async_gen_await_doc},
+    {0, 0, 0, 0}
+};
+#if CYTHON_USE_TYPE_SPECS
+static PyType_Slot __pyx__PyAsyncGenAThrowType_slots[] = {
+    {Py_tp_dealloc, (void *)__Pyx_async_gen_athrow_dealloc},
+    {Py_am_await, (void *)PyObject_SelfIter},
+    {Py_tp_traverse, (void *)__Pyx_async_gen_athrow_traverse},
+    {Py_tp_iter, (void *)PyObject_SelfIter},
+    {Py_tp_iternext, (void *)__Pyx_async_gen_athrow_iternext},
+    {Py_tp_methods, (void *)__Pyx_async_gen_athrow_methods},
+    {Py_tp_getattro, (void *)__Pyx_PyObject_GenericGetAttrNoDict},
+    {0, 0},
+};
+static PyType_Spec __pyx__PyAsyncGenAThrowType_spec = {
+    __PYX_TYPE_MODULE_PREFIX "async_generator_athrow",
+    sizeof(__pyx_PyAsyncGenAThrow),
+    0,
+    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,
+    __pyx__PyAsyncGenAThrowType_slots
+};
+#else
+#if CYTHON_USE_ASYNC_SLOTS
+static __Pyx_PyAsyncMethodsStruct __Pyx_async_gen_athrow_as_async = {
+    PyObject_SelfIter,
+    0,
+    0,
+#if PY_VERSION_HEX >= 0x030A00A3
+    0,
+#endif
+};
+#endif
+static PyTypeObject __pyx__PyAsyncGenAThrowType_type = {
+    PyVarObject_HEAD_INIT(0, 0)
+    "async_generator_athrow",
+    sizeof(__pyx_PyAsyncGenAThrow),
+    0,
+    (destructor)__Pyx_async_gen_athrow_dealloc,
+    0,
+    0,
+    0,
+#if CYTHON_USE_ASYNC_SLOTS
+    &__Pyx_async_gen_athrow_as_async,
+#else
+    0,
+#endif
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,
+    0,
+    (traverseproc)__Pyx_async_gen_athrow_traverse,
+    0,
+#if CYTHON_USE_ASYNC_SLOTS && CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 && PY_VERSION_HEX < 0x030500B1
+    __Pyx_Coroutine_compare,
+#else
+    0,
+#endif
+    0,
+    PyObject_SelfIter,
+    (iternextfunc)__Pyx_async_gen_athrow_iternext,
+    __Pyx_async_gen_athrow_methods,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    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 PyObject *
+__Pyx_async_gen_athrow_new(__pyx_PyAsyncGenObject *gen, PyObject *args)
+{
+    __pyx_PyAsyncGenAThrow *o;
+    o = PyObject_GC_New(__pyx_PyAsyncGenAThrow, __pyx__PyAsyncGenAThrowType);
+    if (unlikely(o == NULL)) {
+        return NULL;
+    }
+    o->agt_gen = gen;
+    o->agt_args = args;
+    o->agt_state = __PYX_AWAITABLE_STATE_INIT;
+    Py_INCREF(gen);
+    Py_XINCREF(args);
+    PyObject_GC_Track((PyObject*)o);
+    return (PyObject*)o;
+}
+static int __pyx_AsyncGen_init(PyObject *module) {
+#if CYTHON_USE_TYPE_SPECS
+    __pyx_AsyncGenType = __Pyx_FetchCommonTypeFromSpec(module, &__pyx_AsyncGenType_spec, NULL);
+#else
+    CYTHON_MAYBE_UNUSED_VAR(module);
+    __pyx_AsyncGenType_type.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+    __pyx_AsyncGenType = __Pyx_FetchCommonType(&__pyx_AsyncGenType_type);
+#endif
+    if (unlikely(!__pyx_AsyncGenType))
+        return -1;
+#if CYTHON_USE_TYPE_SPECS
+    __pyx__PyAsyncGenAThrowType = __Pyx_FetchCommonTypeFromSpec(module, &__pyx__PyAsyncGenAThrowType_spec, NULL);
+#else
+    __pyx__PyAsyncGenAThrowType_type.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+    __pyx__PyAsyncGenAThrowType = __Pyx_FetchCommonType(&__pyx__PyAsyncGenAThrowType_type);
+#endif
+    if (unlikely(!__pyx__PyAsyncGenAThrowType))
+        return -1;
+#if CYTHON_USE_TYPE_SPECS
+    __pyx__PyAsyncGenWrappedValueType = __Pyx_FetchCommonTypeFromSpec(module, &__pyx__PyAsyncGenWrappedValueType_spec, NULL);
+#else
+    __pyx__PyAsyncGenWrappedValueType_type.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+    __pyx__PyAsyncGenWrappedValueType = __Pyx_FetchCommonType(&__pyx__PyAsyncGenWrappedValueType_type);
+#endif
+    if (unlikely(!__pyx__PyAsyncGenWrappedValueType))
+        return -1;
+#if CYTHON_USE_TYPE_SPECS
+    __pyx__PyAsyncGenASendType = __Pyx_FetchCommonTypeFromSpec(module, &__pyx__PyAsyncGenASendType_spec, NULL);
+#else
+    __pyx__PyAsyncGenASendType_type.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
+    __pyx__PyAsyncGenASendType = __Pyx_FetchCommonType(&__pyx__PyAsyncGenASendType_type);
+#endif
+    if (unlikely(!__pyx__PyAsyncGenASendType))
+        return -1;
+    return 0;
+}
+
+/* AsyncGen */
+  
+
+/* 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);
+    }
+}
+
+/* VoidPtrExport */
+  static int __Pyx_ExportVoidPtr(PyObject *name, void *p, const char *sig) {
+    PyObject *d;
+    PyObject *cobj = 0;
+    d = PyDict_GetItem(__pyx_d, __pyx_n_s_pyx_capi);
+    Py_XINCREF(d);
+    if (!d) {
+        d = PyDict_New();
+        if (!d)
+            goto bad;
+        if (__Pyx_PyObject_SetAttrStr(__pyx_m, __pyx_n_s_pyx_capi, d) < 0)
+            goto bad;
+    }
+    cobj = PyCapsule_New(p, sig, 0);
+    if (!cobj)
+        goto bad;
+    if (PyDict_SetItem(d, name, cobj) < 0)
+        goto bad;
+    Py_DECREF(cobj);
+    Py_DECREF(d);
+    return 0;
+bad:
+    Py_XDECREF(cobj);
+    Py_XDECREF(d);
+    return -1;
+}
+
+/* FunctionExport */
+  static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig) {
+    PyObject *d = 0;
+    PyObject *cobj = 0;
+    union {
+        void (*fp)(void);
+        void *p;
+    } tmp;
+    d = PyObject_GetAttrString(__pyx_m, (char *)"__pyx_capi__");
+    if (!d) {
+        PyErr_Clear();
+        d = PyDict_New();
+        if (!d)
+            goto bad;
+        Py_INCREF(d);
+        if (PyModule_AddObject(__pyx_m, (char *)"__pyx_capi__", d) < 0)
+            goto bad;
+    }
+    tmp.fp = f;
+    cobj = PyCapsule_New(tmp.p, sig, 0);
+    if (!cobj)
+        goto bad;
+    if (PyDict_SetItemString(d, name, cobj) < 0)
+        goto bad;
+    Py_DECREF(cobj);
+    Py_DECREF(d);
+    return 0;
+bad:
+    Py_XDECREF(cobj);
+    Py_XDECREF(d);
+    return -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 */
diff --git a/update_android_bp.sh b/update_android_bp.sh
index c367ecd..051eca6 100755
--- a/update_android_bp.sh
+++ b/update_android_bp.sh
@@ -58,6 +58,16 @@
 cat $TEMP/grpc_unsecure_srcs.txt >> $OUT
 echo ']' >> $OUT
 
+# update the cython cpp file
+BAZEL_ROOT="/tmp/grpc_bazel"
+BAZEL_OUT="${BAZEL_ROOT}/output"
+mkdir -p "${BAZEL_OUT}"
+
+if ! /usr/bin/bazel --output_base="${BAZEL_OUT}" --output_user_root="${BAZEL_ROOT}" build --experimental_convenience_symlinks=ignore //src/python/grpcio/grpc/_cython:cygrpc.pyx_cython_translation; then
+  echo "Failed to build cygrpc.pyx_cython_translation"
+  exit 1
+fi
+
 popd
 
 BPOUT=Android.bp
@@ -72,3 +82,7 @@
         }; \@$LIST_END@p; d }" $BPOUT
 
 echo "Android.bp file lists updated."
+
+
+cp "$(find "${BAZEL_OUT}" -name 'cygrpc.cpp')" "${GRPC_PATH}/src/python/grpcio/grpc/_cython/cygrpc.cpp"
+echo "cygrpc.cpp file updated."