Generated by Cython 0.29.32

Yellow lines hint at Python interaction.
Click on a line that starts with a "+" to see the C code that Cython generated for it.

Raw output: unmarshaller.c

+001: import array
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_array, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_array, __pyx_t_1) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* … */
  __pyx_t_5 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_5) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+002: import io
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_io, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_io, __pyx_t_1) < 0) __PYX_ERR(0, 2, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+003: import socket
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_socket, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_socket, __pyx_t_1) < 0) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+004: import sys
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_sys, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_sys, __pyx_t_1) < 0) __PYX_ERR(0, 4, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+005: from struct import Struct
  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_n_s_Struct);
  __Pyx_GIVEREF(__pyx_n_s_Struct);
  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_Struct);
  __pyx_t_2 = __Pyx_Import(__pyx_n_s_struct, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5, __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_Struct); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Struct, __pyx_t_1) < 0) __PYX_ERR(0, 5, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+006: from typing import Any, Callable, Dict, Iterable, List, Optional, Tuple
  __pyx_t_2 = PyList_New(7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_n_s_Any);
  __Pyx_GIVEREF(__pyx_n_s_Any);
  PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_Any);
  __Pyx_INCREF(__pyx_n_s_Callable);
  __Pyx_GIVEREF(__pyx_n_s_Callable);
  PyList_SET_ITEM(__pyx_t_2, 1, __pyx_n_s_Callable);
  __Pyx_INCREF(__pyx_n_s_Dict);
  __Pyx_GIVEREF(__pyx_n_s_Dict);
  PyList_SET_ITEM(__pyx_t_2, 2, __pyx_n_s_Dict);
  __Pyx_INCREF(__pyx_n_s_Iterable);
  __Pyx_GIVEREF(__pyx_n_s_Iterable);
  PyList_SET_ITEM(__pyx_t_2, 3, __pyx_n_s_Iterable);
  __Pyx_INCREF(__pyx_n_s_List);
  __Pyx_GIVEREF(__pyx_n_s_List);
  PyList_SET_ITEM(__pyx_t_2, 4, __pyx_n_s_List);
  __Pyx_INCREF(__pyx_n_s_Optional);
  __Pyx_GIVEREF(__pyx_n_s_Optional);
  PyList_SET_ITEM(__pyx_t_2, 5, __pyx_n_s_Optional);
  __Pyx_INCREF(__pyx_n_s_Tuple);
  __Pyx_GIVEREF(__pyx_n_s_Tuple);
  PyList_SET_ITEM(__pyx_t_2, 6, __pyx_n_s_Tuple);
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_typing, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_Any); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Any, __pyx_t_2) < 0) __PYX_ERR(0, 6, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_Callable); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Callable, __pyx_t_2) < 0) __PYX_ERR(0, 6, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_Dict); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Dict, __pyx_t_2) < 0) __PYX_ERR(0, 6, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_Iterable); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Iterable, __pyx_t_2) < 0) __PYX_ERR(0, 6, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_List); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_List, __pyx_t_2) < 0) __PYX_ERR(0, 6, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_Optional); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Optional, __pyx_t_2) < 0) __PYX_ERR(0, 6, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_Tuple); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Tuple, __pyx_t_2) < 0) __PYX_ERR(0, 6, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 007: 
+008: from ..constants import MESSAGE_FLAG_MAP, MESSAGE_TYPE_MAP
  __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_n_s_MESSAGE_FLAG_MAP);
  __Pyx_GIVEREF(__pyx_n_s_MESSAGE_FLAG_MAP);
  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_MESSAGE_FLAG_MAP);
  __Pyx_INCREF(__pyx_n_s_MESSAGE_TYPE_MAP);
  __Pyx_GIVEREF(__pyx_n_s_MESSAGE_TYPE_MAP);
  PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_s_MESSAGE_TYPE_MAP);
  __pyx_t_2 = __Pyx_Import(__pyx_n_s_constants, __pyx_t_1, 2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8, __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_MESSAGE_FLAG_MAP); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_XGOTREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_MESSAGE_FLAG_MAP);
  __Pyx_DECREF_SET(__pyx_v_9dbus_fast_8_private_12unmarshaller_MESSAGE_FLAG_MAP, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_MESSAGE_TYPE_MAP); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_XGOTREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_MESSAGE_TYPE_MAP);
  __Pyx_DECREF_SET(__pyx_v_9dbus_fast_8_private_12unmarshaller_MESSAGE_TYPE_MAP, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+009: from ..errors import InvalidMessageError
  __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_n_s_InvalidMessageError);
  __Pyx_GIVEREF(__pyx_n_s_InvalidMessageError);
  PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_InvalidMessageError);
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_errors, __pyx_t_2, 2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_InvalidMessageError); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_InvalidMessageError, __pyx_t_2) < 0) __PYX_ERR(0, 9, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+010: from ..message import Message
  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_n_s_Message);
  __Pyx_GIVEREF(__pyx_n_s_Message);
  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_Message);
  __pyx_t_2 = __Pyx_Import(__pyx_n_s_message, __pyx_t_1, 2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10, __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_Message); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_XGOTREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_Message);
  __Pyx_DECREF_SET(__pyx_v_9dbus_fast_8_private_12unmarshaller_Message, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+011: from ..signature import SignatureType, Variant, get_signature_tree
  __pyx_t_2 = PyList_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_n_s_SignatureType);
  __Pyx_GIVEREF(__pyx_n_s_SignatureType);
  PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_SignatureType);
  __Pyx_INCREF(__pyx_n_s_Variant);
  __Pyx_GIVEREF(__pyx_n_s_Variant);
  PyList_SET_ITEM(__pyx_t_2, 1, __pyx_n_s_Variant);
  __Pyx_INCREF(__pyx_n_s_get_signature_tree);
  __Pyx_GIVEREF(__pyx_n_s_get_signature_tree);
  PyList_SET_ITEM(__pyx_t_2, 2, __pyx_n_s_get_signature_tree);
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_signature, __pyx_t_2, 2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_SignatureType); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_SignatureType, __pyx_t_2) < 0) __PYX_ERR(0, 11, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_Variant); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_XGOTREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_Variant);
  __Pyx_DECREF_SET(__pyx_v_9dbus_fast_8_private_12unmarshaller_Variant, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_get_signature_tree); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_XGOTREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_get_signature_tree);
  __Pyx_DECREF_SET(__pyx_v_9dbus_fast_8_private_12unmarshaller_get_signature_tree, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+012: from .constants import BIG_ENDIAN, LITTLE_ENDIAN, PROTOCOL_VERSION
  __pyx_t_1 = PyList_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_n_s_BIG_ENDIAN);
  __Pyx_GIVEREF(__pyx_n_s_BIG_ENDIAN);
  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_BIG_ENDIAN);
  __Pyx_INCREF(__pyx_n_s_LITTLE_ENDIAN);
  __Pyx_GIVEREF(__pyx_n_s_LITTLE_ENDIAN);
  PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_s_LITTLE_ENDIAN);
  __Pyx_INCREF(__pyx_n_s_PROTOCOL_VERSION);
  __Pyx_GIVEREF(__pyx_n_s_PROTOCOL_VERSION);
  PyList_SET_ITEM(__pyx_t_1, 2, __pyx_n_s_PROTOCOL_VERSION);
  __pyx_t_2 = __Pyx_Import(__pyx_n_s_constants, __pyx_t_1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12, __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_BIG_ENDIAN); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyInt_As_unsigned_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 12, __pyx_L1_error)
  __pyx_v_9dbus_fast_8_private_12unmarshaller_BIG_ENDIAN = __pyx_t_3;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_LITTLE_ENDIAN); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyInt_As_unsigned_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 12, __pyx_L1_error)
  __pyx_v_9dbus_fast_8_private_12unmarshaller_LITTLE_ENDIAN = __pyx_t_3;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_PROTOCOL_VERSION); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyInt_As_unsigned_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 12, __pyx_L1_error)
  __pyx_v_9dbus_fast_8_private_12unmarshaller_PROTOCOL_VERSION = __pyx_t_3;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 013: 
+014: MAX_UNIX_FDS = 16
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MAX_UNIX_FDS, __pyx_int_16) < 0) __PYX_ERR(0, 14, __pyx_L1_error)
 015: 
+016: UNPACK_SYMBOL = {LITTLE_ENDIAN: "<", BIG_ENDIAN: ">"}
  __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 16, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyInt_From_unsigned_int(__pyx_v_9dbus_fast_8_private_12unmarshaller_LITTLE_ENDIAN); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 16, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_2, __pyx_t_1, __pyx_kp_u__9) < 0) __PYX_ERR(0, 16, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyInt_From_unsigned_int(__pyx_v_9dbus_fast_8_private_12unmarshaller_BIG_ENDIAN); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 16, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_2, __pyx_t_1, __pyx_kp_u__10) < 0) __PYX_ERR(0, 16, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_UNPACK_SYMBOL, __pyx_t_2) < 0) __PYX_ERR(0, 16, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 017: 
+018: UINT32_CAST = "I"
  __Pyx_INCREF(__pyx_n_u_I);
  __Pyx_XGOTREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_UINT32_CAST);
  __Pyx_DECREF_SET(__pyx_v_9dbus_fast_8_private_12unmarshaller_UINT32_CAST, __pyx_n_u_I);
  __Pyx_GIVEREF(__pyx_n_u_I);
+019: UINT32_SIZE = 4
  __pyx_v_9dbus_fast_8_private_12unmarshaller_UINT32_SIZE = 4;
+020: UINT32_DBUS_TYPE = "u"
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_UINT32_DBUS_TYPE, __pyx_n_u_u) < 0) __PYX_ERR(0, 20, __pyx_L1_error)
 021: 
+022: INT16_CAST = "h"
  __Pyx_INCREF(__pyx_n_u_h);
  __Pyx_XGOTREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_INT16_CAST);
  __Pyx_DECREF_SET(__pyx_v_9dbus_fast_8_private_12unmarshaller_INT16_CAST, __pyx_n_u_h);
  __Pyx_GIVEREF(__pyx_n_u_h);
+023: INT16_SIZE = 2
  __pyx_v_9dbus_fast_8_private_12unmarshaller_INT16_SIZE = 2;
+024: INT16_DBUS_TYPE = "n"
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_INT16_DBUS_TYPE, __pyx_n_u_n) < 0) __PYX_ERR(0, 24, __pyx_L1_error)
 025: 
+026: UINT16_CAST = "H"
  __Pyx_INCREF(__pyx_n_u_H);
  __Pyx_XGOTREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_UINT16_CAST);
  __Pyx_DECREF_SET(__pyx_v_9dbus_fast_8_private_12unmarshaller_UINT16_CAST, __pyx_n_u_H);
  __Pyx_GIVEREF(__pyx_n_u_H);
+027: UINT16_SIZE = 2
  __pyx_v_9dbus_fast_8_private_12unmarshaller_UINT16_SIZE = 2;
+028: UINT16_DBUS_TYPE = "q"
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_UINT16_DBUS_TYPE, __pyx_n_u_q) < 0) __PYX_ERR(0, 28, __pyx_L1_error)
 029: 
+030: SYS_IS_LITTLE_ENDIAN = sys.byteorder == "little"
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_sys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_byteorder); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_n_u_little, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 30, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 30, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_9dbus_fast_8_private_12unmarshaller_SYS_IS_LITTLE_ENDIAN = __pyx_t_4;
+031: SYS_IS_BIG_ENDIAN = sys.byteorder == "big"
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_sys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 31, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_byteorder); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 31, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_n_u_big, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 31, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 31, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_9dbus_fast_8_private_12unmarshaller_SYS_IS_BIG_ENDIAN = __pyx_t_4;
 032: 
 033: DBUS_TO_CTYPE = {
+034:     "y": ("B", 1),  # byte
  __pyx_t_2 = __Pyx_PyDict_NewPresized(9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_y, __pyx_tuple__11) < 0) __PYX_ERR(0, 34, __pyx_L1_error)
/* … */
  __pyx_tuple__11 = PyTuple_Pack(2, __pyx_n_u_B, __pyx_int_1); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(0, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__11);
  __Pyx_GIVEREF(__pyx_tuple__11);
+035:     INT16_DBUS_TYPE: (INT16_CAST, INT16_SIZE),  # int16
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_INT16_DBUS_TYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 35, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyInt_From_unsigned_int(__pyx_v_9dbus_fast_8_private_12unmarshaller_INT16_SIZE); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 35, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 35, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_INCREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_INT16_CAST);
  __Pyx_GIVEREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_INT16_CAST);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_9dbus_fast_8_private_12unmarshaller_INT16_CAST);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5);
  __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_2, __pyx_t_1, __pyx_t_6) < 0) __PYX_ERR(0, 34, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+036:     UINT16_DBUS_TYPE: (UINT16_CAST, UINT16_SIZE),  # uint16
  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_UINT16_DBUS_TYPE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = __Pyx_PyInt_From_unsigned_int(__pyx_v_9dbus_fast_8_private_12unmarshaller_UINT16_SIZE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_UINT16_CAST);
  __Pyx_GIVEREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_UINT16_CAST);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_9dbus_fast_8_private_12unmarshaller_UINT16_CAST);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_1);
  __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_2, __pyx_t_6, __pyx_t_5) < 0) __PYX_ERR(0, 34, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+037:     "i": ("i", 4),  # int32
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_i, __pyx_tuple__12) < 0) __PYX_ERR(0, 34, __pyx_L1_error)
/* … */
  __pyx_tuple__12 = PyTuple_Pack(2, __pyx_n_u_i, __pyx_int_4); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(0, 37, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__12);
  __Pyx_GIVEREF(__pyx_tuple__12);
+038:     UINT32_DBUS_TYPE: (UINT32_CAST, UINT32_SIZE),  # uint32
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_UINT32_DBUS_TYPE); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyInt_From_unsigned_int(__pyx_v_9dbus_fast_8_private_12unmarshaller_UINT32_SIZE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_UINT32_CAST);
  __Pyx_GIVEREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_UINT32_CAST);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_9dbus_fast_8_private_12unmarshaller_UINT32_CAST);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_6);
  __pyx_t_6 = 0;
  if (PyDict_SetItem(__pyx_t_2, __pyx_t_5, __pyx_t_1) < 0) __PYX_ERR(0, 34, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+039:     "x": ("q", 8),  # int64
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_x, __pyx_tuple__13) < 0) __PYX_ERR(0, 34, __pyx_L1_error)
/* … */
  __pyx_tuple__13 = PyTuple_Pack(2, __pyx_n_u_q, __pyx_int_8); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(0, 39, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__13);
  __Pyx_GIVEREF(__pyx_tuple__13);
+040:     "t": ("Q", 8),  # uint64
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_t, __pyx_tuple__14) < 0) __PYX_ERR(0, 34, __pyx_L1_error)
/* … */
  __pyx_tuple__14 = PyTuple_Pack(2, __pyx_n_u_Q, __pyx_int_8); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(0, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__14);
  __Pyx_GIVEREF(__pyx_tuple__14);
+041:     "d": ("d", 8),  # double
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_d, __pyx_tuple__15) < 0) __PYX_ERR(0, 34, __pyx_L1_error)
/* … */
  __pyx_tuple__15 = PyTuple_Pack(2, __pyx_n_u_d, __pyx_int_8); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(0, 41, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__15);
  __Pyx_GIVEREF(__pyx_tuple__15);
+042:     "h": (UINT32_CAST, UINT32_SIZE),  # uint32
  __pyx_t_1 = __Pyx_PyInt_From_unsigned_int(__pyx_v_9dbus_fast_8_private_12unmarshaller_UINT32_SIZE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_UINT32_CAST);
  __Pyx_GIVEREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_UINT32_CAST);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_9dbus_fast_8_private_12unmarshaller_UINT32_CAST);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_1);
  __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_h, __pyx_t_5) < 0) __PYX_ERR(0, 34, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_DBUS_TO_CTYPE, __pyx_t_2) < 0) __PYX_ERR(0, 33, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 043: }
 044: 
+045: UNPACK_HEADER_LITTLE_ENDIAN = Struct("<III").unpack_from
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Struct); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_unpack_from); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_XGOTREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_UNPACK_HEADER_LITTLE_ENDIAN);
  __Pyx_DECREF_SET(__pyx_v_9dbus_fast_8_private_12unmarshaller_UNPACK_HEADER_LITTLE_ENDIAN, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;
/* … */
  __pyx_tuple__16 = PyTuple_Pack(1, __pyx_kp_u_III); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(0, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__16);
  __Pyx_GIVEREF(__pyx_tuple__16);
+046: UNPACK_HEADER_BIG_ENDIAN = Struct(">III").unpack_from
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Struct); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_unpack_from); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_XGOTREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_UNPACK_HEADER_BIG_ENDIAN);
  __Pyx_DECREF_SET(__pyx_v_9dbus_fast_8_private_12unmarshaller_UNPACK_HEADER_BIG_ENDIAN, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;
/* … */
  __pyx_tuple__17 = PyTuple_Pack(1, __pyx_kp_u_III_2); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(0, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__17);
  __Pyx_GIVEREF(__pyx_tuple__17);
 047: 
+048: UINT32_UNPACK_LITTLE_ENDIAN = Struct(f"<{UINT32_CAST}").unpack_from
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Struct); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = __Pyx_PyUnicode_Unicode(__pyx_v_9dbus_fast_8_private_12unmarshaller_UINT32_CAST); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_kp_u__9, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_unpack_from); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_XGOTREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_UINT32_UNPACK_LITTLE_ENDIAN);
  __Pyx_DECREF_SET(__pyx_v_9dbus_fast_8_private_12unmarshaller_UINT32_UNPACK_LITTLE_ENDIAN, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;
+049: UINT32_UNPACK_BIG_ENDIAN = Struct(f">{UINT32_CAST}").unpack_from
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Struct); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 49, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyUnicode_Unicode(__pyx_v_9dbus_fast_8_private_12unmarshaller_UINT32_CAST); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 49, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_PyUnicode_Concat(__pyx_kp_u__10, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 49, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 49, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_unpack_from); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 49, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_XGOTREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_UINT32_UNPACK_BIG_ENDIAN);
  __Pyx_DECREF_SET(__pyx_v_9dbus_fast_8_private_12unmarshaller_UINT32_UNPACK_BIG_ENDIAN, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;
 050: 
+051: INT16_UNPACK_LITTLE_ENDIAN = Struct(f"<{INT16_CAST}").unpack_from
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Struct); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 51, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = __Pyx_PyUnicode_Unicode(__pyx_v_9dbus_fast_8_private_12unmarshaller_INT16_CAST); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 51, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_kp_u__9, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 51, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 51, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_unpack_from); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 51, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_XGOTREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_INT16_UNPACK_LITTLE_ENDIAN);
  __Pyx_DECREF_SET(__pyx_v_9dbus_fast_8_private_12unmarshaller_INT16_UNPACK_LITTLE_ENDIAN, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;
+052: INT16_UNPACK_BIG_ENDIAN = Struct(f">{INT16_CAST}").unpack_from
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Struct); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 52, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyUnicode_Unicode(__pyx_v_9dbus_fast_8_private_12unmarshaller_INT16_CAST); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 52, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_PyUnicode_Concat(__pyx_kp_u__10, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 52, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 52, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_unpack_from); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 52, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_XGOTREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_INT16_UNPACK_BIG_ENDIAN);
  __Pyx_DECREF_SET(__pyx_v_9dbus_fast_8_private_12unmarshaller_INT16_UNPACK_BIG_ENDIAN, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;
 053: 
+054: UINT16_UNPACK_LITTLE_ENDIAN = Struct(f"<{UINT16_CAST}").unpack_from
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Struct); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 54, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = __Pyx_PyUnicode_Unicode(__pyx_v_9dbus_fast_8_private_12unmarshaller_UINT16_CAST); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 54, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_kp_u__9, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 54, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 54, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_unpack_from); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 54, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_XGOTREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_UINT16_UNPACK_LITTLE_ENDIAN);
  __Pyx_DECREF_SET(__pyx_v_9dbus_fast_8_private_12unmarshaller_UINT16_UNPACK_LITTLE_ENDIAN, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;
+055: UINT16_UNPACK_BIG_ENDIAN = Struct(f">{UINT16_CAST}").unpack_from
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Struct); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 55, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyUnicode_Unicode(__pyx_v_9dbus_fast_8_private_12unmarshaller_UINT16_CAST); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 55, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_PyUnicode_Concat(__pyx_kp_u__10, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 55, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 55, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_unpack_from); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 55, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_XGOTREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_UINT16_UNPACK_BIG_ENDIAN);
  __Pyx_DECREF_SET(__pyx_v_9dbus_fast_8_private_12unmarshaller_UINT16_UNPACK_BIG_ENDIAN, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;
 056: 
+057: HEADER_SIGNATURE_SIZE = 16
  __pyx_v_9dbus_fast_8_private_12unmarshaller_HEADER_SIGNATURE_SIZE = 16;
+058: HEADER_ARRAY_OF_STRUCT_SIGNATURE_POSITION = 12
  __pyx_v_9dbus_fast_8_private_12unmarshaller_HEADER_ARRAY_OF_STRUCT_SIGNATURE_POSITION = 12;
 059: 
 060: 
+061: SIGNATURE_TREE_EMPTY = get_signature_tree("")
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_v_9dbus_fast_8_private_12unmarshaller_get_signature_tree, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 61, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_XGOTREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_EMPTY);
  __Pyx_DECREF_SET(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_EMPTY, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;
/* … */
  __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_u__3); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(0, 61, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__18);
  __Pyx_GIVEREF(__pyx_tuple__18);
+062: SIGNATURE_TREE_B = get_signature_tree("b")
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_v_9dbus_fast_8_private_12unmarshaller_get_signature_tree, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_XGOTREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_B);
  __Pyx_DECREF_SET(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_B, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;
/* … */
  __pyx_tuple__19 = PyTuple_Pack(1, __pyx_n_u_b); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(0, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__19);
  __Pyx_GIVEREF(__pyx_tuple__19);
+063: SIGNATURE_TREE_N = get_signature_tree("n")
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_v_9dbus_fast_8_private_12unmarshaller_get_signature_tree, __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 63, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_XGOTREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_N);
  __Pyx_DECREF_SET(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_N, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;
/* … */
  __pyx_tuple__20 = PyTuple_Pack(1, __pyx_n_u_n); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(0, 63, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__20);
  __Pyx_GIVEREF(__pyx_tuple__20);
+064: SIGNATURE_TREE_S = get_signature_tree("s")
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_v_9dbus_fast_8_private_12unmarshaller_get_signature_tree, __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_XGOTREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_S);
  __Pyx_DECREF_SET(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_S, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;
/* … */
  __pyx_tuple__21 = PyTuple_Pack(1, __pyx_n_u_s); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(0, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__21);
  __Pyx_GIVEREF(__pyx_tuple__21);
+065: SIGNATURE_TREE_O = get_signature_tree("o")
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_v_9dbus_fast_8_private_12unmarshaller_get_signature_tree, __pyx_tuple__22, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 65, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_XGOTREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_O);
  __Pyx_DECREF_SET(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_O, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;
/* … */
  __pyx_tuple__22 = PyTuple_Pack(1, __pyx_n_u_o); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(0, 65, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__22);
  __Pyx_GIVEREF(__pyx_tuple__22);
 066: 
+067: SIGNATURE_TREE_AY = get_signature_tree("ay")
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_v_9dbus_fast_8_private_12unmarshaller_get_signature_tree, __pyx_tuple__23, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_XGOTREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_AY);
  __Pyx_DECREF_SET(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_AY, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;
/* … */
  __pyx_tuple__23 = PyTuple_Pack(1, __pyx_n_u_ay); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(0, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__23);
  __Pyx_GIVEREF(__pyx_tuple__23);
+068: SIGNATURE_TREE_AS = get_signature_tree("as")
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_v_9dbus_fast_8_private_12unmarshaller_get_signature_tree, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 68, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_XGOTREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_AS);
  __Pyx_DECREF_SET(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_AS, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;
/* … */
  __pyx_tuple__24 = PyTuple_Pack(1, __pyx_n_u_as); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(0, 68, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__24);
  __Pyx_GIVEREF(__pyx_tuple__24);
+069: SIGNATURE_TREE_AS_TYPES_0 = SIGNATURE_TREE_AS.types[0]
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_AS, __pyx_n_s_types); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_XGOTREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_AS_TYPES_0);
  __Pyx_DECREF_SET(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_AS_TYPES_0, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;
+070: SIGNATURE_TREE_A_SV = get_signature_tree("a{sv}")
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_v_9dbus_fast_8_private_12unmarshaller_get_signature_tree, __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_XGOTREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_A_SV);
  __Pyx_DECREF_SET(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_A_SV, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;
/* … */
  __pyx_tuple__25 = PyTuple_Pack(1, __pyx_kp_u_a_sv); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__25);
  __Pyx_GIVEREF(__pyx_tuple__25);
+071: SIGNATURE_TREE_A_SV_TYPES_0 = SIGNATURE_TREE_A_SV.types[0]
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_A_SV, __pyx_n_s_types); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 71, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_5, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 71, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_XGOTREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_A_SV_TYPES_0);
  __Pyx_DECREF_SET(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_A_SV_TYPES_0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;
 072: 
+073: SIGNATURE_TREE_OAS = get_signature_tree("oas")
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_v_9dbus_fast_8_private_12unmarshaller_get_signature_tree, __pyx_tuple__26, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_XGOTREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_OAS);
  __Pyx_DECREF_SET(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_OAS, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;
/* … */
  __pyx_tuple__26 = PyTuple_Pack(1, __pyx_n_u_oas); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(0, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__26);
  __Pyx_GIVEREF(__pyx_tuple__26);
+074: SIGNATURE_TREE_OAS_TYPES_1 = SIGNATURE_TREE_OAS.types[1]
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_OAS, __pyx_n_s_types); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 74, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_2, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 74, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_XGOTREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_OAS_TYPES_1);
  __Pyx_DECREF_SET(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_OAS_TYPES_1, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;
 075: 
+076: SIGNATURE_TREE_AY_TYPES_0 = SIGNATURE_TREE_AY.types[0]
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_AY, __pyx_n_s_types); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 76, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_5, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 76, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_XGOTREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_AY_TYPES_0);
  __Pyx_DECREF_SET(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_AY_TYPES_0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;
+077: SIGNATURE_TREE_A_QV = get_signature_tree("a{qv}")
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_v_9dbus_fast_8_private_12unmarshaller_get_signature_tree, __pyx_tuple__27, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 77, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_XGOTREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_A_QV);
  __Pyx_DECREF_SET(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_A_QV, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;
/* … */
  __pyx_tuple__27 = PyTuple_Pack(1, __pyx_kp_u_a_qv); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(0, 77, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__27);
  __Pyx_GIVEREF(__pyx_tuple__27);
+078: SIGNATURE_TREE_A_QV_TYPES_0 = SIGNATURE_TREE_A_QV.types[0]
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_A_QV, __pyx_n_s_types); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 78, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 78, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_XGOTREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_A_QV_TYPES_0);
  __Pyx_DECREF_SET(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_A_QV_TYPES_0, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;
 079: 
+080: SIGNATURE_TREE_SA_SV_AS = get_signature_tree("sa{sv}as")
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_v_9dbus_fast_8_private_12unmarshaller_get_signature_tree, __pyx_tuple__28, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 80, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_XGOTREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_SA_SV_AS);
  __Pyx_DECREF_SET(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_SA_SV_AS, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;
/* … */
  __pyx_tuple__28 = PyTuple_Pack(1, __pyx_kp_u_sa_sv_as); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(0, 80, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__28);
  __Pyx_GIVEREF(__pyx_tuple__28);
+081: SIGNATURE_TREE_SA_SV_AS_TYPES_1 = SIGNATURE_TREE_SA_SV_AS.types[1]
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_SA_SV_AS, __pyx_n_s_types); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 81, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_5, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 81, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_XGOTREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_SA_SV_AS_TYPES_1);
  __Pyx_DECREF_SET(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_SA_SV_AS_TYPES_1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;
+082: SIGNATURE_TREE_SA_SV_AS_TYPES_2 = SIGNATURE_TREE_SA_SV_AS.types[2]
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_SA_SV_AS, __pyx_n_s_types); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 82, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_2, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 82, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_XGOTREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_SA_SV_AS_TYPES_2);
  __Pyx_DECREF_SET(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_SA_SV_AS_TYPES_2, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;
 083: 
+084: SIGNATURE_TREE_OA_SA_SV = get_signature_tree("oa{sa{sv}}")
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_v_9dbus_fast_8_private_12unmarshaller_get_signature_tree, __pyx_tuple__29, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_XGOTREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_OA_SA_SV);
  __Pyx_DECREF_SET(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_OA_SA_SV, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;
/* … */
  __pyx_tuple__29 = PyTuple_Pack(1, __pyx_kp_u_oa_sa_sv); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(0, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__29);
  __Pyx_GIVEREF(__pyx_tuple__29);
+085: SIGNATURE_TREE_OA_SA_SV_TYPES_1 = SIGNATURE_TREE_OA_SA_SV.types[1]
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_OA_SA_SV, __pyx_n_s_types); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 85, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_5, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 85, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_XGOTREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_OA_SA_SV_TYPES_1);
  __Pyx_DECREF_SET(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_OA_SA_SV_TYPES_1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;
 086: 
+087: TOKEN_O_AS_INT = ord("o")
  __pyx_v_9dbus_fast_8_private_12unmarshaller_TOKEN_O_AS_INT = 0x6F;
+088: TOKEN_S_AS_INT = ord("s")
  __pyx_v_9dbus_fast_8_private_12unmarshaller_TOKEN_S_AS_INT = 0x73;
+089: TOKEN_G_AS_INT = ord("g")
  __pyx_v_9dbus_fast_8_private_12unmarshaller_TOKEN_G_AS_INT = 0x67;
 090: 
 091: HEADER_MESSAGE_ARG_NAME = {
+092:     1: "path",
  __pyx_t_2 = __Pyx_PyDict_NewPresized(9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 92, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_int_1, __pyx_n_u_path) < 0) __PYX_ERR(0, 92, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_int_2, __pyx_n_u_interface) < 0) __PYX_ERR(0, 92, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_int_3, __pyx_n_u_member) < 0) __PYX_ERR(0, 92, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_int_4, __pyx_n_u_error_name) < 0) __PYX_ERR(0, 92, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_int_5, __pyx_n_u_reply_serial) < 0) __PYX_ERR(0, 92, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_int_6, __pyx_n_u_destination) < 0) __PYX_ERR(0, 92, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_int_7, __pyx_n_u_sender) < 0) __PYX_ERR(0, 92, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_int_8, __pyx_n_u_signature) < 0) __PYX_ERR(0, 92, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_int_9, __pyx_n_u_unix_fds) < 0) __PYX_ERR(0, 92, __pyx_L1_error)
  __Pyx_XGOTREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_HEADER_MESSAGE_ARG_NAME);
  __Pyx_DECREF_SET(__pyx_v_9dbus_fast_8_private_12unmarshaller_HEADER_MESSAGE_ARG_NAME, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;
 093:     2: "interface",
 094:     3: "member",
 095:     4: "error_name",
 096:     5: "reply_serial",
 097:     6: "destination",
 098:     7: "sender",
 099:     8: "signature",
 100:     9: "unix_fds",
 101: }
 102: 
 103: 
+104: READER_TYPE = Callable[["Unmarshaller", SignatureType], Any]
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Callable); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 104, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_SignatureType); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 104, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 104, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_n_u_Unmarshaller);
  __Pyx_GIVEREF(__pyx_n_u_Unmarshaller);
  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_u_Unmarshaller);
  __Pyx_GIVEREF(__pyx_t_5);
  PyList_SET_ITEM(__pyx_t_1, 1, __pyx_t_5);
  __pyx_t_5 = 0;
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_Any); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 104, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 104, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5);
  __pyx_t_1 = 0;
  __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_t_2, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 104, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_READER_TYPE, __pyx_t_5) < 0) __PYX_ERR(0, 104, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 105: 
 106: 
+107: def unpack_parser_factory(unpack_from: Callable, size: int) -> READER_TYPE:
/* Python wrapper */
static PyObject *__pyx_pw_9dbus_fast_8_private_12unmarshaller_1unpack_parser_factory(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_9dbus_fast_8_private_12unmarshaller_unpack_parser_factory[] = "Build a parser that unpacks the bytes using the given unpack_from function.";
static PyMethodDef __pyx_mdef_9dbus_fast_8_private_12unmarshaller_1unpack_parser_factory = {"unpack_parser_factory", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9dbus_fast_8_private_12unmarshaller_1unpack_parser_factory, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9dbus_fast_8_private_12unmarshaller_unpack_parser_factory};
static PyObject *__pyx_pw_9dbus_fast_8_private_12unmarshaller_1unpack_parser_factory(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_unpack_from = 0;
  PyObject *__pyx_v_size = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("unpack_parser_factory (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_unpack_from,&__pyx_n_s_size,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_unpack_from)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_size)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("unpack_parser_factory", 1, 2, 2, 1); __PYX_ERR(0, 107, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "unpack_parser_factory") < 0)) __PYX_ERR(0, 107, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_unpack_from = values[0];
    __pyx_v_size = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("unpack_parser_factory", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 107, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("dbus_fast._private.unmarshaller.unpack_parser_factory", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9dbus_fast_8_private_12unmarshaller_unpack_parser_factory(__pyx_self, __pyx_v_unpack_from, __pyx_v_size);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
static PyObject *__pyx_pf_9dbus_fast_8_private_12unmarshaller_unpack_parser_factory(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_unpack_from, PyObject *__pyx_v_size) {
  struct __pyx_obj_9dbus_fast_8_private_12unmarshaller___pyx_scope_struct__unpack_parser_factory *__pyx_cur_scope;
  PyObject *__pyx_v__unpack_from_parser = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("unpack_parser_factory", 0);
  __pyx_cur_scope = (struct __pyx_obj_9dbus_fast_8_private_12unmarshaller___pyx_scope_struct__unpack_parser_factory *)__pyx_tp_new_9dbus_fast_8_private_12unmarshaller___pyx_scope_struct__unpack_parser_factory(__pyx_ptype_9dbus_fast_8_private_12unmarshaller___pyx_scope_struct__unpack_parser_factory, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_9dbus_fast_8_private_12unmarshaller___pyx_scope_struct__unpack_parser_factory *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(0, 107, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_unpack_from = __pyx_v_unpack_from;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_unpack_from);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_unpack_from);
  __pyx_cur_scope->__pyx_v_size = __pyx_v_size;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_size);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_size);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("dbus_fast._private.unmarshaller.unpack_parser_factory", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v__unpack_from_parser);
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__30 = PyTuple_Pack(4, __pyx_n_s_unpack_from, __pyx_n_s_size, __pyx_n_s_unpack_from_parser, __pyx_n_s_unpack_from_parser); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(0, 107, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__30);
  __Pyx_GIVEREF(__pyx_tuple__30);
/* … */
  __pyx_t_5 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 107, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Callable); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 107, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_unpack_from, __pyx_t_6) < 0) __PYX_ERR(0, 107, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_size, __pyx_n_u_int) < 0) __PYX_ERR(0, 107, __pyx_L1_error)
  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_READER_TYPE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 107, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_return, __pyx_t_6) < 0) __PYX_ERR(0, 107, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_9dbus_fast_8_private_12unmarshaller_1unpack_parser_factory, 0, __pyx_n_s_unpack_parser_factory, NULL, __pyx_n_s_dbus_fast__private_unmarshaller, __pyx_d, ((PyObject *)__pyx_codeobj__31)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 107, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_6, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_unpack_parser_factory, __pyx_t_6) < 0) __PYX_ERR(0, 107, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_codeobj__31 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__30, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_dbus_fast__private_unmarshal, __pyx_n_s_unpack_parser_factory, 107, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__31)) __PYX_ERR(0, 107, __pyx_L1_error)
/* … */
struct __pyx_obj_9dbus_fast_8_private_12unmarshaller___pyx_scope_struct__unpack_parser_factory {
  PyObject_HEAD
  PyObject *__pyx_v_size;
  PyObject *__pyx_v_unpack_from;
};


 108:     """Build a parser that unpacks the bytes using the given unpack_from function."""
 109: 
+110:     def _unpack_from_parser(self: "Unmarshaller", signature: SignatureType) -> Any:
/* Python wrapper */
static PyObject *__pyx_pw_9dbus_fast_8_private_12unmarshaller_21unpack_parser_factory_1_unpack_from_parser(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_9dbus_fast_8_private_12unmarshaller_21unpack_parser_factory_1_unpack_from_parser = {"_unpack_from_parser", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_9dbus_fast_8_private_12unmarshaller_21unpack_parser_factory_1_unpack_from_parser, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_9dbus_fast_8_private_12unmarshaller_21unpack_parser_factory_1_unpack_from_parser(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *__pyx_v_self = 0;
  CYTHON_UNUSED PyObject *__pyx_v_signature = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_unpack_from_parser (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_signature,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_signature)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_unpack_from_parser", 1, 2, 2, 1); __PYX_ERR(0, 110, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_unpack_from_parser") < 0)) __PYX_ERR(0, 110, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_self = ((struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *)values[0]);
    __pyx_v_signature = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_unpack_from_parser", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 110, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("dbus_fast._private.unmarshaller.unpack_parser_factory._unpack_from_parser", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_self), __pyx_ptype_9dbus_fast_8_private_12unmarshaller_Unmarshaller, 1, "self", 0))) __PYX_ERR(0, 110, __pyx_L1_error)
  __pyx_r = __pyx_pf_9dbus_fast_8_private_12unmarshaller_21unpack_parser_factory__unpack_from_parser(__pyx_self, __pyx_v_self, __pyx_v_signature);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_9dbus_fast_8_private_12unmarshaller_21unpack_parser_factory__unpack_from_parser(PyObject *__pyx_self, struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_signature) {
  struct __pyx_obj_9dbus_fast_8_private_12unmarshaller___pyx_scope_struct__unpack_parser_factory *__pyx_cur_scope;
  struct __pyx_obj_9dbus_fast_8_private_12unmarshaller___pyx_scope_struct__unpack_parser_factory *__pyx_outer_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_unpack_from_parser", 0);
  __pyx_outer_scope = (struct __pyx_obj_9dbus_fast_8_private_12unmarshaller___pyx_scope_struct__unpack_parser_factory *) __Pyx_CyFunction_GetClosure(__pyx_self);
  __pyx_cur_scope = __pyx_outer_scope;
/* … */
  /* 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_7);
  __Pyx_AddTraceback("dbus_fast._private.unmarshaller.unpack_parser_factory._unpack_from_parser", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple_ = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_signature); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 110, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple_);
  __Pyx_GIVEREF(__pyx_tuple_);
/* … */
  __pyx_t_1 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 110, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_self, __pyx_n_u_Unmarshaller) < 0) __PYX_ERR(0, 110, __pyx_L1_error)
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_SignatureType); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 110, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_signature, __pyx_t_2) < 0) __PYX_ERR(0, 110, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Any); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 110, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_return, __pyx_t_2) < 0) __PYX_ERR(0, 110, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_9dbus_fast_8_private_12unmarshaller_21unpack_parser_factory_1_unpack_from_parser, 0, __pyx_n_s_unpack_parser_factory_locals__un, ((PyObject*)__pyx_cur_scope), __pyx_n_s_dbus_fast__private_unmarshaller, __pyx_d, ((PyObject *)__pyx_codeobj__2)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 110, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_2, __pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v__unpack_from_parser = __pyx_t_2;
  __pyx_t_2 = 0;
  __pyx_codeobj__2 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 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_src_dbus_fast__private_unmarshal, __pyx_n_s_unpack_from_parser, 110, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__2)) __PYX_ERR(0, 110, __pyx_L1_error)
+111:         self._pos += size + (-self._pos & (size - 1))  # align
  __pyx_t_1 = __Pyx_PyInt_From_unsigned_int(__pyx_v_self->_pos); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 111, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (unlikely(!__pyx_cur_scope->__pyx_v_size)) { __Pyx_RaiseClosureNameError("size"); __PYX_ERR(0, 111, __pyx_L1_error) }
  __pyx_t_2 = __Pyx_PyInt_From_unsigned_int((-__pyx_v_self->_pos)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 111, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (unlikely(!__pyx_cur_scope->__pyx_v_size)) { __Pyx_RaiseClosureNameError("size"); __PYX_ERR(0, 111, __pyx_L1_error) }
  __pyx_t_3 = __Pyx_PyInt_SubtractObjC(__pyx_cur_scope->__pyx_v_size, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 111, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyNumber_And(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 111, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyNumber_Add(__pyx_cur_scope->__pyx_v_size, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 111, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 111, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_5 = __Pyx_PyInt_As_unsigned_int(__pyx_t_4); if (unlikely((__pyx_t_5 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 111, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_v_self->_pos = __pyx_t_5;
+112:         return unpack_from(self._buf, self._pos - size)[0]
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_v_unpack_from)) { __Pyx_RaiseClosureNameError("unpack_from"); __PYX_ERR(0, 112, __pyx_L1_error) }
  __pyx_t_3 = __Pyx_PyInt_From_unsigned_int(__pyx_v_self->_pos); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 112, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (unlikely(!__pyx_cur_scope->__pyx_v_size)) { __Pyx_RaiseClosureNameError("size"); __PYX_ERR(0, 112, __pyx_L1_error) }
  __pyx_t_1 = PyNumber_Subtract(__pyx_t_3, __pyx_cur_scope->__pyx_v_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 112, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_unpack_from);
  __pyx_t_3 = __pyx_cur_scope->__pyx_v_unpack_from; __pyx_t_2 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && 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_6 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_3)) {
    PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_self->_buf, __pyx_t_1};
    __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 112, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
    PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_self->_buf, __pyx_t_1};
    __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 112, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else
  #endif
  {
    __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 112, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (__pyx_t_2) {
      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2); __pyx_t_2 = NULL;
    }
    __Pyx_INCREF(__pyx_v_self->_buf);
    __Pyx_GIVEREF(__pyx_v_self->_buf);
    PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_v_self->_buf);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 112, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 112, __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;
 113: 
+114:     return _unpack_from_parser
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v__unpack_from_parser);
  __pyx_r = __pyx_v__unpack_from_parser;
  goto __pyx_L0;
 115: 
 116: 
+117: def build_simple_parsers(
/* Python wrapper */
static PyObject *__pyx_pw_9dbus_fast_8_private_12unmarshaller_3build_simple_parsers(PyObject *__pyx_self, PyObject *__pyx_v_endian); /*proto*/
static char __pyx_doc_9dbus_fast_8_private_12unmarshaller_2build_simple_parsers[] = "Build a dict of parsers for simple types.";
static PyMethodDef __pyx_mdef_9dbus_fast_8_private_12unmarshaller_3build_simple_parsers = {"build_simple_parsers", (PyCFunction)__pyx_pw_9dbus_fast_8_private_12unmarshaller_3build_simple_parsers, METH_O, __pyx_doc_9dbus_fast_8_private_12unmarshaller_2build_simple_parsers};
static PyObject *__pyx_pw_9dbus_fast_8_private_12unmarshaller_3build_simple_parsers(PyObject *__pyx_self, PyObject *__pyx_v_endian) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("build_simple_parsers (wrapper)", 0);
  __pyx_r = __pyx_pf_9dbus_fast_8_private_12unmarshaller_2build_simple_parsers(__pyx_self, ((PyObject *)__pyx_v_endian));

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

static PyObject *__pyx_pf_9dbus_fast_8_private_12unmarshaller_2build_simple_parsers(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_endian) {
  PyObject *__pyx_v_parsers = NULL;
  PyObject *__pyx_v_dbus_type = NULL;
  PyObject *__pyx_v_ctype_size = NULL;
  PyObject *__pyx_v_ctype = NULL;
  PyObject *__pyx_v_size = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("build_simple_parsers", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_AddTraceback("dbus_fast._private.unmarshaller.build_simple_parsers", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_parsers);
  __Pyx_XDECREF(__pyx_v_dbus_type);
  __Pyx_XDECREF(__pyx_v_ctype_size);
  __Pyx_XDECREF(__pyx_v_ctype);
  __Pyx_XDECREF(__pyx_v_size);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__32 = PyTuple_Pack(6, __pyx_n_s_endian, __pyx_n_s_parsers, __pyx_n_s_dbus_type, __pyx_n_s_ctype_size, __pyx_n_s_ctype, __pyx_n_s_size); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(0, 117, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__32);
  __Pyx_GIVEREF(__pyx_tuple__32);
/* … */
  __pyx_t_6 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 117, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_endian, __pyx_n_u_int) < 0) __PYX_ERR(0, 117, __pyx_L1_error)
/* … */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9dbus_fast_8_private_12unmarshaller_3build_simple_parsers, 0, __pyx_n_s_build_simple_parsers, NULL, __pyx_n_s_dbus_fast__private_unmarshaller, __pyx_d, ((PyObject *)__pyx_codeobj__33)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 117, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_1, __pyx_t_6);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_build_simple_parsers, __pyx_t_1) < 0) __PYX_ERR(0, 117, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_codeobj__33 = (PyObject*)__Pyx_PyCode_New(1, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__32, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_dbus_fast__private_unmarshal, __pyx_n_s_build_simple_parsers, 117, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__33)) __PYX_ERR(0, 117, __pyx_L1_error)
 118:     endian: int,
+119: ) -> Dict[str, Callable[["Unmarshaller", SignatureType], Any]]:
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_Dict); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Callable); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_SignatureType); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = PyList_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_INCREF(__pyx_n_u_Unmarshaller);
  __Pyx_GIVEREF(__pyx_n_u_Unmarshaller);
  PyList_SET_ITEM(__pyx_t_7, 0, __pyx_n_u_Unmarshaller);
  __Pyx_GIVEREF(__pyx_t_1);
  PyList_SET_ITEM(__pyx_t_7, 1, __pyx_t_1);
  __pyx_t_1 = 0;
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Any); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_1);
  __pyx_t_7 = 0;
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_t_2, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_INCREF(((PyObject *)(&PyUnicode_Type)));
  __Pyx_GIVEREF(((PyObject *)(&PyUnicode_Type)));
  PyTuple_SET_ITEM(__pyx_t_8, 0, ((PyObject *)(&PyUnicode_Type)));
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_t_5, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_return, __pyx_t_1) < 0) __PYX_ERR(0, 117, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 120:     """Build a dict of parsers for simple types."""
+121:     parsers: Dict[str, READER_TYPE] = {}
  __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 121, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_parsers = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
+122:     for dbus_type, ctype_size in DBUS_TO_CTYPE.items():
  __pyx_t_2 = 0;
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_DBUS_TO_CTYPE); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 122, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (unlikely(__pyx_t_5 == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "items");
    __PYX_ERR(0, 122, __pyx_L1_error)
  }
  __pyx_t_6 = __Pyx_dict_iterator(__pyx_t_5, 0, __pyx_n_s_items, (&__pyx_t_3), (&__pyx_t_4)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 122, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_XDECREF(__pyx_t_1);
  __pyx_t_1 = __pyx_t_6;
  __pyx_t_6 = 0;
  while (1) {
    __pyx_t_7 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_3, &__pyx_t_2, &__pyx_t_6, &__pyx_t_5, NULL, __pyx_t_4);
    if (unlikely(__pyx_t_7 == 0)) break;
    if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(0, 122, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_XDECREF_SET(__pyx_v_dbus_type, __pyx_t_6);
    __pyx_t_6 = 0;
    __Pyx_XDECREF_SET(__pyx_v_ctype_size, __pyx_t_5);
    __pyx_t_5 = 0;
+123:         ctype, size = ctype_size
    if ((likely(PyTuple_CheckExact(__pyx_v_ctype_size))) || (PyList_CheckExact(__pyx_v_ctype_size))) {
      PyObject* sequence = __pyx_v_ctype_size;
      Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 123, __pyx_L1_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(0, 123, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 123, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      #endif
    } else {
      Py_ssize_t index = -1;
      __pyx_t_8 = PyObject_GetIter(__pyx_v_ctype_size); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 123, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_9 = Py_TYPE(__pyx_t_8)->tp_iternext;
      index = 0; __pyx_t_5 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_5)) goto __pyx_L5_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_5);
      index = 1; __pyx_t_6 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_6)) goto __pyx_L5_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_6);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) __PYX_ERR(0, 123, __pyx_L1_error)
      __pyx_t_9 = NULL;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      goto __pyx_L6_unpacking_done;
      __pyx_L5_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_9 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 123, __pyx_L1_error)
      __pyx_L6_unpacking_done:;
    }
    __Pyx_XDECREF_SET(__pyx_v_ctype, __pyx_t_5);
    __pyx_t_5 = 0;
    __Pyx_XDECREF_SET(__pyx_v_size, __pyx_t_6);
    __pyx_t_6 = 0;
+124:         size = ctype_size[1]
    __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_ctype_size, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 124, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF_SET(__pyx_v_size, __pyx_t_6);
    __pyx_t_6 = 0;
+125:         parsers[dbus_type] = unpack_parser_factory(
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_unpack_parser_factory); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 125, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
/* … */
    if (unlikely(PyDict_SetItem(__pyx_v_parsers, __pyx_v_dbus_type, __pyx_t_6) < 0)) __PYX_ERR(0, 125, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+126:             Struct(f"{UNPACK_SYMBOL[endian]}{ctype}").unpack_from, size
    __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_Struct); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 126, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_UNPACK_SYMBOL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 126, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_t_11, __pyx_v_endian); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 126, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __pyx_t_11 = __Pyx_PyObject_FormatSimple(__pyx_t_12, __pyx_empty_unicode); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 126, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_12 = __Pyx_PyObject_FormatSimple(__pyx_v_ctype, __pyx_empty_unicode); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 126, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_13 = __Pyx_PyUnicode_Concat(__pyx_t_11, __pyx_t_12); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 126, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_13);
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_12 = NULL;
    if (CYTHON_UNPACK_METHODS && 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_8 = (__pyx_t_12) ? __Pyx_PyObject_Call2Args(__pyx_t_10, __pyx_t_12, __pyx_t_13) : __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_13);
    __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
    if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 126, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_unpack_from); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 126, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_7 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_5)) {
      PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_t_10, __pyx_v_size};
      __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 125, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
      PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_t_10, __pyx_v_size};
      __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 125, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    } else
    #endif
    {
      __pyx_t_13 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 125, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_13);
      if (__pyx_t_8) {
        __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_8); __pyx_t_8 = NULL;
      }
      __Pyx_GIVEREF(__pyx_t_10);
      PyTuple_SET_ITEM(__pyx_t_13, 0+__pyx_t_7, __pyx_t_10);
      __Pyx_INCREF(__pyx_v_size);
      __Pyx_GIVEREF(__pyx_v_size);
      PyTuple_SET_ITEM(__pyx_t_13, 1+__pyx_t_7, __pyx_v_size);
      __pyx_t_10 = 0;
      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_13, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 125, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
    }
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 127:         )
+128:     return parsers
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_parsers);
  __pyx_r = __pyx_v_parsers;
  goto __pyx_L0;
 129: 
 130: 
 131: class MarshallerStreamEndError(Exception):
 132:     """This exception is raised when the end of the stream is reached.
 133: 
 134:     This means more data is expected on the wire that has not yet been
 135:     received. The caller should call unmarshall later when more data is
 136:     available.
 137:     """
 138: 
 139:     pass
 140: 
 141: 
+142: try:
  {
    /*try:*/ {
/* … */
    }
  }
 143:     import cython
 144: except ImportError:
 145:     from ._cython_compat import FAKE_CYTHON as cython
 146: 
 147: #
 148: # Alignment padding is handled with the following formula below
 149: #
 150: # For any align value, the correct padding formula is:
 151: #
 152: #    (align - (pos % align)) % align
 153: #
 154: # However, if align is a power of 2 (always the case here), the slow MOD
 155: # operator can be replaced by a bitwise AND:
 156: #
 157: #    (align - (pos & (align - 1))) & (align - 1)
 158: #
 159: # Which can be simplified to:
 160: #
 161: #    (-pos) & (align - 1)
 162: #
 163: #
+164: class Unmarshaller:
struct __pyx_vtabstruct_9dbus_fast_8_private_12unmarshaller_Unmarshaller {
  PyObject *(*reset)(struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *, int __pyx_skip_dispatch);
  PyObject *(*_read_sock)(struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *, unsigned long);
  PyObject *(*_read_to_pos)(struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *, unsigned long);
  PyObject *(*read_boolean)(struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *, PyObject *, int __pyx_skip_dispatch);
  PyObject *(*_read_boolean)(struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *);
  PyObject *(*read_uint32_unpack)(struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *, PyObject *, int __pyx_skip_dispatch);
  unsigned int (*_read_uint32_unpack)(struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *);
  PyObject *(*read_int16_unpack)(struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *, PyObject *, int __pyx_skip_dispatch);
  int (*_read_int16_unpack)(struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *);
  PyObject *(*read_uint16_unpack)(struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *, PyObject *, int __pyx_skip_dispatch);
  unsigned int (*_read_uint16_unpack)(struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *);
  PyObject *(*read_string_unpack)(struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *, PyObject *, int __pyx_skip_dispatch);
  PyObject *(*_read_string_unpack)(struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *);
  PyObject *(*_read_variant)(struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *);
  PyObject *(*read_array)(struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *, PyObject *, int __pyx_skip_dispatch);
  PyObject *(*_read_array)(struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *, PyObject *);
  PyObject *(*read_signature)(struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *, PyObject *, int __pyx_skip_dispatch);
  PyObject *(*_read_signature)(struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *);
  PyObject *(*_read_header)(struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *);
  PyObject *(*_read_body)(struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *);
  PyObject *(*unmarshall)(struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *, int __pyx_skip_dispatch);
  PyObject *(*header_fields)(struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *, unsigned int);
};
static struct __pyx_vtabstruct_9dbus_fast_8_private_12unmarshaller_Unmarshaller *__pyx_vtabptr_9dbus_fast_8_private_12unmarshaller_Unmarshaller;
 165: 
 166:     __slots__ = (
+167:         "_unix_fds",
  if (PyDict_SetItem((PyObject *)__pyx_ptype_9dbus_fast_8_private_12unmarshaller_Unmarshaller->tp_dict, __pyx_n_s_slots, __pyx_tuple__38) < 0) __PYX_ERR(0, 166, __pyx_L1_error)
  PyType_Modified(__pyx_ptype_9dbus_fast_8_private_12unmarshaller_Unmarshaller);
/* … */
  __pyx_tuple__38 = PyTuple_Pack(17, __pyx_n_u_unix_fds_2, __pyx_n_u_buf, __pyx_n_u_pos, __pyx_n_u_stream_2, __pyx_n_u_sock_2, __pyx_n_u_message_2, __pyx_n_u_readers, __pyx_n_u_body_len, __pyx_n_u_serial_2, __pyx_n_u_header_len, __pyx_n_u_message_type_2, __pyx_n_u_flag, __pyx_n_u_msg_len, __pyx_n_u_uint32_unpack, __pyx_n_u_int16_unpack, __pyx_n_u_uint16_unpack, __pyx_n_u_is_native); if (unlikely(!__pyx_tuple__38)) __PYX_ERR(0, 167, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__38);
  __Pyx_GIVEREF(__pyx_tuple__38);
 168:         "_buf",
 169:         "_pos",
 170:         "_stream",
 171:         "_sock",
 172:         "_message",
 173:         "_readers",
 174:         "_body_len",
 175:         "_serial",
 176:         "_header_len",
 177:         "_message_type",
 178:         "_flag",
 179:         "_msg_len",
 180:         "_uint32_unpack",
 181:         "_int16_unpack",
 182:         "_uint16_unpack",
 183:         "_is_native",
 184:     )
 185: 
+186:     def __init__(self, stream: io.BufferedRWPair, sock: Optional[socket.socket] = None):
/* Python wrapper */
static int __pyx_pw_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_stream = 0;
  PyObject *__pyx_v_sock = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_stream,&__pyx_n_s_sock,0};
    PyObject* values[2] = {0,0};
    values[1] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_stream)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_sock);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 186, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_stream = values[0];
    __pyx_v_sock = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 186, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("dbus_fast._private.unmarshaller.Unmarshaller.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_9dbus_fast_8_private_12unmarshaller_12Unmarshaller___init__(((struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *)__pyx_v_self), __pyx_v_stream, __pyx_v_sock);

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

static int __pyx_pf_9dbus_fast_8_private_12unmarshaller_12Unmarshaller___init__(struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *__pyx_v_self, PyObject *__pyx_v_stream, PyObject *__pyx_v_sock) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("dbus_fast._private.unmarshaller.Unmarshaller.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+187:         self._unix_fds: List[int] = []
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 187, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_unix_fds);
  __Pyx_DECREF(__pyx_v_self->_unix_fds);
  __pyx_v_self->_unix_fds = __pyx_t_1;
  __pyx_t_1 = 0;
+188:         self._buf = bytearray()  # Actual buffer
  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)(&PyByteArray_Type))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 188, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_buf);
  __Pyx_DECREF(__pyx_v_self->_buf);
  __pyx_v_self->_buf = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
+189:         self._stream = stream
  __Pyx_INCREF(__pyx_v_stream);
  __Pyx_GIVEREF(__pyx_v_stream);
  __Pyx_GOTREF(__pyx_v_self->_stream);
  __Pyx_DECREF(__pyx_v_self->_stream);
  __pyx_v_self->_stream = __pyx_v_stream;
+190:         self._sock = sock
  __Pyx_INCREF(__pyx_v_sock);
  __Pyx_GIVEREF(__pyx_v_sock);
  __Pyx_GOTREF(__pyx_v_self->_sock);
  __Pyx_DECREF(__pyx_v_self->_sock);
  __pyx_v_self->_sock = __pyx_v_sock;
+191:         self._message: Optional[Message] = None
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_message);
  __Pyx_DECREF(__pyx_v_self->_message);
  __pyx_v_self->_message = Py_None;
+192:         self._readers: Dict[str, READER_TYPE] = {}
  __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_readers);
  __Pyx_DECREF(__pyx_v_self->_readers);
  __pyx_v_self->_readers = __pyx_t_1;
  __pyx_t_1 = 0;
+193:         self._pos = 0
  __pyx_v_self->_pos = 0;
+194:         self._body_len = 0
  __pyx_v_self->_body_len = 0;
+195:         self._serial = 0
  __pyx_v_self->_serial = 0;
+196:         self._header_len = 0
  __pyx_v_self->_header_len = 0;
+197:         self._message_type = 0
  __pyx_v_self->_message_type = 0;
+198:         self._flag = 0
  __pyx_v_self->_flag = 0;
+199:         self._msg_len = 0
  __pyx_v_self->_msg_len = 0;
+200:         self._is_native = 0
  __pyx_v_self->_is_native = 0;
+201:         self._uint32_unpack: Callable | None = None
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_uint32_unpack);
  __Pyx_DECREF(__pyx_v_self->_uint32_unpack);
  __pyx_v_self->_uint32_unpack = Py_None;
+202:         self._int16_unpack: Callable | None = None
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_int16_unpack);
  __Pyx_DECREF(__pyx_v_self->_int16_unpack);
  __pyx_v_self->_int16_unpack = Py_None;
+203:         self._uint16_unpack: Callable | None = None
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_uint16_unpack);
  __Pyx_DECREF(__pyx_v_self->_uint16_unpack);
  __pyx_v_self->_uint16_unpack = Py_None;
 204: 
+205:     def reset(self) -> None:
static PyObject *__pyx_pw_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_3reset(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_f_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_reset(struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *__pyx_v_self, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("reset", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_reset); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 205, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_3reset)) {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 205, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }
/* … */
  /* 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("dbus_fast._private.unmarshaller.Unmarshaller.reset", __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_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_3reset(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_2reset[] = "Reset the unmarshaller to its initial state.\n\n        Call this before processing a new message.\n        ";
static PyMethodDef __pyx_mdef_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_3reset = {"reset", (PyCFunction)__pyx_pw_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_3reset, METH_NOARGS, __pyx_doc_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_2reset};
static PyObject *__pyx_pw_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_3reset(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("reset (wrapper)", 0);
  __pyx_r = __pyx_pf_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_2reset(((struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *)__pyx_v_self));

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

static PyObject *__pyx_pf_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_2reset(struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("reset", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_reset(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 205, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("dbus_fast._private.unmarshaller.Unmarshaller.reset", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__39 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__39)) __PYX_ERR(0, 205, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__39);
  __Pyx_GIVEREF(__pyx_tuple__39);
/* … */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_3reset, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Unmarshaller_reset, NULL, __pyx_n_s_dbus_fast__private_unmarshaller, __pyx_d, ((PyObject *)__pyx_codeobj__40)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 205, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_9dbus_fast_8_private_12unmarshaller_Unmarshaller->tp_dict, __pyx_n_s_reset, __pyx_t_1) < 0) __PYX_ERR(0, 205, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  PyType_Modified(__pyx_ptype_9dbus_fast_8_private_12unmarshaller_Unmarshaller);
  __pyx_codeobj__40 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__39, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_dbus_fast__private_unmarshal, __pyx_n_s_reset, 205, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__40)) __PYX_ERR(0, 205, __pyx_L1_error)
 206:         """Reset the unmarshaller to its initial state.
 207: 
 208:         Call this before processing a new message.
 209:         """
+210:         self._unix_fds = []
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 210, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_unix_fds);
  __Pyx_DECREF(__pyx_v_self->_unix_fds);
  __pyx_v_self->_unix_fds = __pyx_t_1;
  __pyx_t_1 = 0;
+211:         self._buf.clear()
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_buf, __pyx_n_s_clear); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 211, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 211, __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;
+212:         self._message = None
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_message);
  __Pyx_DECREF(__pyx_v_self->_message);
  __pyx_v_self->_message = Py_None;
+213:         self._pos = 0
  __pyx_v_self->_pos = 0;
+214:         self._body_len = 0
  __pyx_v_self->_body_len = 0;
+215:         self._serial = 0
  __pyx_v_self->_serial = 0;
+216:         self._header_len = 0
  __pyx_v_self->_header_len = 0;
+217:         self._message_type = 0
  __pyx_v_self->_message_type = 0;
+218:         self._flag = 0
  __pyx_v_self->_flag = 0;
+219:         self._msg_len = 0
  __pyx_v_self->_msg_len = 0;
+220:         self._is_native = 0
  __pyx_v_self->_is_native = 0;
 221:         # No need to reset the unpack functions, they are set in _read_header
 222:         # every time a new message is processed.
 223: 
 224:     @property
+225:     def message(self) -> Message:
/* Python wrapper */
static PyObject *__pyx_pw_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_7message_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_7message_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_7message___get__(((struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *)__pyx_v_self));

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

static PyObject *__pyx_pf_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_7message___get__(struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
/* … */
  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 226:         """Return the message that has been unmarshalled."""
+227:         return self._message
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_message);
  __pyx_r = __pyx_v_self->_message;
  goto __pyx_L0;
 228: 
+229:     def _read_sock(self, length: int) -> bytes:
static PyObject *__pyx_f_9dbus_fast_8_private_12unmarshaller_12Unmarshaller__read_sock(struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *__pyx_v_self, unsigned long __pyx_v_length) {
  PyObject *__pyx_v_unix_fd_list = NULL;
  PyObject *__pyx_v_msg = NULL;
  PyObject *__pyx_v_ancdata = NULL;
  CYTHON_UNUSED PyObject *__pyx_v__ = NULL;
  PyObject *__pyx_v_level = NULL;
  PyObject *__pyx_v_type_ = NULL;
  PyObject *__pyx_v_data = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_read_sock", 0);
/* … */
  /* 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_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("dbus_fast._private.unmarshaller.Unmarshaller._read_sock", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_unix_fd_list);
  __Pyx_XDECREF(__pyx_v_msg);
  __Pyx_XDECREF(__pyx_v_ancdata);
  __Pyx_XDECREF(__pyx_v__);
  __Pyx_XDECREF(__pyx_v_level);
  __Pyx_XDECREF(__pyx_v_type_);
  __Pyx_XDECREF(__pyx_v_data);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 230:         """reads from the socket, storing any fds sent and handling errors
 231:         from the read itself"""
+232:         unix_fd_list = array.array("i")
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  if (CYTHON_UNPACK_METHODS && 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_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_n_u_i) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_n_u_i);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_unix_fd_list = __pyx_t_1;
  __pyx_t_1 = 0;
 233: 
+234:         try:
  {
    /*try:*/ {
/* … */
    }
    __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_L8_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 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;
/* … */
    __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_L1_error;
    __pyx_L8_try_end:;
  }
+235:             msg, ancdata, *_ = self._sock.recvmsg(
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_sock, __pyx_n_s_recvmsg); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 235, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_3);
/* … */
      }
      __pyx_t_2 = PySequence_List(__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 235, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_v_msg = __pyx_t_3;
      __pyx_t_3 = 0;
      __pyx_v_ancdata = __pyx_t_11;
      __pyx_t_11 = 0;
      __pyx_v__ = ((PyObject*)__pyx_t_2);
      __pyx_t_2 = 0;
+236:                 length, socket.CMSG_LEN(MAX_UNIX_FDS * unix_fd_list.itemsize)
      __pyx_t_2 = __Pyx_PyInt_From_unsigned_long(__pyx_v_length); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 236, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_socket); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 236, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_CMSG_LEN); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 236, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_MAX_UNIX_FDS); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 236, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_unix_fd_list, __pyx_n_s_itemsize); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 236, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_11 = PyNumber_Multiply(__pyx_t_8, __pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 236, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_11);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __pyx_t_10 = NULL;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) {
        __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9);
        if (likely(__pyx_t_10)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
          __Pyx_INCREF(__pyx_t_10);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_9, function);
        }
      }
      __pyx_t_7 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_10, __pyx_t_11) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_11);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 236, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_9 = NULL;
      __pyx_t_12 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_3);
        if (likely(__pyx_t_9)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
          __Pyx_INCREF(__pyx_t_9);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_3, function);
          __pyx_t_12 = 1;
        }
      }
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_3)) {
        PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_2, __pyx_t_7};
        __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_12, 2+__pyx_t_12); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 235, __pyx_L3_error)
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
        PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_2, __pyx_t_7};
        __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_12, 2+__pyx_t_12); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 235, __pyx_L3_error)
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      } else
      #endif
      {
        __pyx_t_11 = PyTuple_New(2+__pyx_t_12); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 235, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_11);
        if (__pyx_t_9) {
          __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9); __pyx_t_9 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_2);
        PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_12, __pyx_t_2);
        __Pyx_GIVEREF(__pyx_t_7);
        PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_12, __pyx_t_7);
        __pyx_t_2 = 0;
        __pyx_t_7 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 235, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      }
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      {
        Py_ssize_t index = -1;
        PyObject** temps[3] = {&__pyx_t_3,&__pyx_t_11};
        __pyx_t_7 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 235, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_13 = Py_TYPE(__pyx_t_7)->tp_iternext;
        for (index=0; index < 2; index++) {
          PyObject* item = __pyx_t_13(__pyx_t_7); if (unlikely(!item)) goto __pyx_L9_unpacking_failed;
          __Pyx_GOTREF(item);
          *(temps[index]) = item;
        }
        goto __pyx_L10_unpacking_done;
        __pyx_L9_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_13 = NULL;
        if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
        __PYX_ERR(0, 235, __pyx_L3_error)
        __pyx_L10_unpacking_done:;
 237:             )
+238:         except BlockingIOError:
    __Pyx_ErrFetch(&__pyx_t_1, &__pyx_t_2, &__pyx_t_11);
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_BlockingIOError); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 238, __pyx_L5_except_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_12 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_1, __pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_ErrRestore(__pyx_t_1, __pyx_t_2, __pyx_t_11);
    __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_11 = 0;
    if (__pyx_t_12) {
      __Pyx_AddTraceback("dbus_fast._private.unmarshaller.Unmarshaller._read_sock", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_11, &__pyx_t_2, &__pyx_t_1) < 0) __PYX_ERR(0, 238, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_11);
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GOTREF(__pyx_t_1);
+239:             raise MarshallerStreamEndError()
      __pyx_t_3 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9dbus_fast_8_private_12unmarshaller_MarshallerStreamEndError)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 239, __pyx_L5_except_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(0, 239, __pyx_L5_except_error)
    }
    goto __pyx_L5_except_error;
    __pyx_L5_except_error:;
 240: 
+241:         for level, type_, data in ancdata:
  if (likely(PyList_CheckExact(__pyx_v_ancdata)) || PyTuple_CheckExact(__pyx_v_ancdata)) {
    __pyx_t_1 = __pyx_v_ancdata; __Pyx_INCREF(__pyx_t_1); __pyx_t_14 = 0;
    __pyx_t_15 = NULL;
  } else {
    __pyx_t_14 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_ancdata); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 241, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_15 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 241, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_15)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        if (__pyx_t_14 >= PyList_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_14); __Pyx_INCREF(__pyx_t_2); __pyx_t_14++; if (unlikely(0 < 0)) __PYX_ERR(0, 241, __pyx_L1_error)
        #else
        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_14); __pyx_t_14++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 241, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        #endif
      } else {
        if (__pyx_t_14 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_14); __Pyx_INCREF(__pyx_t_2); __pyx_t_14++; if (unlikely(0 < 0)) __PYX_ERR(0, 241, __pyx_L1_error)
        #else
        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_14); __pyx_t_14++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 241, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        #endif
      }
    } else {
      __pyx_t_2 = __pyx_t_15(__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(0, 241, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_2);
    }
    if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) {
      PyObject* sequence = __pyx_t_2;
      Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
      if (unlikely(size != 3)) {
        if (size > 3) __Pyx_RaiseTooManyValuesError(3);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 241, __pyx_L1_error)
      }
      #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_11 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); 
        __pyx_t_7 = PyTuple_GET_ITEM(sequence, 2); 
      } else {
        __pyx_t_11 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_3 = PyList_GET_ITEM(sequence, 1); 
        __pyx_t_7 = PyList_GET_ITEM(sequence, 2); 
      }
      __Pyx_INCREF(__pyx_t_11);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_7);
      #else
      __pyx_t_11 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 241, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
      __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 241, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_7 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 241, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      #endif
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_9 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 241, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_13 = Py_TYPE(__pyx_t_9)->tp_iternext;
      index = 0; __pyx_t_11 = __pyx_t_13(__pyx_t_9); if (unlikely(!__pyx_t_11)) goto __pyx_L15_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_11);
      index = 1; __pyx_t_3 = __pyx_t_13(__pyx_t_9); if (unlikely(!__pyx_t_3)) goto __pyx_L15_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_3);
      index = 2; __pyx_t_7 = __pyx_t_13(__pyx_t_9); if (unlikely(!__pyx_t_7)) goto __pyx_L15_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_7);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_13(__pyx_t_9), 3) < 0) __PYX_ERR(0, 241, __pyx_L1_error)
      __pyx_t_13 = NULL;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      goto __pyx_L16_unpacking_done;
      __pyx_L15_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_13 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 241, __pyx_L1_error)
      __pyx_L16_unpacking_done:;
    }
    __Pyx_XDECREF_SET(__pyx_v_level, __pyx_t_11);
    __pyx_t_11 = 0;
    __Pyx_XDECREF_SET(__pyx_v_type_, __pyx_t_3);
    __pyx_t_3 = 0;
    __Pyx_XDECREF_SET(__pyx_v_data, __pyx_t_7);
    __pyx_t_7 = 0;
/* … */
    __pyx_L13_continue:;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+242:             if not (level == socket.SOL_SOCKET and type_ == socket.SCM_RIGHTS):
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_socket); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 242, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_SOL_SOCKET); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 242, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = PyObject_RichCompare(__pyx_v_level, __pyx_t_7, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 242, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_17 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_17 < 0)) __PYX_ERR(0, 242, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (__pyx_t_17) {
    } else {
      __pyx_t_16 = __pyx_t_17;
      goto __pyx_L18_bool_binop_done;
    }
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_socket); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 242, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_SCM_RIGHTS); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 242, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = PyObject_RichCompare(__pyx_v_type_, __pyx_t_7, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 242, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_17 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_17 < 0)) __PYX_ERR(0, 242, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_16 = __pyx_t_17;
    __pyx_L18_bool_binop_done:;
    __pyx_t_17 = ((!__pyx_t_16) != 0);
    if (__pyx_t_17) {
/* … */
    }
+243:                 continue
      goto __pyx_L13_continue;
+244:             unix_fd_list.frombytes(
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_unix_fd_list, __pyx_n_s_frombytes); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 244, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
+245:                 data[: len(data) - (len(data) % unix_fd_list.itemsize)]
    __pyx_t_18 = PyObject_Length(__pyx_v_data); if (unlikely(__pyx_t_18 == ((Py_ssize_t)-1))) __PYX_ERR(0, 245, __pyx_L1_error)
    __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_18); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 245, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_18 = PyObject_Length(__pyx_v_data); if (unlikely(__pyx_t_18 == ((Py_ssize_t)-1))) __PYX_ERR(0, 245, __pyx_L1_error)
    __pyx_t_11 = PyInt_FromSsize_t(__pyx_t_18); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 245, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_unix_fd_list, __pyx_n_s_itemsize); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 245, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_10 = PyNumber_Remainder(__pyx_t_11, __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 245, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_t_9 = PyNumber_Subtract(__pyx_t_3, __pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 245, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __pyx_t_10 = __Pyx_PyObject_GetSlice(__pyx_v_data, 0, 0, NULL, &__pyx_t_9, NULL, 0, 0, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 245, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_t_9 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(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_2 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_9, __pyx_t_10) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_10);
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 244, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 246:             )
+247:             self._unix_fds.extend(list(unix_fd_list))
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_unix_fds, __pyx_n_s_extend); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 247, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_10 = PySequence_List(__pyx_v_unix_fd_list); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 247, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_9 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(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_2 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_9, __pyx_t_10) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_10);
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 247, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 248: 
+249:         return msg
  __Pyx_XDECREF(__pyx_r);
  if (!(likely(PyBytes_CheckExact(__pyx_v_msg))||((__pyx_v_msg) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_msg)->tp_name), 0))) __PYX_ERR(0, 249, __pyx_L1_error)
  __Pyx_INCREF(__pyx_v_msg);
  __pyx_r = ((PyObject*)__pyx_v_msg);
  goto __pyx_L0;
 250: 
+251:     def _read_to_pos(self, pos: int) -> None:
static PyObject *__pyx_f_9dbus_fast_8_private_12unmarshaller_12Unmarshaller__read_to_pos(struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *__pyx_v_self, unsigned long __pyx_v_pos) {
  unsigned long __pyx_v_start_len;
  unsigned long __pyx_v_missing_bytes;
  PyObject *__pyx_v_data = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_read_to_pos", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("dbus_fast._private.unmarshaller.Unmarshaller._read_to_pos", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_data);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 252:         """
 253:         Read from underlying socket into buffer.
 254: 
 255:         Raises MarshallerStreamEndError if there is not enough data to be read.
 256: 
 257:         :arg pos:
 258:             The pos to read to. If not enough bytes are available in the
 259:             buffer, read more from it.
 260: 
 261:         :returns:
 262:             None
 263:         """
+264:         start_len = len(self._buf)
  __pyx_t_1 = __pyx_v_self->_buf;
  __Pyx_INCREF(__pyx_t_1);
  if (unlikely(__pyx_t_1 == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(0, 264, __pyx_L1_error)
  }
  __pyx_t_2 = PyByteArray_GET_SIZE(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 264, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_start_len = __pyx_t_2;
+265:         missing_bytes = pos - (start_len - self._pos)
  __pyx_v_missing_bytes = (__pyx_v_pos - (__pyx_v_start_len - __pyx_v_self->_pos));
+266:         if self._sock is None:
  __pyx_t_3 = (__pyx_v_self->_sock == Py_None);
  __pyx_t_4 = (__pyx_t_3 != 0);
  if (__pyx_t_4) {
/* … */
    goto __pyx_L3;
  }
+267:             data = self._stream.read(missing_bytes)
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_stream, __pyx_n_s_read); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 267, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyInt_From_unsigned_long(__pyx_v_missing_bytes); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 267, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
      }
    }
    __pyx_t_1 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_7, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 267, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (!(likely(PyBytes_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 267, __pyx_L1_error)
    __pyx_v_data = ((PyObject*)__pyx_t_1);
    __pyx_t_1 = 0;
 268:         else:
+269:             data = self._read_sock(missing_bytes)
  /*else*/ {
    __pyx_t_1 = ((struct __pyx_vtabstruct_9dbus_fast_8_private_12unmarshaller_Unmarshaller *)__pyx_v_self->__pyx_vtab)->_read_sock(__pyx_v_self, __pyx_v_missing_bytes); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 269, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_v_data = ((PyObject*)__pyx_t_1);
    __pyx_t_1 = 0;
  }
  __pyx_L3:;
+270:         if data == b"":
  __pyx_t_4 = (__Pyx_PyBytes_Equals(__pyx_v_data, __pyx_kp_b__3, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 270, __pyx_L1_error)
  __pyx_t_3 = (__pyx_t_4 != 0);
  if (unlikely(__pyx_t_3)) {
/* … */
  }
+271:             raise EOFError()
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_builtin_EOFError); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 271, __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(0, 271, __pyx_L1_error)
+272:         if data is None:
  __pyx_t_3 = (__pyx_v_data == ((PyObject*)Py_None));
  __pyx_t_4 = (__pyx_t_3 != 0);
  if (unlikely(__pyx_t_4)) {
/* … */
  }
+273:             raise MarshallerStreamEndError()
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9dbus_fast_8_private_12unmarshaller_MarshallerStreamEndError)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 273, __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(0, 273, __pyx_L1_error)
+274:         self._buf += data
  __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_self->_buf, __pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 274, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_buf);
  __Pyx_DECREF(__pyx_v_self->_buf);
  __pyx_v_self->_buf = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
+275:         if len(data) + start_len != pos:
  if (unlikely(__pyx_v_data == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(0, 275, __pyx_L1_error)
  }
  __pyx_t_2 = PyBytes_GET_SIZE(__pyx_v_data); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 275, __pyx_L1_error)
  __pyx_t_4 = (((__pyx_t_2 + __pyx_v_start_len) != __pyx_v_pos) != 0);
  if (unlikely(__pyx_t_4)) {
/* … */
  }
+276:             raise MarshallerStreamEndError()
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_9dbus_fast_8_private_12unmarshaller_MarshallerStreamEndError)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 276, __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(0, 276, __pyx_L1_error)
 277: 
+278:     def read_uint32_unpack(self, type_: SignatureType) -> int:
static PyObject *__pyx_pw_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_5read_uint32_unpack(PyObject *__pyx_v_self, PyObject *__pyx_v_type_); /*proto*/
static PyObject *__pyx_f_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_read_uint32_unpack(struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_type_, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("read_uint32_unpack", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_read_uint32_unpack); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 278, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_5read_uint32_unpack)) {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_type_) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_type_);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 278, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }
/* … */
  /* 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("dbus_fast._private.unmarshaller.Unmarshaller.read_uint32_unpack", __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_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_5read_uint32_unpack(PyObject *__pyx_v_self, PyObject *__pyx_v_type_); /*proto*/
static PyMethodDef __pyx_mdef_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_5read_uint32_unpack = {"read_uint32_unpack", (PyCFunction)__pyx_pw_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_5read_uint32_unpack, METH_O, 0};
static PyObject *__pyx_pw_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_5read_uint32_unpack(PyObject *__pyx_v_self, PyObject *__pyx_v_type_) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("read_uint32_unpack (wrapper)", 0);
  __pyx_r = __pyx_pf_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_4read_uint32_unpack(((struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *)__pyx_v_self), ((PyObject *)__pyx_v_type_));

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

static PyObject *__pyx_pf_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_4read_uint32_unpack(struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *__pyx_v_self, PyObject *__pyx_v_type_) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("read_uint32_unpack", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_read_uint32_unpack(__pyx_v_self, __pyx_v_type_, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 278, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("dbus_fast._private.unmarshaller.Unmarshaller.read_uint32_unpack", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__41 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_type); if (unlikely(!__pyx_tuple__41)) __PYX_ERR(0, 278, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__41);
  __Pyx_GIVEREF(__pyx_tuple__41);
/* … */
  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 278, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_SignatureType); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 278, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_type, __pyx_t_6) < 0) __PYX_ERR(0, 278, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_5read_uint32_unpack, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Unmarshaller_read_uint32_unpack, NULL, __pyx_n_s_dbus_fast__private_unmarshaller, __pyx_d, ((PyObject *)__pyx_codeobj__42)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 278, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_6, __pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_9dbus_fast_8_private_12unmarshaller_Unmarshaller->tp_dict, __pyx_n_s_read_uint32_unpack, __pyx_t_6) < 0) __PYX_ERR(0, 278, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  PyType_Modified(__pyx_ptype_9dbus_fast_8_private_12unmarshaller_Unmarshaller);
  __pyx_codeobj__42 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__41, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_dbus_fast__private_unmarshal, __pyx_n_s_read_uint32_unpack, 278, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__42)) __PYX_ERR(0, 278, __pyx_L1_error)
+279:         return self._read_uint32_unpack()
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_unsigned_int(((struct __pyx_vtabstruct_9dbus_fast_8_private_12unmarshaller_Unmarshaller *)__pyx_v_self->__pyx_vtab)->_read_uint32_unpack(__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 279, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;
 280: 
+281:     def _read_uint32_unpack(self) -> int:
static unsigned int __pyx_f_9dbus_fast_8_private_12unmarshaller_12Unmarshaller__read_uint32_unpack(struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *__pyx_v_self) {
  unsigned int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_read_uint32_unpack", 0);
/* … */
  /* 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_9);
  __Pyx_WriteUnraisable("dbus_fast._private.unmarshaller.Unmarshaller._read_uint32_unpack", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+282:         self._pos += UINT32_SIZE + (-self._pos & (UINT32_SIZE - 1))  # align
  __pyx_v_self->_pos = (__pyx_v_self->_pos + (__pyx_v_9dbus_fast_8_private_12unmarshaller_UINT32_SIZE + ((-__pyx_v_self->_pos) & (__pyx_v_9dbus_fast_8_private_12unmarshaller_UINT32_SIZE - 1))));
+283:         if self._is_native and cython.compiled:
  __pyx_t_2 = (__pyx_v_self->_is_native != 0);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (1 != 0);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {
/* … */
  }
+284:             return _cast_uint32_native(  # pragma: no cover
    __pyx_r = __pyx_f_9dbus_fast_8_private_12unmarshaller__cast_uint32_native(__pyx_t_3, (__pyx_v_self->_pos - __pyx_v_9dbus_fast_8_private_12unmarshaller_UINT32_SIZE));
    goto __pyx_L0;
+285:                 self._buf, self._pos - UINT32_SIZE
    __pyx_t_3 = __Pyx_PyObject_AsString(__pyx_v_self->_buf); if (unlikely((!__pyx_t_3) && PyErr_Occurred())) __PYX_ERR(0, 285, __pyx_L1_error)
 286:             )
+287:         return self._uint32_unpack(self._buf, self._pos - UINT32_SIZE)[0]
  __pyx_t_5 = __Pyx_PyInt_From_unsigned_int((__pyx_v_self->_pos - __pyx_v_9dbus_fast_8_private_12unmarshaller_UINT32_SIZE)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 287, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(__pyx_v_self->_uint32_unpack);
  __pyx_t_6 = __pyx_v_self->_uint32_unpack; __pyx_t_7 = NULL;
  __pyx_t_8 = 0;
  if (CYTHON_UNPACK_METHODS && 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;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_6)) {
    PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_self->_buf, __pyx_t_5};
    __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 287, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
    PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_self->_buf, __pyx_t_5};
    __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 287, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  } else
  #endif
  {
    __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 287, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    if (__pyx_t_7) {
      __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL;
    }
    __Pyx_INCREF(__pyx_v_self->_buf);
    __Pyx_GIVEREF(__pyx_v_self->_buf);
    PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_v_self->_buf);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_9, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 287, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 287, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_10 = __Pyx_PyInt_As_unsigned_int(__pyx_t_6); if (unlikely((__pyx_t_10 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 287, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_r = __pyx_t_10;
  goto __pyx_L0;
 288: 
+289:     def read_uint16_unpack(self, type_: SignatureType) -> int:
static PyObject *__pyx_pw_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_7read_uint16_unpack(PyObject *__pyx_v_self, PyObject *__pyx_v_type_); /*proto*/
static PyObject *__pyx_f_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_read_uint16_unpack(struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_type_, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("read_uint16_unpack", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_read_uint16_unpack); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 289, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_7read_uint16_unpack)) {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_type_) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_type_);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 289, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }
/* … */
  /* 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("dbus_fast._private.unmarshaller.Unmarshaller.read_uint16_unpack", __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_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_7read_uint16_unpack(PyObject *__pyx_v_self, PyObject *__pyx_v_type_); /*proto*/
static PyMethodDef __pyx_mdef_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_7read_uint16_unpack = {"read_uint16_unpack", (PyCFunction)__pyx_pw_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_7read_uint16_unpack, METH_O, 0};
static PyObject *__pyx_pw_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_7read_uint16_unpack(PyObject *__pyx_v_self, PyObject *__pyx_v_type_) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("read_uint16_unpack (wrapper)", 0);
  __pyx_r = __pyx_pf_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_6read_uint16_unpack(((struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *)__pyx_v_self), ((PyObject *)__pyx_v_type_));

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

static PyObject *__pyx_pf_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_6read_uint16_unpack(struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *__pyx_v_self, PyObject *__pyx_v_type_) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("read_uint16_unpack", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_read_uint16_unpack(__pyx_v_self, __pyx_v_type_, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 289, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("dbus_fast._private.unmarshaller.Unmarshaller.read_uint16_unpack", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__43 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_type); if (unlikely(!__pyx_tuple__43)) __PYX_ERR(0, 289, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__43);
  __Pyx_GIVEREF(__pyx_tuple__43);
/* … */
  __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 289, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_SignatureType); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 289, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_type, __pyx_t_1) < 0) __PYX_ERR(0, 289, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_7read_uint16_unpack, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Unmarshaller_read_uint16_unpack, NULL, __pyx_n_s_dbus_fast__private_unmarshaller, __pyx_d, ((PyObject *)__pyx_codeobj__44)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 289, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_1, __pyx_t_6);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_9dbus_fast_8_private_12unmarshaller_Unmarshaller->tp_dict, __pyx_n_s_read_uint16_unpack, __pyx_t_1) < 0) __PYX_ERR(0, 289, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  PyType_Modified(__pyx_ptype_9dbus_fast_8_private_12unmarshaller_Unmarshaller);
  __pyx_codeobj__44 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__43, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_dbus_fast__private_unmarshal, __pyx_n_s_read_uint16_unpack, 289, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__44)) __PYX_ERR(0, 289, __pyx_L1_error)
+290:         return self._read_uint16_unpack()
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_unsigned_int(((struct __pyx_vtabstruct_9dbus_fast_8_private_12unmarshaller_Unmarshaller *)__pyx_v_self->__pyx_vtab)->_read_uint16_unpack(__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 290, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;
 291: 
+292:     def _read_uint16_unpack(self) -> int:
static unsigned int __pyx_f_9dbus_fast_8_private_12unmarshaller_12Unmarshaller__read_uint16_unpack(struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *__pyx_v_self) {
  unsigned int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_read_uint16_unpack", 0);
/* … */
  /* 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_9);
  __Pyx_WriteUnraisable("dbus_fast._private.unmarshaller.Unmarshaller._read_uint16_unpack", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+293:         self._pos += UINT16_SIZE + (-self._pos & (UINT16_SIZE - 1))  # align
  __pyx_v_self->_pos = (__pyx_v_self->_pos + (__pyx_v_9dbus_fast_8_private_12unmarshaller_UINT16_SIZE + ((-__pyx_v_self->_pos) & (__pyx_v_9dbus_fast_8_private_12unmarshaller_UINT16_SIZE - 1))));
+294:         if self._is_native and cython.compiled:
  __pyx_t_2 = (__pyx_v_self->_is_native != 0);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (1 != 0);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {
/* … */
  }
+295:             return _cast_uint16_native(  # pragma: no cover
    __pyx_r = __pyx_f_9dbus_fast_8_private_12unmarshaller__cast_uint16_native(__pyx_t_3, (__pyx_v_self->_pos - __pyx_v_9dbus_fast_8_private_12unmarshaller_UINT16_SIZE));
    goto __pyx_L0;
+296:                 self._buf, self._pos - UINT16_SIZE
    __pyx_t_3 = __Pyx_PyObject_AsString(__pyx_v_self->_buf); if (unlikely((!__pyx_t_3) && PyErr_Occurred())) __PYX_ERR(0, 296, __pyx_L1_error)
 297:             )
+298:         return self._uint16_unpack(self._buf, self._pos - UINT16_SIZE)[0]
  __pyx_t_5 = __Pyx_PyInt_From_unsigned_int((__pyx_v_self->_pos - __pyx_v_9dbus_fast_8_private_12unmarshaller_UINT16_SIZE)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 298, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(__pyx_v_self->_uint16_unpack);
  __pyx_t_6 = __pyx_v_self->_uint16_unpack; __pyx_t_7 = NULL;
  __pyx_t_8 = 0;
  if (CYTHON_UNPACK_METHODS && 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;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_6)) {
    PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_self->_buf, __pyx_t_5};
    __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 298, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
    PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_self->_buf, __pyx_t_5};
    __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 298, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  } else
  #endif
  {
    __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 298, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    if (__pyx_t_7) {
      __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL;
    }
    __Pyx_INCREF(__pyx_v_self->_buf);
    __Pyx_GIVEREF(__pyx_v_self->_buf);
    PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_v_self->_buf);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_9, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 298, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 298, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_10 = __Pyx_PyInt_As_unsigned_int(__pyx_t_6); if (unlikely((__pyx_t_10 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 298, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_r = __pyx_t_10;
  goto __pyx_L0;
 299: 
+300:     def read_int16_unpack(self, type_: SignatureType) -> int:
static PyObject *__pyx_pw_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_9read_int16_unpack(PyObject *__pyx_v_self, PyObject *__pyx_v_type_); /*proto*/
static PyObject *__pyx_f_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_read_int16_unpack(struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_type_, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("read_int16_unpack", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_read_int16_unpack); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 300, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_9read_int16_unpack)) {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_type_) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_type_);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 300, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }
/* … */
  /* 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("dbus_fast._private.unmarshaller.Unmarshaller.read_int16_unpack", __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_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_9read_int16_unpack(PyObject *__pyx_v_self, PyObject *__pyx_v_type_); /*proto*/
static PyMethodDef __pyx_mdef_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_9read_int16_unpack = {"read_int16_unpack", (PyCFunction)__pyx_pw_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_9read_int16_unpack, METH_O, 0};
static PyObject *__pyx_pw_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_9read_int16_unpack(PyObject *__pyx_v_self, PyObject *__pyx_v_type_) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("read_int16_unpack (wrapper)", 0);
  __pyx_r = __pyx_pf_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_8read_int16_unpack(((struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *)__pyx_v_self), ((PyObject *)__pyx_v_type_));

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

static PyObject *__pyx_pf_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_8read_int16_unpack(struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *__pyx_v_self, PyObject *__pyx_v_type_) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("read_int16_unpack", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_read_int16_unpack(__pyx_v_self, __pyx_v_type_, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 300, __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("dbus_fast._private.unmarshaller.Unmarshaller.read_int16_unpack", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__45 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_type); if (unlikely(!__pyx_tuple__45)) __PYX_ERR(0, 300, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__45);
  __Pyx_GIVEREF(__pyx_tuple__45);
/* … */
  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 300, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_SignatureType); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 300, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_type, __pyx_t_6) < 0) __PYX_ERR(0, 300, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_9read_int16_unpack, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Unmarshaller_read_int16_unpack, NULL, __pyx_n_s_dbus_fast__private_unmarshaller, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 300, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_6, __pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_9dbus_fast_8_private_12unmarshaller_Unmarshaller->tp_dict, __pyx_n_s_read_int16_unpack, __pyx_t_6) < 0) __PYX_ERR(0, 300, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  PyType_Modified(__pyx_ptype_9dbus_fast_8_private_12unmarshaller_Unmarshaller);
  __pyx_codeobj__46 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__45, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_dbus_fast__private_unmarshal, __pyx_n_s_read_int16_unpack, 300, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__46)) __PYX_ERR(0, 300, __pyx_L1_error)
+301:         return self._read_int16_unpack()
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(((struct __pyx_vtabstruct_9dbus_fast_8_private_12unmarshaller_Unmarshaller *)__pyx_v_self->__pyx_vtab)->_read_int16_unpack(__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 301, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;
 302: 
+303:     def _read_int16_unpack(self) -> int:
static int __pyx_f_9dbus_fast_8_private_12unmarshaller_12Unmarshaller__read_int16_unpack(struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_read_int16_unpack", 0);
/* … */
  /* 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_9);
  __Pyx_WriteUnraisable("dbus_fast._private.unmarshaller.Unmarshaller._read_int16_unpack", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+304:         self._pos += INT16_SIZE + (-self._pos & (INT16_SIZE - 1))  # align
  __pyx_v_self->_pos = (__pyx_v_self->_pos + (__pyx_v_9dbus_fast_8_private_12unmarshaller_INT16_SIZE + ((-__pyx_v_self->_pos) & (__pyx_v_9dbus_fast_8_private_12unmarshaller_INT16_SIZE - 1))));
+305:         if self._is_native and cython.compiled:
  __pyx_t_2 = (__pyx_v_self->_is_native != 0);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (1 != 0);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {
/* … */
  }
+306:             return _cast_int16_native(  # pragma: no cover
    __pyx_r = __pyx_f_9dbus_fast_8_private_12unmarshaller__cast_int16_native(__pyx_t_3, (__pyx_v_self->_pos - __pyx_v_9dbus_fast_8_private_12unmarshaller_INT16_SIZE));
    goto __pyx_L0;
+307:                 self._buf, self._pos - INT16_SIZE
    __pyx_t_3 = __Pyx_PyObject_AsString(__pyx_v_self->_buf); if (unlikely((!__pyx_t_3) && PyErr_Occurred())) __PYX_ERR(0, 307, __pyx_L1_error)
 308:             )
+309:         return self._int16_unpack(self._buf, self._pos - INT16_SIZE)[0]
  __pyx_t_5 = __Pyx_PyInt_From_unsigned_int((__pyx_v_self->_pos - __pyx_v_9dbus_fast_8_private_12unmarshaller_INT16_SIZE)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 309, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(__pyx_v_self->_int16_unpack);
  __pyx_t_6 = __pyx_v_self->_int16_unpack; __pyx_t_7 = NULL;
  __pyx_t_8 = 0;
  if (CYTHON_UNPACK_METHODS && 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;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_6)) {
    PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_self->_buf, __pyx_t_5};
    __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 309, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
    PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_self->_buf, __pyx_t_5};
    __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 309, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  } else
  #endif
  {
    __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 309, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    if (__pyx_t_7) {
      __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL;
    }
    __Pyx_INCREF(__pyx_v_self->_buf);
    __Pyx_GIVEREF(__pyx_v_self->_buf);
    PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_v_self->_buf);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_9, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 309, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 309, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_8 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 309, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_r = __pyx_t_8;
  goto __pyx_L0;
 310: 
+311:     def read_boolean(self, type_: SignatureType) -> bool:
static PyObject *__pyx_pw_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_11read_boolean(PyObject *__pyx_v_self, PyObject *__pyx_v_type_); /*proto*/
static PyObject *__pyx_f_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_read_boolean(struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_type_, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("read_boolean", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_read_boolean); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 311, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_11read_boolean)) {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_type_) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_type_);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 311, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }
/* … */
  /* 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("dbus_fast._private.unmarshaller.Unmarshaller.read_boolean", __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_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_11read_boolean(PyObject *__pyx_v_self, PyObject *__pyx_v_type_); /*proto*/
static PyMethodDef __pyx_mdef_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_11read_boolean = {"read_boolean", (PyCFunction)__pyx_pw_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_11read_boolean, METH_O, 0};
static PyObject *__pyx_pw_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_11read_boolean(PyObject *__pyx_v_self, PyObject *__pyx_v_type_) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("read_boolean (wrapper)", 0);
  __pyx_r = __pyx_pf_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_10read_boolean(((struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *)__pyx_v_self), ((PyObject *)__pyx_v_type_));

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

static PyObject *__pyx_pf_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_10read_boolean(struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *__pyx_v_self, PyObject *__pyx_v_type_) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("read_boolean", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_read_boolean(__pyx_v_self, __pyx_v_type_, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 311, __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("dbus_fast._private.unmarshaller.Unmarshaller.read_boolean", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__47 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_type); if (unlikely(!__pyx_tuple__47)) __PYX_ERR(0, 311, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__47);
  __Pyx_GIVEREF(__pyx_tuple__47);
/* … */
  __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 311, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_SignatureType); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 311, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_type, __pyx_t_1) < 0) __PYX_ERR(0, 311, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_11read_boolean, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Unmarshaller_read_boolean, NULL, __pyx_n_s_dbus_fast__private_unmarshaller, __pyx_d, ((PyObject *)__pyx_codeobj__48)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 311, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_1, __pyx_t_6);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_9dbus_fast_8_private_12unmarshaller_Unmarshaller->tp_dict, __pyx_n_s_read_boolean, __pyx_t_1) < 0) __PYX_ERR(0, 311, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  PyType_Modified(__pyx_ptype_9dbus_fast_8_private_12unmarshaller_Unmarshaller);
  __pyx_codeobj__48 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__47, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_dbus_fast__private_unmarshal, __pyx_n_s_read_boolean, 311, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__48)) __PYX_ERR(0, 311, __pyx_L1_error)
+312:         return self._read_boolean()
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_9dbus_fast_8_private_12unmarshaller_Unmarshaller *)__pyx_v_self->__pyx_vtab)->_read_boolean(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 312, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;
 313: 
+314:     def _read_boolean(self) -> bool:
static PyObject *__pyx_f_9dbus_fast_8_private_12unmarshaller_12Unmarshaller__read_boolean(struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_read_boolean", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("dbus_fast._private.unmarshaller.Unmarshaller._read_boolean", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+315:         return bool(self._read_uint32_unpack())
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_unsigned_int(((struct __pyx_vtabstruct_9dbus_fast_8_private_12unmarshaller_Unmarshaller *)__pyx_v_self->__pyx_vtab)->_read_uint32_unpack(__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 315, __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(0, 315, __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(0, 315, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;
 316: 
+317:     def read_string_unpack(self, type_: SignatureType) -> str:
static PyObject *__pyx_pw_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_13read_string_unpack(PyObject *__pyx_v_self, PyObject *__pyx_v_type_); /*proto*/
static PyObject *__pyx_f_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_read_string_unpack(struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_type_, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("read_string_unpack", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_read_string_unpack); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 317, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_13read_string_unpack)) {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_type_) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_type_);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 317, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }
/* … */
  /* 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("dbus_fast._private.unmarshaller.Unmarshaller.read_string_unpack", __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_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_13read_string_unpack(PyObject *__pyx_v_self, PyObject *__pyx_v_type_); /*proto*/
static PyMethodDef __pyx_mdef_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_13read_string_unpack = {"read_string_unpack", (PyCFunction)__pyx_pw_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_13read_string_unpack, METH_O, 0};
static PyObject *__pyx_pw_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_13read_string_unpack(PyObject *__pyx_v_self, PyObject *__pyx_v_type_) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("read_string_unpack (wrapper)", 0);
  __pyx_r = __pyx_pf_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_12read_string_unpack(((struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *)__pyx_v_self), ((PyObject *)__pyx_v_type_));

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

static PyObject *__pyx_pf_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_12read_string_unpack(struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *__pyx_v_self, PyObject *__pyx_v_type_) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("read_string_unpack", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_read_string_unpack(__pyx_v_self, __pyx_v_type_, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 317, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("dbus_fast._private.unmarshaller.Unmarshaller.read_string_unpack", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__49 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_type); if (unlikely(!__pyx_tuple__49)) __PYX_ERR(0, 317, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__49);
  __Pyx_GIVEREF(__pyx_tuple__49);
/* … */
  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 317, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_SignatureType); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 317, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_type, __pyx_t_6) < 0) __PYX_ERR(0, 317, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_13read_string_unpack, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Unmarshaller_read_string_unpack, NULL, __pyx_n_s_dbus_fast__private_unmarshaller, __pyx_d, ((PyObject *)__pyx_codeobj__50)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 317, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_6, __pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_9dbus_fast_8_private_12unmarshaller_Unmarshaller->tp_dict, __pyx_n_s_read_string_unpack, __pyx_t_6) < 0) __PYX_ERR(0, 317, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  PyType_Modified(__pyx_ptype_9dbus_fast_8_private_12unmarshaller_Unmarshaller);
  __pyx_codeobj__50 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__49, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_dbus_fast__private_unmarshal, __pyx_n_s_read_string_unpack, 317, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__50)) __PYX_ERR(0, 317, __pyx_L1_error)
+318:         return self._read_string_unpack()
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_9dbus_fast_8_private_12unmarshaller_Unmarshaller *)__pyx_v_self->__pyx_vtab)->_read_string_unpack(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 318, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;
 319: 
+320:     def _read_string_unpack(self) -> str:
static PyObject *__pyx_f_9dbus_fast_8_private_12unmarshaller_12Unmarshaller__read_string_unpack(struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *__pyx_v_self) {
  unsigned int __pyx_v_str_start;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_read_string_unpack", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __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_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("dbus_fast._private.unmarshaller.Unmarshaller._read_string_unpack", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 321:         """Read a string using unpack."""
+322:         self._pos += UINT32_SIZE + (-self._pos & (UINT32_SIZE - 1))  # align
  __pyx_v_self->_pos = (__pyx_v_self->_pos + (__pyx_v_9dbus_fast_8_private_12unmarshaller_UINT32_SIZE + ((-__pyx_v_self->_pos) & (__pyx_v_9dbus_fast_8_private_12unmarshaller_UINT32_SIZE - 1))));
+323:         str_start = self._pos
  __pyx_t_1 = __pyx_v_self->_pos;
  __pyx_v_str_start = __pyx_t_1;
 324:         # read terminating '\0' byte as well (str_length + 1)
+325:         if self._is_native and cython.compiled:
  __pyx_t_3 = (__pyx_v_self->_is_native != 0);
  if (__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = (1 != 0);
  __pyx_t_2 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_2) {
/* … */
    goto __pyx_L3;
  }
+326:             self._pos += (  # pragma: no cover
    __pyx_v_self->_pos = (__pyx_v_self->_pos + (__pyx_f_9dbus_fast_8_private_12unmarshaller__cast_uint32_native(__pyx_t_4, (__pyx_v_str_start - __pyx_v_9dbus_fast_8_private_12unmarshaller_UINT32_SIZE)) + 1));
+327:                 _cast_uint32_native(self._buf, str_start - UINT32_SIZE) + 1
    __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_v_self->_buf); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 327, __pyx_L1_error)
 328:             )
 329:         else:
+330:             self._pos += self._uint32_unpack(self._buf, str_start - UINT32_SIZE)[0] + 1
  /*else*/ {
    __pyx_t_5 = __Pyx_PyInt_From_unsigned_int(__pyx_v_self->_pos); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 330, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7 = __Pyx_PyInt_From_unsigned_int((__pyx_v_str_start - __pyx_v_9dbus_fast_8_private_12unmarshaller_UINT32_SIZE)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 330, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_INCREF(__pyx_v_self->_uint32_unpack);
    __pyx_t_8 = __pyx_v_self->_uint32_unpack; __pyx_t_9 = NULL;
    __pyx_t_10 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_9)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
        __pyx_t_10 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_8)) {
      PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_v_self->_buf, __pyx_t_7};
      __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 330, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) {
      PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_v_self->_buf, __pyx_t_7};
      __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 330, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    } else
    #endif
    {
      __pyx_t_11 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 330, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
      if (__pyx_t_9) {
        __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9); __pyx_t_9 = NULL;
      }
      __Pyx_INCREF(__pyx_v_self->_buf);
      __Pyx_GIVEREF(__pyx_v_self->_buf);
      PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_10, __pyx_v_self->_buf);
      __Pyx_GIVEREF(__pyx_t_7);
      PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_10, __pyx_t_7);
      __pyx_t_7 = 0;
      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_11, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 330, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    }
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_6, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 330, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = __Pyx_PyInt_AddObjC(__pyx_t_8, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 330, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = PyNumber_InPlaceAdd(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 330, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_1 = __Pyx_PyInt_As_unsigned_int(__pyx_t_8); if (unlikely((__pyx_t_1 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 330, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_v_self->_pos = __pyx_t_1;
  }
  __pyx_L3:;
+331:         return self._buf[str_start : self._pos - 1].decode()
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(__pyx_v_self->_buf == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(0, 331, __pyx_L1_error)
  }
  __pyx_t_8 = __Pyx_decode_bytearray(__pyx_v_self->_buf, __pyx_v_str_start, (__pyx_v_self->_pos - 1), NULL, NULL, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 331, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_r = __pyx_t_8;
  __pyx_t_8 = 0;
  goto __pyx_L0;
 332: 
+333:     def read_signature(self, type_: SignatureType) -> str:
static PyObject *__pyx_pw_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_15read_signature(PyObject *__pyx_v_self, PyObject *__pyx_v_type_); /*proto*/
static PyObject *__pyx_f_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_read_signature(struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_type_, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("read_signature", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_read_signature); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 333, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_15read_signature)) {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_type_) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_type_);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 333, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }
/* … */
  /* 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("dbus_fast._private.unmarshaller.Unmarshaller.read_signature", __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_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_15read_signature(PyObject *__pyx_v_self, PyObject *__pyx_v_type_); /*proto*/
static PyMethodDef __pyx_mdef_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_15read_signature = {"read_signature", (PyCFunction)__pyx_pw_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_15read_signature, METH_O, 0};
static PyObject *__pyx_pw_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_15read_signature(PyObject *__pyx_v_self, PyObject *__pyx_v_type_) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("read_signature (wrapper)", 0);
  __pyx_r = __pyx_pf_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_14read_signature(((struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *)__pyx_v_self), ((PyObject *)__pyx_v_type_));

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

static PyObject *__pyx_pf_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_14read_signature(struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *__pyx_v_self, PyObject *__pyx_v_type_) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("read_signature", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_read_signature(__pyx_v_self, __pyx_v_type_, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 333, __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("dbus_fast._private.unmarshaller.Unmarshaller.read_signature", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__51 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_type); if (unlikely(!__pyx_tuple__51)) __PYX_ERR(0, 333, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__51);
  __Pyx_GIVEREF(__pyx_tuple__51);
/* … */
  __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 333, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_SignatureType); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 333, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_type, __pyx_t_1) < 0) __PYX_ERR(0, 333, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_15read_signature, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Unmarshaller_read_signature, NULL, __pyx_n_s_dbus_fast__private_unmarshaller, __pyx_d, ((PyObject *)__pyx_codeobj__52)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 333, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_1, __pyx_t_6);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_9dbus_fast_8_private_12unmarshaller_Unmarshaller->tp_dict, __pyx_n_s_read_signature, __pyx_t_1) < 0) __PYX_ERR(0, 333, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  PyType_Modified(__pyx_ptype_9dbus_fast_8_private_12unmarshaller_Unmarshaller);
  __pyx_codeobj__52 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__51, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_dbus_fast__private_unmarshal, __pyx_n_s_read_signature, 333, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__52)) __PYX_ERR(0, 333, __pyx_L1_error)
+334:         return self._read_signature()
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_9dbus_fast_8_private_12unmarshaller_Unmarshaller *)__pyx_v_self->__pyx_vtab)->_read_signature(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 334, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;
 335: 
+336:     def _read_signature(self) -> str:
static PyObject *__pyx_f_9dbus_fast_8_private_12unmarshaller_12Unmarshaller__read_signature(struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *__pyx_v_self) {
  unsigned long __pyx_v_o;
  unsigned int __pyx_v_signature_len;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_read_signature", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("dbus_fast._private.unmarshaller.Unmarshaller._read_signature", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+337:         signature_len = self._buf[self._pos]  # byte
  __pyx_t_1 = __Pyx_GetItemInt_ByteArray(__pyx_v_self->_buf, __pyx_v_self->_pos, unsigned int, 0, __Pyx_PyInt_From_unsigned_int, 0, 0, 1); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(0, 337, __pyx_L1_error)
  __pyx_v_signature_len = __pyx_t_1;
+338:         o = self._pos + 1
  __pyx_v_o = (__pyx_v_self->_pos + 1);
 339:         # read terminating '\0' byte as well (str_length + 1)
+340:         self._pos = o + signature_len + 1
  __pyx_v_self->_pos = ((__pyx_v_o + __pyx_v_signature_len) + 1);
+341:         return self._buf[o : o + signature_len].decode()
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(__pyx_v_self->_buf == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(0, 341, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_decode_bytearray(__pyx_v_self->_buf, __pyx_v_o, (__pyx_v_o + __pyx_v_signature_len), NULL, NULL, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 341, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;
 342: 
+343:     def read_variant(self, type_: SignatureType) -> Variant:
/* Python wrapper */
static PyObject *__pyx_pw_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_17read_variant(PyObject *__pyx_v_self, PyObject *__pyx_v_type_); /*proto*/
static PyMethodDef __pyx_mdef_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_17read_variant = {"read_variant", (PyCFunction)__pyx_pw_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_17read_variant, METH_O, 0};
static PyObject *__pyx_pw_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_17read_variant(PyObject *__pyx_v_self, PyObject *__pyx_v_type_) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("read_variant (wrapper)", 0);
  __pyx_r = __pyx_pf_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_16read_variant(((struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *)__pyx_v_self), ((PyObject *)__pyx_v_type_));

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

static PyObject *__pyx_pf_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_16read_variant(struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_type_) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("read_variant", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("dbus_fast._private.unmarshaller.Unmarshaller.read_variant", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__53 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_type); if (unlikely(!__pyx_tuple__53)) __PYX_ERR(0, 343, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__53);
  __Pyx_GIVEREF(__pyx_tuple__53);
/* … */
  __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 343, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_SignatureType); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 343, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_type, __pyx_t_6) < 0) __PYX_ERR(0, 343, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_return, __pyx_v_9dbus_fast_8_private_12unmarshaller_Variant) < 0) __PYX_ERR(0, 343, __pyx_L1_error)
  __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_17read_variant, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Unmarshaller_read_variant, NULL, __pyx_n_s_dbus_fast__private_unmarshaller, __pyx_d, ((PyObject *)__pyx_codeobj__54)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 343, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_6, __pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_9dbus_fast_8_private_12unmarshaller_Unmarshaller->tp_dict, __pyx_n_s_read_variant, __pyx_t_6) < 0) __PYX_ERR(0, 343, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  PyType_Modified(__pyx_ptype_9dbus_fast_8_private_12unmarshaller_Unmarshaller);
  __pyx_codeobj__54 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__53, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_dbus_fast__private_unmarshal, __pyx_n_s_read_variant, 343, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__54)) __PYX_ERR(0, 343, __pyx_L1_error)
+344:         return self._read_variant()
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_9dbus_fast_8_private_12unmarshaller_Unmarshaller *)__pyx_v_self->__pyx_vtab)->_read_variant(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 344, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;
 345: 
+346:     def _read_variant(self) -> Variant:
static PyObject *__pyx_f_9dbus_fast_8_private_12unmarshaller_12Unmarshaller__read_variant(struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *__pyx_v_self) {
  PyObject *__pyx_v_signature = NULL;
  PyObject *__pyx_v_tree = NULL;
  PyObject *__pyx_v_signature_type = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_read_variant", 0);
/* … */
  /* 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_7);
  __Pyx_AddTraceback("dbus_fast._private.unmarshaller.Unmarshaller._read_variant", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_signature);
  __Pyx_XDECREF(__pyx_v_tree);
  __Pyx_XDECREF(__pyx_v_signature_type);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+347:         signature = self._read_signature()
  __pyx_t_1 = ((struct __pyx_vtabstruct_9dbus_fast_8_private_12unmarshaller_Unmarshaller *)__pyx_v_self->__pyx_vtab)->_read_signature(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 347, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_signature = __pyx_t_1;
  __pyx_t_1 = 0;
 348:         # verify in Variant is only useful on construction not unmarshalling
+349:         if signature == "n":
  __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_v_signature, __pyx_n_u_n, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 349, __pyx_L1_error)
  if (__pyx_t_2) {
/* … */
  }
+350:             return Variant(SIGNATURE_TREE_N, self._read_int16_unpack(), False)
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyInt_From_int(((struct __pyx_vtabstruct_9dbus_fast_8_private_12unmarshaller_Unmarshaller *)__pyx_v_self->__pyx_vtab)->_read_int16_unpack(__pyx_v_self)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 350, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_Variant);
    __pyx_t_4 = __pyx_v_9dbus_fast_8_private_12unmarshaller_Variant; __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_N, __pyx_t_3, Py_False};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 350, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_N, __pyx_t_3, Py_False};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 350, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else
    #endif
    {
      __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 350, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (__pyx_t_5) {
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
      }
      __Pyx_INCREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_N);
      __Pyx_GIVEREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_N);
      PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_N);
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_3);
      __Pyx_INCREF(Py_False);
      __Pyx_GIVEREF(Py_False);
      PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, Py_False);
      __pyx_t_3 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 350, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
+351:         elif signature == "ay":
  __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_v_signature, __pyx_n_u_ay, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 351, __pyx_L1_error)
  if (__pyx_t_2) {
/* … */
  }
+352:             return Variant(
    __Pyx_XDECREF(__pyx_r);
+353:                 SIGNATURE_TREE_AY, self._read_array(SIGNATURE_TREE_AY_TYPES_0), False
    __pyx_t_4 = __pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_AY_TYPES_0;
    __Pyx_INCREF(__pyx_t_4);
    __pyx_t_7 = ((struct __pyx_vtabstruct_9dbus_fast_8_private_12unmarshaller_Unmarshaller *)__pyx_v_self->__pyx_vtab)->_read_array(__pyx_v_self, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 353, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_INCREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_Variant);
    __pyx_t_4 = __pyx_v_9dbus_fast_8_private_12unmarshaller_Variant; __pyx_t_3 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && 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;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_AY, __pyx_t_7, Py_False};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 352, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_AY, __pyx_t_7, Py_False};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 352, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    } else
    #endif
    {
      __pyx_t_5 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 352, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      if (__pyx_t_3) {
        __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
      }
      __Pyx_INCREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_AY);
      __Pyx_GIVEREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_AY);
      PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_6, __pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_AY);
      __Pyx_GIVEREF(__pyx_t_7);
      PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_6, __pyx_t_7);
      __Pyx_INCREF(Py_False);
      __Pyx_GIVEREF(Py_False);
      PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_6, Py_False);
      __pyx_t_7 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 352, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
 354:             )
+355:         elif signature == "a{qv}":
  __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_v_signature, __pyx_kp_u_a_qv, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 355, __pyx_L1_error)
  if (__pyx_t_2) {
/* … */
  }
+356:             return Variant(
    __Pyx_XDECREF(__pyx_r);
 357:                 SIGNATURE_TREE_A_QV,
+358:                 self._read_array(SIGNATURE_TREE_A_QV_TYPES_0),
    __pyx_t_4 = __pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_A_QV_TYPES_0;
    __Pyx_INCREF(__pyx_t_4);
    __pyx_t_5 = ((struct __pyx_vtabstruct_9dbus_fast_8_private_12unmarshaller_Unmarshaller *)__pyx_v_self->__pyx_vtab)->_read_array(__pyx_v_self, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 358, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+359:                 False,
    __Pyx_INCREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_Variant);
    __pyx_t_4 = __pyx_v_9dbus_fast_8_private_12unmarshaller_Variant; __pyx_t_7 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[4] = {__pyx_t_7, __pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_A_QV, __pyx_t_5, Py_False};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 356, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[4] = {__pyx_t_7, __pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_A_QV, __pyx_t_5, Py_False};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 356, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else
    #endif
    {
      __pyx_t_3 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 356, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      if (__pyx_t_7) {
        __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_7); __pyx_t_7 = NULL;
      }
      __Pyx_INCREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_A_QV);
      __Pyx_GIVEREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_A_QV);
      PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_6, __pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_A_QV);
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_6, __pyx_t_5);
      __Pyx_INCREF(Py_False);
      __Pyx_GIVEREF(Py_False);
      PyTuple_SET_ITEM(__pyx_t_3, 2+__pyx_t_6, Py_False);
      __pyx_t_5 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 356, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
 360:             )
+361:         elif signature == "s":
  __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_v_signature, __pyx_n_u_s, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 361, __pyx_L1_error)
  if (__pyx_t_2) {
/* … */
  }
+362:             return Variant(SIGNATURE_TREE_S, self._read_string_unpack(), False)
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_4 = ((struct __pyx_vtabstruct_9dbus_fast_8_private_12unmarshaller_Unmarshaller *)__pyx_v_self->__pyx_vtab)->_read_string_unpack(__pyx_v_self); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 362, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_INCREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_Variant);
    __pyx_t_3 = __pyx_v_9dbus_fast_8_private_12unmarshaller_Variant; __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_6 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_3)) {
      PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_S, __pyx_t_4, Py_False};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 362, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
      PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_S, __pyx_t_4, Py_False};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 362, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else
    #endif
    {
      __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 362, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (__pyx_t_5) {
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
      }
      __Pyx_INCREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_S);
      __Pyx_GIVEREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_S);
      PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_S);
      __Pyx_GIVEREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4);
      __Pyx_INCREF(Py_False);
      __Pyx_GIVEREF(Py_False);
      PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, Py_False);
      __pyx_t_4 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 362, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
+363:         elif signature == "b":
  __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_v_signature, __pyx_n_u_b, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 363, __pyx_L1_error)
  if (__pyx_t_2) {
/* … */
  }
+364:             return Variant(SIGNATURE_TREE_B, self._read_boolean(), False)
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = ((struct __pyx_vtabstruct_9dbus_fast_8_private_12unmarshaller_Unmarshaller *)__pyx_v_self->__pyx_vtab)->_read_boolean(__pyx_v_self); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 364, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_Variant);
    __pyx_t_7 = __pyx_v_9dbus_fast_8_private_12unmarshaller_Variant; __pyx_t_4 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_6 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_7)) {
      PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_B, __pyx_t_3, Py_False};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 364, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) {
      PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_B, __pyx_t_3, Py_False};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 364, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else
    #endif
    {
      __pyx_t_5 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 364, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      if (__pyx_t_4) {
        __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
      }
      __Pyx_INCREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_B);
      __Pyx_GIVEREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_B);
      PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_6, __pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_B);
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_6, __pyx_t_3);
      __Pyx_INCREF(Py_False);
      __Pyx_GIVEREF(Py_False);
      PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_6, Py_False);
      __pyx_t_3 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 364, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
+365:         elif signature == "o":
  __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_v_signature, __pyx_n_u_o, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 365, __pyx_L1_error)
  if (__pyx_t_2) {
/* … */
  }
+366:             return Variant(SIGNATURE_TREE_O, self._read_string_unpack(), False)
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_7 = ((struct __pyx_vtabstruct_9dbus_fast_8_private_12unmarshaller_Unmarshaller *)__pyx_v_self->__pyx_vtab)->_read_string_unpack(__pyx_v_self); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 366, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_INCREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_Variant);
    __pyx_t_5 = __pyx_v_9dbus_fast_8_private_12unmarshaller_Variant; __pyx_t_3 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_3)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_6 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_5)) {
      PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_O, __pyx_t_7, Py_False};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 366, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
      PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_O, __pyx_t_7, Py_False};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 366, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    } else
    #endif
    {
      __pyx_t_4 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 366, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (__pyx_t_3) {
        __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
      }
      __Pyx_INCREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_O);
      __Pyx_GIVEREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_O);
      PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_6, __pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_O);
      __Pyx_GIVEREF(__pyx_t_7);
      PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_6, __pyx_t_7);
      __Pyx_INCREF(Py_False);
      __Pyx_GIVEREF(Py_False);
      PyTuple_SET_ITEM(__pyx_t_4, 2+__pyx_t_6, Py_False);
      __pyx_t_7 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 366, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
+367:         elif signature == "as":
  __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_v_signature, __pyx_n_u_as, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 367, __pyx_L1_error)
  if (__pyx_t_2) {
/* … */
  }
+368:             return Variant(
    __Pyx_XDECREF(__pyx_r);
+369:                 SIGNATURE_TREE_AS, self._read_array(SIGNATURE_TREE_AS_TYPES_0), False
    __pyx_t_5 = __pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_AS_TYPES_0;
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_4 = ((struct __pyx_vtabstruct_9dbus_fast_8_private_12unmarshaller_Unmarshaller *)__pyx_v_self->__pyx_vtab)->_read_array(__pyx_v_self, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 369, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_INCREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_Variant);
    __pyx_t_5 = __pyx_v_9dbus_fast_8_private_12unmarshaller_Variant; __pyx_t_7 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && 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_6 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_5)) {
      PyObject *__pyx_temp[4] = {__pyx_t_7, __pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_AS, __pyx_t_4, Py_False};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 368, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
      PyObject *__pyx_temp[4] = {__pyx_t_7, __pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_AS, __pyx_t_4, Py_False};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 368, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else
    #endif
    {
      __pyx_t_3 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 368, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      if (__pyx_t_7) {
        __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_7); __pyx_t_7 = NULL;
      }
      __Pyx_INCREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_AS);
      __Pyx_GIVEREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_AS);
      PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_6, __pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_AS);
      __Pyx_GIVEREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_6, __pyx_t_4);
      __Pyx_INCREF(Py_False);
      __Pyx_GIVEREF(Py_False);
      PyTuple_SET_ITEM(__pyx_t_3, 2+__pyx_t_6, Py_False);
      __pyx_t_4 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 368, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
 370:             )
+371:         elif signature == "a{sv}":
  __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_v_signature, __pyx_kp_u_a_sv, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 371, __pyx_L1_error)
  if (__pyx_t_2) {
/* … */
  }
+372:             return Variant(
    __Pyx_XDECREF(__pyx_r);
 373:                 SIGNATURE_TREE_A_SV,
+374:                 self._read_array(SIGNATURE_TREE_A_SV_TYPES_0),
    __pyx_t_5 = __pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_A_SV_TYPES_0;
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_3 = ((struct __pyx_vtabstruct_9dbus_fast_8_private_12unmarshaller_Unmarshaller *)__pyx_v_self->__pyx_vtab)->_read_array(__pyx_v_self, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 374, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+375:                 False,
    __Pyx_INCREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_Variant);
    __pyx_t_5 = __pyx_v_9dbus_fast_8_private_12unmarshaller_Variant; __pyx_t_4 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && 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;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_5)) {
      PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_A_SV, __pyx_t_3, Py_False};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 372, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
      PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_A_SV, __pyx_t_3, Py_False};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 372, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else
    #endif
    {
      __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 372, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (__pyx_t_4) {
        __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL;
      }
      __Pyx_INCREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_A_SV);
      __Pyx_GIVEREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_A_SV);
      PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_A_SV);
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_3);
      __Pyx_INCREF(Py_False);
      __Pyx_GIVEREF(Py_False);
      PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, Py_False);
      __pyx_t_3 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 372, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
 376:             )
+377:         tree = get_signature_tree(signature)
  __Pyx_INCREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_get_signature_tree);
  __pyx_t_5 = __pyx_v_9dbus_fast_8_private_12unmarshaller_get_signature_tree; __pyx_t_7 = NULL;
  if (CYTHON_UNPACK_METHODS && 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_1 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_7, __pyx_v_signature) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_signature);
  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 377, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_v_tree = __pyx_t_1;
  __pyx_t_1 = 0;
+378:         signature_type = tree.types[0]
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_n_s_types); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 378, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 378, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_signature_type = __pyx_t_5;
  __pyx_t_5 = 0;
+379:         return Variant(
  __Pyx_XDECREF(__pyx_r);
 380:             tree,
+381:             self._readers[signature_type.token](self, signature_type),
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_signature_type, __pyx_n_s_token); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 381, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_v_self->_readers, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 381, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_6 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_3)) {
    PyObject *__pyx_temp[3] = {__pyx_t_7, ((PyObject *)__pyx_v_self), __pyx_v_signature_type};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 381, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
    PyObject *__pyx_temp[3] = {__pyx_t_7, ((PyObject *)__pyx_v_self), __pyx_v_signature_type};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 381, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else
  #endif
  {
    __pyx_t_4 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 381, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (__pyx_t_7) {
      __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_7); __pyx_t_7 = NULL;
    }
    __Pyx_INCREF(((PyObject *)__pyx_v_self));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
    PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_6, ((PyObject *)__pyx_v_self));
    __Pyx_INCREF(__pyx_v_signature_type);
    __Pyx_GIVEREF(__pyx_v_signature_type);
    PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_6, __pyx_v_signature_type);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 381, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+382:             False,
  __Pyx_INCREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_Variant);
  __pyx_t_3 = __pyx_v_9dbus_fast_8_private_12unmarshaller_Variant; __pyx_t_4 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_6 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_3)) {
    PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_v_tree, __pyx_t_1, Py_False};
    __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 379, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
    PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_v_tree, __pyx_t_1, Py_False};
    __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 379, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else
  #endif
  {
    __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 379, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (__pyx_t_4) {
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL;
    }
    __Pyx_INCREF(__pyx_v_tree);
    __Pyx_GIVEREF(__pyx_v_tree);
    PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_v_tree);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_1);
    __Pyx_INCREF(Py_False);
    __Pyx_GIVEREF(Py_False);
    PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, Py_False);
    __pyx_t_1 = 0;
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 379, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;
 383:         )
 384: 
+385:     def read_struct(self, type_: SignatureType) -> List[Any]:
/* Python wrapper */
static PyObject *__pyx_pw_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_19read_struct(PyObject *__pyx_v_self, PyObject *__pyx_v_type_); /*proto*/
static PyMethodDef __pyx_mdef_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_19read_struct = {"read_struct", (PyCFunction)__pyx_pw_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_19read_struct, METH_O, 0};
static PyObject *__pyx_pw_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_19read_struct(PyObject *__pyx_v_self, PyObject *__pyx_v_type_) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("read_struct (wrapper)", 0);
  __pyx_r = __pyx_pf_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_18read_struct(((struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *)__pyx_v_self), ((PyObject *)__pyx_v_type_));

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

static PyObject *__pyx_pf_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_18read_struct(struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *__pyx_v_self, PyObject *__pyx_v_type_) {
  PyObject *__pyx_v_readers = NULL;
  PyObject *__pyx_7genexpr__pyx_v_child_type = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("read_struct", 0);
/* … */
  /* 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_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("dbus_fast._private.unmarshaller.Unmarshaller.read_struct", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_readers);
  __Pyx_XDECREF(__pyx_7genexpr__pyx_v_child_type);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__55 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_type, __pyx_n_s_readers_2, __pyx_n_s_child_type); if (unlikely(!__pyx_tuple__55)) __PYX_ERR(0, 385, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__55);
  __Pyx_GIVEREF(__pyx_tuple__55);
/* … */
  __pyx_t_6 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 385, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_SignatureType); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 385, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_type, __pyx_t_1) < 0) __PYX_ERR(0, 385, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_List); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 385, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_Any); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 385, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 385, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_return, __pyx_t_5) < 0) __PYX_ERR(0, 385, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_19read_struct, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Unmarshaller_read_struct, NULL, __pyx_n_s_dbus_fast__private_unmarshaller, __pyx_d, ((PyObject *)__pyx_codeobj__56)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 385, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_6);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_9dbus_fast_8_private_12unmarshaller_Unmarshaller->tp_dict, __pyx_n_s_read_struct, __pyx_t_5) < 0) __PYX_ERR(0, 385, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  PyType_Modified(__pyx_ptype_9dbus_fast_8_private_12unmarshaller_Unmarshaller);
  __pyx_codeobj__56 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__55, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_dbus_fast__private_unmarshal, __pyx_n_s_read_struct, 385, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__56)) __PYX_ERR(0, 385, __pyx_L1_error)
+386:         self._pos += -self._pos & 7  # align 8
  __pyx_v_self->_pos = (__pyx_v_self->_pos + ((-__pyx_v_self->_pos) & 7));
+387:         readers = self._readers
  __pyx_t_1 = __pyx_v_self->_readers;
  __Pyx_INCREF(__pyx_t_1);
  __pyx_v_readers = __pyx_t_1;
  __pyx_t_1 = 0;
+388:         return [
  __Pyx_XDECREF(__pyx_r);
  { /* enter inner scope */
    __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 388, __pyx_L5_error)
    __Pyx_GOTREF(__pyx_t_1);
+389:             readers[child_type.token](self, child_type) for child_type in type_.children
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_type_, __pyx_n_s_children); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 389, __pyx_L5_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
      __pyx_t_3 = __pyx_t_2; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0;
      __pyx_t_5 = NULL;
    } else {
      __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 389, __pyx_L5_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_5 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 389, __pyx_L5_error)
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    for (;;) {
      if (likely(!__pyx_t_5)) {
        if (likely(PyList_CheckExact(__pyx_t_3))) {
          if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_3)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 389, __pyx_L5_error)
          #else
          __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 389, __pyx_L5_error)
          __Pyx_GOTREF(__pyx_t_2);
          #endif
        } else {
          if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 389, __pyx_L5_error)
          #else
          __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 389, __pyx_L5_error)
          __Pyx_GOTREF(__pyx_t_2);
          #endif
        }
      } else {
        __pyx_t_2 = __pyx_t_5(__pyx_t_3);
        if (unlikely(!__pyx_t_2)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else __PYX_ERR(0, 389, __pyx_L5_error)
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_2);
      }
      __Pyx_XDECREF_SET(__pyx_7genexpr__pyx_v_child_type, __pyx_t_2);
      __pyx_t_2 = 0;
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_7genexpr__pyx_v_child_type, __pyx_n_s_token); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 389, __pyx_L5_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_v_readers, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 389, __pyx_L5_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 && 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;
        }
      }
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_7)) {
        PyObject *__pyx_temp[3] = {__pyx_t_6, ((PyObject *)__pyx_v_self), __pyx_7genexpr__pyx_v_child_type};
        __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 389, __pyx_L5_error)
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_GOTREF(__pyx_t_2);
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) {
        PyObject *__pyx_temp[3] = {__pyx_t_6, ((PyObject *)__pyx_v_self), __pyx_7genexpr__pyx_v_child_type};
        __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 389, __pyx_L5_error)
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_GOTREF(__pyx_t_2);
      } else
      #endif
      {
        __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 389, __pyx_L5_error)
        __Pyx_GOTREF(__pyx_t_9);
        if (__pyx_t_6) {
          __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_6); __pyx_t_6 = NULL;
        }
        __Pyx_INCREF(((PyObject *)__pyx_v_self));
        __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
        PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, ((PyObject *)__pyx_v_self));
        __Pyx_INCREF(__pyx_7genexpr__pyx_v_child_type);
        __Pyx_GIVEREF(__pyx_7genexpr__pyx_v_child_type);
        PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_7genexpr__pyx_v_child_type);
        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 389, __pyx_L5_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      }
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_2))) __PYX_ERR(0, 388, __pyx_L5_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_7genexpr__pyx_v_child_type); __pyx_7genexpr__pyx_v_child_type = 0;
    goto __pyx_L8_exit_scope;
    __pyx_L5_error:;
    __Pyx_XDECREF(__pyx_7genexpr__pyx_v_child_type); __pyx_7genexpr__pyx_v_child_type = 0;
    goto __pyx_L1_error;
    __pyx_L8_exit_scope:;
  } /* exit inner scope */
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;
 390:         ]
 391: 
+392:     def read_dict_entry(self, type_: SignatureType) -> Tuple[Any, Any]:
/* Python wrapper */
static PyObject *__pyx_pw_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_21read_dict_entry(PyObject *__pyx_v_self, PyObject *__pyx_v_type_); /*proto*/
static PyMethodDef __pyx_mdef_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_21read_dict_entry = {"read_dict_entry", (PyCFunction)__pyx_pw_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_21read_dict_entry, METH_O, 0};
static PyObject *__pyx_pw_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_21read_dict_entry(PyObject *__pyx_v_self, PyObject *__pyx_v_type_) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("read_dict_entry (wrapper)", 0);
  __pyx_r = __pyx_pf_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_20read_dict_entry(((struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *)__pyx_v_self), ((PyObject *)__pyx_v_type_));

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

static PyObject *__pyx_pf_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_20read_dict_entry(struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *__pyx_v_self, PyObject *__pyx_v_type_) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("read_dict_entry", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("dbus_fast._private.unmarshaller.Unmarshaller.read_dict_entry", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__57 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_type); if (unlikely(!__pyx_tuple__57)) __PYX_ERR(0, 392, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__57);
  __Pyx_GIVEREF(__pyx_tuple__57);
/* … */
  __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 392, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_SignatureType); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 392, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_type, __pyx_t_6) < 0) __PYX_ERR(0, 392, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_Tuple); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 392, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_Any); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 392, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Any); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 392, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 392, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
  __pyx_t_8 = 0;
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_t_6, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 392, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_return, __pyx_t_1) < 0) __PYX_ERR(0, 392, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_21read_dict_entry, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Unmarshaller_read_dict_entry, NULL, __pyx_n_s_dbus_fast__private_unmarshaller, __pyx_d, ((PyObject *)__pyx_codeobj__58)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 392, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_1, __pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_9dbus_fast_8_private_12unmarshaller_Unmarshaller->tp_dict, __pyx_n_s_read_dict_entry, __pyx_t_1) < 0) __PYX_ERR(0, 392, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  PyType_Modified(__pyx_ptype_9dbus_fast_8_private_12unmarshaller_Unmarshaller);
  __pyx_codeobj__58 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__57, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_dbus_fast__private_unmarshal, __pyx_n_s_read_dict_entry, 392, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__58)) __PYX_ERR(0, 392, __pyx_L1_error)
+393:         self._pos += -self._pos & 7  # align 8
  __pyx_v_self->_pos = (__pyx_v_self->_pos + ((-__pyx_v_self->_pos) & 7));
+394:         return self._readers[type_.children[0].token](
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_type_, __pyx_n_s_children); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 394, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 394, __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_token); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 394, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_v_self->_readers, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 394, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
/* … */
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 394, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3);
  __pyx_t_1 = 0;
  __pyx_t_3 = 0;
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;
+395:             self, type_.children[0]
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_type_, __pyx_n_s_children); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 395, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 395, __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 && 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;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_3)) {
    PyObject *__pyx_temp[3] = {__pyx_t_2, ((PyObject *)__pyx_v_self), __pyx_t_4};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 394, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
    PyObject *__pyx_temp[3] = {__pyx_t_2, ((PyObject *)__pyx_v_self), __pyx_t_4};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 394, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  } else
  #endif
  {
    __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 394, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    if (__pyx_t_2) {
      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2); __pyx_t_2 = NULL;
    }
    __Pyx_INCREF(((PyObject *)__pyx_v_self));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
    PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, ((PyObject *)__pyx_v_self));
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 394, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+396:         ), self._readers[type_.children[1].token](self, type_.children[1])
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_type_, __pyx_n_s_children); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 396, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_6, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 396, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_token); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 396, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_v_self->_readers, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 396, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_type_, __pyx_n_s_children); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 396, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_6, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 396, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_5 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_4)) {
    PyObject *__pyx_temp[3] = {__pyx_t_6, ((PyObject *)__pyx_v_self), __pyx_t_2};
    __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 396, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
    PyObject *__pyx_temp[3] = {__pyx_t_6, ((PyObject *)__pyx_v_self), __pyx_t_2};
    __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 396, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  } else
  #endif
  {
    __pyx_t_7 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 396, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (__pyx_t_6) {
      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
    }
    __Pyx_INCREF(((PyObject *)__pyx_v_self));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
    PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_5, ((PyObject *)__pyx_v_self));
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_5, __pyx_t_2);
    __pyx_t_2 = 0;
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 396, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 397: 
+398:     def read_array(self, type_: SignatureType) -> Iterable[Any]:
static PyObject *__pyx_pw_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_23read_array(PyObject *__pyx_v_self, PyObject *__pyx_v_type_); /*proto*/
static PyObject *__pyx_f_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_read_array(struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *__pyx_v_self, PyObject *__pyx_v_type_, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("read_array", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_read_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 398, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_23read_array)) {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_type_) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_type_);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 398, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }
/* … */
  /* 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("dbus_fast._private.unmarshaller.Unmarshaller.read_array", __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_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_23read_array(PyObject *__pyx_v_self, PyObject *__pyx_v_type_); /*proto*/
static PyMethodDef __pyx_mdef_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_23read_array = {"read_array", (PyCFunction)__pyx_pw_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_23read_array, METH_O, 0};
static PyObject *__pyx_pw_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_23read_array(PyObject *__pyx_v_self, PyObject *__pyx_v_type_) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("read_array (wrapper)", 0);
  __pyx_r = __pyx_pf_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_22read_array(((struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *)__pyx_v_self), ((PyObject *)__pyx_v_type_));

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

static PyObject *__pyx_pf_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_22read_array(struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *__pyx_v_self, PyObject *__pyx_v_type_) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("read_array", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_read_array(__pyx_v_self, __pyx_v_type_, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 398, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("dbus_fast._private.unmarshaller.Unmarshaller.read_array", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__59 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_type); if (unlikely(!__pyx_tuple__59)) __PYX_ERR(0, 398, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__59);
  __Pyx_GIVEREF(__pyx_tuple__59);
/* … */
  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 398, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_SignatureType); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 398, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_type, __pyx_t_5) < 0) __PYX_ERR(0, 398, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_23read_array, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Unmarshaller_read_array, NULL, __pyx_n_s_dbus_fast__private_unmarshaller, __pyx_d, ((PyObject *)__pyx_codeobj__60)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 398, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_5, __pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_9dbus_fast_8_private_12unmarshaller_Unmarshaller->tp_dict, __pyx_n_s_read_array, __pyx_t_5) < 0) __PYX_ERR(0, 398, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  PyType_Modified(__pyx_ptype_9dbus_fast_8_private_12unmarshaller_Unmarshaller);
  __pyx_codeobj__60 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__59, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_dbus_fast__private_unmarshal, __pyx_n_s_read_array, 398, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__60)) __PYX_ERR(0, 398, __pyx_L1_error)
+399:         return self._read_array(type_)
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_9dbus_fast_8_private_12unmarshaller_Unmarshaller *)__pyx_v_self->__pyx_vtab)->_read_array(__pyx_v_self, __pyx_v_type_); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 399, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;
 400: 
+401:     def _read_array(self, type_: SignatureType) -> Iterable[Any]:
static PyObject *__pyx_f_9dbus_fast_8_private_12unmarshaller_12Unmarshaller__read_array(struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *__pyx_v_self, PyObject *__pyx_v_type_) {
  unsigned long __pyx_v_beginning_pos;
  unsigned int __pyx_v_array_length;
  PyObject *__pyx_v_child_type = NULL;
  PyObject *__pyx_v_token = NULL;
  PyObject *__pyx_v_result_dict = NULL;
  PyObject *__pyx_v_children = NULL;
  PyObject *__pyx_v_child_0 = NULL;
  PyObject *__pyx_v_child_1 = NULL;
  PyObject *__pyx_v_child_0_token = NULL;
  PyObject *__pyx_v_child_1_token = NULL;
  PyObject *__pyx_v_key = NULL;
  PyObject *__pyx_v_reader_1 = NULL;
  PyObject *__pyx_v_reader_0 = NULL;
  PyObject *__pyx_v_result_list = NULL;
  PyObject *__pyx_v_reader = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_read_array", 0);
/* … */
  /* 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_9);
  __Pyx_AddTraceback("dbus_fast._private.unmarshaller.Unmarshaller._read_array", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_child_type);
  __Pyx_XDECREF(__pyx_v_token);
  __Pyx_XDECREF(__pyx_v_result_dict);
  __Pyx_XDECREF(__pyx_v_children);
  __Pyx_XDECREF(__pyx_v_child_0);
  __Pyx_XDECREF(__pyx_v_child_1);
  __Pyx_XDECREF(__pyx_v_child_0_token);
  __Pyx_XDECREF(__pyx_v_child_1_token);
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XDECREF(__pyx_v_reader_1);
  __Pyx_XDECREF(__pyx_v_reader_0);
  __Pyx_XDECREF(__pyx_v_result_list);
  __Pyx_XDECREF(__pyx_v_reader);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+402:         self._pos += -self._pos & 3  # align 4 for the array
  __pyx_v_self->_pos = (__pyx_v_self->_pos + ((-__pyx_v_self->_pos) & 3));
+403:         self._pos += (
  __pyx_v_self->_pos = (__pyx_v_self->_pos + (((-__pyx_v_self->_pos) & (__pyx_v_9dbus_fast_8_private_12unmarshaller_UINT32_SIZE - 1)) + __pyx_v_9dbus_fast_8_private_12unmarshaller_UINT32_SIZE));
 404:             -self._pos & (UINT32_SIZE - 1)
 405:         ) + UINT32_SIZE  # align for the uint32
+406:         if self._is_native and cython.compiled:
  __pyx_t_2 = (__pyx_v_self->_is_native != 0);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (1 != 0);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {
/* … */
    goto __pyx_L3;
  }
+407:             array_length = _cast_uint32_native(  # pragma: no cover
    __pyx_v_array_length = __pyx_f_9dbus_fast_8_private_12unmarshaller__cast_uint32_native(__pyx_t_3, (__pyx_v_self->_pos - __pyx_v_9dbus_fast_8_private_12unmarshaller_UINT32_SIZE));
+408:                 self._buf, self._pos - UINT32_SIZE
    __pyx_t_3 = __Pyx_PyObject_AsString(__pyx_v_self->_buf); if (unlikely((!__pyx_t_3) && PyErr_Occurred())) __PYX_ERR(0, 408, __pyx_L1_error)
 409:             )
 410:         else:
+411:             array_length = self._uint32_unpack(self._buf, self._pos - UINT32_SIZE)[0]
  /*else*/ {
    __pyx_t_5 = __Pyx_PyInt_From_unsigned_int((__pyx_v_self->_pos - __pyx_v_9dbus_fast_8_private_12unmarshaller_UINT32_SIZE)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 411, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_INCREF(__pyx_v_self->_uint32_unpack);
    __pyx_t_6 = __pyx_v_self->_uint32_unpack; __pyx_t_7 = NULL;
    __pyx_t_8 = 0;
    if (CYTHON_UNPACK_METHODS && 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;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_6)) {
      PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_self->_buf, __pyx_t_5};
      __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 411, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
      PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_self->_buf, __pyx_t_5};
      __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 411, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else
    #endif
    {
      __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 411, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      if (__pyx_t_7) {
        __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL;
      }
      __Pyx_INCREF(__pyx_v_self->_buf);
      __Pyx_GIVEREF(__pyx_v_self->_buf);
      PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_v_self->_buf);
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_t_5);
      __pyx_t_5 = 0;
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_9, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 411, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 411, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_10 = __Pyx_PyInt_As_unsigned_int(__pyx_t_6); if (unlikely((__pyx_t_10 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 411, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_v_array_length = __pyx_t_10;
  }
  __pyx_L3:;
 412: 
+413:         child_type = type_.children[0]
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_type_, __pyx_n_s_children); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 413, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_6, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 413, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_v_child_type = __pyx_t_4;
  __pyx_t_4 = 0;
+414:         token = child_type.token
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_child_type, __pyx_n_s_token); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 414, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_v_token = __pyx_t_4;
  __pyx_t_4 = 0;
 415: 
+416:         if token in "xtd{(":
  __pyx_t_1 = (__Pyx_PyUnicode_ContainsTF(__pyx_v_token, __pyx_kp_u_xtd, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 416, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {
/* … */
  }
 417:             # the first alignment is not included in the array size
+418:             self._pos += -self._pos & 7  # align 8
    __pyx_v_self->_pos = (__pyx_v_self->_pos + ((-__pyx_v_self->_pos) & 7));
 419: 
+420:         if token == "y":
  __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_v_token, __pyx_n_u_y, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 420, __pyx_L1_error)
  if (__pyx_t_2) {
/* … */
  }
+421:             self._pos += array_length
    __pyx_v_self->_pos = (__pyx_v_self->_pos + __pyx_v_array_length);
+422:             return self._buf[self._pos - array_length : self._pos]
    __Pyx_XDECREF(__pyx_r);
    if (unlikely(__pyx_v_self->_buf == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(0, 422, __pyx_L1_error)
    }
    __pyx_t_4 = PySequence_GetSlice(__pyx_v_self->_buf, (__pyx_v_self->_pos - __pyx_v_array_length), __pyx_v_self->_pos); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 422, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;
 423: 
+424:         if token == "{":
  __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_v_token, __pyx_kp_u__4, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 424, __pyx_L1_error)
  if (__pyx_t_2) {
/* … */
  }
+425:             result_dict = {}
    __pyx_t_4 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 425, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_v_result_dict = ((PyObject*)__pyx_t_4);
    __pyx_t_4 = 0;
+426:             beginning_pos = self._pos
    __pyx_t_10 = __pyx_v_self->_pos;
    __pyx_v_beginning_pos = __pyx_t_10;
+427:             children = child_type.children
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_child_type, __pyx_n_s_children); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 427, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_v_children = __pyx_t_4;
    __pyx_t_4 = 0;
+428:             child_0 = children[0]
    __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_children, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 428, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_v_child_0 = __pyx_t_4;
    __pyx_t_4 = 0;
+429:             child_1 = children[1]
    __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_children, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 429, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_v_child_1 = __pyx_t_4;
    __pyx_t_4 = 0;
+430:             child_0_token = child_0.token
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_child_0, __pyx_n_s_token); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 430, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_v_child_0_token = __pyx_t_4;
    __pyx_t_4 = 0;
+431:             child_1_token = child_1.token
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_child_1, __pyx_n_s_token); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 431, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_v_child_1_token = __pyx_t_4;
    __pyx_t_4 = 0;
 432:             # Strings with variant values are the most common case
 433:             # so we optimize for that by inlining the string reading
 434:             # and the variant reading here
+435:             if child_0_token in "os" and child_1_token == "v":
    __pyx_t_1 = (__Pyx_PyUnicode_ContainsTF(__pyx_v_child_0_token, __pyx_n_u_os, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 435, __pyx_L1_error)
    __pyx_t_11 = (__pyx_t_1 != 0);
    if (__pyx_t_11) {
    } else {
      __pyx_t_2 = __pyx_t_11;
      goto __pyx_L10_bool_binop_done;
    }
    __pyx_t_11 = (__Pyx_PyUnicode_Equals(__pyx_v_child_1_token, __pyx_n_u_v, Py_EQ)); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 435, __pyx_L1_error)
    __pyx_t_2 = __pyx_t_11;
    __pyx_L10_bool_binop_done:;
    if (__pyx_t_2) {
/* … */
      goto __pyx_L9;
    }
+436:                 while self._pos - beginning_pos < array_length:
      while (1) {
        __pyx_t_2 = (((__pyx_v_self->_pos - __pyx_v_beginning_pos) < __pyx_v_array_length) != 0);
        if (!__pyx_t_2) break;
+437:                     self._pos += -self._pos & 7  # align 8
        __pyx_v_self->_pos = (__pyx_v_self->_pos + ((-__pyx_v_self->_pos) & 7));
+438:                     key = self._read_string_unpack()
        __pyx_t_4 = ((struct __pyx_vtabstruct_9dbus_fast_8_private_12unmarshaller_Unmarshaller *)__pyx_v_self->__pyx_vtab)->_read_string_unpack(__pyx_v_self); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 438, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_4);
        __pyx_t_4 = 0;
+439:                     result_dict[key] = self._read_variant()
        __pyx_t_4 = ((struct __pyx_vtabstruct_9dbus_fast_8_private_12unmarshaller_Unmarshaller *)__pyx_v_self->__pyx_vtab)->_read_variant(__pyx_v_self); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 439, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        if (unlikely(PyDict_SetItem(__pyx_v_result_dict, __pyx_v_key, __pyx_t_4) < 0)) __PYX_ERR(0, 439, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      }
+440:             elif child_0_token == "q" and child_1_token == "v":
    __pyx_t_11 = (__Pyx_PyUnicode_Equals(__pyx_v_child_0_token, __pyx_n_u_q, Py_EQ)); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 440, __pyx_L1_error)
    if (__pyx_t_11) {
    } else {
      __pyx_t_2 = __pyx_t_11;
      goto __pyx_L14_bool_binop_done;
    }
    __pyx_t_11 = (__Pyx_PyUnicode_Equals(__pyx_v_child_1_token, __pyx_n_u_v, Py_EQ)); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 440, __pyx_L1_error)
    __pyx_t_2 = __pyx_t_11;
    __pyx_L14_bool_binop_done:;
    if (__pyx_t_2) {
/* … */
      goto __pyx_L9;
    }
+441:                 while self._pos - beginning_pos < array_length:
      while (1) {
        __pyx_t_2 = (((__pyx_v_self->_pos - __pyx_v_beginning_pos) < __pyx_v_array_length) != 0);
        if (!__pyx_t_2) break;
+442:                     self._pos += -self._pos & 7  # align 8
        __pyx_v_self->_pos = (__pyx_v_self->_pos + ((-__pyx_v_self->_pos) & 7));
+443:                     key = self._read_uint16_unpack()
        __pyx_t_4 = __Pyx_PyInt_From_unsigned_int(((struct __pyx_vtabstruct_9dbus_fast_8_private_12unmarshaller_Unmarshaller *)__pyx_v_self->__pyx_vtab)->_read_uint16_unpack(__pyx_v_self)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 443, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_4);
        __pyx_t_4 = 0;
+444:                     result_dict[key] = self._read_variant()
        __pyx_t_4 = ((struct __pyx_vtabstruct_9dbus_fast_8_private_12unmarshaller_Unmarshaller *)__pyx_v_self->__pyx_vtab)->_read_variant(__pyx_v_self); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 444, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        if (unlikely(PyDict_SetItem(__pyx_v_result_dict, __pyx_v_key, __pyx_t_4) < 0)) __PYX_ERR(0, 444, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      }
+445:             elif child_0_token == "s" and child_1_token == "a":
    __pyx_t_11 = (__Pyx_PyUnicode_Equals(__pyx_v_child_0_token, __pyx_n_u_s, Py_EQ)); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 445, __pyx_L1_error)
    if (__pyx_t_11) {
    } else {
      __pyx_t_2 = __pyx_t_11;
      goto __pyx_L18_bool_binop_done;
    }
    __pyx_t_11 = (__Pyx_PyUnicode_Equals(__pyx_v_child_1_token, __pyx_n_u_a, Py_EQ)); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 445, __pyx_L1_error)
    __pyx_t_2 = __pyx_t_11;
    __pyx_L18_bool_binop_done:;
    if (__pyx_t_2) {
/* … */
      goto __pyx_L9;
    }
+446:                 while self._pos - beginning_pos < array_length:
      while (1) {
        __pyx_t_2 = (((__pyx_v_self->_pos - __pyx_v_beginning_pos) < __pyx_v_array_length) != 0);
        if (!__pyx_t_2) break;
+447:                     self._pos += -self._pos & 7  # align 8
        __pyx_v_self->_pos = (__pyx_v_self->_pos + ((-__pyx_v_self->_pos) & 7));
+448:                     key = self._read_string_unpack()
        __pyx_t_4 = ((struct __pyx_vtabstruct_9dbus_fast_8_private_12unmarshaller_Unmarshaller *)__pyx_v_self->__pyx_vtab)->_read_string_unpack(__pyx_v_self); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 448, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_4);
        __pyx_t_4 = 0;
+449:                     result_dict[key] = self._read_array(child_1)
        __pyx_t_4 = ((struct __pyx_vtabstruct_9dbus_fast_8_private_12unmarshaller_Unmarshaller *)__pyx_v_self->__pyx_vtab)->_read_array(__pyx_v_self, __pyx_v_child_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 449, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        if (unlikely(PyDict_SetItem(__pyx_v_result_dict, __pyx_v_key, __pyx_t_4) < 0)) __PYX_ERR(0, 449, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      }
 450:             else:
+451:                 reader_1 = self._readers[child_1_token]
    /*else*/ {
      __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_v_self->_readers, __pyx_v_child_1_token); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 451, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_v_reader_1 = __pyx_t_4;
      __pyx_t_4 = 0;
+452:                 reader_0 = self._readers[child_0_token]
      __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_v_self->_readers, __pyx_v_child_0_token); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 452, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_v_reader_0 = __pyx_t_4;
      __pyx_t_4 = 0;
+453:                 while self._pos - beginning_pos < array_length:
      while (1) {
        __pyx_t_2 = (((__pyx_v_self->_pos - __pyx_v_beginning_pos) < __pyx_v_array_length) != 0);
        if (!__pyx_t_2) break;
+454:                     self._pos += -self._pos & 7  # align 8
        __pyx_v_self->_pos = (__pyx_v_self->_pos + ((-__pyx_v_self->_pos) & 7));
+455:                     key = reader_0(self, child_0)
        __Pyx_INCREF(__pyx_v_reader_0);
        __pyx_t_6 = __pyx_v_reader_0; __pyx_t_9 = NULL;
        __pyx_t_8 = 0;
        if (CYTHON_UNPACK_METHODS && unlikely(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_8 = 1;
          }
        }
        #if CYTHON_FAST_PYCALL
        if (PyFunction_Check(__pyx_t_6)) {
          PyObject *__pyx_temp[3] = {__pyx_t_9, ((PyObject *)__pyx_v_self), __pyx_v_child_0};
          __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 455, __pyx_L1_error)
          __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
          __Pyx_GOTREF(__pyx_t_4);
        } else
        #endif
        #if CYTHON_FAST_PYCCALL
        if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
          PyObject *__pyx_temp[3] = {__pyx_t_9, ((PyObject *)__pyx_v_self), __pyx_v_child_0};
          __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 455, __pyx_L1_error)
          __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
          __Pyx_GOTREF(__pyx_t_4);
        } else
        #endif
        {
          __pyx_t_5 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 455, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          if (__pyx_t_9) {
            __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_9); __pyx_t_9 = NULL;
          }
          __Pyx_INCREF(((PyObject *)__pyx_v_self));
          __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
          PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_8, ((PyObject *)__pyx_v_self));
          __Pyx_INCREF(__pyx_v_child_0);
          __Pyx_GIVEREF(__pyx_v_child_0);
          PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_8, __pyx_v_child_0);
          __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 455, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        }
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_4);
        __pyx_t_4 = 0;
+456:                     result_dict[key] = reader_1(self, child_1)
        __Pyx_INCREF(__pyx_v_reader_1);
        __pyx_t_6 = __pyx_v_reader_1; __pyx_t_5 = NULL;
        __pyx_t_8 = 0;
        if (CYTHON_UNPACK_METHODS && 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_8 = 1;
          }
        }
        #if CYTHON_FAST_PYCALL
        if (PyFunction_Check(__pyx_t_6)) {
          PyObject *__pyx_temp[3] = {__pyx_t_5, ((PyObject *)__pyx_v_self), __pyx_v_child_1};
          __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 456, __pyx_L1_error)
          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_GOTREF(__pyx_t_4);
        } else
        #endif
        #if CYTHON_FAST_PYCCALL
        if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
          PyObject *__pyx_temp[3] = {__pyx_t_5, ((PyObject *)__pyx_v_self), __pyx_v_child_1};
          __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 456, __pyx_L1_error)
          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_GOTREF(__pyx_t_4);
        } else
        #endif
        {
          __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 456, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_9);
          if (__pyx_t_5) {
            __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_5); __pyx_t_5 = NULL;
          }
          __Pyx_INCREF(((PyObject *)__pyx_v_self));
          __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
          PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, ((PyObject *)__pyx_v_self));
          __Pyx_INCREF(__pyx_v_child_1);
          __Pyx_GIVEREF(__pyx_v_child_1);
          PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_v_child_1);
          __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_9, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 456, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        }
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (unlikely(PyDict_SetItem(__pyx_v_result_dict, __pyx_v_key, __pyx_t_4) < 0)) __PYX_ERR(0, 456, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      }
    }
    __pyx_L9:;
 457: 
+458:             return result_dict
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_result_dict);
    __pyx_r = __pyx_v_result_dict;
    goto __pyx_L0;
 459: 
+460:         if array_length == 0:
  __pyx_t_2 = ((__pyx_v_array_length == 0) != 0);
  if (__pyx_t_2) {
/* … */
  }
+461:             return []
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 461, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;
 462: 
+463:         result_list = []
  __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 463, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_v_result_list = ((PyObject*)__pyx_t_4);
  __pyx_t_4 = 0;
+464:         beginning_pos = self._pos
  __pyx_t_10 = __pyx_v_self->_pos;
  __pyx_v_beginning_pos = __pyx_t_10;
+465:         if token in "os":
  __pyx_t_2 = (__Pyx_PyUnicode_ContainsTF(__pyx_v_token, __pyx_n_u_os, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 465, __pyx_L1_error)
  __pyx_t_11 = (__pyx_t_2 != 0);
  if (__pyx_t_11) {
/* … */
  }
+466:             while self._pos - beginning_pos < array_length:
    while (1) {
      __pyx_t_11 = (((__pyx_v_self->_pos - __pyx_v_beginning_pos) < __pyx_v_array_length) != 0);
      if (!__pyx_t_11) break;
+467:                 result_list.append(self._read_string_unpack())
      __pyx_t_4 = ((struct __pyx_vtabstruct_9dbus_fast_8_private_12unmarshaller_Unmarshaller *)__pyx_v_self->__pyx_vtab)->_read_string_unpack(__pyx_v_self); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 467, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_12 = __Pyx_PyList_Append(__pyx_v_result_list, __pyx_t_4); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(0, 467, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
+468:             return result_list
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_result_list);
    __pyx_r = __pyx_v_result_list;
    goto __pyx_L0;
+469:         reader = self._readers[token]
  __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_v_self->_readers, __pyx_v_token); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 469, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_v_reader = __pyx_t_4;
  __pyx_t_4 = 0;
+470:         while self._pos - beginning_pos < array_length:
  while (1) {
    __pyx_t_11 = (((__pyx_v_self->_pos - __pyx_v_beginning_pos) < __pyx_v_array_length) != 0);
    if (!__pyx_t_11) break;
+471:             result_list.append(reader(self, child_type))
    __Pyx_INCREF(__pyx_v_reader);
    __pyx_t_6 = __pyx_v_reader; __pyx_t_9 = NULL;
    __pyx_t_8 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(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_8 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_6)) {
      PyObject *__pyx_temp[3] = {__pyx_t_9, ((PyObject *)__pyx_v_self), __pyx_v_child_type};
      __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 471, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_GOTREF(__pyx_t_4);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
      PyObject *__pyx_temp[3] = {__pyx_t_9, ((PyObject *)__pyx_v_self), __pyx_v_child_type};
      __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 471, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_GOTREF(__pyx_t_4);
    } else
    #endif
    {
      __pyx_t_5 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 471, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      if (__pyx_t_9) {
        __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_9); __pyx_t_9 = NULL;
      }
      __Pyx_INCREF(((PyObject *)__pyx_v_self));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
      PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_8, ((PyObject *)__pyx_v_self));
      __Pyx_INCREF(__pyx_v_child_type);
      __Pyx_GIVEREF(__pyx_v_child_type);
      PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_8, __pyx_v_child_type);
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 471, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_12 = __Pyx_PyList_Append(__pyx_v_result_list, __pyx_t_4); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(0, 471, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
+472:         return result_list
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_result_list);
  __pyx_r = __pyx_v_result_list;
  goto __pyx_L0;
 473: 
+474:     def header_fields(self, header_length: int) -> Dict[str, Any]:
static PyObject *__pyx_f_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_header_fields(struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *__pyx_v_self, unsigned int __pyx_v_header_length) {
  unsigned long __pyx_v_beginning_pos;
  unsigned long __pyx_v_o;
  unsigned int __pyx_v_field_0;
  unsigned int __pyx_v_token_as_int;
  unsigned int __pyx_v_signature_len;
  PyObject *__pyx_v_headers = NULL;
  PyObject *__pyx_v_buf = NULL;
  PyObject *__pyx_v_readers = NULL;
  PyObject *__pyx_v_key = NULL;
  PyObject *__pyx_v_token = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("header_fields", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("dbus_fast._private.unmarshaller.Unmarshaller.header_fields", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_headers);
  __Pyx_XDECREF(__pyx_v_buf);
  __Pyx_XDECREF(__pyx_v_readers);
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XDECREF(__pyx_v_token);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 475:         """Header fields are always a(yv)."""
+476:         beginning_pos = self._pos
  __pyx_t_1 = __pyx_v_self->_pos;
  __pyx_v_beginning_pos = __pyx_t_1;
+477:         headers = {}
  __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 477, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_headers = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;
+478:         buf = self._buf
  __pyx_t_2 = __pyx_v_self->_buf;
  __Pyx_INCREF(__pyx_t_2);
  __pyx_v_buf = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;
+479:         readers = self._readers
  __pyx_t_2 = __pyx_v_self->_readers;
  __Pyx_INCREF(__pyx_t_2);
  __pyx_v_readers = __pyx_t_2;
  __pyx_t_2 = 0;
+480:         while self._pos - beginning_pos < header_length:
  while (1) {
    __pyx_t_3 = (((__pyx_v_self->_pos - __pyx_v_beginning_pos) < __pyx_v_header_length) != 0);
    if (!__pyx_t_3) break;
 481:             # Now read the y (byte) of struct (yv)
+482:             self._pos += (-self._pos & 7) + 1  # align 8 + 1 for 'y' byte
    __pyx_v_self->_pos = (__pyx_v_self->_pos + (((-__pyx_v_self->_pos) & 7) + 1));
+483:             field_0 = buf[self._pos - 1]
    __pyx_t_4 = (__pyx_v_self->_pos - 1);
    __pyx_t_5 = __Pyx_GetItemInt_ByteArray(__pyx_v_buf, __pyx_t_4, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 483, __pyx_L1_error)
    __pyx_v_field_0 = __pyx_t_5;
 484: 
 485:             # Now read the v (variant) of struct (yv)
 486:             # first we read the signature
+487:             signature_len = buf[self._pos]  # byte
    __pyx_t_5 = __Pyx_GetItemInt_ByteArray(__pyx_v_buf, __pyx_v_self->_pos, unsigned int, 0, __Pyx_PyInt_From_unsigned_int, 0, 0, 1); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 487, __pyx_L1_error)
    __pyx_v_signature_len = __pyx_t_5;
+488:             o = self._pos + 1
    __pyx_v_o = (__pyx_v_self->_pos + 1);
+489:             self._pos += signature_len + 2  # one for the byte, one for the '\0'
    __pyx_v_self->_pos = (__pyx_v_self->_pos + (__pyx_v_signature_len + 2));
+490:             token_as_int = buf[o]
    __pyx_t_5 = __Pyx_GetItemInt_ByteArray(__pyx_v_buf, __pyx_v_o, unsigned long, 0, __Pyx_PyInt_From_unsigned_long, 0, 0, 1); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 490, __pyx_L1_error)
    __pyx_v_token_as_int = __pyx_t_5;
 491:             # Now that we have the token we can read the variant value
+492:             key = HEADER_MESSAGE_ARG_NAME[field_0]
    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_9dbus_fast_8_private_12unmarshaller_HEADER_MESSAGE_ARG_NAME, __pyx_v_field_0, unsigned int, 0, __Pyx_PyInt_From_unsigned_int, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 492, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_2);
    __pyx_t_2 = 0;
 493:             # Strings and signatures are the most common types
 494:             # so we inline them for performance
+495:             if token_as_int == TOKEN_O_AS_INT or token_as_int == TOKEN_S_AS_INT:
    __pyx_t_6 = ((__pyx_v_token_as_int == __pyx_v_9dbus_fast_8_private_12unmarshaller_TOKEN_O_AS_INT) != 0);
    if (!__pyx_t_6) {
    } else {
      __pyx_t_3 = __pyx_t_6;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_t_6 = ((__pyx_v_token_as_int == __pyx_v_9dbus_fast_8_private_12unmarshaller_TOKEN_S_AS_INT) != 0);
    __pyx_t_3 = __pyx_t_6;
    __pyx_L6_bool_binop_done:;
    if (__pyx_t_3) {
/* … */
      goto __pyx_L5;
    }
+496:                 headers[key] = self._read_string_unpack()
      __pyx_t_2 = ((struct __pyx_vtabstruct_9dbus_fast_8_private_12unmarshaller_Unmarshaller *)__pyx_v_self->__pyx_vtab)->_read_string_unpack(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 496, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (unlikely(PyDict_SetItem(__pyx_v_headers, __pyx_v_key, __pyx_t_2) < 0)) __PYX_ERR(0, 496, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+497:             elif token_as_int == TOKEN_G_AS_INT:
    __pyx_t_3 = ((__pyx_v_token_as_int == __pyx_v_9dbus_fast_8_private_12unmarshaller_TOKEN_G_AS_INT) != 0);
    if (__pyx_t_3) {
/* … */
      goto __pyx_L5;
    }
+498:                 headers[key] = self._read_signature()
      __pyx_t_2 = ((struct __pyx_vtabstruct_9dbus_fast_8_private_12unmarshaller_Unmarshaller *)__pyx_v_self->__pyx_vtab)->_read_signature(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 498, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (unlikely(PyDict_SetItem(__pyx_v_headers, __pyx_v_key, __pyx_t_2) < 0)) __PYX_ERR(0, 498, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 499:             else:
+500:                 token = buf[o : o + signature_len].decode()
    /*else*/ {
      if (unlikely(__pyx_v_buf == Py_None)) {
        PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
        __PYX_ERR(0, 500, __pyx_L1_error)
      }
      __pyx_t_2 = __Pyx_decode_bytearray(__pyx_v_buf, __pyx_v_o, (__pyx_v_o + __pyx_v_signature_len), NULL, NULL, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 500, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_XDECREF_SET(__pyx_v_token, __pyx_t_2);
      __pyx_t_2 = 0;
 501:                 # There shouldn't be any other types in the header
 502:                 # but just in case, we'll read it using the slow path
+503:                 headers[key] = readers[token](self, get_signature_tree(token).types[0])
      __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_v_readers, __pyx_v_token); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 503, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_INCREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_get_signature_tree);
      __pyx_t_9 = __pyx_v_9dbus_fast_8_private_12unmarshaller_get_signature_tree; __pyx_t_10 = NULL;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) {
        __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9);
        if (likely(__pyx_t_10)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
          __Pyx_INCREF(__pyx_t_10);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_9, function);
        }
      }
      __pyx_t_8 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_10, __pyx_v_token) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_v_token);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 503, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_types); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 503, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_9, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 503, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_9 = NULL;
      __pyx_t_5 = 0;
      if (CYTHON_UNPACK_METHODS && 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_5 = 1;
        }
      }
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_7)) {
        PyObject *__pyx_temp[3] = {__pyx_t_9, ((PyObject *)__pyx_v_self), __pyx_t_8};
        __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 503, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) {
        PyObject *__pyx_temp[3] = {__pyx_t_9, ((PyObject *)__pyx_v_self), __pyx_t_8};
        __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 503, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      } else
      #endif
      {
        __pyx_t_10 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 503, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_10);
        if (__pyx_t_9) {
          __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_9); __pyx_t_9 = NULL;
        }
        __Pyx_INCREF(((PyObject *)__pyx_v_self));
        __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
        PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_5, ((PyObject *)__pyx_v_self));
        __Pyx_GIVEREF(__pyx_t_8);
        PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_5, __pyx_t_8);
        __pyx_t_8 = 0;
        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_10, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 503, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      }
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(PyDict_SetItem(__pyx_v_headers, __pyx_v_key, __pyx_t_2) < 0)) __PYX_ERR(0, 503, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __pyx_L5:;
  }
+504:         return headers
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_headers);
  __pyx_r = __pyx_v_headers;
  goto __pyx_L0;
 505: 
+506:     def _read_header(self) -> None:
static PyObject *__pyx_f_9dbus_fast_8_private_12unmarshaller_12Unmarshaller__read_header(struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *__pyx_v_self) {
  unsigned int __pyx_v_endian;
  unsigned int __pyx_v_protocol_version;
  PyObject *__pyx_v_buffer = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_read_header", 0);
/* … */
  /* 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_9);
  __Pyx_AddTraceback("dbus_fast._private.unmarshaller.Unmarshaller._read_header", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_buffer);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 507:         """Read the header of the message."""
 508:         # Signature is of the header is
 509:         # BYTE, BYTE, BYTE, BYTE, UINT32, UINT32, ARRAY of STRUCT of (BYTE,VARIANT)
+510:         self._read_to_pos(HEADER_SIGNATURE_SIZE)
  __pyx_t_1 = ((struct __pyx_vtabstruct_9dbus_fast_8_private_12unmarshaller_Unmarshaller *)__pyx_v_self->__pyx_vtab)->_read_to_pos(__pyx_v_self, __pyx_v_9dbus_fast_8_private_12unmarshaller_HEADER_SIGNATURE_SIZE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 510, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+511:         buffer = self._buf
  __pyx_t_1 = __pyx_v_self->_buf;
  __Pyx_INCREF(__pyx_t_1);
  __pyx_v_buffer = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
+512:         endian = buffer[0]
  __pyx_t_2 = __Pyx_GetItemInt_ByteArray(__pyx_v_buffer, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(0, 512, __pyx_L1_error)
  __pyx_v_endian = __pyx_t_2;
+513:         self._message_type = buffer[1]
  __pyx_t_2 = __Pyx_GetItemInt_ByteArray(__pyx_v_buffer, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(0, 513, __pyx_L1_error)
  __pyx_v_self->_message_type = __pyx_t_2;
+514:         self._flag = buffer[2]
  __pyx_t_2 = __Pyx_GetItemInt_ByteArray(__pyx_v_buffer, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(0, 514, __pyx_L1_error)
  __pyx_v_self->_flag = __pyx_t_2;
+515:         protocol_version = buffer[3]
  __pyx_t_2 = __Pyx_GetItemInt_ByteArray(__pyx_v_buffer, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(0, 515, __pyx_L1_error)
  __pyx_v_protocol_version = __pyx_t_2;
 516: 
+517:         if protocol_version != PROTOCOL_VERSION:
  __pyx_t_3 = ((__pyx_v_protocol_version != __pyx_v_9dbus_fast_8_private_12unmarshaller_PROTOCOL_VERSION) != 0);
  if (unlikely(__pyx_t_3)) {
/* … */
  }
+518:             raise InvalidMessageError(
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_InvalidMessageError); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 518, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
+519:                 f"got unknown protocol version: {protocol_version}"
    __pyx_t_5 = __Pyx_PyUnicode_From_unsigned_int(__pyx_v_protocol_version, 0, ' ', 'd'); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 519, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyUnicode_Concat(__pyx_kp_u_got_unknown_protocol_version, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 519, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 518, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(0, 518, __pyx_L1_error)
 520:             )
 521: 
+522:         if cython.compiled and (
  __pyx_t_7 = (1 != 0);
  if (__pyx_t_7) {
  } else {
    __pyx_t_3 = __pyx_t_7;
    goto __pyx_L5_bool_binop_done;
  }
/* … */
  if (__pyx_t_3) {
/* … */
    goto __pyx_L4;
  }
+523:             (endian == LITTLE_ENDIAN and SYS_IS_LITTLE_ENDIAN)
  __pyx_t_7 = ((__pyx_v_endian == __pyx_v_9dbus_fast_8_private_12unmarshaller_LITTLE_ENDIAN) != 0);
  if (!__pyx_t_7) {
    goto __pyx_L7_next_or;
  } else {
  }
  __pyx_t_7 = (__pyx_v_9dbus_fast_8_private_12unmarshaller_SYS_IS_LITTLE_ENDIAN != 0);
  if (!__pyx_t_7) {
  } else {
    __pyx_t_3 = __pyx_t_7;
    goto __pyx_L5_bool_binop_done;
  }
  __pyx_L7_next_or:;
+524:             or (endian == BIG_ENDIAN and SYS_IS_BIG_ENDIAN)
  __pyx_t_7 = ((__pyx_v_endian == __pyx_v_9dbus_fast_8_private_12unmarshaller_BIG_ENDIAN) != 0);
  if (__pyx_t_7) {
  } else {
    __pyx_t_3 = __pyx_t_7;
    goto __pyx_L5_bool_binop_done;
  }
  __pyx_t_7 = (__pyx_v_9dbus_fast_8_private_12unmarshaller_SYS_IS_BIG_ENDIAN != 0);
  __pyx_t_3 = __pyx_t_7;
  __pyx_L5_bool_binop_done:;
 525:         ):
+526:             self._is_native = 1  # pragma: no cover
    __pyx_v_self->_is_native = 1;
+527:             self._body_len = _cast_uint32_native(self._buf, 4)  # pragma: no cover
    __pyx_t_8 = __Pyx_PyObject_AsString(__pyx_v_self->_buf); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(0, 527, __pyx_L1_error)
    __pyx_v_self->_body_len = __pyx_f_9dbus_fast_8_private_12unmarshaller__cast_uint32_native(__pyx_t_8, 4);
+528:             self._serial = _cast_uint32_native(self._buf, 8)  # pragma: no cover
    __pyx_t_8 = __Pyx_PyObject_AsString(__pyx_v_self->_buf); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(0, 528, __pyx_L1_error)
    __pyx_v_self->_serial = __pyx_f_9dbus_fast_8_private_12unmarshaller__cast_uint32_native(__pyx_t_8, 8);
+529:             self._header_len = _cast_uint32_native(self._buf, 12)  # pragma: no cover
    __pyx_t_8 = __Pyx_PyObject_AsString(__pyx_v_self->_buf); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(0, 529, __pyx_L1_error)
    __pyx_v_self->_header_len = __pyx_f_9dbus_fast_8_private_12unmarshaller__cast_uint32_native(__pyx_t_8, 12);
+530:         elif endian == LITTLE_ENDIAN:
  __pyx_t_3 = ((__pyx_v_endian == __pyx_v_9dbus_fast_8_private_12unmarshaller_LITTLE_ENDIAN) != 0);
  if (__pyx_t_3) {
/* … */
    goto __pyx_L4;
  }
 531:             (
+532:                 self._body_len,
    __pyx_t_11 = __Pyx_PyInt_As_unsigned_int(__pyx_t_4); if (unlikely((__pyx_t_11 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 532, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_12 = __Pyx_PyInt_As_unsigned_int(__pyx_t_5); if (unlikely((__pyx_t_12 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 532, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_13 = __Pyx_PyInt_As_unsigned_int(__pyx_t_6); if (unlikely((__pyx_t_13 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 532, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_v_self->_body_len = __pyx_t_11;
+533:                 self._serial,
    __pyx_v_self->_serial = __pyx_t_12;
+534:                 self._header_len,
    __pyx_v_self->_header_len = __pyx_t_13;
+535:             ) = UNPACK_HEADER_LITTLE_ENDIAN(self._buf, 4)
    __Pyx_INCREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_UNPACK_HEADER_LITTLE_ENDIAN);
    __pyx_t_4 = __pyx_v_9dbus_fast_8_private_12unmarshaller_UNPACK_HEADER_LITTLE_ENDIAN; __pyx_t_6 = NULL;
    __pyx_t_2 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_2 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_self->_buf, __pyx_int_4};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_2, 2+__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 535, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_self->_buf, __pyx_int_4};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_2, 2+__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 535, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    {
      __pyx_t_5 = PyTuple_New(2+__pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 535, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      if (__pyx_t_6) {
        __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6); __pyx_t_6 = NULL;
      }
      __Pyx_INCREF(__pyx_v_self->_buf);
      __Pyx_GIVEREF(__pyx_v_self->_buf);
      PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_2, __pyx_v_self->_buf);
      __Pyx_INCREF(__pyx_int_4);
      __Pyx_GIVEREF(__pyx_int_4);
      PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_2, __pyx_int_4);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 535, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    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 != 3)) {
        if (size > 3) __Pyx_RaiseTooManyValuesError(3);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 532, __pyx_L1_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_5 = PyTuple_GET_ITEM(sequence, 1); 
        __pyx_t_6 = PyTuple_GET_ITEM(sequence, 2); 
      } else {
        __pyx_t_4 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_5 = PyList_GET_ITEM(sequence, 1); 
        __pyx_t_6 = PyList_GET_ITEM(sequence, 2); 
      }
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      #else
      __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 532, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 532, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 532, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_9 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 532, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_10 = Py_TYPE(__pyx_t_9)->tp_iternext;
      index = 0; __pyx_t_4 = __pyx_t_10(__pyx_t_9); if (unlikely(!__pyx_t_4)) goto __pyx_L10_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_4);
      index = 1; __pyx_t_5 = __pyx_t_10(__pyx_t_9); if (unlikely(!__pyx_t_5)) goto __pyx_L10_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_5);
      index = 2; __pyx_t_6 = __pyx_t_10(__pyx_t_9); if (unlikely(!__pyx_t_6)) goto __pyx_L10_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_6);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_10(__pyx_t_9), 3) < 0) __PYX_ERR(0, 532, __pyx_L1_error)
      __pyx_t_10 = NULL;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      goto __pyx_L11_unpacking_done;
      __pyx_L10_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_10 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 532, __pyx_L1_error)
      __pyx_L11_unpacking_done:;
    }
+536:             self._uint32_unpack = UINT32_UNPACK_LITTLE_ENDIAN
    __Pyx_INCREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_UINT32_UNPACK_LITTLE_ENDIAN);
    __Pyx_GIVEREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_UINT32_UNPACK_LITTLE_ENDIAN);
    __Pyx_GOTREF(__pyx_v_self->_uint32_unpack);
    __Pyx_DECREF(__pyx_v_self->_uint32_unpack);
    __pyx_v_self->_uint32_unpack = __pyx_v_9dbus_fast_8_private_12unmarshaller_UINT32_UNPACK_LITTLE_ENDIAN;
+537:             self._int16_unpack = INT16_UNPACK_LITTLE_ENDIAN
    __Pyx_INCREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_INT16_UNPACK_LITTLE_ENDIAN);
    __Pyx_GIVEREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_INT16_UNPACK_LITTLE_ENDIAN);
    __Pyx_GOTREF(__pyx_v_self->_int16_unpack);
    __Pyx_DECREF(__pyx_v_self->_int16_unpack);
    __pyx_v_self->_int16_unpack = __pyx_v_9dbus_fast_8_private_12unmarshaller_INT16_UNPACK_LITTLE_ENDIAN;
+538:             self._uint16_unpack = UINT16_UNPACK_LITTLE_ENDIAN
    __Pyx_INCREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_UINT16_UNPACK_LITTLE_ENDIAN);
    __Pyx_GIVEREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_UINT16_UNPACK_LITTLE_ENDIAN);
    __Pyx_GOTREF(__pyx_v_self->_uint16_unpack);
    __Pyx_DECREF(__pyx_v_self->_uint16_unpack);
    __pyx_v_self->_uint16_unpack = __pyx_v_9dbus_fast_8_private_12unmarshaller_UINT16_UNPACK_LITTLE_ENDIAN;
+539:         elif endian == BIG_ENDIAN:
  __pyx_t_3 = ((__pyx_v_endian == __pyx_v_9dbus_fast_8_private_12unmarshaller_BIG_ENDIAN) != 0);
  if (likely(__pyx_t_3)) {
/* … */
    goto __pyx_L4;
  }
+540:             self._body_len, self._serial, self._header_len = UNPACK_HEADER_BIG_ENDIAN(
    __pyx_t_13 = __Pyx_PyInt_As_unsigned_int(__pyx_t_6); if (unlikely((__pyx_t_13 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 540, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_12 = __Pyx_PyInt_As_unsigned_int(__pyx_t_4); if (unlikely((__pyx_t_12 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 540, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_11 = __Pyx_PyInt_As_unsigned_int(__pyx_t_5); if (unlikely((__pyx_t_11 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 540, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_v_self->_body_len = __pyx_t_13;
    __pyx_v_self->_serial = __pyx_t_12;
    __pyx_v_self->_header_len = __pyx_t_11;
+541:                 self._buf, 4
    __Pyx_INCREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_UNPACK_HEADER_BIG_ENDIAN);
    __pyx_t_6 = __pyx_v_9dbus_fast_8_private_12unmarshaller_UNPACK_HEADER_BIG_ENDIAN; __pyx_t_5 = NULL;
    __pyx_t_2 = 0;
    if (CYTHON_UNPACK_METHODS && 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_2 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_6)) {
      PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_self->_buf, __pyx_int_4};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_2, 2+__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 540, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
      PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_self->_buf, __pyx_int_4};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_2, 2+__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 540, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    {
      __pyx_t_4 = PyTuple_New(2+__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 540, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (__pyx_t_5) {
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __pyx_t_5 = NULL;
      }
      __Pyx_INCREF(__pyx_v_self->_buf);
      __Pyx_GIVEREF(__pyx_v_self->_buf);
      PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_2, __pyx_v_self->_buf);
      __Pyx_INCREF(__pyx_int_4);
      __Pyx_GIVEREF(__pyx_int_4);
      PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_2, __pyx_int_4);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 540, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    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 != 3)) {
        if (size > 3) __Pyx_RaiseTooManyValuesError(3);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 540, __pyx_L1_error)
      }
      #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_6 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); 
        __pyx_t_5 = PyTuple_GET_ITEM(sequence, 2); 
      } else {
        __pyx_t_6 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_4 = PyList_GET_ITEM(sequence, 1); 
        __pyx_t_5 = PyList_GET_ITEM(sequence, 2); 
      }
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      #else
      __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 540, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 540, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 540, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_9 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 540, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_10 = Py_TYPE(__pyx_t_9)->tp_iternext;
      index = 0; __pyx_t_6 = __pyx_t_10(__pyx_t_9); if (unlikely(!__pyx_t_6)) goto __pyx_L12_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_6);
      index = 1; __pyx_t_4 = __pyx_t_10(__pyx_t_9); if (unlikely(!__pyx_t_4)) goto __pyx_L12_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_4);
      index = 2; __pyx_t_5 = __pyx_t_10(__pyx_t_9); if (unlikely(!__pyx_t_5)) goto __pyx_L12_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_5);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_10(__pyx_t_9), 3) < 0) __PYX_ERR(0, 540, __pyx_L1_error)
      __pyx_t_10 = NULL;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      goto __pyx_L13_unpacking_done;
      __pyx_L12_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_10 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 540, __pyx_L1_error)
      __pyx_L13_unpacking_done:;
    }
 542:             )
+543:             self._uint32_unpack = UINT32_UNPACK_BIG_ENDIAN
    __Pyx_INCREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_UINT32_UNPACK_BIG_ENDIAN);
    __Pyx_GIVEREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_UINT32_UNPACK_BIG_ENDIAN);
    __Pyx_GOTREF(__pyx_v_self->_uint32_unpack);
    __Pyx_DECREF(__pyx_v_self->_uint32_unpack);
    __pyx_v_self->_uint32_unpack = __pyx_v_9dbus_fast_8_private_12unmarshaller_UINT32_UNPACK_BIG_ENDIAN;
+544:             self._int16_unpack = INT16_UNPACK_BIG_ENDIAN
    __Pyx_INCREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_INT16_UNPACK_BIG_ENDIAN);
    __Pyx_GIVEREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_INT16_UNPACK_BIG_ENDIAN);
    __Pyx_GOTREF(__pyx_v_self->_int16_unpack);
    __Pyx_DECREF(__pyx_v_self->_int16_unpack);
    __pyx_v_self->_int16_unpack = __pyx_v_9dbus_fast_8_private_12unmarshaller_INT16_UNPACK_BIG_ENDIAN;
+545:             self._uint16_unpack = UINT16_UNPACK_BIG_ENDIAN
    __Pyx_INCREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_UINT16_UNPACK_BIG_ENDIAN);
    __Pyx_GIVEREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_UINT16_UNPACK_BIG_ENDIAN);
    __Pyx_GOTREF(__pyx_v_self->_uint16_unpack);
    __Pyx_DECREF(__pyx_v_self->_uint16_unpack);
    __pyx_v_self->_uint16_unpack = __pyx_v_9dbus_fast_8_private_12unmarshaller_UINT16_UNPACK_BIG_ENDIAN;
 546:         else:
+547:             raise InvalidMessageError(
  /*else*/ {
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_InvalidMessageError); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 547, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
+548:                 f"Expecting endianness as the first byte, got {endian} from {buffer}"
    __pyx_t_4 = PyTuple_New(4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 548, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_14 = 0;
    __pyx_t_15 = 127;
    __Pyx_INCREF(__pyx_kp_u_Expecting_endianness_as_the_firs);
    __pyx_t_14 += 44;
    __Pyx_GIVEREF(__pyx_kp_u_Expecting_endianness_as_the_firs);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_kp_u_Expecting_endianness_as_the_firs);
    __pyx_t_6 = __Pyx_PyUnicode_From_unsigned_int(__pyx_v_endian, 0, ' ', 'd'); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 548, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_14 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_6);
    __pyx_t_6 = 0;
    __Pyx_INCREF(__pyx_kp_u_from);
    __pyx_t_14 += 6;
    __Pyx_GIVEREF(__pyx_kp_u_from);
    PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_kp_u_from);
    __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_v_buffer, __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 548, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_15 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) > __pyx_t_15) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) : __pyx_t_15;
    __pyx_t_14 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_t_6);
    __pyx_t_6 = 0;
    __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_4, 4, __pyx_t_14, __pyx_t_15); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 548, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = NULL;
    if (CYTHON_UNPACK_METHODS && 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_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_4, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 547, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(0, 547, __pyx_L1_error)
  }
  __pyx_L4:;
 549:             )
 550: 
+551:         self._msg_len = (
  __pyx_v_self->_msg_len = ((__pyx_v_self->_header_len + ((-__pyx_v_self->_header_len) & 7)) + __pyx_v_self->_body_len);
 552:             self._header_len + (-self._header_len & 7) + self._body_len
 553:         )  # align 8
+554:         self._readers = self._readers_by_type[endian]
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_readers_by_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 554, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_1, __pyx_v_endian, unsigned int, 0, __Pyx_PyInt_From_unsigned_int, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 554, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_self->_readers);
  __Pyx_DECREF(__pyx_v_self->_readers);
  __pyx_v_self->_readers = __pyx_t_5;
  __pyx_t_5 = 0;
 555: 
+556:     def _read_body(self) -> None:
static PyObject *__pyx_f_9dbus_fast_8_private_12unmarshaller_12Unmarshaller__read_body(struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *__pyx_v_self) {
  PyObject *__pyx_v_body = 0;
  PyObject *__pyx_v_header_fields = NULL;
  PyObject *__pyx_v_signature = NULL;
  PyObject *__pyx_v_tree = NULL;
  PyObject *__pyx_8genexpr1__pyx_v_t = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_read_body", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("dbus_fast._private.unmarshaller.Unmarshaller._read_body", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_body);
  __Pyx_XDECREF(__pyx_v_header_fields);
  __Pyx_XDECREF(__pyx_v_signature);
  __Pyx_XDECREF(__pyx_v_tree);
  __Pyx_XDECREF(__pyx_8genexpr1__pyx_v_t);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 557:         """Read the body of the message."""
+558:         self._read_to_pos(HEADER_SIGNATURE_SIZE + self._msg_len)
  __pyx_t_1 = ((struct __pyx_vtabstruct_9dbus_fast_8_private_12unmarshaller_Unmarshaller *)__pyx_v_self->__pyx_vtab)->_read_to_pos(__pyx_v_self, (__pyx_v_9dbus_fast_8_private_12unmarshaller_HEADER_SIGNATURE_SIZE + __pyx_v_self->_msg_len)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 558, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+559:         self._pos = HEADER_ARRAY_OF_STRUCT_SIGNATURE_POSITION
  __pyx_v_self->_pos = __pyx_v_9dbus_fast_8_private_12unmarshaller_HEADER_ARRAY_OF_STRUCT_SIGNATURE_POSITION;
+560:         header_fields = self.header_fields(self._header_len)
  __pyx_t_1 = ((struct __pyx_vtabstruct_9dbus_fast_8_private_12unmarshaller_Unmarshaller *)__pyx_v_self->__pyx_vtab)->header_fields(__pyx_v_self, __pyx_v_self->_header_len); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 560, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_header_fields = __pyx_t_1;
  __pyx_t_1 = 0;
+561:         self._pos += -self._pos & 7  # align 8
  __pyx_v_self->_pos = (__pyx_v_self->_pos + ((-__pyx_v_self->_pos) & 7));
+562:         header_fields.pop("unix_fds", None)  # defined by self._unix_fds
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_header_fields, __pyx_n_s_pop); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 562, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 562, __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;
/* … */
  __pyx_tuple__5 = PyTuple_Pack(2, __pyx_n_u_unix_fds, Py_None); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 562, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__5);
  __Pyx_GIVEREF(__pyx_tuple__5);
+563:         signature = header_fields.pop("signature", "")
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_header_fields, __pyx_n_s_pop); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 563, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 563, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_signature = __pyx_t_1;
  __pyx_t_1 = 0;
/* … */
  __pyx_tuple__6 = PyTuple_Pack(2, __pyx_n_u_signature, __pyx_kp_u__3); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 563, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__6);
  __Pyx_GIVEREF(__pyx_tuple__6);
+564:         if not self._body_len:
  __pyx_t_3 = ((!(__pyx_v_self->_body_len != 0)) != 0);
  if (__pyx_t_3) {
/* … */
    goto __pyx_L3;
  }
+565:             tree = SIGNATURE_TREE_EMPTY
    __Pyx_INCREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_EMPTY);
    __pyx_v_tree = __pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_EMPTY;
+566:             body = []
    __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 566, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_v_body = ((PyObject*)__pyx_t_1);
    __pyx_t_1 = 0;
+567:         elif signature == "s":
  __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_v_signature, __pyx_n_u_s, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 567, __pyx_L1_error)
  if (__pyx_t_3) {
/* … */
    goto __pyx_L3;
  }
+568:             tree = SIGNATURE_TREE_S
    __Pyx_INCREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_S);
    __pyx_v_tree = __pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_S;
+569:             body = [self._read_string_unpack()]
    __pyx_t_1 = ((struct __pyx_vtabstruct_9dbus_fast_8_private_12unmarshaller_Unmarshaller *)__pyx_v_self->__pyx_vtab)->_read_string_unpack(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 569, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 569, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_1);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_v_body = ((PyObject*)__pyx_t_2);
    __pyx_t_2 = 0;
+570:         elif signature == "sa{sv}as":
  __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_v_signature, __pyx_kp_u_sa_sv_as, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 570, __pyx_L1_error)
  if (__pyx_t_3) {
/* … */
    goto __pyx_L3;
  }
+571:             tree = SIGNATURE_TREE_SA_SV_AS
    __Pyx_INCREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_SA_SV_AS);
    __pyx_v_tree = __pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_SA_SV_AS;
+572:             body = [
    __pyx_t_1 = PyList_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 572, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2);
    PyList_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_4);
    PyList_SET_ITEM(__pyx_t_1, 1, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_5);
    PyList_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
    __pyx_t_2 = 0;
    __pyx_t_4 = 0;
    __pyx_t_5 = 0;
    __pyx_v_body = ((PyObject*)__pyx_t_1);
    __pyx_t_1 = 0;
+573:                 self._read_string_unpack(),
    __pyx_t_2 = ((struct __pyx_vtabstruct_9dbus_fast_8_private_12unmarshaller_Unmarshaller *)__pyx_v_self->__pyx_vtab)->_read_string_unpack(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 573, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
+574:                 self._read_array(SIGNATURE_TREE_SA_SV_AS_TYPES_1),
    __pyx_t_1 = __pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_SA_SV_AS_TYPES_1;
    __Pyx_INCREF(__pyx_t_1);
    __pyx_t_4 = ((struct __pyx_vtabstruct_9dbus_fast_8_private_12unmarshaller_Unmarshaller *)__pyx_v_self->__pyx_vtab)->_read_array(__pyx_v_self, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 574, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+575:                 self._read_array(SIGNATURE_TREE_SA_SV_AS_TYPES_2),
    __pyx_t_1 = __pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_SA_SV_AS_TYPES_2;
    __Pyx_INCREF(__pyx_t_1);
    __pyx_t_5 = ((struct __pyx_vtabstruct_9dbus_fast_8_private_12unmarshaller_Unmarshaller *)__pyx_v_self->__pyx_vtab)->_read_array(__pyx_v_self, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 575, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 576:             ]
+577:         elif signature == "oa{sa{sv}}":
  __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_v_signature, __pyx_kp_u_oa_sa_sv, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 577, __pyx_L1_error)
  if (__pyx_t_3) {
/* … */
    goto __pyx_L3;
  }
+578:             tree = SIGNATURE_TREE_OA_SA_SV
    __Pyx_INCREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_OA_SA_SV);
    __pyx_v_tree = __pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_OA_SA_SV;
+579:             body = [
    __pyx_t_5 = PyList_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 579, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_1);
    PyList_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_4);
    PyList_SET_ITEM(__pyx_t_5, 1, __pyx_t_4);
    __pyx_t_1 = 0;
    __pyx_t_4 = 0;
    __pyx_v_body = ((PyObject*)__pyx_t_5);
    __pyx_t_5 = 0;
+580:                 self._read_string_unpack(),
    __pyx_t_1 = ((struct __pyx_vtabstruct_9dbus_fast_8_private_12unmarshaller_Unmarshaller *)__pyx_v_self->__pyx_vtab)->_read_string_unpack(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 580, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
+581:                 self._read_array(SIGNATURE_TREE_OA_SA_SV_TYPES_1),
    __pyx_t_5 = __pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_OA_SA_SV_TYPES_1;
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_4 = ((struct __pyx_vtabstruct_9dbus_fast_8_private_12unmarshaller_Unmarshaller *)__pyx_v_self->__pyx_vtab)->_read_array(__pyx_v_self, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 581, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 582:             ]
+583:         elif signature == "oas":
  __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_v_signature, __pyx_n_u_oas, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 583, __pyx_L1_error)
  if (__pyx_t_3) {
/* … */
    goto __pyx_L3;
  }
+584:             tree = SIGNATURE_TREE_OAS
    __Pyx_INCREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_OAS);
    __pyx_v_tree = __pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_OAS;
+585:             body = [
    __pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 585, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_5);
    PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_1);
    PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_1);
    __pyx_t_5 = 0;
    __pyx_t_1 = 0;
    __pyx_v_body = ((PyObject*)__pyx_t_4);
    __pyx_t_4 = 0;
+586:                 self._read_string_unpack(),
    __pyx_t_5 = ((struct __pyx_vtabstruct_9dbus_fast_8_private_12unmarshaller_Unmarshaller *)__pyx_v_self->__pyx_vtab)->_read_string_unpack(__pyx_v_self); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 586, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
+587:                 self._read_array(SIGNATURE_TREE_OAS_TYPES_1),
    __pyx_t_4 = __pyx_v_9dbus_fast_8_private_12unmarshaller_SIGNATURE_TREE_OAS_TYPES_1;
    __Pyx_INCREF(__pyx_t_4);
    __pyx_t_1 = ((struct __pyx_vtabstruct_9dbus_fast_8_private_12unmarshaller_Unmarshaller *)__pyx_v_self->__pyx_vtab)->_read_array(__pyx_v_self, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 587, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 588:             ]
 589:         else:
+590:             tree = get_signature_tree(signature)
  /*else*/ {
    __Pyx_INCREF(__pyx_v_9dbus_fast_8_private_12unmarshaller_get_signature_tree);
    __pyx_t_1 = __pyx_v_9dbus_fast_8_private_12unmarshaller_get_signature_tree; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && 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 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_5, __pyx_v_signature) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_signature);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 590, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_v_tree = __pyx_t_4;
    __pyx_t_4 = 0;
+591:             body = [self._readers[t.token](self, t) for t in tree.types]
    { /* enter inner scope */
      __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 591, __pyx_L6_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_tree, __pyx_n_s_types); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 591, __pyx_L6_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
        __pyx_t_5 = __pyx_t_1; __Pyx_INCREF(__pyx_t_5); __pyx_t_6 = 0;
        __pyx_t_7 = NULL;
      } else {
        __pyx_t_6 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 591, __pyx_L6_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_7 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 591, __pyx_L6_error)
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      for (;;) {
        if (likely(!__pyx_t_7)) {
          if (likely(PyList_CheckExact(__pyx_t_5))) {
            if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_5)) break;
            #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
            __pyx_t_1 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_1); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 591, __pyx_L6_error)
            #else
            __pyx_t_1 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 591, __pyx_L6_error)
            __Pyx_GOTREF(__pyx_t_1);
            #endif
          } else {
            if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
            #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
            __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_1); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 591, __pyx_L6_error)
            #else
            __pyx_t_1 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 591, __pyx_L6_error)
            __Pyx_GOTREF(__pyx_t_1);
            #endif
          }
        } else {
          __pyx_t_1 = __pyx_t_7(__pyx_t_5);
          if (unlikely(!__pyx_t_1)) {
            PyObject* exc_type = PyErr_Occurred();
            if (exc_type) {
              if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
              else __PYX_ERR(0, 591, __pyx_L6_error)
            }
            break;
          }
          __Pyx_GOTREF(__pyx_t_1);
        }
        __Pyx_XDECREF_SET(__pyx_8genexpr1__pyx_v_t, __pyx_t_1);
        __pyx_t_1 = 0;
        __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_8genexpr1__pyx_v_t, __pyx_n_s_token); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 591, __pyx_L6_error)
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_8 = __Pyx_PyObject_GetItem(__pyx_v_self->_readers, __pyx_t_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 591, __pyx_L6_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __pyx_t_2 = NULL;
        __pyx_t_9 = 0;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) {
          __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_8);
          if (likely(__pyx_t_2)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
            __Pyx_INCREF(__pyx_t_2);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_8, function);
            __pyx_t_9 = 1;
          }
        }
        #if CYTHON_FAST_PYCALL
        if (PyFunction_Check(__pyx_t_8)) {
          PyObject *__pyx_temp[3] = {__pyx_t_2, ((PyObject *)__pyx_v_self), __pyx_8genexpr1__pyx_v_t};
          __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 591, __pyx_L6_error)
          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_GOTREF(__pyx_t_1);
        } else
        #endif
        #if CYTHON_FAST_PYCCALL
        if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) {
          PyObject *__pyx_temp[3] = {__pyx_t_2, ((PyObject *)__pyx_v_self), __pyx_8genexpr1__pyx_v_t};
          __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 591, __pyx_L6_error)
          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_GOTREF(__pyx_t_1);
        } else
        #endif
        {
          __pyx_t_10 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 591, __pyx_L6_error)
          __Pyx_GOTREF(__pyx_t_10);
          if (__pyx_t_2) {
            __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_2); __pyx_t_2 = NULL;
          }
          __Pyx_INCREF(((PyObject *)__pyx_v_self));
          __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
          PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_9, ((PyObject *)__pyx_v_self));
          __Pyx_INCREF(__pyx_8genexpr1__pyx_v_t);
          __Pyx_GIVEREF(__pyx_8genexpr1__pyx_v_t);
          PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_9, __pyx_8genexpr1__pyx_v_t);
          __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 591, __pyx_L6_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        }
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        if (unlikely(__Pyx_ListComp_Append(__pyx_t_4, (PyObject*)__pyx_t_1))) __PYX_ERR(0, 591, __pyx_L6_error)
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      }
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_8genexpr1__pyx_v_t); __pyx_8genexpr1__pyx_v_t = 0;
      goto __pyx_L9_exit_scope;
      __pyx_L6_error:;
      __Pyx_XDECREF(__pyx_8genexpr1__pyx_v_t); __pyx_8genexpr1__pyx_v_t = 0;
      goto __pyx_L1_error;
      __pyx_L9_exit_scope:;
    } /* exit inner scope */
    __pyx_v_body = ((PyObject*)__pyx_t_4);
    __pyx_t_4 = 0;
  }
  __pyx_L3:;
 592: 
+593:         self._message = Message(
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_v_9dbus_fast_8_private_12unmarshaller_Message, __pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 593, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_GIVEREF(__pyx_t_5);
  __Pyx_GOTREF(__pyx_v_self->_message);
  __Pyx_DECREF(__pyx_v_self->_message);
  __pyx_v_self->_message = __pyx_t_5;
  __pyx_t_5 = 0;
+594:             message_type=MESSAGE_TYPE_MAP[self._message_type],
  __pyx_t_5 = __Pyx_PyDict_NewPresized(7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 594, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_9dbus_fast_8_private_12unmarshaller_MESSAGE_TYPE_MAP, __pyx_v_self->_message_type, unsigned int, 0, __Pyx_PyInt_From_unsigned_int, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 594, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_message_type, __pyx_t_1) < 0) __PYX_ERR(0, 594, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+595:             flags=MESSAGE_FLAG_MAP[self._flag],
  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_9dbus_fast_8_private_12unmarshaller_MESSAGE_FLAG_MAP, __pyx_v_self->_flag, unsigned int, 0, __Pyx_PyInt_From_unsigned_int, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 595, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_flags, __pyx_t_1) < 0) __PYX_ERR(0, 594, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+596:             unix_fds=self._unix_fds,
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_unix_fds, __pyx_v_self->_unix_fds) < 0) __PYX_ERR(0, 594, __pyx_L1_error)
+597:             signature=tree,
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_signature, __pyx_v_tree) < 0) __PYX_ERR(0, 594, __pyx_L1_error)
+598:             body=body,
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_body, __pyx_v_body) < 0) __PYX_ERR(0, 594, __pyx_L1_error)
+599:             serial=self._serial,
  __pyx_t_1 = __Pyx_PyInt_From_unsigned_int(__pyx_v_self->_serial); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 599, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_serial, __pyx_t_1) < 0) __PYX_ERR(0, 594, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 600:             # The D-Bus implementation already validates the message,
 601:             # so we don't need to do it again.
+602:             validate=False,
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_validate, Py_False) < 0) __PYX_ERR(0, 594, __pyx_L1_error)
  __pyx_t_4 = __pyx_t_5;
  __pyx_t_5 = 0;
+603:             **header_fields,
  if (unlikely(__pyx_v_header_fields == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
    __PYX_ERR(0, 603, __pyx_L1_error)
  }
  if (__Pyx_MergeKeywords(__pyx_t_4, __pyx_v_header_fields) < 0) __PYX_ERR(0, 603, __pyx_L1_error)
 604:         )
 605: 
+606:     def unmarshall(self) -> Optional[Message]:
static PyObject *__pyx_pw_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_25unmarshall(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_f_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_unmarshall(struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *__pyx_v_self, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("unmarshall", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_unmarshall); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 606, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_25unmarshall)) {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 606, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }
/* … */
  /* 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("dbus_fast._private.unmarshaller.Unmarshaller.unmarshall", __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_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_25unmarshall(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_24unmarshall[] = "Unmarshall the message.\n\n        The underlying read function will raise MarshallerStreamEndError\n        if there are not enough bytes in the buffer. This allows unmarshall\n        to be resumed when more data comes in over the wire.\n        ";
static PyMethodDef __pyx_mdef_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_25unmarshall = {"unmarshall", (PyCFunction)__pyx_pw_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_25unmarshall, METH_NOARGS, __pyx_doc_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_24unmarshall};
static PyObject *__pyx_pw_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_25unmarshall(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("unmarshall (wrapper)", 0);
  __pyx_r = __pyx_pf_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_24unmarshall(((struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *)__pyx_v_self));

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

static PyObject *__pyx_pf_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_24unmarshall(struct __pyx_obj_9dbus_fast_8_private_12unmarshaller_Unmarshaller *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("unmarshall", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_unmarshall(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 606, __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("dbus_fast._private.unmarshaller.Unmarshaller.unmarshall", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__61 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__61)) __PYX_ERR(0, 606, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__61);
  __Pyx_GIVEREF(__pyx_tuple__61);
/* … */
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_25unmarshall, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Unmarshaller_unmarshall, NULL, __pyx_n_s_dbus_fast__private_unmarshaller, __pyx_d, ((PyObject *)__pyx_codeobj__62)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 606, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_9dbus_fast_8_private_12unmarshaller_Unmarshaller->tp_dict, __pyx_n_s_unmarshall, __pyx_t_5) < 0) __PYX_ERR(0, 606, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  PyType_Modified(__pyx_ptype_9dbus_fast_8_private_12unmarshaller_Unmarshaller);
  __pyx_codeobj__62 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__61, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_dbus_fast__private_unmarshal, __pyx_n_s_unmarshall, 606, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__62)) __PYX_ERR(0, 606, __pyx_L1_error)
 607:         """Unmarshall the message.
 608: 
 609:         The underlying read function will raise MarshallerStreamEndError
 610:         if there are not enough bytes in the buffer. This allows unmarshall
 611:         to be resumed when more data comes in over the wire.
 612:         """
+613:         try:
  {
    /*try:*/ {
/* … */
    }
    __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_L8_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
/* … */
    __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_L6_except_return:;
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_XGIVEREF(__pyx_t_7);
    __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
    goto __pyx_L0;
    __pyx_L8_try_end:;
  }
+614:             if not self._msg_len:
      __pyx_t_8 = ((!(__pyx_v_self->_msg_len != 0)) != 0);
      if (__pyx_t_8) {
/* … */
      }
+615:                 self._read_header()
        __pyx_t_1 = ((struct __pyx_vtabstruct_9dbus_fast_8_private_12unmarshaller_Unmarshaller *)__pyx_v_self->__pyx_vtab)->_read_header(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 615, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+616:             self._read_body()
      __pyx_t_1 = ((struct __pyx_vtabstruct_9dbus_fast_8_private_12unmarshaller_Unmarshaller *)__pyx_v_self->__pyx_vtab)->_read_body(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 616, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+617:         except MarshallerStreamEndError:
    __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(((PyObject *)__pyx_ptype_9dbus_fast_8_private_12unmarshaller_MarshallerStreamEndError));
    if (__pyx_t_9) {
      __Pyx_AddTraceback("dbus_fast._private.unmarshaller.Unmarshaller.unmarshall", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3) < 0) __PYX_ERR(0, 617, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GOTREF(__pyx_t_3);
+618:             return None
      __Pyx_XDECREF(__pyx_r);
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      __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_L6_except_return;
    }
    goto __pyx_L5_except_error;
    __pyx_L5_except_error:;
+619:         return self._message
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_message);
  __pyx_r = __pyx_v_self->_message;
  goto __pyx_L0;
 620: 
 621:     _complex_parsers_unpack: Dict[
 622:         str, Callable[["Unmarshaller", SignatureType], Any]
 623:     ] = {
+624:         "b": read_boolean,
  __pyx_t_5 = __Pyx_PyDict_NewPresized(12); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 624, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GetNameInClass(__pyx_t_1, (PyObject *)__pyx_ptype_9dbus_fast_8_private_12unmarshaller_Unmarshaller, __pyx_n_s_read_boolean); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 624, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_u_b, __pyx_t_1) < 0) __PYX_ERR(0, 624, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+625:         "o": read_string_unpack,
  __Pyx_GetNameInClass(__pyx_t_1, (PyObject *)__pyx_ptype_9dbus_fast_8_private_12unmarshaller_Unmarshaller, __pyx_n_s_read_string_unpack); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 625, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_u_o, __pyx_t_1) < 0) __PYX_ERR(0, 624, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+626:         "s": read_string_unpack,
  __Pyx_GetNameInClass(__pyx_t_1, (PyObject *)__pyx_ptype_9dbus_fast_8_private_12unmarshaller_Unmarshaller, __pyx_n_s_read_string_unpack); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 626, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_u_s, __pyx_t_1) < 0) __PYX_ERR(0, 624, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+627:         "g": read_signature,
  __Pyx_GetNameInClass(__pyx_t_1, (PyObject *)__pyx_ptype_9dbus_fast_8_private_12unmarshaller_Unmarshaller, __pyx_n_s_read_signature); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 627, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_u_g, __pyx_t_1) < 0) __PYX_ERR(0, 624, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+628:         "a": read_array,
  __Pyx_GetNameInClass(__pyx_t_1, (PyObject *)__pyx_ptype_9dbus_fast_8_private_12unmarshaller_Unmarshaller, __pyx_n_s_read_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 628, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_u_a, __pyx_t_1) < 0) __PYX_ERR(0, 624, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+629:         "(": read_struct,
  __Pyx_GetNameInClass(__pyx_t_1, (PyObject *)__pyx_ptype_9dbus_fast_8_private_12unmarshaller_Unmarshaller, __pyx_n_s_read_struct); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 629, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_5, __pyx_kp_u__63, __pyx_t_1) < 0) __PYX_ERR(0, 624, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+630:         "{": read_dict_entry,
  __Pyx_GetNameInClass(__pyx_t_1, (PyObject *)__pyx_ptype_9dbus_fast_8_private_12unmarshaller_Unmarshaller, __pyx_n_s_read_dict_entry); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 630, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_5, __pyx_kp_u__4, __pyx_t_1) < 0) __PYX_ERR(0, 624, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+631:         "v": read_variant,
  __Pyx_GetNameInClass(__pyx_t_1, (PyObject *)__pyx_ptype_9dbus_fast_8_private_12unmarshaller_Unmarshaller, __pyx_n_s_read_variant); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 631, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_u_v, __pyx_t_1) < 0) __PYX_ERR(0, 624, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+632:         "h": read_uint32_unpack,
  __Pyx_GetNameInClass(__pyx_t_1, (PyObject *)__pyx_ptype_9dbus_fast_8_private_12unmarshaller_Unmarshaller, __pyx_n_s_read_uint32_unpack); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 632, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_u_h, __pyx_t_1) < 0) __PYX_ERR(0, 624, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+633:         UINT32_DBUS_TYPE: read_uint32_unpack,
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_UINT32_DBUS_TYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 633, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GetNameInClass(__pyx_t_2, (PyObject *)__pyx_ptype_9dbus_fast_8_private_12unmarshaller_Unmarshaller, __pyx_n_s_read_uint32_unpack); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 633, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_5, __pyx_t_1, __pyx_t_2) < 0) __PYX_ERR(0, 624, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+634:         INT16_DBUS_TYPE: read_int16_unpack,
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_INT16_DBUS_TYPE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 634, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GetNameInClass(__pyx_t_1, (PyObject *)__pyx_ptype_9dbus_fast_8_private_12unmarshaller_Unmarshaller, __pyx_n_s_read_int16_unpack); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 634, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_5, __pyx_t_2, __pyx_t_1) < 0) __PYX_ERR(0, 624, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+635:         UINT16_DBUS_TYPE: read_uint16_unpack,
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_UINT16_DBUS_TYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 635, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GetNameInClass(__pyx_t_2, (PyObject *)__pyx_ptype_9dbus_fast_8_private_12unmarshaller_Unmarshaller, __pyx_n_s_read_uint16_unpack); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 635, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_5, __pyx_t_1, __pyx_t_2) < 0) __PYX_ERR(0, 624, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_9dbus_fast_8_private_12unmarshaller_Unmarshaller->tp_dict, __pyx_n_s_complex_parsers_unpack, __pyx_t_5) < 0) __PYX_ERR(0, 621, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  PyType_Modified(__pyx_ptype_9dbus_fast_8_private_12unmarshaller_Unmarshaller);
 636:     }
 637: 
+638:     _ctype_by_endian: Dict[int, Dict[str, READER_TYPE]] = {
  { /* enter inner scope */
    __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 638, __pyx_L10_error)
    __Pyx_GOTREF(__pyx_t_5);
+639:         endian: build_simple_parsers(endian) for endian in (LITTLE_ENDIAN, BIG_ENDIAN)
    __pyx_t_2 = __Pyx_PyInt_From_unsigned_int(__pyx_v_9dbus_fast_8_private_12unmarshaller_LITTLE_ENDIAN); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 639, __pyx_L10_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __Pyx_PyInt_From_unsigned_int(__pyx_v_9dbus_fast_8_private_12unmarshaller_BIG_ENDIAN); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 639, __pyx_L10_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 639, __pyx_L10_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_1);
    __pyx_t_2 = 0;
    __pyx_t_1 = 0;
    __pyx_t_1 = __pyx_t_6; __Pyx_INCREF(__pyx_t_1); __pyx_t_12 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    for (;;) {
      if (__pyx_t_12 >= 2) break;
      #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
      __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_12); __Pyx_INCREF(__pyx_t_6); __pyx_t_12++; if (unlikely(0 < 0)) __PYX_ERR(0, 639, __pyx_L10_error)
      #else
      __pyx_t_6 = PySequence_ITEM(__pyx_t_1, __pyx_t_12); __pyx_t_12++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 639, __pyx_L10_error)
      __Pyx_GOTREF(__pyx_t_6);
      #endif
      __Pyx_XDECREF_SET(__pyx_8genexpr2__pyx_v_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_endian, __pyx_t_6);
      __pyx_t_6 = 0;
      __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_build_simple_parsers); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 639, __pyx_L10_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_8 = NULL;
      if (CYTHON_UNPACK_METHODS && 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 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_8, __pyx_8genexpr2__pyx_v_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_endian) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_8genexpr2__pyx_v_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_endian);
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 639, __pyx_L10_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (unlikely(PyDict_SetItem(__pyx_t_5, (PyObject*)__pyx_8genexpr2__pyx_v_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_endian, (PyObject*)__pyx_t_6))) __PYX_ERR(0, 639, __pyx_L10_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_8genexpr2__pyx_v_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_endian); __pyx_8genexpr2__pyx_v_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_endian = 0;
    goto __pyx_L13_exit_scope;
    __pyx_L10_error:;
    __Pyx_XDECREF(__pyx_8genexpr2__pyx_v_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_endian); __pyx_8genexpr2__pyx_v_9dbus_fast_8_private_12unmarshaller_12Unmarshaller_endian = 0;
    goto __pyx_L1_error;
    __pyx_L13_exit_scope:;
  } /* exit inner scope */
  if (PyDict_SetItem((PyObject *)__pyx_ptype_9dbus_fast_8_private_12unmarshaller_Unmarshaller->tp_dict, __pyx_n_s_ctype_by_endian, __pyx_t_5) < 0) __PYX_ERR(0, 638, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  PyType_Modified(__pyx_ptype_9dbus_fast_8_private_12unmarshaller_Unmarshaller);
 640:     }
 641: 
 642:     _readers_by_type: Dict[int, Dict[str, READER_TYPE]] = {
+643:         LITTLE_ENDIAN: {
  __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 643, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = __Pyx_PyInt_From_unsigned_int(__pyx_v_9dbus_fast_8_private_12unmarshaller_LITTLE_ENDIAN); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 643, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
+644:             **_ctype_by_endian[LITTLE_ENDIAN],
  __Pyx_GetNameInClass(__pyx_t_2, (PyObject *)__pyx_ptype_9dbus_fast_8_private_12unmarshaller_Unmarshaller, __pyx_n_s_ctype_by_endian); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 644, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_2, __pyx_v_9dbus_fast_8_private_12unmarshaller_LITTLE_ENDIAN, unsigned int, 0, __Pyx_PyInt_From_unsigned_int, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 644, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(__pyx_t_8 == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
    __PYX_ERR(0, 644, __pyx_L1_error)
  }
  if (likely(PyDict_CheckExact(__pyx_t_8))) {
    __pyx_t_6 = PyDict_Copy(__pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 644, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  } else {
    __pyx_t_6 = PyObject_CallFunctionObjArgs((PyObject*)&PyDict_Type, __pyx_t_8, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 643, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  }
+645:             **_complex_parsers_unpack,
  __Pyx_GetNameInClass(__pyx_t_8, (PyObject *)__pyx_ptype_9dbus_fast_8_private_12unmarshaller_Unmarshaller, __pyx_n_s_complex_parsers_unpack); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 645, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  if (unlikely(__pyx_t_8 == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
    __PYX_ERR(0, 645, __pyx_L1_error)
  }
  if (unlikely(PyDict_Update(__pyx_t_6, __pyx_t_8) < 0)) {
    if (PyErr_ExceptionMatches(PyExc_AttributeError)) __Pyx_RaiseMappingExpectedError(__pyx_t_8);
    __PYX_ERR(0, 645, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (PyDict_SetItem(__pyx_t_5, __pyx_t_1, __pyx_t_6) < 0) __PYX_ERR(0, 643, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 646:         },
+647:         BIG_ENDIAN: {
  __pyx_t_6 = __Pyx_PyInt_From_unsigned_int(__pyx_v_9dbus_fast_8_private_12unmarshaller_BIG_ENDIAN); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 647, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
+648:             **_ctype_by_endian[BIG_ENDIAN],
  __Pyx_GetNameInClass(__pyx_t_8, (PyObject *)__pyx_ptype_9dbus_fast_8_private_12unmarshaller_Unmarshaller, __pyx_n_s_ctype_by_endian); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 648, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_8, __pyx_v_9dbus_fast_8_private_12unmarshaller_BIG_ENDIAN, unsigned int, 0, __Pyx_PyInt_From_unsigned_int, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 648, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (unlikely(__pyx_t_2 == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
    __PYX_ERR(0, 648, __pyx_L1_error)
  }
  if (likely(PyDict_CheckExact(__pyx_t_2))) {
    __pyx_t_1 = PyDict_Copy(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 648, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  } else {
    __pyx_t_1 = PyObject_CallFunctionObjArgs((PyObject*)&PyDict_Type, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 647, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
+649:             **_complex_parsers_unpack,
  __Pyx_GetNameInClass(__pyx_t_2, (PyObject *)__pyx_ptype_9dbus_fast_8_private_12unmarshaller_Unmarshaller, __pyx_n_s_complex_parsers_unpack); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 649, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (unlikely(__pyx_t_2 == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
    __PYX_ERR(0, 649, __pyx_L1_error)
  }
  if (unlikely(PyDict_Update(__pyx_t_1, __pyx_t_2) < 0)) {
    if (PyErr_ExceptionMatches(PyExc_AttributeError)) __Pyx_RaiseMappingExpectedError(__pyx_t_2);
    __PYX_ERR(0, 649, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (PyDict_SetItem(__pyx_t_5, __pyx_t_6, __pyx_t_1) < 0) __PYX_ERR(0, 643, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_9dbus_fast_8_private_12unmarshaller_Unmarshaller->tp_dict, __pyx_n_s_readers_by_type, __pyx_t_5) < 0) __PYX_ERR(0, 642, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  PyType_Modified(__pyx_ptype_9dbus_fast_8_private_12unmarshaller_Unmarshaller);
 650:         },
 651:     }