Generated by Cython 0.27.3

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: io_vcf_read.c

+0001: # cython: linetrace=False
  __pyx_t_20 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_20);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_20) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
 0002: # cython: profile=False
 0003: # cython: binding=False
 0004: # cython: boundscheck=False
 0005: # cython: wraparound=False
 0006: # cython: initializedcheck=False
 0007: # cython: nonecheck=False
 0008: """
 0009: # options for profiling...
 0010: # cython: profile=True
 0011: # cython: binding=True
 0012: # cython: linetrace=True
 0013: # distutils: define_macros=CYTHON_TRACE=1
 0014: # distutils: define_macros=CYTHON_TRACE_NOGIL=1
 0015: """
 0016: from __future__ import absolute_import, print_function, division
 0017: 
 0018: 
+0019: import warnings
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_warnings, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_warnings, __pyx_t_1) < 0) __PYX_ERR(0, 19, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 0020: # noinspection PyUnresolvedReferences
 0021: from cpython.bytes cimport PyBytes_AS_STRING, PyBytes_FromStringAndSize
 0022: # noinspection PyUnresolvedReferences
 0023: from libc.stdlib cimport strtol, strtof, strtod, malloc, free, realloc
 0024: # noinspection PyUnresolvedReferences
 0025: from libc.string cimport strcmp, memcpy
+0026: import numpy as np
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_numpy, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 26, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_np, __pyx_t_1) < 0) __PYX_ERR(0, 26, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 0027: cimport numpy as np
 0028: from cpython.ref cimport PyObject
 0029: cdef extern from "Python.h":
 0030:     char* PyByteArray_AS_STRING(object string)
 0031: # from multiprocessing.pool import ThreadPool
 0032: 
 0033: 
+0034: from allel.compat import PY2, text_type
  __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_n_s_PY2);
  __Pyx_GIVEREF(__pyx_n_s_PY2);
  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_PY2);
  __Pyx_INCREF(__pyx_n_s_text_type);
  __Pyx_GIVEREF(__pyx_n_s_text_type);
  PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_s_text_type);
  __pyx_t_2 = __Pyx_Import(__pyx_n_s_allel_compat, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 34, __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_PY2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_PY2, __pyx_t_1) < 0) __PYX_ERR(0, 34, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_text_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_text_type, __pyx_t_1) < 0) __PYX_ERR(0, 34, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 0035: 
 0036: 
 0037: #########################################################################################
 0038: # Constants.
 0039: 
 0040: 
 0041: # for Windows compatibility
+0042: cdef double NAN = np.nan
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_nan); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 42, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_5allel_3opt_11io_vcf_read_NAN = __pyx_t_3;
 0043: 
 0044: # predefine useful characters
+0045: cdef char TAB = b'\t'
  __pyx_v_5allel_3opt_11io_vcf_read_TAB = '\t';
+0046: cdef char LF = b'\n'
  __pyx_v_5allel_3opt_11io_vcf_read_LF = '\n';
+0047: cdef char CR = b'\r'
  __pyx_v_5allel_3opt_11io_vcf_read_CR = '\r';
+0048: cdef char HASH = b'#'
  __pyx_v_5allel_3opt_11io_vcf_read_HASH = '#';
+0049: cdef char COLON = b':'
  __pyx_v_5allel_3opt_11io_vcf_read_COLON = ':';
+0050: cdef char SEMICOLON = b';'
  __pyx_v_5allel_3opt_11io_vcf_read_SEMICOLON = ';';
+0051: cdef char PERIOD = b'.'
  __pyx_v_5allel_3opt_11io_vcf_read_PERIOD = '.';
+0052: cdef char COMMA = b','
  __pyx_v_5allel_3opt_11io_vcf_read_COMMA = ',';
+0053: cdef char SLASH = b'/'
  __pyx_v_5allel_3opt_11io_vcf_read_SLASH = '/';
+0054: cdef char PIPE = b'|'
  __pyx_v_5allel_3opt_11io_vcf_read_PIPE = '|';
+0055: cdef char EQUALS = b'='
  __pyx_v_5allel_3opt_11io_vcf_read_EQUALS = '=';
+0056: cdef char ASTERISK = b'*'
  __pyx_v_5allel_3opt_11io_vcf_read_ASTERISK = '*';
 0057: 
 0058: # user field specifications for fixed fields
+0059: CHROM_FIELD = 'variants/CHROM'
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_CHROM_FIELD, __pyx_kp_s_variants_CHROM) < 0) __PYX_ERR(0, 59, __pyx_L1_error)
+0060: POS_FIELD = 'variants/POS'
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_POS_FIELD, __pyx_kp_s_variants_POS) < 0) __PYX_ERR(0, 60, __pyx_L1_error)
+0061: ID_FIELD = 'variants/ID'
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ID_FIELD, __pyx_kp_s_variants_ID) < 0) __PYX_ERR(0, 61, __pyx_L1_error)
+0062: REF_FIELD = 'variants/REF'
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_REF_FIELD, __pyx_kp_s_variants_REF) < 0) __PYX_ERR(0, 62, __pyx_L1_error)
+0063: ALT_FIELD = 'variants/ALT'
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ALT_FIELD, __pyx_kp_s_variants_ALT) < 0) __PYX_ERR(0, 63, __pyx_L1_error)
+0064: QUAL_FIELD = 'variants/QUAL'
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_QUAL_FIELD, __pyx_kp_s_variants_QUAL) < 0) __PYX_ERR(0, 64, __pyx_L1_error)
 0065: 
 0066: # useful to lookup max int values
+0067: II8 = np.iinfo(np.int8)
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_iinfo); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_int8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  if (!__pyx_t_2) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 67, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 67, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 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[2] = {__pyx_t_2, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 67, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else
    #endif
    {
      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 67, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2); __pyx_t_2 = NULL;
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_5);
      __pyx_t_5 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 67, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_II8, __pyx_t_1) < 0) __PYX_ERR(0, 67, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0068: II16 = np.iinfo(np.int16)
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 68, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_iinfo); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 68, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 68, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int16); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 68, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (!__pyx_t_4) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 68, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_6)) {
      PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 68, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 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_6)) {
      PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 68, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else
    #endif
    {
      __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 68, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4); __pyx_t_4 = NULL;
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_5);
      __pyx_t_5 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 68, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __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_II16, __pyx_t_1) < 0) __PYX_ERR(0, 68, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0069: II32 = np.iinfo(np.int32)
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_iinfo); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_int32); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_6) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 69, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 69, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 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_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 69, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else
    #endif
    {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 69, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6); __pyx_t_6 = NULL;
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_5);
      __pyx_t_5 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 69, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_II32, __pyx_t_1) < 0) __PYX_ERR(0, 69, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0070: II64 = np.iinfo(np.int64)
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_iinfo); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_int64); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  if (!__pyx_t_2) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 70, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 70, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 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[2] = {__pyx_t_2, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 70, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else
    #endif
    {
      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 70, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2); __pyx_t_2 = NULL;
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_5);
      __pyx_t_5 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 70, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_II64, __pyx_t_1) < 0) __PYX_ERR(0, 70, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0071: IU8 = np.iinfo(np.uint8)
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 71, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_iinfo); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 71, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 71, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 71, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (!__pyx_t_4) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 71, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_6)) {
      PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 71, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 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_6)) {
      PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 71, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else
    #endif
    {
      __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 71, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4); __pyx_t_4 = NULL;
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_5);
      __pyx_t_5 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 71, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __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_IU8, __pyx_t_1) < 0) __PYX_ERR(0, 71, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0072: IU16 = np.iinfo(np.uint16)
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 72, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_iinfo); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 72, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 72, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_uint16); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 72, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_6) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 72, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 72, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 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_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 72, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else
    #endif
    {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 72, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6); __pyx_t_6 = NULL;
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_5);
      __pyx_t_5 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 72, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_IU16, __pyx_t_1) < 0) __PYX_ERR(0, 72, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0073: IU32 = np.iinfo(np.uint32)
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_iinfo); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_uint32); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  if (!__pyx_t_2) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 73, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 73, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 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[2] = {__pyx_t_2, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 73, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else
    #endif
    {
      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 73, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2); __pyx_t_2 = NULL;
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_5);
      __pyx_t_5 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 73, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_IU32, __pyx_t_1) < 0) __PYX_ERR(0, 73, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0074: IU64 = np.iinfo(np.uint64)
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 74, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_iinfo); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 74, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 74, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint64); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 74, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (!__pyx_t_4) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 74, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_6)) {
      PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 74, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 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_6)) {
      PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 74, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else
    #endif
    {
      __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 74, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4); __pyx_t_4 = NULL;
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_5);
      __pyx_t_5 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 74, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __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_IU64, __pyx_t_1) < 0) __PYX_ERR(0, 74, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 0075: 
 0076: 
 0077: ##########################################################################################
 0078: # Fused Types.
 0079: 
 0080: 
 0081: ctypedef fused integer:
 0082:     np.int8_t
 0083:     np.int16_t
 0084:     np.int32_t
 0085:     np.int64_t
 0086:     np.uint8_t
 0087:     np.uint16_t
 0088:     np.uint32_t
 0089:     np.uint64_t
 0090: 
 0091: 
 0092: ctypedef fused floating:
 0093:     np.float32_t
 0094:     np.float64_t
 0095: 
 0096: 
 0097: ##########################################################################################
 0098: # Vectors, written in pure C for speed and ease of use without GIL.
 0099: 
 0100: 
+0101: cdef struct CharVector:
struct __pyx_t_5allel_3opt_11io_vcf_read_CharVector {
  Py_ssize_t size;
  Py_ssize_t capacity;
  char *data;
};
 0102:     Py_ssize_t size
 0103:     Py_ssize_t capacity
 0104:     char* data
 0105: 
 0106: 
+0107: cdef inline void CharVector_init(CharVector* self, Py_ssize_t capacity) nogil:
static CYTHON_INLINE void __pyx_f_5allel_3opt_11io_vcf_read_CharVector_init(struct __pyx_t_5allel_3opt_11io_vcf_read_CharVector *__pyx_v_self, Py_ssize_t __pyx_v_capacity) {
/* … */
  /* function exit code */
}
+0108:     self.size = 0
  __pyx_v_self->size = 0;
+0109:     self.capacity = capacity
  __pyx_v_self->capacity = __pyx_v_capacity;
+0110:     self.data = <char*> malloc(sizeof(char) * capacity)
  __pyx_v_self->data = ((char *)malloc(((sizeof(char)) * __pyx_v_capacity)));
 0111: 
 0112: 
+0113: cdef inline void CharVector_free(CharVector* self) nogil:
static CYTHON_INLINE void __pyx_f_5allel_3opt_11io_vcf_read_CharVector_free(struct __pyx_t_5allel_3opt_11io_vcf_read_CharVector *__pyx_v_self) {
/* … */
  /* function exit code */
}
+0114:     if self.data is not NULL:
  __pyx_t_1 = ((__pyx_v_self->data != NULL) != 0);
  if (__pyx_t_1) {
/* … */
  }
+0115:         free(self.data)
    free(__pyx_v_self->data);
 0116: 
 0117: 
+0118: cdef inline void CharVector_append(CharVector* self, char c) nogil:
static CYTHON_INLINE void __pyx_f_5allel_3opt_11io_vcf_read_CharVector_append(struct __pyx_t_5allel_3opt_11io_vcf_read_CharVector *__pyx_v_self, char __pyx_v_c) {
/* … */
  /* function exit code */
}
+0119:     if self.size >= self.capacity:
  __pyx_t_1 = ((__pyx_v_self->size >= __pyx_v_self->capacity) != 0);
  if (__pyx_t_1) {
/* … */
  }
+0120:         self.capacity *= 2
    __pyx_v_self->capacity = (__pyx_v_self->capacity * 2);
+0121:         self.data = <char*> realloc(self.data, sizeof(char) * self.capacity)
    __pyx_v_self->data = ((char *)realloc(__pyx_v_self->data, ((sizeof(char)) * __pyx_v_self->capacity)));
+0122:     self.data[self.size] = c
  (__pyx_v_self->data[__pyx_v_self->size]) = __pyx_v_c;
+0123:     self.size += 1
  __pyx_v_self->size = (__pyx_v_self->size + 1);
 0124: 
 0125: 
+0126: cdef inline void CharVector_clear(CharVector* self) nogil:
static CYTHON_INLINE void __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear(struct __pyx_t_5allel_3opt_11io_vcf_read_CharVector *__pyx_v_self) {
/* … */
  /* function exit code */
}
+0127:     self.size = 0
  __pyx_v_self->size = 0;
 0128: 
 0129: 
+0130: cdef inline void CharVector_terminate(CharVector* self) nogil:
static CYTHON_INLINE void __pyx_f_5allel_3opt_11io_vcf_read_CharVector_terminate(struct __pyx_t_5allel_3opt_11io_vcf_read_CharVector *__pyx_v_self) {
/* … */
  /* function exit code */
}
+0131:     CharVector_append(self, 0)
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_append(__pyx_v_self, 0);
 0132: 
 0133: 
+0134: cdef bytes CharVector_to_pybytes(CharVector* self):
static PyObject *__pyx_f_5allel_3opt_11io_vcf_read_CharVector_to_pybytes(struct __pyx_t_5allel_3opt_11io_vcf_read_CharVector *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("CharVector_to_pybytes", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.CharVector_to_pybytes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+0135:     return PyBytes_FromStringAndSize(self.data, self.size)
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyBytes_FromStringAndSize(__pyx_v_self->data, __pyx_v_self->size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
  goto __pyx_L0;
 0136: 
 0137: 
+0138: cdef object CharVector_to_pystr(CharVector* self):
static PyObject *__pyx_f_5allel_3opt_11io_vcf_read_CharVector_to_pystr(struct __pyx_t_5allel_3opt_11io_vcf_read_CharVector *__pyx_v_self) {
  PyObject *__pyx_v_v = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("CharVector_to_pystr", 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_5);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.CharVector_to_pystr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_v);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+0139:     v = PyBytes_FromStringAndSize(self.data, self.size)
  __pyx_t_1 = PyBytes_FromStringAndSize(__pyx_v_self->data, __pyx_v_self->size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 139, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_v = __pyx_t_1;
  __pyx_t_1 = 0;
+0140:     v = text_type(v, 'utf8')
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_text_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 140, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_v, __pyx_n_s_utf8};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 140, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_v, __pyx_n_s_utf8};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 140, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else
  #endif
  {
    __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 140, __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_v);
    __Pyx_GIVEREF(__pyx_v_v);
    PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_v);
    __Pyx_INCREF(__pyx_n_s_utf8);
    __Pyx_GIVEREF(__pyx_n_s_utf8);
    PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_n_s_utf8);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 140, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_v, __pyx_t_1);
  __pyx_t_1 = 0;
+0141:     return v
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_v);
  __pyx_r = __pyx_v_v;
  goto __pyx_L0;
 0142: 
 0143: 
+0144: cdef object CharVector_to_pystr_sized(CharVector* self, Py_ssize_t size):
static PyObject *__pyx_f_5allel_3opt_11io_vcf_read_CharVector_to_pystr_sized(struct __pyx_t_5allel_3opt_11io_vcf_read_CharVector *__pyx_v_self, Py_ssize_t __pyx_v_size) {
  PyObject *__pyx_v_v = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("CharVector_to_pystr_sized", 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_5);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.CharVector_to_pystr_sized", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_v);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+0145:     v = PyBytes_FromStringAndSize(self.data, size)
  __pyx_t_1 = PyBytes_FromStringAndSize(__pyx_v_self->data, __pyx_v_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 145, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_v = __pyx_t_1;
  __pyx_t_1 = 0;
+0146:     v = text_type(v, 'utf8')
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_text_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 146, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_v, __pyx_n_s_utf8};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 146, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_v, __pyx_n_s_utf8};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 146, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else
  #endif
  {
    __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 146, __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_v);
    __Pyx_GIVEREF(__pyx_v_v);
    PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_v);
    __Pyx_INCREF(__pyx_n_s_utf8);
    __Pyx_GIVEREF(__pyx_n_s_utf8);
    PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_n_s_utf8);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 146, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_v, __pyx_t_1);
  __pyx_t_1 = 0;
+0147:     return v
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_v);
  __pyx_r = __pyx_v_v;
  goto __pyx_L0;
 0148: 
 0149: 
+0150: cdef struct IntVector:
struct __pyx_t_5allel_3opt_11io_vcf_read_IntVector {
  Py_ssize_t size;
  Py_ssize_t capacity;
  int *data;
};
 0151:     Py_ssize_t size
 0152:     Py_ssize_t capacity
 0153:     int* data
 0154: 
 0155: 
+0156: cdef inline void IntVector_init(IntVector* self, Py_ssize_t capacity) nogil:
static CYTHON_INLINE void __pyx_f_5allel_3opt_11io_vcf_read_IntVector_init(struct __pyx_t_5allel_3opt_11io_vcf_read_IntVector *__pyx_v_self, Py_ssize_t __pyx_v_capacity) {
/* … */
  /* function exit code */
}
+0157:     self.size = 0
  __pyx_v_self->size = 0;
+0158:     self.capacity = capacity
  __pyx_v_self->capacity = __pyx_v_capacity;
+0159:     self.data = <int*> malloc(sizeof(int) * capacity)
  __pyx_v_self->data = ((int *)malloc(((sizeof(int)) * __pyx_v_capacity)));
 0160: 
 0161: 
+0162: cdef inline void IntVector_free(IntVector* self) nogil:
static CYTHON_INLINE void __pyx_f_5allel_3opt_11io_vcf_read_IntVector_free(struct __pyx_t_5allel_3opt_11io_vcf_read_IntVector *__pyx_v_self) {
/* … */
  /* function exit code */
}
+0163:     if self.data is not NULL:
  __pyx_t_1 = ((__pyx_v_self->data != NULL) != 0);
  if (__pyx_t_1) {
/* … */
  }
+0164:         free(self.data)
    free(__pyx_v_self->data);
 0165: 
 0166: 
+0167: cdef inline void IntVector_append(IntVector* self, int c) nogil:
static CYTHON_INLINE void __pyx_f_5allel_3opt_11io_vcf_read_IntVector_append(struct __pyx_t_5allel_3opt_11io_vcf_read_IntVector *__pyx_v_self, int __pyx_v_c) {
/* … */
  /* function exit code */
}
+0168:     if self.size >= self.capacity:
  __pyx_t_1 = ((__pyx_v_self->size >= __pyx_v_self->capacity) != 0);
  if (__pyx_t_1) {
/* … */
  }
+0169:         self.capacity *= 2
    __pyx_v_self->capacity = (__pyx_v_self->capacity * 2);
+0170:         self.data = <int*> realloc(self.data, sizeof(int) * self.capacity)
    __pyx_v_self->data = ((int *)realloc(__pyx_v_self->data, ((sizeof(int)) * __pyx_v_self->capacity)));
+0171:     self.data[self.size] = c
  (__pyx_v_self->data[__pyx_v_self->size]) = __pyx_v_c;
+0172:     self.size += 1
  __pyx_v_self->size = (__pyx_v_self->size + 1);
 0173: 
 0174: 
+0175: cdef inline void IntVector_clear(IntVector* self) nogil:
static CYTHON_INLINE void __pyx_f_5allel_3opt_11io_vcf_read_IntVector_clear(struct __pyx_t_5allel_3opt_11io_vcf_read_IntVector *__pyx_v_self) {
/* … */
  /* function exit code */
}
+0176:     self.size = 0
  __pyx_v_self->size = 0;
 0177: 
 0178: 
 0179: ##########################################################################################
 0180: # C string utilities.
 0181: 
 0182: 
+0183: cdef inline Py_ssize_t search_sorted_cstr(char* query, char** compare, Py_ssize_t n_items) nogil:
static CYTHON_INLINE Py_ssize_t __pyx_f_5allel_3opt_11io_vcf_read_search_sorted_cstr(char *__pyx_v_query, char **__pyx_v_compare, Py_ssize_t __pyx_v_n_items) {
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_r;
/* … */
  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}
 0184:     cdef:
 0185:         Py_ssize_t i
 0186: 
 0187:     # N.B., we could do a binary search here, but in fact this is not the performance
 0188:     # bottleneck, so stick with a simple scan for now
 0189: 
+0190:     for i in range(n_items):
  __pyx_t_1 = __pyx_v_n_items;
  for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) {
    __pyx_v_i = __pyx_t_2;
+0191:         if strcmp(query, compare[i]) == 0:
    __pyx_t_3 = ((strcmp(__pyx_v_query, (__pyx_v_compare[__pyx_v_i])) == 0) != 0);
    if (__pyx_t_3) {
/* … */
    }
  }
+0192:             return i
      __pyx_r = __pyx_v_i;
      goto __pyx_L0;
 0193: 
+0194:     return -1
  __pyx_r = -1L;
  goto __pyx_L0;
 0195: 
 0196: 
 0197: ##########################################################################################
 0198: # General I/O utilities.
 0199: 
 0200: 
+0201: cdef class InputStreamBase:
struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase {
  PyObject_HEAD
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_vtab;
  char c;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase {
  int (*advance)(struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *);
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_vtabptr_5allel_3opt_11io_vcf_read_InputStreamBase;

 0202:     """Abstract base class defining an input stream over C chars."""
 0203: 
 0204:     cdef:
 0205:         # character at the current position in the stream
 0206:         char c
 0207: 
+0208:     cdef int advance(self) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_15InputStreamBase_advance(CYTHON_UNUSED struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("advance", 0);

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 0209:         """Read the next character from the stream and store it in the `c` attribute."""
 0210:         pass
 0211: 
 0212: 
+0213: cdef class FileInputStream(InputStreamBase):
struct __pyx_obj_5allel_3opt_11io_vcf_read_FileInputStream {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase __pyx_base;
  PyObject *fileobj;
  Py_ssize_t buffer_size;
  PyObject *buffer;
  char *buffer_start;
  char *buffer_end;
  char *stream;
  int close;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_FileInputStream {
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase __pyx_base;
  int (*_bufferup)(struct __pyx_obj_5allel_3opt_11io_vcf_read_FileInputStream *);
  int (*read_line_into)(struct __pyx_obj_5allel_3opt_11io_vcf_read_FileInputStream *, struct __pyx_t_5allel_3opt_11io_vcf_read_CharVector *);
  int (*read_lines_into)(struct __pyx_obj_5allel_3opt_11io_vcf_read_FileInputStream *, struct __pyx_t_5allel_3opt_11io_vcf_read_CharVector *, Py_ssize_t);
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_FileInputStream *__pyx_vtabptr_5allel_3opt_11io_vcf_read_FileInputStream;

 0214: 
 0215:     cdef:
 0216:         # Python file-like object
 0217:         object fileobj
 0218:         Py_ssize_t buffer_size
 0219:         bytearray buffer
 0220:         char* buffer_start
 0221:         char* buffer_end
 0222:         char* stream
 0223:         bint close
 0224: 
+0225:     def __init__(self, fileobj, buffer_size=2**14, close=False):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_15FileInputStream_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_15FileInputStream_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_fileobj = 0;
  PyObject *__pyx_v_buffer_size = 0;
  PyObject *__pyx_v_close = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fileobj,&__pyx_n_s_buffer_size,&__pyx_n_s_close,0};
    PyObject* values[3] = {0,0,0};
    values[1] = ((PyObject *)__pyx_int_16384);
    values[2] = ((PyObject *)Py_False);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fileobj)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_buffer_size);
          if (value) { values[1] = value; kw_args--; }
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_close);
          if (value) { values[2] = 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, 225, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_fileobj = values[0];
    __pyx_v_buffer_size = values[1];
    __pyx_v_close = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 225, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.FileInputStream.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_15FileInputStream___init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_FileInputStream *)__pyx_v_self), __pyx_v_fileobj, __pyx_v_buffer_size, __pyx_v_close);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_15FileInputStream___init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_FileInputStream *__pyx_v_self, PyObject *__pyx_v_fileobj, PyObject *__pyx_v_buffer_size, PyObject *__pyx_v_close) {
  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_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.FileInputStream.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+0226:         self.fileobj = fileobj
  __Pyx_INCREF(__pyx_v_fileobj);
  __Pyx_GIVEREF(__pyx_v_fileobj);
  __Pyx_GOTREF(__pyx_v_self->fileobj);
  __Pyx_DECREF(__pyx_v_self->fileobj);
  __pyx_v_self->fileobj = __pyx_v_fileobj;
+0227:         self.buffer_size = buffer_size
  __pyx_t_1 = __Pyx_PyIndex_AsSsize_t(__pyx_v_buffer_size); if (unlikely((__pyx_t_1 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 227, __pyx_L1_error)
  __pyx_v_self->buffer_size = __pyx_t_1;
 0228:         # initialise input buffer
+0229:         self.buffer = bytearray(buffer_size)
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 229, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_buffer_size);
  __Pyx_GIVEREF(__pyx_v_buffer_size);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_buffer_size);
  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)(&PyByteArray_Type)), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 229, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_3);
  __Pyx_GOTREF(__pyx_v_self->buffer);
  __Pyx_DECREF(__pyx_v_self->buffer);
  __pyx_v_self->buffer = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;
+0230:         self.buffer_start = PyByteArray_AS_STRING(self.buffer)
  __pyx_t_3 = __pyx_v_self->buffer;
  __Pyx_INCREF(__pyx_t_3);
  __pyx_v_self->buffer_start = PyByteArray_AS_STRING(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+0231:         self.stream = self.buffer_start
  __pyx_t_4 = __pyx_v_self->buffer_start;
  __pyx_v_self->stream = __pyx_t_4;
+0232:         self.close = close
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_close); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 232, __pyx_L1_error)
  __pyx_v_self->close = __pyx_t_5;
+0233:         self._bufferup()
  __pyx_t_6 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_FileInputStream *)__pyx_v_self->__pyx_base.__pyx_vtab)->_bufferup(__pyx_v_self); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 233, __pyx_L1_error)
+0234:         self.advance()
  __pyx_t_6 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_FileInputStream *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.advance(((struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_self)); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 234, __pyx_L1_error)
 0235: 
+0236:     def __dealloc__(self):
/* Python wrapper */
static void __pyx_pw_5allel_3opt_11io_vcf_read_15FileInputStream_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_5allel_3opt_11io_vcf_read_15FileInputStream_3__dealloc__(PyObject *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_pf_5allel_3opt_11io_vcf_read_15FileInputStream_2__dealloc__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_FileInputStream *)__pyx_v_self));

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

static void __pyx_pf_5allel_3opt_11io_vcf_read_15FileInputStream_2__dealloc__(struct __pyx_obj_5allel_3opt_11io_vcf_read_FileInputStream *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__", 0);
/* … */
  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_WriteUnraisable("allel.opt.io_vcf_read.FileInputStream.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}
+0237:         if self.close:
  __pyx_t_1 = (__pyx_v_self->close != 0);
  if (__pyx_t_1) {
/* … */
  }
+0238:             self.fileobj.close()
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->fileobj, __pyx_n_s_close); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 238, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    if (__pyx_t_4) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 238, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else {
      __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 238, __pyx_L1_error)
    }
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 0239: 
+0240:     cdef int _bufferup(self) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_15FileInputStream__bufferup(struct __pyx_obj_5allel_3opt_11io_vcf_read_FileInputStream *__pyx_v_self) {
  Py_ssize_t __pyx_v_l;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_bufferup", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.FileInputStream._bufferup", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 0241:         """Read as many bytes as possible from the underlying file object into the
 0242:         buffer."""
 0243:         cdef Py_ssize_t l
 0244:         # with gil:
+0245:         l = self.fileobj.readinto(self.buffer)
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->fileobj, __pyx_n_s_readinto); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 245, __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);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_self->buffer); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 245, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_self->buffer};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 245, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_self->buffer};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 245, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 245, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_v_self->buffer);
      __Pyx_GIVEREF(__pyx_v_self->buffer);
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_self->buffer);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 245, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_t_1); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 245, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_l = __pyx_t_5;
+0246:         if l > 0:
  __pyx_t_6 = ((__pyx_v_l > 0) != 0);
  if (__pyx_t_6) {
/* … */
    goto __pyx_L3;
  }
+0247:             self.stream = self.buffer_start
    __pyx_t_7 = __pyx_v_self->buffer_start;
    __pyx_v_self->stream = __pyx_t_7;
+0248:             self.buffer_end = self.buffer_start + l
    __pyx_v_self->buffer_end = (__pyx_v_self->buffer_start + __pyx_v_l);
 0249:         else:
+0250:             self.stream = NULL
  /*else*/ {
    __pyx_v_self->stream = NULL;
  }
  __pyx_L3:;
 0251: 
+0252:     cdef int advance(self) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_15FileInputStream_advance(struct __pyx_obj_5allel_3opt_11io_vcf_read_FileInputStream *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("advance", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.FileInputStream.advance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 0253:         """Read the next character from the stream and store it in the `c` attribute."""
+0254:         if self.stream is self.buffer_end:
  __pyx_t_1 = ((__pyx_v_self->stream == __pyx_v_self->buffer_end) != 0);
  if (__pyx_t_1) {
/* … */
  }
+0255:             self._bufferup()
    __pyx_t_2 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_FileInputStream *)__pyx_v_self->__pyx_base.__pyx_vtab)->_bufferup(__pyx_v_self); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 255, __pyx_L1_error)
+0256:         if self.stream is NULL:
  __pyx_t_1 = ((__pyx_v_self->stream == NULL) != 0);
  if (__pyx_t_1) {
/* … */
    goto __pyx_L4;
  }
 0257:             # end of file
+0258:             self.c = 0
    __pyx_v_self->__pyx_base.c = 0;
 0259:         else:
+0260:             self.c = self.stream[0]
  /*else*/ {
    __pyx_v_self->__pyx_base.c = (__pyx_v_self->stream[0]);
+0261:             self.stream += 1
    __pyx_v_self->stream = (__pyx_v_self->stream + 1);
  }
  __pyx_L4:;
 0262: 
+0263:     cdef int read_line_into(self, CharVector* dest) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_15FileInputStream_read_line_into(struct __pyx_obj_5allel_3opt_11io_vcf_read_FileInputStream *__pyx_v_self, struct __pyx_t_5allel_3opt_11io_vcf_read_CharVector *__pyx_v_dest) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("read_line_into", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.FileInputStream.read_line_into", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 0264:         """Read up to end of line or end of file (whichever comes first) and append
 0265:         chars to the `dest` buffer."""
 0266: 
+0267:         while True:
  while (1) {
 0268: 
+0269:             if self.c == 0:
    __pyx_t_1 = ((__pyx_v_self->__pyx_base.c == 0) != 0);
    if (__pyx_t_1) {
/* … */
    }
+0270:                 break
      goto __pyx_L4_break;
 0271: 
+0272:             elif self.c == LF:
    __pyx_t_1 = ((__pyx_v_self->__pyx_base.c == __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
    if (__pyx_t_1) {
/* … */
    }
+0273:                 CharVector_append(dest, LF)
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_append(__pyx_v_dest, __pyx_v_5allel_3opt_11io_vcf_read_LF);
 0274:                 # advance input stream beyond EOL
+0275:                 self.advance()
      __pyx_t_2 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_FileInputStream *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.advance(((struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_self)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 275, __pyx_L1_error)
+0276:                 break
      goto __pyx_L4_break;
 0277: 
+0278:             elif self.c == CR:
    __pyx_t_1 = ((__pyx_v_self->__pyx_base.c == __pyx_v_5allel_3opt_11io_vcf_read_CR) != 0);
    if (__pyx_t_1) {
/* … */
    }
 0279:                 # translate newdests
+0280:                 CharVector_append(dest, LF)
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_append(__pyx_v_dest, __pyx_v_5allel_3opt_11io_vcf_read_LF);
 0281:                 # advance input stream beyond EOL
+0282:                 self.advance()
      __pyx_t_2 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_FileInputStream *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.advance(((struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_self)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 282, __pyx_L1_error)
+0283:                 if self.c == LF:
      __pyx_t_1 = ((__pyx_v_self->__pyx_base.c == __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
      if (__pyx_t_1) {
/* … */
      }
 0284:                     # handle Windows CRLF
+0285:                     self.advance()
        __pyx_t_2 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_FileInputStream *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.advance(((struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_self)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 285, __pyx_L1_error)
+0286:                 break
      goto __pyx_L4_break;
 0287: 
 0288:             else:
+0289:                 CharVector_append(dest, self.c)
    /*else*/ {
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_append(__pyx_v_dest, __pyx_v_self->__pyx_base.c);
+0290:                 self.advance()
      __pyx_t_2 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_FileInputStream *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.advance(((struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_self)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 290, __pyx_L1_error)
    }
  }
  __pyx_L4_break:;
 0291: 
+0292:     cdef int read_lines_into(self, CharVector* dest, Py_ssize_t n) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_15FileInputStream_read_lines_into(struct __pyx_obj_5allel_3opt_11io_vcf_read_FileInputStream *__pyx_v_self, struct __pyx_t_5allel_3opt_11io_vcf_read_CharVector *__pyx_v_dest, Py_ssize_t __pyx_v_n) {
  Py_ssize_t __pyx_v_n_lines_read;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("read_lines_into", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.FileInputStream.read_lines_into", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 0293:         """Read up to `n` lines into the `dest` buffer."""
+0294:         cdef Py_ssize_t n_lines_read = 0
  __pyx_v_n_lines_read = 0;
 0295: 
 0296:         # with nogil:
 0297: 
+0298:         while n_lines_read < n and self.c != 0:
  while (1) {
    __pyx_t_2 = ((__pyx_v_n_lines_read < __pyx_v_n) != 0);
    if (__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L5_bool_binop_done;
    }
    __pyx_t_2 = ((__pyx_v_self->__pyx_base.c != 0) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L5_bool_binop_done:;
    if (!__pyx_t_1) break;
+0299:             self.read_line_into(dest)
    __pyx_t_3 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_FileInputStream *)__pyx_v_self->__pyx_base.__pyx_vtab)->read_line_into(__pyx_v_self, __pyx_v_dest); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 299, __pyx_L1_error)
+0300:             n_lines_read += 1
    __pyx_v_n_lines_read = (__pyx_v_n_lines_read + 1);
  }
 0301: 
+0302:         return n_lines_read
  __pyx_r = __pyx_v_n_lines_read;
  goto __pyx_L0;
 0303: 
+0304:     def readline(self):
/* Python wrapper */
static PyObject *__pyx_pw_5allel_3opt_11io_vcf_read_15FileInputStream_5readline(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_5allel_3opt_11io_vcf_read_15FileInputStream_4readline[] = "Read characters up to end of line or end of file and return as Python bytes\n        object.";
static PyObject *__pyx_pw_5allel_3opt_11io_vcf_read_15FileInputStream_5readline(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("readline (wrapper)", 0);
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_15FileInputStream_4readline(((struct __pyx_obj_5allel_3opt_11io_vcf_read_FileInputStream *)__pyx_v_self));

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

static PyObject *__pyx_pf_5allel_3opt_11io_vcf_read_15FileInputStream_4readline(struct __pyx_obj_5allel_3opt_11io_vcf_read_FileInputStream *__pyx_v_self) {
  struct __pyx_t_5allel_3opt_11io_vcf_read_CharVector __pyx_v_line;
  PyObject *__pyx_v_ret = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("readline", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.FileInputStream.readline", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ret);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 0305:         """Read characters up to end of line or end of file and return as Python bytes
 0306:         object."""
 0307:         cdef CharVector line
+0308:         CharVector_init(&line, 2**8)
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_init((&__pyx_v_line), 0x100);
+0309:         self.read_line_into(&line)
  __pyx_t_1 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_FileInputStream *)__pyx_v_self->__pyx_base.__pyx_vtab)->read_line_into(__pyx_v_self, (&__pyx_v_line)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 309, __pyx_L1_error)
+0310:         ret = CharVector_to_pybytes(&line)
  __pyx_t_2 = __pyx_f_5allel_3opt_11io_vcf_read_CharVector_to_pybytes((&__pyx_v_line)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 310, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_ret = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;
+0311:         CharVector_free(&line)
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_free((&__pyx_v_line));
+0312:         return ret
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_ret);
  __pyx_r = __pyx_v_ret;
  goto __pyx_L0;
 0313: 
 0314: 
+0315: cdef class CharVectorInputStream(InputStreamBase):
struct __pyx_obj_5allel_3opt_11io_vcf_read_CharVectorInputStream {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase __pyx_base;
  struct __pyx_t_5allel_3opt_11io_vcf_read_CharVector vector;
  Py_ssize_t stream_index;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_CharVectorInputStream {
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase __pyx_base;
  void (*clear)(struct __pyx_obj_5allel_3opt_11io_vcf_read_CharVectorInputStream *);
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_CharVectorInputStream *__pyx_vtabptr_5allel_3opt_11io_vcf_read_CharVectorInputStream;

 0316: 
 0317:     cdef:
 0318:         CharVector vector
 0319:         Py_ssize_t stream_index
 0320: 
+0321:     def __cinit__(self, Py_ssize_t capacity):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_21CharVectorInputStream_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_21CharVectorInputStream_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  Py_ssize_t __pyx_v_capacity;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_capacity,0};
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_capacity)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 321, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_capacity = __Pyx_PyIndex_AsSsize_t(values[0]); if (unlikely((__pyx_v_capacity == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 321, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 321, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.CharVectorInputStream.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_21CharVectorInputStream___cinit__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_CharVectorInputStream *)__pyx_v_self), __pyx_v_capacity);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_21CharVectorInputStream___cinit__(struct __pyx_obj_5allel_3opt_11io_vcf_read_CharVectorInputStream *__pyx_v_self, Py_ssize_t __pyx_v_capacity) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+0322:         CharVector_init(&self.vector, capacity)
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_init((&__pyx_v_self->vector), __pyx_v_capacity);
+0323:         self.stream_index = 0
  __pyx_v_self->stream_index = 0;
 0324: 
+0325:     def __dealloc__(self):
/* Python wrapper */
static void __pyx_pw_5allel_3opt_11io_vcf_read_21CharVectorInputStream_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_5allel_3opt_11io_vcf_read_21CharVectorInputStream_3__dealloc__(PyObject *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_pf_5allel_3opt_11io_vcf_read_21CharVectorInputStream_2__dealloc__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_CharVectorInputStream *)__pyx_v_self));

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

static void __pyx_pf_5allel_3opt_11io_vcf_read_21CharVectorInputStream_2__dealloc__(struct __pyx_obj_5allel_3opt_11io_vcf_read_CharVectorInputStream *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__", 0);
/* … */
  /* function exit code */
  __Pyx_RefNannyFinishContext();
}
+0326:         CharVector_free(&self.vector)
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_free((&__pyx_v_self->vector));
 0327: 
+0328:     cdef int advance(self) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_21CharVectorInputStream_advance(struct __pyx_obj_5allel_3opt_11io_vcf_read_CharVectorInputStream *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("advance", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+0329:         if self.stream_index < self.vector.size:
  __pyx_t_1 = ((__pyx_v_self->stream_index < __pyx_v_self->vector.size) != 0);
  if (__pyx_t_1) {
/* … */
    goto __pyx_L3;
  }
+0330:             self.c = self.vector.data[self.stream_index]
    __pyx_v_self->__pyx_base.c = (__pyx_v_self->vector.data[__pyx_v_self->stream_index]);
+0331:             self.stream_index += 1
    __pyx_v_self->stream_index = (__pyx_v_self->stream_index + 1);
 0332:         else:
+0333:             self.c = 0
  /*else*/ {
    __pyx_v_self->__pyx_base.c = 0;
  }
  __pyx_L3:;
 0334: 
+0335:     cdef void clear(self) :  # nogil
static void __pyx_f_5allel_3opt_11io_vcf_read_21CharVectorInputStream_clear(struct __pyx_obj_5allel_3opt_11io_vcf_read_CharVectorInputStream *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("clear", 0);
/* … */
  /* function exit code */
  __Pyx_RefNannyFinishContext();
}
+0336:         CharVector_clear(&self.vector)
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_self->vector));
+0337:         self.stream_index = 0
  __pyx_v_self->stream_index = 0;
 0338: 
 0339: 
 0340: ##########################################################################################
 0341: # VCF Parsing.
 0342: 
 0343: 
+0344: cdef enum VCFState:
enum __pyx_t_5allel_3opt_11io_vcf_read_VCFState {
  __pyx_e_5allel_3opt_11io_vcf_read_CHROM = 0,
  __pyx_e_5allel_3opt_11io_vcf_read_POS = 1,
  __pyx_e_5allel_3opt_11io_vcf_read_ID = 2,
  __pyx_e_5allel_3opt_11io_vcf_read_REF = 3,
  __pyx_e_5allel_3opt_11io_vcf_read_ALT = 4,
  __pyx_e_5allel_3opt_11io_vcf_read_QUAL = 5,
  __pyx_e_5allel_3opt_11io_vcf_read_FILTER = 6,
  __pyx_e_5allel_3opt_11io_vcf_read_INFO = 7,
  __pyx_e_5allel_3opt_11io_vcf_read_FORMAT = 8,
  __pyx_e_5allel_3opt_11io_vcf_read_CALLDATA = 9,
  __pyx_e_5allel_3opt_11io_vcf_read_EOL = 10,
  __pyx_e_5allel_3opt_11io_vcf_read_EOF = 11
};
 0345:     CHROM = 0,
 0346:     POS = 1,
 0347:     ID = 2,
 0348:     REF = 3,
 0349:     ALT = 4,
 0350:     QUAL = 5,
 0351:     FILTER = 6,
 0352:     INFO = 7,
 0353:     FORMAT = 8,
 0354:     CALLDATA = 9,
 0355:     EOL = 10,
 0356:     EOF = 11
 0357: 
 0358: 
+0359: cdef class VCFContext:
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext {
  PyObject_HEAD
  PyObject *headers;
  PyObject *fields;
  PyObject *formats;
  int state;
  Py_ssize_t variant_index;
  Py_ssize_t chunk_variant_index;
  Py_ssize_t sample_index;
  Py_ssize_t sample_output_index;
  Py_ssize_t sample_field_index;
  struct __pyx_t_5allel_3opt_11io_vcf_read_IntVector variant_format_indices;
  struct __pyx_t_5allel_3opt_11io_vcf_read_CharVector temp;
  struct __pyx_t_5allel_3opt_11io_vcf_read_CharVector info_key;
  struct __pyx_t_5allel_3opt_11io_vcf_read_CharVector info_val;
  struct __pyx_t_5allel_3opt_11io_vcf_read_CharVector chrom;
  long pos;
  Py_ssize_t ref_len;
};

 0360: 
 0361:     cdef:
 0362:         # useful stuff
 0363:         object headers
 0364:         list fields
 0365:         list formats
 0366: 
 0367:         # dynamic attributes - reflect current state during parsing
 0368:         int state  # overall parser state
 0369:         Py_ssize_t variant_index  # index of current variant
 0370:         Py_ssize_t chunk_variant_index  # index of current variant within current chunk
 0371:         Py_ssize_t sample_index  # index of current sample within call data
 0372:         Py_ssize_t sample_output_index  # index of current sample within output calldata arrays
 0373:         Py_ssize_t sample_field_index  # index of field within call data for current sample
 0374:         IntVector variant_format_indices  # indices of formats for the current variant
 0375: 
 0376:         # buffers
 0377:         CharVector temp  # used for numeric values
 0378:         CharVector info_key  # used for info key
 0379:         CharVector info_val  # used for info value
 0380: 
 0381:         # keep track of current chrom and pos, even if fields are skipped
 0382:         CharVector chrom
 0383:         long pos
 0384: 
 0385:         # track size of reference allele (needed for svlen)
 0386:         Py_ssize_t ref_len
 0387: 
+0388:     def __cinit__(self, headers, fields):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_10VCFContext_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_10VCFContext_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_headers = 0;
  PyObject *__pyx_v_fields = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_headers,&__pyx_n_s_fields,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] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_headers)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fields)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, 1); __PYX_ERR(0, 388, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 388, __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_headers = values[0];
    __pyx_v_fields = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 388, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFContext.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_10VCFContext___cinit__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *)__pyx_v_self), __pyx_v_headers, __pyx_v_fields);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_10VCFContext___cinit__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_self, PyObject *__pyx_v_headers, PyObject *__pyx_v_fields) {
  PyObject *__pyx_v_f = NULL;
  PyObject *__pyx_v_group = NULL;
  PyObject *__pyx_v_name = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFContext.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_f);
  __Pyx_XDECREF(__pyx_v_group);
  __Pyx_XDECREF(__pyx_v_name);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+0389:         self.headers = headers
  __Pyx_INCREF(__pyx_v_headers);
  __Pyx_GIVEREF(__pyx_v_headers);
  __Pyx_GOTREF(__pyx_v_self->headers);
  __Pyx_DECREF(__pyx_v_self->headers);
  __pyx_v_self->headers = __pyx_v_headers;
+0390:         self.fields = list(fields)
  __pyx_t_1 = PySequence_List(__pyx_v_fields); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 390, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->fields);
  __Pyx_DECREF(__pyx_v_self->fields);
  __pyx_v_self->fields = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
+0391:         self.formats = list()
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 391, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->formats);
  __Pyx_DECREF(__pyx_v_self->formats);
  __pyx_v_self->formats = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
+0392:         for f in fields:
  if (likely(PyList_CheckExact(__pyx_v_fields)) || PyTuple_CheckExact(__pyx_v_fields)) {
    __pyx_t_1 = __pyx_v_fields; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
    __pyx_t_3 = NULL;
  } else {
    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_fields); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 392, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 392, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 392, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 392, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 392, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 392, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_3(__pyx_t_1);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 392, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_f, __pyx_t_4);
    __pyx_t_4 = 0;
/* … */
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0393:             group, name = f.split('/')
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_split); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 393, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 393, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if ((likely(PyTuple_CheckExact(__pyx_t_5))) || (PyList_CheckExact(__pyx_t_5))) {
      PyObject* sequence = __pyx_t_5;
      #if !CYTHON_COMPILING_IN_PYPY
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 393, __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_6 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_4 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_6 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_6);
      #else
      __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 393, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 393, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      #endif
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_7 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 393, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext;
      index = 0; __pyx_t_4 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_4)) goto __pyx_L5_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_4);
      index = 1; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L5_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_6);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) __PYX_ERR(0, 393, __pyx_L1_error)
      __pyx_t_8 = NULL;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L6_unpacking_done;
      __pyx_L5_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_8 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 393, __pyx_L1_error)
      __pyx_L6_unpacking_done:;
    }
    __Pyx_XDECREF_SET(__pyx_v_group, __pyx_t_4);
    __pyx_t_4 = 0;
    __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_6);
    __pyx_t_6 = 0;
/* … */
  __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_s__3); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 393, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__4);
  __Pyx_GIVEREF(__pyx_tuple__4);
+0394:             if group == 'calldata':
    __pyx_t_9 = (__Pyx_PyString_Equals(__pyx_v_group, __pyx_n_s_calldata, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 394, __pyx_L1_error)
    if (__pyx_t_9) {
/* … */
    }
+0395:                 self.formats.append(name)
      if (unlikely(__pyx_v_self->formats == Py_None)) {
        PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
        __PYX_ERR(0, 395, __pyx_L1_error)
      }
      __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_self->formats, __pyx_v_name); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 395, __pyx_L1_error)
 0396: 
 0397:         # initialise dynamic state
+0398:         self.state = VCFState.CHROM
  __pyx_v_self->state = __pyx_e_5allel_3opt_11io_vcf_read_CHROM;
+0399:         self.variant_index = -1
  __pyx_v_self->variant_index = -1L;
+0400:         self.chunk_variant_index = -1
  __pyx_v_self->chunk_variant_index = -1L;
+0401:         self.sample_index = 0
  __pyx_v_self->sample_index = 0;
+0402:         self.sample_output_index = -1
  __pyx_v_self->sample_output_index = -1L;
+0403:         self.sample_field_index = 0
  __pyx_v_self->sample_field_index = 0;
+0404:         IntVector_init(&self.variant_format_indices, 2**6)
  __pyx_f_5allel_3opt_11io_vcf_read_IntVector_init((&__pyx_v_self->variant_format_indices), 64);
 0405: 
 0406:         # initialise temporary buffers
+0407:         CharVector_init(&self.temp, 2**6)
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_init((&__pyx_v_self->temp), 64);
+0408:         CharVector_init(&self.info_key, 2**6)
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_init((&__pyx_v_self->info_key), 64);
+0409:         CharVector_init(&self.info_val, 2**6)
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_init((&__pyx_v_self->info_val), 64);
 0410: 
 0411:         # initialise chrom and pos
+0412:         CharVector_init(&self.chrom, 2**6)
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_init((&__pyx_v_self->chrom), 64);
+0413:         self.pos = -1
  __pyx_v_self->pos = -1L;
+0414:         self.ref_len = 0
  __pyx_v_self->ref_len = 0;
 0415: 
+0416:     def __dealloc__(self):
/* Python wrapper */
static void __pyx_pw_5allel_3opt_11io_vcf_read_10VCFContext_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_5allel_3opt_11io_vcf_read_10VCFContext_3__dealloc__(PyObject *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_pf_5allel_3opt_11io_vcf_read_10VCFContext_2__dealloc__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *)__pyx_v_self));

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

static void __pyx_pf_5allel_3opt_11io_vcf_read_10VCFContext_2__dealloc__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__", 0);
/* … */
  /* function exit code */
  __Pyx_RefNannyFinishContext();
}
+0417:         IntVector_free(&self.variant_format_indices)
  __pyx_f_5allel_3opt_11io_vcf_read_IntVector_free((&__pyx_v_self->variant_format_indices));
+0418:         CharVector_free(&self.temp)
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_free((&__pyx_v_self->temp));
+0419:         CharVector_free(&self.info_key)
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_free((&__pyx_v_self->info_key));
+0420:         CharVector_free(&self.info_val)
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_free((&__pyx_v_self->info_val));
+0421:         CharVector_free(&self.chrom)
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_free((&__pyx_v_self->chrom));
 0422: 
 0423: 
+0424: def check_samples(loc_samples, headers):
/* Python wrapper */
static PyObject *__pyx_pw_5allel_3opt_11io_vcf_read_1check_samples(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_5allel_3opt_11io_vcf_read_1check_samples = {"check_samples", (PyCFunction)__pyx_pw_5allel_3opt_11io_vcf_read_1check_samples, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_5allel_3opt_11io_vcf_read_1check_samples(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_loc_samples = 0;
  PyObject *__pyx_v_headers = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("check_samples (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_loc_samples,&__pyx_n_s_headers,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] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_loc_samples)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_headers)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("check_samples", 1, 2, 2, 1); __PYX_ERR(0, 424, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "check_samples") < 0)) __PYX_ERR(0, 424, __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_loc_samples = values[0];
    __pyx_v_headers = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("check_samples", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 424, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.check_samples", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_check_samples(__pyx_self, __pyx_v_loc_samples, __pyx_v_headers);

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

static PyObject *__pyx_pf_5allel_3opt_11io_vcf_read_check_samples(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_loc_samples, PyObject *__pyx_v_headers) {
  Py_ssize_t __pyx_v_n_samples;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("check_samples", 0);
  __Pyx_INCREF(__pyx_v_loc_samples);
/* … */
  /* 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_7);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.check_samples", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_loc_samples);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__149 = PyTuple_Pack(3, __pyx_n_s_loc_samples, __pyx_n_s_headers, __pyx_n_s_n_samples); if (unlikely(!__pyx_tuple__149)) __PYX_ERR(0, 424, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__149);
  __Pyx_GIVEREF(__pyx_tuple__149);
/* … */
  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_5allel_3opt_11io_vcf_read_1check_samples, NULL, __pyx_n_s_allel_opt_io_vcf_read); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 424, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_check_samples, __pyx_t_1) < 0) __PYX_ERR(0, 424, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_codeobj__150 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__149, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_allel_opt_io_vcf_read_pyx, __pyx_n_s_check_samples, 424, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__150)) __PYX_ERR(0, 424, __pyx_L1_error)
+0425:     n_samples = len(headers.samples)
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_headers, __pyx_n_s_samples); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 425, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 425, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_n_samples = __pyx_t_2;
+0426:     if loc_samples is None:
  __pyx_t_3 = (__pyx_v_loc_samples == Py_None);
  __pyx_t_4 = (__pyx_t_3 != 0);
  if (__pyx_t_4) {
/* … */
    goto __pyx_L3;
  }
+0427:         loc_samples = np.ones(n_samples, dtype='u1')
    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 427, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ones); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 427, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_n_samples); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 427, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 427, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 427, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_n_s_u1) < 0) __PYX_ERR(0, 427, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 427, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF_SET(__pyx_v_loc_samples, __pyx_t_7);
    __pyx_t_7 = 0;
 0428:     else:
 0429:         # assume samples is already a boolean indexing array
+0430:         loc_samples = loc_samples.view('u1')
  /*else*/ {
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_loc_samples, __pyx_n_s_view); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 430, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 430, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF_SET(__pyx_v_loc_samples, __pyx_t_1);
    __pyx_t_1 = 0;
/* … */
  __pyx_tuple__7 = PyTuple_Pack(1, __pyx_n_s_u1); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 430, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__7);
  __Pyx_GIVEREF(__pyx_tuple__7);
+0431:         assert loc_samples.shape[0] == n_samples
    #ifndef CYTHON_WITHOUT_ASSERTIONS
    if (unlikely(!Py_OptimizeFlag)) {
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_loc_samples, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 431, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 431, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_n_samples); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 431, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_6 = PyObject_RichCompare(__pyx_t_7, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 431, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 431, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_4)) {
        PyErr_SetNone(PyExc_AssertionError);
        __PYX_ERR(0, 431, __pyx_L1_error)
      }
    }
    #endif
  }
  __pyx_L3:;
+0432:     return loc_samples
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_loc_samples);
  __pyx_r = __pyx_v_loc_samples;
  goto __pyx_L0;
 0433: 
 0434: 
+0435: cdef class VCFChunkIterator:
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFChunkIterator {
  PyObject_HEAD
  struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *stream;
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *context;
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFParser *parser;
};

 0436: 
 0437:     cdef:
 0438:         InputStreamBase stream
 0439:         VCFContext context
 0440:         VCFParser parser
 0441: 
+0442:     def __init__(self,
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_16VCFChunkIterator_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_16VCFChunkIterator_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream = 0;
  PyObject *__pyx_v_chunk_length = 0;
  PyObject *__pyx_v_headers = 0;
  PyObject *__pyx_v_fields = 0;
  PyObject *__pyx_v_types = 0;
  PyObject *__pyx_v_numbers = 0;
  PyObject *__pyx_v_fills = 0;
  PyObject *__pyx_v_region = 0;
  PyObject *__pyx_v_loc_samples = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_stream,&__pyx_n_s_chunk_length,&__pyx_n_s_headers,&__pyx_n_s_fields,&__pyx_n_s_types,&__pyx_n_s_numbers,&__pyx_n_s_fills,&__pyx_n_s_region,&__pyx_n_s_loc_samples,0};
    PyObject* values[9] = {0,0,0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
        CYTHON_FALLTHROUGH;
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_stream)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_chunk_length)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, 1); __PYX_ERR(0, 442, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_headers)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, 2); __PYX_ERR(0, 442, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fields)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, 3); __PYX_ERR(0, 442, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_types)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, 4); __PYX_ERR(0, 442, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_numbers)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, 5); __PYX_ERR(0, 442, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fills)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, 6); __PYX_ERR(0, 442, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (likely((values[7] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_region)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, 7); __PYX_ERR(0, 442, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  8:
        if (likely((values[8] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_loc_samples)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, 8); __PYX_ERR(0, 442, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 442, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 9) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
      values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
      values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
    }
    __pyx_v_stream = ((struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *)values[0]);
    __pyx_v_chunk_length = values[1];
    __pyx_v_headers = values[2];
    __pyx_v_fields = values[3];
    __pyx_v_types = values[4];
    __pyx_v_numbers = values[5];
    __pyx_v_fills = values[6];
    __pyx_v_region = values[7];
    __pyx_v_loc_samples = values[8];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 9, 9, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 442, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFChunkIterator.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_stream), __pyx_ptype_5allel_3opt_11io_vcf_read_InputStreamBase, 1, "stream", 0))) __PYX_ERR(0, 443, __pyx_L1_error)
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_16VCFChunkIterator___init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFChunkIterator *)__pyx_v_self), __pyx_v_stream, __pyx_v_chunk_length, __pyx_v_headers, __pyx_v_fields, __pyx_v_types, __pyx_v_numbers, __pyx_v_fills, __pyx_v_region, __pyx_v_loc_samples);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_16VCFChunkIterator___init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFChunkIterator *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, PyObject *__pyx_v_chunk_length, PyObject *__pyx_v_headers, PyObject *__pyx_v_fields, PyObject *__pyx_v_types, PyObject *__pyx_v_numbers, PyObject *__pyx_v_fills, PyObject *__pyx_v_region, PyObject *__pyx_v_loc_samples) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__", 0);
  __Pyx_INCREF(__pyx_v_fields);
  __Pyx_INCREF(__pyx_v_loc_samples);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFChunkIterator.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_fields);
  __Pyx_XDECREF(__pyx_v_loc_samples);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 0443:                  InputStreamBase stream,
 0444:                  chunk_length,
 0445:                  headers,
 0446:                  fields,
 0447:                  types,
 0448:                  numbers,
 0449:                  fills,
 0450:                  region,
 0451:                  loc_samples):
 0452: 
 0453:         # store reference to input stream
+0454:         self.stream = stream
  __Pyx_INCREF(((PyObject *)__pyx_v_stream));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_stream));
  __Pyx_GOTREF(__pyx_v_self->stream);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->stream));
  __pyx_v_self->stream = __pyx_v_stream;
 0455: 
 0456:         # setup context
+0457:         fields = sorted(fields)
  __pyx_t_2 = PySequence_List(__pyx_v_fields); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 457, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_3 = PyList_Sort(__pyx_t_1); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 457, __pyx_L1_error)
  __Pyx_DECREF_SET(__pyx_v_fields, __pyx_t_1);
  __pyx_t_1 = 0;
+0458:         self.context = VCFContext(headers, fields)
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 458, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_headers);
  __Pyx_GIVEREF(__pyx_v_headers);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_headers);
  __Pyx_INCREF(__pyx_v_fields);
  __Pyx_GIVEREF(__pyx_v_fields);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_fields);
  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFContext), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 458, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_GOTREF(__pyx_v_self->context);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->context));
  __pyx_v_self->context = ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *)__pyx_t_2);
  __pyx_t_2 = 0;
 0459: 
 0460:         # setup parser
+0461:         loc_samples = check_samples(loc_samples, headers)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_check_samples); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 461, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
      __pyx_t_5 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_1)) {
    PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_loc_samples, __pyx_v_headers};
    __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 461, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_2);
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
    PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_loc_samples, __pyx_v_headers};
    __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 461, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_2);
  } else
  #endif
  {
    __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 461, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    if (__pyx_t_4) {
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
    }
    __Pyx_INCREF(__pyx_v_loc_samples);
    __Pyx_GIVEREF(__pyx_v_loc_samples);
    PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_loc_samples);
    __Pyx_INCREF(__pyx_v_headers);
    __Pyx_GIVEREF(__pyx_v_headers);
    PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_headers);
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 461, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF_SET(__pyx_v_loc_samples, __pyx_t_2);
  __pyx_t_2 = 0;
+0462:         self.parser = VCFParser(fields=fields, types=types, numbers=numbers,
  __pyx_t_2 = __Pyx_PyDict_NewPresized(7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 462, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_fields, __pyx_v_fields) < 0) __PYX_ERR(0, 462, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_types, __pyx_v_types) < 0) __PYX_ERR(0, 462, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_numbers, __pyx_v_numbers) < 0) __PYX_ERR(0, 462, __pyx_L1_error)
/* … */
  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFParser), __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 462, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->parser);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->parser));
  __pyx_v_self->parser = ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFParser *)__pyx_t_1);
  __pyx_t_1 = 0;
+0463:                                 chunk_length=chunk_length, loc_samples=loc_samples,
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_chunk_length, __pyx_v_chunk_length) < 0) __PYX_ERR(0, 462, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_loc_samples, __pyx_v_loc_samples) < 0) __PYX_ERR(0, 462, __pyx_L1_error)
+0464:                                 fills=fills, region=region)
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_fills, __pyx_v_fills) < 0) __PYX_ERR(0, 462, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_region, __pyx_v_region) < 0) __PYX_ERR(0, 462, __pyx_L1_error)
 0465: 
+0466:     def __iter__(self):
/* Python wrapper */
static PyObject *__pyx_pw_5allel_3opt_11io_vcf_read_16VCFChunkIterator_3__iter__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_5allel_3opt_11io_vcf_read_16VCFChunkIterator_3__iter__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0);
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_16VCFChunkIterator_2__iter__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFChunkIterator *)__pyx_v_self));

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

static PyObject *__pyx_pf_5allel_3opt_11io_vcf_read_16VCFChunkIterator_2__iter__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFChunkIterator *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iter__", 0);
/* … */
  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+0467:         return self
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __pyx_r = ((PyObject *)__pyx_v_self);
  goto __pyx_L0;
 0468: 
+0469:     def __next__(self):
/* Python wrapper */
static PyObject *__pyx_pw_5allel_3opt_11io_vcf_read_16VCFChunkIterator_5__next__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_5allel_3opt_11io_vcf_read_16VCFChunkIterator_5__next__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__next__ (wrapper)", 0);
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_16VCFChunkIterator_4__next__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFChunkIterator *)__pyx_v_self));

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

static PyObject *__pyx_pf_5allel_3opt_11io_vcf_read_16VCFChunkIterator_4__next__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFChunkIterator *__pyx_v_self) {
  Py_ssize_t __pyx_v_chunk_length;
  PyObject *__pyx_v_chunk = NULL;
  PyObject *__pyx_v_chrom = NULL;
  long __pyx_v_pos;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__next__", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFChunkIterator.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_chunk);
  __Pyx_XDECREF(__pyx_v_chrom);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 0470: 
+0471:         if self.context.state == VCFState.EOF:
  __pyx_t_1 = ((__pyx_v_self->context->state == __pyx_e_5allel_3opt_11io_vcf_read_EOF) != 0);
  if (__pyx_t_1) {
/* … */
  }
+0472:             raise StopIteration
    __Pyx_Raise(__pyx_builtin_StopIteration, 0, 0, 0);
    __PYX_ERR(0, 472, __pyx_L1_error)
 0473: 
 0474:         # reset indices
+0475:         self.context.chunk_variant_index = -1
  __pyx_v_self->context->chunk_variant_index = -1L;
 0476: 
 0477:         # allocate arrays for next chunk
+0478:         self.parser.malloc_chunk()
  __pyx_t_2 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFParser *)__pyx_v_self->parser->__pyx_vtab)->malloc_chunk(__pyx_v_self->parser); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 478, __pyx_L1_error)
 0479: 
 0480:         # parse next chunk
+0481:         self.parser.parse(self.stream, self.context)
  __pyx_t_3 = ((PyObject *)__pyx_v_self->stream);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_4 = ((PyObject *)__pyx_v_self->context);
  __Pyx_INCREF(__pyx_t_4);
  __pyx_t_2 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFParser *)__pyx_v_self->parser->__pyx_vtab)->parse(__pyx_v_self->parser, ((struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_t_3), ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *)__pyx_t_4)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 481, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 0482: 
 0483:         # get the chunk
+0484:         chunk_length = self.context.chunk_variant_index + 1
  __pyx_v_chunk_length = (__pyx_v_self->context->chunk_variant_index + 1);
+0485:         chunk = self.parser.make_chunk(chunk_length)
  __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_chunk_length); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 485, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFParser *)__pyx_v_self->parser->__pyx_vtab)->make_chunk(__pyx_v_self->parser, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 485, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_v_chunk = __pyx_t_3;
  __pyx_t_3 = 0;
 0486: 
+0487:         if chunk is None:
  __pyx_t_1 = (__pyx_v_chunk == Py_None);
  __pyx_t_5 = (__pyx_t_1 != 0);
  if (__pyx_t_5) {
/* … */
  }
+0488:             raise StopIteration
    __Pyx_Raise(__pyx_builtin_StopIteration, 0, 0, 0);
    __PYX_ERR(0, 488, __pyx_L1_error)
 0489: 
+0490:         chrom = CharVector_to_pybytes(&self.context.chrom)
  __pyx_t_3 = __pyx_f_5allel_3opt_11io_vcf_read_CharVector_to_pybytes((&__pyx_v_self->context->chrom)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 490, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v_chrom = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;
+0491:         pos = self.context.pos
  __pyx_t_6 = __pyx_v_self->context->pos;
  __pyx_v_pos = __pyx_t_6;
+0492:         return chunk, chunk_length, chrom, pos
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_chunk_length); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 492, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_From_long(__pyx_v_pos); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 492, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = PyTuple_New(4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 492, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_INCREF(__pyx_v_chunk);
  __Pyx_GIVEREF(__pyx_v_chunk);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_chunk);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_3);
  __Pyx_INCREF(__pyx_v_chrom);
  __Pyx_GIVEREF(__pyx_v_chrom);
  PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_v_chrom);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_7, 3, __pyx_t_4);
  __pyx_t_3 = 0;
  __pyx_t_4 = 0;
  __pyx_r = __pyx_t_7;
  __pyx_t_7 = 0;
  goto __pyx_L0;
 0493: 
 0494: 
+0495: cdef class VCFParser:
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFParser {
  PyObject_HEAD
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFParser *__pyx_vtab;
  Py_ssize_t chunk_length;
  __Pyx_memviewslice loc_samples;
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFieldParserBase *chrom_pos_parser;
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFieldParserBase *id_parser;
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFieldParserBase *ref_parser;
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFieldParserBase *alt_parser;
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFieldParserBase *qual_parser;
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFieldParserBase *filter_parser;
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFieldParserBase *info_parser;
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFieldParserBase *format_parser;
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFieldParserBase *calldata_parser;
  PyObject *region_chrom;
  Py_ssize_t region_begin;
  Py_ssize_t region_end;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFParser {
  int (*parse)(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFParser *, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *);
  int (*malloc_chunk)(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFParser *);
  PyObject *(*make_chunk)(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFParser *, PyObject *);
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFParser *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFParser;

 0496: 
 0497:     cdef:
 0498:         Py_ssize_t chunk_length
 0499:         np.uint8_t[:] loc_samples
 0500:         VCFFieldParserBase chrom_pos_parser
 0501:         VCFFieldParserBase id_parser
 0502:         VCFFieldParserBase ref_parser
 0503:         VCFFieldParserBase alt_parser
 0504:         VCFFieldParserBase qual_parser
 0505:         VCFFieldParserBase filter_parser
 0506:         VCFFieldParserBase info_parser
 0507:         VCFFieldParserBase format_parser
 0508:         VCFFieldParserBase calldata_parser
 0509:         bytes region_chrom
 0510:         Py_ssize_t region_begin
 0511:         Py_ssize_t region_end
 0512: 
+0513:     def __init__(self, fields, types, numbers, chunk_length, loc_samples, fills, region):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_9VCFParser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_9VCFParser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_fields = 0;
  PyObject *__pyx_v_types = 0;
  PyObject *__pyx_v_numbers = 0;
  PyObject *__pyx_v_chunk_length = 0;
  PyObject *__pyx_v_loc_samples = 0;
  PyObject *__pyx_v_fills = 0;
  PyObject *__pyx_v_region = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fields,&__pyx_n_s_types,&__pyx_n_s_numbers,&__pyx_n_s_chunk_length,&__pyx_n_s_loc_samples,&__pyx_n_s_fills,&__pyx_n_s_region,0};
    PyObject* values[7] = {0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fields)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_types)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 7, 7, 1); __PYX_ERR(0, 513, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_numbers)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 7, 7, 2); __PYX_ERR(0, 513, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_chunk_length)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 7, 7, 3); __PYX_ERR(0, 513, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_loc_samples)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 7, 7, 4); __PYX_ERR(0, 513, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fills)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 7, 7, 5); __PYX_ERR(0, 513, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_region)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 7, 7, 6); __PYX_ERR(0, 513, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 513, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 7) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
    }
    __pyx_v_fields = values[0];
    __pyx_v_types = values[1];
    __pyx_v_numbers = values[2];
    __pyx_v_chunk_length = values[3];
    __pyx_v_loc_samples = values[4];
    __pyx_v_fills = values[5];
    __pyx_v_region = values[6];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 7, 7, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 513, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_9VCFParser___init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFParser *)__pyx_v_self), __pyx_v_fields, __pyx_v_types, __pyx_v_numbers, __pyx_v_chunk_length, __pyx_v_loc_samples, __pyx_v_fills, __pyx_v_region);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_9VCFParser___init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFParser *__pyx_v_self, PyObject *__pyx_v_fields, PyObject *__pyx_v_types, PyObject *__pyx_v_numbers, PyObject *__pyx_v_chunk_length, PyObject *__pyx_v_loc_samples, PyObject *__pyx_v_fills, PyObject *__pyx_v_region) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __PYX_XDEC_MEMVIEW(&__pyx_t_2, 1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+0514:         self.chunk_length = chunk_length
  __pyx_t_1 = __Pyx_PyIndex_AsSsize_t(__pyx_v_chunk_length); if (unlikely((__pyx_t_1 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 514, __pyx_L1_error)
  __pyx_v_self->chunk_length = __pyx_t_1;
+0515:         self.loc_samples = loc_samples
  __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_uint8_t(__pyx_v_loc_samples);
  if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 515, __pyx_L1_error)
  __PYX_XDEC_MEMVIEW(&__pyx_v_self->loc_samples, 0);
  __pyx_v_self->loc_samples = __pyx_t_2;
  __pyx_t_2.memview = NULL;
  __pyx_t_2.data = NULL;
 0516: 
 0517:         # handle region
+0518:         self._init_region(region)
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_init_region); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 518, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  if (!__pyx_t_5) {
    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_region); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 518, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_region};
      __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 518, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_3);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_region};
      __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 518, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_3);
    } else
    #endif
    {
      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 518, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
      __Pyx_INCREF(__pyx_v_region);
      __Pyx_GIVEREF(__pyx_v_region);
      PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_region);
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 518, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 0519: 
 0520:         # setup parsers
+0521:         self._init_chrom_pos(fields, types)
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_init_chrom_pos); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 521, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_7 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_4)) {
    PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_fields, __pyx_v_types};
    __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 521, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_GOTREF(__pyx_t_3);
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
    PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_fields, __pyx_v_types};
    __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 521, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_GOTREF(__pyx_t_3);
  } else
  #endif
  {
    __pyx_t_5 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 521, __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_fields);
    __Pyx_GIVEREF(__pyx_v_fields);
    PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_7, __pyx_v_fields);
    __Pyx_INCREF(__pyx_v_types);
    __Pyx_GIVEREF(__pyx_v_types);
    PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_7, __pyx_v_types);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 521, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+0522:         self._init_id(fields, types)
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_init_id); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 522, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_7 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_4)) {
    PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_fields, __pyx_v_types};
    __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 522, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_3);
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
    PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_fields, __pyx_v_types};
    __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 522, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_3);
  } else
  #endif
  {
    __pyx_t_6 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 522, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    if (__pyx_t_5) {
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
    }
    __Pyx_INCREF(__pyx_v_fields);
    __Pyx_GIVEREF(__pyx_v_fields);
    PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_7, __pyx_v_fields);
    __Pyx_INCREF(__pyx_v_types);
    __Pyx_GIVEREF(__pyx_v_types);
    PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_7, __pyx_v_types);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 522, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+0523:         self._init_ref(fields, types)
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_init_ref); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 523, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_7 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_4)) {
    PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_fields, __pyx_v_types};
    __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 523, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_GOTREF(__pyx_t_3);
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
    PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_fields, __pyx_v_types};
    __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 523, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_GOTREF(__pyx_t_3);
  } else
  #endif
  {
    __pyx_t_5 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 523, __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_fields);
    __Pyx_GIVEREF(__pyx_v_fields);
    PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_7, __pyx_v_fields);
    __Pyx_INCREF(__pyx_v_types);
    __Pyx_GIVEREF(__pyx_v_types);
    PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_7, __pyx_v_types);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 523, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+0524:         self._init_alt(fields, types, numbers)
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_init_alt); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 524, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_7 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_4)) {
    PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_v_fields, __pyx_v_types, __pyx_v_numbers};
    __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_7, 3+__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 524, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_3);
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
    PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_v_fields, __pyx_v_types, __pyx_v_numbers};
    __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_7, 3+__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 524, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_3);
  } else
  #endif
  {
    __pyx_t_6 = PyTuple_New(3+__pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 524, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    if (__pyx_t_5) {
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
    }
    __Pyx_INCREF(__pyx_v_fields);
    __Pyx_GIVEREF(__pyx_v_fields);
    PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_7, __pyx_v_fields);
    __Pyx_INCREF(__pyx_v_types);
    __Pyx_GIVEREF(__pyx_v_types);
    PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_7, __pyx_v_types);
    __Pyx_INCREF(__pyx_v_numbers);
    __Pyx_GIVEREF(__pyx_v_numbers);
    PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_7, __pyx_v_numbers);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 524, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+0525:         self._init_qual(fields, types, fills)
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_init_qual); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 525, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_7 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_4)) {
    PyObject *__pyx_temp[4] = {__pyx_t_6, __pyx_v_fields, __pyx_v_types, __pyx_v_fills};
    __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_7, 3+__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 525, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_GOTREF(__pyx_t_3);
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
    PyObject *__pyx_temp[4] = {__pyx_t_6, __pyx_v_fields, __pyx_v_types, __pyx_v_fills};
    __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_7, 3+__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 525, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_GOTREF(__pyx_t_3);
  } else
  #endif
  {
    __pyx_t_5 = PyTuple_New(3+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 525, __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_fields);
    __Pyx_GIVEREF(__pyx_v_fields);
    PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_7, __pyx_v_fields);
    __Pyx_INCREF(__pyx_v_types);
    __Pyx_GIVEREF(__pyx_v_types);
    PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_7, __pyx_v_types);
    __Pyx_INCREF(__pyx_v_fills);
    __Pyx_GIVEREF(__pyx_v_fills);
    PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_7, __pyx_v_fills);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 525, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+0526:         self._init_filter(fields)
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_init_filter); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 526, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  if (!__pyx_t_5) {
    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_fields); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 526, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_fields};
      __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 526, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_3);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_fields};
      __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 526, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_3);
    } else
    #endif
    {
      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 526, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
      __Pyx_INCREF(__pyx_v_fields);
      __Pyx_GIVEREF(__pyx_v_fields);
      PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_fields);
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 526, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+0527:         self._init_info(fields, types, numbers, fills)
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_init_info); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 527, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_7 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_4)) {
    PyObject *__pyx_temp[5] = {__pyx_t_6, __pyx_v_fields, __pyx_v_types, __pyx_v_numbers, __pyx_v_fills};
    __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_7, 4+__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 527, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_GOTREF(__pyx_t_3);
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
    PyObject *__pyx_temp[5] = {__pyx_t_6, __pyx_v_fields, __pyx_v_types, __pyx_v_numbers, __pyx_v_fills};
    __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_7, 4+__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 527, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_GOTREF(__pyx_t_3);
  } else
  #endif
  {
    __pyx_t_5 = PyTuple_New(4+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 527, __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_fields);
    __Pyx_GIVEREF(__pyx_v_fields);
    PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_7, __pyx_v_fields);
    __Pyx_INCREF(__pyx_v_types);
    __Pyx_GIVEREF(__pyx_v_types);
    PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_7, __pyx_v_types);
    __Pyx_INCREF(__pyx_v_numbers);
    __Pyx_GIVEREF(__pyx_v_numbers);
    PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_7, __pyx_v_numbers);
    __Pyx_INCREF(__pyx_v_fills);
    __Pyx_GIVEREF(__pyx_v_fills);
    PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_7, __pyx_v_fills);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 527, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+0528:         self._init_format_calldata(fields, types, numbers, fills)
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_init_format_calldata); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 528, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_7 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_4)) {
    PyObject *__pyx_temp[5] = {__pyx_t_5, __pyx_v_fields, __pyx_v_types, __pyx_v_numbers, __pyx_v_fills};
    __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_7, 4+__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 528, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_3);
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
    PyObject *__pyx_temp[5] = {__pyx_t_5, __pyx_v_fields, __pyx_v_types, __pyx_v_numbers, __pyx_v_fills};
    __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_7, 4+__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 528, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_3);
  } else
  #endif
  {
    __pyx_t_6 = PyTuple_New(4+__pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 528, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    if (__pyx_t_5) {
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
    }
    __Pyx_INCREF(__pyx_v_fields);
    __Pyx_GIVEREF(__pyx_v_fields);
    PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_7, __pyx_v_fields);
    __Pyx_INCREF(__pyx_v_types);
    __Pyx_GIVEREF(__pyx_v_types);
    PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_7, __pyx_v_types);
    __Pyx_INCREF(__pyx_v_numbers);
    __Pyx_GIVEREF(__pyx_v_numbers);
    PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_7, __pyx_v_numbers);
    __Pyx_INCREF(__pyx_v_fills);
    __Pyx_GIVEREF(__pyx_v_fills);
    PyTuple_SET_ITEM(__pyx_t_6, 3+__pyx_t_7, __pyx_v_fills);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 528, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 0529: 
+0530:         if fields:
  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_fields); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 530, __pyx_L1_error)
  if (__pyx_t_8) {
/* … */
  }
 0531:             # shouldn't ever be any left over
+0532:             raise RuntimeError('unexpected fields left over: %r' % set(fields))
    __pyx_t_3 = PySet_New(__pyx_v_fields); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 532, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_unexpected_fields_left_over_r, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 532, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 532, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 532, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __PYX_ERR(0, 532, __pyx_L1_error)
 0533: 
+0534:     def _init_region(self, region):
/* Python wrapper */
static PyObject *__pyx_pw_5allel_3opt_11io_vcf_read_9VCFParser_3_init_region(PyObject *__pyx_v_self, PyObject *__pyx_v_region); /*proto*/
static PyObject *__pyx_pw_5allel_3opt_11io_vcf_read_9VCFParser_3_init_region(PyObject *__pyx_v_self, PyObject *__pyx_v_region) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_init_region (wrapper)", 0);
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_9VCFParser_2_init_region(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFParser *)__pyx_v_self), ((PyObject *)__pyx_v_region));

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

static PyObject *__pyx_pf_5allel_3opt_11io_vcf_read_9VCFParser_2_init_region(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFParser *__pyx_v_self, PyObject *__pyx_v_region) {
  PyObject *__pyx_v_tokens = NULL;
  PyObject *__pyx_v_range_tokens = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_init_region", 0);
/* … */
  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFParser._init_region", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_tokens);
  __Pyx_XDECREF(__pyx_v_range_tokens);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+0535:         self.region_chrom = b''
  __Pyx_INCREF(__pyx_kp_b__8);
  __Pyx_GIVEREF(__pyx_kp_b__8);
  __Pyx_GOTREF(__pyx_v_self->region_chrom);
  __Pyx_DECREF(__pyx_v_self->region_chrom);
  __pyx_v_self->region_chrom = __pyx_kp_b__8;
+0536:         self.region_begin = 0
  __pyx_v_self->region_begin = 0;
+0537:         self.region_end = 0
  __pyx_v_self->region_end = 0;
+0538:         if region is not None:
  __pyx_t_1 = (__pyx_v_region != Py_None);
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {
/* … */
  }
+0539:             tokens = region.split(':')
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_region, __pyx_n_s_split); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 539, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 539, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_v_tokens = __pyx_t_4;
    __pyx_t_4 = 0;
/* … */
  __pyx_tuple__10 = PyTuple_Pack(1, __pyx_kp_s__9); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 539, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__10);
  __Pyx_GIVEREF(__pyx_tuple__10);
+0540:             if len(tokens) == 0:
    __pyx_t_5 = PyObject_Length(__pyx_v_tokens); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 540, __pyx_L1_error)
    __pyx_t_2 = ((__pyx_t_5 == 0) != 0);
    if (__pyx_t_2) {
/* … */
    }
+0541:                 raise ValueError('bad region string: %r' % region)
      __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_bad_region_string_r, __pyx_v_region); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 541, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 541, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
      __pyx_t_4 = 0;
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 541, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_Raise(__pyx_t_4, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __PYX_ERR(0, 541, __pyx_L1_error)
+0542:             if PY2:
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_PY2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 542, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 542, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (__pyx_t_2) {
/* … */
      goto __pyx_L5;
    }
+0543:                 self.region_chrom = tokens[0]
      __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_tokens, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 543, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (!(likely(PyBytes_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_4)->tp_name), 0))) __PYX_ERR(0, 543, __pyx_L1_error)
      __Pyx_GIVEREF(__pyx_t_4);
      __Pyx_GOTREF(__pyx_v_self->region_chrom);
      __Pyx_DECREF(__pyx_v_self->region_chrom);
      __pyx_v_self->region_chrom = ((PyObject*)__pyx_t_4);
      __pyx_t_4 = 0;
 0544:             else:
+0545:                 self.region_chrom = tokens[0].encode('utf8')
    /*else*/ {
      __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_tokens, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 545, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_encode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 545, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 545, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (!(likely(PyBytes_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_4)->tp_name), 0))) __PYX_ERR(0, 545, __pyx_L1_error)
      __Pyx_GIVEREF(__pyx_t_4);
      __Pyx_GOTREF(__pyx_v_self->region_chrom);
      __Pyx_DECREF(__pyx_v_self->region_chrom);
      __pyx_v_self->region_chrom = ((PyObject*)__pyx_t_4);
      __pyx_t_4 = 0;
    }
    __pyx_L5:;
/* … */
  __pyx_tuple__11 = PyTuple_Pack(1, __pyx_n_s_utf8); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(0, 545, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__11);
  __Pyx_GIVEREF(__pyx_tuple__11);
+0546:             if len(tokens) > 1:
    __pyx_t_5 = PyObject_Length(__pyx_v_tokens); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 546, __pyx_L1_error)
    __pyx_t_2 = ((__pyx_t_5 > 1) != 0);
    if (__pyx_t_2) {
/* … */
    }
+0547:                 range_tokens = tokens[1].split('-')
      __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_tokens, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 547, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_split); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 547, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 547, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_v_range_tokens = __pyx_t_4;
      __pyx_t_4 = 0;
/* … */
  __pyx_tuple__13 = PyTuple_Pack(1, __pyx_kp_s__12); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(0, 547, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__13);
  __Pyx_GIVEREF(__pyx_tuple__13);
+0548:                 if len(range_tokens) != 2:
      __pyx_t_5 = PyObject_Length(__pyx_v_range_tokens); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 548, __pyx_L1_error)
      __pyx_t_2 = ((__pyx_t_5 != 2) != 0);
      if (__pyx_t_2) {
/* … */
      }
+0549:                     raise ValueError('bad region string: %r' % region)
        __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_bad_region_string_r, __pyx_v_region); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 549, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 549, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_GIVEREF(__pyx_t_4);
        PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
        __pyx_t_4 = 0;
        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 549, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_Raise(__pyx_t_4, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __PYX_ERR(0, 549, __pyx_L1_error)
+0550:                 self.region_begin = int(range_tokens[0])
      __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_range_tokens, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 550, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_3 = __Pyx_PyNumber_Int(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 550, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 550, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_v_self->region_begin = __pyx_t_5;
+0551:                 self.region_end = int(range_tokens[1])
      __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_range_tokens, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 551, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = __Pyx_PyNumber_Int(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 551, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_t_4); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 551, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_v_self->region_end = __pyx_t_5;
 0552: 
+0553:     def _init_chrom_pos(self, fields, types):
/* Python wrapper */
static PyObject *__pyx_pw_5allel_3opt_11io_vcf_read_9VCFParser_5_init_chrom_pos(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_5allel_3opt_11io_vcf_read_9VCFParser_4_init_chrom_pos[] = "Setup CHROM and POS parser.";
static PyObject *__pyx_pw_5allel_3opt_11io_vcf_read_9VCFParser_5_init_chrom_pos(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_fields = 0;
  PyObject *__pyx_v_types = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_init_chrom_pos (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fields,&__pyx_n_s_types,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] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fields)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_types)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_init_chrom_pos", 1, 2, 2, 1); __PYX_ERR(0, 553, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_init_chrom_pos") < 0)) __PYX_ERR(0, 553, __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_fields = values[0];
    __pyx_v_types = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_init_chrom_pos", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 553, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFParser._init_chrom_pos", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_9VCFParser_4_init_chrom_pos(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFParser *)__pyx_v_self), __pyx_v_fields, __pyx_v_types);

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

static PyObject *__pyx_pf_5allel_3opt_11io_vcf_read_9VCFParser_4_init_chrom_pos(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFParser *__pyx_v_self, PyObject *__pyx_v_fields, PyObject *__pyx_v_types) {
  PyObject *__pyx_v_kwds = NULL;
  PyObject *__pyx_v_t = NULL;
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFChromPosParser *__pyx_v_chrom_pos_parser = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_init_chrom_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_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFParser._init_chrom_pos", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_kwds);
  __Pyx_XDECREF(__pyx_v_t);
  __Pyx_XDECREF((PyObject *)__pyx_v_chrom_pos_parser);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 0554:         """Setup CHROM and POS parser."""
+0555:         kwds = dict(dtype=None, chunk_length=self.chunk_length,
  __pyx_t_1 = __Pyx_PyDict_NewPresized(7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 555, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, Py_None) < 0) __PYX_ERR(0, 555, __pyx_L1_error)
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->chunk_length); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 555, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_chunk_length, __pyx_t_2) < 0) __PYX_ERR(0, 555, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+0556:                     region_chrom=self.region_chrom, region_begin=self.region_begin,
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_region_chrom, __pyx_v_self->region_chrom) < 0) __PYX_ERR(0, 555, __pyx_L1_error)
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->region_begin); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 556, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_region_begin, __pyx_t_2) < 0) __PYX_ERR(0, 555, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+0557:                     region_end=self.region_end, store_chrom=False, store_pos=False)
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->region_end); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 557, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_region_end, __pyx_t_2) < 0) __PYX_ERR(0, 555, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_store_chrom, Py_False) < 0) __PYX_ERR(0, 555, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_store_pos, Py_False) < 0) __PYX_ERR(0, 555, __pyx_L1_error)
  __pyx_v_kwds = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
 0558: 
+0559:         if CHROM_FIELD in fields:
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_CHROM_FIELD); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 559, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_v_fields, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 559, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_4 = (__pyx_t_3 != 0);
  if (__pyx_t_4) {
/* … */
  }
+0560:             kwds['dtype'] = types[CHROM_FIELD]
    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_CHROM_FIELD); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 560, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyObject_GetItem(__pyx_v_types, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 560, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(PyDict_SetItem(__pyx_v_kwds, __pyx_n_s_dtype, __pyx_t_2) < 0)) __PYX_ERR(0, 560, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+0561:             kwds['store_chrom'] = True
    if (unlikely(PyDict_SetItem(__pyx_v_kwds, __pyx_n_s_store_chrom, Py_True) < 0)) __PYX_ERR(0, 561, __pyx_L1_error)
+0562:             fields.remove(CHROM_FIELD)
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_fields, __pyx_n_s_remove); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 562, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_CHROM_FIELD); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 562, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_1, function);
      }
    }
    if (!__pyx_t_6) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 562, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_2);
    } else {
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_1)) {
        PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_5};
        __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 562, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
        PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_5};
        __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 562, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      } else
      #endif
      {
        __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 562, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
        __Pyx_GIVEREF(__pyx_t_5);
        PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_5);
        __pyx_t_5 = 0;
        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 562, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      }
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 0563: 
+0564:         if POS_FIELD in fields:
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_POS_FIELD); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 564, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = (__Pyx_PySequence_ContainsTF(__pyx_t_2, __pyx_v_fields, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 564, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_3 = (__pyx_t_4 != 0);
  if (__pyx_t_3) {
/* … */
  }
+0565:             if POS_FIELD in types:
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_POS_FIELD); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 565, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_t_2, __pyx_v_types, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 565, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_4 = (__pyx_t_3 != 0);
    if (__pyx_t_4) {
/* … */
    }
+0566:                 t = types[POS_FIELD]
      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_POS_FIELD); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 566, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_1 = PyObject_GetItem(__pyx_v_types, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 566, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_v_t = __pyx_t_1;
      __pyx_t_1 = 0;
+0567:                 if t != np.dtype('int32'):
      __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 567, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = PyObject_RichCompare(__pyx_v_t, __pyx_t_1, Py_NE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 567, __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 < 0)) __PYX_ERR(0, 567, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (__pyx_t_4) {
/* … */
      }
/* … */
  __pyx_tuple__14 = PyTuple_Pack(1, __pyx_n_s_int32); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(0, 567, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__14);
  __Pyx_GIVEREF(__pyx_tuple__14);
+0568:                     warnings.warn('only int32 supported for POS field, ignoring requested type: %r' % t)
        __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_warnings); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 568, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_warn); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 568, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_only_int32_supported_for_POS_fie, __pyx_v_t); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 568, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_5 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_7);
          if (likely(__pyx_t_5)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
            __Pyx_INCREF(__pyx_t_5);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_7, function);
          }
        }
        if (!__pyx_t_5) {
          __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 568, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_GOTREF(__pyx_t_2);
        } else {
          #if CYTHON_FAST_PYCALL
          if (PyFunction_Check(__pyx_t_7)) {
            PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_1};
            __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 568, __pyx_L1_error)
            __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
            __Pyx_GOTREF(__pyx_t_2);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          } else
          #endif
          #if CYTHON_FAST_PYCCALL
          if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) {
            PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_1};
            __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 568, __pyx_L1_error)
            __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
            __Pyx_GOTREF(__pyx_t_2);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          } else
          #endif
          {
            __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 568, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
            __Pyx_GIVEREF(__pyx_t_1);
            PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_1);
            __pyx_t_1 = 0;
            __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 568, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_2);
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          }
        }
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+0569:             kwds['store_pos'] = True
    if (unlikely(PyDict_SetItem(__pyx_v_kwds, __pyx_n_s_store_pos, Py_True) < 0)) __PYX_ERR(0, 569, __pyx_L1_error)
+0570:             fields.remove(POS_FIELD)
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_fields, __pyx_n_s_remove); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 570, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_POS_FIELD); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 570, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_1 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_1)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_1);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
      }
    }
    if (!__pyx_t_1) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 570, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_GOTREF(__pyx_t_2);
    } else {
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_7)) {
        PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_6};
        __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 570, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) {
        PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_t_6};
        __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 570, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      } else
      #endif
      {
        __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 570, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1); __pyx_t_1 = NULL;
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_6);
        __pyx_t_6 = 0;
        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 570, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      }
    }
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 0571: 
+0572:         chrom_pos_parser = VCFChromPosParser(**kwds)
  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFChromPosParser), __pyx_empty_tuple, __pyx_v_kwds); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 572, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_chrom_pos_parser = ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFChromPosParser *)__pyx_t_2);
  __pyx_t_2 = 0;
+0573:         chrom_pos_parser.malloc_chunk()
  __pyx_t_8 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFChromPosParser *)__pyx_v_chrom_pos_parser->__pyx_base.__pyx_vtab)->__pyx_base.malloc_chunk(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFieldParserBase *)__pyx_v_chrom_pos_parser)); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(0, 573, __pyx_L1_error)
+0574:         self.chrom_pos_parser = chrom_pos_parser
  __Pyx_INCREF(((PyObject *)__pyx_v_chrom_pos_parser));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_chrom_pos_parser));
  __Pyx_GOTREF(__pyx_v_self->chrom_pos_parser);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->chrom_pos_parser));
  __pyx_v_self->chrom_pos_parser = ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFieldParserBase *)__pyx_v_chrom_pos_parser);
 0575: 
+0576:     def _init_id(self, fields, types):
/* Python wrapper */
static PyObject *__pyx_pw_5allel_3opt_11io_vcf_read_9VCFParser_7_init_id(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_5allel_3opt_11io_vcf_read_9VCFParser_6_init_id[] = "Setup ID parser.";
static PyObject *__pyx_pw_5allel_3opt_11io_vcf_read_9VCFParser_7_init_id(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_fields = 0;
  PyObject *__pyx_v_types = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_init_id (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fields,&__pyx_n_s_types,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] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fields)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_types)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_init_id", 1, 2, 2, 1); __PYX_ERR(0, 576, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_init_id") < 0)) __PYX_ERR(0, 576, __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_fields = values[0];
    __pyx_v_types = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_init_id", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 576, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFParser._init_id", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_9VCFParser_6_init_id(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFParser *)__pyx_v_self), __pyx_v_fields, __pyx_v_types);

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

static PyObject *__pyx_pf_5allel_3opt_11io_vcf_read_9VCFParser_6_init_id(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFParser *__pyx_v_self, PyObject *__pyx_v_fields, PyObject *__pyx_v_types) {
  PyObject *__pyx_v_t = NULL;
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFieldParserBase *__pyx_v_id_parser = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_init_id", 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_7);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFParser._init_id", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_t);
  __Pyx_XDECREF((PyObject *)__pyx_v_id_parser);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 0577:         """Setup ID parser."""
+0578:         if ID_FIELD in fields:
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_ID_FIELD); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 578, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_v_fields, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 578, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (__pyx_t_3) {
/* … */
    goto __pyx_L3;
  }
+0579:             t = types[ID_FIELD]
    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_ID_FIELD); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 579, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = PyObject_GetItem(__pyx_v_types, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 579, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_v_t = __pyx_t_4;
    __pyx_t_4 = 0;
+0580:             t = check_string_dtype(t)
    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_check_string_dtype); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 580, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __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);
      }
    }
    if (!__pyx_t_5) {
      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_t); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 580, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
    } else {
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_1)) {
        PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_t};
        __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 580, __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_1)) {
        PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_t};
        __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 580, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_GOTREF(__pyx_t_4);
      } else
      #endif
      {
        __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 580, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
        __Pyx_INCREF(__pyx_v_t);
        __Pyx_GIVEREF(__pyx_v_t);
        PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_t);
        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 580, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      }
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF_SET(__pyx_v_t, __pyx_t_4);
    __pyx_t_4 = 0;
+0581:             if t.kind == 'S':
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_t, __pyx_n_s_kind); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 581, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_4, __pyx_n_s_S, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 581, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (__pyx_t_3) {
/* … */
      goto __pyx_L4;
    }
+0582:                 id_parser = VCFIDStringParser(dtype=t, chunk_length=self.chunk_length)
      __pyx_t_4 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 582, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_v_t) < 0) __PYX_ERR(0, 582, __pyx_L1_error)
      __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->chunk_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 582, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_chunk_length, __pyx_t_1) < 0) __PYX_ERR(0, 582, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFIDStringParser), __pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 582, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_v_id_parser = ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFieldParserBase *)__pyx_t_1);
      __pyx_t_1 = 0;
 0583:             else:
+0584:                 id_parser = VCFIDObjectParser(chunk_length=self.chunk_length)
    /*else*/ {
      __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 584, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_self->chunk_length); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 584, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_chunk_length, __pyx_t_4) < 0) __PYX_ERR(0, 584, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFIDObjectParser), __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 584, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_v_id_parser = ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFieldParserBase *)__pyx_t_4);
      __pyx_t_4 = 0;
    }
    __pyx_L4:;
+0585:             fields.remove(ID_FIELD)
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_fields, __pyx_n_s_remove); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 585, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_ID_FIELD); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 585, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_1, function);
      }
    }
    if (!__pyx_t_5) {
      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 585, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_GOTREF(__pyx_t_4);
    } else {
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_1)) {
        PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_6};
        __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 585, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
        PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_6};
        __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 585, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      } else
      #endif
      {
        __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 585, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_6);
        __pyx_t_6 = 0;
        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 585, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      }
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 0586:         else:
+0587:             id_parser = VCFSkipFieldParser(key=b'ID')
  /*else*/ {
    __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 587, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_key, __pyx_n_b_ID) < 0) __PYX_ERR(0, 587, __pyx_L1_error)
    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFSkipFieldParser), __pyx_empty_tuple, __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;
    __pyx_v_id_parser = ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFieldParserBase *)__pyx_t_1);
    __pyx_t_1 = 0;
  }
  __pyx_L3:;
+0588:         id_parser.malloc_chunk()
  __pyx_t_8 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFieldParserBase *)__pyx_v_id_parser->__pyx_vtab)->malloc_chunk(__pyx_v_id_parser); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(0, 588, __pyx_L1_error)
+0589:         self.id_parser = id_parser
  __Pyx_INCREF(((PyObject *)__pyx_v_id_parser));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_id_parser));
  __Pyx_GOTREF(__pyx_v_self->id_parser);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->id_parser));
  __pyx_v_self->id_parser = __pyx_v_id_parser;
 0590: 
+0591:     def _init_ref(self, fields, types):
/* Python wrapper */
static PyObject *__pyx_pw_5allel_3opt_11io_vcf_read_9VCFParser_9_init_ref(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_5allel_3opt_11io_vcf_read_9VCFParser_9_init_ref(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_fields = 0;
  PyObject *__pyx_v_types = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_init_ref (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fields,&__pyx_n_s_types,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] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fields)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_types)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_init_ref", 1, 2, 2, 1); __PYX_ERR(0, 591, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_init_ref") < 0)) __PYX_ERR(0, 591, __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_fields = values[0];
    __pyx_v_types = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_init_ref", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 591, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFParser._init_ref", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_9VCFParser_8_init_ref(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFParser *)__pyx_v_self), __pyx_v_fields, __pyx_v_types);

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

static PyObject *__pyx_pf_5allel_3opt_11io_vcf_read_9VCFParser_8_init_ref(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFParser *__pyx_v_self, PyObject *__pyx_v_fields, PyObject *__pyx_v_types) {
  PyObject *__pyx_v_t = NULL;
  int __pyx_v_store;
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFieldParserBase *__pyx_v_ref_parser = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_init_ref", 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_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFParser._init_ref", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_t);
  __Pyx_XDECREF((PyObject *)__pyx_v_ref_parser);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 0592:         # setup REF parser
+0593:         t = types.get(REF_FIELD, None)
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_types, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 593, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_REF_FIELD); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 593, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_5 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_3, Py_None};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 593, __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_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_3, Py_None};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 593, __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_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 593, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    if (__pyx_t_4) {
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_t_3);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, Py_None);
    __pyx_t_3 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 593, __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;
  __pyx_v_t = __pyx_t_1;
  __pyx_t_1 = 0;
+0594:         store = False
  __pyx_v_store = 0;
+0595:         if REF_FIELD in fields:
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_REF_FIELD); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 595, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_v_fields, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 595, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_8 = (__pyx_t_7 != 0);
  if (__pyx_t_8) {
/* … */
  }
+0596:             store = True
    __pyx_v_store = 1;
+0597:             fields.remove(REF_FIELD)
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_fields, __pyx_n_s_remove); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 597, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_REF_FIELD); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 597, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __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);
      }
    }
    if (!__pyx_t_3) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 597, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else {
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_2)) {
        PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_6};
        __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 597, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
        PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_6};
        __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 597, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      } else
      #endif
      {
        __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 597, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_6);
        __pyx_t_6 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 597, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      }
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0598:             t = check_string_dtype(t)
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_check_string_dtype); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 598, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    if (!__pyx_t_4) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_t); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 598, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    } else {
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_2)) {
        PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_t};
        __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 598, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_GOTREF(__pyx_t_1);
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
        PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_t};
        __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 598, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_GOTREF(__pyx_t_1);
      } else
      #endif
      {
        __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 598, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
        __Pyx_INCREF(__pyx_v_t);
        __Pyx_GIVEREF(__pyx_v_t);
        PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_t);
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 598, __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;
    __Pyx_DECREF_SET(__pyx_v_t, __pyx_t_1);
    __pyx_t_1 = 0;
+0599:         if t is not None and t.kind == 'S':
  __pyx_t_7 = (__pyx_v_t != Py_None);
  __pyx_t_9 = (__pyx_t_7 != 0);
  if (__pyx_t_9) {
  } else {
    __pyx_t_8 = __pyx_t_9;
    goto __pyx_L5_bool_binop_done;
  }
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_t, __pyx_n_s_kind); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 599, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_9 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_S, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 599, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_8 = __pyx_t_9;
  __pyx_L5_bool_binop_done:;
  if (__pyx_t_8) {
/* … */
    goto __pyx_L4;
  }
+0600:             ref_parser = VCFRefStringParser(dtype=t, chunk_length=self.chunk_length, store=store)
    __pyx_t_1 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 600, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_v_t) < 0) __PYX_ERR(0, 600, __pyx_L1_error)
    __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->chunk_length); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 600, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_chunk_length, __pyx_t_2) < 0) __PYX_ERR(0, 600, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_store); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 600, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_store, __pyx_t_2) < 0) __PYX_ERR(0, 600, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFRefStringParser), __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 600, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_v_ref_parser = ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFieldParserBase *)__pyx_t_2);
    __pyx_t_2 = 0;
 0601:         else:
+0602:             ref_parser = VCFRefObjectParser(chunk_length=self.chunk_length, store=store)
  /*else*/ {
    __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 602, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->chunk_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 602, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_chunk_length, __pyx_t_1) < 0) __PYX_ERR(0, 602, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_store); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 602, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_store, __pyx_t_1) < 0) __PYX_ERR(0, 602, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFRefObjectParser), __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 602, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_v_ref_parser = ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFieldParserBase *)__pyx_t_1);
    __pyx_t_1 = 0;
  }
  __pyx_L4:;
+0603:         ref_parser.malloc_chunk()
  __pyx_t_5 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFieldParserBase *)__pyx_v_ref_parser->__pyx_vtab)->malloc_chunk(__pyx_v_ref_parser); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 603, __pyx_L1_error)
+0604:         self.ref_parser = ref_parser
  __Pyx_INCREF(((PyObject *)__pyx_v_ref_parser));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_ref_parser));
  __Pyx_GOTREF(__pyx_v_self->ref_parser);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->ref_parser));
  __pyx_v_self->ref_parser = __pyx_v_ref_parser;
 0605: 
+0606:     def _init_alt(self, fields, types, numbers):
/* Python wrapper */
static PyObject *__pyx_pw_5allel_3opt_11io_vcf_read_9VCFParser_11_init_alt(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_5allel_3opt_11io_vcf_read_9VCFParser_10_init_alt[] = "Setup ALT parser.";
static PyObject *__pyx_pw_5allel_3opt_11io_vcf_read_9VCFParser_11_init_alt(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_fields = 0;
  PyObject *__pyx_v_types = 0;
  PyObject *__pyx_v_numbers = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_init_alt (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fields,&__pyx_n_s_types,&__pyx_n_s_numbers,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fields)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_types)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_init_alt", 1, 3, 3, 1); __PYX_ERR(0, 606, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_numbers)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_init_alt", 1, 3, 3, 2); __PYX_ERR(0, 606, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_init_alt") < 0)) __PYX_ERR(0, 606, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_fields = values[0];
    __pyx_v_types = values[1];
    __pyx_v_numbers = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_init_alt", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 606, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFParser._init_alt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_9VCFParser_10_init_alt(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFParser *)__pyx_v_self), __pyx_v_fields, __pyx_v_types, __pyx_v_numbers);

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

static PyObject *__pyx_pf_5allel_3opt_11io_vcf_read_9VCFParser_10_init_alt(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFParser *__pyx_v_self, PyObject *__pyx_v_fields, PyObject *__pyx_v_types, PyObject *__pyx_v_numbers) {
  int __pyx_v_store_alt;
  int __pyx_v_store_numalt;
  int __pyx_v_store_svlen;
  int __pyx_v_store_is_snp;
  PyObject *__pyx_v_t = NULL;
  PyObject *__pyx_v_n = NULL;
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFieldParserBase *__pyx_v_alt_parser = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_init_alt", 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_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFParser._init_alt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_t);
  __Pyx_XDECREF(__pyx_v_n);
  __Pyx_XDECREF((PyObject *)__pyx_v_alt_parser);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 0607:         """Setup ALT parser."""
 0608: 
+0609:         store_alt = False
  __pyx_v_store_alt = 0;
+0610:         store_numalt = False
  __pyx_v_store_numalt = 0;
+0611:         store_svlen = False
  __pyx_v_store_svlen = 0;
+0612:         store_is_snp = False
  __pyx_v_store_is_snp = 0;
+0613:         t = types.get(ALT_FIELD, None)
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_types, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 613, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_ALT_FIELD); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 613, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_5 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_3, Py_None};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 613, __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_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_3, Py_None};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 613, __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_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 613, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    if (__pyx_t_4) {
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_t_3);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, Py_None);
    __pyx_t_3 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 613, __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;
  __pyx_v_t = __pyx_t_1;
  __pyx_t_1 = 0;
+0614:         n = numbers.get(ALT_FIELD, 1)
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_numbers, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 614, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_ALT_FIELD); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 614, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_3 = NULL;
  __pyx_t_5 = 0;
  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_5 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_6, __pyx_int_1};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 614, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_6, __pyx_int_1};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 614, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  } else
  #endif
  {
    __pyx_t_4 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 614, __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_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_5, __pyx_t_6);
    __Pyx_INCREF(__pyx_int_1);
    __Pyx_GIVEREF(__pyx_int_1);
    PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_5, __pyx_int_1);
    __pyx_t_6 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 614, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_n = __pyx_t_1;
  __pyx_t_1 = 0;
+0615:         if ALT_FIELD in fields:
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_ALT_FIELD); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 615, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_v_fields, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 615, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_8 = (__pyx_t_7 != 0);
  if (__pyx_t_8) {
/* … */
  }
+0616:             store_alt = True
    __pyx_v_store_alt = 1;
+0617:             fields.remove(ALT_FIELD)
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_fields, __pyx_n_s_remove); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 617, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_ALT_FIELD); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 617, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    if (!__pyx_t_6) {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 617, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else {
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_2)) {
        PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_4};
        __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 617, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 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_2)) {
        PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_4};
        __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 617, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      } else
      #endif
      {
        __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 617, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_6); __pyx_t_6 = NULL;
        __Pyx_GIVEREF(__pyx_t_4);
        PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_4);
        __pyx_t_4 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 617, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      }
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0618:         if 'variants/numalt' in fields:
  __pyx_t_8 = (__Pyx_PySequence_ContainsTF(__pyx_kp_s_variants_numalt, __pyx_v_fields, Py_EQ)); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 618, __pyx_L1_error)
  __pyx_t_7 = (__pyx_t_8 != 0);
  if (__pyx_t_7) {
/* … */
  }
+0619:             store_numalt = True
    __pyx_v_store_numalt = 1;
+0620:             fields.remove('variants/numalt')
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_fields, __pyx_n_s_remove); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 620, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 620, __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__15 = PyTuple_Pack(1, __pyx_kp_s_variants_numalt); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(0, 620, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__15);
  __Pyx_GIVEREF(__pyx_tuple__15);
+0621:         if 'variants/svlen' in fields:
  __pyx_t_7 = (__Pyx_PySequence_ContainsTF(__pyx_kp_s_variants_svlen, __pyx_v_fields, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 621, __pyx_L1_error)
  __pyx_t_8 = (__pyx_t_7 != 0);
  if (__pyx_t_8) {
/* … */
  }
+0622:             store_svlen = True
    __pyx_v_store_svlen = 1;
+0623:             fields.remove('variants/svlen')
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_fields, __pyx_n_s_remove); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 623, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 623, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* … */
  __pyx_tuple__16 = PyTuple_Pack(1, __pyx_kp_s_variants_svlen); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(0, 623, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__16);
  __Pyx_GIVEREF(__pyx_tuple__16);
+0624:         if 'variants/is_snp' in fields:
  __pyx_t_8 = (__Pyx_PySequence_ContainsTF(__pyx_kp_s_variants_is_snp, __pyx_v_fields, Py_EQ)); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 624, __pyx_L1_error)
  __pyx_t_7 = (__pyx_t_8 != 0);
  if (__pyx_t_7) {
/* … */
  }
+0625:             store_is_snp = True
    __pyx_v_store_is_snp = 1;
+0626:             fields.remove('variants/is_snp')
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_fields, __pyx_n_s_remove); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 626, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 626, __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__17 = PyTuple_Pack(1, __pyx_kp_s_variants_is_snp); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(0, 626, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__17);
  __Pyx_GIVEREF(__pyx_tuple__17);
 0627: 
+0628:         if store_alt or store_numalt or store_svlen or store_is_snp:
  __pyx_t_8 = (__pyx_v_store_alt != 0);
  if (!__pyx_t_8) {
  } else {
    __pyx_t_7 = __pyx_t_8;
    goto __pyx_L8_bool_binop_done;
  }
  __pyx_t_8 = (__pyx_v_store_numalt != 0);
  if (!__pyx_t_8) {
  } else {
    __pyx_t_7 = __pyx_t_8;
    goto __pyx_L8_bool_binop_done;
  }
  __pyx_t_8 = (__pyx_v_store_svlen != 0);
  if (!__pyx_t_8) {
  } else {
    __pyx_t_7 = __pyx_t_8;
    goto __pyx_L8_bool_binop_done;
  }
  __pyx_t_8 = (__pyx_v_store_is_snp != 0);
  __pyx_t_7 = __pyx_t_8;
  __pyx_L8_bool_binop_done:;
  if (__pyx_t_7) {
/* … */
    goto __pyx_L7;
  }
+0629:             if store_alt:
    __pyx_t_7 = (__pyx_v_store_alt != 0);
    if (__pyx_t_7) {
/* … */
    }
+0630:                 t = check_string_dtype(t)
      __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_check_string_dtype); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 630, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_3 = NULL;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
        if (likely(__pyx_t_3)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_1, function);
        }
      }
      if (!__pyx_t_3) {
        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_t); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 630, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
      } else {
        #if CYTHON_FAST_PYCALL
        if (PyFunction_Check(__pyx_t_1)) {
          PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_t};
          __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 630, __pyx_L1_error)
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_GOTREF(__pyx_t_2);
        } else
        #endif
        #if CYTHON_FAST_PYCCALL
        if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
          PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_t};
          __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 630, __pyx_L1_error)
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_GOTREF(__pyx_t_2);
        } else
        #endif
        {
          __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 630, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
          __Pyx_INCREF(__pyx_v_t);
          __Pyx_GIVEREF(__pyx_v_t);
          PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_t);
          __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 630, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        }
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF_SET(__pyx_v_t, __pyx_t_2);
      __pyx_t_2 = 0;
+0631:             if t is not None and t.kind == 'S':
    __pyx_t_8 = (__pyx_v_t != Py_None);
    __pyx_t_9 = (__pyx_t_8 != 0);
    if (__pyx_t_9) {
    } else {
      __pyx_t_7 = __pyx_t_9;
      goto __pyx_L14_bool_binop_done;
    }
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_t, __pyx_n_s_kind); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 631, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_9 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_n_s_S, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 631, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_7 = __pyx_t_9;
    __pyx_L14_bool_binop_done:;
    if (__pyx_t_7) {
/* … */
      goto __pyx_L13;
    }
+0632:                 alt_parser = VCFAltStringParser(dtype=t, number=n, chunk_length=self.chunk_length,
      __pyx_t_2 = __Pyx_PyDict_NewPresized(7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 632, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_v_t) < 0) __PYX_ERR(0, 632, __pyx_L1_error)
      if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_number, __pyx_v_n) < 0) __PYX_ERR(0, 632, __pyx_L1_error)
      __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->chunk_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 632, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_chunk_length, __pyx_t_1) < 0) __PYX_ERR(0, 632, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* … */
      __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFAltStringParser), __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 632, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_v_alt_parser = ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFieldParserBase *)__pyx_t_1);
      __pyx_t_1 = 0;
+0633:                                                 store_alt=store_alt, store_numalt=store_numalt,
      __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_store_alt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 633, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_store_alt, __pyx_t_1) < 0) __PYX_ERR(0, 632, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_store_numalt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 633, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_store_numalt, __pyx_t_1) < 0) __PYX_ERR(0, 632, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0634:                                                 store_svlen=store_svlen, store_is_snp=store_is_snp)
      __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_store_svlen); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 634, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_store_svlen, __pyx_t_1) < 0) __PYX_ERR(0, 632, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_store_is_snp); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 634, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_store_is_snp, __pyx_t_1) < 0) __PYX_ERR(0, 632, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 0635:             else:
+0636:                 alt_parser = VCFAltObjectParser(number=n, chunk_length=self.chunk_length, store_alt=store_alt,
    /*else*/ {
      __pyx_t_1 = __Pyx_PyDict_NewPresized(6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 636, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_number, __pyx_v_n) < 0) __PYX_ERR(0, 636, __pyx_L1_error)
      __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->chunk_length); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 636, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_chunk_length, __pyx_t_2) < 0) __PYX_ERR(0, 636, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_store_alt); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 636, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_store_alt, __pyx_t_2) < 0) __PYX_ERR(0, 636, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
/* … */
      __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFAltObjectParser), __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 636, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_v_alt_parser = ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFieldParserBase *)__pyx_t_2);
      __pyx_t_2 = 0;
    }
    __pyx_L13:;
+0637:                                                 store_numalt=store_numalt,
      __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_store_numalt); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 637, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_store_numalt, __pyx_t_2) < 0) __PYX_ERR(0, 636, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+0638:                                                 store_svlen=store_svlen, store_is_snp=store_is_snp)
      __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_store_svlen); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 638, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_store_svlen, __pyx_t_2) < 0) __PYX_ERR(0, 636, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_store_is_snp); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 638, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_store_is_snp, __pyx_t_2) < 0) __PYX_ERR(0, 636, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 0639:         else:
+0640:             alt_parser = VCFSkipFieldParser(key=b'ALT')
  /*else*/ {
    __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 640, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_key, __pyx_n_b_ALT) < 0) __PYX_ERR(0, 640, __pyx_L1_error)
    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFSkipFieldParser), __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 640, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_v_alt_parser = ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFieldParserBase *)__pyx_t_1);
    __pyx_t_1 = 0;
  }
  __pyx_L7:;
 0641: 
+0642:         alt_parser.malloc_chunk()
  __pyx_t_5 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFieldParserBase *)__pyx_v_alt_parser->__pyx_vtab)->malloc_chunk(__pyx_v_alt_parser); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 642, __pyx_L1_error)
+0643:         self.alt_parser = alt_parser
  __Pyx_INCREF(((PyObject *)__pyx_v_alt_parser));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_alt_parser));
  __Pyx_GOTREF(__pyx_v_self->alt_parser);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->alt_parser));
  __pyx_v_self->alt_parser = __pyx_v_alt_parser;
 0644: 
+0645:     def _init_qual(self, fields, types, fills):
/* Python wrapper */
static PyObject *__pyx_pw_5allel_3opt_11io_vcf_read_9VCFParser_13_init_qual(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_5allel_3opt_11io_vcf_read_9VCFParser_12_init_qual[] = "Setup QUAL parser.";
static PyObject *__pyx_pw_5allel_3opt_11io_vcf_read_9VCFParser_13_init_qual(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_fields = 0;
  PyObject *__pyx_v_types = 0;
  PyObject *__pyx_v_fills = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_init_qual (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fields,&__pyx_n_s_types,&__pyx_n_s_fills,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fields)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_types)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_init_qual", 1, 3, 3, 1); __PYX_ERR(0, 645, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fills)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_init_qual", 1, 3, 3, 2); __PYX_ERR(0, 645, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_init_qual") < 0)) __PYX_ERR(0, 645, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_fields = values[0];
    __pyx_v_types = values[1];
    __pyx_v_fills = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_init_qual", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 645, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFParser._init_qual", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_9VCFParser_12_init_qual(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFParser *)__pyx_v_self), __pyx_v_fields, __pyx_v_types, __pyx_v_fills);

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

static PyObject *__pyx_pf_5allel_3opt_11io_vcf_read_9VCFParser_12_init_qual(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFParser *__pyx_v_self, PyObject *__pyx_v_fields, PyObject *__pyx_v_types, PyObject *__pyx_v_fills) {
  PyObject *__pyx_v_t = NULL;
  PyObject *__pyx_v_fill = NULL;
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFieldParserBase *__pyx_v_qual_parser = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_init_qual", 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_7);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFParser._init_qual", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_t);
  __Pyx_XDECREF(__pyx_v_fill);
  __Pyx_XDECREF((PyObject *)__pyx_v_qual_parser);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 0646:         """Setup QUAL parser."""
+0647:         if QUAL_FIELD in fields:
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_QUAL_FIELD); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 647, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_v_fields, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 647, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (__pyx_t_3) {
/* … */
    goto __pyx_L3;
  }
+0648:             if QUAL_FIELD in types:
    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_QUAL_FIELD); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 648, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_v_types, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 648, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_2 = (__pyx_t_3 != 0);
    if (__pyx_t_2) {
/* … */
    }
+0649:                 t = types[QUAL_FIELD]
      __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_QUAL_FIELD); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 649, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_4 = PyObject_GetItem(__pyx_v_types, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 649, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_v_t = __pyx_t_4;
      __pyx_t_4 = 0;
+0650:                 if t != np.dtype('float32'):
      __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 650, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_1 = PyObject_RichCompare(__pyx_v_t, __pyx_t_4, Py_NE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 650, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 650, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (__pyx_t_2) {
/* … */
      }
/* … */
  __pyx_tuple__18 = PyTuple_Pack(1, __pyx_n_s_float32); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(0, 650, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__18);
  __Pyx_GIVEREF(__pyx_tuple__18);
+0651:                     warnings.warn('only float32 supported for QUAL field, ignoring requested type: %r' % t)
        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_warnings); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 651, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_warn); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 651, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_only_float32_supported_for_QUAL, __pyx_v_t); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 651, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_6 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
          __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
          if (likely(__pyx_t_6)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
            __Pyx_INCREF(__pyx_t_6);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_5, function);
          }
        }
        if (!__pyx_t_6) {
          __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 651, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_GOTREF(__pyx_t_1);
        } else {
          #if CYTHON_FAST_PYCALL
          if (PyFunction_Check(__pyx_t_5)) {
            PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_4};
            __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 651, __pyx_L1_error)
            __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 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[2] = {__pyx_t_6, __pyx_t_4};
            __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 651, __pyx_L1_error)
            __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          } else
          #endif
          {
            __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 651, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_7);
            __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
            __Pyx_GIVEREF(__pyx_t_4);
            PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_4);
            __pyx_t_4 = 0;
            __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 651, __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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0652:             fill = fills.get(QUAL_FIELD, -1)
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_fills, __pyx_n_s_get); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 652, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_QUAL_FIELD); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 652, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_4 = NULL;
    __pyx_t_8 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_8 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_5)) {
      PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_7, __pyx_int_neg_1};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 652, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 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[3] = {__pyx_t_4, __pyx_t_7, __pyx_int_neg_1};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 652, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    } else
    #endif
    {
      __pyx_t_6 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 652, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (__pyx_t_4) {
        __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
      }
      __Pyx_GIVEREF(__pyx_t_7);
      PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_8, __pyx_t_7);
      __Pyx_INCREF(__pyx_int_neg_1);
      __Pyx_GIVEREF(__pyx_int_neg_1);
      PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_8, __pyx_int_neg_1);
      __pyx_t_7 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 652, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_v_fill = __pyx_t_1;
    __pyx_t_1 = 0;
+0653:             qual_parser = VCFQualParser(chunk_length=self.chunk_length, fill=fill)
    __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 653, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_self->chunk_length); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 653, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_chunk_length, __pyx_t_5) < 0) __PYX_ERR(0, 653, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_fill, __pyx_v_fill) < 0) __PYX_ERR(0, 653, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFQualParser), __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 653, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_v_qual_parser = ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFieldParserBase *)__pyx_t_5);
    __pyx_t_5 = 0;
+0654:             fields.remove(QUAL_FIELD)
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_fields, __pyx_n_s_remove); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 654, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_QUAL_FIELD); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 654, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_1, function);
      }
    }
    if (!__pyx_t_7) {
      __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 654, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_GOTREF(__pyx_t_5);
    } else {
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_1)) {
        PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_6};
        __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 654, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
        PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_t_6};
        __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 654, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      } else
      #endif
      {
        __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 654, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_7); __pyx_t_7 = NULL;
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_6);
        __pyx_t_6 = 0;
        __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 654, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      }
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 0655:         else:
+0656:             qual_parser = VCFSkipFieldParser(key=b'QUAL')
  /*else*/ {
    __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 656, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_key, __pyx_n_b_QUAL) < 0) __PYX_ERR(0, 656, __pyx_L1_error)
    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFSkipFieldParser), __pyx_empty_tuple, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 656, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_v_qual_parser = ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFieldParserBase *)__pyx_t_1);
    __pyx_t_1 = 0;
  }
  __pyx_L3:;
+0657:         qual_parser.malloc_chunk()
  __pyx_t_8 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFieldParserBase *)__pyx_v_qual_parser->__pyx_vtab)->malloc_chunk(__pyx_v_qual_parser); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(0, 657, __pyx_L1_error)
+0658:         self.qual_parser = qual_parser
  __Pyx_INCREF(((PyObject *)__pyx_v_qual_parser));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_qual_parser));
  __Pyx_GOTREF(__pyx_v_self->qual_parser);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->qual_parser));
  __pyx_v_self->qual_parser = __pyx_v_qual_parser;
 0659: 
+0660:     def _init_filter(self, fields):
/* Python wrapper */
static PyObject *__pyx_pw_5allel_3opt_11io_vcf_read_9VCFParser_15_init_filter(PyObject *__pyx_v_self, PyObject *__pyx_v_fields); /*proto*/
static char __pyx_doc_5allel_3opt_11io_vcf_read_9VCFParser_14_init_filter[] = "Setup FILTER parser.";
static PyObject *__pyx_pw_5allel_3opt_11io_vcf_read_9VCFParser_15_init_filter(PyObject *__pyx_v_self, PyObject *__pyx_v_fields) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_init_filter (wrapper)", 0);
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_9VCFParser_14_init_filter(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFParser *)__pyx_v_self), ((PyObject *)__pyx_v_fields));

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

static PyObject *__pyx_pf_5allel_3opt_11io_vcf_read_9VCFParser_14_init_filter(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFParser *__pyx_v_self, PyObject *__pyx_v_fields) {
  PyObject *__pyx_v_filter_keys = NULL;
  PyObject *__pyx_v_field = NULL;
  PyObject *__pyx_v_k = NULL;
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFieldParserBase *__pyx_v_filter_parser = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_init_filter", 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_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFParser._init_filter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_filter_keys);
  __Pyx_XDECREF(__pyx_v_field);
  __Pyx_XDECREF(__pyx_v_k);
  __Pyx_XDECREF((PyObject *)__pyx_v_filter_parser);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 0661:         """Setup FILTER parser."""
+0662:         filter_keys = list()
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 662, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_filter_keys = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
+0663:         for field in list(fields):
  __pyx_t_1 = PySequence_List(__pyx_v_fields); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 663, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  for (;;) {
    if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break;
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 663, __pyx_L1_error)
    #else
    __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 663, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    #endif
    __Pyx_XDECREF_SET(__pyx_v_field, __pyx_t_1);
    __pyx_t_1 = 0;
/* … */
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+0664:             if field.startswith('variants/FILTER_'):
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_field, __pyx_n_s_startswith); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 664, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 664, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 664, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (__pyx_t_5) {
/* … */
  __pyx_tuple__19 = PyTuple_Pack(1, __pyx_kp_s_variants_FILTER); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(0, 664, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__19);
  __Pyx_GIVEREF(__pyx_tuple__19);
/* … */
    }
+0665:                 k = field[16:]
      __pyx_t_4 = __Pyx_PyObject_GetSlice(__pyx_v_field, 16, 0, NULL, NULL, &__pyx_slice__20, 1, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 665, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_XDECREF_SET(__pyx_v_k, __pyx_t_4);
      __pyx_t_4 = 0;
/* … */
  __pyx_slice__20 = PySlice_New(__pyx_int_16, Py_None, Py_None); if (unlikely(!__pyx_slice__20)) __PYX_ERR(0, 665, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__20);
  __Pyx_GIVEREF(__pyx_slice__20);
+0666:                 if isinstance(k, text_type):
      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_text_type); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 666, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = PyObject_IsInstance(__pyx_v_k, __pyx_t_4); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 666, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_6 = (__pyx_t_5 != 0);
      if (__pyx_t_6) {
/* … */
      }
+0667:                     k = k.encode('utf8')
        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_k, __pyx_n_s_encode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 667, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 667, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF_SET(__pyx_v_k, __pyx_t_1);
        __pyx_t_1 = 0;
/* … */
  __pyx_tuple__21 = PyTuple_Pack(1, __pyx_n_s_utf8); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(0, 667, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__21);
  __Pyx_GIVEREF(__pyx_tuple__21);
+0668:                 filter_keys.append(k)
      __pyx_t_7 = __Pyx_PyList_Append(__pyx_v_filter_keys, __pyx_v_k); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 668, __pyx_L1_error)
+0669:                 fields.remove(field)
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_fields, __pyx_n_s_remove); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 669, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_8 = NULL;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
        __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_4);
        if (likely(__pyx_t_8)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_8);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_4, function);
        }
      }
      if (!__pyx_t_8) {
        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_field); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 669, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      } else {
        #if CYTHON_FAST_PYCALL
        if (PyFunction_Check(__pyx_t_4)) {
          PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_v_field};
          __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 669, __pyx_L1_error)
          __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_GOTREF(__pyx_t_1);
        } else
        #endif
        #if CYTHON_FAST_PYCCALL
        if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
          PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_v_field};
          __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 669, __pyx_L1_error)
          __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_GOTREF(__pyx_t_1);
        } else
        #endif
        {
          __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 669, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_9);
          __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
          __Pyx_INCREF(__pyx_v_field);
          __Pyx_GIVEREF(__pyx_v_field);
          PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_v_field);
          __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 669, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        }
      }
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0670:         if filter_keys:
  __pyx_t_6 = (__pyx_v_filter_keys != Py_None) && (PyList_GET_SIZE(__pyx_v_filter_keys) != 0);
  if (__pyx_t_6) {
/* … */
    goto __pyx_L7;
  }
+0671:             filter_parser = VCFFilterParser(filter_keys=filter_keys, chunk_length=self.chunk_length)
    __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 671, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_filter_keys, __pyx_v_filter_keys) < 0) __PYX_ERR(0, 671, __pyx_L1_error)
    __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->chunk_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 671, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_chunk_length, __pyx_t_1) < 0) __PYX_ERR(0, 671, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFFilterParser), __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 671, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_v_filter_parser = ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFieldParserBase *)__pyx_t_1);
    __pyx_t_1 = 0;
 0672:         else:
+0673:             filter_parser = VCFSkipFieldParser(key=b'FILTER')
  /*else*/ {
    __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 673, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_key, __pyx_n_b_FILTER) < 0) __PYX_ERR(0, 673, __pyx_L1_error)
    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFSkipFieldParser), __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 673, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_v_filter_parser = ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFieldParserBase *)__pyx_t_2);
    __pyx_t_2 = 0;
  }
  __pyx_L7:;
+0674:         filter_parser.malloc_chunk()
  __pyx_t_10 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFieldParserBase *)__pyx_v_filter_parser->__pyx_vtab)->malloc_chunk(__pyx_v_filter_parser); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 674, __pyx_L1_error)
+0675:         self.filter_parser = filter_parser
  __Pyx_INCREF(((PyObject *)__pyx_v_filter_parser));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_filter_parser));
  __Pyx_GOTREF(__pyx_v_self->filter_parser);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->filter_parser));
  __pyx_v_self->filter_parser = __pyx_v_filter_parser;
 0676: 
+0677:     def _init_info(self, fields, types, numbers, fills):
/* Python wrapper */
static PyObject *__pyx_pw_5allel_3opt_11io_vcf_read_9VCFParser_17_init_info(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_5allel_3opt_11io_vcf_read_9VCFParser_17_init_info(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_fields = 0;
  PyObject *__pyx_v_types = 0;
  PyObject *__pyx_v_numbers = 0;
  PyObject *__pyx_v_fills = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_init_info (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fields,&__pyx_n_s_types,&__pyx_n_s_numbers,&__pyx_n_s_fills,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fields)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_types)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_init_info", 1, 4, 4, 1); __PYX_ERR(0, 677, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_numbers)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_init_info", 1, 4, 4, 2); __PYX_ERR(0, 677, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fills)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_init_info", 1, 4, 4, 3); __PYX_ERR(0, 677, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_init_info") < 0)) __PYX_ERR(0, 677, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_fields = values[0];
    __pyx_v_types = values[1];
    __pyx_v_numbers = values[2];
    __pyx_v_fills = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_init_info", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 677, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFParser._init_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_9VCFParser_16_init_info(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFParser *)__pyx_v_self), __pyx_v_fields, __pyx_v_types, __pyx_v_numbers, __pyx_v_fills);

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

static PyObject *__pyx_pf_5allel_3opt_11io_vcf_read_9VCFParser_16_init_info(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFParser *__pyx_v_self, PyObject *__pyx_v_fields, PyObject *__pyx_v_types, PyObject *__pyx_v_numbers, PyObject *__pyx_v_fills) {
  PyObject *__pyx_v_info_keys = NULL;
  PyObject *__pyx_v_info_types = NULL;
  PyObject *__pyx_v_info_numbers = NULL;
  PyObject *__pyx_v_info_fills = NULL;
  PyObject *__pyx_v_field = NULL;
  PyObject *__pyx_v_group = NULL;
  PyObject *__pyx_v_name = NULL;
  PyObject *__pyx_v_key = NULL;
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFieldParserBase *__pyx_v_info_parser = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_init_info", 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_6);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFParser._init_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_info_keys);
  __Pyx_XDECREF(__pyx_v_info_types);
  __Pyx_XDECREF(__pyx_v_info_numbers);
  __Pyx_XDECREF(__pyx_v_info_fills);
  __Pyx_XDECREF(__pyx_v_field);
  __Pyx_XDECREF(__pyx_v_group);
  __Pyx_XDECREF(__pyx_v_name);
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XDECREF((PyObject *)__pyx_v_info_parser);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 0678:         # setup INFO parser
+0679:         info_keys = list()
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 679, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_info_keys = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
+0680:         info_types = dict()
  __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 680, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_info_types = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
+0681:         info_numbers = dict()
  __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 681, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_info_numbers = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
+0682:         info_fills = dict()
  __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 682, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_info_fills = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
 0683:         # assume any variants fields left are INFO
+0684:         for field in list(fields):
  __pyx_t_1 = PySequence_List(__pyx_v_fields); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 684, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  for (;;) {
    if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break;
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 684, __pyx_L1_error)
    #else
    __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 684, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    #endif
    __Pyx_XDECREF_SET(__pyx_v_field, __pyx_t_1);
    __pyx_t_1 = 0;
/* … */
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+0685:             group, name = field.split('/')
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_field, __pyx_n_s_split); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 685, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__22, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 685, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
      PyObject* sequence = __pyx_t_4;
      #if !CYTHON_COMPILING_IN_PYPY
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 685, __pyx_L1_error)
      }
      #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_1 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_5 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_5);
      #else
      __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 685, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 685, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      #endif
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_6 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 685, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_7 = Py_TYPE(__pyx_t_6)->tp_iternext;
      index = 0; __pyx_t_1 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_1)) goto __pyx_L5_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_1);
      index = 1; __pyx_t_5 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L5_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_5);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < 0) __PYX_ERR(0, 685, __pyx_L1_error)
      __pyx_t_7 = NULL;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L6_unpacking_done;
      __pyx_L5_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_7 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 685, __pyx_L1_error)
      __pyx_L6_unpacking_done:;
    }
    __Pyx_XDECREF_SET(__pyx_v_group, __pyx_t_1);
    __pyx_t_1 = 0;
    __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_5);
    __pyx_t_5 = 0;
/* … */
  __pyx_tuple__22 = PyTuple_Pack(1, __pyx_kp_s__3); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(0, 685, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__22);
  __Pyx_GIVEREF(__pyx_tuple__22);
+0686:             if group == 'variants':
    __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_v_group, __pyx_n_s_variants, Py_EQ)); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 686, __pyx_L1_error)
    if (__pyx_t_8) {
/* … */
    }
+0687:                 if isinstance(name, text_type):
      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_text_type); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 687, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_8 = PyObject_IsInstance(__pyx_v_name, __pyx_t_4); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(0, 687, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_9 = (__pyx_t_8 != 0);
      if (__pyx_t_9) {
/* … */
        goto __pyx_L8;
      }
+0688:                     key = name.encode('utf8')
        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_encode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 688, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__23, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 688, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_5);
        __pyx_t_5 = 0;
/* … */
  __pyx_tuple__23 = PyTuple_Pack(1, __pyx_n_s_utf8); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(0, 688, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__23);
  __Pyx_GIVEREF(__pyx_tuple__23);
 0689:                 else:
+0690:                     key = name
      /*else*/ {
        __Pyx_INCREF(__pyx_v_name);
        __Pyx_XDECREF_SET(__pyx_v_key, __pyx_v_name);
      }
      __pyx_L8:;
+0691:                 info_keys.append(key)
      __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_info_keys, __pyx_v_key); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 691, __pyx_L1_error)
+0692:                 fields.remove(field)
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_fields, __pyx_n_s_remove); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 692, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_1 = NULL;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
        __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4);
        if (likely(__pyx_t_1)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_1);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_4, function);
        }
      }
      if (!__pyx_t_1) {
        __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_field); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 692, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
      } else {
        #if CYTHON_FAST_PYCALL
        if (PyFunction_Check(__pyx_t_4)) {
          PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_v_field};
          __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 692, __pyx_L1_error)
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_GOTREF(__pyx_t_5);
        } else
        #endif
        #if CYTHON_FAST_PYCCALL
        if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
          PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_v_field};
          __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 692, __pyx_L1_error)
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_GOTREF(__pyx_t_5);
        } else
        #endif
        {
          __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 692, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1); __pyx_t_1 = NULL;
          __Pyx_INCREF(__pyx_v_field);
          __Pyx_GIVEREF(__pyx_v_field);
          PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_field);
          __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 692, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        }
      }
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+0693:                 info_types[key] = types[field]
      __pyx_t_5 = PyObject_GetItem(__pyx_v_types, __pyx_v_field); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 693, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      if (unlikely(PyDict_SetItem(__pyx_v_info_types, __pyx_v_key, __pyx_t_5) < 0)) __PYX_ERR(0, 693, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+0694:                 info_numbers[key] = numbers[field]
      __pyx_t_5 = PyObject_GetItem(__pyx_v_numbers, __pyx_v_field); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 694, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      if (unlikely(PyDict_SetItem(__pyx_v_info_numbers, __pyx_v_key, __pyx_t_5) < 0)) __PYX_ERR(0, 694, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+0695:                 if field in fills:
      __pyx_t_9 = (__Pyx_PySequence_ContainsTF(__pyx_v_field, __pyx_v_fills, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 695, __pyx_L1_error)
      __pyx_t_8 = (__pyx_t_9 != 0);
      if (__pyx_t_8) {
/* … */
      }
+0696:                     info_fills[key] = fills[field]
        __pyx_t_5 = PyObject_GetItem(__pyx_v_fills, __pyx_v_field); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 696, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        if (unlikely(PyDict_SetItem(__pyx_v_info_fills, __pyx_v_key, __pyx_t_5) < 0)) __PYX_ERR(0, 696, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+0697:         if info_keys:
  __pyx_t_8 = (__pyx_v_info_keys != Py_None) && (PyList_GET_SIZE(__pyx_v_info_keys) != 0);
  if (__pyx_t_8) {
/* … */
    goto __pyx_L10;
  }
+0698:             info_parser = VCFInfoParser(info_keys=info_keys,
    __pyx_t_2 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 698, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_info_keys, __pyx_v_info_keys) < 0) __PYX_ERR(0, 698, __pyx_L1_error)
/* … */
    __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoParser), __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 698, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_v_info_parser = ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFieldParserBase *)__pyx_t_5);
    __pyx_t_5 = 0;
+0699:                                         types=info_types,
    if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_types, __pyx_v_info_types) < 0) __PYX_ERR(0, 698, __pyx_L1_error)
+0700:                                         numbers=info_numbers,
    if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_numbers, __pyx_v_info_numbers) < 0) __PYX_ERR(0, 698, __pyx_L1_error)
+0701:                                         chunk_length=self.chunk_length,
    __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_self->chunk_length); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 701, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_chunk_length, __pyx_t_5) < 0) __PYX_ERR(0, 698, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+0702:                                         fills=info_fills)
    if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_fills, __pyx_v_info_fills) < 0) __PYX_ERR(0, 698, __pyx_L1_error)
 0703:         else:
+0704:             info_parser = VCFSkipFieldParser(key=b'INFO')
  /*else*/ {
    __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 704, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_key, __pyx_n_b_INFO) < 0) __PYX_ERR(0, 704, __pyx_L1_error)
    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFSkipFieldParser), __pyx_empty_tuple, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 704, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_v_info_parser = ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFieldParserBase *)__pyx_t_2);
    __pyx_t_2 = 0;
  }
  __pyx_L10:;
+0705:         info_parser.malloc_chunk()
  __pyx_t_11 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFieldParserBase *)__pyx_v_info_parser->__pyx_vtab)->malloc_chunk(__pyx_v_info_parser); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(0, 705, __pyx_L1_error)
+0706:         self.info_parser = info_parser
  __Pyx_INCREF(((PyObject *)__pyx_v_info_parser));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_info_parser));
  __Pyx_GOTREF(__pyx_v_self->info_parser);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->info_parser));
  __pyx_v_self->info_parser = __pyx_v_info_parser;
 0707: 
+0708:     def _init_format_calldata(self, fields, types, numbers, fills):
/* Python wrapper */
static PyObject *__pyx_pw_5allel_3opt_11io_vcf_read_9VCFParser_19_init_format_calldata(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_5allel_3opt_11io_vcf_read_9VCFParser_18_init_format_calldata[] = "Setup FORMAT and calldata parsers.";
static PyObject *__pyx_pw_5allel_3opt_11io_vcf_read_9VCFParser_19_init_format_calldata(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_fields = 0;
  PyObject *__pyx_v_types = 0;
  PyObject *__pyx_v_numbers = 0;
  PyObject *__pyx_v_fills = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_init_format_calldata (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fields,&__pyx_n_s_types,&__pyx_n_s_numbers,&__pyx_n_s_fills,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fields)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_types)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_init_format_calldata", 1, 4, 4, 1); __PYX_ERR(0, 708, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_numbers)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_init_format_calldata", 1, 4, 4, 2); __PYX_ERR(0, 708, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fills)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_init_format_calldata", 1, 4, 4, 3); __PYX_ERR(0, 708, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_init_format_calldata") < 0)) __PYX_ERR(0, 708, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_fields = values[0];
    __pyx_v_types = values[1];
    __pyx_v_numbers = values[2];
    __pyx_v_fills = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_init_format_calldata", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 708, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFParser._init_format_calldata", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_9VCFParser_18_init_format_calldata(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFParser *)__pyx_v_self), __pyx_v_fields, __pyx_v_types, __pyx_v_numbers, __pyx_v_fills);

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

static PyObject *__pyx_pf_5allel_3opt_11io_vcf_read_9VCFParser_18_init_format_calldata(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFParser *__pyx_v_self, PyObject *__pyx_v_fields, PyObject *__pyx_v_types, PyObject *__pyx_v_numbers, PyObject *__pyx_v_fills) {
  PyObject *__pyx_v_format_keys = NULL;
  PyObject *__pyx_v_format_types = NULL;
  PyObject *__pyx_v_format_numbers = NULL;
  PyObject *__pyx_v_format_fills = NULL;
  PyObject *__pyx_v_field = NULL;
  PyObject *__pyx_v_group = NULL;
  PyObject *__pyx_v_name = NULL;
  PyObject *__pyx_v_key = NULL;
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFieldParserBase *__pyx_v_format_parser = NULL;
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFieldParserBase *__pyx_v_calldata_parser = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_init_format_calldata", 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_6);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFParser._init_format_calldata", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_format_keys);
  __Pyx_XDECREF(__pyx_v_format_types);
  __Pyx_XDECREF(__pyx_v_format_numbers);
  __Pyx_XDECREF(__pyx_v_format_fills);
  __Pyx_XDECREF(__pyx_v_field);
  __Pyx_XDECREF(__pyx_v_group);
  __Pyx_XDECREF(__pyx_v_name);
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XDECREF((PyObject *)__pyx_v_format_parser);
  __Pyx_XDECREF((PyObject *)__pyx_v_calldata_parser);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 0709:         """Setup FORMAT and calldata parsers."""
+0710:         format_keys = list()
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 710, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_format_keys = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
+0711:         format_types = dict()
  __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 711, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_format_types = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
+0712:         format_numbers = dict()
  __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 712, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_format_numbers = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
+0713:         format_fills = dict()
  __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 713, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_format_fills = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
+0714:         for field in list(fields):
  __pyx_t_1 = PySequence_List(__pyx_v_fields); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 714, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  for (;;) {
    if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break;
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 714, __pyx_L1_error)
    #else
    __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 714, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    #endif
    __Pyx_XDECREF_SET(__pyx_v_field, __pyx_t_1);
    __pyx_t_1 = 0;
/* … */
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+0715:             group, name = field.split('/')
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_field, __pyx_n_s_split); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 715, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 715, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
      PyObject* sequence = __pyx_t_4;
      #if !CYTHON_COMPILING_IN_PYPY
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(0, 715, __pyx_L1_error)
      }
      #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_1 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_5 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_5);
      #else
      __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 715, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 715, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      #endif
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_6 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 715, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_7 = Py_TYPE(__pyx_t_6)->tp_iternext;
      index = 0; __pyx_t_1 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_1)) goto __pyx_L5_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_1);
      index = 1; __pyx_t_5 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L5_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_5);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < 0) __PYX_ERR(0, 715, __pyx_L1_error)
      __pyx_t_7 = NULL;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L6_unpacking_done;
      __pyx_L5_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_7 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(0, 715, __pyx_L1_error)
      __pyx_L6_unpacking_done:;
    }
    __Pyx_XDECREF_SET(__pyx_v_group, __pyx_t_1);
    __pyx_t_1 = 0;
    __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_5);
    __pyx_t_5 = 0;
/* … */
  __pyx_tuple__24 = PyTuple_Pack(1, __pyx_kp_s__3); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(0, 715, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__24);
  __Pyx_GIVEREF(__pyx_tuple__24);
+0716:             if group == 'calldata':
    __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_v_group, __pyx_n_s_calldata, Py_EQ)); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 716, __pyx_L1_error)
    if (__pyx_t_8) {
/* … */
    }
+0717:                 if isinstance(name, text_type):
      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_text_type); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 717, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_8 = PyObject_IsInstance(__pyx_v_name, __pyx_t_4); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(0, 717, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_9 = (__pyx_t_8 != 0);
      if (__pyx_t_9) {
/* … */
        goto __pyx_L8;
      }
+0718:                     key = name.encode('utf8')
        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_encode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 718, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 718, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_5);
        __pyx_t_5 = 0;
/* … */
  __pyx_tuple__25 = PyTuple_Pack(1, __pyx_n_s_utf8); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 718, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__25);
  __Pyx_GIVEREF(__pyx_tuple__25);
 0719:                 else:
+0720:                     key = name
      /*else*/ {
        __Pyx_INCREF(__pyx_v_name);
        __Pyx_XDECREF_SET(__pyx_v_key, __pyx_v_name);
      }
      __pyx_L8:;
+0721:                 format_keys.append(key)
      __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_format_keys, __pyx_v_key); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 721, __pyx_L1_error)
+0722:                 fields.remove(field)
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_fields, __pyx_n_s_remove); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 722, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_1 = NULL;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
        __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4);
        if (likely(__pyx_t_1)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_1);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_4, function);
        }
      }
      if (!__pyx_t_1) {
        __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_field); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 722, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
      } else {
        #if CYTHON_FAST_PYCALL
        if (PyFunction_Check(__pyx_t_4)) {
          PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_v_field};
          __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 722, __pyx_L1_error)
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_GOTREF(__pyx_t_5);
        } else
        #endif
        #if CYTHON_FAST_PYCCALL
        if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
          PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_v_field};
          __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 722, __pyx_L1_error)
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_GOTREF(__pyx_t_5);
        } else
        #endif
        {
          __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 722, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1); __pyx_t_1 = NULL;
          __Pyx_INCREF(__pyx_v_field);
          __Pyx_GIVEREF(__pyx_v_field);
          PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_field);
          __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 722, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        }
      }
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+0723:                 format_types[key] = types[field]
      __pyx_t_5 = PyObject_GetItem(__pyx_v_types, __pyx_v_field); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 723, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      if (unlikely(PyDict_SetItem(__pyx_v_format_types, __pyx_v_key, __pyx_t_5) < 0)) __PYX_ERR(0, 723, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+0724:                 format_numbers[key] = numbers[field]
      __pyx_t_5 = PyObject_GetItem(__pyx_v_numbers, __pyx_v_field); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 724, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      if (unlikely(PyDict_SetItem(__pyx_v_format_numbers, __pyx_v_key, __pyx_t_5) < 0)) __PYX_ERR(0, 724, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+0725:                 if field in fills:
      __pyx_t_9 = (__Pyx_PySequence_ContainsTF(__pyx_v_field, __pyx_v_fills, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 725, __pyx_L1_error)
      __pyx_t_8 = (__pyx_t_9 != 0);
      if (__pyx_t_8) {
/* … */
      }
+0726:                     format_fills[key] = fills[field]
        __pyx_t_5 = PyObject_GetItem(__pyx_v_fills, __pyx_v_field); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 726, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        if (unlikely(PyDict_SetItem(__pyx_v_format_fills, __pyx_v_key, __pyx_t_5) < 0)) __PYX_ERR(0, 726, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+0727:         if format_keys:
  __pyx_t_8 = (__pyx_v_format_keys != Py_None) && (PyList_GET_SIZE(__pyx_v_format_keys) != 0);
  if (__pyx_t_8) {
/* … */
    goto __pyx_L10;
  }
+0728:             format_parser = VCFFormatParser(format_keys=format_keys)
    __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 728, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_format_keys, __pyx_v_format_keys) < 0) __PYX_ERR(0, 728, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFFormatParser), __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 728, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_v_format_parser = ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFieldParserBase *)__pyx_t_5);
    __pyx_t_5 = 0;
+0729:             calldata_parser = VCFCallDataParser(format_keys=format_keys,
    __pyx_t_5 = __Pyx_PyDict_NewPresized(6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 729, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_format_keys, __pyx_v_format_keys) < 0) __PYX_ERR(0, 729, __pyx_L1_error)
/* … */
    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFCallDataParser), __pyx_empty_tuple, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 729, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_v_calldata_parser = ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFieldParserBase *)__pyx_t_2);
    __pyx_t_2 = 0;
+0730:                                                 types=format_types,
    if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_types, __pyx_v_format_types) < 0) __PYX_ERR(0, 729, __pyx_L1_error)
+0731:                                                 numbers=format_numbers,
    if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_numbers, __pyx_v_format_numbers) < 0) __PYX_ERR(0, 729, __pyx_L1_error)
+0732:                                                 chunk_length=self.chunk_length,
    __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->chunk_length); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 732, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_chunk_length, __pyx_t_2) < 0) __PYX_ERR(0, 729, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+0733:                                                 loc_samples=self.loc_samples,
    __pyx_t_2 = __pyx_memoryview_fromslice(__pyx_v_self->loc_samples, 1, (PyObject *(*)(char *)) __pyx_memview_get_nn___pyx_t_5numpy_uint8_t, (int (*)(char *, PyObject *)) __pyx_memview_set_nn___pyx_t_5numpy_uint8_t, 0);; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 733, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_loc_samples, __pyx_t_2) < 0) __PYX_ERR(0, 729, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+0734:                                                 fills=format_fills)
    if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_fills, __pyx_v_format_fills) < 0) __PYX_ERR(0, 729, __pyx_L1_error)
 0735:         else:
+0736:             format_parser = VCFSkipFieldParser(key=b'FORMAT')
  /*else*/ {
    __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 736, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_key, __pyx_n_b_FORMAT) < 0) __PYX_ERR(0, 736, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFSkipFieldParser), __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 736, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_v_format_parser = ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFieldParserBase *)__pyx_t_5);
    __pyx_t_5 = 0;
+0737:             calldata_parser = VCFSkipAllCallDataParser()
    __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFSkipAllCallDataParser), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 737, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_v_calldata_parser = ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFieldParserBase *)__pyx_t_5);
    __pyx_t_5 = 0;
  }
  __pyx_L10:;
+0738:         format_parser.malloc_chunk()
  __pyx_t_11 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFieldParserBase *)__pyx_v_format_parser->__pyx_vtab)->malloc_chunk(__pyx_v_format_parser); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(0, 738, __pyx_L1_error)
+0739:         calldata_parser.malloc_chunk()
  __pyx_t_11 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFieldParserBase *)__pyx_v_calldata_parser->__pyx_vtab)->malloc_chunk(__pyx_v_calldata_parser); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(0, 739, __pyx_L1_error)
+0740:         self.format_parser = format_parser
  __Pyx_INCREF(((PyObject *)__pyx_v_format_parser));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_format_parser));
  __Pyx_GOTREF(__pyx_v_self->format_parser);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->format_parser));
  __pyx_v_self->format_parser = __pyx_v_format_parser;
+0741:         self.calldata_parser = calldata_parser
  __Pyx_INCREF(((PyObject *)__pyx_v_calldata_parser));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_calldata_parser));
  __Pyx_GOTREF(__pyx_v_self->calldata_parser);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->calldata_parser));
  __pyx_v_self->calldata_parser = __pyx_v_calldata_parser;
 0742: 
+0743:     cdef int parse(self, InputStreamBase stream, VCFContext context) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_9VCFParser_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFParser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFParser.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 0744:         """Parse to end of current chunk or EOF."""
 0745: 
 0746:         # with nogil:
 0747: 
+0748:         while True:
  while (1) {
 0749: 
+0750:             if context.state == VCFState.EOF:
    switch (__pyx_v_context->state) {
      case __pyx_e_5allel_3opt_11io_vcf_read_EOF:
/* … */
      break;
+0751:                 break
      goto __pyx_L4_break;
 0752: 
+0753:             elif context.state == VCFState.EOL:
      case __pyx_e_5allel_3opt_11io_vcf_read_EOL:
/* … */
      break;
 0754: 
 0755:                 # handle line terminators
+0756:                 if stream.c == LF:
      __pyx_t_1 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
      if (__pyx_t_1) {
/* … */
        goto __pyx_L5;
      }
+0757:                     stream.advance()
        __pyx_t_2 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 757, __pyx_L1_error)
+0758:                 elif stream.c == CR:
      __pyx_t_1 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_CR) != 0);
      if (__pyx_t_1) {
/* … */
        goto __pyx_L5;
      }
+0759:                     stream.advance()
        __pyx_t_2 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 759, __pyx_L1_error)
+0760:                     if stream.c == LF:
        __pyx_t_1 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
        if (__pyx_t_1) {
/* … */
        }
+0761:                         stream.advance()
          __pyx_t_2 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 761, __pyx_L1_error)
 0762:                 else:
 0763:                     # shouldn't ever happen
 0764:                     # with gil:
+0765:                     warn('unexpected EOL character', context)
      /*else*/ {
        __pyx_t_2 = __pyx_f_5allel_3opt_11io_vcf_read_warn(__pyx_kp_s_unexpected_EOL_character, __pyx_v_context); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 765, __pyx_L1_error)
+0766:                     break
        goto __pyx_L4_break;
      }
      __pyx_L5:;
 0767: 
 0768:                 # advance state
+0769:                 context.state = VCFState.CHROM
      __pyx_v_context->state = __pyx_e_5allel_3opt_11io_vcf_read_CHROM;
 0770: 
 0771:                 # end of chunk?
+0772:                 if context.chunk_variant_index + 1 == self.chunk_length:
      __pyx_t_1 = (((__pyx_v_context->chunk_variant_index + 1) == __pyx_v_self->chunk_length) != 0);
      if (__pyx_t_1) {
/* … */
      }
 0773:                     # we're done
+0774:                     break
        goto __pyx_L4_break;
 0775: 
+0776:             elif context.state == VCFState.CHROM:
      case __pyx_e_5allel_3opt_11io_vcf_read_CHROM:
/* … */
      break;
+0777:                 self.chrom_pos_parser.parse(stream, context)
      __pyx_t_2 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFieldParserBase *)__pyx_v_self->chrom_pos_parser->__pyx_vtab)->parse(__pyx_v_self->chrom_pos_parser, __pyx_v_stream, __pyx_v_context); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 777, __pyx_L1_error)
 0778: 
+0779:             elif context.state == VCFState.ID:
      case __pyx_e_5allel_3opt_11io_vcf_read_ID:
/* … */
      break;
+0780:                 self.id_parser.parse(stream, context)
      __pyx_t_2 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFieldParserBase *)__pyx_v_self->id_parser->__pyx_vtab)->parse(__pyx_v_self->id_parser, __pyx_v_stream, __pyx_v_context); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 780, __pyx_L1_error)
 0781: 
+0782:             elif context.state == VCFState.REF:
      case __pyx_e_5allel_3opt_11io_vcf_read_REF:
/* … */
      break;
+0783:                 self.ref_parser.parse(stream, context)
      __pyx_t_2 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFieldParserBase *)__pyx_v_self->ref_parser->__pyx_vtab)->parse(__pyx_v_self->ref_parser, __pyx_v_stream, __pyx_v_context); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 783, __pyx_L1_error)
 0784: 
+0785:             elif context.state == VCFState.ALT:
      case __pyx_e_5allel_3opt_11io_vcf_read_ALT:
/* … */
      break;
+0786:                 self.alt_parser.parse(stream, context)
      __pyx_t_2 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFieldParserBase *)__pyx_v_self->alt_parser->__pyx_vtab)->parse(__pyx_v_self->alt_parser, __pyx_v_stream, __pyx_v_context); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 786, __pyx_L1_error)
 0787: 
+0788:             elif context.state == VCFState.QUAL:
      case __pyx_e_5allel_3opt_11io_vcf_read_QUAL:
/* … */
      break;
+0789:                 self.qual_parser.parse(stream, context)
      __pyx_t_2 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFieldParserBase *)__pyx_v_self->qual_parser->__pyx_vtab)->parse(__pyx_v_self->qual_parser, __pyx_v_stream, __pyx_v_context); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 789, __pyx_L1_error)
 0790: 
+0791:             elif context.state == VCFState.FILTER:
      case __pyx_e_5allel_3opt_11io_vcf_read_FILTER:
/* … */
      break;
+0792:                 self.filter_parser.parse(stream, context)
      __pyx_t_2 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFieldParserBase *)__pyx_v_self->filter_parser->__pyx_vtab)->parse(__pyx_v_self->filter_parser, __pyx_v_stream, __pyx_v_context); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 792, __pyx_L1_error)
 0793: 
+0794:             elif context.state == VCFState.INFO:
      case __pyx_e_5allel_3opt_11io_vcf_read_INFO:
/* … */
      break;
+0795:                 self.info_parser.parse(stream, context)
      __pyx_t_2 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFieldParserBase *)__pyx_v_self->info_parser->__pyx_vtab)->parse(__pyx_v_self->info_parser, __pyx_v_stream, __pyx_v_context); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 795, __pyx_L1_error)
 0796: 
+0797:             elif context.state == VCFState.FORMAT:
      case __pyx_e_5allel_3opt_11io_vcf_read_FORMAT:
/* … */
      break;
+0798:                 self.format_parser.parse(stream, context)
      __pyx_t_2 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFieldParserBase *)__pyx_v_self->format_parser->__pyx_vtab)->parse(__pyx_v_self->format_parser, __pyx_v_stream, __pyx_v_context); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 798, __pyx_L1_error)
 0799: 
+0800:             elif context.state == VCFState.CALLDATA:
      case __pyx_e_5allel_3opt_11io_vcf_read_CALLDATA:
/* … */
      break;
      default:
+0801:                 self.calldata_parser.parse(stream, context)
      __pyx_t_2 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFieldParserBase *)__pyx_v_self->calldata_parser->__pyx_vtab)->parse(__pyx_v_self->calldata_parser, __pyx_v_stream, __pyx_v_context); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 801, __pyx_L1_error)
 0802: 
 0803:             else:
 0804:                 # shouldn't ever happen
 0805:                 # with gil:
+0806:                 warn('unexpected parser state', context)
      __pyx_t_2 = __pyx_f_5allel_3opt_11io_vcf_read_warn(__pyx_kp_s_unexpected_parser_state, __pyx_v_context); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 806, __pyx_L1_error)
+0807:                 break
      goto __pyx_L4_break;
      break;
    }
  }
  __pyx_L4_break:;
 0808: 
+0809:     cdef int malloc_chunk(self) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_9VCFParser_malloc_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFParser *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("malloc_chunk", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFParser.malloc_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+0810:         self.chrom_pos_parser.malloc_chunk()
  __pyx_t_1 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFieldParserBase *)__pyx_v_self->chrom_pos_parser->__pyx_vtab)->malloc_chunk(__pyx_v_self->chrom_pos_parser); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 810, __pyx_L1_error)
+0811:         self.id_parser.malloc_chunk()
  __pyx_t_1 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFieldParserBase *)__pyx_v_self->id_parser->__pyx_vtab)->malloc_chunk(__pyx_v_self->id_parser); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 811, __pyx_L1_error)
+0812:         self.ref_parser.malloc_chunk()
  __pyx_t_1 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFieldParserBase *)__pyx_v_self->ref_parser->__pyx_vtab)->malloc_chunk(__pyx_v_self->ref_parser); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 812, __pyx_L1_error)
+0813:         self.alt_parser.malloc_chunk()
  __pyx_t_1 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFieldParserBase *)__pyx_v_self->alt_parser->__pyx_vtab)->malloc_chunk(__pyx_v_self->alt_parser); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 813, __pyx_L1_error)
+0814:         self.qual_parser.malloc_chunk()
  __pyx_t_1 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFieldParserBase *)__pyx_v_self->qual_parser->__pyx_vtab)->malloc_chunk(__pyx_v_self->qual_parser); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 814, __pyx_L1_error)
+0815:         self.filter_parser.malloc_chunk()
  __pyx_t_1 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFieldParserBase *)__pyx_v_self->filter_parser->__pyx_vtab)->malloc_chunk(__pyx_v_self->filter_parser); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 815, __pyx_L1_error)
+0816:         self.info_parser.malloc_chunk()
  __pyx_t_1 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFieldParserBase *)__pyx_v_self->info_parser->__pyx_vtab)->malloc_chunk(__pyx_v_self->info_parser); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 816, __pyx_L1_error)
+0817:         self.format_parser.malloc_chunk()
  __pyx_t_1 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFieldParserBase *)__pyx_v_self->format_parser->__pyx_vtab)->malloc_chunk(__pyx_v_self->format_parser); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 817, __pyx_L1_error)
+0818:         self.calldata_parser.malloc_chunk()
  __pyx_t_1 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFieldParserBase *)__pyx_v_self->calldata_parser->__pyx_vtab)->malloc_chunk(__pyx_v_self->calldata_parser); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 818, __pyx_L1_error)
 0819: 
+0820:     cdef object make_chunk(self, chunk_length):
static PyObject *__pyx_f_5allel_3opt_11io_vcf_read_9VCFParser_make_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFParser *__pyx_v_self, PyObject *__pyx_v_chunk_length) {
  PyObject *__pyx_v_limit = NULL;
  PyObject *__pyx_v_chunk = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("make_chunk", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFParser.make_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_limit);
  __Pyx_XDECREF(__pyx_v_chunk);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+0821:         if chunk_length > 0:
  __pyx_t_1 = PyObject_RichCompare(__pyx_v_chunk_length, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 821, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 821, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {
/* … */
  }
+0822:             if chunk_length < self.chunk_length:
    __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->chunk_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 822, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_chunk_length, __pyx_t_1, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 822, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 822, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_2) {
/* … */
      goto __pyx_L4;
    }
+0823:                 limit = chunk_length
      __Pyx_INCREF(__pyx_v_chunk_length);
      __pyx_v_limit = __pyx_v_chunk_length;
 0824:             else:
+0825:                 limit = None
    /*else*/ {
      __Pyx_INCREF(Py_None);
      __pyx_v_limit = Py_None;
    }
    __pyx_L4:;
+0826:             chunk = dict()
    __pyx_t_3 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 826, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_v_chunk = ((PyObject*)__pyx_t_3);
    __pyx_t_3 = 0;
+0827:             self.chrom_pos_parser.make_chunk(chunk, limit=limit)
    __pyx_t_5.__pyx_n = 1;
    __pyx_t_5.limit = __pyx_v_limit;
    __pyx_t_4 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFieldParserBase *)__pyx_v_self->chrom_pos_parser->__pyx_vtab)->make_chunk(__pyx_v_self->chrom_pos_parser, __pyx_v_chunk, &__pyx_t_5); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 827, __pyx_L1_error)
+0828:             self.id_parser.make_chunk(chunk, limit=limit)
    __pyx_t_5.__pyx_n = 1;
    __pyx_t_5.limit = __pyx_v_limit;
    __pyx_t_4 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFieldParserBase *)__pyx_v_self->id_parser->__pyx_vtab)->make_chunk(__pyx_v_self->id_parser, __pyx_v_chunk, &__pyx_t_5); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 828, __pyx_L1_error)
+0829:             self.ref_parser.make_chunk(chunk, limit=limit)
    __pyx_t_5.__pyx_n = 1;
    __pyx_t_5.limit = __pyx_v_limit;
    __pyx_t_4 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFieldParserBase *)__pyx_v_self->ref_parser->__pyx_vtab)->make_chunk(__pyx_v_self->ref_parser, __pyx_v_chunk, &__pyx_t_5); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 829, __pyx_L1_error)
+0830:             self.alt_parser.make_chunk(chunk, limit=limit)
    __pyx_t_5.__pyx_n = 1;
    __pyx_t_5.limit = __pyx_v_limit;
    __pyx_t_4 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFieldParserBase *)__pyx_v_self->alt_parser->__pyx_vtab)->make_chunk(__pyx_v_self->alt_parser, __pyx_v_chunk, &__pyx_t_5); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 830, __pyx_L1_error)
+0831:             self.qual_parser.make_chunk(chunk, limit=limit)
    __pyx_t_5.__pyx_n = 1;
    __pyx_t_5.limit = __pyx_v_limit;
    __pyx_t_4 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFieldParserBase *)__pyx_v_self->qual_parser->__pyx_vtab)->make_chunk(__pyx_v_self->qual_parser, __pyx_v_chunk, &__pyx_t_5); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 831, __pyx_L1_error)
+0832:             self.filter_parser.make_chunk(chunk, limit=limit)
    __pyx_t_5.__pyx_n = 1;
    __pyx_t_5.limit = __pyx_v_limit;
    __pyx_t_4 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFieldParserBase *)__pyx_v_self->filter_parser->__pyx_vtab)->make_chunk(__pyx_v_self->filter_parser, __pyx_v_chunk, &__pyx_t_5); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 832, __pyx_L1_error)
+0833:             self.info_parser.make_chunk(chunk, limit=limit)
    __pyx_t_5.__pyx_n = 1;
    __pyx_t_5.limit = __pyx_v_limit;
    __pyx_t_4 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFieldParserBase *)__pyx_v_self->info_parser->__pyx_vtab)->make_chunk(__pyx_v_self->info_parser, __pyx_v_chunk, &__pyx_t_5); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 833, __pyx_L1_error)
+0834:             self.calldata_parser.make_chunk(chunk, limit=limit)
    __pyx_t_5.__pyx_n = 1;
    __pyx_t_5.limit = __pyx_v_limit;
    __pyx_t_4 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFieldParserBase *)__pyx_v_self->calldata_parser->__pyx_vtab)->make_chunk(__pyx_v_self->calldata_parser, __pyx_v_chunk, &__pyx_t_5); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 834, __pyx_L1_error)
+0835:             return chunk
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_chunk);
    __pyx_r = __pyx_v_chunk;
    goto __pyx_L0;
 0836: 
 0837:         else:
+0838:             return None
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
  }
 0839: 
 0840: 
+0841: cdef class VCFFieldParserBase:
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFieldParserBase {
  PyObject_HEAD
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFieldParserBase *__pyx_vtab;
  PyObject *key;
  PyArray_Descr *dtype;
  Py_ssize_t itemsize;
  Py_ssize_t number;
  PyObject *fill;
  Py_ssize_t chunk_length;
  PyArrayObject *values;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFieldParserBase {
  int (*parse)(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFieldParserBase *, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *);
  int (*malloc_chunk)(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFieldParserBase *);
  int (*make_chunk)(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFieldParserBase *, PyObject *, struct __pyx_opt_args_5allel_3opt_11io_vcf_read_18VCFFieldParserBase_make_chunk *__pyx_optional_args);
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFieldParserBase *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFFieldParserBase;

 0842:     """Abstract base class for top-level field parsers."""
 0843: 
 0844:     cdef:
 0845:         bytes key
 0846:         np.dtype dtype
 0847:         Py_ssize_t itemsize
 0848:         Py_ssize_t number
 0849:         object fill
 0850:         Py_ssize_t chunk_length
 0851:         np.ndarray values
 0852: 
+0853:     def __init__(self, key=None, dtype=None, number=1, fill=None, chunk_length=0):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_18VCFFieldParserBase_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_18VCFFieldParserBase_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_key = 0;
  PyObject *__pyx_v_dtype = 0;
  PyObject *__pyx_v_number = 0;
  PyObject *__pyx_v_fill = 0;
  PyObject *__pyx_v_chunk_length = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_key,&__pyx_n_s_dtype,&__pyx_n_s_number,&__pyx_n_s_fill,&__pyx_n_s_chunk_length,0};
    PyObject* values[5] = {0,0,0,0,0};
    values[0] = ((PyObject *)Py_None);
    values[1] = ((PyObject *)Py_None);
    values[2] = ((PyObject *)__pyx_int_1);
    values[3] = ((PyObject *)Py_None);
    values[4] = ((PyObject *)__pyx_int_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  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_key);
          if (value) { values[0] = value; kw_args--; }
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dtype);
          if (value) { values[1] = value; kw_args--; }
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_number);
          if (value) { values[2] = value; kw_args--; }
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fill);
          if (value) { values[3] = value; kw_args--; }
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_chunk_length);
          if (value) { values[4] = 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, 853, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_key = values[0];
    __pyx_v_dtype = values[1];
    __pyx_v_number = values[2];
    __pyx_v_fill = values[3];
    __pyx_v_chunk_length = values[4];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 853, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFFieldParserBase.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_18VCFFieldParserBase___init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFieldParserBase *)__pyx_v_self), __pyx_v_key, __pyx_v_dtype, __pyx_v_number, __pyx_v_fill, __pyx_v_chunk_length);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_18VCFFieldParserBase___init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFieldParserBase *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_dtype, PyObject *__pyx_v_number, PyObject *__pyx_v_fill, PyObject *__pyx_v_chunk_length) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__", 0);
  __Pyx_INCREF(__pyx_v_dtype);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFFieldParserBase.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_dtype);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+0854:         self.key = key
  if (!(likely(PyBytes_CheckExact(__pyx_v_key))||((__pyx_v_key) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_key)->tp_name), 0))) __PYX_ERR(0, 854, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_key;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->key);
  __Pyx_DECREF(__pyx_v_self->key);
  __pyx_v_self->key = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
+0855:         if dtype is not None:
  __pyx_t_2 = (__pyx_v_dtype != Py_None);
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (__pyx_t_3) {
/* … */
    goto __pyx_L3;
  }
+0856:             dtype = np.dtype(dtype)
    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 856, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v_dtype);
    __Pyx_GIVEREF(__pyx_v_dtype);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_dtype);
    __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 856, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF_SET(__pyx_v_dtype, __pyx_t_4);
    __pyx_t_4 = 0;
+0857:             self.itemsize = dtype.itemsize
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_dtype, __pyx_n_s_itemsize); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 857, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_t_4); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 857, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_self->itemsize = __pyx_t_5;
 0858:         else:
+0859:             self.itemsize = 0
  /*else*/ {
    __pyx_v_self->itemsize = 0;
  }
  __pyx_L3:;
+0860:         self.dtype = dtype
  if (!(likely(((__pyx_v_dtype) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_dtype, __pyx_ptype_5numpy_dtype))))) __PYX_ERR(0, 860, __pyx_L1_error)
  __pyx_t_4 = __pyx_v_dtype;
  __Pyx_INCREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_4);
  __Pyx_GOTREF(__pyx_v_self->dtype);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->dtype));
  __pyx_v_self->dtype = ((PyArray_Descr *)__pyx_t_4);
  __pyx_t_4 = 0;
+0861:         self.number = number
  __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_v_number); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 861, __pyx_L1_error)
  __pyx_v_self->number = __pyx_t_5;
+0862:         self.fill = fill
  __Pyx_INCREF(__pyx_v_fill);
  __Pyx_GIVEREF(__pyx_v_fill);
  __Pyx_GOTREF(__pyx_v_self->fill);
  __Pyx_DECREF(__pyx_v_self->fill);
  __pyx_v_self->fill = __pyx_v_fill;
+0863:         self.chunk_length = chunk_length
  __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_v_chunk_length); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 863, __pyx_L1_error)
  __pyx_v_self->chunk_length = __pyx_t_5;
 0864: 
+0865:     cdef int parse(self, InputStreamBase stream, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_18VCFFieldParserBase_parse(CYTHON_UNUSED struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFieldParserBase *__pyx_v_self, CYTHON_UNUSED struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, CYTHON_UNUSED struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 0866:         pass
 0867: 
+0868:     cdef int malloc_chunk(self) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_18VCFFieldParserBase_malloc_chunk(CYTHON_UNUSED struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFieldParserBase *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("malloc_chunk", 0);

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 0869:         pass
 0870: 
+0871:     cdef int make_chunk(self, chunk, limit=None) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_18VCFFieldParserBase_make_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFieldParserBase *__pyx_v_self, PyObject *__pyx_v_chunk, struct __pyx_opt_args_5allel_3opt_11io_vcf_read_18VCFFieldParserBase_make_chunk *__pyx_optional_args) {
  PyObject *__pyx_v_limit = ((PyObject *)Py_None);
  PyObject *__pyx_v_field = NULL;
  PyObject *__pyx_v_values = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("make_chunk", 0);
  if (__pyx_optional_args) {
    if (__pyx_optional_args->__pyx_n > 0) {
      __pyx_v_limit = __pyx_optional_args->limit;
    }
  }
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFFieldParserBase.make_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_field);
  __Pyx_XDECREF(__pyx_v_values);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
struct __pyx_opt_args_5allel_3opt_11io_vcf_read_18VCFFieldParserBase_make_chunk {
  int __pyx_n;
  PyObject *limit;
};
+0872:         field = u'variants/' + text_type(self.key, 'utf8')
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_text_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 872, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_self->key, __pyx_n_s_utf8};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 872, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_self->key, __pyx_n_s_utf8};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 872, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else
  #endif
  {
    __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 872, __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_self->key);
    __Pyx_GIVEREF(__pyx_v_self->key);
    PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_self->key);
    __Pyx_INCREF(__pyx_n_s_utf8);
    __Pyx_GIVEREF(__pyx_n_s_utf8);
    PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_n_s_utf8);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 872, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyNumber_Add(__pyx_kp_u_variants_2, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 872, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_field = __pyx_t_2;
  __pyx_t_2 = 0;
+0873:         values = self.values
  __pyx_t_2 = ((PyObject *)__pyx_v_self->values);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_v_values = __pyx_t_2;
  __pyx_t_2 = 0;
+0874:         if self.values.ndim > 1 and self.number == 1:
  __pyx_t_7 = ((__pyx_v_self->values->nd > 1) != 0);
  if (__pyx_t_7) {
  } else {
    __pyx_t_6 = __pyx_t_7;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_7 = ((__pyx_v_self->number == 1) != 0);
  __pyx_t_6 = __pyx_t_7;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_6) {
/* … */
  }
+0875:             values = values.squeeze(axis=1)
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_values, __pyx_n_s_squeeze); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 875, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 875, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_axis, __pyx_int_1) < 0) __PYX_ERR(0, 875, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 875, __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_DECREF_SET(__pyx_v_values, __pyx_t_5);
    __pyx_t_5 = 0;
+0876:         chunk[field] = values[:limit]
  __pyx_t_5 = __Pyx_PyObject_GetSlice(__pyx_v_values, 0, 0, NULL, &__pyx_v_limit, NULL, 0, 0, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 876, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (unlikely(PyObject_SetItem(__pyx_v_chunk, __pyx_v_field, __pyx_t_5) < 0)) __PYX_ERR(0, 876, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 0877: 
 0878: 
+0879: cdef class VCFSkipFieldParser(VCFFieldParserBase):
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFSkipFieldParser {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFieldParserBase __pyx_base;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFSkipFieldParser {
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFieldParserBase __pyx_base;
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFSkipFieldParser *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFSkipFieldParser;

 0880:     """Parser to skip a tab-delimited field."""
 0881: 
+0882:     def __init__(self, key):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_18VCFSkipFieldParser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_18VCFSkipFieldParser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_key = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_key,0};
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_key)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 882, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_key = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 882, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFSkipFieldParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_18VCFSkipFieldParser___init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFSkipFieldParser *)__pyx_v_self), __pyx_v_key);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_18VCFSkipFieldParser___init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFSkipFieldParser *__pyx_v_self, PyObject *__pyx_v_key) {
  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_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFSkipFieldParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+0883:         super(VCFSkipFieldParser, self).__init__(key=key)
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 883, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFSkipFieldParser));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFSkipFieldParser));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFSkipFieldParser));
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self));
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 883, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 883, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 883, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_key, __pyx_v_key) < 0) __PYX_ERR(0, 883, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 883, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 0884: 
+0885:     cdef int parse(self, InputStreamBase stream, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_18VCFSkipFieldParser_parse(CYTHON_UNUSED struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFSkipFieldParser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFSkipFieldParser.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 0886: 
+0887:         while True:
  while (1) {
 0888: 
+0889:             if stream.c == 0:
    __pyx_t_1 = ((__pyx_v_stream->c == 0) != 0);
    if (__pyx_t_1) {
/* … */
    }
+0890:                 context.state = VCFState.EOF
      __pyx_v_context->state = __pyx_e_5allel_3opt_11io_vcf_read_EOF;
+0891:                 break
      goto __pyx_L4_break;
 0892: 
+0893:             elif stream.c == LF or stream.c == CR:
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_CR) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L6_bool_binop_done:;
    if (__pyx_t_1) {
/* … */
    }
+0894:                 context.state = VCFState.EOL
      __pyx_v_context->state = __pyx_e_5allel_3opt_11io_vcf_read_EOL;
+0895:                 break
      goto __pyx_L4_break;
 0896: 
+0897:             elif stream.c == TAB:
    __pyx_t_1 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_TAB) != 0);
    if (__pyx_t_1) {
/* … */
    }
+0898:                 stream.advance()
      __pyx_t_3 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 898, __pyx_L1_error)
+0899:                 context.state += 1
      __pyx_v_context->state = (__pyx_v_context->state + 1);
+0900:                 break
      goto __pyx_L4_break;
 0901: 
 0902:             # advance input stream
+0903:             stream.advance()
    __pyx_t_3 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 903, __pyx_L1_error)
  }
  __pyx_L4_break:;
 0904: 
+0905:     cdef int malloc_chunk(self) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_18VCFSkipFieldParser_malloc_chunk(CYTHON_UNUSED struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFSkipFieldParser *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("malloc_chunk", 0);

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 0906:         pass
 0907: 
+0908:     cdef int make_chunk(self, chunk, limit=None) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_18VCFSkipFieldParser_make_chunk(CYTHON_UNUSED struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFSkipFieldParser *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_chunk, struct __pyx_opt_args_5allel_3opt_11io_vcf_read_18VCFSkipFieldParser_make_chunk *__pyx_optional_args) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("make_chunk", 0);
  if (__pyx_optional_args) {
  }

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
struct __pyx_opt_args_5allel_3opt_11io_vcf_read_18VCFSkipFieldParser_make_chunk {
  int __pyx_n;
  PyObject *limit;
};
 0909:         pass
 0910: 
 0911: 
+0912: def check_string_dtype(dtype):
/* Python wrapper */
static PyObject *__pyx_pw_5allel_3opt_11io_vcf_read_3check_string_dtype(PyObject *__pyx_self, PyObject *__pyx_v_dtype); /*proto*/
static PyMethodDef __pyx_mdef_5allel_3opt_11io_vcf_read_3check_string_dtype = {"check_string_dtype", (PyCFunction)__pyx_pw_5allel_3opt_11io_vcf_read_3check_string_dtype, METH_O, 0};
static PyObject *__pyx_pw_5allel_3opt_11io_vcf_read_3check_string_dtype(PyObject *__pyx_self, PyObject *__pyx_v_dtype) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("check_string_dtype (wrapper)", 0);
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_2check_string_dtype(__pyx_self, ((PyObject *)__pyx_v_dtype));

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

static PyObject *__pyx_pf_5allel_3opt_11io_vcf_read_2check_string_dtype(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_dtype) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("check_string_dtype", 0);
  __Pyx_INCREF(__pyx_v_dtype);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.check_string_dtype", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_dtype);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__151 = PyTuple_Pack(1, __pyx_n_s_dtype); if (unlikely(!__pyx_tuple__151)) __PYX_ERR(0, 912, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__151);
  __Pyx_GIVEREF(__pyx_tuple__151);
/* … */
  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_5allel_3opt_11io_vcf_read_3check_string_dtype, NULL, __pyx_n_s_allel_opt_io_vcf_read); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 912, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_check_string_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 912, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_codeobj__152 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__151, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_allel_opt_io_vcf_read_pyx, __pyx_n_s_check_string_dtype, 912, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__152)) __PYX_ERR(0, 912, __pyx_L1_error)
+0913:     dtype = np.dtype(dtype)
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 913, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_dtype);
  __Pyx_GIVEREF(__pyx_v_dtype);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_dtype);
  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 913, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF_SET(__pyx_v_dtype, __pyx_t_2);
  __pyx_t_2 = 0;
+0914:     if dtype.kind not in ['S', 'O']:
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_dtype, __pyx_n_s_kind); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 914, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_n_s_S, Py_NE)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 914, __pyx_L1_error)
  if (__pyx_t_4) {
  } else {
    __pyx_t_3 = __pyx_t_4;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_n_s_O, Py_NE)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 914, __pyx_L1_error)
  __pyx_t_3 = __pyx_t_4;
  __pyx_L4_bool_binop_done:;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = (__pyx_t_3 != 0);
  if (__pyx_t_4) {
/* … */
  }
+0915:         raise ValueError("expected string ('S') or object ('O') dtype, found: %r" % dtype)
    __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_expected_string_S_or_object_O_dt, __pyx_v_dtype); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 915, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 915, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
    __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 915, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(0, 915, __pyx_L1_error)
+0916:     return dtype
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_dtype);
  __pyx_r = __pyx_v_dtype;
  goto __pyx_L0;
 0917: 
 0918: 
+0919: cdef int vcf_read_field(InputStreamBase stream,
static int __pyx_f_5allel_3opt_11io_vcf_read_vcf_read_field(struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, struct __pyx_t_5allel_3opt_11io_vcf_read_CharVector *__pyx_v_dest) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("vcf_read_field", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_read_field", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 0920:                         VCFContext context,
 0921:                         CharVector* dest) except -1:  # nogil
 0922: 
 0923:     # setup temp vector to store value
+0924:     CharVector_clear(dest)
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear(__pyx_v_dest);
 0925: 
+0926:     while True:
  while (1) {
 0927: 
+0928:         if stream.c == 0:
    __pyx_t_1 = ((__pyx_v_stream->c == 0) != 0);
    if (__pyx_t_1) {
/* … */
    }
+0929:             context.state = VCFState.EOF
      __pyx_v_context->state = __pyx_e_5allel_3opt_11io_vcf_read_EOF;
+0930:             break
      goto __pyx_L4_break;
 0931: 
+0932:         elif stream.c == LF or stream.c == CR:
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_CR) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L6_bool_binop_done:;
    if (__pyx_t_1) {
/* … */
    }
+0933:             context.state = VCFState.EOL
      __pyx_v_context->state = __pyx_e_5allel_3opt_11io_vcf_read_EOL;
+0934:             break
      goto __pyx_L4_break;
 0935: 
+0936:         elif stream.c == TAB:
    __pyx_t_1 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_TAB) != 0);
    if (__pyx_t_1) {
/* … */
    }
+0937:             stream.advance()
      __pyx_t_3 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 937, __pyx_L1_error)
 0938:             # leave it to caller to advance state
+0939:             break
      goto __pyx_L4_break;
 0940: 
 0941:         else:
+0942:             CharVector_append(dest, stream.c)
    /*else*/ {
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_append(__pyx_v_dest, __pyx_v_stream->c);
    }
 0943: 
 0944:         # advance input stream
+0945:         stream.advance()
    __pyx_t_3 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 945, __pyx_L1_error)
  }
  __pyx_L4_break:;
 0946: 
 0947: 
+0948: cdef int vcf_parse_missing(InputStreamBase stream,
static int __pyx_f_5allel_3opt_11io_vcf_read_vcf_parse_missing(struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("vcf_parse_missing", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_parse_missing", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 0949:                            VCFContext context) except -1:  # nogil
 0950: 
+0951:     while True:
  while (1) {
 0952: 
+0953:         if stream.c == 0:
    __pyx_t_1 = ((__pyx_v_stream->c == 0) != 0);
    if (__pyx_t_1) {
/* … */
    }
+0954:             context.state = VCFState.EOF
      __pyx_v_context->state = __pyx_e_5allel_3opt_11io_vcf_read_EOF;
+0955:             break
      goto __pyx_L4_break;
 0956: 
+0957:         elif stream.c == LF or stream.c == CR:
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_CR) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L6_bool_binop_done:;
    if (__pyx_t_1) {
/* … */
    }
+0958:             context.state = VCFState.EOL
      __pyx_v_context->state = __pyx_e_5allel_3opt_11io_vcf_read_EOL;
+0959:             break
      goto __pyx_L4_break;
 0960: 
+0961:         elif stream.c == TAB:
    __pyx_t_1 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_TAB) != 0);
    if (__pyx_t_1) {
/* … */
    }
 0962:             # advance input stream beyond tab
+0963:             stream.advance()
      __pyx_t_3 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 963, __pyx_L1_error)
+0964:             context.state += 1
      __pyx_v_context->state = (__pyx_v_context->state + 1);
+0965:             break
      goto __pyx_L4_break;
 0966: 
 0967:         # advance input stream
+0968:         stream.advance()
    __pyx_t_3 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 968, __pyx_L1_error)
  }
  __pyx_L4_break:;
 0969: 
 0970: 
+0971: cdef int vcf_skip_variant(InputStreamBase stream, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_vcf_skip_variant(struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("vcf_skip_variant", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_skip_variant", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 0972:     # skip to EOL or EOF
+0973:     while True:
  while (1) {
+0974:         if stream.c == 0:
    __pyx_t_1 = ((__pyx_v_stream->c == 0) != 0);
    if (__pyx_t_1) {
/* … */
    }
+0975:             context.state = VCFState.EOF
      __pyx_v_context->state = __pyx_e_5allel_3opt_11io_vcf_read_EOF;
+0976:             break
      goto __pyx_L4_break;
+0977:         elif stream.c == LF or stream.c == CR:
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_CR) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L6_bool_binop_done:;
    if (__pyx_t_1) {
/* … */
    }
+0978:             context.state = VCFState.EOL
      __pyx_v_context->state = __pyx_e_5allel_3opt_11io_vcf_read_EOL;
+0979:             break
      goto __pyx_L4_break;
 0980:         # advance input stream
+0981:         stream.advance()
    __pyx_t_3 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 981, __pyx_L1_error)
  }
  __pyx_L4_break:;
 0982: 
 0983: 
+0984: cdef class VCFChromPosParser(VCFFieldParserBase):
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFChromPosParser {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFieldParserBase __pyx_base;
  __Pyx_memviewslice chrom_memory;
  __Pyx_memviewslice pos_memory;
  int store_chrom;
  int store_pos;
  char *region_chrom;
  Py_ssize_t region_begin;
  Py_ssize_t region_end;
  PyArrayObject *chrom_values;
  PyArrayObject *pos_values;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFChromPosParser {
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFieldParserBase __pyx_base;
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFChromPosParser *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFChromPosParser;

 0985: 
 0986:     cdef:
 0987:         np.uint8_t[:] chrom_memory
 0988:         np.int32_t[:] pos_memory
 0989:         bint store_chrom
 0990:         bint store_pos
 0991:         char* region_chrom
 0992:         Py_ssize_t region_begin
 0993:         Py_ssize_t region_end
 0994:         np.ndarray chrom_values
 0995:         np.ndarray pos_values
 0996: 
+0997:     def __init__(self, dtype, store_chrom, store_pos, chunk_length, region_chrom,
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_17VCFChromPosParser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_17VCFChromPosParser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_dtype = 0;
  PyObject *__pyx_v_store_chrom = 0;
  PyObject *__pyx_v_store_pos = 0;
  PyObject *__pyx_v_chunk_length = 0;
  PyObject *__pyx_v_region_chrom = 0;
  PyObject *__pyx_v_region_begin = 0;
  PyObject *__pyx_v_region_end = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_dtype,&__pyx_n_s_store_chrom,&__pyx_n_s_store_pos,&__pyx_n_s_chunk_length,&__pyx_n_s_region_chrom,&__pyx_n_s_region_begin,&__pyx_n_s_region_end,0};
    PyObject* values[7] = {0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dtype)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_store_chrom)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 7, 7, 1); __PYX_ERR(0, 997, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_store_pos)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 7, 7, 2); __PYX_ERR(0, 997, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_chunk_length)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 7, 7, 3); __PYX_ERR(0, 997, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_region_chrom)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 7, 7, 4); __PYX_ERR(0, 997, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_region_begin)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 7, 7, 5); __PYX_ERR(0, 997, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_region_end)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 7, 7, 6); __PYX_ERR(0, 997, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 997, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 7) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
    }
    __pyx_v_dtype = values[0];
    __pyx_v_store_chrom = values[1];
    __pyx_v_store_pos = values[2];
    __pyx_v_chunk_length = values[3];
    __pyx_v_region_chrom = values[4];
    __pyx_v_region_begin = values[5];
    __pyx_v_region_end = values[6];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 7, 7, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 997, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFChromPosParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_17VCFChromPosParser___init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFChromPosParser *)__pyx_v_self), __pyx_v_dtype, __pyx_v_store_chrom, __pyx_v_store_pos, __pyx_v_chunk_length, __pyx_v_region_chrom, __pyx_v_region_begin, __pyx_v_region_end);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_17VCFChromPosParser___init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFChromPosParser *__pyx_v_self, PyObject *__pyx_v_dtype, PyObject *__pyx_v_store_chrom, PyObject *__pyx_v_store_pos, PyObject *__pyx_v_chunk_length, PyObject *__pyx_v_region_chrom, PyObject *__pyx_v_region_begin, PyObject *__pyx_v_region_end) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__", 0);
  __Pyx_INCREF(__pyx_v_dtype);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFChromPosParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_dtype);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 0998:                  region_begin, region_end):
+0999:         if store_chrom:
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_store_chrom); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 999, __pyx_L1_error)
  if (__pyx_t_1) {
/* … */
  }
+1000:             dtype = check_string_dtype(dtype)
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_check_string_dtype); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1000, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __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);
      }
    }
    if (!__pyx_t_4) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_dtype); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1000, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    } else {
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_3)) {
        PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_dtype};
        __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1000, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_GOTREF(__pyx_t_2);
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
        PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_dtype};
        __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1000, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_GOTREF(__pyx_t_2);
      } else
      #endif
      {
        __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1000, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
        __Pyx_INCREF(__pyx_v_dtype);
        __Pyx_GIVEREF(__pyx_v_dtype);
        PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_dtype);
        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1000, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      }
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF_SET(__pyx_v_dtype, __pyx_t_2);
    __pyx_t_2 = 0;
+1001:         super(VCFChromPosParser, self).__init__(key=b'CHROM', dtype=dtype, number=1, chunk_length=chunk_length)
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1001, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFChromPosParser));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFChromPosParser));
  PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFChromPosParser));
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self));
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1001, __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_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1001, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1001, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_key, __pyx_n_b_CHROM) < 0) __PYX_ERR(0, 1001, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_v_dtype) < 0) __PYX_ERR(0, 1001, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_number, __pyx_int_1) < 0) __PYX_ERR(0, 1001, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_chunk_length, __pyx_v_chunk_length) < 0) __PYX_ERR(0, 1001, __pyx_L1_error)
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1001, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+1002:         self.store_chrom = store_chrom
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_store_chrom); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1002, __pyx_L1_error)
  __pyx_v_self->store_chrom = __pyx_t_1;
+1003:         self.store_pos = store_pos
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_store_pos); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1003, __pyx_L1_error)
  __pyx_v_self->store_pos = __pyx_t_1;
+1004:         if region_chrom:
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_region_chrom); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1004, __pyx_L1_error)
  if (__pyx_t_1) {
/* … */
    goto __pyx_L4;
  }
+1005:             self.region_chrom = <char*> region_chrom
    __pyx_t_6 = __Pyx_PyObject_AsWritableString(__pyx_v_region_chrom); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(0, 1005, __pyx_L1_error)
    __pyx_v_self->region_chrom = ((char *)__pyx_t_6);
+1006:             self.region_begin = region_begin
    __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_v_region_begin); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1006, __pyx_L1_error)
    __pyx_v_self->region_begin = __pyx_t_7;
+1007:             self.region_end = region_end
    __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_v_region_end); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1007, __pyx_L1_error)
    __pyx_v_self->region_end = __pyx_t_7;
 1008:         else:
+1009:             self.region_chrom = NULL
  /*else*/ {
    __pyx_v_self->region_chrom = NULL;
+1010:             self.region_begin = 0
    __pyx_v_self->region_begin = 0;
+1011:             self.region_end = 0
    __pyx_v_self->region_end = 0;
  }
  __pyx_L4:;
 1012: 
+1013:     cdef int parse(self, InputStreamBase stream, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_17VCFChromPosParser_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFChromPosParser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_n;
  Py_ssize_t __pyx_v_cmp;
  Py_ssize_t __pyx_v_memory_offset;
  PyObject *__pyx_v_v = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFChromPosParser.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_v);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 1014:         cdef:
 1015:             Py_ssize_t i, n, cmp
 1016:             # index into memory view
 1017:             Py_ssize_t memory_offset
 1018: 
 1019:         # reset context
+1020:         CharVector_clear(&context.chrom)
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->chrom));
+1021:         context.pos = 0
  __pyx_v_context->pos = 0;
+1022:         context.ref_len = 0
  __pyx_v_context->ref_len = 0;
 1023: 
 1024:         # check for EOF early - important to handle file with no final line terminator
+1025:         if stream.c == 0:
  __pyx_t_1 = ((__pyx_v_stream->c == 0) != 0);
  if (__pyx_t_1) {
/* … */
  }
+1026:             context.state = VCFState.EOF
    __pyx_v_context->state = __pyx_e_5allel_3opt_11io_vcf_read_EOF;
+1027:             return 0
    __pyx_r = 0;
    goto __pyx_L0;
 1028: 
 1029:         # read chrom
+1030:         vcf_read_field(stream, context, &context.chrom)
  __pyx_t_2 = __pyx_f_5allel_3opt_11io_vcf_read_vcf_read_field(__pyx_v_stream, __pyx_v_context, (&__pyx_v_context->chrom)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 1030, __pyx_L1_error)
+1031:         if context.chrom.size == 0:
  __pyx_t_1 = ((__pyx_v_context->chrom.size == 0) != 0);
  if (__pyx_t_1) {
/* … */
  }
 1032:             # with gil:
+1033:             warn('empty CHROM', context)
    __pyx_t_2 = __pyx_f_5allel_3opt_11io_vcf_read_warn(__pyx_kp_s_empty_CHROM, __pyx_v_context); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 1033, __pyx_L1_error)
+1034:         CharVector_terminate(&context.chrom)
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_terminate((&__pyx_v_context->chrom));
 1035: 
 1036:         # read pos
+1037:         if context.state == VCFState.CHROM:
  __pyx_t_1 = ((__pyx_v_context->state == __pyx_e_5allel_3opt_11io_vcf_read_CHROM) != 0);
  if (__pyx_t_1) {
/* … */
  }
+1038:             context.state += 1
    __pyx_v_context->state = (__pyx_v_context->state + 1);
 1039:             # read pos
+1040:             vcf_read_field(stream, context, &context.temp)
    __pyx_t_2 = __pyx_f_5allel_3opt_11io_vcf_read_vcf_read_field(__pyx_v_stream, __pyx_v_context, (&__pyx_v_context->temp)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 1040, __pyx_L1_error)
+1041:             if context.temp.size == 0:
    __pyx_t_1 = ((__pyx_v_context->temp.size == 0) != 0);
    if (__pyx_t_1) {
/* … */
      goto __pyx_L6;
    }
 1042:                 # with gil:
+1043:                 warn('empty POS', context)
      __pyx_t_2 = __pyx_f_5allel_3opt_11io_vcf_read_warn(__pyx_kp_s_empty_POS, __pyx_v_context); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 1043, __pyx_L1_error)
 1044:             else:
+1045:                 vcf_strtol(&context.temp, context, &context.pos)
    /*else*/ {
      __pyx_t_3 = __pyx_f_5allel_3opt_11io_vcf_read_vcf_strtol((&__pyx_v_context->temp), __pyx_v_context, (&__pyx_v_context->pos)); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1L))) __PYX_ERR(0, 1045, __pyx_L1_error)
    }
    __pyx_L6:;
 1046: 
+1047:         if context.state == VCFState.POS:
  __pyx_t_1 = ((__pyx_v_context->state == __pyx_e_5allel_3opt_11io_vcf_read_POS) != 0);
  if (__pyx_t_1) {
/* … */
  }
+1048:             context.state += 1
    __pyx_v_context->state = (__pyx_v_context->state + 1);
 1049: 
 1050:         # handle region
+1051:         if self.region_chrom is not NULL:
  __pyx_t_1 = ((__pyx_v_self->region_chrom != NULL) != 0);
  if (__pyx_t_1) {
/* … */
  }
 1052: 
 1053:             # compare with region chrom
+1054:             cmp = strcmp(context.chrom.data, self.region_chrom)
    __pyx_v_cmp = strcmp(__pyx_v_context->chrom.data, __pyx_v_self->region_chrom);
 1055: 
+1056:             if cmp < 0:
    __pyx_t_1 = ((__pyx_v_cmp < 0) != 0);
    if (__pyx_t_1) {
/* … */
    }
+1057:                 vcf_skip_variant(stream, context)
      __pyx_t_2 = __pyx_f_5allel_3opt_11io_vcf_read_vcf_skip_variant(__pyx_v_stream, __pyx_v_context); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 1057, __pyx_L1_error)
+1058:                 return 0
      __pyx_r = 0;
      goto __pyx_L0;
 1059: 
+1060:             if cmp > 0:
    __pyx_t_1 = ((__pyx_v_cmp > 0) != 0);
    if (__pyx_t_1) {
/* … */
    }
 1061:                 # we're done
+1062:                 context.state = EOF
      __pyx_v_context->state = __pyx_e_5allel_3opt_11io_vcf_read_EOF;
+1063:                 return 0
      __pyx_r = 0;
      goto __pyx_L0;
 1064: 
+1065:             if self.region_begin > 0 and context.pos < self.region_begin:
    __pyx_t_4 = ((__pyx_v_self->region_begin > 0) != 0);
    if (__pyx_t_4) {
    } else {
      __pyx_t_1 = __pyx_t_4;
      goto __pyx_L12_bool_binop_done;
    }
    __pyx_t_4 = ((__pyx_v_context->pos < __pyx_v_self->region_begin) != 0);
    __pyx_t_1 = __pyx_t_4;
    __pyx_L12_bool_binop_done:;
    if (__pyx_t_1) {
/* … */
    }
+1066:                 vcf_skip_variant(stream, context)
      __pyx_t_2 = __pyx_f_5allel_3opt_11io_vcf_read_vcf_skip_variant(__pyx_v_stream, __pyx_v_context); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 1066, __pyx_L1_error)
+1067:                 return 0
      __pyx_r = 0;
      goto __pyx_L0;
 1068: 
+1069:             if 0 < self.region_end < context.pos:
    __pyx_t_1 = (0 < __pyx_v_self->region_end);
    if (__pyx_t_1) {
      __pyx_t_1 = (__pyx_v_self->region_end < __pyx_v_context->pos);
    }
    __pyx_t_4 = (__pyx_t_1 != 0);
    if (__pyx_t_4) {
/* … */
    }
 1070:                 # we're done
+1071:                 context.state = EOF
      __pyx_v_context->state = __pyx_e_5allel_3opt_11io_vcf_read_EOF;
+1072:                 return 0
      __pyx_r = 0;
      goto __pyx_L0;
 1073: 
 1074:         # setup context
+1075:         context.sample_index = 0
  __pyx_v_context->sample_index = 0;
+1076:         context.sample_field_index = 0
  __pyx_v_context->sample_field_index = 0;
+1077:         context.sample_output_index = -1
  __pyx_v_context->sample_output_index = -1L;
+1078:         context.variant_index += 1
  __pyx_v_context->variant_index = (__pyx_v_context->variant_index + 1);
+1079:         context.chunk_variant_index += 1
  __pyx_v_context->chunk_variant_index = (__pyx_v_context->chunk_variant_index + 1);
 1080: 
 1081:         # store in chunk
+1082:         if self.store_chrom:
  __pyx_t_4 = (__pyx_v_self->store_chrom != 0);
  if (__pyx_t_4) {
/* … */
  }
 1083: 
+1084:             if self.dtype.kind == 'S':
    __pyx_t_4 = ((__pyx_v_self->__pyx_base.dtype->kind == 'S') != 0);
    if (__pyx_t_4) {
/* … */
      goto __pyx_L16;
    }
 1085: 
 1086:                 # initialise memory index
+1087:                 memory_offset = context.chunk_variant_index * self.itemsize
      __pyx_v_memory_offset = (__pyx_v_context->chunk_variant_index * __pyx_v_self->__pyx_base.itemsize);
 1088: 
 1089:                 # figure out how many characters to store
+1090:                 n = min(context.chrom.size - 1, self.itemsize)
      __pyx_t_3 = __pyx_v_self->__pyx_base.itemsize;
      __pyx_t_5 = (__pyx_v_context->chrom.size - 1);
      if (((__pyx_t_3 < __pyx_t_5) != 0)) {
        __pyx_t_6 = __pyx_t_3;
      } else {
        __pyx_t_6 = __pyx_t_5;
      }
      __pyx_v_n = __pyx_t_6;
 1091: 
 1092:                 # store characters
+1093:                 for i in range(n):
      __pyx_t_6 = __pyx_v_n;
      for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_6; __pyx_t_3+=1) {
        __pyx_v_i = __pyx_t_3;
+1094:                     self.chrom_memory[memory_offset + i] = context.chrom.data[i]
        __pyx_t_7 = (__pyx_v_memory_offset + __pyx_v_i);
        *((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_self->chrom_memory.data + __pyx_t_7 * __pyx_v_self->chrom_memory.strides[0]) )) = (__pyx_v_context->chrom.data[__pyx_v_i]);
      }
 1095: 
 1096:             else:
 1097:                 # with gil:
 1098:                 # N.B., don't include terminating null byte
+1099:                 v = CharVector_to_pystr_sized(&context.chrom, context.chrom.size - 1)
    /*else*/ {
      __pyx_t_8 = __pyx_f_5allel_3opt_11io_vcf_read_CharVector_to_pystr_sized((&__pyx_v_context->chrom), (__pyx_v_context->chrom.size - 1)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1099, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_v_v = __pyx_t_8;
      __pyx_t_8 = 0;
+1100:                 self.chrom_values[context.chunk_variant_index] = v
      if (unlikely(__Pyx_SetItemInt(((PyObject *)__pyx_v_self->chrom_values), __pyx_v_context->chunk_variant_index, __pyx_v_v, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0) < 0)) __PYX_ERR(0, 1100, __pyx_L1_error)
    }
    __pyx_L16:;
 1101: 
+1102:         if self.store_pos:
  __pyx_t_4 = (__pyx_v_self->store_pos != 0);
  if (__pyx_t_4) {
/* … */
  }
+1103:             self.pos_memory[context.chunk_variant_index] = context.pos
    __pyx_t_9 = __pyx_v_context->pos;
    __pyx_t_10 = __pyx_v_context->chunk_variant_index;
    *((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_self->pos_memory.data + __pyx_t_10 * __pyx_v_self->pos_memory.strides[0]) )) = __pyx_t_9;
 1104: 
+1105:     cdef int malloc_chunk(self) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_17VCFChromPosParser_malloc_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFChromPosParser *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("malloc_chunk", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __PYX_XDEC_MEMVIEW(&__pyx_t_6, 1);
  __PYX_XDEC_MEMVIEW(&__pyx_t_7, 1);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFChromPosParser.malloc_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+1106:         if self.store_chrom:
  __pyx_t_1 = (__pyx_v_self->store_chrom != 0);
  if (__pyx_t_1) {
/* … */
  }
+1107:             self.chrom_values = np.zeros(self.chunk_length, dtype=self.dtype)
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1107, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1107, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.chunk_length); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1107, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1107, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
    __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1107, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->__pyx_base.dtype)) < 0) __PYX_ERR(0, 1107, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1107, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1107, __pyx_L1_error)
    __Pyx_GIVEREF(__pyx_t_5);
    __Pyx_GOTREF(__pyx_v_self->chrom_values);
    __Pyx_DECREF(((PyObject *)__pyx_v_self->chrom_values));
    __pyx_v_self->chrom_values = ((PyArrayObject *)__pyx_t_5);
    __pyx_t_5 = 0;
+1108:             if self.dtype.kind == 'S':
    __pyx_t_1 = ((__pyx_v_self->__pyx_base.dtype->kind == 'S') != 0);
    if (__pyx_t_1) {
/* … */
      goto __pyx_L4;
    }
+1109:                 self.chrom_memory = self.chrom_values.view('u1')
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->chrom_values), __pyx_n_s_view); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1109, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__26, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1109, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_uint8_t(__pyx_t_2);
      if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 1109, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __PYX_XDEC_MEMVIEW(&__pyx_v_self->chrom_memory, 0);
      __pyx_v_self->chrom_memory = __pyx_t_6;
      __pyx_t_6.memview = NULL;
      __pyx_t_6.data = NULL;
/* … */
  __pyx_tuple__26 = PyTuple_Pack(1, __pyx_n_s_u1); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(0, 1109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__26);
  __Pyx_GIVEREF(__pyx_tuple__26);
 1110:             else:
+1111:                 self.chrom_values.fill(u'')
    /*else*/ {
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->chrom_values), __pyx_n_s_fill); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1111, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__27, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1111, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __pyx_L4:;
/* … */
  __pyx_tuple__27 = PyTuple_Pack(1, __pyx_kp_u__8); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(0, 1111, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__27);
  __Pyx_GIVEREF(__pyx_tuple__27);
+1112:         if self.store_pos:
  __pyx_t_1 = (__pyx_v_self->store_pos != 0);
  if (__pyx_t_1) {
/* … */
  }
+1113:             self.pos_values = np.zeros(self.chunk_length, dtype='int32')
    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1113, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1113, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.chunk_length); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1113, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1113, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1113, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_n_s_int32) < 0) __PYX_ERR(0, 1113, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1113, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1113, __pyx_L1_error)
    __Pyx_GIVEREF(__pyx_t_3);
    __Pyx_GOTREF(__pyx_v_self->pos_values);
    __Pyx_DECREF(((PyObject *)__pyx_v_self->pos_values));
    __pyx_v_self->pos_values = ((PyArrayObject *)__pyx_t_3);
    __pyx_t_3 = 0;
+1114:             self.pos_memory = self.pos_values
    __pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_self->pos_values));
    if (unlikely(!__pyx_t_7.memview)) __PYX_ERR(0, 1114, __pyx_L1_error)
    __PYX_XDEC_MEMVIEW(&__pyx_v_self->pos_memory, 0);
    __pyx_v_self->pos_memory = __pyx_t_7;
    __pyx_t_7.memview = NULL;
    __pyx_t_7.data = NULL;
 1115: 
+1116:     cdef int make_chunk(self, chunk, limit=None) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_17VCFChromPosParser_make_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFChromPosParser *__pyx_v_self, PyObject *__pyx_v_chunk, struct __pyx_opt_args_5allel_3opt_11io_vcf_read_17VCFChromPosParser_make_chunk *__pyx_optional_args) {
  PyObject *__pyx_v_limit = ((PyObject *)Py_None);
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("make_chunk", 0);
  if (__pyx_optional_args) {
    if (__pyx_optional_args->__pyx_n > 0) {
      __pyx_v_limit = __pyx_optional_args->limit;
    }
  }
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFChromPosParser.make_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
struct __pyx_opt_args_5allel_3opt_11io_vcf_read_17VCFChromPosParser_make_chunk {
  int __pyx_n;
  PyObject *limit;
};
+1117:         if self.store_chrom:
  __pyx_t_1 = (__pyx_v_self->store_chrom != 0);
  if (__pyx_t_1) {
/* … */
  }
+1118:             chunk[CHROM_FIELD] = self.chrom_values[:limit]
    __pyx_t_2 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_v_self->chrom_values), 0, 0, NULL, &__pyx_v_limit, NULL, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1118, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_CHROM_FIELD); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1118, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (unlikely(PyObject_SetItem(__pyx_v_chunk, __pyx_t_3, __pyx_t_2) < 0)) __PYX_ERR(0, 1118, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+1119:         if self.store_pos:
  __pyx_t_1 = (__pyx_v_self->store_pos != 0);
  if (__pyx_t_1) {
/* … */
  }
+1120:             chunk[POS_FIELD] = self.pos_values[:limit]
    __pyx_t_2 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_v_self->pos_values), 0, 0, NULL, &__pyx_v_limit, NULL, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1120, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_POS_FIELD); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1120, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (unlikely(PyObject_SetItem(__pyx_v_chunk, __pyx_t_3, __pyx_t_2) < 0)) __PYX_ERR(0, 1120, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 1121: 
 1122: 
+1123: cdef class VCFIDStringParser(VCFFieldParserBase):
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFIDStringParser {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFieldParserBase __pyx_base;
  __Pyx_memviewslice memory;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFIDStringParser {
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFieldParserBase __pyx_base;
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFIDStringParser *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFIDStringParser;

 1124: 
 1125:     cdef np.uint8_t[:] memory
 1126: 
+1127:     def __init__(self, dtype, chunk_length):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_17VCFIDStringParser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_17VCFIDStringParser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_dtype = 0;
  PyObject *__pyx_v_chunk_length = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_dtype,&__pyx_n_s_chunk_length,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] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dtype)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_chunk_length)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 1127, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1127, __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_dtype = values[0];
    __pyx_v_chunk_length = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1127, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFIDStringParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_17VCFIDStringParser___init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFIDStringParser *)__pyx_v_self), __pyx_v_dtype, __pyx_v_chunk_length);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_17VCFIDStringParser___init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFIDStringParser *__pyx_v_self, PyObject *__pyx_v_dtype, PyObject *__pyx_v_chunk_length) {
  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_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFIDStringParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+1128:         super(VCFIDStringParser, self).__init__(key=b'ID', dtype=dtype, number=1, chunk_length=chunk_length)
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1128, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFIDStringParser));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFIDStringParser));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFIDStringParser));
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self));
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1128, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1128, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1128, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_key, __pyx_n_b_ID) < 0) __PYX_ERR(0, 1128, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_v_dtype) < 0) __PYX_ERR(0, 1128, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_number, __pyx_int_1) < 0) __PYX_ERR(0, 1128, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_chunk_length, __pyx_v_chunk_length) < 0) __PYX_ERR(0, 1128, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1128, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 1129: 
+1130:     cdef int parse(self, InputStreamBase stream, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_17VCFIDStringParser_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFIDStringParser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  Py_ssize_t __pyx_v_memory_index;
  Py_ssize_t __pyx_v_chars_stored;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFIDStringParser.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 1131:         cdef:
 1132:             # index into memory view
+1133:             Py_ssize_t memory_index = context.chunk_variant_index * self.itemsize
  __pyx_v_memory_index = (__pyx_v_context->chunk_variant_index * __pyx_v_self->__pyx_base.itemsize);
 1134:             # number of characters read into current value
+1135:             Py_ssize_t chars_stored = 0
  __pyx_v_chars_stored = 0;
 1136: 
+1137:         while True:
  while (1) {
 1138: 
+1139:             if stream.c == 0:
    __pyx_t_1 = ((__pyx_v_stream->c == 0) != 0);
    if (__pyx_t_1) {
/* … */
    }
+1140:                 context.state = VCFState.EOF
      __pyx_v_context->state = __pyx_e_5allel_3opt_11io_vcf_read_EOF;
+1141:                 break
      goto __pyx_L4_break;
 1142: 
+1143:             elif stream.c == LF or stream.c == CR:
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_CR) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L6_bool_binop_done:;
    if (__pyx_t_1) {
/* … */
    }
+1144:                 context.state = VCFState.EOL
      __pyx_v_context->state = __pyx_e_5allel_3opt_11io_vcf_read_EOL;
+1145:                 break
      goto __pyx_L4_break;
 1146: 
+1147:             elif stream.c == TAB:
    __pyx_t_1 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_TAB) != 0);
    if (__pyx_t_1) {
/* … */
    }
 1148:                 # advance input stream beyond tab
+1149:                 stream.advance()
      __pyx_t_3 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 1149, __pyx_L1_error)
 1150:                 # advance to next field
+1151:                 context.state += 1
      __pyx_v_context->state = (__pyx_v_context->state + 1);
+1152:                 break
      goto __pyx_L4_break;
 1153: 
+1154:             elif chars_stored < self.itemsize:
    __pyx_t_1 = ((__pyx_v_chars_stored < __pyx_v_self->__pyx_base.itemsize) != 0);
    if (__pyx_t_1) {
/* … */
    }
 1155:                 # store value
+1156:                 self.memory[memory_index] = stream.c
      __pyx_t_4 = __pyx_v_stream->c;
      __pyx_t_5 = __pyx_v_memory_index;
      *((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_self->memory.data + __pyx_t_5 * __pyx_v_self->memory.strides[0]) )) = __pyx_t_4;
 1157:                 # advance memory index
+1158:                 memory_index += 1
      __pyx_v_memory_index = (__pyx_v_memory_index + 1);
 1159:                 # advance number of characters stored
+1160:                 chars_stored += 1
      __pyx_v_chars_stored = (__pyx_v_chars_stored + 1);
 1161: 
 1162:             # advance input stream
+1163:             stream.advance()
    __pyx_t_3 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 1163, __pyx_L1_error)
  }
  __pyx_L4_break:;
 1164: 
+1165:     cdef int malloc_chunk(self) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_17VCFIDStringParser_malloc_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFIDStringParser *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("malloc_chunk", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFIDStringParser.malloc_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+1166:         self.values = np.zeros(self.chunk_length, dtype=self.dtype)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1166, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1166, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.chunk_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1166, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1166, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1166, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->__pyx_base.dtype)) < 0) __PYX_ERR(0, 1166, __pyx_L1_error)
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1166, __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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1166, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_4);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.values);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.values));
  __pyx_v_self->__pyx_base.values = ((PyArrayObject *)__pyx_t_4);
  __pyx_t_4 = 0;
+1167:         self.memory = self.values.view('u1')
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.values), __pyx_n_s_view); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1167, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__28, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1167, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_uint8_t(__pyx_t_1);
  if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 1167, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_XDEC_MEMVIEW(&__pyx_v_self->memory, 0);
  __pyx_v_self->memory = __pyx_t_5;
  __pyx_t_5.memview = NULL;
  __pyx_t_5.data = NULL;
/* … */
  __pyx_tuple__28 = PyTuple_Pack(1, __pyx_n_s_u1); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(0, 1167, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__28);
  __Pyx_GIVEREF(__pyx_tuple__28);
 1168: 
 1169: 
+1170: cdef class VCFIDObjectParser(VCFFieldParserBase):
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFIDObjectParser {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFieldParserBase __pyx_base;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFIDObjectParser {
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFieldParserBase __pyx_base;
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFIDObjectParser *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFIDObjectParser;

 1171: 
+1172:     def __init__(self, chunk_length):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_17VCFIDObjectParser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_17VCFIDObjectParser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_chunk_length = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_chunk_length,0};
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_chunk_length)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1172, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_chunk_length = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1172, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFIDObjectParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_17VCFIDObjectParser___init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFIDObjectParser *)__pyx_v_self), __pyx_v_chunk_length);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_17VCFIDObjectParser___init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFIDObjectParser *__pyx_v_self, PyObject *__pyx_v_chunk_length) {
  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_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFIDObjectParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+1173:         super(VCFIDObjectParser, self).__init__(key=b'ID', dtype=np.dtype('object'), number=1,
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1173, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFIDObjectParser));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFIDObjectParser));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFIDObjectParser));
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self));
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1173, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1173, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1173, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_key, __pyx_n_b_ID) < 0) __PYX_ERR(0, 1173, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__29, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1173, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_t_3) < 0) __PYX_ERR(0, 1173, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_number, __pyx_int_1) < 0) __PYX_ERR(0, 1173, __pyx_L1_error)
/* … */
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1173, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* … */
  __pyx_tuple__29 = PyTuple_Pack(1, __pyx_n_s_object); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(0, 1173, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__29);
  __Pyx_GIVEREF(__pyx_tuple__29);
+1174:                                                 chunk_length=chunk_length)
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_chunk_length, __pyx_v_chunk_length) < 0) __PYX_ERR(0, 1173, __pyx_L1_error)
 1175: 
+1176:     cdef int parse(self, InputStreamBase stream, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_17VCFIDObjectParser_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFIDObjectParser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  PyObject *__pyx_v_v = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFIDObjectParser.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_v);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 1177: 
+1178:         vcf_read_field(stream, context, &context.temp)
  __pyx_t_1 = __pyx_f_5allel_3opt_11io_vcf_read_vcf_read_field(__pyx_v_stream, __pyx_v_context, (&__pyx_v_context->temp)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 1178, __pyx_L1_error)
 1179: 
 1180:         # with gil:
+1181:         v = CharVector_to_pystr(&context.temp)
  __pyx_t_2 = __pyx_f_5allel_3opt_11io_vcf_read_CharVector_to_pystr((&__pyx_v_context->temp)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1181, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_v = __pyx_t_2;
  __pyx_t_2 = 0;
+1182:         self.values[context.chunk_variant_index] = v
  if (unlikely(__Pyx_SetItemInt(((PyObject *)__pyx_v_self->__pyx_base.values), __pyx_v_context->chunk_variant_index, __pyx_v_v, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0) < 0)) __PYX_ERR(0, 1182, __pyx_L1_error)
 1183: 
+1184:         if context.state == VCFState.ID:
  __pyx_t_3 = ((__pyx_v_context->state == __pyx_e_5allel_3opt_11io_vcf_read_ID) != 0);
  if (__pyx_t_3) {
/* … */
  }
+1185:             context.state += 1
    __pyx_v_context->state = (__pyx_v_context->state + 1);
 1186: 
+1187:     cdef int malloc_chunk(self) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_17VCFIDObjectParser_malloc_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFIDObjectParser *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("malloc_chunk", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFIDObjectParser.malloc_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+1188:         self.values = np.empty(self.chunk_length, dtype=self.dtype)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1188, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1188, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.chunk_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1188, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1188, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1188, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->__pyx_base.dtype)) < 0) __PYX_ERR(0, 1188, __pyx_L1_error)
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1188, __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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1188, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_4);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.values);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.values));
  __pyx_v_self->__pyx_base.values = ((PyArrayObject *)__pyx_t_4);
  __pyx_t_4 = 0;
+1189:         self.values.fill(u'')
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.values), __pyx_n_s_fill); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1189, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__30, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1189, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* … */
  __pyx_tuple__30 = PyTuple_Pack(1, __pyx_kp_u__8); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(0, 1189, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__30);
  __Pyx_GIVEREF(__pyx_tuple__30);
 1190: 
 1191: 
+1192: cdef class VCFRefStringParser(VCFFieldParserBase):
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFRefStringParser {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFieldParserBase __pyx_base;
  __Pyx_memviewslice memory;
  int store;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFRefStringParser {
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFieldParserBase __pyx_base;
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFRefStringParser *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFRefStringParser;

 1193: 
 1194:     cdef:
 1195:         np.uint8_t[:] memory
 1196:         bint store
 1197: 
+1198:     def __init__(self, dtype, chunk_length, store):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_18VCFRefStringParser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_18VCFRefStringParser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_dtype = 0;
  PyObject *__pyx_v_chunk_length = 0;
  PyObject *__pyx_v_store = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_dtype,&__pyx_n_s_chunk_length,&__pyx_n_s_store,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dtype)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_chunk_length)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, 1); __PYX_ERR(0, 1198, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_store)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, 2); __PYX_ERR(0, 1198, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1198, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_dtype = values[0];
    __pyx_v_chunk_length = values[1];
    __pyx_v_store = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1198, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFRefStringParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_18VCFRefStringParser___init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFRefStringParser *)__pyx_v_self), __pyx_v_dtype, __pyx_v_chunk_length, __pyx_v_store);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_18VCFRefStringParser___init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFRefStringParser *__pyx_v_self, PyObject *__pyx_v_dtype, PyObject *__pyx_v_chunk_length, PyObject *__pyx_v_store) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__", 0);
  __Pyx_INCREF(__pyx_v_dtype);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFRefStringParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_dtype);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+1199:         if store:
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_store); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1199, __pyx_L1_error)
  if (__pyx_t_1) {
/* … */
  }
+1200:             dtype = check_string_dtype(dtype)
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_check_string_dtype); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1200, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __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);
      }
    }
    if (!__pyx_t_4) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_dtype); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1200, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    } else {
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_3)) {
        PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_dtype};
        __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1200, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_GOTREF(__pyx_t_2);
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
        PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_dtype};
        __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1200, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_GOTREF(__pyx_t_2);
      } else
      #endif
      {
        __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1200, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
        __Pyx_INCREF(__pyx_v_dtype);
        __Pyx_GIVEREF(__pyx_v_dtype);
        PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_dtype);
        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1200, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      }
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF_SET(__pyx_v_dtype, __pyx_t_2);
    __pyx_t_2 = 0;
+1201:         super(VCFRefStringParser, self).__init__(key=b'REF', dtype=dtype, number=1, chunk_length=chunk_length)
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1201, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFRefStringParser));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFRefStringParser));
  PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFRefStringParser));
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self));
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1201, __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_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1201, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1201, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_key, __pyx_n_b_REF) < 0) __PYX_ERR(0, 1201, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_v_dtype) < 0) __PYX_ERR(0, 1201, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_number, __pyx_int_1) < 0) __PYX_ERR(0, 1201, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_chunk_length, __pyx_v_chunk_length) < 0) __PYX_ERR(0, 1201, __pyx_L1_error)
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1201, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+1202:         self.store = store
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_store); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1202, __pyx_L1_error)
  __pyx_v_self->store = __pyx_t_1;
 1203: 
+1204:     cdef int parse(self, InputStreamBase stream, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_18VCFRefStringParser_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFRefStringParser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  Py_ssize_t __pyx_v_memory_index;
  Py_ssize_t __pyx_v_chars_stored;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFRefStringParser.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 1205:         cdef:
 1206:             # index into memory view
+1207:             Py_ssize_t memory_index = context.chunk_variant_index * self.itemsize
  __pyx_v_memory_index = (__pyx_v_context->chunk_variant_index * __pyx_v_self->__pyx_base.itemsize);
 1208:             # number of characters read into current value
+1209:             Py_ssize_t chars_stored = 0
  __pyx_v_chars_stored = 0;
 1210: 
+1211:         while True:
  while (1) {
 1212: 
+1213:             if stream.c == 0:
    __pyx_t_1 = ((__pyx_v_stream->c == 0) != 0);
    if (__pyx_t_1) {
/* … */
    }
+1214:                 context.state = VCFState.EOF
      __pyx_v_context->state = __pyx_e_5allel_3opt_11io_vcf_read_EOF;
+1215:                 break
      goto __pyx_L4_break;
 1216: 
+1217:             elif stream.c == LF or stream.c == CR:
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_CR) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L6_bool_binop_done:;
    if (__pyx_t_1) {
/* … */
    }
+1218:                 context.state = VCFState.EOL
      __pyx_v_context->state = __pyx_e_5allel_3opt_11io_vcf_read_EOL;
+1219:                 break
      goto __pyx_L4_break;
 1220: 
+1221:             elif stream.c == TAB:
    __pyx_t_1 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_TAB) != 0);
    if (__pyx_t_1) {
/* … */
    }
 1222:                 # advance input stream beyond tab
+1223:                 stream.advance()
      __pyx_t_3 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 1223, __pyx_L1_error)
 1224:                 # advance to next field
+1225:                 context.state += 1
      __pyx_v_context->state = (__pyx_v_context->state + 1);
+1226:                 break
      goto __pyx_L4_break;
 1227: 
 1228:             else:
+1229:                 if stream.c != PERIOD:
    /*else*/ {
      __pyx_t_1 = ((__pyx_v_stream->c != __pyx_v_5allel_3opt_11io_vcf_read_PERIOD) != 0);
      if (__pyx_t_1) {
/* … */
      }
+1230:                     context.ref_len += 1
        __pyx_v_context->ref_len = (__pyx_v_context->ref_len + 1);
+1231:                 if self.store and chars_stored < self.itemsize:
      __pyx_t_2 = (__pyx_v_self->store != 0);
      if (__pyx_t_2) {
      } else {
        __pyx_t_1 = __pyx_t_2;
        goto __pyx_L10_bool_binop_done;
      }
      __pyx_t_2 = ((__pyx_v_chars_stored < __pyx_v_self->__pyx_base.itemsize) != 0);
      __pyx_t_1 = __pyx_t_2;
      __pyx_L10_bool_binop_done:;
      if (__pyx_t_1) {
/* … */
      }
    }
 1232:                     # store value
+1233:                     self.memory[memory_index] = stream.c
        __pyx_t_4 = __pyx_v_stream->c;
        __pyx_t_5 = __pyx_v_memory_index;
        *((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_self->memory.data + __pyx_t_5 * __pyx_v_self->memory.strides[0]) )) = __pyx_t_4;
 1234:                     # advance number of characters stored
+1235:                     chars_stored += 1
        __pyx_v_chars_stored = (__pyx_v_chars_stored + 1);
 1236:                     # advance memory index
+1237:                     memory_index += 1
        __pyx_v_memory_index = (__pyx_v_memory_index + 1);
 1238: 
 1239:             # advance input stream
+1240:             stream.advance()
    __pyx_t_3 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 1240, __pyx_L1_error)
  }
  __pyx_L4_break:;
 1241: 
+1242:     cdef int malloc_chunk(self) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_18VCFRefStringParser_malloc_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFRefStringParser *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("malloc_chunk", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __PYX_XDEC_MEMVIEW(&__pyx_t_6, 1);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFRefStringParser.malloc_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+1243:         if self.store:
  __pyx_t_1 = (__pyx_v_self->store != 0);
  if (__pyx_t_1) {
/* … */
  }
+1244:             self.values = np.zeros(self.chunk_length, dtype=self.dtype)
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1244, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1244, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.chunk_length); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1244, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1244, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
    __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1244, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->__pyx_base.dtype)) < 0) __PYX_ERR(0, 1244, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1244, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1244, __pyx_L1_error)
    __Pyx_GIVEREF(__pyx_t_5);
    __Pyx_GOTREF(__pyx_v_self->__pyx_base.values);
    __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.values));
    __pyx_v_self->__pyx_base.values = ((PyArrayObject *)__pyx_t_5);
    __pyx_t_5 = 0;
+1245:             self.memory = self.values.view('u1')
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.values), __pyx_n_s_view); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1245, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__31, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1245, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_uint8_t(__pyx_t_2);
    if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 1245, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_XDEC_MEMVIEW(&__pyx_v_self->memory, 0);
    __pyx_v_self->memory = __pyx_t_6;
    __pyx_t_6.memview = NULL;
    __pyx_t_6.data = NULL;
/* … */
  __pyx_tuple__31 = PyTuple_Pack(1, __pyx_n_s_u1); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(0, 1245, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__31);
  __Pyx_GIVEREF(__pyx_tuple__31);
 1246: 
+1247:     cdef int make_chunk(self, chunk, limit=None) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_18VCFRefStringParser_make_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFRefStringParser *__pyx_v_self, PyObject *__pyx_v_chunk, struct __pyx_opt_args_5allel_3opt_11io_vcf_read_18VCFRefStringParser_make_chunk *__pyx_optional_args) {
  PyObject *__pyx_v_limit = ((PyObject *)Py_None);
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("make_chunk", 0);
  if (__pyx_optional_args) {
    if (__pyx_optional_args->__pyx_n > 0) {
      __pyx_v_limit = __pyx_optional_args->limit;
    }
  }
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFRefStringParser.make_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
struct __pyx_opt_args_5allel_3opt_11io_vcf_read_18VCFRefStringParser_make_chunk {
  int __pyx_n;
  PyObject *limit;
};
+1248:         if self.store:
  __pyx_t_1 = (__pyx_v_self->store != 0);
  if (__pyx_t_1) {
/* … */
  }
+1249:             chunk[REF_FIELD] = self.values[:limit]
    __pyx_t_2 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_v_self->__pyx_base.values), 0, 0, NULL, &__pyx_v_limit, NULL, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1249, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_REF_FIELD); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1249, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (unlikely(PyObject_SetItem(__pyx_v_chunk, __pyx_t_3, __pyx_t_2) < 0)) __PYX_ERR(0, 1249, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 1250: 
 1251: 
+1252: cdef class VCFRefObjectParser(VCFFieldParserBase):
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFRefObjectParser {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFieldParserBase __pyx_base;
  int store;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFRefObjectParser {
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFieldParserBase __pyx_base;
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFRefObjectParser *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFRefObjectParser;

 1253: 
 1254:     cdef:
 1255:         bint store
 1256: 
+1257:     def __init__(self, chunk_length, store):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_18VCFRefObjectParser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_18VCFRefObjectParser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_chunk_length = 0;
  PyObject *__pyx_v_store = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_chunk_length,&__pyx_n_s_store,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] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_chunk_length)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_store)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 1257, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1257, __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_chunk_length = values[0];
    __pyx_v_store = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1257, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFRefObjectParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_18VCFRefObjectParser___init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFRefObjectParser *)__pyx_v_self), __pyx_v_chunk_length, __pyx_v_store);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_18VCFRefObjectParser___init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFRefObjectParser *__pyx_v_self, PyObject *__pyx_v_chunk_length, PyObject *__pyx_v_store) {
  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_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFRefObjectParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+1258:         super(VCFRefObjectParser, self).__init__(key=b'REF', dtype=np.dtype('object'), number=1, chunk_length=chunk_length)
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1258, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFRefObjectParser));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFRefObjectParser));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFRefObjectParser));
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self));
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1258, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1258, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1258, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_key, __pyx_n_b_REF) < 0) __PYX_ERR(0, 1258, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__32, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1258, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_t_3) < 0) __PYX_ERR(0, 1258, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_number, __pyx_int_1) < 0) __PYX_ERR(0, 1258, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_chunk_length, __pyx_v_chunk_length) < 0) __PYX_ERR(0, 1258, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1258, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* … */
  __pyx_tuple__32 = PyTuple_Pack(1, __pyx_n_s_object); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(0, 1258, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__32);
  __Pyx_GIVEREF(__pyx_tuple__32);
+1259:         self.store = store
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_store); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1259, __pyx_L1_error)
  __pyx_v_self->store = __pyx_t_4;
 1260: 
+1261:     cdef int parse(self, InputStreamBase stream, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_18VCFRefObjectParser_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFRefObjectParser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  PyObject *__pyx_v_v = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFRefObjectParser.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_v);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 1262: 
+1263:         vcf_read_field(stream, context, &context.temp)
  __pyx_t_1 = __pyx_f_5allel_3opt_11io_vcf_read_vcf_read_field(__pyx_v_stream, __pyx_v_context, (&__pyx_v_context->temp)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 1263, __pyx_L1_error)
 1264: 
 1265:         # with gil:
+1266:         v = CharVector_to_pystr(&context.temp)
  __pyx_t_2 = __pyx_f_5allel_3opt_11io_vcf_read_CharVector_to_pystr((&__pyx_v_context->temp)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1266, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_v = __pyx_t_2;
  __pyx_t_2 = 0;
+1267:         if v != '.':
  __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_v_v, __pyx_kp_s__33, Py_NE)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1267, __pyx_L1_error)
  if (__pyx_t_3) {
/* … */
  }
+1268:             context.ref_len = len(v)
    __pyx_t_4 = PyObject_Length(__pyx_v_v); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1268, __pyx_L1_error)
    __pyx_v_context->ref_len = __pyx_t_4;
+1269:         if self.store:
  __pyx_t_3 = (__pyx_v_self->store != 0);
  if (__pyx_t_3) {
/* … */
  }
+1270:             self.values[context.chunk_variant_index] = v
    if (unlikely(__Pyx_SetItemInt(((PyObject *)__pyx_v_self->__pyx_base.values), __pyx_v_context->chunk_variant_index, __pyx_v_v, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0) < 0)) __PYX_ERR(0, 1270, __pyx_L1_error)
 1271: 
+1272:         if context.state == VCFState.REF:
  __pyx_t_3 = ((__pyx_v_context->state == __pyx_e_5allel_3opt_11io_vcf_read_REF) != 0);
  if (__pyx_t_3) {
/* … */
  }
+1273:             context.state += 1
    __pyx_v_context->state = (__pyx_v_context->state + 1);
 1274: 
+1275:     cdef int malloc_chunk(self) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_18VCFRefObjectParser_malloc_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFRefObjectParser *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("malloc_chunk", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFRefObjectParser.malloc_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+1276:         if self.store:
  __pyx_t_1 = (__pyx_v_self->store != 0);
  if (__pyx_t_1) {
/* … */
  }
+1277:             self.values = np.empty(self.chunk_length, dtype=self.dtype)
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1277, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1277, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.chunk_length); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1277, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1277, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
    __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1277, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->__pyx_base.dtype)) < 0) __PYX_ERR(0, 1277, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1277, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1277, __pyx_L1_error)
    __Pyx_GIVEREF(__pyx_t_5);
    __Pyx_GOTREF(__pyx_v_self->__pyx_base.values);
    __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.values));
    __pyx_v_self->__pyx_base.values = ((PyArrayObject *)__pyx_t_5);
    __pyx_t_5 = 0;
+1278:             self.values.fill(u'')
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.values), __pyx_n_s_fill); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1278, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__34, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1278, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
/* … */
  __pyx_tuple__34 = PyTuple_Pack(1, __pyx_kp_u__8); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(0, 1278, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__34);
  __Pyx_GIVEREF(__pyx_tuple__34);
 1279: 
+1280:     cdef int make_chunk(self, chunk, limit=None) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_18VCFRefObjectParser_make_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFRefObjectParser *__pyx_v_self, PyObject *__pyx_v_chunk, struct __pyx_opt_args_5allel_3opt_11io_vcf_read_18VCFRefObjectParser_make_chunk *__pyx_optional_args) {
  PyObject *__pyx_v_limit = ((PyObject *)Py_None);
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("make_chunk", 0);
  if (__pyx_optional_args) {
    if (__pyx_optional_args->__pyx_n > 0) {
      __pyx_v_limit = __pyx_optional_args->limit;
    }
  }
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFRefObjectParser.make_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
struct __pyx_opt_args_5allel_3opt_11io_vcf_read_18VCFRefObjectParser_make_chunk {
  int __pyx_n;
  PyObject *limit;
};
+1281:         if self.store:
  __pyx_t_1 = (__pyx_v_self->store != 0);
  if (__pyx_t_1) {
/* … */
  }
+1282:             chunk[REF_FIELD] = self.values[:limit]
    __pyx_t_2 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_v_self->__pyx_base.values), 0, 0, NULL, &__pyx_v_limit, NULL, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1282, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_REF_FIELD); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1282, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (unlikely(PyObject_SetItem(__pyx_v_chunk, __pyx_t_3, __pyx_t_2) < 0)) __PYX_ERR(0, 1282, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 1283: 
 1284: 
+1285: cdef class VCFAltStringParser(VCFFieldParserBase):
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFAltStringParser {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFieldParserBase __pyx_base;
  __Pyx_memviewslice memory;
  __Pyx_memviewslice numalt_memory;
  __Pyx_memviewslice svlen_memory;
  __Pyx_memviewslice is_snp_memory;
  PyArrayObject *numalt_values;
  PyArrayObject *svlen_values;
  PyArrayObject *is_snp_values;
  int store_alt;
  int store_numalt;
  int store_svlen;
  int store_is_snp;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFAltStringParser {
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFieldParserBase __pyx_base;
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFAltStringParser *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFAltStringParser;

 1286: 
 1287:     cdef:
 1288:         np.uint8_t[:] memory
 1289:         np.int32_t[:] numalt_memory
 1290:         np.int32_t[:, :] svlen_memory
 1291:         np.uint8_t[:] is_snp_memory
 1292:         np.ndarray numalt_values
 1293:         np.ndarray svlen_values
 1294:         np.ndarray is_snp_values
 1295:         bint store_alt
 1296:         bint store_numalt
 1297:         bint store_svlen
 1298:         bint store_is_snp
 1299: 
+1300:     def __init__(self, dtype, number, chunk_length, store_alt, store_numalt, store_svlen,
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_18VCFAltStringParser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_18VCFAltStringParser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_dtype = 0;
  PyObject *__pyx_v_number = 0;
  PyObject *__pyx_v_chunk_length = 0;
  PyObject *__pyx_v_store_alt = 0;
  PyObject *__pyx_v_store_numalt = 0;
  PyObject *__pyx_v_store_svlen = 0;
  PyObject *__pyx_v_store_is_snp = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_dtype,&__pyx_n_s_number,&__pyx_n_s_chunk_length,&__pyx_n_s_store_alt,&__pyx_n_s_store_numalt,&__pyx_n_s_store_svlen,&__pyx_n_s_store_is_snp,0};
    PyObject* values[7] = {0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dtype)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_number)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 7, 7, 1); __PYX_ERR(0, 1300, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_chunk_length)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 7, 7, 2); __PYX_ERR(0, 1300, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_store_alt)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 7, 7, 3); __PYX_ERR(0, 1300, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_store_numalt)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 7, 7, 4); __PYX_ERR(0, 1300, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_store_svlen)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 7, 7, 5); __PYX_ERR(0, 1300, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_store_is_snp)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 7, 7, 6); __PYX_ERR(0, 1300, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1300, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 7) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
    }
    __pyx_v_dtype = values[0];
    __pyx_v_number = values[1];
    __pyx_v_chunk_length = values[2];
    __pyx_v_store_alt = values[3];
    __pyx_v_store_numalt = values[4];
    __pyx_v_store_svlen = values[5];
    __pyx_v_store_is_snp = values[6];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 7, 7, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1300, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFAltStringParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_18VCFAltStringParser___init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFAltStringParser *)__pyx_v_self), __pyx_v_dtype, __pyx_v_number, __pyx_v_chunk_length, __pyx_v_store_alt, __pyx_v_store_numalt, __pyx_v_store_svlen, __pyx_v_store_is_snp);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_18VCFAltStringParser___init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFAltStringParser *__pyx_v_self, PyObject *__pyx_v_dtype, PyObject *__pyx_v_number, PyObject *__pyx_v_chunk_length, PyObject *__pyx_v_store_alt, PyObject *__pyx_v_store_numalt, PyObject *__pyx_v_store_svlen, PyObject *__pyx_v_store_is_snp) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__", 0);
  __Pyx_INCREF(__pyx_v_dtype);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFAltStringParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_dtype);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 1301:                  store_is_snp):
+1302:         if store_alt:
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_store_alt); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1302, __pyx_L1_error)
  if (__pyx_t_1) {
/* … */
  }
+1303:             dtype = check_string_dtype(dtype)
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_check_string_dtype); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1303, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __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);
      }
    }
    if (!__pyx_t_4) {
      __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_dtype); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1303, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    } else {
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_3)) {
        PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_dtype};
        __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1303, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_GOTREF(__pyx_t_2);
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
        PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_dtype};
        __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1303, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_GOTREF(__pyx_t_2);
      } else
      #endif
      {
        __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1303, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
        __Pyx_INCREF(__pyx_v_dtype);
        __Pyx_GIVEREF(__pyx_v_dtype);
        PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_dtype);
        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1303, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      }
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF_SET(__pyx_v_dtype, __pyx_t_2);
    __pyx_t_2 = 0;
+1304:         super(VCFAltStringParser, self).__init__(key=b'ALT', dtype=dtype, number=number,
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFAltStringParser));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFAltStringParser));
  PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFAltStringParser));
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self));
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1304, __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_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_key, __pyx_n_b_ALT) < 0) __PYX_ERR(0, 1304, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_v_dtype) < 0) __PYX_ERR(0, 1304, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_number, __pyx_v_number) < 0) __PYX_ERR(0, 1304, __pyx_L1_error)
/* … */
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+1305:                                                  chunk_length=chunk_length)
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_chunk_length, __pyx_v_chunk_length) < 0) __PYX_ERR(0, 1304, __pyx_L1_error)
+1306:         self.store_alt = store_alt
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_store_alt); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1306, __pyx_L1_error)
  __pyx_v_self->store_alt = __pyx_t_1;
+1307:         self.store_numalt = store_numalt
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_store_numalt); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1307, __pyx_L1_error)
  __pyx_v_self->store_numalt = __pyx_t_1;
+1308:         self.store_svlen = store_svlen
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_store_svlen); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1308, __pyx_L1_error)
  __pyx_v_self->store_svlen = __pyx_t_1;
+1309:         self.store_is_snp = store_is_snp
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_store_is_snp); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1309, __pyx_L1_error)
  __pyx_v_self->store_is_snp = __pyx_t_1;
 1310: 
+1311:     cdef int parse(self, InputStreamBase stream, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_18VCFAltStringParser_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFAltStringParser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  Py_ssize_t __pyx_v_alt_index;
  Py_ssize_t __pyx_v_memory_offset;
  Py_ssize_t __pyx_v_memory_index;
  Py_ssize_t __pyx_v_chars_stored;
  Py_ssize_t __pyx_v_alt_len;
  int __pyx_v_is_snp;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFAltStringParser.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 1312:         cdef:
 1313:             # index of alt values
+1314:             Py_ssize_t alt_index = 0
  __pyx_v_alt_index = 0;
 1315:             # index into memory view
 1316:             Py_ssize_t memory_offset, memory_index
 1317:             # number of characters read into current value
+1318:             Py_ssize_t chars_stored = 0
  __pyx_v_chars_stored = 0;
 1319:             # size of alt allel
+1320:             Py_ssize_t alt_len = 0
  __pyx_v_alt_len = 0;
 1321:             # is the variant a SNP?
+1322:             bint is_snp = context.ref_len == 1
  __pyx_v_is_snp = (__pyx_v_context->ref_len == 1);
 1323: 
 1324:         # bail out early for missing value
+1325:         if stream.c == PERIOD:
  __pyx_t_1 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_PERIOD) != 0);
  if (__pyx_t_1) {
/* … */
  }
 1326:             # treat period as missing value, regardless of what comes next
+1327:             vcf_parse_missing(stream, context)
    __pyx_t_2 = __pyx_f_5allel_3opt_11io_vcf_read_vcf_parse_missing(__pyx_v_stream, __pyx_v_context); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 1327, __pyx_L1_error)
+1328:             return 0
    __pyx_r = 0;
    goto __pyx_L0;
 1329: 
 1330:         # bail out early for empty value
+1331:         if stream.c == TAB:
  __pyx_t_1 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_TAB) != 0);
  if (__pyx_t_1) {
/* … */
  }
+1332:             stream.advance()
    __pyx_t_2 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 1332, __pyx_L1_error)
+1333:             context.state += 1
    __pyx_v_context->state = (__pyx_v_context->state + 1);
+1334:             return 0
    __pyx_r = 0;
    goto __pyx_L0;
 1335: 
 1336:         # initialise memory offset and index
+1337:         memory_offset = context.chunk_variant_index * self.itemsize * self.number
  __pyx_v_memory_offset = ((__pyx_v_context->chunk_variant_index * __pyx_v_self->__pyx_base.itemsize) * __pyx_v_self->__pyx_base.number);
+1338:         memory_index = memory_offset
  __pyx_v_memory_index = __pyx_v_memory_offset;
 1339: 
+1340:         while True:
  while (1) {
 1341: 
+1342:             if stream.c == 0:
    __pyx_t_1 = ((__pyx_v_stream->c == 0) != 0);
    if (__pyx_t_1) {
/* … */
    }
+1343:                 is_snp = is_snp and alt_len == 1
      __pyx_t_3 = (__pyx_v_is_snp != 0);
      if (__pyx_t_3) {
      } else {
        __pyx_t_1 = __pyx_t_3;
        goto __pyx_L8_bool_binop_done;
      }
      __pyx_t_3 = ((__pyx_v_alt_len == 1) != 0);
      __pyx_t_1 = __pyx_t_3;
      __pyx_L8_bool_binop_done:;
      __pyx_v_is_snp = __pyx_t_1;
+1344:                 if self.store_svlen and alt_index < self.number:
      __pyx_t_3 = (__pyx_v_self->store_svlen != 0);
      if (__pyx_t_3) {
      } else {
        __pyx_t_1 = __pyx_t_3;
        goto __pyx_L11_bool_binop_done;
      }
      __pyx_t_3 = ((__pyx_v_alt_index < __pyx_v_self->__pyx_base.number) != 0);
      __pyx_t_1 = __pyx_t_3;
      __pyx_L11_bool_binop_done:;
      if (__pyx_t_1) {
/* … */
      }
+1345:                     self.svlen_memory[context.chunk_variant_index, alt_index] = \
        __pyx_t_4 = __pyx_v_context->chunk_variant_index;
        __pyx_t_5 = __pyx_v_alt_index;
        *((__pyx_t_5numpy_int32_t *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_self->svlen_memory.data + __pyx_t_4 * __pyx_v_self->svlen_memory.strides[0]) ) + __pyx_t_5 * __pyx_v_self->svlen_memory.strides[1]) )) = (__pyx_v_alt_len - __pyx_v_context->ref_len);
 1346:                         alt_len - context.ref_len
+1347:                 context.state = VCFState.EOF
      __pyx_v_context->state = __pyx_e_5allel_3opt_11io_vcf_read_EOF;
+1348:                 break
      goto __pyx_L6_break;
 1349: 
+1350:             elif stream.c == LF or stream.c == CR:
    __pyx_t_3 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_1 = __pyx_t_3;
      goto __pyx_L13_bool_binop_done;
    }
    __pyx_t_3 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_CR) != 0);
    __pyx_t_1 = __pyx_t_3;
    __pyx_L13_bool_binop_done:;
    if (__pyx_t_1) {
/* … */
    }
+1351:                 is_snp = is_snp and alt_len == 1
      __pyx_t_3 = (__pyx_v_is_snp != 0);
      if (__pyx_t_3) {
      } else {
        __pyx_t_1 = __pyx_t_3;
        goto __pyx_L15_bool_binop_done;
      }
      __pyx_t_3 = ((__pyx_v_alt_len == 1) != 0);
      __pyx_t_1 = __pyx_t_3;
      __pyx_L15_bool_binop_done:;
      __pyx_v_is_snp = __pyx_t_1;
+1352:                 if self.store_svlen and alt_index < self.number:
      __pyx_t_3 = (__pyx_v_self->store_svlen != 0);
      if (__pyx_t_3) {
      } else {
        __pyx_t_1 = __pyx_t_3;
        goto __pyx_L18_bool_binop_done;
      }
      __pyx_t_3 = ((__pyx_v_alt_index < __pyx_v_self->__pyx_base.number) != 0);
      __pyx_t_1 = __pyx_t_3;
      __pyx_L18_bool_binop_done:;
      if (__pyx_t_1) {
/* … */
      }
+1353:                     self.svlen_memory[context.chunk_variant_index, alt_index] = \
        __pyx_t_6 = __pyx_v_context->chunk_variant_index;
        __pyx_t_7 = __pyx_v_alt_index;
        *((__pyx_t_5numpy_int32_t *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_self->svlen_memory.data + __pyx_t_6 * __pyx_v_self->svlen_memory.strides[0]) ) + __pyx_t_7 * __pyx_v_self->svlen_memory.strides[1]) )) = (__pyx_v_alt_len - __pyx_v_context->ref_len);
 1354:                         alt_len - context.ref_len
+1355:                 context.state = VCFState.EOL
      __pyx_v_context->state = __pyx_e_5allel_3opt_11io_vcf_read_EOL;
+1356:                 break
      goto __pyx_L6_break;
 1357: 
+1358:             if stream.c == TAB:
    __pyx_t_1 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_TAB) != 0);
    if (__pyx_t_1) {
/* … */
    }
+1359:                 is_snp = is_snp and alt_len == 1
      __pyx_t_3 = (__pyx_v_is_snp != 0);
      if (__pyx_t_3) {
      } else {
        __pyx_t_1 = __pyx_t_3;
        goto __pyx_L21_bool_binop_done;
      }
      __pyx_t_3 = ((__pyx_v_alt_len == 1) != 0);
      __pyx_t_1 = __pyx_t_3;
      __pyx_L21_bool_binop_done:;
      __pyx_v_is_snp = __pyx_t_1;
+1360:                 if self.store_svlen and alt_index < self.number:
      __pyx_t_3 = (__pyx_v_self->store_svlen != 0);
      if (__pyx_t_3) {
      } else {
        __pyx_t_1 = __pyx_t_3;
        goto __pyx_L24_bool_binop_done;
      }
      __pyx_t_3 = ((__pyx_v_alt_index < __pyx_v_self->__pyx_base.number) != 0);
      __pyx_t_1 = __pyx_t_3;
      __pyx_L24_bool_binop_done:;
      if (__pyx_t_1) {
/* … */
      }
+1361:                     self.svlen_memory[context.chunk_variant_index, alt_index] = \
        __pyx_t_8 = __pyx_v_context->chunk_variant_index;
        __pyx_t_9 = __pyx_v_alt_index;
        *((__pyx_t_5numpy_int32_t *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_self->svlen_memory.data + __pyx_t_8 * __pyx_v_self->svlen_memory.strides[0]) ) + __pyx_t_9 * __pyx_v_self->svlen_memory.strides[1]) )) = (__pyx_v_alt_len - __pyx_v_context->ref_len);
 1362:                         alt_len - context.ref_len
+1363:                 stream.advance()
      __pyx_t_2 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 1363, __pyx_L1_error)
+1364:                 context.state += 1
      __pyx_v_context->state = (__pyx_v_context->state + 1);
+1365:                 break
      goto __pyx_L6_break;
 1366: 
+1367:             elif stream.c == COMMA:
    __pyx_t_1 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_COMMA) != 0);
    if (__pyx_t_1) {
/* … */
      goto __pyx_L20;
    }
+1368:                 is_snp = is_snp and alt_len == 1
      __pyx_t_3 = (__pyx_v_is_snp != 0);
      if (__pyx_t_3) {
      } else {
        __pyx_t_1 = __pyx_t_3;
        goto __pyx_L26_bool_binop_done;
      }
      __pyx_t_3 = ((__pyx_v_alt_len == 1) != 0);
      __pyx_t_1 = __pyx_t_3;
      __pyx_L26_bool_binop_done:;
      __pyx_v_is_snp = __pyx_t_1;
+1369:                 if self.store_svlen and alt_index < self.number:
      __pyx_t_3 = (__pyx_v_self->store_svlen != 0);
      if (__pyx_t_3) {
      } else {
        __pyx_t_1 = __pyx_t_3;
        goto __pyx_L29_bool_binop_done;
      }
      __pyx_t_3 = ((__pyx_v_alt_index < __pyx_v_self->__pyx_base.number) != 0);
      __pyx_t_1 = __pyx_t_3;
      __pyx_L29_bool_binop_done:;
      if (__pyx_t_1) {
/* … */
      }
+1370:                     self.svlen_memory[context.chunk_variant_index, alt_index] = \
        __pyx_t_10 = __pyx_v_context->chunk_variant_index;
        __pyx_t_11 = __pyx_v_alt_index;
        *((__pyx_t_5numpy_int32_t *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_self->svlen_memory.data + __pyx_t_10 * __pyx_v_self->svlen_memory.strides[0]) ) + __pyx_t_11 * __pyx_v_self->svlen_memory.strides[1]) )) = (__pyx_v_alt_len - __pyx_v_context->ref_len);
 1371:                         alt_len - context.ref_len
 1372:                 # advance value index
+1373:                 alt_index += 1
      __pyx_v_alt_index = (__pyx_v_alt_index + 1);
 1374:                 # reset alt_len
+1375:                 alt_len = 0
      __pyx_v_alt_len = 0;
 1376:                 # set memory index to beginning of next item
+1377:                 memory_index = memory_offset + (alt_index * self.itemsize)
      __pyx_v_memory_index = (__pyx_v_memory_offset + (__pyx_v_alt_index * __pyx_v_self->__pyx_base.itemsize));
 1378:                 # reset chars stored
+1379:                 chars_stored = 0
      __pyx_v_chars_stored = 0;
 1380: 
 1381:             else:
+1382:                 if stream.c != PERIOD and stream.c != ASTERISK:
    /*else*/ {
      __pyx_t_3 = ((__pyx_v_stream->c != __pyx_v_5allel_3opt_11io_vcf_read_PERIOD) != 0);
      if (__pyx_t_3) {
      } else {
        __pyx_t_1 = __pyx_t_3;
        goto __pyx_L32_bool_binop_done;
      }
      __pyx_t_3 = ((__pyx_v_stream->c != __pyx_v_5allel_3opt_11io_vcf_read_ASTERISK) != 0);
      __pyx_t_1 = __pyx_t_3;
      __pyx_L32_bool_binop_done:;
      if (__pyx_t_1) {
/* … */
      }
+1383:                     alt_len += 1
        __pyx_v_alt_len = (__pyx_v_alt_len + 1);
+1384:                 if self.store_alt and chars_stored < self.itemsize and alt_index < self.number:
      __pyx_t_3 = (__pyx_v_self->store_alt != 0);
      if (__pyx_t_3) {
      } else {
        __pyx_t_1 = __pyx_t_3;
        goto __pyx_L35_bool_binop_done;
      }
      __pyx_t_3 = ((__pyx_v_chars_stored < __pyx_v_self->__pyx_base.itemsize) != 0);
      if (__pyx_t_3) {
      } else {
        __pyx_t_1 = __pyx_t_3;
        goto __pyx_L35_bool_binop_done;
      }
      __pyx_t_3 = ((__pyx_v_alt_index < __pyx_v_self->__pyx_base.number) != 0);
      __pyx_t_1 = __pyx_t_3;
      __pyx_L35_bool_binop_done:;
      if (__pyx_t_1) {
/* … */
      }
    }
    __pyx_L20:;
 1385:                     # store value
+1386:                     self.memory[memory_index] = stream.c
        __pyx_t_12 = __pyx_v_stream->c;
        __pyx_t_13 = __pyx_v_memory_index;
        *((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_self->memory.data + __pyx_t_13 * __pyx_v_self->memory.strides[0]) )) = __pyx_t_12;
 1387:                     # advance number of characters stored
+1388:                     chars_stored += 1
        __pyx_v_chars_stored = (__pyx_v_chars_stored + 1);
 1389:                     # advance memory index
+1390:                     memory_index += 1
        __pyx_v_memory_index = (__pyx_v_memory_index + 1);
 1391: 
 1392:             # advance input stream
+1393:             stream.advance()
    __pyx_t_2 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 1393, __pyx_L1_error)
  }
  __pyx_L6_break:;
 1394: 
+1395:         if self.store_numalt:
  __pyx_t_1 = (__pyx_v_self->store_numalt != 0);
  if (__pyx_t_1) {
/* … */
  }
+1396:             self.numalt_memory[context.chunk_variant_index] = alt_index + 1
    __pyx_t_14 = __pyx_v_context->chunk_variant_index;
    *((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_self->numalt_memory.data + __pyx_t_14 * __pyx_v_self->numalt_memory.strides[0]) )) = (__pyx_v_alt_index + 1);
+1397:         if self.store_is_snp:
  __pyx_t_1 = (__pyx_v_self->store_is_snp != 0);
  if (__pyx_t_1) {
/* … */
  }
+1398:             self.is_snp_memory[context.chunk_variant_index] = is_snp
    __pyx_t_15 = __pyx_v_context->chunk_variant_index;
    *((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_self->is_snp_memory.data + __pyx_t_15 * __pyx_v_self->is_snp_memory.strides[0]) )) = __pyx_v_is_snp;
 1399: 
+1400:     cdef int malloc_chunk(self) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_18VCFAltStringParser_malloc_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFAltStringParser *__pyx_v_self) {
  PyObject *__pyx_v_shape = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("malloc_chunk", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __PYX_XDEC_MEMVIEW(&__pyx_t_6, 1);
  __PYX_XDEC_MEMVIEW(&__pyx_t_7, 1);
  __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFAltStringParser.malloc_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_shape);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+1401:         shape = (self.chunk_length, self.number)
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.chunk_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1401, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.number); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1401, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1401, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_v_shape = __pyx_t_3;
  __pyx_t_3 = 0;
+1402:         if self.store_alt:
  __pyx_t_4 = (__pyx_v_self->store_alt != 0);
  if (__pyx_t_4) {
/* … */
  }
+1403:             self.values = np.zeros(shape, dtype=self.dtype, order='C')
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1403, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1403, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1403, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_shape);
    __Pyx_GIVEREF(__pyx_v_shape);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_shape);
    __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1403, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->__pyx_base.dtype)) < 0) __PYX_ERR(0, 1403, __pyx_L1_error)
    if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 1403, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1403, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1403, __pyx_L1_error)
    __Pyx_GIVEREF(__pyx_t_5);
    __Pyx_GOTREF(__pyx_v_self->__pyx_base.values);
    __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.values));
    __pyx_v_self->__pyx_base.values = ((PyArrayObject *)__pyx_t_5);
    __pyx_t_5 = 0;
+1404:             self.memory = self.values.reshape(-1).view('u1')
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.values), __pyx_n_s_reshape); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1404, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__35, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1404, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_view); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1404, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* … */
  __pyx_tuple__35 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(0, 1404, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__35);
  __Pyx_GIVEREF(__pyx_tuple__35);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__36, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1404, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_uint8_t(__pyx_t_1);
    if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 1404, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_XDEC_MEMVIEW(&__pyx_v_self->memory, 0);
    __pyx_v_self->memory = __pyx_t_6;
    __pyx_t_6.memview = NULL;
    __pyx_t_6.data = NULL;
  __pyx_tuple__36 = PyTuple_Pack(1, __pyx_n_s_u1); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(0, 1404, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__36);
  __Pyx_GIVEREF(__pyx_tuple__36);
+1405:         if self.store_numalt:
  __pyx_t_4 = (__pyx_v_self->store_numalt != 0);
  if (__pyx_t_4) {
/* … */
  }
+1406:             self.numalt_values = np.zeros(self.chunk_length, dtype='int32')
    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1406, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1406, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.chunk_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1406, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1406, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1406, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_n_s_int32) < 0) __PYX_ERR(0, 1406, __pyx_L1_error)
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1406, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1406, __pyx_L1_error)
    __Pyx_GIVEREF(__pyx_t_2);
    __Pyx_GOTREF(__pyx_v_self->numalt_values);
    __Pyx_DECREF(((PyObject *)__pyx_v_self->numalt_values));
    __pyx_v_self->numalt_values = ((PyArrayObject *)__pyx_t_2);
    __pyx_t_2 = 0;
+1407:             self.numalt_memory = self.numalt_values
    __pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_self->numalt_values));
    if (unlikely(!__pyx_t_7.memview)) __PYX_ERR(0, 1407, __pyx_L1_error)
    __PYX_XDEC_MEMVIEW(&__pyx_v_self->numalt_memory, 0);
    __pyx_v_self->numalt_memory = __pyx_t_7;
    __pyx_t_7.memview = NULL;
    __pyx_t_7.data = NULL;
+1408:         if self.store_svlen:
  __pyx_t_4 = (__pyx_v_self->store_svlen != 0);
  if (__pyx_t_4) {
/* … */
  }
+1409:             self.svlen_values = np.zeros(shape, dtype='int32')
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1409, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1409, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1409, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v_shape);
    __Pyx_GIVEREF(__pyx_v_shape);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_shape);
    __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1409, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_n_s_int32) < 0) __PYX_ERR(0, 1409, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1409, __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_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1409, __pyx_L1_error)
    __Pyx_GIVEREF(__pyx_t_5);
    __Pyx_GOTREF(__pyx_v_self->svlen_values);
    __Pyx_DECREF(((PyObject *)__pyx_v_self->svlen_values));
    __pyx_v_self->svlen_values = ((PyArrayObject *)__pyx_t_5);
    __pyx_t_5 = 0;
+1410:             self.svlen_memory = self.svlen_values
    __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_dsds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_self->svlen_values));
    if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 1410, __pyx_L1_error)
    __PYX_XDEC_MEMVIEW(&__pyx_v_self->svlen_memory, 0);
    __pyx_v_self->svlen_memory = __pyx_t_8;
    __pyx_t_8.memview = NULL;
    __pyx_t_8.data = NULL;
+1411:         if self.store_is_snp:
  __pyx_t_4 = (__pyx_v_self->store_is_snp != 0);
  if (__pyx_t_4) {
/* … */
  }
+1412:             self.is_snp_values = np.zeros(self.chunk_length, dtype=bool)
    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1412, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1412, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.chunk_length); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1412, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1412, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1412, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, ((PyObject*)&PyBool_Type)) < 0) __PYX_ERR(0, 1412, __pyx_L1_error)
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1412, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1412, __pyx_L1_error)
    __Pyx_GIVEREF(__pyx_t_1);
    __Pyx_GOTREF(__pyx_v_self->is_snp_values);
    __Pyx_DECREF(((PyObject *)__pyx_v_self->is_snp_values));
    __pyx_v_self->is_snp_values = ((PyArrayObject *)__pyx_t_1);
    __pyx_t_1 = 0;
+1413:             self.is_snp_memory = self.is_snp_values.view('u1')
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->is_snp_values), __pyx_n_s_view); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1413, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__37, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1413, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_uint8_t(__pyx_t_5);
    if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 1413, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __PYX_XDEC_MEMVIEW(&__pyx_v_self->is_snp_memory, 0);
    __pyx_v_self->is_snp_memory = __pyx_t_6;
    __pyx_t_6.memview = NULL;
    __pyx_t_6.data = NULL;
/* … */
  __pyx_tuple__37 = PyTuple_Pack(1, __pyx_n_s_u1); if (unlikely(!__pyx_tuple__37)) __PYX_ERR(0, 1413, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__37);
  __Pyx_GIVEREF(__pyx_tuple__37);
 1414: 
+1415:     cdef int make_chunk(self, chunk, limit=None) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_18VCFAltStringParser_make_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFAltStringParser *__pyx_v_self, PyObject *__pyx_v_chunk, struct __pyx_opt_args_5allel_3opt_11io_vcf_read_18VCFAltStringParser_make_chunk *__pyx_optional_args) {
  PyObject *__pyx_v_limit = ((PyObject *)Py_None);
  PyObject *__pyx_v_field = NULL;
  PyObject *__pyx_v_values = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("make_chunk", 0);
  if (__pyx_optional_args) {
    if (__pyx_optional_args->__pyx_n > 0) {
      __pyx_v_limit = __pyx_optional_args->limit;
    }
  }
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFAltStringParser.make_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_field);
  __Pyx_XDECREF(__pyx_v_values);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
struct __pyx_opt_args_5allel_3opt_11io_vcf_read_18VCFAltStringParser_make_chunk {
  int __pyx_n;
  PyObject *limit;
};
+1416:         if self.store_alt:
  __pyx_t_1 = (__pyx_v_self->store_alt != 0);
  if (__pyx_t_1) {
/* … */
  }
+1417:             field = u'variants/' + text_type(self.key, 'utf8')
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_text_type); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1417, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 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_5 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_3)) {
      PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_self->__pyx_base.key, __pyx_n_s_utf8};
      __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1417, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_2);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
      PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_self->__pyx_base.key, __pyx_n_s_utf8};
      __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1417, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_2);
    } else
    #endif
    {
      __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1417, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (__pyx_t_4) {
        __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
      }
      __Pyx_INCREF(__pyx_v_self->__pyx_base.key);
      __Pyx_GIVEREF(__pyx_v_self->__pyx_base.key);
      PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_self->__pyx_base.key);
      __Pyx_INCREF(__pyx_n_s_utf8);
      __Pyx_GIVEREF(__pyx_n_s_utf8);
      PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_n_s_utf8);
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1417, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyNumber_Add(__pyx_kp_u_variants_2, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1417, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_v_field = __pyx_t_3;
    __pyx_t_3 = 0;
+1418:             values = self.values
    __pyx_t_3 = ((PyObject *)__pyx_v_self->__pyx_base.values);
    __Pyx_INCREF(__pyx_t_3);
    __pyx_v_values = __pyx_t_3;
    __pyx_t_3 = 0;
+1419:             if self.values.ndim > 1 and self.number == 1:
    __pyx_t_7 = ((__pyx_v_self->__pyx_base.values->nd > 1) != 0);
    if (__pyx_t_7) {
    } else {
      __pyx_t_1 = __pyx_t_7;
      goto __pyx_L5_bool_binop_done;
    }
    __pyx_t_7 = ((__pyx_v_self->__pyx_base.number == 1) != 0);
    __pyx_t_1 = __pyx_t_7;
    __pyx_L5_bool_binop_done:;
    if (__pyx_t_1) {
/* … */
    }
+1420:                 values = values.squeeze(axis=1)
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_values, __pyx_n_s_squeeze); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1420, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1420, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_axis, __pyx_int_1) < 0) __PYX_ERR(0, 1420, __pyx_L1_error)
      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1420, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF_SET(__pyx_v_values, __pyx_t_6);
      __pyx_t_6 = 0;
+1421:             chunk[field] = values[:limit]
    __pyx_t_6 = __Pyx_PyObject_GetSlice(__pyx_v_values, 0, 0, NULL, &__pyx_v_limit, NULL, 0, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1421, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    if (unlikely(PyObject_SetItem(__pyx_v_chunk, __pyx_v_field, __pyx_t_6) < 0)) __PYX_ERR(0, 1421, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+1422:         if self.store_numalt:
  __pyx_t_1 = (__pyx_v_self->store_numalt != 0);
  if (__pyx_t_1) {
/* … */
  }
+1423:             field = u'variants/numalt'
    __Pyx_INCREF(__pyx_kp_u_variants_numalt);
    __Pyx_XDECREF_SET(__pyx_v_field, __pyx_kp_u_variants_numalt);
+1424:             values = self.numalt_values
    __pyx_t_6 = ((PyObject *)__pyx_v_self->numalt_values);
    __Pyx_INCREF(__pyx_t_6);
    __Pyx_XDECREF_SET(__pyx_v_values, __pyx_t_6);
    __pyx_t_6 = 0;
+1425:             chunk[field] = values[:limit]
    __pyx_t_6 = __Pyx_PyObject_GetSlice(__pyx_v_values, 0, 0, NULL, &__pyx_v_limit, NULL, 0, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1425, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    if (unlikely(PyObject_SetItem(__pyx_v_chunk, __pyx_v_field, __pyx_t_6) < 0)) __PYX_ERR(0, 1425, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+1426:         if self.store_svlen:
  __pyx_t_1 = (__pyx_v_self->store_svlen != 0);
  if (__pyx_t_1) {
/* … */
  }
+1427:             field = u'variants/svlen'
    __Pyx_INCREF(__pyx_kp_u_variants_svlen);
    __Pyx_XDECREF_SET(__pyx_v_field, __pyx_kp_u_variants_svlen);
+1428:             values = self.svlen_values
    __pyx_t_6 = ((PyObject *)__pyx_v_self->svlen_values);
    __Pyx_INCREF(__pyx_t_6);
    __Pyx_XDECREF_SET(__pyx_v_values, __pyx_t_6);
    __pyx_t_6 = 0;
+1429:             if self.values.ndim > 1 and self.number == 1:
    __pyx_t_7 = ((__pyx_v_self->__pyx_base.values->nd > 1) != 0);
    if (__pyx_t_7) {
    } else {
      __pyx_t_1 = __pyx_t_7;
      goto __pyx_L10_bool_binop_done;
    }
    __pyx_t_7 = ((__pyx_v_self->__pyx_base.number == 1) != 0);
    __pyx_t_1 = __pyx_t_7;
    __pyx_L10_bool_binop_done:;
    if (__pyx_t_1) {
/* … */
    }
+1430:                 values = values.squeeze(axis=1)
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_values, __pyx_n_s_squeeze); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1430, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1430, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_axis, __pyx_int_1) < 0) __PYX_ERR(0, 1430, __pyx_L1_error)
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1430, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF_SET(__pyx_v_values, __pyx_t_3);
      __pyx_t_3 = 0;
+1431:             chunk[field] = values[:limit]
    __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_v_values, 0, 0, NULL, &__pyx_v_limit, NULL, 0, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1431, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (unlikely(PyObject_SetItem(__pyx_v_chunk, __pyx_v_field, __pyx_t_3) < 0)) __PYX_ERR(0, 1431, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+1432:         if self.store_is_snp:
  __pyx_t_1 = (__pyx_v_self->store_is_snp != 0);
  if (__pyx_t_1) {
/* … */
  }
+1433:             field = u'variants/is_snp'
    __Pyx_INCREF(__pyx_kp_u_variants_is_snp);
    __Pyx_XDECREF_SET(__pyx_v_field, __pyx_kp_u_variants_is_snp);
+1434:             values = self.is_snp_values
    __pyx_t_3 = ((PyObject *)__pyx_v_self->is_snp_values);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_XDECREF_SET(__pyx_v_values, __pyx_t_3);
    __pyx_t_3 = 0;
+1435:             chunk[field] = values[:limit]
    __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_v_values, 0, 0, NULL, &__pyx_v_limit, NULL, 0, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1435, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (unlikely(PyObject_SetItem(__pyx_v_chunk, __pyx_v_field, __pyx_t_3) < 0)) __PYX_ERR(0, 1435, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 1436: 
 1437: 
+1438: cdef class VCFAltObjectParser(VCFFieldParserBase):
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFAltObjectParser {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFieldParserBase __pyx_base;
  __Pyx_memviewslice numalt_memory;
  __Pyx_memviewslice svlen_memory;
  __Pyx_memviewslice is_snp_memory;
  PyArrayObject *numalt_values;
  PyArrayObject *svlen_values;
  PyArrayObject *is_snp_values;
  int store_alt;
  int store_numalt;
  int store_svlen;
  int store_is_snp;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFAltObjectParser {
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFieldParserBase __pyx_base;
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFAltObjectParser *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFAltObjectParser;

 1439: 
 1440:     cdef:
 1441:         np.int32_t[:] numalt_memory
 1442:         np.int32_t[:, :] svlen_memory
 1443:         np.uint8_t[:] is_snp_memory
 1444:         np.ndarray numalt_values
 1445:         np.ndarray svlen_values
 1446:         np.ndarray is_snp_values
 1447:         bint store_alt
 1448:         bint store_numalt
 1449:         bint store_svlen
 1450:         bint store_is_snp
 1451: 
+1452:     def __init__(self, number, chunk_length, store_alt, store_numalt, store_svlen, store_is_snp):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_18VCFAltObjectParser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_18VCFAltObjectParser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_number = 0;
  PyObject *__pyx_v_chunk_length = 0;
  PyObject *__pyx_v_store_alt = 0;
  PyObject *__pyx_v_store_numalt = 0;
  PyObject *__pyx_v_store_svlen = 0;
  PyObject *__pyx_v_store_is_snp = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_number,&__pyx_n_s_chunk_length,&__pyx_n_s_store_alt,&__pyx_n_s_store_numalt,&__pyx_n_s_store_svlen,&__pyx_n_s_store_is_snp,0};
    PyObject* values[6] = {0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_number)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_chunk_length)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 6, 6, 1); __PYX_ERR(0, 1452, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_store_alt)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 6, 6, 2); __PYX_ERR(0, 1452, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_store_numalt)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 6, 6, 3); __PYX_ERR(0, 1452, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_store_svlen)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 6, 6, 4); __PYX_ERR(0, 1452, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_store_is_snp)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 6, 6, 5); __PYX_ERR(0, 1452, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1452, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
    }
    __pyx_v_number = values[0];
    __pyx_v_chunk_length = values[1];
    __pyx_v_store_alt = values[2];
    __pyx_v_store_numalt = values[3];
    __pyx_v_store_svlen = values[4];
    __pyx_v_store_is_snp = values[5];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1452, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFAltObjectParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_18VCFAltObjectParser___init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFAltObjectParser *)__pyx_v_self), __pyx_v_number, __pyx_v_chunk_length, __pyx_v_store_alt, __pyx_v_store_numalt, __pyx_v_store_svlen, __pyx_v_store_is_snp);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_18VCFAltObjectParser___init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFAltObjectParser *__pyx_v_self, PyObject *__pyx_v_number, PyObject *__pyx_v_chunk_length, PyObject *__pyx_v_store_alt, PyObject *__pyx_v_store_numalt, PyObject *__pyx_v_store_svlen, PyObject *__pyx_v_store_is_snp) {
  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_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFAltObjectParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+1453:         super(VCFAltObjectParser, self).__init__(key=b'ALT', dtype=np.dtype('object'), number=number,
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1453, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFAltObjectParser));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFAltObjectParser));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFAltObjectParser));
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self));
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1453, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1453, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1453, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_key, __pyx_n_b_ALT) < 0) __PYX_ERR(0, 1453, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__38, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1453, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_t_3) < 0) __PYX_ERR(0, 1453, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_number, __pyx_v_number) < 0) __PYX_ERR(0, 1453, __pyx_L1_error)
/* … */
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1453, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/* … */
  __pyx_tuple__38 = PyTuple_Pack(1, __pyx_n_s_object); if (unlikely(!__pyx_tuple__38)) __PYX_ERR(0, 1453, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__38);
  __Pyx_GIVEREF(__pyx_tuple__38);
+1454:                                                  chunk_length=chunk_length)
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_chunk_length, __pyx_v_chunk_length) < 0) __PYX_ERR(0, 1453, __pyx_L1_error)
+1455:         self.store_alt = store_alt
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_store_alt); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1455, __pyx_L1_error)
  __pyx_v_self->store_alt = __pyx_t_4;
+1456:         self.store_numalt = store_numalt
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_store_numalt); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1456, __pyx_L1_error)
  __pyx_v_self->store_numalt = __pyx_t_4;
+1457:         self.store_svlen = store_svlen
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_store_svlen); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1457, __pyx_L1_error)
  __pyx_v_self->store_svlen = __pyx_t_4;
+1458:         self.store_is_snp = store_is_snp
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_store_is_snp); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1458, __pyx_L1_error)
  __pyx_v_self->store_is_snp = __pyx_t_4;
 1459: 
+1460:     cdef int parse(self, InputStreamBase stream, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_18VCFAltObjectParser_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFAltObjectParser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  Py_ssize_t __pyx_v_alt_index;
  Py_ssize_t __pyx_v_alt_len;
  int __pyx_v_is_snp;
  PyObject *__pyx_v_v = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFAltObjectParser.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_v);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 1461:         cdef:
 1462:             # index of alt values
+1463:             Py_ssize_t alt_index = 0
  __pyx_v_alt_index = 0;
 1464:             # size of alt allele
+1465:             Py_ssize_t alt_len = 0
  __pyx_v_alt_len = 0;
 1466:             # is the variant a SNP?
+1467:             bint is_snp = context.ref_len == 1
  __pyx_v_is_snp = (__pyx_v_context->ref_len == 1);
 1468: 
 1469:         # bail out early for missing value
+1470:         if stream.c == PERIOD:
  __pyx_t_1 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_PERIOD) != 0);
  if (__pyx_t_1) {
/* … */
  }
 1471:             # treat period as missing value, regardless of what comes next
+1472:             vcf_parse_missing(stream, context)
    __pyx_t_2 = __pyx_f_5allel_3opt_11io_vcf_read_vcf_parse_missing(__pyx_v_stream, __pyx_v_context); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 1472, __pyx_L1_error)
+1473:             return 0
    __pyx_r = 0;
    goto __pyx_L0;
 1474: 
 1475:         # bail out early for empty value
+1476:         if stream.c == TAB:
  __pyx_t_1 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_TAB) != 0);
  if (__pyx_t_1) {
/* … */
  }
+1477:             stream.advance()
    __pyx_t_2 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 1477, __pyx_L1_error)
+1478:             context.state += 1
    __pyx_v_context->state = (__pyx_v_context->state + 1);
+1479:             return 0
    __pyx_r = 0;
    goto __pyx_L0;
 1480: 
 1481:         # setup temp
+1482:         CharVector_clear(&context.temp)
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->temp));
 1483: 
+1484:         while True:
  while (1) {
 1485: 
+1486:             if stream.c == 0:
    __pyx_t_1 = ((__pyx_v_stream->c == 0) != 0);
    if (__pyx_t_1) {
/* … */
    }
+1487:                 is_snp = is_snp and alt_len == 1
      __pyx_t_3 = (__pyx_v_is_snp != 0);
      if (__pyx_t_3) {
      } else {
        __pyx_t_1 = __pyx_t_3;
        goto __pyx_L8_bool_binop_done;
      }
      __pyx_t_3 = ((__pyx_v_alt_len == 1) != 0);
      __pyx_t_1 = __pyx_t_3;
      __pyx_L8_bool_binop_done:;
      __pyx_v_is_snp = __pyx_t_1;
+1488:                 if self.store_svlen and alt_index < self.number:
      __pyx_t_3 = (__pyx_v_self->store_svlen != 0);
      if (__pyx_t_3) {
      } else {
        __pyx_t_1 = __pyx_t_3;
        goto __pyx_L11_bool_binop_done;
      }
      __pyx_t_3 = ((__pyx_v_alt_index < __pyx_v_self->__pyx_base.number) != 0);
      __pyx_t_1 = __pyx_t_3;
      __pyx_L11_bool_binop_done:;
      if (__pyx_t_1) {
/* … */
      }
+1489:                     self.svlen_memory[context.chunk_variant_index, alt_index] = \
        __pyx_t_4 = __pyx_v_context->chunk_variant_index;
        __pyx_t_5 = __pyx_v_alt_index;
        *((__pyx_t_5numpy_int32_t *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_self->svlen_memory.data + __pyx_t_4 * __pyx_v_self->svlen_memory.strides[0]) ) + __pyx_t_5 * __pyx_v_self->svlen_memory.strides[1]) )) = (__pyx_v_alt_len - __pyx_v_context->ref_len);
 1490:                         alt_len - context.ref_len
+1491:                 if self.store_alt and alt_index < self.number and context.temp.size > 0:
      __pyx_t_3 = (__pyx_v_self->store_alt != 0);
      if (__pyx_t_3) {
      } else {
        __pyx_t_1 = __pyx_t_3;
        goto __pyx_L14_bool_binop_done;
      }
      __pyx_t_3 = ((__pyx_v_alt_index < __pyx_v_self->__pyx_base.number) != 0);
      if (__pyx_t_3) {
      } else {
        __pyx_t_1 = __pyx_t_3;
        goto __pyx_L14_bool_binop_done;
      }
      __pyx_t_3 = ((__pyx_v_context->temp.size > 0) != 0);
      __pyx_t_1 = __pyx_t_3;
      __pyx_L14_bool_binop_done:;
      if (__pyx_t_1) {
/* … */
      }
 1492:                     # with gil:
+1493:                     v = CharVector_to_pystr(&context.temp)
        __pyx_t_6 = __pyx_f_5allel_3opt_11io_vcf_read_CharVector_to_pystr((&__pyx_v_context->temp)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1493, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_XDECREF_SET(__pyx_v_v, __pyx_t_6);
        __pyx_t_6 = 0;
+1494:                     self.values[context.chunk_variant_index, alt_index] = v
        __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_context->chunk_variant_index); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1494, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = PyInt_FromSsize_t(__pyx_v_alt_index); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1494, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1494, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_7);
        PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_7);
        __pyx_t_6 = 0;
        __pyx_t_7 = 0;
        if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->__pyx_base.values), __pyx_t_8, __pyx_v_v) < 0)) __PYX_ERR(0, 1494, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+1495:                 context.state = VCFState.EOF
      __pyx_v_context->state = __pyx_e_5allel_3opt_11io_vcf_read_EOF;
+1496:                 break
      goto __pyx_L6_break;
 1497: 
+1498:             elif stream.c == LF or stream.c == CR:
    __pyx_t_3 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_1 = __pyx_t_3;
      goto __pyx_L17_bool_binop_done;
    }
    __pyx_t_3 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_CR) != 0);
    __pyx_t_1 = __pyx_t_3;
    __pyx_L17_bool_binop_done:;
    if (__pyx_t_1) {
/* … */
    }
+1499:                 is_snp = is_snp and alt_len == 1
      __pyx_t_3 = (__pyx_v_is_snp != 0);
      if (__pyx_t_3) {
      } else {
        __pyx_t_1 = __pyx_t_3;
        goto __pyx_L19_bool_binop_done;
      }
      __pyx_t_3 = ((__pyx_v_alt_len == 1) != 0);
      __pyx_t_1 = __pyx_t_3;
      __pyx_L19_bool_binop_done:;
      __pyx_v_is_snp = __pyx_t_1;
+1500:                 if self.store_svlen and alt_index < self.number:
      __pyx_t_3 = (__pyx_v_self->store_svlen != 0);
      if (__pyx_t_3) {
      } else {
        __pyx_t_1 = __pyx_t_3;
        goto __pyx_L22_bool_binop_done;
      }
      __pyx_t_3 = ((__pyx_v_alt_index < __pyx_v_self->__pyx_base.number) != 0);
      __pyx_t_1 = __pyx_t_3;
      __pyx_L22_bool_binop_done:;
      if (__pyx_t_1) {
/* … */
      }
+1501:                     self.svlen_memory[context.chunk_variant_index, alt_index] = \
        __pyx_t_9 = __pyx_v_context->chunk_variant_index;
        __pyx_t_10 = __pyx_v_alt_index;
        *((__pyx_t_5numpy_int32_t *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_self->svlen_memory.data + __pyx_t_9 * __pyx_v_self->svlen_memory.strides[0]) ) + __pyx_t_10 * __pyx_v_self->svlen_memory.strides[1]) )) = (__pyx_v_alt_len - __pyx_v_context->ref_len);
 1502:                         alt_len - context.ref_len
+1503:                 if self.store_alt and alt_index < self.number and context.temp.size > 0:
      __pyx_t_3 = (__pyx_v_self->store_alt != 0);
      if (__pyx_t_3) {
      } else {
        __pyx_t_1 = __pyx_t_3;
        goto __pyx_L25_bool_binop_done;
      }
      __pyx_t_3 = ((__pyx_v_alt_index < __pyx_v_self->__pyx_base.number) != 0);
      if (__pyx_t_3) {
      } else {
        __pyx_t_1 = __pyx_t_3;
        goto __pyx_L25_bool_binop_done;
      }
      __pyx_t_3 = ((__pyx_v_context->temp.size > 0) != 0);
      __pyx_t_1 = __pyx_t_3;
      __pyx_L25_bool_binop_done:;
      if (__pyx_t_1) {
/* … */
      }
 1504:                     # with gil:
+1505:                     v = CharVector_to_pystr(&context.temp)
        __pyx_t_8 = __pyx_f_5allel_3opt_11io_vcf_read_CharVector_to_pystr((&__pyx_v_context->temp)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1505, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_XDECREF_SET(__pyx_v_v, __pyx_t_8);
        __pyx_t_8 = 0;
+1506:                     self.values[context.chunk_variant_index, alt_index] = v
        __pyx_t_8 = PyInt_FromSsize_t(__pyx_v_context->chunk_variant_index); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1506, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_7 = PyInt_FromSsize_t(__pyx_v_alt_index); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1506, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1506, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_8);
        PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
        __Pyx_GIVEREF(__pyx_t_7);
        PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_7);
        __pyx_t_8 = 0;
        __pyx_t_7 = 0;
        if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->__pyx_base.values), __pyx_t_6, __pyx_v_v) < 0)) __PYX_ERR(0, 1506, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+1507:                 context.state = VCFState.EOL
      __pyx_v_context->state = __pyx_e_5allel_3opt_11io_vcf_read_EOL;
+1508:                 break
      goto __pyx_L6_break;
 1509: 
+1510:             if stream.c == TAB:
    __pyx_t_1 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_TAB) != 0);
    if (__pyx_t_1) {
/* … */
    }
+1511:                 is_snp = is_snp and alt_len == 1
      __pyx_t_3 = (__pyx_v_is_snp != 0);
      if (__pyx_t_3) {
      } else {
        __pyx_t_1 = __pyx_t_3;
        goto __pyx_L29_bool_binop_done;
      }
      __pyx_t_3 = ((__pyx_v_alt_len == 1) != 0);
      __pyx_t_1 = __pyx_t_3;
      __pyx_L29_bool_binop_done:;
      __pyx_v_is_snp = __pyx_t_1;
+1512:                 if self.store_svlen and alt_index < self.number:
      __pyx_t_3 = (__pyx_v_self->store_svlen != 0);
      if (__pyx_t_3) {
      } else {
        __pyx_t_1 = __pyx_t_3;
        goto __pyx_L32_bool_binop_done;
      }
      __pyx_t_3 = ((__pyx_v_alt_index < __pyx_v_self->__pyx_base.number) != 0);
      __pyx_t_1 = __pyx_t_3;
      __pyx_L32_bool_binop_done:;
      if (__pyx_t_1) {
/* … */
      }
+1513:                     self.svlen_memory[context.chunk_variant_index, alt_index] = \
        __pyx_t_11 = __pyx_v_context->chunk_variant_index;
        __pyx_t_12 = __pyx_v_alt_index;
        *((__pyx_t_5numpy_int32_t *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_self->svlen_memory.data + __pyx_t_11 * __pyx_v_self->svlen_memory.strides[0]) ) + __pyx_t_12 * __pyx_v_self->svlen_memory.strides[1]) )) = (__pyx_v_alt_len - __pyx_v_context->ref_len);
 1514:                         alt_len - context.ref_len
+1515:                 if self.store_alt and alt_index < self.number and context.temp.size > 0:
      __pyx_t_3 = (__pyx_v_self->store_alt != 0);
      if (__pyx_t_3) {
      } else {
        __pyx_t_1 = __pyx_t_3;
        goto __pyx_L35_bool_binop_done;
      }
      __pyx_t_3 = ((__pyx_v_alt_index < __pyx_v_self->__pyx_base.number) != 0);
      if (__pyx_t_3) {
      } else {
        __pyx_t_1 = __pyx_t_3;
        goto __pyx_L35_bool_binop_done;
      }
      __pyx_t_3 = ((__pyx_v_context->temp.size > 0) != 0);
      __pyx_t_1 = __pyx_t_3;
      __pyx_L35_bool_binop_done:;
      if (__pyx_t_1) {
/* … */
      }
 1516:                     # with gil:
+1517:                     v = CharVector_to_pystr(&context.temp)
        __pyx_t_6 = __pyx_f_5allel_3opt_11io_vcf_read_CharVector_to_pystr((&__pyx_v_context->temp)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1517, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_XDECREF_SET(__pyx_v_v, __pyx_t_6);
        __pyx_t_6 = 0;
+1518:                     self.values[context.chunk_variant_index, alt_index] = v
        __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_context->chunk_variant_index); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1518, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = PyInt_FromSsize_t(__pyx_v_alt_index); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1518, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1518, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_7);
        PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_7);
        __pyx_t_6 = 0;
        __pyx_t_7 = 0;
        if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->__pyx_base.values), __pyx_t_8, __pyx_v_v) < 0)) __PYX_ERR(0, 1518, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+1519:                 stream.advance()
      __pyx_t_2 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 1519, __pyx_L1_error)
+1520:                 context.state += 1
      __pyx_v_context->state = (__pyx_v_context->state + 1);
+1521:                 break
      goto __pyx_L6_break;
 1522: 
+1523:             elif stream.c == COMMA:
    __pyx_t_1 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_COMMA) != 0);
    if (__pyx_t_1) {
/* … */
      goto __pyx_L28;
    }
+1524:                 is_snp = is_snp and alt_len == 1
      __pyx_t_3 = (__pyx_v_is_snp != 0);
      if (__pyx_t_3) {
      } else {
        __pyx_t_1 = __pyx_t_3;
        goto __pyx_L38_bool_binop_done;
      }
      __pyx_t_3 = ((__pyx_v_alt_len == 1) != 0);
      __pyx_t_1 = __pyx_t_3;
      __pyx_L38_bool_binop_done:;
      __pyx_v_is_snp = __pyx_t_1;
+1525:                 if self.store_svlen and alt_index < self.number:
      __pyx_t_3 = (__pyx_v_self->store_svlen != 0);
      if (__pyx_t_3) {
      } else {
        __pyx_t_1 = __pyx_t_3;
        goto __pyx_L41_bool_binop_done;
      }
      __pyx_t_3 = ((__pyx_v_alt_index < __pyx_v_self->__pyx_base.number) != 0);
      __pyx_t_1 = __pyx_t_3;
      __pyx_L41_bool_binop_done:;
      if (__pyx_t_1) {
/* … */
      }
+1526:                     self.svlen_memory[context.chunk_variant_index, alt_index] = \
        __pyx_t_13 = __pyx_v_context->chunk_variant_index;
        __pyx_t_14 = __pyx_v_alt_index;
        *((__pyx_t_5numpy_int32_t *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_self->svlen_memory.data + __pyx_t_13 * __pyx_v_self->svlen_memory.strides[0]) ) + __pyx_t_14 * __pyx_v_self->svlen_memory.strides[1]) )) = (__pyx_v_alt_len - __pyx_v_context->ref_len);
 1527:                         alt_len - context.ref_len
+1528:                 if self.store_alt and alt_index < self.number:
      __pyx_t_3 = (__pyx_v_self->store_alt != 0);
      if (__pyx_t_3) {
      } else {
        __pyx_t_1 = __pyx_t_3;
        goto __pyx_L44_bool_binop_done;
      }
      __pyx_t_3 = ((__pyx_v_alt_index < __pyx_v_self->__pyx_base.number) != 0);
      __pyx_t_1 = __pyx_t_3;
      __pyx_L44_bool_binop_done:;
      if (__pyx_t_1) {
/* … */
      }
 1529:                     # with gil:
+1530:                     v = CharVector_to_pystr(&context.temp)
        __pyx_t_8 = __pyx_f_5allel_3opt_11io_vcf_read_CharVector_to_pystr((&__pyx_v_context->temp)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1530, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_XDECREF_SET(__pyx_v_v, __pyx_t_8);
        __pyx_t_8 = 0;
+1531:                     self.values[context.chunk_variant_index, alt_index] = v
        __pyx_t_8 = PyInt_FromSsize_t(__pyx_v_context->chunk_variant_index); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1531, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_7 = PyInt_FromSsize_t(__pyx_v_alt_index); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1531, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1531, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_8);
        PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
        __Pyx_GIVEREF(__pyx_t_7);
        PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_7);
        __pyx_t_8 = 0;
        __pyx_t_7 = 0;
        if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->__pyx_base.values), __pyx_t_6, __pyx_v_v) < 0)) __PYX_ERR(0, 1531, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 1532:                 # advance value index
+1533:                 alt_index += 1
      __pyx_v_alt_index = (__pyx_v_alt_index + 1);
 1534:                 # reset
+1535:                 CharVector_clear(&context.temp)
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->temp));
+1536:                 alt_len = 0
      __pyx_v_alt_len = 0;
 1537: 
 1538:             else:
+1539:                 if stream.c != PERIOD and stream.c != ASTERISK:
    /*else*/ {
      __pyx_t_3 = ((__pyx_v_stream->c != __pyx_v_5allel_3opt_11io_vcf_read_PERIOD) != 0);
      if (__pyx_t_3) {
      } else {
        __pyx_t_1 = __pyx_t_3;
        goto __pyx_L47_bool_binop_done;
      }
      __pyx_t_3 = ((__pyx_v_stream->c != __pyx_v_5allel_3opt_11io_vcf_read_ASTERISK) != 0);
      __pyx_t_1 = __pyx_t_3;
      __pyx_L47_bool_binop_done:;
      if (__pyx_t_1) {
/* … */
      }
+1540:                     alt_len += 1
        __pyx_v_alt_len = (__pyx_v_alt_len + 1);
+1541:                 if self.store_alt and alt_index < self.number:
      __pyx_t_3 = (__pyx_v_self->store_alt != 0);
      if (__pyx_t_3) {
      } else {
        __pyx_t_1 = __pyx_t_3;
        goto __pyx_L50_bool_binop_done;
      }
      __pyx_t_3 = ((__pyx_v_alt_index < __pyx_v_self->__pyx_base.number) != 0);
      __pyx_t_1 = __pyx_t_3;
      __pyx_L50_bool_binop_done:;
      if (__pyx_t_1) {
/* … */
      }
    }
    __pyx_L28:;
+1542:                     CharVector_append(&context.temp, stream.c)
        __pyx_f_5allel_3opt_11io_vcf_read_CharVector_append((&__pyx_v_context->temp), __pyx_v_stream->c);
 1543: 
 1544:             # advance input stream
+1545:             stream.advance()
    __pyx_t_2 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 1545, __pyx_L1_error)
  }
  __pyx_L6_break:;
 1546: 
+1547:         if self.store_numalt:
  __pyx_t_1 = (__pyx_v_self->store_numalt != 0);
  if (__pyx_t_1) {
/* … */
  }
+1548:             self.numalt_memory[context.chunk_variant_index] = alt_index + 1
    __pyx_t_15 = __pyx_v_context->chunk_variant_index;
    *((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_self->numalt_memory.data + __pyx_t_15 * __pyx_v_self->numalt_memory.strides[0]) )) = (__pyx_v_alt_index + 1);
+1549:         if self.store_is_snp:
  __pyx_t_1 = (__pyx_v_self->store_is_snp != 0);
  if (__pyx_t_1) {
/* … */
  }
+1550:             self.is_snp_memory[context.chunk_variant_index] = is_snp
    __pyx_t_16 = __pyx_v_context->chunk_variant_index;
    *((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_self->is_snp_memory.data + __pyx_t_16 * __pyx_v_self->is_snp_memory.strides[0]) )) = __pyx_v_is_snp;
 1551: 
+1552:     cdef int malloc_chunk(self) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_18VCFAltObjectParser_malloc_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFAltObjectParser *__pyx_v_self) {
  PyObject *__pyx_v_shape = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("malloc_chunk", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __PYX_XDEC_MEMVIEW(&__pyx_t_6, 1);
  __PYX_XDEC_MEMVIEW(&__pyx_t_7, 1);
  __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFAltObjectParser.malloc_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_shape);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+1553:         shape = (self.chunk_length, self.number)
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.chunk_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1553, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.number); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1553, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1553, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_v_shape = __pyx_t_3;
  __pyx_t_3 = 0;
+1554:         if self.store_alt:
  __pyx_t_4 = (__pyx_v_self->store_alt != 0);
  if (__pyx_t_4) {
/* … */
  }
+1555:             self.values = np.empty(shape, dtype=self.dtype, order='C')
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1555, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1555, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1555, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_shape);
    __Pyx_GIVEREF(__pyx_v_shape);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_shape);
    __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1555, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->__pyx_base.dtype)) < 0) __PYX_ERR(0, 1555, __pyx_L1_error)
    if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_order, __pyx_n_s_C) < 0) __PYX_ERR(0, 1555, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1555, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1555, __pyx_L1_error)
    __Pyx_GIVEREF(__pyx_t_5);
    __Pyx_GOTREF(__pyx_v_self->__pyx_base.values);
    __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.values));
    __pyx_v_self->__pyx_base.values = ((PyArrayObject *)__pyx_t_5);
    __pyx_t_5 = 0;
+1556:             self.values.fill(u'')
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.values), __pyx_n_s_fill); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1556, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__39, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1556, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* … */
  __pyx_tuple__39 = PyTuple_Pack(1, __pyx_kp_u__8); if (unlikely(!__pyx_tuple__39)) __PYX_ERR(0, 1556, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__39);
  __Pyx_GIVEREF(__pyx_tuple__39);
+1557:         if self.store_numalt:
  __pyx_t_4 = (__pyx_v_self->store_numalt != 0);
  if (__pyx_t_4) {
/* … */
  }
+1558:             self.numalt_values = np.zeros(self.chunk_length, dtype='int32')
    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1558, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1558, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.chunk_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1558, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1558, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1558, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_n_s_int32) < 0) __PYX_ERR(0, 1558, __pyx_L1_error)
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1558, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1558, __pyx_L1_error)
    __Pyx_GIVEREF(__pyx_t_2);
    __Pyx_GOTREF(__pyx_v_self->numalt_values);
    __Pyx_DECREF(((PyObject *)__pyx_v_self->numalt_values));
    __pyx_v_self->numalt_values = ((PyArrayObject *)__pyx_t_2);
    __pyx_t_2 = 0;
+1559:             self.numalt_memory = self.numalt_values
    __pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_self->numalt_values));
    if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 1559, __pyx_L1_error)
    __PYX_XDEC_MEMVIEW(&__pyx_v_self->numalt_memory, 0);
    __pyx_v_self->numalt_memory = __pyx_t_6;
    __pyx_t_6.memview = NULL;
    __pyx_t_6.data = NULL;
+1560:         if self.store_svlen:
  __pyx_t_4 = (__pyx_v_self->store_svlen != 0);
  if (__pyx_t_4) {
/* … */
  }
+1561:             self.svlen_values = np.zeros(shape, dtype='int32')
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1561, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1561, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1561, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v_shape);
    __Pyx_GIVEREF(__pyx_v_shape);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_shape);
    __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1561, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_n_s_int32) < 0) __PYX_ERR(0, 1561, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1561, __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_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1561, __pyx_L1_error)
    __Pyx_GIVEREF(__pyx_t_5);
    __Pyx_GOTREF(__pyx_v_self->svlen_values);
    __Pyx_DECREF(((PyObject *)__pyx_v_self->svlen_values));
    __pyx_v_self->svlen_values = ((PyArrayObject *)__pyx_t_5);
    __pyx_t_5 = 0;
+1562:             self.svlen_memory = self.svlen_values
    __pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_dsds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_self->svlen_values));
    if (unlikely(!__pyx_t_7.memview)) __PYX_ERR(0, 1562, __pyx_L1_error)
    __PYX_XDEC_MEMVIEW(&__pyx_v_self->svlen_memory, 0);
    __pyx_v_self->svlen_memory = __pyx_t_7;
    __pyx_t_7.memview = NULL;
    __pyx_t_7.data = NULL;
+1563:         if self.store_is_snp:
  __pyx_t_4 = (__pyx_v_self->store_is_snp != 0);
  if (__pyx_t_4) {
/* … */
  }
+1564:             self.is_snp_values = np.zeros(self.chunk_length, dtype=bool)
    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1564, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1564, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.chunk_length); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1564, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1564, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1564, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, ((PyObject*)&PyBool_Type)) < 0) __PYX_ERR(0, 1564, __pyx_L1_error)
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1564, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1564, __pyx_L1_error)
    __Pyx_GIVEREF(__pyx_t_1);
    __Pyx_GOTREF(__pyx_v_self->is_snp_values);
    __Pyx_DECREF(((PyObject *)__pyx_v_self->is_snp_values));
    __pyx_v_self->is_snp_values = ((PyArrayObject *)__pyx_t_1);
    __pyx_t_1 = 0;
+1565:             self.is_snp_memory = self.is_snp_values.view('u1')
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->is_snp_values), __pyx_n_s_view); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1565, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__40, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1565, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_uint8_t(__pyx_t_5);
    if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 1565, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __PYX_XDEC_MEMVIEW(&__pyx_v_self->is_snp_memory, 0);
    __pyx_v_self->is_snp_memory = __pyx_t_8;
    __pyx_t_8.memview = NULL;
    __pyx_t_8.data = NULL;
/* … */
  __pyx_tuple__40 = PyTuple_Pack(1, __pyx_n_s_u1); if (unlikely(!__pyx_tuple__40)) __PYX_ERR(0, 1565, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__40);
  __Pyx_GIVEREF(__pyx_tuple__40);
 1566: 
+1567:     cdef int make_chunk(self, chunk, limit=None) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_18VCFAltObjectParser_make_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFAltObjectParser *__pyx_v_self, PyObject *__pyx_v_chunk, struct __pyx_opt_args_5allel_3opt_11io_vcf_read_18VCFAltObjectParser_make_chunk *__pyx_optional_args) {
  PyObject *__pyx_v_limit = ((PyObject *)Py_None);
  PyObject *__pyx_v_field = NULL;
  PyObject *__pyx_v_values = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("make_chunk", 0);
  if (__pyx_optional_args) {
    if (__pyx_optional_args->__pyx_n > 0) {
      __pyx_v_limit = __pyx_optional_args->limit;
    }
  }
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFAltObjectParser.make_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_field);
  __Pyx_XDECREF(__pyx_v_values);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
struct __pyx_opt_args_5allel_3opt_11io_vcf_read_18VCFAltObjectParser_make_chunk {
  int __pyx_n;
  PyObject *limit;
};
+1568:         if self.store_alt:
  __pyx_t_1 = (__pyx_v_self->store_alt != 0);
  if (__pyx_t_1) {
/* … */
  }
+1569:             field = u'variants/' + text_type(self.key, 'utf8')
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_text_type); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1569, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 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_5 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_3)) {
      PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_self->__pyx_base.key, __pyx_n_s_utf8};
      __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1569, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_2);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
      PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_self->__pyx_base.key, __pyx_n_s_utf8};
      __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1569, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_2);
    } else
    #endif
    {
      __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1569, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (__pyx_t_4) {
        __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
      }
      __Pyx_INCREF(__pyx_v_self->__pyx_base.key);
      __Pyx_GIVEREF(__pyx_v_self->__pyx_base.key);
      PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_self->__pyx_base.key);
      __Pyx_INCREF(__pyx_n_s_utf8);
      __Pyx_GIVEREF(__pyx_n_s_utf8);
      PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_n_s_utf8);
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1569, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyNumber_Add(__pyx_kp_u_variants_2, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1569, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_v_field = __pyx_t_3;
    __pyx_t_3 = 0;
+1570:             values = self.values
    __pyx_t_3 = ((PyObject *)__pyx_v_self->__pyx_base.values);
    __Pyx_INCREF(__pyx_t_3);
    __pyx_v_values = __pyx_t_3;
    __pyx_t_3 = 0;
+1571:             if self.values.ndim > 1 and self.number == 1:
    __pyx_t_7 = ((__pyx_v_self->__pyx_base.values->nd > 1) != 0);
    if (__pyx_t_7) {
    } else {
      __pyx_t_1 = __pyx_t_7;
      goto __pyx_L5_bool_binop_done;
    }
    __pyx_t_7 = ((__pyx_v_self->__pyx_base.number == 1) != 0);
    __pyx_t_1 = __pyx_t_7;
    __pyx_L5_bool_binop_done:;
    if (__pyx_t_1) {
/* … */
    }
+1572:                 values = values.squeeze(axis=1)
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_values, __pyx_n_s_squeeze); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1572, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1572, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_axis, __pyx_int_1) < 0) __PYX_ERR(0, 1572, __pyx_L1_error)
      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1572, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF_SET(__pyx_v_values, __pyx_t_6);
      __pyx_t_6 = 0;
+1573:             chunk[field] = values[:limit]
    __pyx_t_6 = __Pyx_PyObject_GetSlice(__pyx_v_values, 0, 0, NULL, &__pyx_v_limit, NULL, 0, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1573, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    if (unlikely(PyObject_SetItem(__pyx_v_chunk, __pyx_v_field, __pyx_t_6) < 0)) __PYX_ERR(0, 1573, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+1574:         if self.store_numalt:
  __pyx_t_1 = (__pyx_v_self->store_numalt != 0);
  if (__pyx_t_1) {
/* … */
  }
+1575:             field = u'variants/numalt'
    __Pyx_INCREF(__pyx_kp_u_variants_numalt);
    __Pyx_XDECREF_SET(__pyx_v_field, __pyx_kp_u_variants_numalt);
+1576:             values = self.numalt_values
    __pyx_t_6 = ((PyObject *)__pyx_v_self->numalt_values);
    __Pyx_INCREF(__pyx_t_6);
    __Pyx_XDECREF_SET(__pyx_v_values, __pyx_t_6);
    __pyx_t_6 = 0;
+1577:             chunk[field] = values[:limit]
    __pyx_t_6 = __Pyx_PyObject_GetSlice(__pyx_v_values, 0, 0, NULL, &__pyx_v_limit, NULL, 0, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1577, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    if (unlikely(PyObject_SetItem(__pyx_v_chunk, __pyx_v_field, __pyx_t_6) < 0)) __PYX_ERR(0, 1577, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+1578:         if self.store_svlen:
  __pyx_t_1 = (__pyx_v_self->store_svlen != 0);
  if (__pyx_t_1) {
/* … */
  }
+1579:             field = u'variants/svlen'
    __Pyx_INCREF(__pyx_kp_u_variants_svlen);
    __Pyx_XDECREF_SET(__pyx_v_field, __pyx_kp_u_variants_svlen);
+1580:             values = self.svlen_values
    __pyx_t_6 = ((PyObject *)__pyx_v_self->svlen_values);
    __Pyx_INCREF(__pyx_t_6);
    __Pyx_XDECREF_SET(__pyx_v_values, __pyx_t_6);
    __pyx_t_6 = 0;
+1581:             if self.values.ndim > 1 and self.number == 1:
    __pyx_t_7 = ((__pyx_v_self->__pyx_base.values->nd > 1) != 0);
    if (__pyx_t_7) {
    } else {
      __pyx_t_1 = __pyx_t_7;
      goto __pyx_L10_bool_binop_done;
    }
    __pyx_t_7 = ((__pyx_v_self->__pyx_base.number == 1) != 0);
    __pyx_t_1 = __pyx_t_7;
    __pyx_L10_bool_binop_done:;
    if (__pyx_t_1) {
/* … */
    }
+1582:                 values = values.squeeze(axis=1)
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_values, __pyx_n_s_squeeze); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1582, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1582, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_axis, __pyx_int_1) < 0) __PYX_ERR(0, 1582, __pyx_L1_error)
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1582, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF_SET(__pyx_v_values, __pyx_t_3);
      __pyx_t_3 = 0;
+1583:             chunk[field] = values[:limit]
    __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_v_values, 0, 0, NULL, &__pyx_v_limit, NULL, 0, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1583, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (unlikely(PyObject_SetItem(__pyx_v_chunk, __pyx_v_field, __pyx_t_3) < 0)) __PYX_ERR(0, 1583, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+1584:         if self.store_is_snp:
  __pyx_t_1 = (__pyx_v_self->store_is_snp != 0);
  if (__pyx_t_1) {
/* … */
  }
+1585:             field = u'variants/is_snp'
    __Pyx_INCREF(__pyx_kp_u_variants_is_snp);
    __Pyx_XDECREF_SET(__pyx_v_field, __pyx_kp_u_variants_is_snp);
+1586:             values = self.is_snp_values
    __pyx_t_3 = ((PyObject *)__pyx_v_self->is_snp_values);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_XDECREF_SET(__pyx_v_values, __pyx_t_3);
    __pyx_t_3 = 0;
+1587:             chunk[field] = values[:limit]
    __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_v_values, 0, 0, NULL, &__pyx_v_limit, NULL, 0, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1587, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (unlikely(PyObject_SetItem(__pyx_v_chunk, __pyx_v_field, __pyx_t_3) < 0)) __PYX_ERR(0, 1587, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 1588: 
 1589: 
+1590: cdef class VCFQualParser(VCFFieldParserBase):
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFQualParser {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFieldParserBase __pyx_base;
  __Pyx_memviewslice memory;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFQualParser {
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFieldParserBase __pyx_base;
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFQualParser *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFQualParser;

 1591: 
 1592:     cdef np.float32_t[:] memory
 1593: 
+1594:     def __init__(self, chunk_length, fill=NAN):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_13VCFQualParser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_13VCFQualParser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_chunk_length = 0;
  PyObject *__pyx_v_fill = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_chunk_length,&__pyx_n_s_fill,0};
    PyObject* values[2] = {0,0};
    values[1] = __pyx_k__41;
    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] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_chunk_length)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fill);
          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, 1594, __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_chunk_length = values[0];
    __pyx_v_fill = 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, 1594, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFQualParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_13VCFQualParser___init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFQualParser *)__pyx_v_self), __pyx_v_chunk_length, __pyx_v_fill);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_13VCFQualParser___init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFQualParser *__pyx_v_self, PyObject *__pyx_v_chunk_length, PyObject *__pyx_v_fill) {
  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_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFQualParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_5allel_3opt_11io_vcf_read_NAN); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1594, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_k__41 = __pyx_t_1;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;
+1595:         super(VCFQualParser, self).__init__(key=b'QUAL', dtype='float32', number=1,
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1595, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFQualParser));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFQualParser));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFQualParser));
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self));
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1595, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1595, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1595, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_key, __pyx_n_b_QUAL) < 0) __PYX_ERR(0, 1595, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_n_s_float32) < 0) __PYX_ERR(0, 1595, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_number, __pyx_int_1) < 0) __PYX_ERR(0, 1595, __pyx_L1_error)
/* … */
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1595, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+1596:                                             fill=fill, chunk_length=chunk_length)
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_fill, __pyx_v_fill) < 0) __PYX_ERR(0, 1595, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_chunk_length, __pyx_v_chunk_length) < 0) __PYX_ERR(0, 1595, __pyx_L1_error)
 1597: 
+1598:     cdef int parse(self, InputStreamBase stream, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_13VCFQualParser_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFQualParser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  double __pyx_v_value;
  Py_ssize_t __pyx_v_parsed;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFQualParser.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 1599:         cdef:
 1600:             double value
 1601:             Py_ssize_t parsed
 1602: 
 1603:         # read into temp
+1604:         vcf_read_field(stream, context, &context.temp)
  __pyx_t_1 = __pyx_f_5allel_3opt_11io_vcf_read_vcf_read_field(__pyx_v_stream, __pyx_v_context, (&__pyx_v_context->temp)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 1604, __pyx_L1_error)
 1605: 
 1606:         # parse string as floating
+1607:         parsed = vcf_strtod(&context.temp, context, &value)
  __pyx_t_2 = __pyx_f_5allel_3opt_11io_vcf_read_vcf_strtod((&__pyx_v_context->temp), __pyx_v_context, (&__pyx_v_value)); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1L))) __PYX_ERR(0, 1607, __pyx_L1_error)
  __pyx_v_parsed = __pyx_t_2;
 1608: 
+1609:         if parsed > 0:
  __pyx_t_3 = ((__pyx_v_parsed > 0) != 0);
  if (__pyx_t_3) {
/* … */
  }
 1610:             # store value
+1611:             self.memory[context.chunk_variant_index] = value
    __pyx_t_4 = __pyx_v_context->chunk_variant_index;
    *((__pyx_t_5numpy_float32_t *) ( /* dim=0 */ (__pyx_v_self->memory.data + __pyx_t_4 * __pyx_v_self->memory.strides[0]) )) = __pyx_v_value;
 1612: 
+1613:         if context.state == VCFState.QUAL:
  __pyx_t_3 = ((__pyx_v_context->state == __pyx_e_5allel_3opt_11io_vcf_read_QUAL) != 0);
  if (__pyx_t_3) {
/* … */
  }
+1614:             context.state += 1
    __pyx_v_context->state = (__pyx_v_context->state + 1);
 1615: 
+1616:     cdef int malloc_chunk(self) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_13VCFQualParser_malloc_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFQualParser *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("malloc_chunk", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFQualParser.malloc_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+1617:         self.values = np.empty(self.chunk_length, dtype='float32')
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1617, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1617, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.chunk_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1617, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1617, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1617, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_n_s_float32) < 0) __PYX_ERR(0, 1617, __pyx_L1_error)
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1617, __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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1617, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_4);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.values);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.values));
  __pyx_v_self->__pyx_base.values = ((PyArrayObject *)__pyx_t_4);
  __pyx_t_4 = 0;
+1618:         self.memory = self.values
  __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float32_t(((PyObject *)__pyx_v_self->__pyx_base.values));
  if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 1618, __pyx_L1_error)
  __PYX_XDEC_MEMVIEW(&__pyx_v_self->memory, 0);
  __pyx_v_self->memory = __pyx_t_5;
  __pyx_t_5.memview = NULL;
  __pyx_t_5.data = NULL;
+1619:         self.memory[:] = NAN
  {
      __pyx_t_5numpy_float32_t __pyx_temp_scalar = __pyx_v_5allel_3opt_11io_vcf_read_NAN;
      {
          Py_ssize_t __pyx_temp_extent_0 = __pyx_v_self->memory.shape[0];
          Py_ssize_t __pyx_temp_stride_0 = __pyx_v_self->memory.strides[0];
          char *__pyx_temp_pointer_0;
          Py_ssize_t __pyx_temp_idx_0;
          __pyx_temp_pointer_0 = __pyx_v_self->memory.data;
          for (__pyx_temp_idx_0 = 0; __pyx_temp_idx_0 < __pyx_temp_extent_0; __pyx_temp_idx_0++) {
            *((__pyx_t_5numpy_float32_t *) __pyx_temp_pointer_0) = __pyx_temp_scalar;
            __pyx_temp_pointer_0 += __pyx_temp_stride_0;
          }
      }
  }
 1620: 
 1621: 
+1622: cdef class VCFFilterParser(VCFFieldParserBase):
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFilterParser {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFieldParserBase __pyx_base;
  __Pyx_memviewslice memory;
  PyObject *filter_keys;
  Py_ssize_t n_filters;
  char **filter_keys_cstr;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFilterParser {
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFieldParserBase __pyx_base;
  int (*parse_filter)(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFilterParser *, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *);
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFilterParser *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFFilterParser;

 1623: 
 1624:     cdef:
 1625:         np.uint8_t[:, :] memory
 1626:         tuple filter_keys
 1627:         Py_ssize_t n_filters
 1628:         char** filter_keys_cstr
 1629: 
+1630:     def __cinit__(self, filter_keys, chunk_length):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_15VCFFilterParser_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_15VCFFilterParser_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_filter_keys = 0;
  CYTHON_UNUSED PyObject *__pyx_v_chunk_length = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_filter_keys,&__pyx_n_s_chunk_length,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] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_filter_keys)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_chunk_length)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, 1); __PYX_ERR(0, 1630, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 1630, __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_filter_keys = values[0];
    __pyx_v_chunk_length = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1630, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFFilterParser.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_15VCFFilterParser___cinit__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFilterParser *)__pyx_v_self), __pyx_v_filter_keys, __pyx_v_chunk_length);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_15VCFFilterParser___cinit__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFilterParser *__pyx_v_self, PyObject *__pyx_v_filter_keys, CYTHON_UNUSED PyObject *__pyx_v_chunk_length) {
  Py_ssize_t __pyx_v_i;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFFilterParser.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 1631:         cdef:
 1632:             Py_ssize_t i
 1633:         # N.B., need to keep a reference to these, otherwise C strings will not behave
+1634:         self.filter_keys = tuple(sorted(filter_keys))
  __pyx_t_2 = PySequence_List(__pyx_v_filter_keys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1634, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_3 = PyList_Sort(__pyx_t_1); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 1634, __pyx_L1_error)
  if (unlikely(__pyx_t_1 == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(0, 1634, __pyx_L1_error)
  }
  __pyx_t_2 = PyList_AsTuple(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1634, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_GOTREF(__pyx_v_self->filter_keys);
  __Pyx_DECREF(__pyx_v_self->filter_keys);
  __pyx_v_self->filter_keys = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;
+1635:         self.n_filters = len(self.filter_keys)
  __pyx_t_2 = __pyx_v_self->filter_keys;
  __Pyx_INCREF(__pyx_t_2);
  if (unlikely(__pyx_t_2 == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(0, 1635, __pyx_L1_error)
  }
  __pyx_t_4 = PyTuple_GET_SIZE(__pyx_t_2); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1635, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_self->n_filters = __pyx_t_4;
+1636:         self.filter_keys_cstr = <char**> malloc(sizeof(char*) * self.n_filters)
  __pyx_v_self->filter_keys_cstr = ((char **)malloc(((sizeof(char *)) * __pyx_v_self->n_filters)));
+1637:         for i in range(self.n_filters):
  __pyx_t_4 = __pyx_v_self->n_filters;
  for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
    __pyx_v_i = __pyx_t_5;
+1638:             self.filter_keys_cstr[i] = <char*> self.filter_keys[i]
    if (unlikely(__pyx_v_self->filter_keys == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(0, 1638, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyObject_AsWritableString(PyTuple_GET_ITEM(__pyx_v_self->filter_keys, __pyx_v_i)); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(0, 1638, __pyx_L1_error)
    (__pyx_v_self->filter_keys_cstr[__pyx_v_i]) = ((char *)__pyx_t_6);
  }
 1639: 
+1640:     def __init__(self, filter_keys, chunk_length):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_15VCFFilterParser_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_15VCFFilterParser_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_filter_keys = 0;
  PyObject *__pyx_v_chunk_length = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_filter_keys,&__pyx_n_s_chunk_length,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] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_filter_keys)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_chunk_length)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 1640, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1640, __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_filter_keys = values[0];
    __pyx_v_chunk_length = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1640, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFFilterParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_15VCFFilterParser_2__init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFilterParser *)__pyx_v_self), __pyx_v_filter_keys, __pyx_v_chunk_length);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_15VCFFilterParser_2__init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFilterParser *__pyx_v_self, PyObject *__pyx_v_filter_keys, PyObject *__pyx_v_chunk_length) {
  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_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFFilterParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+1641:         super(VCFFilterParser, self).__init__(key=b'FILTER', dtype='bool', number=len(filter_keys), fill=0,
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1641, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFFilterParser));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFFilterParser));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFFilterParser));
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self));
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1641, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1641, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1641, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_key, __pyx_n_b_FILTER) < 0) __PYX_ERR(0, 1641, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_n_s_bool) < 0) __PYX_ERR(0, 1641, __pyx_L1_error)
  __pyx_t_3 = PyObject_Length(__pyx_v_filter_keys); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1641, __pyx_L1_error)
  __pyx_t_4 = PyInt_FromSsize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1641, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_number, __pyx_t_4) < 0) __PYX_ERR(0, 1641, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_fill, __pyx_int_0) < 0) __PYX_ERR(0, 1641, __pyx_L1_error)
/* … */
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1641, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+1642:                                               chunk_length=chunk_length)
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_chunk_length, __pyx_v_chunk_length) < 0) __PYX_ERR(0, 1641, __pyx_L1_error)
 1643: 
+1644:     def __dealloc__(self):
/* Python wrapper */
static void __pyx_pw_5allel_3opt_11io_vcf_read_15VCFFilterParser_5__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_5allel_3opt_11io_vcf_read_15VCFFilterParser_5__dealloc__(PyObject *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_pf_5allel_3opt_11io_vcf_read_15VCFFilterParser_4__dealloc__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFilterParser *)__pyx_v_self));

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

static void __pyx_pf_5allel_3opt_11io_vcf_read_15VCFFilterParser_4__dealloc__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFilterParser *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__", 0);
/* … */
  /* function exit code */
  __Pyx_RefNannyFinishContext();
}
+1645:         if self.filter_keys_cstr is not NULL:
  __pyx_t_1 = ((__pyx_v_self->filter_keys_cstr != NULL) != 0);
  if (__pyx_t_1) {
/* … */
  }
+1646:             free(self.filter_keys_cstr)
    free(__pyx_v_self->filter_keys_cstr);
 1647: 
+1648:     cdef int parse(self, InputStreamBase stream, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_15VCFFilterParser_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFilterParser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFFilterParser.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 1649:         cdef:
 1650:             Py_ssize_t filter_index
 1651: 
 1652:         # check for explicit missing value
+1653:         if stream.c == PERIOD:
  __pyx_t_1 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_PERIOD) != 0);
  if (__pyx_t_1) {
/* … */
  }
 1654:             # treat leading period as missing, regardless of what comes next
+1655:             vcf_parse_missing(stream, context)
    __pyx_t_2 = __pyx_f_5allel_3opt_11io_vcf_read_vcf_parse_missing(__pyx_v_stream, __pyx_v_context); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 1655, __pyx_L1_error)
+1656:             return 0
    __pyx_r = 0;
    goto __pyx_L0;
 1657: 
 1658:         # reset temporary buffer
+1659:         CharVector_clear(&context.temp)
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->temp));
 1660: 
+1661:         while True:
  while (1) {
 1662: 
+1663:             if stream.c == 0:
    __pyx_t_1 = ((__pyx_v_stream->c == 0) != 0);
    if (__pyx_t_1) {
/* … */
    }
+1664:                 self.parse_filter(context)
      __pyx_t_2 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFilterParser *)__pyx_v_self->__pyx_base.__pyx_vtab)->parse_filter(__pyx_v_self, __pyx_v_context); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 1664, __pyx_L1_error)
+1665:                 context.state = VCFState.EOF
      __pyx_v_context->state = __pyx_e_5allel_3opt_11io_vcf_read_EOF;
+1666:                 break
      goto __pyx_L5_break;
 1667: 
+1668:             elif stream.c == LF or stream.c == CR:
    __pyx_t_3 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_1 = __pyx_t_3;
      goto __pyx_L7_bool_binop_done;
    }
    __pyx_t_3 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_CR) != 0);
    __pyx_t_1 = __pyx_t_3;
    __pyx_L7_bool_binop_done:;
    if (__pyx_t_1) {
/* … */
    }
+1669:                 self.parse_filter(context)
      __pyx_t_2 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFilterParser *)__pyx_v_self->__pyx_base.__pyx_vtab)->parse_filter(__pyx_v_self, __pyx_v_context); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 1669, __pyx_L1_error)
+1670:                 context.state = VCFState.EOL
      __pyx_v_context->state = __pyx_e_5allel_3opt_11io_vcf_read_EOL;
+1671:                 break
      goto __pyx_L5_break;
 1672: 
+1673:             elif stream.c == TAB:
    __pyx_t_1 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_TAB) != 0);
    if (__pyx_t_1) {
/* … */
    }
+1674:                 self.parse_filter(context)
      __pyx_t_2 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFilterParser *)__pyx_v_self->__pyx_base.__pyx_vtab)->parse_filter(__pyx_v_self, __pyx_v_context); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 1674, __pyx_L1_error)
 1675:                 # advance input stream beyond tab
+1676:                 stream.advance()
      __pyx_t_2 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 1676, __pyx_L1_error)
+1677:                 context.state += 1
      __pyx_v_context->state = (__pyx_v_context->state + 1);
+1678:                 break
      goto __pyx_L5_break;
 1679: 
+1680:             elif stream.c == COMMA or stream.c == COLON or stream.c == SEMICOLON:
    __pyx_t_3 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_COMMA) != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_1 = __pyx_t_3;
      goto __pyx_L9_bool_binop_done;
    }
    __pyx_t_3 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_COLON) != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_1 = __pyx_t_3;
      goto __pyx_L9_bool_binop_done;
    }
    __pyx_t_3 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_SEMICOLON) != 0);
    __pyx_t_1 = __pyx_t_3;
    __pyx_L9_bool_binop_done:;
    if (__pyx_t_1) {
/* … */
      goto __pyx_L6;
    }
 1681:                 # some of these delimiters are not strictly kosher, but have seen them
+1682:                 self.parse_filter(context)
      __pyx_t_2 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFilterParser *)__pyx_v_self->__pyx_base.__pyx_vtab)->parse_filter(__pyx_v_self, __pyx_v_context); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 1682, __pyx_L1_error)
+1683:                 CharVector_clear(&context.temp)
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->temp));
 1684: 
 1685:             else:
+1686:                 CharVector_append(&context.temp, stream.c)
    /*else*/ {
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_append((&__pyx_v_context->temp), __pyx_v_stream->c);
    }
    __pyx_L6:;
 1687: 
 1688:             # advance input stream
+1689:             stream.advance()
    __pyx_t_2 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 1689, __pyx_L1_error)
  }
  __pyx_L5_break:;
 1690: 
+1691:         return 1
  __pyx_r = 1;
  goto __pyx_L0;
 1692: 
+1693:     cdef int parse_filter(self, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_15VCFFilterParser_parse_filter(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFilterParser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  Py_ssize_t __pyx_v_filter_index;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse_filter", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 1694:         cdef:
 1695:             Py_ssize_t filter_index
 1696:             Py_ssize_t i
 1697: 
+1698:         if context.temp.size == 0:
  __pyx_t_1 = ((__pyx_v_context->temp.size == 0) != 0);
  if (__pyx_t_1) {
/* … */
  }
 1699:             # not strictly kosher, treat as missing/empty
+1700:             return 0
    __pyx_r = 0;
    goto __pyx_L0;
 1701: 
+1702:         CharVector_terminate(&context.temp)
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_terminate((&__pyx_v_context->temp));
 1703: 
 1704:         # search through filters to find index
+1705:         filter_index = search_sorted_cstr(context.temp.data, self.filter_keys_cstr, self.n_filters)
  __pyx_v_filter_index = __pyx_f_5allel_3opt_11io_vcf_read_search_sorted_cstr(__pyx_v_context->temp.data, __pyx_v_self->filter_keys_cstr, __pyx_v_self->n_filters);
 1706: 
 1707:         # store value
+1708:         if filter_index >= 0:
  __pyx_t_1 = ((__pyx_v_filter_index >= 0) != 0);
  if (__pyx_t_1) {
/* … */
  }
+1709:             self.memory[context.chunk_variant_index, filter_index] = 1
    __pyx_t_2 = __pyx_v_context->chunk_variant_index;
    __pyx_t_3 = __pyx_v_filter_index;
    *((__pyx_t_5numpy_uint8_t *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_self->memory.data + __pyx_t_2 * __pyx_v_self->memory.strides[0]) ) + __pyx_t_3 * __pyx_v_self->memory.strides[1]) )) = 1;
 1710: 
+1711:     cdef int malloc_chunk(self) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_15VCFFilterParser_malloc_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFilterParser *__pyx_v_self) {
  PyObject *__pyx_v_shape = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("malloc_chunk", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFFilterParser.malloc_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_shape);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+1712:         shape = (self.chunk_length, self.n_filters)
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.chunk_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1712, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->n_filters); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1712, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1712, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_v_shape = __pyx_t_3;
  __pyx_t_3 = 0;
+1713:         self.values = np.zeros(shape, dtype=bool)
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1713, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1713, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1713, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_shape);
  __Pyx_GIVEREF(__pyx_v_shape);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_shape);
  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1713, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, ((PyObject*)&PyBool_Type)) < 0) __PYX_ERR(0, 1713, __pyx_L1_error)
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1713, __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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1713, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_4);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.values);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.values));
  __pyx_v_self->__pyx_base.values = ((PyArrayObject *)__pyx_t_4);
  __pyx_t_4 = 0;
+1714:         self.memory = self.values.view('u1')
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.values), __pyx_n_s_view); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1714, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__42, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1714, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsds_nn___pyx_t_5numpy_uint8_t(__pyx_t_1);
  if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 1714, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_XDEC_MEMVIEW(&__pyx_v_self->memory, 0);
  __pyx_v_self->memory = __pyx_t_5;
  __pyx_t_5.memview = NULL;
  __pyx_t_5.data = NULL;
/* … */
  __pyx_tuple__42 = PyTuple_Pack(1, __pyx_n_s_u1); if (unlikely(!__pyx_tuple__42)) __PYX_ERR(0, 1714, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__42);
  __Pyx_GIVEREF(__pyx_tuple__42);
 1715: 
+1716:     cdef int make_chunk(self, chunk, limit=None) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_15VCFFilterParser_make_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFilterParser *__pyx_v_self, PyObject *__pyx_v_chunk, struct __pyx_opt_args_5allel_3opt_11io_vcf_read_15VCFFilterParser_make_chunk *__pyx_optional_args) {
  PyObject *__pyx_v_limit = ((PyObject *)Py_None);
  PyObject *__pyx_v_i = NULL;
  PyObject *__pyx_v_f = NULL;
  PyObject *__pyx_v_field = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("make_chunk", 0);
  if (__pyx_optional_args) {
    if (__pyx_optional_args->__pyx_n > 0) {
      __pyx_v_limit = __pyx_optional_args->limit;
    }
  }
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFFilterParser.make_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_i);
  __Pyx_XDECREF(__pyx_v_f);
  __Pyx_XDECREF(__pyx_v_field);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
struct __pyx_opt_args_5allel_3opt_11io_vcf_read_15VCFFilterParser_make_chunk {
  int __pyx_n;
  PyObject *limit;
};
+1717:         for i, f in enumerate(self.filter_keys):
  __Pyx_INCREF(__pyx_int_0);
  __pyx_t_1 = __pyx_int_0;
  __pyx_t_2 = __pyx_v_self->filter_keys; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;
  for (;;) {
    if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_4); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 1717, __pyx_L1_error)
    #else
    __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1717, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    #endif
    __Pyx_XDECREF_SET(__pyx_v_f, __pyx_t_4);
    __pyx_t_4 = 0;
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_1);
    __pyx_t_4 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1717, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1);
    __pyx_t_1 = __pyx_t_4;
    __pyx_t_4 = 0;
/* … */
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1718:             f = text_type(f, 'utf8')
    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_text_type); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1718, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_7 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_5)) {
      PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_f, __pyx_n_s_utf8};
      __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1718, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_GOTREF(__pyx_t_4);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
      PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_f, __pyx_n_s_utf8};
      __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1718, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_GOTREF(__pyx_t_4);
    } else
    #endif
    {
      __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1718, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      if (__pyx_t_6) {
        __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL;
      }
      __Pyx_INCREF(__pyx_v_f);
      __Pyx_GIVEREF(__pyx_v_f);
      PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_v_f);
      __Pyx_INCREF(__pyx_n_s_utf8);
      __Pyx_GIVEREF(__pyx_n_s_utf8);
      PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_n_s_utf8);
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1718, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    }
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF_SET(__pyx_v_f, __pyx_t_4);
    __pyx_t_4 = 0;
+1719:             field = u'variants/FILTER_' + f
    __pyx_t_4 = PyNumber_Add(__pyx_kp_u_variants_FILTER, __pyx_v_f); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1719, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_XDECREF_SET(__pyx_v_field, __pyx_t_4);
    __pyx_t_4 = 0;
+1720:             chunk[field] = self.values[:limit, i]
    __pyx_t_4 = PySlice_New(Py_None, __pyx_v_limit, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1720, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1720, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
    __Pyx_INCREF(__pyx_v_i);
    __Pyx_GIVEREF(__pyx_v_i);
    PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_i);
    __pyx_t_4 = 0;
    __pyx_t_4 = PyObject_GetItem(((PyObject *)__pyx_v_self->__pyx_base.values), __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1720, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(PyObject_SetItem(__pyx_v_chunk, __pyx_v_field, __pyx_t_4) < 0)) __PYX_ERR(0, 1720, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 1721: 
 1722: 
 1723: ##########################################################################################
 1724: # INFO parsing
 1725: 
 1726: 
+1727: cdef class VCFInfoParser(VCFFieldParserBase):
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoParser {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFieldParserBase __pyx_base;
  PyObject *info_keys;
  Py_ssize_t n_infos;
  char **info_keys_cstr;
  PyObject *info_parsers;
  PyObject **info_parsers_cptr;
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoParserBase *skip_parser;
  PyObject *fills;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFInfoParser {
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFieldParserBase __pyx_base;
  int (*parse_info)(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoParser *, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *);
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFInfoParser *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFInfoParser;

 1728: 
 1729:     cdef:
 1730:         tuple info_keys
 1731:         Py_ssize_t n_infos
 1732:         char** info_keys_cstr
 1733:         tuple info_parsers
 1734:         PyObject** info_parsers_cptr
 1735:         VCFInfoParserBase skip_parser
 1736:         object fills
 1737: 
+1738:     def __cinit__(self, info_keys, types, numbers, chunk_length, fills):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_13VCFInfoParser_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_13VCFInfoParser_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_info_keys = 0;
  PyObject *__pyx_v_types = 0;
  PyObject *__pyx_v_numbers = 0;
  PyObject *__pyx_v_chunk_length = 0;
  PyObject *__pyx_v_fills = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_info_keys,&__pyx_n_s_types,&__pyx_n_s_numbers,&__pyx_n_s_chunk_length,&__pyx_n_s_fills,0};
    PyObject* values[5] = {0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_info_keys)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_types)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 5, 5, 1); __PYX_ERR(0, 1738, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_numbers)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 5, 5, 2); __PYX_ERR(0, 1738, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_chunk_length)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 5, 5, 3); __PYX_ERR(0, 1738, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fills)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 5, 5, 4); __PYX_ERR(0, 1738, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 1738, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
    }
    __pyx_v_info_keys = values[0];
    __pyx_v_types = values[1];
    __pyx_v_numbers = values[2];
    __pyx_v_chunk_length = values[3];
    __pyx_v_fills = values[4];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1738, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFInfoParser.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_13VCFInfoParser___cinit__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoParser *)__pyx_v_self), __pyx_v_info_keys, __pyx_v_types, __pyx_v_numbers, __pyx_v_chunk_length, __pyx_v_fills);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_13VCFInfoParser___cinit__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoParser *__pyx_v_self, PyObject *__pyx_v_info_keys, PyObject *__pyx_v_types, PyObject *__pyx_v_numbers, PyObject *__pyx_v_chunk_length, PyObject *__pyx_v_fills) {
  Py_ssize_t __pyx_v_i;
  PyObject *__pyx_v_info_parsers = NULL;
  PyObject *__pyx_v_key = NULL;
  PyObject *__pyx_v_t = NULL;
  PyObject *__pyx_v_n = NULL;
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoParserBase *__pyx_v_parser = NULL;
  PyObject *__pyx_v_fill = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFInfoParser.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_info_parsers);
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XDECREF(__pyx_v_t);
  __Pyx_XDECREF(__pyx_v_n);
  __Pyx_XDECREF((PyObject *)__pyx_v_parser);
  __Pyx_XDECREF(__pyx_v_fill);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 1739: 
 1740:         # setup INFO keys
 1741:         # N.B., need to keep a reference to these, otherwise C strings will not behave
+1742:         self.info_keys = tuple(sorted(info_keys))
  __pyx_t_2 = PySequence_List(__pyx_v_info_keys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1742, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_3 = PyList_Sort(__pyx_t_1); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 1742, __pyx_L1_error)
  if (unlikely(__pyx_t_1 == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(0, 1742, __pyx_L1_error)
  }
  __pyx_t_2 = PyList_AsTuple(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1742, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_GOTREF(__pyx_v_self->info_keys);
  __Pyx_DECREF(__pyx_v_self->info_keys);
  __pyx_v_self->info_keys = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;
+1743:         self.n_infos = len(self.info_keys)
  __pyx_t_2 = __pyx_v_self->info_keys;
  __Pyx_INCREF(__pyx_t_2);
  if (unlikely(__pyx_t_2 == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(0, 1743, __pyx_L1_error)
  }
  __pyx_t_4 = PyTuple_GET_SIZE(__pyx_t_2); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1743, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_self->n_infos = __pyx_t_4;
 1744: 
 1745:         # setup INFO keys as C strings for nogil searching
+1746:         self.info_keys_cstr = <char**> malloc(sizeof(char*) * self.n_infos)
  __pyx_v_self->info_keys_cstr = ((char **)malloc(((sizeof(char *)) * __pyx_v_self->n_infos)));
+1747:         for i in range(self.n_infos):
  __pyx_t_4 = __pyx_v_self->n_infos;
  for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
    __pyx_v_i = __pyx_t_5;
+1748:             self.info_keys_cstr[i] = <char*> self.info_keys[i]
    if (unlikely(__pyx_v_self->info_keys == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(0, 1748, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyObject_AsWritableString(PyTuple_GET_ITEM(__pyx_v_self->info_keys, __pyx_v_i)); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(0, 1748, __pyx_L1_error)
    (__pyx_v_self->info_keys_cstr[__pyx_v_i]) = ((char *)__pyx_t_6);
  }
 1749: 
 1750:         # setup INFO parsers
+1751:         info_parsers = list()
  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1751, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_info_parsers = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;
+1752:         self.skip_parser = VCFInfoSkipParser(key=None)
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1752, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_key, Py_None) < 0) __PYX_ERR(0, 1752, __pyx_L1_error)
  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoSkipParser), __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1752, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->skip_parser);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->skip_parser));
  __pyx_v_self->skip_parser = ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoParserBase *)__pyx_t_1);
  __pyx_t_1 = 0;
+1753:         for key in self.info_keys:
  if (unlikely(__pyx_v_self->info_keys == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(0, 1753, __pyx_L1_error)
  }
  __pyx_t_1 = __pyx_v_self->info_keys; __Pyx_INCREF(__pyx_t_1); __pyx_t_4 = 0;
  for (;;) {
    if (__pyx_t_4 >= 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_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1753, __pyx_L1_error)
    #else
    __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1753, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    #endif
    __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_2);
    __pyx_t_2 = 0;
/* … */
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1754:             t = types[key]
    __pyx_t_2 = PyObject_GetItem(__pyx_v_types, __pyx_v_key); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1754, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_XDECREF_SET(__pyx_v_t, __pyx_t_2);
    __pyx_t_2 = 0;
+1755:             n = numbers[key]
    __pyx_t_2 = PyObject_GetItem(__pyx_v_numbers, __pyx_v_key); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1755, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_XDECREF_SET(__pyx_v_n, __pyx_t_2);
    __pyx_t_2 = 0;
+1756:             if t == np.dtype(bool) or n == 0:
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1756, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject*)&PyBool_Type));
    __Pyx_GIVEREF(((PyObject*)&PyBool_Type));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject*)&PyBool_Type));
    __pyx_t_8 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_2, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1756, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = PyObject_RichCompare(__pyx_v_t, __pyx_t_8, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1756, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1756, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (!__pyx_t_9) {
    } else {
      __pyx_t_7 = __pyx_t_9;
      goto __pyx_L8_bool_binop_done;
    }
    __pyx_t_2 = __Pyx_PyInt_EqObjC(__pyx_v_n, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1756, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1756, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_7 = __pyx_t_9;
    __pyx_L8_bool_binop_done:;
    if (__pyx_t_7) {
/* … */
      goto __pyx_L7;
    }
+1757:                 if t != np.dtype(bool):
      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1757, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_INCREF(((PyObject*)&PyBool_Type));
      __Pyx_GIVEREF(((PyObject*)&PyBool_Type));
      PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject*)&PyBool_Type));
      __pyx_t_8 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_2, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1757, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = PyObject_RichCompare(__pyx_v_t, __pyx_t_8, Py_NE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1757, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1757, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (__pyx_t_7) {
/* … */
      }
+1758:                     warnings.warn('cannot have non-bool dtype for field with number 0, ignoring type %r' % t)
        __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_warnings); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1758, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_warn); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1758, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_10);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_8 = __Pyx_PyString_Format(__pyx_kp_s_cannot_have_non_bool_dtype_for_f, __pyx_v_t); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1758, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_11 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) {
          __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_10);
          if (likely(__pyx_t_11)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
            __Pyx_INCREF(__pyx_t_11);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_10, function);
          }
        }
        if (!__pyx_t_11) {
          __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1758, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_GOTREF(__pyx_t_2);
        } else {
          #if CYTHON_FAST_PYCALL
          if (PyFunction_Check(__pyx_t_10)) {
            PyObject *__pyx_temp[2] = {__pyx_t_11, __pyx_t_8};
            __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1758, __pyx_L1_error)
            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 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_10)) {
            PyObject *__pyx_temp[2] = {__pyx_t_11, __pyx_t_8};
            __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1758, __pyx_L1_error)
            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
            __Pyx_GOTREF(__pyx_t_2);
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          } else
          #endif
          {
            __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1758, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_12);
            __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_11); __pyx_t_11 = NULL;
            __Pyx_GIVEREF(__pyx_t_8);
            PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_t_8);
            __pyx_t_8 = 0;
            __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_12, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1758, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_2);
            __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
          }
        }
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+1759:                 parser = VCFInfoFlagParser(key, chunk_length=chunk_length)
      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1759, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_INCREF(__pyx_v_key);
      __Pyx_GIVEREF(__pyx_v_key);
      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_key);
      __pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1759, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_chunk_length, __pyx_v_chunk_length) < 0) __PYX_ERR(0, 1759, __pyx_L1_error)
      __pyx_t_12 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoFlagParser), __pyx_t_2, __pyx_t_10); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1759, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_XDECREF_SET(__pyx_v_parser, ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoParserBase *)__pyx_t_12));
      __pyx_t_12 = 0;
+1760:             elif t == np.dtype('int8'):
    __pyx_t_12 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__45, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1760, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_10 = PyObject_RichCompare(__pyx_v_t, __pyx_t_12, Py_EQ); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1760, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1760, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    if (__pyx_t_7) {
/* … */
      goto __pyx_L7;
    }
/* … */
  __pyx_tuple__45 = PyTuple_Pack(1, __pyx_n_s_int8); if (unlikely(!__pyx_tuple__45)) __PYX_ERR(0, 1760, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__45);
  __Pyx_GIVEREF(__pyx_tuple__45);
+1761:                 fill = fills.get(key, -1)
      __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_fills, __pyx_n_s_get); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1761, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __pyx_t_2 = NULL;
      __pyx_t_13 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_12))) {
        __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_12);
        if (likely(__pyx_t_2)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
          __Pyx_INCREF(__pyx_t_2);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_12, function);
          __pyx_t_13 = 1;
        }
      }
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_12)) {
        PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_key, __pyx_int_neg_1};
        __pyx_t_10 = __Pyx_PyFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_13, 2+__pyx_t_13); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1761, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_GOTREF(__pyx_t_10);
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_12)) {
        PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_key, __pyx_int_neg_1};
        __pyx_t_10 = __Pyx_PyCFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_13, 2+__pyx_t_13); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1761, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_GOTREF(__pyx_t_10);
      } else
      #endif
      {
        __pyx_t_8 = PyTuple_New(2+__pyx_t_13); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1761, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        if (__pyx_t_2) {
          __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_2); __pyx_t_2 = NULL;
        }
        __Pyx_INCREF(__pyx_v_key);
        __Pyx_GIVEREF(__pyx_v_key);
        PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_13, __pyx_v_key);
        __Pyx_INCREF(__pyx_int_neg_1);
        __Pyx_GIVEREF(__pyx_int_neg_1);
        PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_13, __pyx_int_neg_1);
        __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_8, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1761, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_10);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      }
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_XDECREF_SET(__pyx_v_fill, __pyx_t_10);
      __pyx_t_10 = 0;
+1762:                 parser = VCFInfoInt8Parser(key, number=n,
      __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1762, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_INCREF(__pyx_v_key);
      __Pyx_GIVEREF(__pyx_v_key);
      PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_v_key);
      __pyx_t_12 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1762, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_number, __pyx_v_n) < 0) __PYX_ERR(0, 1762, __pyx_L1_error)
/* … */
      __pyx_t_8 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoInt8Parser), __pyx_t_10, __pyx_t_12); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1762, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_XDECREF_SET(__pyx_v_parser, ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoParserBase *)__pyx_t_8));
      __pyx_t_8 = 0;
+1763:                                            fill=fill, chunk_length=chunk_length)
      if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_fill, __pyx_v_fill) < 0) __PYX_ERR(0, 1762, __pyx_L1_error)
      if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_chunk_length, __pyx_v_chunk_length) < 0) __PYX_ERR(0, 1762, __pyx_L1_error)
+1764:             elif t == np.dtype('int16'):
    __pyx_t_8 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__46, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1764, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_12 = PyObject_RichCompare(__pyx_v_t, __pyx_t_8, Py_EQ); __Pyx_XGOTREF(__pyx_t_12); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1764, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1764, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    if (__pyx_t_7) {
/* … */
      goto __pyx_L7;
    }
/* … */
  __pyx_tuple__46 = PyTuple_Pack(1, __pyx_n_s_int16); if (unlikely(!__pyx_tuple__46)) __PYX_ERR(0, 1764, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__46);
  __Pyx_GIVEREF(__pyx_tuple__46);
+1765:                 fill = fills.get(key, -1)
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_fills, __pyx_n_s_get); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1765, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_10 = NULL;
      __pyx_t_13 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
        __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_8);
        if (likely(__pyx_t_10)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
          __Pyx_INCREF(__pyx_t_10);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_8, function);
          __pyx_t_13 = 1;
        }
      }
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_8)) {
        PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_v_key, __pyx_int_neg_1};
        __pyx_t_12 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_13, 2+__pyx_t_13); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1765, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_GOTREF(__pyx_t_12);
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) {
        PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_v_key, __pyx_int_neg_1};
        __pyx_t_12 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_13, 2+__pyx_t_13); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1765, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_GOTREF(__pyx_t_12);
      } else
      #endif
      {
        __pyx_t_2 = PyTuple_New(2+__pyx_t_13); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1765, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        if (__pyx_t_10) {
          __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_10); __pyx_t_10 = NULL;
        }
        __Pyx_INCREF(__pyx_v_key);
        __Pyx_GIVEREF(__pyx_v_key);
        PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_13, __pyx_v_key);
        __Pyx_INCREF(__pyx_int_neg_1);
        __Pyx_GIVEREF(__pyx_int_neg_1);
        PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_13, __pyx_int_neg_1);
        __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_2, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1765, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_12);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      }
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF_SET(__pyx_v_fill, __pyx_t_12);
      __pyx_t_12 = 0;
+1766:                 parser = VCFInfoInt16Parser(key, number=n, chunk_length=chunk_length,
      __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1766, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_INCREF(__pyx_v_key);
      __Pyx_GIVEREF(__pyx_v_key);
      PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_v_key);
      __pyx_t_8 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1766, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_number, __pyx_v_n) < 0) __PYX_ERR(0, 1766, __pyx_L1_error)
      if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_chunk_length, __pyx_v_chunk_length) < 0) __PYX_ERR(0, 1766, __pyx_L1_error)
/* … */
      __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoInt16Parser), __pyx_t_12, __pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1766, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF_SET(__pyx_v_parser, ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoParserBase *)__pyx_t_2));
      __pyx_t_2 = 0;
+1767:                                             fill=fill)
      if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_fill, __pyx_v_fill) < 0) __PYX_ERR(0, 1766, __pyx_L1_error)
+1768:             elif t == np.dtype('int32'):
    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__47, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1768, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_8 = PyObject_RichCompare(__pyx_v_t, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1768, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1768, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (__pyx_t_7) {
/* … */
      goto __pyx_L7;
    }
/* … */
  __pyx_tuple__47 = PyTuple_Pack(1, __pyx_n_s_int32); if (unlikely(!__pyx_tuple__47)) __PYX_ERR(0, 1768, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__47);
  __Pyx_GIVEREF(__pyx_tuple__47);
+1769:                 fill = fills.get(key, -1)
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_fills, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1769, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_12 = NULL;
      __pyx_t_13 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_12)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_12);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
          __pyx_t_13 = 1;
        }
      }
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_2)) {
        PyObject *__pyx_temp[3] = {__pyx_t_12, __pyx_v_key, __pyx_int_neg_1};
        __pyx_t_8 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_13, 2+__pyx_t_13); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1769, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
        __Pyx_GOTREF(__pyx_t_8);
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
        PyObject *__pyx_temp[3] = {__pyx_t_12, __pyx_v_key, __pyx_int_neg_1};
        __pyx_t_8 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_13, 2+__pyx_t_13); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1769, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
        __Pyx_GOTREF(__pyx_t_8);
      } else
      #endif
      {
        __pyx_t_10 = PyTuple_New(2+__pyx_t_13); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1769, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_10);
        if (__pyx_t_12) {
          __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_12); __pyx_t_12 = NULL;
        }
        __Pyx_INCREF(__pyx_v_key);
        __Pyx_GIVEREF(__pyx_v_key);
        PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_13, __pyx_v_key);
        __Pyx_INCREF(__pyx_int_neg_1);
        __Pyx_GIVEREF(__pyx_int_neg_1);
        PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_13, __pyx_int_neg_1);
        __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_10, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1769, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      }
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF_SET(__pyx_v_fill, __pyx_t_8);
      __pyx_t_8 = 0;
+1770:                 parser = VCFInfoInt32Parser(key, number=n, chunk_length=chunk_length,
      __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1770, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_INCREF(__pyx_v_key);
      __Pyx_GIVEREF(__pyx_v_key);
      PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_key);
      __pyx_t_2 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1770, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_number, __pyx_v_n) < 0) __PYX_ERR(0, 1770, __pyx_L1_error)
      if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_chunk_length, __pyx_v_chunk_length) < 0) __PYX_ERR(0, 1770, __pyx_L1_error)
/* … */
      __pyx_t_10 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoInt32Parser), __pyx_t_8, __pyx_t_2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1770, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF_SET(__pyx_v_parser, ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoParserBase *)__pyx_t_10));
      __pyx_t_10 = 0;
+1771:                                             fill=fill)
      if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_fill, __pyx_v_fill) < 0) __PYX_ERR(0, 1770, __pyx_L1_error)
+1772:             elif t == np.dtype('int64'):
    __pyx_t_10 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__48, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1772, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_2 = PyObject_RichCompare(__pyx_v_t, __pyx_t_10, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1772, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1772, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (__pyx_t_7) {
/* … */
      goto __pyx_L7;
    }
/* … */
  __pyx_tuple__48 = PyTuple_Pack(1, __pyx_n_s_int64); if (unlikely(!__pyx_tuple__48)) __PYX_ERR(0, 1772, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__48);
  __Pyx_GIVEREF(__pyx_tuple__48);
+1773:                 fill = fills.get(key, -1)
      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_fills, __pyx_n_s_get); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1773, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_8 = NULL;
      __pyx_t_13 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) {
        __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_10);
        if (likely(__pyx_t_8)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
          __Pyx_INCREF(__pyx_t_8);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_10, function);
          __pyx_t_13 = 1;
        }
      }
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_10)) {
        PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_v_key, __pyx_int_neg_1};
        __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_13, 2+__pyx_t_13); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1773, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_GOTREF(__pyx_t_2);
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) {
        PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_v_key, __pyx_int_neg_1};
        __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_13, 2+__pyx_t_13); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1773, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_GOTREF(__pyx_t_2);
      } else
      #endif
      {
        __pyx_t_12 = PyTuple_New(2+__pyx_t_13); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1773, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_12);
        if (__pyx_t_8) {
          __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_8); __pyx_t_8 = NULL;
        }
        __Pyx_INCREF(__pyx_v_key);
        __Pyx_GIVEREF(__pyx_v_key);
        PyTuple_SET_ITEM(__pyx_t_12, 0+__pyx_t_13, __pyx_v_key);
        __Pyx_INCREF(__pyx_int_neg_1);
        __Pyx_GIVEREF(__pyx_int_neg_1);
        PyTuple_SET_ITEM(__pyx_t_12, 1+__pyx_t_13, __pyx_int_neg_1);
        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_12, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1773, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      }
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_XDECREF_SET(__pyx_v_fill, __pyx_t_2);
      __pyx_t_2 = 0;
+1774:                 parser = VCFInfoInt64Parser(key, number=n, chunk_length=chunk_length,
      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1774, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_INCREF(__pyx_v_key);
      __Pyx_GIVEREF(__pyx_v_key);
      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_key);
      __pyx_t_10 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1774, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_number, __pyx_v_n) < 0) __PYX_ERR(0, 1774, __pyx_L1_error)
      if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_chunk_length, __pyx_v_chunk_length) < 0) __PYX_ERR(0, 1774, __pyx_L1_error)
/* … */
      __pyx_t_12 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoInt64Parser), __pyx_t_2, __pyx_t_10); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1774, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_XDECREF_SET(__pyx_v_parser, ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoParserBase *)__pyx_t_12));
      __pyx_t_12 = 0;
+1775:                                             fill=fill)
      if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_fill, __pyx_v_fill) < 0) __PYX_ERR(0, 1774, __pyx_L1_error)
+1776:             elif t == np.dtype('uint8'):
    __pyx_t_12 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__49, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1776, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_10 = PyObject_RichCompare(__pyx_v_t, __pyx_t_12, Py_EQ); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1776, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1776, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    if (__pyx_t_7) {
/* … */
      goto __pyx_L7;
    }
/* … */
  __pyx_tuple__49 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__49)) __PYX_ERR(0, 1776, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__49);
  __Pyx_GIVEREF(__pyx_tuple__49);
+1777:                 fill = fills.get(key, IU8.max)
      __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_fills, __pyx_n_s_get); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1777, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_IU8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1777, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_max); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1777, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = NULL;
      __pyx_t_13 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_12))) {
        __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_12);
        if (likely(__pyx_t_2)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
          __Pyx_INCREF(__pyx_t_2);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_12, function);
          __pyx_t_13 = 1;
        }
      }
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_12)) {
        PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_key, __pyx_t_8};
        __pyx_t_10 = __Pyx_PyFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_13, 2+__pyx_t_13); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1777, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_GOTREF(__pyx_t_10);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_12)) {
        PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_key, __pyx_t_8};
        __pyx_t_10 = __Pyx_PyCFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_13, 2+__pyx_t_13); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1777, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_GOTREF(__pyx_t_10);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      } else
      #endif
      {
        __pyx_t_11 = PyTuple_New(2+__pyx_t_13); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1777, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_11);
        if (__pyx_t_2) {
          __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_2); __pyx_t_2 = NULL;
        }
        __Pyx_INCREF(__pyx_v_key);
        __Pyx_GIVEREF(__pyx_v_key);
        PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_13, __pyx_v_key);
        __Pyx_GIVEREF(__pyx_t_8);
        PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_13, __pyx_t_8);
        __pyx_t_8 = 0;
        __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_11, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1777, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_10);
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      }
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_XDECREF_SET(__pyx_v_fill, __pyx_t_10);
      __pyx_t_10 = 0;
+1778:                 parser = VCFInfoUInt8Parser(key, number=n, chunk_length=chunk_length,
      __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1778, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_INCREF(__pyx_v_key);
      __Pyx_GIVEREF(__pyx_v_key);
      PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_v_key);
      __pyx_t_12 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1778, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_number, __pyx_v_n) < 0) __PYX_ERR(0, 1778, __pyx_L1_error)
      if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_chunk_length, __pyx_v_chunk_length) < 0) __PYX_ERR(0, 1778, __pyx_L1_error)
/* … */
      __pyx_t_11 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoUInt8Parser), __pyx_t_10, __pyx_t_12); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1778, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_XDECREF_SET(__pyx_v_parser, ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoParserBase *)__pyx_t_11));
      __pyx_t_11 = 0;
+1779:                                             fill=fill)
      if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_fill, __pyx_v_fill) < 0) __PYX_ERR(0, 1778, __pyx_L1_error)
+1780:             elif t == np.dtype('uint16'):
    __pyx_t_11 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__50, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1780, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_12 = PyObject_RichCompare(__pyx_v_t, __pyx_t_11, Py_EQ); __Pyx_XGOTREF(__pyx_t_12); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1780, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1780, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    if (__pyx_t_7) {
/* … */
      goto __pyx_L7;
    }
/* … */
  __pyx_tuple__50 = PyTuple_Pack(1, __pyx_n_s_uint16); if (unlikely(!__pyx_tuple__50)) __PYX_ERR(0, 1780, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__50);
  __Pyx_GIVEREF(__pyx_tuple__50);
+1781:                 fill = fills.get(key, IU16.max)
      __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_fills, __pyx_n_s_get); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1781, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
      __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_IU16); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1781, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_max); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1781, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __pyx_t_10 = NULL;
      __pyx_t_13 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_11))) {
        __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_11);
        if (likely(__pyx_t_10)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
          __Pyx_INCREF(__pyx_t_10);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_11, function);
          __pyx_t_13 = 1;
        }
      }
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_11)) {
        PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_v_key, __pyx_t_8};
        __pyx_t_12 = __Pyx_PyFunction_FastCall(__pyx_t_11, __pyx_temp+1-__pyx_t_13, 2+__pyx_t_13); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1781, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_GOTREF(__pyx_t_12);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_11)) {
        PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_v_key, __pyx_t_8};
        __pyx_t_12 = __Pyx_PyCFunction_FastCall(__pyx_t_11, __pyx_temp+1-__pyx_t_13, 2+__pyx_t_13); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1781, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_GOTREF(__pyx_t_12);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      } else
      #endif
      {
        __pyx_t_2 = PyTuple_New(2+__pyx_t_13); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1781, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        if (__pyx_t_10) {
          __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_10); __pyx_t_10 = NULL;
        }
        __Pyx_INCREF(__pyx_v_key);
        __Pyx_GIVEREF(__pyx_v_key);
        PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_13, __pyx_v_key);
        __Pyx_GIVEREF(__pyx_t_8);
        PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_13, __pyx_t_8);
        __pyx_t_8 = 0;
        __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_2, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1781, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_12);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      }
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_XDECREF_SET(__pyx_v_fill, __pyx_t_12);
      __pyx_t_12 = 0;
+1782:                 parser = VCFInfoUInt16Parser(key, number=n, chunk_length=chunk_length,
      __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1782, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_INCREF(__pyx_v_key);
      __Pyx_GIVEREF(__pyx_v_key);
      PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_v_key);
      __pyx_t_11 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1782, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
      if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_number, __pyx_v_n) < 0) __PYX_ERR(0, 1782, __pyx_L1_error)
      if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_chunk_length, __pyx_v_chunk_length) < 0) __PYX_ERR(0, 1782, __pyx_L1_error)
/* … */
      __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoUInt16Parser), __pyx_t_12, __pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1782, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_XDECREF_SET(__pyx_v_parser, ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoParserBase *)__pyx_t_2));
      __pyx_t_2 = 0;
+1783:                                              fill=fill)
      if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_fill, __pyx_v_fill) < 0) __PYX_ERR(0, 1782, __pyx_L1_error)
+1784:             elif t == np.dtype('uint32'):
    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__51, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1784, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_11 = PyObject_RichCompare(__pyx_v_t, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_11); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1784, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_11); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1784, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    if (__pyx_t_7) {
/* … */
      goto __pyx_L7;
    }
/* … */
  __pyx_tuple__51 = PyTuple_Pack(1, __pyx_n_s_uint32); if (unlikely(!__pyx_tuple__51)) __PYX_ERR(0, 1784, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__51);
  __Pyx_GIVEREF(__pyx_tuple__51);
+1785:                 fill = fills.get(key, IU32.max)
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_fills, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1785, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_IU32); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1785, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_max); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1785, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __pyx_t_12 = NULL;
      __pyx_t_13 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_12)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_12);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
          __pyx_t_13 = 1;
        }
      }
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_2)) {
        PyObject *__pyx_temp[3] = {__pyx_t_12, __pyx_v_key, __pyx_t_8};
        __pyx_t_11 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_13, 2+__pyx_t_13); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1785, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
        __Pyx_GOTREF(__pyx_t_11);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
        PyObject *__pyx_temp[3] = {__pyx_t_12, __pyx_v_key, __pyx_t_8};
        __pyx_t_11 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_13, 2+__pyx_t_13); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1785, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
        __Pyx_GOTREF(__pyx_t_11);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      } else
      #endif
      {
        __pyx_t_10 = PyTuple_New(2+__pyx_t_13); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1785, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_10);
        if (__pyx_t_12) {
          __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_12); __pyx_t_12 = NULL;
        }
        __Pyx_INCREF(__pyx_v_key);
        __Pyx_GIVEREF(__pyx_v_key);
        PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_13, __pyx_v_key);
        __Pyx_GIVEREF(__pyx_t_8);
        PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_13, __pyx_t_8);
        __pyx_t_8 = 0;
        __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_10, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1785, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_11);
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      }
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF_SET(__pyx_v_fill, __pyx_t_11);
      __pyx_t_11 = 0;
+1786:                 parser = VCFInfoUInt32Parser(key, number=n, chunk_length=chunk_length,
      __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1786, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
      __Pyx_INCREF(__pyx_v_key);
      __Pyx_GIVEREF(__pyx_v_key);
      PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_v_key);
      __pyx_t_2 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1786, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_number, __pyx_v_n) < 0) __PYX_ERR(0, 1786, __pyx_L1_error)
      if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_chunk_length, __pyx_v_chunk_length) < 0) __PYX_ERR(0, 1786, __pyx_L1_error)
/* … */
      __pyx_t_10 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoUInt32Parser), __pyx_t_11, __pyx_t_2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1786, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF_SET(__pyx_v_parser, ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoParserBase *)__pyx_t_10));
      __pyx_t_10 = 0;
+1787:                                              fill=fill)
      if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_fill, __pyx_v_fill) < 0) __PYX_ERR(0, 1786, __pyx_L1_error)
+1788:             elif t == np.dtype('uint64'):
    __pyx_t_10 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__52, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1788, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_2 = PyObject_RichCompare(__pyx_v_t, __pyx_t_10, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1788, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1788, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (__pyx_t_7) {
/* … */
      goto __pyx_L7;
    }
/* … */
  __pyx_tuple__52 = PyTuple_Pack(1, __pyx_n_s_uint64); if (unlikely(!__pyx_tuple__52)) __PYX_ERR(0, 1788, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__52);
  __Pyx_GIVEREF(__pyx_tuple__52);
+1789:                 fill = fills.get(key, IU64.max)
      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_fills, __pyx_n_s_get); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1789, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_IU64); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1789, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_max); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1789, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __pyx_t_11 = NULL;
      __pyx_t_13 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) {
        __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_10);
        if (likely(__pyx_t_11)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
          __Pyx_INCREF(__pyx_t_11);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_10, function);
          __pyx_t_13 = 1;
        }
      }
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_10)) {
        PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_v_key, __pyx_t_8};
        __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_13, 2+__pyx_t_13); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1789, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 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_10)) {
        PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_v_key, __pyx_t_8};
        __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_13, 2+__pyx_t_13); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1789, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      } else
      #endif
      {
        __pyx_t_12 = PyTuple_New(2+__pyx_t_13); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1789, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_12);
        if (__pyx_t_11) {
          __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_11); __pyx_t_11 = NULL;
        }
        __Pyx_INCREF(__pyx_v_key);
        __Pyx_GIVEREF(__pyx_v_key);
        PyTuple_SET_ITEM(__pyx_t_12, 0+__pyx_t_13, __pyx_v_key);
        __Pyx_GIVEREF(__pyx_t_8);
        PyTuple_SET_ITEM(__pyx_t_12, 1+__pyx_t_13, __pyx_t_8);
        __pyx_t_8 = 0;
        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_12, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1789, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      }
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_XDECREF_SET(__pyx_v_fill, __pyx_t_2);
      __pyx_t_2 = 0;
+1790:                 parser = VCFInfoUInt64Parser(key, number=n, chunk_length=chunk_length,
      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1790, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_INCREF(__pyx_v_key);
      __Pyx_GIVEREF(__pyx_v_key);
      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_key);
      __pyx_t_10 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1790, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_number, __pyx_v_n) < 0) __PYX_ERR(0, 1790, __pyx_L1_error)
      if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_chunk_length, __pyx_v_chunk_length) < 0) __PYX_ERR(0, 1790, __pyx_L1_error)
/* … */
      __pyx_t_12 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoUInt64Parser), __pyx_t_2, __pyx_t_10); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1790, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_XDECREF_SET(__pyx_v_parser, ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoParserBase *)__pyx_t_12));
      __pyx_t_12 = 0;
+1791:                                              fill=fill)
      if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_fill, __pyx_v_fill) < 0) __PYX_ERR(0, 1790, __pyx_L1_error)
+1792:             elif t == np.dtype('float32'):
    __pyx_t_12 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__53, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1792, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_10 = PyObject_RichCompare(__pyx_v_t, __pyx_t_12, Py_EQ); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1792, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1792, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    if (__pyx_t_7) {
/* … */
      goto __pyx_L7;
    }
/* … */
  __pyx_tuple__53 = PyTuple_Pack(1, __pyx_n_s_float32); if (unlikely(!__pyx_tuple__53)) __PYX_ERR(0, 1792, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__53);
  __Pyx_GIVEREF(__pyx_tuple__53);
+1793:                 fill = fills.get(key, NAN)
      __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_fills, __pyx_n_s_get); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1793, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __pyx_t_2 = PyFloat_FromDouble(__pyx_v_5allel_3opt_11io_vcf_read_NAN); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1793, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_8 = NULL;
      __pyx_t_13 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_12))) {
        __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_12);
        if (likely(__pyx_t_8)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
          __Pyx_INCREF(__pyx_t_8);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_12, function);
          __pyx_t_13 = 1;
        }
      }
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_12)) {
        PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_v_key, __pyx_t_2};
        __pyx_t_10 = __Pyx_PyFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_13, 2+__pyx_t_13); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1793, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_GOTREF(__pyx_t_10);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_12)) {
        PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_v_key, __pyx_t_2};
        __pyx_t_10 = __Pyx_PyCFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_13, 2+__pyx_t_13); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1793, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_GOTREF(__pyx_t_10);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      } else
      #endif
      {
        __pyx_t_11 = PyTuple_New(2+__pyx_t_13); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1793, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_11);
        if (__pyx_t_8) {
          __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_8); __pyx_t_8 = NULL;
        }
        __Pyx_INCREF(__pyx_v_key);
        __Pyx_GIVEREF(__pyx_v_key);
        PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_13, __pyx_v_key);
        __Pyx_GIVEREF(__pyx_t_2);
        PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_13, __pyx_t_2);
        __pyx_t_2 = 0;
        __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_11, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1793, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_10);
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      }
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_XDECREF_SET(__pyx_v_fill, __pyx_t_10);
      __pyx_t_10 = 0;
+1794:                 parser = VCFInfoFloat32Parser(key, number=n, chunk_length=chunk_length,
      __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1794, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_INCREF(__pyx_v_key);
      __Pyx_GIVEREF(__pyx_v_key);
      PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_v_key);
      __pyx_t_12 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1794, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_number, __pyx_v_n) < 0) __PYX_ERR(0, 1794, __pyx_L1_error)
      if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_chunk_length, __pyx_v_chunk_length) < 0) __PYX_ERR(0, 1794, __pyx_L1_error)
/* … */
      __pyx_t_11 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoFloat32Parser), __pyx_t_10, __pyx_t_12); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1794, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_XDECREF_SET(__pyx_v_parser, ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoParserBase *)__pyx_t_11));
      __pyx_t_11 = 0;
+1795:                                               fill=fill)
      if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_fill, __pyx_v_fill) < 0) __PYX_ERR(0, 1794, __pyx_L1_error)
+1796:             elif t == np.dtype('float64'):
    __pyx_t_11 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__54, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1796, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_12 = PyObject_RichCompare(__pyx_v_t, __pyx_t_11, Py_EQ); __Pyx_XGOTREF(__pyx_t_12); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1796, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1796, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    if (__pyx_t_7) {
/* … */
      goto __pyx_L7;
    }
/* … */
  __pyx_tuple__54 = PyTuple_Pack(1, __pyx_n_s_float64); if (unlikely(!__pyx_tuple__54)) __PYX_ERR(0, 1796, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__54);
  __Pyx_GIVEREF(__pyx_tuple__54);
+1797:                 fill = fills.get(key, NAN)
      __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_fills, __pyx_n_s_get); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1797, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
      __pyx_t_10 = PyFloat_FromDouble(__pyx_v_5allel_3opt_11io_vcf_read_NAN); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1797, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_2 = NULL;
      __pyx_t_13 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_11))) {
        __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_11);
        if (likely(__pyx_t_2)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
          __Pyx_INCREF(__pyx_t_2);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_11, function);
          __pyx_t_13 = 1;
        }
      }
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_11)) {
        PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_key, __pyx_t_10};
        __pyx_t_12 = __Pyx_PyFunction_FastCall(__pyx_t_11, __pyx_temp+1-__pyx_t_13, 2+__pyx_t_13); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1797, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_GOTREF(__pyx_t_12);
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_11)) {
        PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_key, __pyx_t_10};
        __pyx_t_12 = __Pyx_PyCFunction_FastCall(__pyx_t_11, __pyx_temp+1-__pyx_t_13, 2+__pyx_t_13); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1797, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_GOTREF(__pyx_t_12);
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      } else
      #endif
      {
        __pyx_t_8 = PyTuple_New(2+__pyx_t_13); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1797, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        if (__pyx_t_2) {
          __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_2); __pyx_t_2 = NULL;
        }
        __Pyx_INCREF(__pyx_v_key);
        __Pyx_GIVEREF(__pyx_v_key);
        PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_13, __pyx_v_key);
        __Pyx_GIVEREF(__pyx_t_10);
        PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_13, __pyx_t_10);
        __pyx_t_10 = 0;
        __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_8, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1797, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_12);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      }
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_XDECREF_SET(__pyx_v_fill, __pyx_t_12);
      __pyx_t_12 = 0;
+1798:                 parser = VCFInfoFloat64Parser(key, number=n, chunk_length=chunk_length,
      __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1798, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_INCREF(__pyx_v_key);
      __Pyx_GIVEREF(__pyx_v_key);
      PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_v_key);
      __pyx_t_11 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1798, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
      if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_number, __pyx_v_n) < 0) __PYX_ERR(0, 1798, __pyx_L1_error)
      if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_chunk_length, __pyx_v_chunk_length) < 0) __PYX_ERR(0, 1798, __pyx_L1_error)
/* … */
      __pyx_t_8 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoFloat64Parser), __pyx_t_12, __pyx_t_11); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1798, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_XDECREF_SET(__pyx_v_parser, ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoParserBase *)__pyx_t_8));
      __pyx_t_8 = 0;
+1799:                                               fill=fill)
      if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_fill, __pyx_v_fill) < 0) __PYX_ERR(0, 1798, __pyx_L1_error)
+1800:             elif t == np.dtype(bool):
    __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1800, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_INCREF(((PyObject*)&PyBool_Type));
    __Pyx_GIVEREF(((PyObject*)&PyBool_Type));
    PyTuple_SET_ITEM(__pyx_t_8, 0, ((PyObject*)&PyBool_Type));
    __pyx_t_11 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_8, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1800, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = PyObject_RichCompare(__pyx_v_t, __pyx_t_11, Py_EQ); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1800, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1800, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (__pyx_t_7) {
/* … */
      goto __pyx_L7;
    }
+1801:                 parser = VCFInfoFlagParser(key, chunk_length=chunk_length)
      __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1801, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_INCREF(__pyx_v_key);
      __Pyx_GIVEREF(__pyx_v_key);
      PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_key);
      __pyx_t_11 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1801, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
      if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_chunk_length, __pyx_v_chunk_length) < 0) __PYX_ERR(0, 1801, __pyx_L1_error)
      __pyx_t_12 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoFlagParser), __pyx_t_8, __pyx_t_11); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1801, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_XDECREF_SET(__pyx_v_parser, ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoParserBase *)__pyx_t_12));
      __pyx_t_12 = 0;
+1802:             elif t.kind == 'S':
    __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_t, __pyx_n_s_kind); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1802, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_t_12, __pyx_n_s_S, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1802, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    if (__pyx_t_7) {
/* … */
      goto __pyx_L7;
    }
+1803:                 parser = VCFInfoStringParser(key, dtype=t, number=n, chunk_length=chunk_length)
      __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1803, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_INCREF(__pyx_v_key);
      __Pyx_GIVEREF(__pyx_v_key);
      PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_v_key);
      __pyx_t_11 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1803, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
      if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_dtype, __pyx_v_t) < 0) __PYX_ERR(0, 1803, __pyx_L1_error)
      if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_number, __pyx_v_n) < 0) __PYX_ERR(0, 1803, __pyx_L1_error)
      if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_chunk_length, __pyx_v_chunk_length) < 0) __PYX_ERR(0, 1803, __pyx_L1_error)
      __pyx_t_8 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoStringParser), __pyx_t_12, __pyx_t_11); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1803, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_XDECREF_SET(__pyx_v_parser, ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoParserBase *)__pyx_t_8));
      __pyx_t_8 = 0;
+1804:             elif t.kind == 'O':
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_t, __pyx_n_s_kind); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1804, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_7 = (__Pyx_PyString_Equals(__pyx_t_8, __pyx_n_s_O, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1804, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (__pyx_t_7) {
/* … */
      goto __pyx_L7;
    }
+1805:                 parser = VCFInfoObjectParser(key, number=n, chunk_length=chunk_length)
      __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1805, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_INCREF(__pyx_v_key);
      __Pyx_GIVEREF(__pyx_v_key);
      PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_key);
      __pyx_t_11 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1805, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
      if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_number, __pyx_v_n) < 0) __PYX_ERR(0, 1805, __pyx_L1_error)
      if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_chunk_length, __pyx_v_chunk_length) < 0) __PYX_ERR(0, 1805, __pyx_L1_error)
      __pyx_t_12 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoObjectParser), __pyx_t_8, __pyx_t_11); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1805, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_XDECREF_SET(__pyx_v_parser, ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoParserBase *)__pyx_t_12));
      __pyx_t_12 = 0;
 1806:             else:
+1807:                 parser = VCFInfoSkipParser(key)
    /*else*/ {
      __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1807, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_INCREF(__pyx_v_key);
      __Pyx_GIVEREF(__pyx_v_key);
      PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_v_key);
      __pyx_t_11 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoSkipParser), __pyx_t_12, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1807, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_XDECREF_SET(__pyx_v_parser, ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoParserBase *)__pyx_t_11));
      __pyx_t_11 = 0;
+1808:                 warnings.warn('type %s not supported for INFO field %r, field will be skipped' % (t, key))
      __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_warnings); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1808, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_warn); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1808, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __pyx_t_12 = PyTuple_New(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1808, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_INCREF(__pyx_v_t);
      __Pyx_GIVEREF(__pyx_v_t);
      PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_v_t);
      __Pyx_INCREF(__pyx_v_key);
      __Pyx_GIVEREF(__pyx_v_key);
      PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_v_key);
      __pyx_t_10 = __Pyx_PyString_Format(__pyx_kp_s_type_s_not_supported_for_INFO_fi, __pyx_t_12); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1808, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __pyx_t_12 = NULL;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) {
        __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_8);
        if (likely(__pyx_t_12)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
          __Pyx_INCREF(__pyx_t_12);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_8, function);
        }
      }
      if (!__pyx_t_12) {
        __pyx_t_11 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1808, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_GOTREF(__pyx_t_11);
      } else {
        #if CYTHON_FAST_PYCALL
        if (PyFunction_Check(__pyx_t_8)) {
          PyObject *__pyx_temp[2] = {__pyx_t_12, __pyx_t_10};
          __pyx_t_11 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1808, __pyx_L1_error)
          __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
          __Pyx_GOTREF(__pyx_t_11);
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        } else
        #endif
        #if CYTHON_FAST_PYCCALL
        if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) {
          PyObject *__pyx_temp[2] = {__pyx_t_12, __pyx_t_10};
          __pyx_t_11 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1808, __pyx_L1_error)
          __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
          __Pyx_GOTREF(__pyx_t_11);
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        } else
        #endif
        {
          __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1808, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_12); __pyx_t_12 = NULL;
          __Pyx_GIVEREF(__pyx_t_10);
          PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_10);
          __pyx_t_10 = 0;
          __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_2, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1808, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_11);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        }
      }
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    }
    __pyx_L7:;
+1809:             info_parsers.append(parser)
    __pyx_t_3 = __Pyx_PyList_Append(__pyx_v_info_parsers, ((PyObject *)__pyx_v_parser)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 1809, __pyx_L1_error)
+1810:         self.info_parsers = tuple(info_parsers)
  __pyx_t_1 = PyList_AsTuple(__pyx_v_info_parsers); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1810, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->info_parsers);
  __Pyx_DECREF(__pyx_v_self->info_parsers);
  __pyx_v_self->info_parsers = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
 1811: 
 1812:         # store pointers to parsers for nogil trickery
+1813:         self.info_parsers_cptr = <PyObject**> malloc(sizeof(PyObject*) * self.n_infos)
  __pyx_v_self->info_parsers_cptr = ((PyObject **)malloc(((sizeof(PyObject *)) * __pyx_v_self->n_infos)));
+1814:         for i in range(self.n_infos):
  __pyx_t_4 = __pyx_v_self->n_infos;
  for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
    __pyx_v_i = __pyx_t_5;
+1815:             self.info_parsers_cptr[i] = <PyObject*> self.info_parsers[i]
    if (unlikely(__pyx_v_self->info_parsers == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(0, 1815, __pyx_L1_error)
    }
    (__pyx_v_self->info_parsers_cptr[__pyx_v_i]) = ((PyObject *)PyTuple_GET_ITEM(__pyx_v_self->info_parsers, __pyx_v_i));
  }
 1816: 
+1817:     def __init__(self, info_keys, types, numbers, chunk_length, fills):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_13VCFInfoParser_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_13VCFInfoParser_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED PyObject *__pyx_v_info_keys = 0;
  CYTHON_UNUSED PyObject *__pyx_v_types = 0;
  CYTHON_UNUSED PyObject *__pyx_v_numbers = 0;
  PyObject *__pyx_v_chunk_length = 0;
  PyObject *__pyx_v_fills = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_info_keys,&__pyx_n_s_types,&__pyx_n_s_numbers,&__pyx_n_s_chunk_length,&__pyx_n_s_fills,0};
    PyObject* values[5] = {0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_info_keys)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_types)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 1); __PYX_ERR(0, 1817, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_numbers)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 2); __PYX_ERR(0, 1817, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_chunk_length)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 3); __PYX_ERR(0, 1817, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fills)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, 4); __PYX_ERR(0, 1817, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1817, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
    }
    __pyx_v_info_keys = values[0];
    __pyx_v_types = values[1];
    __pyx_v_numbers = values[2];
    __pyx_v_chunk_length = values[3];
    __pyx_v_fills = values[4];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1817, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFInfoParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_13VCFInfoParser_2__init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoParser *)__pyx_v_self), __pyx_v_info_keys, __pyx_v_types, __pyx_v_numbers, __pyx_v_chunk_length, __pyx_v_fills);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_13VCFInfoParser_2__init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoParser *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_info_keys, CYTHON_UNUSED PyObject *__pyx_v_types, CYTHON_UNUSED PyObject *__pyx_v_numbers, PyObject *__pyx_v_chunk_length, PyObject *__pyx_v_fills) {
  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_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFInfoParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+1818:         super(VCFInfoParser, self).__init__(key=b'INFO', chunk_length=chunk_length)
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1818, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoParser));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoParser));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoParser));
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self));
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1818, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1818, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1818, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_key, __pyx_n_b_INFO) < 0) __PYX_ERR(0, 1818, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_chunk_length, __pyx_v_chunk_length) < 0) __PYX_ERR(0, 1818, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1818, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+1819:         self.fills = fills
  __Pyx_INCREF(__pyx_v_fills);
  __Pyx_GIVEREF(__pyx_v_fills);
  __Pyx_GOTREF(__pyx_v_self->fills);
  __Pyx_DECREF(__pyx_v_self->fills);
  __pyx_v_self->fills = __pyx_v_fills;
 1820: 
+1821:     def __dealloc__(self):
/* Python wrapper */
static void __pyx_pw_5allel_3opt_11io_vcf_read_13VCFInfoParser_5__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_5allel_3opt_11io_vcf_read_13VCFInfoParser_5__dealloc__(PyObject *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_pf_5allel_3opt_11io_vcf_read_13VCFInfoParser_4__dealloc__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoParser *)__pyx_v_self));

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

static void __pyx_pf_5allel_3opt_11io_vcf_read_13VCFInfoParser_4__dealloc__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoParser *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__", 0);
/* … */
  /* function exit code */
  __Pyx_RefNannyFinishContext();
}
+1822:         if self.info_keys_cstr is not NULL:
  __pyx_t_1 = ((__pyx_v_self->info_keys_cstr != NULL) != 0);
  if (__pyx_t_1) {
/* … */
  }
+1823:             free(self.info_keys_cstr)
    free(__pyx_v_self->info_keys_cstr);
+1824:         if self.info_parsers_cptr is not NULL:
  __pyx_t_1 = ((__pyx_v_self->info_parsers_cptr != NULL) != 0);
  if (__pyx_t_1) {
/* … */
  }
+1825:             free(self.info_parsers_cptr)
    free(__pyx_v_self->info_parsers_cptr);
 1826: 
+1827:     cdef int parse(self, InputStreamBase stream, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_13VCFInfoParser_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoParser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFInfoParser.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 1828: 
 1829:         # reset buffers
+1830:         CharVector_clear(&context.info_key)
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->info_key));
+1831:         CharVector_clear(&context.info_val)
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->info_val));
 1832: 
 1833:         # check for missing value
+1834:         if stream.c == PERIOD:
  __pyx_t_1 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_PERIOD) != 0);
  if (__pyx_t_1) {
/* … */
  }
 1835:             # treat leading period as missing, regardless of what comes next
+1836:             vcf_parse_missing(stream, context)
    __pyx_t_2 = __pyx_f_5allel_3opt_11io_vcf_read_vcf_parse_missing(__pyx_v_stream, __pyx_v_context); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 1836, __pyx_L1_error)
+1837:             return 0
    __pyx_r = 0;
    goto __pyx_L0;
 1838: 
 1839:         # check for empty value
+1840:         if stream.c == TAB:
  __pyx_t_1 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_TAB) != 0);
  if (__pyx_t_1) {
/* … */
  }
 1841:             # not strictly kosher, treat as missing/empty
+1842:             stream.advance()
    __pyx_t_2 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 1842, __pyx_L1_error)
+1843:             context.state += 1
    __pyx_v_context->state = (__pyx_v_context->state + 1);
+1844:             return 0
    __pyx_r = 0;
    goto __pyx_L0;
 1845: 
+1846:         while True:
  while (1) {
 1847: 
+1848:             if stream.c == 0:
    __pyx_t_1 = ((__pyx_v_stream->c == 0) != 0);
    if (__pyx_t_1) {
/* … */
    }
+1849:                 if context.info_key.size > 0:
      __pyx_t_1 = ((__pyx_v_context->info_key.size > 0) != 0);
      if (__pyx_t_1) {
/* … */
      }
 1850:                     # handle flag
+1851:                     self.parse_info(stream, context)
        __pyx_t_2 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFInfoParser *)__pyx_v_self->__pyx_base.__pyx_vtab)->parse_info(__pyx_v_self, __pyx_v_stream, __pyx_v_context); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 1851, __pyx_L1_error)
+1852:                 context.state = VCFState.EOF
      __pyx_v_context->state = __pyx_e_5allel_3opt_11io_vcf_read_EOF;
+1853:                 break
      goto __pyx_L6_break;
 1854: 
+1855:             elif stream.c == LF or stream.c == CR:
    __pyx_t_3 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_1 = __pyx_t_3;
      goto __pyx_L9_bool_binop_done;
    }
    __pyx_t_3 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_CR) != 0);
    __pyx_t_1 = __pyx_t_3;
    __pyx_L9_bool_binop_done:;
    if (__pyx_t_1) {
/* … */
    }
+1856:                 if context.info_key.size > 0:
      __pyx_t_1 = ((__pyx_v_context->info_key.size > 0) != 0);
      if (__pyx_t_1) {
/* … */
      }
 1857:                     # handle flag
+1858:                     self.parse_info(stream, context)
        __pyx_t_2 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFInfoParser *)__pyx_v_self->__pyx_base.__pyx_vtab)->parse_info(__pyx_v_self, __pyx_v_stream, __pyx_v_context); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 1858, __pyx_L1_error)
+1859:                 context.state = VCFState.EOL
      __pyx_v_context->state = __pyx_e_5allel_3opt_11io_vcf_read_EOL;
+1860:                 break
      goto __pyx_L6_break;
 1861: 
+1862:             elif stream.c == TAB:
    __pyx_t_1 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_TAB) != 0);
    if (__pyx_t_1) {
/* … */
    }
+1863:                 if context.info_key.size > 0:
      __pyx_t_1 = ((__pyx_v_context->info_key.size > 0) != 0);
      if (__pyx_t_1) {
/* … */
      }
 1864:                     # handle flag
+1865:                     self.parse_info(stream, context)
        __pyx_t_2 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFInfoParser *)__pyx_v_self->__pyx_base.__pyx_vtab)->parse_info(__pyx_v_self, __pyx_v_stream, __pyx_v_context); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 1865, __pyx_L1_error)
 1866:                 # advance input stream beyond tab
+1867:                 stream.advance()
      __pyx_t_2 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 1867, __pyx_L1_error)
+1868:                 context.state += 1
      __pyx_v_context->state = (__pyx_v_context->state + 1);
+1869:                 break
      goto __pyx_L6_break;
 1870: 
+1871:             elif stream.c == SEMICOLON:
    __pyx_t_1 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_SEMICOLON) != 0);
    if (__pyx_t_1) {
/* … */
      goto __pyx_L7;
    }
+1872:                 if context.info_key.size > 0:
      __pyx_t_1 = ((__pyx_v_context->info_key.size > 0) != 0);
      if (__pyx_t_1) {
/* … */
      }
 1873:                     # handle flag
+1874:                     self.parse_info(stream, context)
        __pyx_t_2 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFInfoParser *)__pyx_v_self->__pyx_base.__pyx_vtab)->parse_info(__pyx_v_self, __pyx_v_stream, __pyx_v_context); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 1874, __pyx_L1_error)
+1875:                 stream.advance()
      __pyx_t_2 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 1875, __pyx_L1_error)
 1876: 
+1877:             elif stream.c == EQUALS:
    __pyx_t_1 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_EQUALS) != 0);
    if (__pyx_t_1) {
/* … */
      goto __pyx_L7;
    }
 1878:                 # advance input stream beyond '='
+1879:                 stream.advance()
      __pyx_t_2 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 1879, __pyx_L1_error)
+1880:                 if context.info_key.size > 0:
      __pyx_t_1 = ((__pyx_v_context->info_key.size > 0) != 0);
      if (__pyx_t_1) {
/* … */
        goto __pyx_L14;
      }
+1881:                     self.parse_info(stream, context)
        __pyx_t_2 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFInfoParser *)__pyx_v_self->__pyx_base.__pyx_vtab)->parse_info(__pyx_v_self, __pyx_v_stream, __pyx_v_context); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 1881, __pyx_L1_error)
 1882:                 else:
 1883:                     # with gil:
+1884:                     warn('missing INFO key', context)
      /*else*/ {
        __pyx_t_2 = __pyx_f_5allel_3opt_11io_vcf_read_warn(__pyx_kp_s_missing_INFO_key, __pyx_v_context); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 1884, __pyx_L1_error)
+1885:                     self.skip_parser.parse(stream, context)
        __pyx_t_2 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFInfoParserBase *)__pyx_v_self->skip_parser->__pyx_vtab)->parse(__pyx_v_self->skip_parser, __pyx_v_stream, __pyx_v_context); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 1885, __pyx_L1_error)
      }
      __pyx_L14:;
 1886: 
 1887:             else:
 1888: 
+1889:                 CharVector_append(&context.info_key, stream.c)
    /*else*/ {
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_append((&__pyx_v_context->info_key), __pyx_v_stream->c);
+1890:                 stream.advance()
      __pyx_t_2 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 1890, __pyx_L1_error)
    }
    __pyx_L7:;
  }
  __pyx_L6_break:;
 1891: 
+1892:     cdef int parse_info(self,
static int __pyx_f_5allel_3opt_11io_vcf_read_13VCFInfoParser_parse_info(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoParser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  Py_ssize_t __pyx_v_parser_index;
  PyObject *__pyx_v_parser;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse_info", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFInfoParser.parse_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 1893:                         InputStreamBase stream,
 1894:                         VCFContext context) except -1:  # nogil
 1895: 
 1896:         cdef:
 1897:             Py_ssize_t parser_index
 1898:             PyObject* parser
 1899: 
 1900:         # terminate key
+1901:         CharVector_terminate(&context.info_key)
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_terminate((&__pyx_v_context->info_key));
 1902: 
 1903:         # search for index of current INFO key
+1904:         parser_index = search_sorted_cstr(context.info_key.data, self.info_keys_cstr, self.n_infos)
  __pyx_v_parser_index = __pyx_f_5allel_3opt_11io_vcf_read_search_sorted_cstr(__pyx_v_context->info_key.data, __pyx_v_self->info_keys_cstr, __pyx_v_self->n_infos);
 1905: 
 1906:         # clear out key for good measure
+1907:         CharVector_clear(&context.info_key)
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->info_key));
 1908: 
+1909:         if parser_index >= 0:
  __pyx_t_1 = ((__pyx_v_parser_index >= 0) != 0);
  if (__pyx_t_1) {
/* … */
    goto __pyx_L3;
  }
 1910:             # obtain parser, use trickery for nogil
+1911:             parser = self.info_parsers_cptr[parser_index]
    __pyx_v_parser = (__pyx_v_self->info_parsers_cptr[__pyx_v_parser_index]);
+1912:             (<VCFInfoParserBase> parser).parse(stream, context)
    __pyx_t_2 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFInfoParserBase *)((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoParserBase *)__pyx_v_parser)->__pyx_vtab)->parse(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoParserBase *)__pyx_v_parser), __pyx_v_stream, __pyx_v_context); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 1912, __pyx_L1_error)
 1913:         else:
+1914:             self.skip_parser.parse(stream, context)
  /*else*/ {
    __pyx_t_2 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFInfoParserBase *)__pyx_v_self->skip_parser->__pyx_vtab)->parse(__pyx_v_self->skip_parser, __pyx_v_stream, __pyx_v_context); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 1914, __pyx_L1_error)
  }
  __pyx_L3:;
 1915: 
+1916:     cdef int malloc_chunk(self) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_13VCFInfoParser_malloc_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoParser *__pyx_v_self) {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoParserBase *__pyx_v_parser = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("malloc_chunk", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFInfoParser.malloc_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_parser);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 1917:         cdef VCFInfoParserBase parser
+1918:         for parser in self.info_parsers:
  if (unlikely(__pyx_v_self->info_parsers == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(0, 1918, __pyx_L1_error)
  }
  __pyx_t_1 = __pyx_v_self->info_parsers; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
  for (;;) {
    if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 1918, __pyx_L1_error)
    #else
    __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1918, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    #endif
    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoParserBase))))) __PYX_ERR(0, 1918, __pyx_L1_error)
    __Pyx_XDECREF_SET(__pyx_v_parser, ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoParserBase *)__pyx_t_3));
    __pyx_t_3 = 0;
/* … */
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1919:             parser.malloc_chunk()
    __pyx_t_4 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFInfoParserBase *)__pyx_v_parser->__pyx_vtab)->malloc_chunk(__pyx_v_parser); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 1919, __pyx_L1_error)
 1920: 
+1921:     cdef int make_chunk(self, chunk, limit=None) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_13VCFInfoParser_make_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoParser *__pyx_v_self, PyObject *__pyx_v_chunk, struct __pyx_opt_args_5allel_3opt_11io_vcf_read_13VCFInfoParser_make_chunk *__pyx_optional_args) {
  PyObject *__pyx_v_limit = ((PyObject *)Py_None);
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoParserBase *__pyx_v_parser = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("make_chunk", 0);
  if (__pyx_optional_args) {
    if (__pyx_optional_args->__pyx_n > 0) {
      __pyx_v_limit = __pyx_optional_args->limit;
    }
  }
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFInfoParser.make_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_parser);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
struct __pyx_opt_args_5allel_3opt_11io_vcf_read_13VCFInfoParser_make_chunk {
  int __pyx_n;
  PyObject *limit;
};
 1922:         cdef VCFInfoParserBase parser
+1923:         for parser in self.info_parsers:
  if (unlikely(__pyx_v_self->info_parsers == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(0, 1923, __pyx_L1_error)
  }
  __pyx_t_1 = __pyx_v_self->info_parsers; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
  for (;;) {
    if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 1923, __pyx_L1_error)
    #else
    __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1923, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    #endif
    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoParserBase))))) __PYX_ERR(0, 1923, __pyx_L1_error)
    __Pyx_XDECREF_SET(__pyx_v_parser, ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoParserBase *)__pyx_t_3));
    __pyx_t_3 = 0;
/* … */
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1924:             parser.make_chunk(chunk, limit=limit)
    __pyx_t_5.__pyx_n = 1;
    __pyx_t_5.limit = __pyx_v_limit;
    __pyx_t_4 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFInfoParserBase *)__pyx_v_parser->__pyx_vtab)->make_chunk(__pyx_v_parser, __pyx_v_chunk, &__pyx_t_5); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 1924, __pyx_L1_error)
 1925: 
 1926: 
+1927: cdef class VCFInfoParserBase:
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoParserBase {
  PyObject_HEAD
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFInfoParserBase *__pyx_vtab;
  PyObject *key;
  PyArray_Descr *dtype;
  Py_ssize_t itemsize;
  Py_ssize_t number;
  PyObject *fill;
  PyArrayObject *values;
  Py_ssize_t chunk_length;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFInfoParserBase {
  int (*parse)(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoParserBase *, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *);
  int (*make_chunk)(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoParserBase *, PyObject *, struct __pyx_opt_args_5allel_3opt_11io_vcf_read_17VCFInfoParserBase_make_chunk *__pyx_optional_args);
  int (*malloc_chunk)(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoParserBase *);
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFInfoParserBase *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFInfoParserBase;

 1928: 
 1929:     cdef:
 1930:         bytes key
 1931:         np.dtype dtype
 1932:         Py_ssize_t itemsize
 1933:         Py_ssize_t number
 1934:         object fill
 1935:         np.ndarray values
 1936:         Py_ssize_t chunk_length
 1937: 
+1938:     def __init__(self, key=None, dtype=None, number=1, fill=0, chunk_length=0):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_17VCFInfoParserBase_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_17VCFInfoParserBase_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_key = 0;
  PyObject *__pyx_v_dtype = 0;
  PyObject *__pyx_v_number = 0;
  PyObject *__pyx_v_fill = 0;
  PyObject *__pyx_v_chunk_length = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_key,&__pyx_n_s_dtype,&__pyx_n_s_number,&__pyx_n_s_fill,&__pyx_n_s_chunk_length,0};
    PyObject* values[5] = {0,0,0,0,0};
    values[0] = ((PyObject *)Py_None);
    values[1] = ((PyObject *)Py_None);
    values[2] = ((PyObject *)__pyx_int_1);
    values[3] = ((PyObject *)__pyx_int_0);
    values[4] = ((PyObject *)__pyx_int_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  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_key);
          if (value) { values[0] = value; kw_args--; }
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dtype);
          if (value) { values[1] = value; kw_args--; }
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_number);
          if (value) { values[2] = value; kw_args--; }
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fill);
          if (value) { values[3] = value; kw_args--; }
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_chunk_length);
          if (value) { values[4] = 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, 1938, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_key = values[0];
    __pyx_v_dtype = values[1];
    __pyx_v_number = values[2];
    __pyx_v_fill = values[3];
    __pyx_v_chunk_length = values[4];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1938, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFInfoParserBase.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_17VCFInfoParserBase___init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoParserBase *)__pyx_v_self), __pyx_v_key, __pyx_v_dtype, __pyx_v_number, __pyx_v_fill, __pyx_v_chunk_length);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_17VCFInfoParserBase___init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoParserBase *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_dtype, PyObject *__pyx_v_number, PyObject *__pyx_v_fill, PyObject *__pyx_v_chunk_length) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__", 0);
  __Pyx_INCREF(__pyx_v_dtype);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFInfoParserBase.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_dtype);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+1939:         self.key = key
  if (!(likely(PyBytes_CheckExact(__pyx_v_key))||((__pyx_v_key) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_key)->tp_name), 0))) __PYX_ERR(0, 1939, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_key;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->key);
  __Pyx_DECREF(__pyx_v_self->key);
  __pyx_v_self->key = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
+1940:         if dtype is not None:
  __pyx_t_2 = (__pyx_v_dtype != Py_None);
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (__pyx_t_3) {
/* … */
    goto __pyx_L3;
  }
+1941:             dtype = np.dtype(dtype)
    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1941, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v_dtype);
    __Pyx_GIVEREF(__pyx_v_dtype);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_dtype);
    __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1941, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF_SET(__pyx_v_dtype, __pyx_t_4);
    __pyx_t_4 = 0;
+1942:             self.dtype = dtype
    if (!(likely(__Pyx_TypeTest(__pyx_v_dtype, __pyx_ptype_5numpy_dtype)))) __PYX_ERR(0, 1942, __pyx_L1_error)
    __pyx_t_4 = __pyx_v_dtype;
    __Pyx_INCREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __Pyx_GOTREF(__pyx_v_self->dtype);
    __Pyx_DECREF(((PyObject *)__pyx_v_self->dtype));
    __pyx_v_self->dtype = ((PyArray_Descr *)__pyx_t_4);
    __pyx_t_4 = 0;
+1943:             self.itemsize = dtype.itemsize
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_dtype, __pyx_n_s_itemsize); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1943, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_t_4); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1943, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_self->itemsize = __pyx_t_5;
 1944:         else:
+1945:             self.dtype = dtype
  /*else*/ {
    if (!(likely(((__pyx_v_dtype) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_dtype, __pyx_ptype_5numpy_dtype))))) __PYX_ERR(0, 1945, __pyx_L1_error)
    __pyx_t_4 = __pyx_v_dtype;
    __Pyx_INCREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __Pyx_GOTREF(__pyx_v_self->dtype);
    __Pyx_DECREF(((PyObject *)__pyx_v_self->dtype));
    __pyx_v_self->dtype = ((PyArray_Descr *)__pyx_t_4);
    __pyx_t_4 = 0;
+1946:             self.itemsize = 0
    __pyx_v_self->itemsize = 0;
  }
  __pyx_L3:;
+1947:         self.number = number
  __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_v_number); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1947, __pyx_L1_error)
  __pyx_v_self->number = __pyx_t_5;
+1948:         self.fill = fill
  __Pyx_INCREF(__pyx_v_fill);
  __Pyx_GIVEREF(__pyx_v_fill);
  __Pyx_GOTREF(__pyx_v_self->fill);
  __Pyx_DECREF(__pyx_v_self->fill);
  __pyx_v_self->fill = __pyx_v_fill;
+1949:         self.chunk_length = chunk_length
  __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_v_chunk_length); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1949, __pyx_L1_error)
  __pyx_v_self->chunk_length = __pyx_t_5;
 1950: 
+1951:     cdef int parse(self, InputStreamBase stream, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_17VCFInfoParserBase_parse(CYTHON_UNUSED struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoParserBase *__pyx_v_self, CYTHON_UNUSED struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, CYTHON_UNUSED struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 1952:         pass
 1953: 
+1954:     cdef int make_chunk(self, chunk, limit=None) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_17VCFInfoParserBase_make_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoParserBase *__pyx_v_self, PyObject *__pyx_v_chunk, struct __pyx_opt_args_5allel_3opt_11io_vcf_read_17VCFInfoParserBase_make_chunk *__pyx_optional_args) {
  PyObject *__pyx_v_limit = ((PyObject *)Py_None);
  PyObject *__pyx_v_field = NULL;
  PyObject *__pyx_v_values = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("make_chunk", 0);
  if (__pyx_optional_args) {
    if (__pyx_optional_args->__pyx_n > 0) {
      __pyx_v_limit = __pyx_optional_args->limit;
    }
  }
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFInfoParserBase.make_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_field);
  __Pyx_XDECREF(__pyx_v_values);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
struct __pyx_opt_args_5allel_3opt_11io_vcf_read_17VCFInfoParserBase_make_chunk {
  int __pyx_n;
  PyObject *limit;
};
+1955:         field = u'variants/' + text_type(self.key, 'utf8')
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_text_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1955, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_self->key, __pyx_n_s_utf8};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1955, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_self->key, __pyx_n_s_utf8};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1955, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else
  #endif
  {
    __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1955, __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_self->key);
    __Pyx_GIVEREF(__pyx_v_self->key);
    PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_self->key);
    __Pyx_INCREF(__pyx_n_s_utf8);
    __Pyx_GIVEREF(__pyx_n_s_utf8);
    PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_n_s_utf8);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1955, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyNumber_Add(__pyx_kp_u_variants_2, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1955, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_field = __pyx_t_2;
  __pyx_t_2 = 0;
+1956:         values = self.values[:limit]
  __pyx_t_2 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_v_self->values), 0, 0, NULL, &__pyx_v_limit, NULL, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1956, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_values = __pyx_t_2;
  __pyx_t_2 = 0;
+1957:         if self.number == 1:
  __pyx_t_6 = ((__pyx_v_self->number == 1) != 0);
  if (__pyx_t_6) {
/* … */
  }
+1958:             values = values.squeeze(axis=1)
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_values, __pyx_n_s_squeeze); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1958, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1958, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_axis, __pyx_int_1) < 0) __PYX_ERR(0, 1958, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1958, __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_DECREF_SET(__pyx_v_values, __pyx_t_5);
    __pyx_t_5 = 0;
+1959:         chunk[field] = values
  if (unlikely(PyObject_SetItem(__pyx_v_chunk, __pyx_v_field, __pyx_v_values) < 0)) __PYX_ERR(0, 1959, __pyx_L1_error)
 1960: 
+1961:     cdef int malloc_chunk(self) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_17VCFInfoParserBase_malloc_chunk(CYTHON_UNUSED struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoParserBase *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("malloc_chunk", 0);

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 1962:         pass
 1963: 
 1964: 
+1965: cdef class VCFInfoInt8Parser(VCFInfoParserBase):
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoInt8Parser {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoParserBase __pyx_base;
  __Pyx_memviewslice memory;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFInfoInt8Parser {
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFInfoParserBase __pyx_base;
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFInfoInt8Parser *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFInfoInt8Parser;

 1966: 
 1967:     cdef np.int8_t[:, :] memory
 1968: 
+1969:     def __init__(self, *args, **kwargs):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_17VCFInfoInt8Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_17VCFInfoInt8Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 1))) return -1;
  __pyx_v_kwargs = (__pyx_kwds) ? PyDict_Copy(__pyx_kwds) : PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return -1;
  __Pyx_GOTREF(__pyx_v_kwargs);
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_17VCFInfoInt8Parser___init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoInt8Parser *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_17VCFInfoInt8Parser___init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoInt8Parser *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
  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_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFInfoInt8Parser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+1970:         kwargs['dtype'] = 'int8'
  if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_s_dtype, __pyx_n_s_int8) < 0)) __PYX_ERR(0, 1970, __pyx_L1_error)
+1971:         kwargs.setdefault('fill', -1)
  __pyx_t_1 = __Pyx_PyDict_SetDefault(__pyx_v_kwargs, __pyx_n_s_fill, __pyx_int_neg_1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1971, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1972:         super(VCFInfoInt8Parser, self).__init__(*args, **kwargs)
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1972, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoInt8Parser));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoInt8Parser));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoInt8Parser));
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self));
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1972, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1972, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_v_args, __pyx_v_kwargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1972, __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;
 1973: 
+1974:     cdef int parse(self, InputStreamBase stream, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_17VCFInfoInt8Parser_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoInt8Parser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFInfoInt8Parser.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+1975:         vcf_info_parse_integer(stream, context, self.memory)
  __pyx_t_1 = __pyx_fuse_0__pyx_f_5allel_3opt_11io_vcf_read_vcf_info_parse_integer(__pyx_v_stream, __pyx_v_context, __pyx_v_self->memory); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 1975, __pyx_L1_error)
 1976: 
+1977:     cdef int malloc_chunk(self) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_17VCFInfoInt8Parser_malloc_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoInt8Parser *__pyx_v_self) {
  PyObject *__pyx_v_shape = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("malloc_chunk", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFInfoInt8Parser.malloc_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_shape);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+1978:         shape = (self.chunk_length, self.number)
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.chunk_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1978, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.number); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1978, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1978, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_v_shape = __pyx_t_3;
  __pyx_t_3 = 0;
+1979:         self.values = np.empty(shape, dtype=self.dtype)
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1979, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1979, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1979, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_shape);
  __Pyx_GIVEREF(__pyx_v_shape);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_shape);
  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1979, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->__pyx_base.dtype)) < 0) __PYX_ERR(0, 1979, __pyx_L1_error)
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1979, __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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1979, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_4);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.values);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.values));
  __pyx_v_self->__pyx_base.values = ((PyArrayObject *)__pyx_t_4);
  __pyx_t_4 = 0;
+1980:         self.memory = self.values
  __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsds_nn___pyx_t_5numpy_int8_t(((PyObject *)__pyx_v_self->__pyx_base.values));
  if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 1980, __pyx_L1_error)
  __PYX_XDEC_MEMVIEW(&__pyx_v_self->memory, 0);
  __pyx_v_self->memory = __pyx_t_5;
  __pyx_t_5.memview = NULL;
  __pyx_t_5.data = NULL;
+1981:         self.memory[:] = self.fill
  __pyx_t_6 = __Pyx_PyInt_As_npy_int8(__pyx_v_self->__pyx_base.fill); if (unlikely((__pyx_t_6 == ((npy_int8)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1981, __pyx_L1_error)
  {
      __pyx_t_5numpy_int8_t __pyx_temp_scalar = __pyx_t_6;
      {
          Py_ssize_t __pyx_temp_extent_0 = __pyx_v_self->memory.shape[0];
          Py_ssize_t __pyx_temp_stride_0 = __pyx_v_self->memory.strides[0];
          char *__pyx_temp_pointer_0;
          Py_ssize_t __pyx_temp_idx_0;
          Py_ssize_t __pyx_temp_extent_1 = __pyx_v_self->memory.shape[1];
          Py_ssize_t __pyx_temp_stride_1 = __pyx_v_self->memory.strides[1];
          char *__pyx_temp_pointer_1;
          Py_ssize_t __pyx_temp_idx_1;
          __pyx_temp_pointer_0 = __pyx_v_self->memory.data;
          for (__pyx_temp_idx_0 = 0; __pyx_temp_idx_0 < __pyx_temp_extent_0; __pyx_temp_idx_0++) {
            __pyx_temp_pointer_1 = __pyx_temp_pointer_0;
            for (__pyx_temp_idx_1 = 0; __pyx_temp_idx_1 < __pyx_temp_extent_1; __pyx_temp_idx_1++) {
              *((__pyx_t_5numpy_int8_t *) __pyx_temp_pointer_1) = __pyx_temp_scalar;
              __pyx_temp_pointer_1 += __pyx_temp_stride_1;
            }
            __pyx_temp_pointer_0 += __pyx_temp_stride_0;
          }
      }
  }
 1982: 
 1983: 
+1984: cdef class VCFInfoInt16Parser(VCFInfoParserBase):
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoInt16Parser {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoParserBase __pyx_base;
  __Pyx_memviewslice memory;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFInfoInt16Parser {
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFInfoParserBase __pyx_base;
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFInfoInt16Parser *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFInfoInt16Parser;

 1985: 
 1986:     cdef np.int16_t[:, :] memory
 1987: 
+1988:     def __init__(self, *args, **kwargs):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_18VCFInfoInt16Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_18VCFInfoInt16Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 1))) return -1;
  __pyx_v_kwargs = (__pyx_kwds) ? PyDict_Copy(__pyx_kwds) : PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return -1;
  __Pyx_GOTREF(__pyx_v_kwargs);
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_18VCFInfoInt16Parser___init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoInt16Parser *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_18VCFInfoInt16Parser___init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoInt16Parser *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
  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_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFInfoInt16Parser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+1989:         kwargs['dtype'] = 'int16'
  if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_s_dtype, __pyx_n_s_int16) < 0)) __PYX_ERR(0, 1989, __pyx_L1_error)
+1990:         kwargs.setdefault('fill', -1)
  __pyx_t_1 = __Pyx_PyDict_SetDefault(__pyx_v_kwargs, __pyx_n_s_fill, __pyx_int_neg_1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1990, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1991:         super(VCFInfoInt16Parser, self).__init__(*args, **kwargs)
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1991, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoInt16Parser));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoInt16Parser));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoInt16Parser));
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self));
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1991, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1991, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_v_args, __pyx_v_kwargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1991, __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;
 1992: 
+1993:     cdef int parse(self, InputStreamBase stream, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_18VCFInfoInt16Parser_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoInt16Parser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFInfoInt16Parser.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+1994:         vcf_info_parse_integer(stream, context, self.memory)
  __pyx_t_1 = __pyx_fuse_1__pyx_f_5allel_3opt_11io_vcf_read_vcf_info_parse_integer(__pyx_v_stream, __pyx_v_context, __pyx_v_self->memory); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 1994, __pyx_L1_error)
 1995: 
+1996:     cdef int malloc_chunk(self) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_18VCFInfoInt16Parser_malloc_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoInt16Parser *__pyx_v_self) {
  PyObject *__pyx_v_shape = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("malloc_chunk", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFInfoInt16Parser.malloc_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_shape);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+1997:         shape = (self.chunk_length, self.number)
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.chunk_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1997, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.number); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1997, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1997, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_v_shape = __pyx_t_3;
  __pyx_t_3 = 0;
+1998:         self.values = np.empty(shape, dtype=self.dtype)
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1998, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1998, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1998, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_shape);
  __Pyx_GIVEREF(__pyx_v_shape);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_shape);
  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1998, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->__pyx_base.dtype)) < 0) __PYX_ERR(0, 1998, __pyx_L1_error)
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1998, __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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1998, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_4);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.values);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.values));
  __pyx_v_self->__pyx_base.values = ((PyArrayObject *)__pyx_t_4);
  __pyx_t_4 = 0;
+1999:         self.memory = self.values
  __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsds_nn___pyx_t_5numpy_int16_t(((PyObject *)__pyx_v_self->__pyx_base.values));
  if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 1999, __pyx_L1_error)
  __PYX_XDEC_MEMVIEW(&__pyx_v_self->memory, 0);
  __pyx_v_self->memory = __pyx_t_5;
  __pyx_t_5.memview = NULL;
  __pyx_t_5.data = NULL;
+2000:         self.memory[:] = self.fill
  __pyx_t_6 = __Pyx_PyInt_As_npy_int16(__pyx_v_self->__pyx_base.fill); if (unlikely((__pyx_t_6 == ((npy_int16)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2000, __pyx_L1_error)
  {
      __pyx_t_5numpy_int16_t __pyx_temp_scalar = __pyx_t_6;
      {
          Py_ssize_t __pyx_temp_extent_0 = __pyx_v_self->memory.shape[0];
          Py_ssize_t __pyx_temp_stride_0 = __pyx_v_self->memory.strides[0];
          char *__pyx_temp_pointer_0;
          Py_ssize_t __pyx_temp_idx_0;
          Py_ssize_t __pyx_temp_extent_1 = __pyx_v_self->memory.shape[1];
          Py_ssize_t __pyx_temp_stride_1 = __pyx_v_self->memory.strides[1];
          char *__pyx_temp_pointer_1;
          Py_ssize_t __pyx_temp_idx_1;
          __pyx_temp_pointer_0 = __pyx_v_self->memory.data;
          for (__pyx_temp_idx_0 = 0; __pyx_temp_idx_0 < __pyx_temp_extent_0; __pyx_temp_idx_0++) {
            __pyx_temp_pointer_1 = __pyx_temp_pointer_0;
            for (__pyx_temp_idx_1 = 0; __pyx_temp_idx_1 < __pyx_temp_extent_1; __pyx_temp_idx_1++) {
              *((__pyx_t_5numpy_int16_t *) __pyx_temp_pointer_1) = __pyx_temp_scalar;
              __pyx_temp_pointer_1 += __pyx_temp_stride_1;
            }
            __pyx_temp_pointer_0 += __pyx_temp_stride_0;
          }
      }
  }
 2001: 
 2002: 
+2003: cdef class VCFInfoInt32Parser(VCFInfoParserBase):
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoInt32Parser {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoParserBase __pyx_base;
  __Pyx_memviewslice memory;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFInfoInt32Parser {
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFInfoParserBase __pyx_base;
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFInfoInt32Parser *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFInfoInt32Parser;

 2004: 
 2005:     cdef np.int32_t[:, :] memory
 2006: 
+2007:     def __init__(self, *args, **kwargs):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_18VCFInfoInt32Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_18VCFInfoInt32Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 1))) return -1;
  __pyx_v_kwargs = (__pyx_kwds) ? PyDict_Copy(__pyx_kwds) : PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return -1;
  __Pyx_GOTREF(__pyx_v_kwargs);
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_18VCFInfoInt32Parser___init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoInt32Parser *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_18VCFInfoInt32Parser___init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoInt32Parser *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
  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_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFInfoInt32Parser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2008:         kwargs['dtype'] = 'int32'
  if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_s_dtype, __pyx_n_s_int32) < 0)) __PYX_ERR(0, 2008, __pyx_L1_error)
+2009:         kwargs.setdefault('fill', -1)
  __pyx_t_1 = __Pyx_PyDict_SetDefault(__pyx_v_kwargs, __pyx_n_s_fill, __pyx_int_neg_1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2009, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2010:         super(VCFInfoInt32Parser, self).__init__(*args, **kwargs)
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2010, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoInt32Parser));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoInt32Parser));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoInt32Parser));
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self));
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2010, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2010, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_v_args, __pyx_v_kwargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2010, __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;
 2011: 
+2012:     cdef int parse(self, InputStreamBase stream, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_18VCFInfoInt32Parser_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoInt32Parser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFInfoInt32Parser.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2013:         vcf_info_parse_integer(stream, context, self.memory)
  __pyx_t_1 = __pyx_fuse_2__pyx_f_5allel_3opt_11io_vcf_read_vcf_info_parse_integer(__pyx_v_stream, __pyx_v_context, __pyx_v_self->memory); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2013, __pyx_L1_error)
 2014: 
+2015:     cdef int malloc_chunk(self) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_18VCFInfoInt32Parser_malloc_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoInt32Parser *__pyx_v_self) {
  PyObject *__pyx_v_shape = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("malloc_chunk", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFInfoInt32Parser.malloc_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_shape);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2016:         shape = (self.chunk_length, self.number)
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.chunk_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2016, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.number); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2016, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2016, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_v_shape = __pyx_t_3;
  __pyx_t_3 = 0;
+2017:         self.values = np.empty(shape, dtype=self.dtype)
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2017, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2017, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2017, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_shape);
  __Pyx_GIVEREF(__pyx_v_shape);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_shape);
  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2017, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->__pyx_base.dtype)) < 0) __PYX_ERR(0, 2017, __pyx_L1_error)
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2017, __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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2017, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_4);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.values);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.values));
  __pyx_v_self->__pyx_base.values = ((PyArrayObject *)__pyx_t_4);
  __pyx_t_4 = 0;
+2018:         self.memory = self.values
  __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_self->__pyx_base.values));
  if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 2018, __pyx_L1_error)
  __PYX_XDEC_MEMVIEW(&__pyx_v_self->memory, 0);
  __pyx_v_self->memory = __pyx_t_5;
  __pyx_t_5.memview = NULL;
  __pyx_t_5.data = NULL;
+2019:         self.memory[:] = self.fill
  __pyx_t_6 = __Pyx_PyInt_As_npy_int32(__pyx_v_self->__pyx_base.fill); if (unlikely((__pyx_t_6 == ((npy_int32)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2019, __pyx_L1_error)
  {
      __pyx_t_5numpy_int32_t __pyx_temp_scalar = __pyx_t_6;
      {
          Py_ssize_t __pyx_temp_extent_0 = __pyx_v_self->memory.shape[0];
          Py_ssize_t __pyx_temp_stride_0 = __pyx_v_self->memory.strides[0];
          char *__pyx_temp_pointer_0;
          Py_ssize_t __pyx_temp_idx_0;
          Py_ssize_t __pyx_temp_extent_1 = __pyx_v_self->memory.shape[1];
          Py_ssize_t __pyx_temp_stride_1 = __pyx_v_self->memory.strides[1];
          char *__pyx_temp_pointer_1;
          Py_ssize_t __pyx_temp_idx_1;
          __pyx_temp_pointer_0 = __pyx_v_self->memory.data;
          for (__pyx_temp_idx_0 = 0; __pyx_temp_idx_0 < __pyx_temp_extent_0; __pyx_temp_idx_0++) {
            __pyx_temp_pointer_1 = __pyx_temp_pointer_0;
            for (__pyx_temp_idx_1 = 0; __pyx_temp_idx_1 < __pyx_temp_extent_1; __pyx_temp_idx_1++) {
              *((__pyx_t_5numpy_int32_t *) __pyx_temp_pointer_1) = __pyx_temp_scalar;
              __pyx_temp_pointer_1 += __pyx_temp_stride_1;
            }
            __pyx_temp_pointer_0 += __pyx_temp_stride_0;
          }
      }
  }
 2020: 
 2021: 
+2022: cdef class VCFInfoInt64Parser(VCFInfoParserBase):
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoInt64Parser {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoParserBase __pyx_base;
  __Pyx_memviewslice memory;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFInfoInt64Parser {
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFInfoParserBase __pyx_base;
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFInfoInt64Parser *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFInfoInt64Parser;

 2023: 
 2024:     cdef np.int64_t[:, :] memory
 2025: 
+2026:     def __init__(self, *args, **kwargs):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_18VCFInfoInt64Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_18VCFInfoInt64Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 1))) return -1;
  __pyx_v_kwargs = (__pyx_kwds) ? PyDict_Copy(__pyx_kwds) : PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return -1;
  __Pyx_GOTREF(__pyx_v_kwargs);
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_18VCFInfoInt64Parser___init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoInt64Parser *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_18VCFInfoInt64Parser___init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoInt64Parser *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
  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_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFInfoInt64Parser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2027:         kwargs['dtype'] = 'int64'
  if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_s_dtype, __pyx_n_s_int64) < 0)) __PYX_ERR(0, 2027, __pyx_L1_error)
+2028:         kwargs.setdefault('fill', -1)
  __pyx_t_1 = __Pyx_PyDict_SetDefault(__pyx_v_kwargs, __pyx_n_s_fill, __pyx_int_neg_1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2028, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2029:         super(VCFInfoInt64Parser, self).__init__(*args, **kwargs)
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2029, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoInt64Parser));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoInt64Parser));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoInt64Parser));
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self));
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2029, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2029, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_v_args, __pyx_v_kwargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2029, __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;
 2030: 
+2031:     cdef int parse(self, InputStreamBase stream, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_18VCFInfoInt64Parser_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoInt64Parser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFInfoInt64Parser.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2032:         vcf_info_parse_integer(stream, context, self.memory)
  __pyx_t_1 = __pyx_fuse_3__pyx_f_5allel_3opt_11io_vcf_read_vcf_info_parse_integer(__pyx_v_stream, __pyx_v_context, __pyx_v_self->memory); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2032, __pyx_L1_error)
 2033: 
+2034:     cdef int malloc_chunk(self) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_18VCFInfoInt64Parser_malloc_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoInt64Parser *__pyx_v_self) {
  PyObject *__pyx_v_shape = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("malloc_chunk", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFInfoInt64Parser.malloc_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_shape);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2035:         shape = (self.chunk_length, self.number)
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.chunk_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2035, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.number); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2035, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2035, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_v_shape = __pyx_t_3;
  __pyx_t_3 = 0;
+2036:         self.values = np.empty(shape, dtype=self.dtype)
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2036, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2036, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2036, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_shape);
  __Pyx_GIVEREF(__pyx_v_shape);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_shape);
  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2036, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->__pyx_base.dtype)) < 0) __PYX_ERR(0, 2036, __pyx_L1_error)
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2036, __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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2036, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_4);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.values);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.values));
  __pyx_v_self->__pyx_base.values = ((PyArrayObject *)__pyx_t_4);
  __pyx_t_4 = 0;
+2037:         self.memory = self.values
  __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsds_nn___pyx_t_5numpy_int64_t(((PyObject *)__pyx_v_self->__pyx_base.values));
  if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 2037, __pyx_L1_error)
  __PYX_XDEC_MEMVIEW(&__pyx_v_self->memory, 0);
  __pyx_v_self->memory = __pyx_t_5;
  __pyx_t_5.memview = NULL;
  __pyx_t_5.data = NULL;
+2038:         self.memory[:] = self.fill
  __pyx_t_6 = __Pyx_PyInt_As_npy_int64(__pyx_v_self->__pyx_base.fill); if (unlikely((__pyx_t_6 == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2038, __pyx_L1_error)
  {
      __pyx_t_5numpy_int64_t __pyx_temp_scalar = __pyx_t_6;
      {
          Py_ssize_t __pyx_temp_extent_0 = __pyx_v_self->memory.shape[0];
          Py_ssize_t __pyx_temp_stride_0 = __pyx_v_self->memory.strides[0];
          char *__pyx_temp_pointer_0;
          Py_ssize_t __pyx_temp_idx_0;
          Py_ssize_t __pyx_temp_extent_1 = __pyx_v_self->memory.shape[1];
          Py_ssize_t __pyx_temp_stride_1 = __pyx_v_self->memory.strides[1];
          char *__pyx_temp_pointer_1;
          Py_ssize_t __pyx_temp_idx_1;
          __pyx_temp_pointer_0 = __pyx_v_self->memory.data;
          for (__pyx_temp_idx_0 = 0; __pyx_temp_idx_0 < __pyx_temp_extent_0; __pyx_temp_idx_0++) {
            __pyx_temp_pointer_1 = __pyx_temp_pointer_0;
            for (__pyx_temp_idx_1 = 0; __pyx_temp_idx_1 < __pyx_temp_extent_1; __pyx_temp_idx_1++) {
              *((__pyx_t_5numpy_int64_t *) __pyx_temp_pointer_1) = __pyx_temp_scalar;
              __pyx_temp_pointer_1 += __pyx_temp_stride_1;
            }
            __pyx_temp_pointer_0 += __pyx_temp_stride_0;
          }
      }
  }
 2039: 
 2040: 
+2041: cdef class VCFInfoUInt8Parser(VCFInfoParserBase):
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoUInt8Parser {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoParserBase __pyx_base;
  __Pyx_memviewslice memory;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFInfoUInt8Parser {
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFInfoParserBase __pyx_base;
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFInfoUInt8Parser *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFInfoUInt8Parser;

 2042: 
 2043:     cdef np.uint8_t[:, :] memory
 2044: 
+2045:     def __init__(self, *args, **kwargs):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_18VCFInfoUInt8Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_18VCFInfoUInt8Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 1))) return -1;
  __pyx_v_kwargs = (__pyx_kwds) ? PyDict_Copy(__pyx_kwds) : PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return -1;
  __Pyx_GOTREF(__pyx_v_kwargs);
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_18VCFInfoUInt8Parser___init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoUInt8Parser *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_18VCFInfoUInt8Parser___init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoUInt8Parser *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
  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_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFInfoUInt8Parser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2046:         kwargs['dtype'] = 'uint8'
  if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_s_dtype, __pyx_n_s_uint8) < 0)) __PYX_ERR(0, 2046, __pyx_L1_error)
+2047:         kwargs.setdefault('fill', IU8.max)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_IU8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2047, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_max); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2047, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyDict_SetDefault(__pyx_v_kwargs, __pyx_n_s_fill, __pyx_t_2, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2047, __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;
+2048:         super(VCFInfoUInt8Parser, self).__init__(*args, **kwargs)
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2048, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoUInt8Parser));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoUInt8Parser));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoUInt8Parser));
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self));
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2048, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2048, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_v_args, __pyx_v_kwargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2048, __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;
 2049: 
+2050:     cdef int parse(self, InputStreamBase stream, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_18VCFInfoUInt8Parser_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoUInt8Parser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFInfoUInt8Parser.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2051:         vcf_info_parse_integer(stream, context, self.memory)
  __pyx_t_1 = __pyx_fuse_4__pyx_f_5allel_3opt_11io_vcf_read_vcf_info_parse_integer(__pyx_v_stream, __pyx_v_context, __pyx_v_self->memory); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2051, __pyx_L1_error)
 2052: 
+2053:     cdef int malloc_chunk(self) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_18VCFInfoUInt8Parser_malloc_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoUInt8Parser *__pyx_v_self) {
  PyObject *__pyx_v_shape = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("malloc_chunk", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFInfoUInt8Parser.malloc_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_shape);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2054:         shape = (self.chunk_length, self.number)
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.chunk_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2054, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.number); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2054, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2054, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_v_shape = __pyx_t_3;
  __pyx_t_3 = 0;
+2055:         self.values = np.empty(shape, dtype=self.dtype)
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2055, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2055, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2055, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_shape);
  __Pyx_GIVEREF(__pyx_v_shape);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_shape);
  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2055, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->__pyx_base.dtype)) < 0) __PYX_ERR(0, 2055, __pyx_L1_error)
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2055, __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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2055, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_4);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.values);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.values));
  __pyx_v_self->__pyx_base.values = ((PyArrayObject *)__pyx_t_4);
  __pyx_t_4 = 0;
+2056:         self.memory = self.values
  __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsds_nn___pyx_t_5numpy_uint8_t(((PyObject *)__pyx_v_self->__pyx_base.values));
  if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 2056, __pyx_L1_error)
  __PYX_XDEC_MEMVIEW(&__pyx_v_self->memory, 0);
  __pyx_v_self->memory = __pyx_t_5;
  __pyx_t_5.memview = NULL;
  __pyx_t_5.data = NULL;
+2057:         self.memory[:] = self.fill
  __pyx_t_6 = __Pyx_PyInt_As_npy_uint8(__pyx_v_self->__pyx_base.fill); if (unlikely((__pyx_t_6 == ((npy_uint8)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2057, __pyx_L1_error)
  {
      __pyx_t_5numpy_uint8_t __pyx_temp_scalar = __pyx_t_6;
      {
          Py_ssize_t __pyx_temp_extent_0 = __pyx_v_self->memory.shape[0];
          Py_ssize_t __pyx_temp_stride_0 = __pyx_v_self->memory.strides[0];
          char *__pyx_temp_pointer_0;
          Py_ssize_t __pyx_temp_idx_0;
          Py_ssize_t __pyx_temp_extent_1 = __pyx_v_self->memory.shape[1];
          Py_ssize_t __pyx_temp_stride_1 = __pyx_v_self->memory.strides[1];
          char *__pyx_temp_pointer_1;
          Py_ssize_t __pyx_temp_idx_1;
          __pyx_temp_pointer_0 = __pyx_v_self->memory.data;
          for (__pyx_temp_idx_0 = 0; __pyx_temp_idx_0 < __pyx_temp_extent_0; __pyx_temp_idx_0++) {
            __pyx_temp_pointer_1 = __pyx_temp_pointer_0;
            for (__pyx_temp_idx_1 = 0; __pyx_temp_idx_1 < __pyx_temp_extent_1; __pyx_temp_idx_1++) {
              *((__pyx_t_5numpy_uint8_t *) __pyx_temp_pointer_1) = __pyx_temp_scalar;
              __pyx_temp_pointer_1 += __pyx_temp_stride_1;
            }
            __pyx_temp_pointer_0 += __pyx_temp_stride_0;
          }
      }
  }
 2058: 
 2059: 
+2060: cdef class VCFInfoUInt16Parser(VCFInfoParserBase):
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoUInt16Parser {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoParserBase __pyx_base;
  __Pyx_memviewslice memory;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFInfoUInt16Parser {
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFInfoParserBase __pyx_base;
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFInfoUInt16Parser *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFInfoUInt16Parser;

 2061: 
 2062:     cdef np.uint16_t[:, :] memory
 2063: 
+2064:     def __init__(self, *args, **kwargs):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_19VCFInfoUInt16Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_19VCFInfoUInt16Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 1))) return -1;
  __pyx_v_kwargs = (__pyx_kwds) ? PyDict_Copy(__pyx_kwds) : PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return -1;
  __Pyx_GOTREF(__pyx_v_kwargs);
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_19VCFInfoUInt16Parser___init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoUInt16Parser *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_19VCFInfoUInt16Parser___init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoUInt16Parser *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
  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_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFInfoUInt16Parser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2065:         kwargs['dtype'] = 'uint16'
  if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_s_dtype, __pyx_n_s_uint16) < 0)) __PYX_ERR(0, 2065, __pyx_L1_error)
+2066:         kwargs.setdefault('fill', IU16.max)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_IU16); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2066, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_max); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2066, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyDict_SetDefault(__pyx_v_kwargs, __pyx_n_s_fill, __pyx_t_2, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2066, __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;
+2067:         super(VCFInfoUInt16Parser, self).__init__(*args, **kwargs)
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2067, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoUInt16Parser));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoUInt16Parser));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoUInt16Parser));
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self));
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2067, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2067, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_v_args, __pyx_v_kwargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2067, __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;
 2068: 
+2069:     cdef int parse(self, InputStreamBase stream, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_19VCFInfoUInt16Parser_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoUInt16Parser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFInfoUInt16Parser.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2070:         vcf_info_parse_integer(stream, context, self.memory)
  __pyx_t_1 = __pyx_fuse_5__pyx_f_5allel_3opt_11io_vcf_read_vcf_info_parse_integer(__pyx_v_stream, __pyx_v_context, __pyx_v_self->memory); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2070, __pyx_L1_error)
 2071: 
+2072:     cdef int malloc_chunk(self) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_19VCFInfoUInt16Parser_malloc_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoUInt16Parser *__pyx_v_self) {
  PyObject *__pyx_v_shape = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("malloc_chunk", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFInfoUInt16Parser.malloc_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_shape);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2073:         shape = (self.chunk_length, self.number)
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.chunk_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2073, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.number); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2073, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2073, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_v_shape = __pyx_t_3;
  __pyx_t_3 = 0;
+2074:         self.values = np.empty(shape, dtype=self.dtype)
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2074, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2074, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2074, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_shape);
  __Pyx_GIVEREF(__pyx_v_shape);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_shape);
  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2074, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->__pyx_base.dtype)) < 0) __PYX_ERR(0, 2074, __pyx_L1_error)
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2074, __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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2074, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_4);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.values);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.values));
  __pyx_v_self->__pyx_base.values = ((PyArrayObject *)__pyx_t_4);
  __pyx_t_4 = 0;
+2075:         self.memory = self.values
  __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsds_nn___pyx_t_5numpy_uint16_t(((PyObject *)__pyx_v_self->__pyx_base.values));
  if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 2075, __pyx_L1_error)
  __PYX_XDEC_MEMVIEW(&__pyx_v_self->memory, 0);
  __pyx_v_self->memory = __pyx_t_5;
  __pyx_t_5.memview = NULL;
  __pyx_t_5.data = NULL;
+2076:         self.memory[:] = self.fill
  __pyx_t_6 = __Pyx_PyInt_As_npy_uint16(__pyx_v_self->__pyx_base.fill); if (unlikely((__pyx_t_6 == ((npy_uint16)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2076, __pyx_L1_error)
  {
      __pyx_t_5numpy_uint16_t __pyx_temp_scalar = __pyx_t_6;
      {
          Py_ssize_t __pyx_temp_extent_0 = __pyx_v_self->memory.shape[0];
          Py_ssize_t __pyx_temp_stride_0 = __pyx_v_self->memory.strides[0];
          char *__pyx_temp_pointer_0;
          Py_ssize_t __pyx_temp_idx_0;
          Py_ssize_t __pyx_temp_extent_1 = __pyx_v_self->memory.shape[1];
          Py_ssize_t __pyx_temp_stride_1 = __pyx_v_self->memory.strides[1];
          char *__pyx_temp_pointer_1;
          Py_ssize_t __pyx_temp_idx_1;
          __pyx_temp_pointer_0 = __pyx_v_self->memory.data;
          for (__pyx_temp_idx_0 = 0; __pyx_temp_idx_0 < __pyx_temp_extent_0; __pyx_temp_idx_0++) {
            __pyx_temp_pointer_1 = __pyx_temp_pointer_0;
            for (__pyx_temp_idx_1 = 0; __pyx_temp_idx_1 < __pyx_temp_extent_1; __pyx_temp_idx_1++) {
              *((__pyx_t_5numpy_uint16_t *) __pyx_temp_pointer_1) = __pyx_temp_scalar;
              __pyx_temp_pointer_1 += __pyx_temp_stride_1;
            }
            __pyx_temp_pointer_0 += __pyx_temp_stride_0;
          }
      }
  }
 2077: 
 2078: 
+2079: cdef class VCFInfoUInt32Parser(VCFInfoParserBase):
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoUInt32Parser {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoParserBase __pyx_base;
  __Pyx_memviewslice memory;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFInfoUInt32Parser {
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFInfoParserBase __pyx_base;
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFInfoUInt32Parser *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFInfoUInt32Parser;

 2080: 
 2081:     cdef np.uint32_t[:, :] memory
 2082: 
+2083:     def __init__(self, *args, **kwargs):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_19VCFInfoUInt32Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_19VCFInfoUInt32Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 1))) return -1;
  __pyx_v_kwargs = (__pyx_kwds) ? PyDict_Copy(__pyx_kwds) : PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return -1;
  __Pyx_GOTREF(__pyx_v_kwargs);
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_19VCFInfoUInt32Parser___init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoUInt32Parser *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_19VCFInfoUInt32Parser___init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoUInt32Parser *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
  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_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFInfoUInt32Parser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2084:         kwargs['dtype'] = 'uint32'
  if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_s_dtype, __pyx_n_s_uint32) < 0)) __PYX_ERR(0, 2084, __pyx_L1_error)
+2085:         kwargs.setdefault('fill', IU32.max)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_IU32); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2085, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_max); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2085, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyDict_SetDefault(__pyx_v_kwargs, __pyx_n_s_fill, __pyx_t_2, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2085, __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;
+2086:         super(VCFInfoUInt32Parser, self).__init__(*args, **kwargs)
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2086, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoUInt32Parser));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoUInt32Parser));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoUInt32Parser));
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self));
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2086, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2086, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_v_args, __pyx_v_kwargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2086, __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;
 2087: 
+2088:     cdef int parse(self, InputStreamBase stream, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_19VCFInfoUInt32Parser_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoUInt32Parser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFInfoUInt32Parser.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2089:         vcf_info_parse_integer(stream, context, self.memory)
  __pyx_t_1 = __pyx_fuse_6__pyx_f_5allel_3opt_11io_vcf_read_vcf_info_parse_integer(__pyx_v_stream, __pyx_v_context, __pyx_v_self->memory); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2089, __pyx_L1_error)
 2090: 
+2091:     cdef int malloc_chunk(self) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_19VCFInfoUInt32Parser_malloc_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoUInt32Parser *__pyx_v_self) {
  PyObject *__pyx_v_shape = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("malloc_chunk", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFInfoUInt32Parser.malloc_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_shape);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2092:         shape = (self.chunk_length, self.number)
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.chunk_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2092, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.number); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2092, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2092, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_v_shape = __pyx_t_3;
  __pyx_t_3 = 0;
+2093:         self.values = np.empty(shape, dtype=self.dtype)
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2093, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2093, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2093, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_shape);
  __Pyx_GIVEREF(__pyx_v_shape);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_shape);
  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2093, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->__pyx_base.dtype)) < 0) __PYX_ERR(0, 2093, __pyx_L1_error)
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2093, __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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2093, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_4);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.values);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.values));
  __pyx_v_self->__pyx_base.values = ((PyArrayObject *)__pyx_t_4);
  __pyx_t_4 = 0;
+2094:         self.memory = self.values
  __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsds_nn___pyx_t_5numpy_uint32_t(((PyObject *)__pyx_v_self->__pyx_base.values));
  if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 2094, __pyx_L1_error)
  __PYX_XDEC_MEMVIEW(&__pyx_v_self->memory, 0);
  __pyx_v_self->memory = __pyx_t_5;
  __pyx_t_5.memview = NULL;
  __pyx_t_5.data = NULL;
+2095:         self.memory[:] = self.fill
  __pyx_t_6 = __Pyx_PyInt_As_npy_uint32(__pyx_v_self->__pyx_base.fill); if (unlikely((__pyx_t_6 == ((npy_uint32)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2095, __pyx_L1_error)
  {
      __pyx_t_5numpy_uint32_t __pyx_temp_scalar = __pyx_t_6;
      {
          Py_ssize_t __pyx_temp_extent_0 = __pyx_v_self->memory.shape[0];
          Py_ssize_t __pyx_temp_stride_0 = __pyx_v_self->memory.strides[0];
          char *__pyx_temp_pointer_0;
          Py_ssize_t __pyx_temp_idx_0;
          Py_ssize_t __pyx_temp_extent_1 = __pyx_v_self->memory.shape[1];
          Py_ssize_t __pyx_temp_stride_1 = __pyx_v_self->memory.strides[1];
          char *__pyx_temp_pointer_1;
          Py_ssize_t __pyx_temp_idx_1;
          __pyx_temp_pointer_0 = __pyx_v_self->memory.data;
          for (__pyx_temp_idx_0 = 0; __pyx_temp_idx_0 < __pyx_temp_extent_0; __pyx_temp_idx_0++) {
            __pyx_temp_pointer_1 = __pyx_temp_pointer_0;
            for (__pyx_temp_idx_1 = 0; __pyx_temp_idx_1 < __pyx_temp_extent_1; __pyx_temp_idx_1++) {
              *((__pyx_t_5numpy_uint32_t *) __pyx_temp_pointer_1) = __pyx_temp_scalar;
              __pyx_temp_pointer_1 += __pyx_temp_stride_1;
            }
            __pyx_temp_pointer_0 += __pyx_temp_stride_0;
          }
      }
  }
 2096: 
 2097: 
+2098: cdef class VCFInfoUInt64Parser(VCFInfoParserBase):
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoUInt64Parser {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoParserBase __pyx_base;
  __Pyx_memviewslice memory;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFInfoUInt64Parser {
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFInfoParserBase __pyx_base;
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFInfoUInt64Parser *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFInfoUInt64Parser;

 2099: 
 2100:     cdef np.uint64_t[:, :] memory
 2101: 
+2102:     def __init__(self, *args, **kwargs):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_19VCFInfoUInt64Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_19VCFInfoUInt64Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 1))) return -1;
  __pyx_v_kwargs = (__pyx_kwds) ? PyDict_Copy(__pyx_kwds) : PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return -1;
  __Pyx_GOTREF(__pyx_v_kwargs);
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_19VCFInfoUInt64Parser___init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoUInt64Parser *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_19VCFInfoUInt64Parser___init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoUInt64Parser *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
  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_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFInfoUInt64Parser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2103:         kwargs['dtype'] = 'uint64'
  if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_s_dtype, __pyx_n_s_uint64) < 0)) __PYX_ERR(0, 2103, __pyx_L1_error)
+2104:         kwargs.setdefault('fill', IU64.max)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_IU64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2104, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_max); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2104, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyDict_SetDefault(__pyx_v_kwargs, __pyx_n_s_fill, __pyx_t_2, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2104, __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;
+2105:         super(VCFInfoUInt64Parser, self).__init__(*args, **kwargs)
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoUInt64Parser));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoUInt64Parser));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoUInt64Parser));
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self));
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_v_args, __pyx_v_kwargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2105, __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;
 2106: 
+2107:     cdef int parse(self, InputStreamBase stream, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_19VCFInfoUInt64Parser_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoUInt64Parser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFInfoUInt64Parser.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2108:         vcf_info_parse_integer(stream, context, self.memory)
  __pyx_t_1 = __pyx_fuse_7__pyx_f_5allel_3opt_11io_vcf_read_vcf_info_parse_integer(__pyx_v_stream, __pyx_v_context, __pyx_v_self->memory); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2108, __pyx_L1_error)
 2109: 
+2110:     cdef int malloc_chunk(self) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_19VCFInfoUInt64Parser_malloc_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoUInt64Parser *__pyx_v_self) {
  PyObject *__pyx_v_shape = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("malloc_chunk", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFInfoUInt64Parser.malloc_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_shape);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2111:         shape = (self.chunk_length, self.number)
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.chunk_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2111, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.number); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2111, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2111, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_v_shape = __pyx_t_3;
  __pyx_t_3 = 0;
+2112:         self.values = np.empty(shape, dtype=self.dtype)
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2112, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2112, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2112, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_shape);
  __Pyx_GIVEREF(__pyx_v_shape);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_shape);
  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2112, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->__pyx_base.dtype)) < 0) __PYX_ERR(0, 2112, __pyx_L1_error)
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2112, __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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2112, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_4);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.values);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.values));
  __pyx_v_self->__pyx_base.values = ((PyArrayObject *)__pyx_t_4);
  __pyx_t_4 = 0;
+2113:         self.memory = self.values
  __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsds_nn___pyx_t_5numpy_uint64_t(((PyObject *)__pyx_v_self->__pyx_base.values));
  if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 2113, __pyx_L1_error)
  __PYX_XDEC_MEMVIEW(&__pyx_v_self->memory, 0);
  __pyx_v_self->memory = __pyx_t_5;
  __pyx_t_5.memview = NULL;
  __pyx_t_5.data = NULL;
+2114:         self.memory[:] = self.fill
  __pyx_t_6 = __Pyx_PyInt_As_npy_uint64(__pyx_v_self->__pyx_base.fill); if (unlikely((__pyx_t_6 == ((npy_uint64)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2114, __pyx_L1_error)
  {
      __pyx_t_5numpy_uint64_t __pyx_temp_scalar = __pyx_t_6;
      {
          Py_ssize_t __pyx_temp_extent_0 = __pyx_v_self->memory.shape[0];
          Py_ssize_t __pyx_temp_stride_0 = __pyx_v_self->memory.strides[0];
          char *__pyx_temp_pointer_0;
          Py_ssize_t __pyx_temp_idx_0;
          Py_ssize_t __pyx_temp_extent_1 = __pyx_v_self->memory.shape[1];
          Py_ssize_t __pyx_temp_stride_1 = __pyx_v_self->memory.strides[1];
          char *__pyx_temp_pointer_1;
          Py_ssize_t __pyx_temp_idx_1;
          __pyx_temp_pointer_0 = __pyx_v_self->memory.data;
          for (__pyx_temp_idx_0 = 0; __pyx_temp_idx_0 < __pyx_temp_extent_0; __pyx_temp_idx_0++) {
            __pyx_temp_pointer_1 = __pyx_temp_pointer_0;
            for (__pyx_temp_idx_1 = 0; __pyx_temp_idx_1 < __pyx_temp_extent_1; __pyx_temp_idx_1++) {
              *((__pyx_t_5numpy_uint64_t *) __pyx_temp_pointer_1) = __pyx_temp_scalar;
              __pyx_temp_pointer_1 += __pyx_temp_stride_1;
            }
            __pyx_temp_pointer_0 += __pyx_temp_stride_0;
          }
      }
  }
 2115: 
 2116: 
+2117: cdef class VCFInfoFloat32Parser(VCFInfoParserBase):
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoFloat32Parser {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoParserBase __pyx_base;
  __Pyx_memviewslice memory;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFInfoFloat32Parser {
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFInfoParserBase __pyx_base;
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFInfoFloat32Parser *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFInfoFloat32Parser;

 2118: 
 2119:     cdef np.float32_t[:, :] memory
 2120: 
+2121:     def __init__(self, *args, **kwargs):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_20VCFInfoFloat32Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_20VCFInfoFloat32Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 1))) return -1;
  __pyx_v_kwargs = (__pyx_kwds) ? PyDict_Copy(__pyx_kwds) : PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return -1;
  __Pyx_GOTREF(__pyx_v_kwargs);
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_20VCFInfoFloat32Parser___init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoFloat32Parser *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_20VCFInfoFloat32Parser___init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoFloat32Parser *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
  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_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFInfoFloat32Parser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2122:         kwargs['dtype'] = 'float32'
  if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_s_dtype, __pyx_n_s_float32) < 0)) __PYX_ERR(0, 2122, __pyx_L1_error)
+2123:         kwargs.setdefault('fill', NAN)
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_5allel_3opt_11io_vcf_read_NAN); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyDict_SetDefault(__pyx_v_kwargs, __pyx_n_s_fill, __pyx_t_1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2123, __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;
+2124:         super(VCFInfoFloat32Parser, self).__init__(*args, **kwargs)
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2124, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoFloat32Parser));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoFloat32Parser));
  PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoFloat32Parser));
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self));
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2124, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2124, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_v_args, __pyx_v_kwargs); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2124, __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;
 2125: 
+2126:     cdef int parse(self, InputStreamBase stream, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_20VCFInfoFloat32Parser_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoFloat32Parser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFInfoFloat32Parser.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2127:         vcf_info_parse_floating(stream, context, self.memory)
  __pyx_t_1 = __pyx_fuse_0__pyx_f_5allel_3opt_11io_vcf_read_vcf_info_parse_floating(__pyx_v_stream, __pyx_v_context, __pyx_v_self->memory); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2127, __pyx_L1_error)
 2128: 
+2129:     cdef int malloc_chunk(self) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_20VCFInfoFloat32Parser_malloc_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoFloat32Parser *__pyx_v_self) {
  PyObject *__pyx_v_shape = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("malloc_chunk", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFInfoFloat32Parser.malloc_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_shape);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2130:         shape = (self.chunk_length, self.number)
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.chunk_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.number); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_v_shape = __pyx_t_3;
  __pyx_t_3 = 0;
+2131:         self.values = np.empty(shape, dtype=self.dtype)
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_shape);
  __Pyx_GIVEREF(__pyx_v_shape);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_shape);
  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->__pyx_base.dtype)) < 0) __PYX_ERR(0, 2131, __pyx_L1_error)
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2131, __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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2131, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_4);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.values);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.values));
  __pyx_v_self->__pyx_base.values = ((PyArrayObject *)__pyx_t_4);
  __pyx_t_4 = 0;
+2132:         self.memory = self.values
  __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsds_nn___pyx_t_5numpy_float32_t(((PyObject *)__pyx_v_self->__pyx_base.values));
  if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 2132, __pyx_L1_error)
  __PYX_XDEC_MEMVIEW(&__pyx_v_self->memory, 0);
  __pyx_v_self->memory = __pyx_t_5;
  __pyx_t_5.memview = NULL;
  __pyx_t_5.data = NULL;
+2133:         self.memory[:] = self.fill
  __pyx_t_6 = __pyx_PyFloat_AsFloat(__pyx_v_self->__pyx_base.fill); if (unlikely((__pyx_t_6 == ((npy_float32)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2133, __pyx_L1_error)
  {
      __pyx_t_5numpy_float32_t __pyx_temp_scalar = __pyx_t_6;
      {
          Py_ssize_t __pyx_temp_extent_0 = __pyx_v_self->memory.shape[0];
          Py_ssize_t __pyx_temp_stride_0 = __pyx_v_self->memory.strides[0];
          char *__pyx_temp_pointer_0;
          Py_ssize_t __pyx_temp_idx_0;
          Py_ssize_t __pyx_temp_extent_1 = __pyx_v_self->memory.shape[1];
          Py_ssize_t __pyx_temp_stride_1 = __pyx_v_self->memory.strides[1];
          char *__pyx_temp_pointer_1;
          Py_ssize_t __pyx_temp_idx_1;
          __pyx_temp_pointer_0 = __pyx_v_self->memory.data;
          for (__pyx_temp_idx_0 = 0; __pyx_temp_idx_0 < __pyx_temp_extent_0; __pyx_temp_idx_0++) {
            __pyx_temp_pointer_1 = __pyx_temp_pointer_0;
            for (__pyx_temp_idx_1 = 0; __pyx_temp_idx_1 < __pyx_temp_extent_1; __pyx_temp_idx_1++) {
              *((__pyx_t_5numpy_float32_t *) __pyx_temp_pointer_1) = __pyx_temp_scalar;
              __pyx_temp_pointer_1 += __pyx_temp_stride_1;
            }
            __pyx_temp_pointer_0 += __pyx_temp_stride_0;
          }
      }
  }
 2134: 
 2135: 
+2136: cdef class VCFInfoFloat64Parser(VCFInfoParserBase):
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoFloat64Parser {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoParserBase __pyx_base;
  __Pyx_memviewslice memory;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFInfoFloat64Parser {
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFInfoParserBase __pyx_base;
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFInfoFloat64Parser *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFInfoFloat64Parser;

 2137: 
 2138:     cdef np.float64_t[:, :] memory
 2139: 
+2140:     def __init__(self, *args, **kwargs):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_20VCFInfoFloat64Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_20VCFInfoFloat64Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 1))) return -1;
  __pyx_v_kwargs = (__pyx_kwds) ? PyDict_Copy(__pyx_kwds) : PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return -1;
  __Pyx_GOTREF(__pyx_v_kwargs);
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_20VCFInfoFloat64Parser___init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoFloat64Parser *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_20VCFInfoFloat64Parser___init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoFloat64Parser *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
  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_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFInfoFloat64Parser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2141:         kwargs['dtype'] = 'float64'
  if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_s_dtype, __pyx_n_s_float64) < 0)) __PYX_ERR(0, 2141, __pyx_L1_error)
+2142:         kwargs.setdefault('fill', NAN)
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_5allel_3opt_11io_vcf_read_NAN); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2142, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyDict_SetDefault(__pyx_v_kwargs, __pyx_n_s_fill, __pyx_t_1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2142, __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;
+2143:         super(VCFInfoFloat64Parser, self).__init__(*args, **kwargs)
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoFloat64Parser));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoFloat64Parser));
  PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoFloat64Parser));
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self));
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_v_args, __pyx_v_kwargs); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2143, __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;
 2144: 
+2145:     cdef int parse(self, InputStreamBase stream, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_20VCFInfoFloat64Parser_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoFloat64Parser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFInfoFloat64Parser.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2146:         vcf_info_parse_floating(stream, context, self.memory)
  __pyx_t_1 = __pyx_fuse_1__pyx_f_5allel_3opt_11io_vcf_read_vcf_info_parse_floating(__pyx_v_stream, __pyx_v_context, __pyx_v_self->memory); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2146, __pyx_L1_error)
 2147: 
+2148:     cdef int malloc_chunk(self) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_20VCFInfoFloat64Parser_malloc_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoFloat64Parser *__pyx_v_self) {
  PyObject *__pyx_v_shape = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("malloc_chunk", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFInfoFloat64Parser.malloc_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_shape);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2149:         shape = (self.chunk_length, self.number)
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.chunk_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.number); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_v_shape = __pyx_t_3;
  __pyx_t_3 = 0;
+2150:         self.values = np.empty(shape, dtype=self.dtype)
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2150, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2150, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2150, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_shape);
  __Pyx_GIVEREF(__pyx_v_shape);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_shape);
  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2150, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->__pyx_base.dtype)) < 0) __PYX_ERR(0, 2150, __pyx_L1_error)
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2150, __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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2150, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_4);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.values);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.values));
  __pyx_v_self->__pyx_base.values = ((PyArrayObject *)__pyx_t_4);
  __pyx_t_4 = 0;
+2151:         self.memory = self.values
  __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsds_nn___pyx_t_5numpy_float64_t(((PyObject *)__pyx_v_self->__pyx_base.values));
  if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 2151, __pyx_L1_error)
  __PYX_XDEC_MEMVIEW(&__pyx_v_self->memory, 0);
  __pyx_v_self->memory = __pyx_t_5;
  __pyx_t_5.memview = NULL;
  __pyx_t_5.data = NULL;
+2152:         self.memory[:] = self.fill
  __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_v_self->__pyx_base.fill); if (unlikely((__pyx_t_6 == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2152, __pyx_L1_error)
  {
      __pyx_t_5numpy_float64_t __pyx_temp_scalar = __pyx_t_6;
      {
          Py_ssize_t __pyx_temp_extent_0 = __pyx_v_self->memory.shape[0];
          Py_ssize_t __pyx_temp_stride_0 = __pyx_v_self->memory.strides[0];
          char *__pyx_temp_pointer_0;
          Py_ssize_t __pyx_temp_idx_0;
          Py_ssize_t __pyx_temp_extent_1 = __pyx_v_self->memory.shape[1];
          Py_ssize_t __pyx_temp_stride_1 = __pyx_v_self->memory.strides[1];
          char *__pyx_temp_pointer_1;
          Py_ssize_t __pyx_temp_idx_1;
          __pyx_temp_pointer_0 = __pyx_v_self->memory.data;
          for (__pyx_temp_idx_0 = 0; __pyx_temp_idx_0 < __pyx_temp_extent_0; __pyx_temp_idx_0++) {
            __pyx_temp_pointer_1 = __pyx_temp_pointer_0;
            for (__pyx_temp_idx_1 = 0; __pyx_temp_idx_1 < __pyx_temp_extent_1; __pyx_temp_idx_1++) {
              *((__pyx_t_5numpy_float64_t *) __pyx_temp_pointer_1) = __pyx_temp_scalar;
              __pyx_temp_pointer_1 += __pyx_temp_stride_1;
            }
            __pyx_temp_pointer_0 += __pyx_temp_stride_0;
          }
      }
  }
 2153: 
 2154: 
+2155: cdef class VCFInfoFlagParser(VCFInfoParserBase):
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoFlagParser {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoParserBase __pyx_base;
  __Pyx_memviewslice memory;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFInfoFlagParser {
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFInfoParserBase __pyx_base;
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFInfoFlagParser *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFInfoFlagParser;

 2156: 
 2157:     cdef np.uint8_t[:] memory
 2158: 
+2159:     def __init__(self, *args, **kwargs):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_17VCFInfoFlagParser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_17VCFInfoFlagParser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 1))) return -1;
  __pyx_v_kwargs = (__pyx_kwds) ? PyDict_Copy(__pyx_kwds) : PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return -1;
  __Pyx_GOTREF(__pyx_v_kwargs);
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_17VCFInfoFlagParser___init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoFlagParser *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_17VCFInfoFlagParser___init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoFlagParser *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
  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_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFInfoFlagParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2160:         kwargs['dtype'] = 'uint8'
  if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_s_dtype, __pyx_n_s_uint8) < 0)) __PYX_ERR(0, 2160, __pyx_L1_error)
+2161:         super(VCFInfoFlagParser, self).__init__(*args, **kwargs)
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2161, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoFlagParser));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoFlagParser));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoFlagParser));
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self));
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2161, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2161, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_v_args, __pyx_v_kwargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2161, __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;
 2162: 
+2163:     cdef int parse(self, InputStreamBase stream, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_17VCFInfoFlagParser_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoFlagParser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFInfoFlagParser.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 2164:         # nothing to parse
+2165:         self.memory[context.chunk_variant_index] = 1
  __pyx_t_1 = __pyx_v_context->chunk_variant_index;
  *((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_self->memory.data + __pyx_t_1 * __pyx_v_self->memory.strides[0]) )) = 1;
 2166:         # ensure we advance the end of the field
+2167:         while stream.c != SEMICOLON and \
  while (1) {
    __pyx_t_3 = ((__pyx_v_stream->c != __pyx_v_5allel_3opt_11io_vcf_read_SEMICOLON) != 0);
    if (__pyx_t_3) {
    } else {
      __pyx_t_2 = __pyx_t_3;
      goto __pyx_L5_bool_binop_done;
    }
+2168:                 stream.c != TAB and \
    __pyx_t_3 = ((__pyx_v_stream->c != __pyx_v_5allel_3opt_11io_vcf_read_TAB) != 0);
    if (__pyx_t_3) {
    } else {
      __pyx_t_2 = __pyx_t_3;
      goto __pyx_L5_bool_binop_done;
    }
+2169:                 stream.c != LF and \
    __pyx_t_3 = ((__pyx_v_stream->c != __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
    if (__pyx_t_3) {
    } else {
      __pyx_t_2 = __pyx_t_3;
      goto __pyx_L5_bool_binop_done;
    }
+2170:                 stream.c != CR and \
    __pyx_t_3 = ((__pyx_v_stream->c != __pyx_v_5allel_3opt_11io_vcf_read_CR) != 0);
    if (__pyx_t_3) {
    } else {
      __pyx_t_2 = __pyx_t_3;
      goto __pyx_L5_bool_binop_done;
    }
+2171:                 stream.c != 0:
    __pyx_t_3 = ((__pyx_v_stream->c != 0) != 0);
    __pyx_t_2 = __pyx_t_3;
    __pyx_L5_bool_binop_done:;
    if (!__pyx_t_2) break;
+2172:             stream.advance()
    __pyx_t_4 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 2172, __pyx_L1_error)
  }
 2173: 
+2174:     cdef int make_chunk(self, chunk, limit=None) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_17VCFInfoFlagParser_make_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoFlagParser *__pyx_v_self, PyObject *__pyx_v_chunk, struct __pyx_opt_args_5allel_3opt_11io_vcf_read_17VCFInfoFlagParser_make_chunk *__pyx_optional_args) {
  PyObject *__pyx_v_limit = ((PyObject *)Py_None);
  PyObject *__pyx_v_field = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("make_chunk", 0);
  if (__pyx_optional_args) {
    if (__pyx_optional_args->__pyx_n > 0) {
      __pyx_v_limit = __pyx_optional_args->limit;
    }
  }
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFInfoFlagParser.make_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_field);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
struct __pyx_opt_args_5allel_3opt_11io_vcf_read_17VCFInfoFlagParser_make_chunk {
  int __pyx_n;
  PyObject *limit;
};
 2175:         # override to view as bool array
+2176:         field = u'variants/' + text_type(self.key, 'utf8')
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_text_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2176, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_self->__pyx_base.key, __pyx_n_s_utf8};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2176, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_self->__pyx_base.key, __pyx_n_s_utf8};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2176, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else
  #endif
  {
    __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2176, __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_self->__pyx_base.key);
    __Pyx_GIVEREF(__pyx_v_self->__pyx_base.key);
    PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_self->__pyx_base.key);
    __Pyx_INCREF(__pyx_n_s_utf8);
    __Pyx_GIVEREF(__pyx_n_s_utf8);
    PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_n_s_utf8);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2176, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyNumber_Add(__pyx_kp_u_variants_2, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2176, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_field = __pyx_t_2;
  __pyx_t_2 = 0;
+2177:         chunk[field] = self.values[:limit].view(bool)
  __pyx_t_1 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_v_self->__pyx_base.values), 0, 0, NULL, &__pyx_v_limit, NULL, 0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2177, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_view); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2177, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
    }
  }
  if (!__pyx_t_1) {
    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_5, ((PyObject*)&PyBool_Type)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2177, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_5)) {
      PyObject *__pyx_temp[2] = {__pyx_t_1, ((PyObject*)&PyBool_Type)};
      __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2177, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_GOTREF(__pyx_t_2);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
      PyObject *__pyx_temp[2] = {__pyx_t_1, ((PyObject*)&PyBool_Type)};
      __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2177, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_GOTREF(__pyx_t_2);
    } else
    #endif
    {
      __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2177, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); __pyx_t_1 = NULL;
      __Pyx_INCREF(((PyObject*)&PyBool_Type));
      __Pyx_GIVEREF(((PyObject*)&PyBool_Type));
      PyTuple_SET_ITEM(__pyx_t_3, 0+1, ((PyObject*)&PyBool_Type));
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2177, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (unlikely(PyObject_SetItem(__pyx_v_chunk, __pyx_v_field, __pyx_t_2) < 0)) __PYX_ERR(0, 2177, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 2178: 
+2179:     cdef int malloc_chunk(self) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_17VCFInfoFlagParser_malloc_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoFlagParser *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("malloc_chunk", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFInfoFlagParser.malloc_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2180:         self.values = np.empty(self.chunk_length, dtype=self.dtype)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2180, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2180, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.chunk_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2180, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2180, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2180, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->__pyx_base.dtype)) < 0) __PYX_ERR(0, 2180, __pyx_L1_error)
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2180, __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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2180, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_4);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.values);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.values));
  __pyx_v_self->__pyx_base.values = ((PyArrayObject *)__pyx_t_4);
  __pyx_t_4 = 0;
+2181:         self.memory = self.values
  __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_uint8_t(((PyObject *)__pyx_v_self->__pyx_base.values));
  if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 2181, __pyx_L1_error)
  __PYX_XDEC_MEMVIEW(&__pyx_v_self->memory, 0);
  __pyx_v_self->memory = __pyx_t_5;
  __pyx_t_5.memview = NULL;
  __pyx_t_5.data = NULL;
+2182:         self.memory[:] = self.fill
  __pyx_t_6 = __Pyx_PyInt_As_npy_uint8(__pyx_v_self->__pyx_base.fill); if (unlikely((__pyx_t_6 == ((npy_uint8)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2182, __pyx_L1_error)
  {
      __pyx_t_5numpy_uint8_t __pyx_temp_scalar = __pyx_t_6;
      {
          Py_ssize_t __pyx_temp_extent_0 = __pyx_v_self->memory.shape[0];
          Py_ssize_t __pyx_temp_stride_0 = __pyx_v_self->memory.strides[0];
          char *__pyx_temp_pointer_0;
          Py_ssize_t __pyx_temp_idx_0;
          __pyx_temp_pointer_0 = __pyx_v_self->memory.data;
          for (__pyx_temp_idx_0 = 0; __pyx_temp_idx_0 < __pyx_temp_extent_0; __pyx_temp_idx_0++) {
            *((__pyx_t_5numpy_uint8_t *) __pyx_temp_pointer_0) = __pyx_temp_scalar;
            __pyx_temp_pointer_0 += __pyx_temp_stride_0;
          }
      }
  }
 2183: 
 2184: 
+2185: cdef class VCFInfoStringParser(VCFInfoParserBase):
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoStringParser {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoParserBase __pyx_base;
  __Pyx_memviewslice memory;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFInfoStringParser {
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFInfoParserBase __pyx_base;
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFInfoStringParser *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFInfoStringParser;

 2186: 
 2187:     cdef np.uint8_t[:] memory
 2188: 
+2189:     def __init__(self, *args, **kwargs):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_19VCFInfoStringParser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_19VCFInfoStringParser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 1))) return -1;
  __pyx_v_kwargs = (__pyx_kwds) ? PyDict_Copy(__pyx_kwds) : PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return -1;
  __Pyx_GOTREF(__pyx_v_kwargs);
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_19VCFInfoStringParser___init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoStringParser *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_19VCFInfoStringParser___init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoStringParser *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
  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_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFInfoStringParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2190:         kwargs['dtype'] = check_string_dtype(kwargs.get('dtype'))
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_check_string_dtype); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyDict_GetItemDefault(__pyx_v_kwargs, __pyx_n_s_dtype, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_4) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2190, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_3};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2190, __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_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_3};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2190, __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(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2190, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2190, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_s_dtype, __pyx_t_1) < 0)) __PYX_ERR(0, 2190, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2191:         super(VCFInfoStringParser, self).__init__(*args, **kwargs)
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2191, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoStringParser));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoStringParser));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoStringParser));
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self));
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2191, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2191, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_v_args, __pyx_v_kwargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2191, __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;
 2192: 
+2193:     cdef int parse(self, InputStreamBase stream, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_19VCFInfoStringParser_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoStringParser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  Py_ssize_t __pyx_v_value_index;
  Py_ssize_t __pyx_v_memory_offset;
  Py_ssize_t __pyx_v_memory_index;
  Py_ssize_t __pyx_v_chars_stored;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFInfoStringParser.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 2194:         cdef:
+2195:             Py_ssize_t value_index = 0
  __pyx_v_value_index = 0;
 2196:             # index into memory view
 2197:             Py_ssize_t memory_offset, memory_index
 2198:             # number of characters read into current value
+2199:             Py_ssize_t chars_stored = 0
  __pyx_v_chars_stored = 0;
 2200: 
 2201:         # initialise memory index
+2202:         memory_offset = context.chunk_variant_index * self.itemsize * self.number
  __pyx_v_memory_offset = ((__pyx_v_context->chunk_variant_index * __pyx_v_self->__pyx_base.itemsize) * __pyx_v_self->__pyx_base.number);
+2203:         memory_index = memory_offset
  __pyx_v_memory_index = __pyx_v_memory_offset;
 2204: 
+2205:         while True:
  while (1) {
 2206: 
+2207:             if stream.c == 0 or \
    __pyx_t_2 = ((__pyx_v_stream->c == 0) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    if (__pyx_t_1) {
/* … */
    }
+2208:                     stream.c == LF or \
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
+2209:                     stream.c == CR or \
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_CR) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
+2210:                     stream.c == TAB or \
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_TAB) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
+2211:                     stream.c == SEMICOLON:
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_SEMICOLON) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L6_bool_binop_done:;
+2212:                 break
      goto __pyx_L4_break;
 2213: 
+2214:             elif stream.c == COMMA:
    __pyx_t_1 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_COMMA) != 0);
    if (__pyx_t_1) {
/* … */
      goto __pyx_L5;
    }
 2215:                 # advance value index
+2216:                 value_index += 1
      __pyx_v_value_index = (__pyx_v_value_index + 1);
 2217:                 # set memory index to beginning of next item
+2218:                 memory_index = memory_offset + (value_index * self.itemsize)
      __pyx_v_memory_index = (__pyx_v_memory_offset + (__pyx_v_value_index * __pyx_v_self->__pyx_base.itemsize));
 2219:                 # reset chars stored
+2220:                 chars_stored = 0
      __pyx_v_chars_stored = 0;
 2221: 
+2222:             elif chars_stored < self.itemsize and value_index < self.number:
    __pyx_t_2 = ((__pyx_v_chars_stored < __pyx_v_self->__pyx_base.itemsize) != 0);
    if (__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L11_bool_binop_done;
    }
    __pyx_t_2 = ((__pyx_v_value_index < __pyx_v_self->__pyx_base.number) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L11_bool_binop_done:;
    if (__pyx_t_1) {
/* … */
    }
    __pyx_L5:;
 2223:                 # store value
+2224:                 self.memory[memory_index] = stream.c
      __pyx_t_3 = __pyx_v_stream->c;
      __pyx_t_4 = __pyx_v_memory_index;
      *((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_self->memory.data + __pyx_t_4 * __pyx_v_self->memory.strides[0]) )) = __pyx_t_3;
 2225:                 # advance memory index
+2226:                 memory_index += 1
      __pyx_v_memory_index = (__pyx_v_memory_index + 1);
 2227:                 # advance number of characters stored
+2228:                 chars_stored += 1
      __pyx_v_chars_stored = (__pyx_v_chars_stored + 1);
 2229: 
 2230:             # advance input stream
+2231:             stream.advance()
    __pyx_t_5 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 2231, __pyx_L1_error)
  }
  __pyx_L4_break:;
 2232: 
+2233:     cdef int malloc_chunk(self) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_19VCFInfoStringParser_malloc_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoStringParser *__pyx_v_self) {
  PyObject *__pyx_v_shape = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("malloc_chunk", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFInfoStringParser.malloc_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_shape);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2234:         shape = (self.chunk_length, self.number)
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.chunk_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2234, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.number); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2234, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2234, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_v_shape = __pyx_t_3;
  __pyx_t_3 = 0;
+2235:         self.values = np.zeros(shape, dtype=self.dtype)
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2235, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2235, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2235, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_shape);
  __Pyx_GIVEREF(__pyx_v_shape);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_shape);
  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2235, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->__pyx_base.dtype)) < 0) __PYX_ERR(0, 2235, __pyx_L1_error)
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2235, __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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2235, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_4);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.values);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.values));
  __pyx_v_self->__pyx_base.values = ((PyArrayObject *)__pyx_t_4);
  __pyx_t_4 = 0;
+2236:         self.memory = self.values.reshape(-1).view('u1')
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.values), __pyx_n_s_reshape); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2236, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__57, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2236, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_view); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2236, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* … */
  __pyx_tuple__57 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__57)) __PYX_ERR(0, 2236, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__57);
  __Pyx_GIVEREF(__pyx_tuple__57);
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__58, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2236, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_uint8_t(__pyx_t_1);
  if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 2236, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_XDEC_MEMVIEW(&__pyx_v_self->memory, 0);
  __pyx_v_self->memory = __pyx_t_5;
  __pyx_t_5.memview = NULL;
  __pyx_t_5.data = NULL;
  __pyx_tuple__58 = PyTuple_Pack(1, __pyx_n_s_u1); if (unlikely(!__pyx_tuple__58)) __PYX_ERR(0, 2236, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__58);
  __Pyx_GIVEREF(__pyx_tuple__58);
 2237: 
 2238: 
+2239: cdef class VCFInfoObjectParser(VCFInfoParserBase):
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoObjectParser {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoParserBase __pyx_base;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFInfoObjectParser {
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFInfoParserBase __pyx_base;
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFInfoObjectParser *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFInfoObjectParser;

 2240: 
+2241:     def __init__(self, *args, **kwargs):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_19VCFInfoObjectParser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_19VCFInfoObjectParser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 1))) return -1;
  __pyx_v_kwargs = (__pyx_kwds) ? PyDict_Copy(__pyx_kwds) : PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return -1;
  __Pyx_GOTREF(__pyx_v_kwargs);
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_19VCFInfoObjectParser___init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoObjectParser *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_19VCFInfoObjectParser___init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoObjectParser *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
  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_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFInfoObjectParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2242:         kwargs['dtype'] = np.dtype('object')
  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__59, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2242, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_s_dtype, __pyx_t_1) < 0)) __PYX_ERR(0, 2242, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* … */
  __pyx_tuple__59 = PyTuple_Pack(1, __pyx_n_s_object); if (unlikely(!__pyx_tuple__59)) __PYX_ERR(0, 2242, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__59);
  __Pyx_GIVEREF(__pyx_tuple__59);
+2243:         super(VCFInfoObjectParser, self).__init__(*args, **kwargs)
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2243, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoObjectParser));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoObjectParser));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoObjectParser));
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self));
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2243, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2243, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_v_args, __pyx_v_kwargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2243, __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;
 2244: 
+2245:     cdef int parse(self, InputStreamBase stream, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_19VCFInfoObjectParser_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoObjectParser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  Py_ssize_t __pyx_v_value_index;
  PyObject *__pyx_v_v = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFInfoObjectParser.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_v);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 2246:         cdef:
+2247:             Py_ssize_t value_index = 0
  __pyx_v_value_index = 0;
 2248: 
+2249:         CharVector_clear(&context.info_val)
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->info_val));
 2250: 
+2251:         while True:
  while (1) {
 2252: 
+2253:             if stream.c == 0 or \
    __pyx_t_2 = ((__pyx_v_stream->c == 0) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    if (__pyx_t_1) {
/* … */
    }
+2254:                     stream.c == LF or \
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
+2255:                     stream.c == CR or \
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_CR) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
+2256:                     stream.c == TAB or \
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_TAB) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
+2257:                     stream.c == SEMICOLON:
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_SEMICOLON) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L6_bool_binop_done:;
+2258:                 if value_index < self.number and context.info_val.size > 0:
      __pyx_t_2 = ((__pyx_v_value_index < __pyx_v_self->__pyx_base.number) != 0);
      if (__pyx_t_2) {
      } else {
        __pyx_t_1 = __pyx_t_2;
        goto __pyx_L12_bool_binop_done;
      }
      __pyx_t_2 = ((__pyx_v_context->info_val.size > 0) != 0);
      __pyx_t_1 = __pyx_t_2;
      __pyx_L12_bool_binop_done:;
      if (__pyx_t_1) {
/* … */
      }
 2259:                     # with gil:
+2260:                     v = CharVector_to_pystr(&context.info_val)
        __pyx_t_3 = __pyx_f_5allel_3opt_11io_vcf_read_CharVector_to_pystr((&__pyx_v_context->info_val)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2260, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_XDECREF_SET(__pyx_v_v, __pyx_t_3);
        __pyx_t_3 = 0;
+2261:                     self.values[context.chunk_variant_index, value_index] = v
        __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_context->chunk_variant_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2261, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_value_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2261, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2261, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_3);
        PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3);
        __Pyx_GIVEREF(__pyx_t_4);
        PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_4);
        __pyx_t_3 = 0;
        __pyx_t_4 = 0;
        if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->__pyx_base.values), __pyx_t_5, __pyx_v_v) < 0)) __PYX_ERR(0, 2261, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+2262:                 break
      goto __pyx_L4_break;
 2263: 
+2264:             elif stream.c == COMMA:
    __pyx_t_1 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_COMMA) != 0);
    if (__pyx_t_1) {
/* … */
      goto __pyx_L5;
    }
+2265:                 if value_index < self.number and context.info_val.size > 0:
      __pyx_t_2 = ((__pyx_v_value_index < __pyx_v_self->__pyx_base.number) != 0);
      if (__pyx_t_2) {
      } else {
        __pyx_t_1 = __pyx_t_2;
        goto __pyx_L15_bool_binop_done;
      }
      __pyx_t_2 = ((__pyx_v_context->info_val.size > 0) != 0);
      __pyx_t_1 = __pyx_t_2;
      __pyx_L15_bool_binop_done:;
      if (__pyx_t_1) {
/* … */
      }
 2266:                     # with gil:
+2267:                     v = CharVector_to_pystr(&context.info_val)
        __pyx_t_5 = __pyx_f_5allel_3opt_11io_vcf_read_CharVector_to_pystr((&__pyx_v_context->info_val)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2267, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_XDECREF_SET(__pyx_v_v, __pyx_t_5);
        __pyx_t_5 = 0;
+2268:                     self.values[context.chunk_variant_index, value_index] = v
        __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_context->chunk_variant_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2268, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_value_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2268, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2268, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_GIVEREF(__pyx_t_5);
        PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_4);
        PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_4);
        __pyx_t_5 = 0;
        __pyx_t_4 = 0;
        if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->__pyx_base.values), __pyx_t_3, __pyx_v_v) < 0)) __PYX_ERR(0, 2268, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+2269:                     CharVector_clear(&context.info_val)
        __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->info_val));
 2270:                 # advance value index
+2271:                 value_index += 1
      __pyx_v_value_index = (__pyx_v_value_index + 1);
 2272: 
+2273:             elif value_index < self.number:
    __pyx_t_1 = ((__pyx_v_value_index < __pyx_v_self->__pyx_base.number) != 0);
    if (__pyx_t_1) {
/* … */
    }
    __pyx_L5:;
+2274:                 CharVector_append(&context.info_val, stream.c)
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_append((&__pyx_v_context->info_val), __pyx_v_stream->c);
 2275: 
 2276:             # advance input stream
+2277:             stream.advance()
    __pyx_t_6 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 2277, __pyx_L1_error)
  }
  __pyx_L4_break:;
 2278: 
+2279:     cdef int malloc_chunk(self) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_19VCFInfoObjectParser_malloc_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoObjectParser *__pyx_v_self) {
  PyObject *__pyx_v_shape = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("malloc_chunk", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFInfoObjectParser.malloc_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_shape);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2280:         shape = (self.chunk_length, self.number)
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.chunk_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2280, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.number); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2280, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2280, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_v_shape = __pyx_t_3;
  __pyx_t_3 = 0;
+2281:         self.values = np.empty(shape, dtype=self.dtype)
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2281, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2281, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2281, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_shape);
  __Pyx_GIVEREF(__pyx_v_shape);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_shape);
  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2281, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->__pyx_base.dtype)) < 0) __PYX_ERR(0, 2281, __pyx_L1_error)
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2281, __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_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2281, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_4);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.values);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.values));
  __pyx_v_self->__pyx_base.values = ((PyArrayObject *)__pyx_t_4);
  __pyx_t_4 = 0;
+2282:         self.values.fill(u'')
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.values), __pyx_n_s_fill); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2282, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__60, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2282, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* … */
  __pyx_tuple__60 = PyTuple_Pack(1, __pyx_kp_u__8); if (unlikely(!__pyx_tuple__60)) __PYX_ERR(0, 2282, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__60);
  __Pyx_GIVEREF(__pyx_tuple__60);
 2283: 
 2284: 
+2285: cdef class VCFInfoSkipParser(VCFInfoParserBase):
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoSkipParser {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoParserBase __pyx_base;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFInfoSkipParser {
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFInfoParserBase __pyx_base;
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFInfoSkipParser *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFInfoSkipParser;

 2286: 
+2287:     def __init__(self, *args, **kwargs):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_17VCFInfoSkipParser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_17VCFInfoSkipParser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 1))) return -1;
  if (unlikely(__pyx_kwds)) {
    __pyx_v_kwargs = PyDict_Copy(__pyx_kwds); if (unlikely(!__pyx_v_kwargs)) return -1;
    __Pyx_GOTREF(__pyx_v_kwargs);
  } else {
    __pyx_v_kwargs = NULL;
  }
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_17VCFInfoSkipParser___init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoSkipParser *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_17VCFInfoSkipParser___init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoSkipParser *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
  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_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFInfoSkipParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2288:         super(VCFInfoSkipParser, self).__init__(*args, **kwargs)
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2288, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoSkipParser));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoSkipParser));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFInfoSkipParser));
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self));
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2288, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2288, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_v_args, __pyx_v_kwargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2288, __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;
 2289: 
+2290:     cdef int parse(self, InputStreamBase stream, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_17VCFInfoSkipParser_parse(CYTHON_UNUSED struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoSkipParser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, CYTHON_UNUSED struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFInfoSkipParser.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 2291:         # ensure we advance the end of the field
+2292:         while stream.c != SEMICOLON and \
  while (1) {
    __pyx_t_2 = ((__pyx_v_stream->c != __pyx_v_5allel_3opt_11io_vcf_read_SEMICOLON) != 0);
    if (__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L5_bool_binop_done;
    }
+2293:                 stream.c != TAB and \
    __pyx_t_2 = ((__pyx_v_stream->c != __pyx_v_5allel_3opt_11io_vcf_read_TAB) != 0);
    if (__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L5_bool_binop_done;
    }
+2294:                 stream.c != LF and \
    __pyx_t_2 = ((__pyx_v_stream->c != __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
    if (__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L5_bool_binop_done;
    }
+2295:                 stream.c != CR and \
    __pyx_t_2 = ((__pyx_v_stream->c != __pyx_v_5allel_3opt_11io_vcf_read_CR) != 0);
    if (__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L5_bool_binop_done;
    }
+2296:                 stream.c != 0:
    __pyx_t_2 = ((__pyx_v_stream->c != 0) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L5_bool_binop_done:;
    if (!__pyx_t_1) break;
+2297:             stream.advance()
    __pyx_t_3 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2297, __pyx_L1_error)
  }
 2298: 
+2299:     cdef int malloc_chunk(self) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_17VCFInfoSkipParser_malloc_chunk(CYTHON_UNUSED struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoSkipParser *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("malloc_chunk", 0);

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 2300:         pass
 2301: 
+2302:     cdef int make_chunk(self, chunk, limit=None) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_17VCFInfoSkipParser_make_chunk(CYTHON_UNUSED struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFInfoSkipParser *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_chunk, struct __pyx_opt_args_5allel_3opt_11io_vcf_read_17VCFInfoSkipParser_make_chunk *__pyx_optional_args) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("make_chunk", 0);
  if (__pyx_optional_args) {
  }

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
struct __pyx_opt_args_5allel_3opt_11io_vcf_read_17VCFInfoSkipParser_make_chunk {
  int __pyx_n;
  PyObject *limit;
};
 2303:         pass
 2304: 
 2305: 
+2306: cdef int vcf_info_parse_integer(InputStreamBase stream,
static int __pyx_fuse_0__pyx_f_5allel_3opt_11io_vcf_read_vcf_info_parse_integer(struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, __Pyx_memviewslice __pyx_v_memory) {
  Py_ssize_t __pyx_v_value_index;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_0vcf_info_parse_integer", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_info_parse_integer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_fuse_1__pyx_f_5allel_3opt_11io_vcf_read_vcf_info_parse_integer(struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, __Pyx_memviewslice __pyx_v_memory) {
  Py_ssize_t __pyx_v_value_index;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_1vcf_info_parse_integer", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_info_parse_integer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_fuse_2__pyx_f_5allel_3opt_11io_vcf_read_vcf_info_parse_integer(struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, __Pyx_memviewslice __pyx_v_memory) {
  Py_ssize_t __pyx_v_value_index;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_2vcf_info_parse_integer", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_info_parse_integer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_fuse_3__pyx_f_5allel_3opt_11io_vcf_read_vcf_info_parse_integer(struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, __Pyx_memviewslice __pyx_v_memory) {
  Py_ssize_t __pyx_v_value_index;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_3vcf_info_parse_integer", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_info_parse_integer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_fuse_4__pyx_f_5allel_3opt_11io_vcf_read_vcf_info_parse_integer(struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, __Pyx_memviewslice __pyx_v_memory) {
  Py_ssize_t __pyx_v_value_index;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_4vcf_info_parse_integer", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_info_parse_integer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_fuse_5__pyx_f_5allel_3opt_11io_vcf_read_vcf_info_parse_integer(struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, __Pyx_memviewslice __pyx_v_memory) {
  Py_ssize_t __pyx_v_value_index;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_5vcf_info_parse_integer", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_info_parse_integer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_fuse_6__pyx_f_5allel_3opt_11io_vcf_read_vcf_info_parse_integer(struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, __Pyx_memviewslice __pyx_v_memory) {
  Py_ssize_t __pyx_v_value_index;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_6vcf_info_parse_integer", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_info_parse_integer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_fuse_7__pyx_f_5allel_3opt_11io_vcf_read_vcf_info_parse_integer(struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, __Pyx_memviewslice __pyx_v_memory) {
  Py_ssize_t __pyx_v_value_index;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_7vcf_info_parse_integer", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_info_parse_integer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 2307:                                 VCFContext context,
 2308:                                 integer[:, :] memory) except -1:  # nogil
 2309:     cdef:
+2310:         Py_ssize_t value_index = 0
  __pyx_v_value_index = 0;
/* … */
  __pyx_v_value_index = 0;
/* … */
  __pyx_v_value_index = 0;
/* … */
  __pyx_v_value_index = 0;
/* … */
  __pyx_v_value_index = 0;
/* … */
  __pyx_v_value_index = 0;
/* … */
  __pyx_v_value_index = 0;
/* … */
  __pyx_v_value_index = 0;
 2311: 
 2312:     # reset temporary buffer
+2313:     CharVector_clear(&context.info_val)
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->info_val));
/* … */
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->info_val));
/* … */
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->info_val));
/* … */
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->info_val));
/* … */
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->info_val));
/* … */
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->info_val));
/* … */
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->info_val));
/* … */
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->info_val));
 2314: 
+2315:     while True:
  while (1) {
/* … */
  while (1) {
/* … */
  while (1) {
/* … */
  while (1) {
/* … */
  while (1) {
/* … */
  while (1) {
/* … */
  while (1) {
/* … */
  while (1) {
 2316: 
+2317:         if stream.c == 0 or \
    __pyx_t_2 = ((__pyx_v_stream->c == 0) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    if (__pyx_t_1) {
/* … */
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == 0) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    if (__pyx_t_1) {
/* … */
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == 0) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    if (__pyx_t_1) {
/* … */
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == 0) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    if (__pyx_t_1) {
/* … */
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == 0) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    if (__pyx_t_1) {
/* … */
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == 0) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    if (__pyx_t_1) {
/* … */
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == 0) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    if (__pyx_t_1) {
/* … */
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == 0) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    if (__pyx_t_1) {
/* … */
    }
+2318:                 stream.c == LF or \
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
+2319:                 stream.c == CR or \
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_CR) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_CR) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_CR) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_CR) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_CR) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_CR) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_CR) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_CR) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
+2320:                 stream.c == TAB or \
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_TAB) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_TAB) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_TAB) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_TAB) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_TAB) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_TAB) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_TAB) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_TAB) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
+2321:                 stream.c == SEMICOLON:
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_SEMICOLON) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L6_bool_binop_done:;
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_SEMICOLON) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L6_bool_binop_done:;
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_SEMICOLON) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L6_bool_binop_done:;
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_SEMICOLON) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L6_bool_binop_done:;
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_SEMICOLON) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L6_bool_binop_done:;
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_SEMICOLON) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L6_bool_binop_done:;
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_SEMICOLON) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L6_bool_binop_done:;
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_SEMICOLON) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L6_bool_binop_done:;
+2322:             vcf_info_store_integer(context, value_index, memory)
      __pyx_t_3 = __pyx_fuse_0__pyx_f_5allel_3opt_11io_vcf_read_vcf_info_store_integer(__pyx_v_context, __pyx_v_value_index, __pyx_v_memory); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2322, __pyx_L1_error)
/* … */
      __pyx_t_3 = __pyx_fuse_1__pyx_f_5allel_3opt_11io_vcf_read_vcf_info_store_integer(__pyx_v_context, __pyx_v_value_index, __pyx_v_memory); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2322, __pyx_L1_error)
/* … */
      __pyx_t_3 = __pyx_fuse_2__pyx_f_5allel_3opt_11io_vcf_read_vcf_info_store_integer(__pyx_v_context, __pyx_v_value_index, __pyx_v_memory); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2322, __pyx_L1_error)
/* … */
      __pyx_t_3 = __pyx_fuse_3__pyx_f_5allel_3opt_11io_vcf_read_vcf_info_store_integer(__pyx_v_context, __pyx_v_value_index, __pyx_v_memory); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2322, __pyx_L1_error)
/* … */
      __pyx_t_3 = __pyx_fuse_4__pyx_f_5allel_3opt_11io_vcf_read_vcf_info_store_integer(__pyx_v_context, __pyx_v_value_index, __pyx_v_memory); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2322, __pyx_L1_error)
/* … */
      __pyx_t_3 = __pyx_fuse_5__pyx_f_5allel_3opt_11io_vcf_read_vcf_info_store_integer(__pyx_v_context, __pyx_v_value_index, __pyx_v_memory); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2322, __pyx_L1_error)
/* … */
      __pyx_t_3 = __pyx_fuse_6__pyx_f_5allel_3opt_11io_vcf_read_vcf_info_store_integer(__pyx_v_context, __pyx_v_value_index, __pyx_v_memory); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2322, __pyx_L1_error)
/* … */
      __pyx_t_3 = __pyx_fuse_7__pyx_f_5allel_3opt_11io_vcf_read_vcf_info_store_integer(__pyx_v_context, __pyx_v_value_index, __pyx_v_memory); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2322, __pyx_L1_error)
+2323:             break
      goto __pyx_L4_break;
/* … */
      goto __pyx_L4_break;
/* … */
      goto __pyx_L4_break;
/* … */
      goto __pyx_L4_break;
/* … */
      goto __pyx_L4_break;
/* … */
      goto __pyx_L4_break;
/* … */
      goto __pyx_L4_break;
/* … */
      goto __pyx_L4_break;
 2324: 
+2325:         elif stream.c == COMMA:
    __pyx_t_1 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_COMMA) != 0);
    if (__pyx_t_1) {
/* … */
      goto __pyx_L5;
    }
/* … */
    __pyx_t_1 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_COMMA) != 0);
    if (__pyx_t_1) {
/* … */
      goto __pyx_L5;
    }
/* … */
    __pyx_t_1 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_COMMA) != 0);
    if (__pyx_t_1) {
/* … */
      goto __pyx_L5;
    }
/* … */
    __pyx_t_1 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_COMMA) != 0);
    if (__pyx_t_1) {
/* … */
      goto __pyx_L5;
    }
/* … */
    __pyx_t_1 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_COMMA) != 0);
    if (__pyx_t_1) {
/* … */
      goto __pyx_L5;
    }
/* … */
    __pyx_t_1 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_COMMA) != 0);
    if (__pyx_t_1) {
/* … */
      goto __pyx_L5;
    }
/* … */
    __pyx_t_1 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_COMMA) != 0);
    if (__pyx_t_1) {
/* … */
      goto __pyx_L5;
    }
/* … */
    __pyx_t_1 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_COMMA) != 0);
    if (__pyx_t_1) {
/* … */
      goto __pyx_L5;
    }
+2326:             vcf_info_store_integer(context, value_index, memory)
      __pyx_t_3 = __pyx_fuse_0__pyx_f_5allel_3opt_11io_vcf_read_vcf_info_store_integer(__pyx_v_context, __pyx_v_value_index, __pyx_v_memory); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2326, __pyx_L1_error)
/* … */
      __pyx_t_3 = __pyx_fuse_1__pyx_f_5allel_3opt_11io_vcf_read_vcf_info_store_integer(__pyx_v_context, __pyx_v_value_index, __pyx_v_memory); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2326, __pyx_L1_error)
/* … */
      __pyx_t_3 = __pyx_fuse_2__pyx_f_5allel_3opt_11io_vcf_read_vcf_info_store_integer(__pyx_v_context, __pyx_v_value_index, __pyx_v_memory); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2326, __pyx_L1_error)
/* … */
      __pyx_t_3 = __pyx_fuse_3__pyx_f_5allel_3opt_11io_vcf_read_vcf_info_store_integer(__pyx_v_context, __pyx_v_value_index, __pyx_v_memory); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2326, __pyx_L1_error)
/* … */
      __pyx_t_3 = __pyx_fuse_4__pyx_f_5allel_3opt_11io_vcf_read_vcf_info_store_integer(__pyx_v_context, __pyx_v_value_index, __pyx_v_memory); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2326, __pyx_L1_error)
/* … */
      __pyx_t_3 = __pyx_fuse_5__pyx_f_5allel_3opt_11io_vcf_read_vcf_info_store_integer(__pyx_v_context, __pyx_v_value_index, __pyx_v_memory); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2326, __pyx_L1_error)
/* … */
      __pyx_t_3 = __pyx_fuse_6__pyx_f_5allel_3opt_11io_vcf_read_vcf_info_store_integer(__pyx_v_context, __pyx_v_value_index, __pyx_v_memory); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2326, __pyx_L1_error)
/* … */
      __pyx_t_3 = __pyx_fuse_7__pyx_f_5allel_3opt_11io_vcf_read_vcf_info_store_integer(__pyx_v_context, __pyx_v_value_index, __pyx_v_memory); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2326, __pyx_L1_error)
+2327:             CharVector_clear(&context.info_val)
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->info_val));
/* … */
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->info_val));
/* … */
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->info_val));
/* … */
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->info_val));
/* … */
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->info_val));
/* … */
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->info_val));
/* … */
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->info_val));
/* … */
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->info_val));
+2328:             value_index += 1
      __pyx_v_value_index = (__pyx_v_value_index + 1);
/* … */
      __pyx_v_value_index = (__pyx_v_value_index + 1);
/* … */
      __pyx_v_value_index = (__pyx_v_value_index + 1);
/* … */
      __pyx_v_value_index = (__pyx_v_value_index + 1);
/* … */
      __pyx_v_value_index = (__pyx_v_value_index + 1);
/* … */
      __pyx_v_value_index = (__pyx_v_value_index + 1);
/* … */
      __pyx_v_value_index = (__pyx_v_value_index + 1);
/* … */
      __pyx_v_value_index = (__pyx_v_value_index + 1);
 2329: 
 2330:         else:
+2331:             CharVector_append(&context.info_val, stream.c)
    /*else*/ {
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_append((&__pyx_v_context->info_val), __pyx_v_stream->c);
    }
    __pyx_L5:;
/* … */
    /*else*/ {
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_append((&__pyx_v_context->info_val), __pyx_v_stream->c);
    }
    __pyx_L5:;
/* … */
    /*else*/ {
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_append((&__pyx_v_context->info_val), __pyx_v_stream->c);
    }
    __pyx_L5:;
/* … */
    /*else*/ {
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_append((&__pyx_v_context->info_val), __pyx_v_stream->c);
    }
    __pyx_L5:;
/* … */
    /*else*/ {
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_append((&__pyx_v_context->info_val), __pyx_v_stream->c);
    }
    __pyx_L5:;
/* … */
    /*else*/ {
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_append((&__pyx_v_context->info_val), __pyx_v_stream->c);
    }
    __pyx_L5:;
/* … */
    /*else*/ {
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_append((&__pyx_v_context->info_val), __pyx_v_stream->c);
    }
    __pyx_L5:;
/* … */
    /*else*/ {
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_append((&__pyx_v_context->info_val), __pyx_v_stream->c);
    }
    __pyx_L5:;
 2332: 
+2333:         stream.advance()
    __pyx_t_3 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2333, __pyx_L1_error)
  }
  __pyx_L4_break:;
/* … */
    __pyx_t_3 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2333, __pyx_L1_error)
  }
  __pyx_L4_break:;
/* … */
    __pyx_t_3 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2333, __pyx_L1_error)
  }
  __pyx_L4_break:;
/* … */
    __pyx_t_3 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2333, __pyx_L1_error)
  }
  __pyx_L4_break:;
/* … */
    __pyx_t_3 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2333, __pyx_L1_error)
  }
  __pyx_L4_break:;
/* … */
    __pyx_t_3 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2333, __pyx_L1_error)
  }
  __pyx_L4_break:;
/* … */
    __pyx_t_3 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2333, __pyx_L1_error)
  }
  __pyx_L4_break:;
/* … */
    __pyx_t_3 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2333, __pyx_L1_error)
  }
  __pyx_L4_break:;
 2334: 
 2335: 
+2336: cdef int vcf_info_store_integer(VCFContext context,
static int __pyx_fuse_0__pyx_f_5allel_3opt_11io_vcf_read_vcf_info_store_integer(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, Py_ssize_t __pyx_v_value_index, __Pyx_memviewslice __pyx_v_memory) {
  Py_ssize_t __pyx_v_parsed;
  long __pyx_v_value;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_0vcf_info_store_integer", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_info_store_integer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_fuse_1__pyx_f_5allel_3opt_11io_vcf_read_vcf_info_store_integer(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, Py_ssize_t __pyx_v_value_index, __Pyx_memviewslice __pyx_v_memory) {
  Py_ssize_t __pyx_v_parsed;
  long __pyx_v_value;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_1vcf_info_store_integer", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_info_store_integer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_fuse_2__pyx_f_5allel_3opt_11io_vcf_read_vcf_info_store_integer(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, Py_ssize_t __pyx_v_value_index, __Pyx_memviewslice __pyx_v_memory) {
  Py_ssize_t __pyx_v_parsed;
  long __pyx_v_value;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_2vcf_info_store_integer", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_info_store_integer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_fuse_3__pyx_f_5allel_3opt_11io_vcf_read_vcf_info_store_integer(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, Py_ssize_t __pyx_v_value_index, __Pyx_memviewslice __pyx_v_memory) {
  Py_ssize_t __pyx_v_parsed;
  long __pyx_v_value;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_3vcf_info_store_integer", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_info_store_integer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_fuse_4__pyx_f_5allel_3opt_11io_vcf_read_vcf_info_store_integer(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, Py_ssize_t __pyx_v_value_index, __Pyx_memviewslice __pyx_v_memory) {
  Py_ssize_t __pyx_v_parsed;
  long __pyx_v_value;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_4vcf_info_store_integer", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_info_store_integer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_fuse_5__pyx_f_5allel_3opt_11io_vcf_read_vcf_info_store_integer(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, Py_ssize_t __pyx_v_value_index, __Pyx_memviewslice __pyx_v_memory) {
  Py_ssize_t __pyx_v_parsed;
  long __pyx_v_value;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_5vcf_info_store_integer", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_info_store_integer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_fuse_6__pyx_f_5allel_3opt_11io_vcf_read_vcf_info_store_integer(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, Py_ssize_t __pyx_v_value_index, __Pyx_memviewslice __pyx_v_memory) {
  Py_ssize_t __pyx_v_parsed;
  long __pyx_v_value;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_6vcf_info_store_integer", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_info_store_integer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_fuse_7__pyx_f_5allel_3opt_11io_vcf_read_vcf_info_store_integer(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, Py_ssize_t __pyx_v_value_index, __Pyx_memviewslice __pyx_v_memory) {
  Py_ssize_t __pyx_v_parsed;
  long __pyx_v_value;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_7vcf_info_store_integer", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_info_store_integer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 2337:                                 Py_ssize_t value_index,
 2338:                                 integer[:, :] memory) except -1:  # nogil
 2339:     cdef:
 2340:         Py_ssize_t parsed
 2341:         long value
 2342: 
+2343:     if value_index >= memory.shape[1]:
  __pyx_t_1 = ((__pyx_v_value_index >= (__pyx_v_memory.shape[1])) != 0);
  if (__pyx_t_1) {
/* … */
  }
/* … */
  __pyx_t_1 = ((__pyx_v_value_index >= (__pyx_v_memory.shape[1])) != 0);
  if (__pyx_t_1) {
/* … */
  }
/* … */
  __pyx_t_1 = ((__pyx_v_value_index >= (__pyx_v_memory.shape[1])) != 0);
  if (__pyx_t_1) {
/* … */
  }
/* … */
  __pyx_t_1 = ((__pyx_v_value_index >= (__pyx_v_memory.shape[1])) != 0);
  if (__pyx_t_1) {
/* … */
  }
/* … */
  __pyx_t_1 = ((__pyx_v_value_index >= (__pyx_v_memory.shape[1])) != 0);
  if (__pyx_t_1) {
/* … */
  }
/* … */
  __pyx_t_1 = ((__pyx_v_value_index >= (__pyx_v_memory.shape[1])) != 0);
  if (__pyx_t_1) {
/* … */
  }
/* … */
  __pyx_t_1 = ((__pyx_v_value_index >= (__pyx_v_memory.shape[1])) != 0);
  if (__pyx_t_1) {
/* … */
  }
/* … */
  __pyx_t_1 = ((__pyx_v_value_index >= (__pyx_v_memory.shape[1])) != 0);
  if (__pyx_t_1) {
/* … */
  }
 2344:         # more values than we have room for, ignore
+2345:         return 0
    __pyx_r = 0;
    goto __pyx_L0;
/* … */
    __pyx_r = 0;
    goto __pyx_L0;
/* … */
    __pyx_r = 0;
    goto __pyx_L0;
/* … */
    __pyx_r = 0;
    goto __pyx_L0;
/* … */
    __pyx_r = 0;
    goto __pyx_L0;
/* … */
    __pyx_r = 0;
    goto __pyx_L0;
/* … */
    __pyx_r = 0;
    goto __pyx_L0;
/* … */
    __pyx_r = 0;
    goto __pyx_L0;
 2346: 
 2347:     # parse string as integer
+2348:     parsed = vcf_strtol(&context.info_val, context, &value)
  __pyx_t_2 = __pyx_f_5allel_3opt_11io_vcf_read_vcf_strtol((&__pyx_v_context->info_val), __pyx_v_context, (&__pyx_v_value)); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1L))) __PYX_ERR(0, 2348, __pyx_L1_error)
  __pyx_v_parsed = __pyx_t_2;
/* … */
  __pyx_t_2 = __pyx_f_5allel_3opt_11io_vcf_read_vcf_strtol((&__pyx_v_context->info_val), __pyx_v_context, (&__pyx_v_value)); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1L))) __PYX_ERR(0, 2348, __pyx_L1_error)
  __pyx_v_parsed = __pyx_t_2;
/* … */
  __pyx_t_2 = __pyx_f_5allel_3opt_11io_vcf_read_vcf_strtol((&__pyx_v_context->info_val), __pyx_v_context, (&__pyx_v_value)); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1L))) __PYX_ERR(0, 2348, __pyx_L1_error)
  __pyx_v_parsed = __pyx_t_2;
/* … */
  __pyx_t_2 = __pyx_f_5allel_3opt_11io_vcf_read_vcf_strtol((&__pyx_v_context->info_val), __pyx_v_context, (&__pyx_v_value)); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1L))) __PYX_ERR(0, 2348, __pyx_L1_error)
  __pyx_v_parsed = __pyx_t_2;
/* … */
  __pyx_t_2 = __pyx_f_5allel_3opt_11io_vcf_read_vcf_strtol((&__pyx_v_context->info_val), __pyx_v_context, (&__pyx_v_value)); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1L))) __PYX_ERR(0, 2348, __pyx_L1_error)
  __pyx_v_parsed = __pyx_t_2;
/* … */
  __pyx_t_2 = __pyx_f_5allel_3opt_11io_vcf_read_vcf_strtol((&__pyx_v_context->info_val), __pyx_v_context, (&__pyx_v_value)); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1L))) __PYX_ERR(0, 2348, __pyx_L1_error)
  __pyx_v_parsed = __pyx_t_2;
/* … */
  __pyx_t_2 = __pyx_f_5allel_3opt_11io_vcf_read_vcf_strtol((&__pyx_v_context->info_val), __pyx_v_context, (&__pyx_v_value)); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1L))) __PYX_ERR(0, 2348, __pyx_L1_error)
  __pyx_v_parsed = __pyx_t_2;
/* … */
  __pyx_t_2 = __pyx_f_5allel_3opt_11io_vcf_read_vcf_strtol((&__pyx_v_context->info_val), __pyx_v_context, (&__pyx_v_value)); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1L))) __PYX_ERR(0, 2348, __pyx_L1_error)
  __pyx_v_parsed = __pyx_t_2;
 2349: 
+2350:     if parsed > 0:
  __pyx_t_1 = ((__pyx_v_parsed > 0) != 0);
  if (__pyx_t_1) {
/* … */
  }
/* … */
  __pyx_t_1 = ((__pyx_v_parsed > 0) != 0);
  if (__pyx_t_1) {
/* … */
  }
/* … */
  __pyx_t_1 = ((__pyx_v_parsed > 0) != 0);
  if (__pyx_t_1) {
/* … */
  }
/* … */
  __pyx_t_1 = ((__pyx_v_parsed > 0) != 0);
  if (__pyx_t_1) {
/* … */
  }
/* … */
  __pyx_t_1 = ((__pyx_v_parsed > 0) != 0);
  if (__pyx_t_1) {
/* … */
  }
/* … */
  __pyx_t_1 = ((__pyx_v_parsed > 0) != 0);
  if (__pyx_t_1) {
/* … */
  }
/* … */
  __pyx_t_1 = ((__pyx_v_parsed > 0) != 0);
  if (__pyx_t_1) {
/* … */
  }
/* … */
  __pyx_t_1 = ((__pyx_v_parsed > 0) != 0);
  if (__pyx_t_1) {
/* … */
  }
 2351:         # store value
+2352:         memory[context.chunk_variant_index, value_index] = value
    __pyx_t_3 = __pyx_v_context->chunk_variant_index;
    __pyx_t_4 = __pyx_v_value_index;
    *((__pyx_t_5numpy_int8_t *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_memory.data + __pyx_t_3 * __pyx_v_memory.strides[0]) ) + __pyx_t_4 * __pyx_v_memory.strides[1]) )) = __pyx_v_value;
/* … */
    __pyx_t_3 = __pyx_v_context->chunk_variant_index;
    __pyx_t_4 = __pyx_v_value_index;
    *((__pyx_t_5numpy_int16_t *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_memory.data + __pyx_t_3 * __pyx_v_memory.strides[0]) ) + __pyx_t_4 * __pyx_v_memory.strides[1]) )) = __pyx_v_value;
/* … */
    __pyx_t_3 = __pyx_v_context->chunk_variant_index;
    __pyx_t_4 = __pyx_v_value_index;
    *((__pyx_t_5numpy_int32_t *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_memory.data + __pyx_t_3 * __pyx_v_memory.strides[0]) ) + __pyx_t_4 * __pyx_v_memory.strides[1]) )) = __pyx_v_value;
/* … */
    __pyx_t_3 = __pyx_v_context->chunk_variant_index;
    __pyx_t_4 = __pyx_v_value_index;
    *((__pyx_t_5numpy_int64_t *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_memory.data + __pyx_t_3 * __pyx_v_memory.strides[0]) ) + __pyx_t_4 * __pyx_v_memory.strides[1]) )) = __pyx_v_value;
/* … */
    __pyx_t_3 = __pyx_v_context->chunk_variant_index;
    __pyx_t_4 = __pyx_v_value_index;
    *((__pyx_t_5numpy_uint8_t *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_memory.data + __pyx_t_3 * __pyx_v_memory.strides[0]) ) + __pyx_t_4 * __pyx_v_memory.strides[1]) )) = __pyx_v_value;
/* … */
    __pyx_t_3 = __pyx_v_context->chunk_variant_index;
    __pyx_t_4 = __pyx_v_value_index;
    *((__pyx_t_5numpy_uint16_t *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_memory.data + __pyx_t_3 * __pyx_v_memory.strides[0]) ) + __pyx_t_4 * __pyx_v_memory.strides[1]) )) = __pyx_v_value;
/* … */
    __pyx_t_3 = __pyx_v_context->chunk_variant_index;
    __pyx_t_4 = __pyx_v_value_index;
    *((__pyx_t_5numpy_uint32_t *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_memory.data + __pyx_t_3 * __pyx_v_memory.strides[0]) ) + __pyx_t_4 * __pyx_v_memory.strides[1]) )) = __pyx_v_value;
/* … */
    __pyx_t_3 = __pyx_v_context->chunk_variant_index;
    __pyx_t_4 = __pyx_v_value_index;
    *((__pyx_t_5numpy_uint64_t *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_memory.data + __pyx_t_3 * __pyx_v_memory.strides[0]) ) + __pyx_t_4 * __pyx_v_memory.strides[1]) )) = __pyx_v_value;
 2353: 
 2354: 
+2355: cdef int vcf_info_parse_floating(InputStreamBase stream,
static int __pyx_fuse_0__pyx_f_5allel_3opt_11io_vcf_read_vcf_info_parse_floating(struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, __Pyx_memviewslice __pyx_v_memory) {
  Py_ssize_t __pyx_v_value_index;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_0vcf_info_parse_floating", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_info_parse_floating", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_fuse_1__pyx_f_5allel_3opt_11io_vcf_read_vcf_info_parse_floating(struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, __Pyx_memviewslice __pyx_v_memory) {
  Py_ssize_t __pyx_v_value_index;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_1vcf_info_parse_floating", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_info_parse_floating", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 2356:                                  VCFContext context,
 2357:                                  floating[:, :] memory) except -1:  # nogil
 2358:     cdef:
+2359:         Py_ssize_t value_index = 0
  __pyx_v_value_index = 0;
/* … */
  __pyx_v_value_index = 0;
 2360: 
 2361:     # reset temporary buffer
+2362:     CharVector_clear(&context.info_val)
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->info_val));
/* … */
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->info_val));
 2363: 
+2364:     while True:
  while (1) {
/* … */
  while (1) {
 2365: 
+2366:         if stream.c == 0 or \
    __pyx_t_2 = ((__pyx_v_stream->c == 0) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    if (__pyx_t_1) {
/* … */
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == 0) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    if (__pyx_t_1) {
/* … */
    }
+2367:                 stream.c == LF or \
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
+2368:                 stream.c == CR or \
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_CR) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_CR) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
+2369:                 stream.c == TAB or \
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_TAB) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_TAB) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
+2370:                 stream.c == SEMICOLON:
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_SEMICOLON) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L6_bool_binop_done:;
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_SEMICOLON) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L6_bool_binop_done:;
+2371:             vcf_info_store_floating(context, value_index, memory)
      __pyx_t_3 = __pyx_fuse_0__pyx_f_5allel_3opt_11io_vcf_read_vcf_info_store_floating(__pyx_v_context, __pyx_v_value_index, __pyx_v_memory); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2371, __pyx_L1_error)
/* … */
      __pyx_t_3 = __pyx_fuse_1__pyx_f_5allel_3opt_11io_vcf_read_vcf_info_store_floating(__pyx_v_context, __pyx_v_value_index, __pyx_v_memory); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2371, __pyx_L1_error)
+2372:             break
      goto __pyx_L4_break;
/* … */
      goto __pyx_L4_break;
 2373: 
+2374:         elif stream.c == COMMA:
    __pyx_t_1 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_COMMA) != 0);
    if (__pyx_t_1) {
/* … */
      goto __pyx_L5;
    }
/* … */
    __pyx_t_1 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_COMMA) != 0);
    if (__pyx_t_1) {
/* … */
      goto __pyx_L5;
    }
+2375:             vcf_info_store_floating(context, value_index, memory)
      __pyx_t_3 = __pyx_fuse_0__pyx_f_5allel_3opt_11io_vcf_read_vcf_info_store_floating(__pyx_v_context, __pyx_v_value_index, __pyx_v_memory); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2375, __pyx_L1_error)
/* … */
      __pyx_t_3 = __pyx_fuse_1__pyx_f_5allel_3opt_11io_vcf_read_vcf_info_store_floating(__pyx_v_context, __pyx_v_value_index, __pyx_v_memory); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2375, __pyx_L1_error)
+2376:             CharVector_clear(&context.info_val)
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->info_val));
/* … */
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->info_val));
+2377:             value_index += 1
      __pyx_v_value_index = (__pyx_v_value_index + 1);
/* … */
      __pyx_v_value_index = (__pyx_v_value_index + 1);
 2378: 
 2379:         else:
+2380:             CharVector_append(&context.info_val, stream.c)
    /*else*/ {
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_append((&__pyx_v_context->info_val), __pyx_v_stream->c);
    }
    __pyx_L5:;
/* … */
    /*else*/ {
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_append((&__pyx_v_context->info_val), __pyx_v_stream->c);
    }
    __pyx_L5:;
 2381: 
+2382:         stream.advance()
    __pyx_t_3 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2382, __pyx_L1_error)
  }
  __pyx_L4_break:;
/* … */
    __pyx_t_3 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2382, __pyx_L1_error)
  }
  __pyx_L4_break:;
 2383: 
 2384: 
+2385: cdef int vcf_info_store_floating(VCFContext context,
static int __pyx_fuse_0__pyx_f_5allel_3opt_11io_vcf_read_vcf_info_store_floating(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, Py_ssize_t __pyx_v_value_index, __Pyx_memviewslice __pyx_v_memory) {
  Py_ssize_t __pyx_v_parsed;
  double __pyx_v_value;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_0vcf_info_store_floating", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_info_store_floating", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_fuse_1__pyx_f_5allel_3opt_11io_vcf_read_vcf_info_store_floating(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, Py_ssize_t __pyx_v_value_index, __Pyx_memviewslice __pyx_v_memory) {
  Py_ssize_t __pyx_v_parsed;
  double __pyx_v_value;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_1vcf_info_store_floating", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_info_store_floating", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 2386:                                  Py_ssize_t value_index,
 2387:                                  floating[:, :] memory) except -1:  # nogil
 2388:     cdef:
 2389:         Py_ssize_t parsed
 2390:         double value
 2391: 
+2392:     if value_index >= memory.shape[1]:
  __pyx_t_1 = ((__pyx_v_value_index >= (__pyx_v_memory.shape[1])) != 0);
  if (__pyx_t_1) {
/* … */
  }
/* … */
  __pyx_t_1 = ((__pyx_v_value_index >= (__pyx_v_memory.shape[1])) != 0);
  if (__pyx_t_1) {
/* … */
  }
 2393:         # more values than we have room for, ignore
+2394:         return 0
    __pyx_r = 0;
    goto __pyx_L0;
/* … */
    __pyx_r = 0;
    goto __pyx_L0;
 2395: 
 2396:     # parse string as floating
+2397:     parsed = vcf_strtod(&context.info_val, context, &value)
  __pyx_t_2 = __pyx_f_5allel_3opt_11io_vcf_read_vcf_strtod((&__pyx_v_context->info_val), __pyx_v_context, (&__pyx_v_value)); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1L))) __PYX_ERR(0, 2397, __pyx_L1_error)
  __pyx_v_parsed = __pyx_t_2;
/* … */
  __pyx_t_2 = __pyx_f_5allel_3opt_11io_vcf_read_vcf_strtod((&__pyx_v_context->info_val), __pyx_v_context, (&__pyx_v_value)); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1L))) __PYX_ERR(0, 2397, __pyx_L1_error)
  __pyx_v_parsed = __pyx_t_2;
 2398: 
+2399:     if parsed > 0:
  __pyx_t_1 = ((__pyx_v_parsed > 0) != 0);
  if (__pyx_t_1) {
/* … */
  }
/* … */
  __pyx_t_1 = ((__pyx_v_parsed > 0) != 0);
  if (__pyx_t_1) {
/* … */
  }
 2400:         # store value
+2401:         memory[context.chunk_variant_index, value_index] = value
    __pyx_t_3 = __pyx_v_context->chunk_variant_index;
    __pyx_t_4 = __pyx_v_value_index;
    *((__pyx_t_5numpy_float32_t *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_memory.data + __pyx_t_3 * __pyx_v_memory.strides[0]) ) + __pyx_t_4 * __pyx_v_memory.strides[1]) )) = __pyx_v_value;
/* … */
    __pyx_t_3 = __pyx_v_context->chunk_variant_index;
    __pyx_t_4 = __pyx_v_value_index;
    *((__pyx_t_5numpy_float64_t *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_memory.data + __pyx_t_3 * __pyx_v_memory.strides[0]) ) + __pyx_t_4 * __pyx_v_memory.strides[1]) )) = __pyx_v_value;
 2402: 
 2403: 
 2404: ##########################################################################################
 2405: # FORMAT and calldata parsing
 2406: 
 2407: 
+2408: cdef class VCFFormatParser(VCFFieldParserBase):
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFormatParser {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFieldParserBase __pyx_base;
  PyObject *format_keys;
  Py_ssize_t n_formats;
  char **format_keys_cstr;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFormatParser {
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFieldParserBase __pyx_base;
  int (*store_format)(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFormatParser *, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *);
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFormatParser *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFFormatParser;

 2409: 
 2410:     cdef:
 2411:         tuple format_keys
 2412:         Py_ssize_t n_formats
 2413:         char** format_keys_cstr
 2414: 
+2415:     def __cinit__(self, format_keys):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_15VCFFormatParser_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_15VCFFormatParser_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_format_keys = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_format_keys,0};
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_format_keys)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 2415, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_format_keys = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2415, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFFormatParser.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_15VCFFormatParser___cinit__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFormatParser *)__pyx_v_self), __pyx_v_format_keys);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_15VCFFormatParser___cinit__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFormatParser *__pyx_v_self, PyObject *__pyx_v_format_keys) {
  Py_ssize_t __pyx_v_i;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFFormatParser.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 2416: 
 2417:         # setup FORMAT keys
 2418:         # N.B., need to keep a reference to these, otherwise C strings will not behave
+2419:         self.format_keys = tuple(sorted(format_keys))
  __pyx_t_2 = PySequence_List(__pyx_v_format_keys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2419, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_3 = PyList_Sort(__pyx_t_1); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2419, __pyx_L1_error)
  if (unlikely(__pyx_t_1 == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(0, 2419, __pyx_L1_error)
  }
  __pyx_t_2 = PyList_AsTuple(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2419, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_GOTREF(__pyx_v_self->format_keys);
  __Pyx_DECREF(__pyx_v_self->format_keys);
  __pyx_v_self->format_keys = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;
+2420:         self.n_formats = len(self.format_keys)
  __pyx_t_2 = __pyx_v_self->format_keys;
  __Pyx_INCREF(__pyx_t_2);
  if (unlikely(__pyx_t_2 == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(0, 2420, __pyx_L1_error)
  }
  __pyx_t_4 = PyTuple_GET_SIZE(__pyx_t_2); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 2420, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_self->n_formats = __pyx_t_4;
 2421: 
 2422:         # setup FORMAT keys as C strings for nogil searching
+2423:         self.format_keys_cstr = <char**> malloc(sizeof(char*) * self.n_formats)
  __pyx_v_self->format_keys_cstr = ((char **)malloc(((sizeof(char *)) * __pyx_v_self->n_formats)));
+2424:         for i in range(self.n_formats):
  __pyx_t_4 = __pyx_v_self->n_formats;
  for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
    __pyx_v_i = __pyx_t_5;
+2425:             self.format_keys_cstr[i] = <char*> self.format_keys[i]
    if (unlikely(__pyx_v_self->format_keys == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(0, 2425, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyObject_AsWritableString(PyTuple_GET_ITEM(__pyx_v_self->format_keys, __pyx_v_i)); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(0, 2425, __pyx_L1_error)
    (__pyx_v_self->format_keys_cstr[__pyx_v_i]) = ((char *)__pyx_t_6);
  }
 2426: 
+2427:     def __init__(self, format_keys):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_15VCFFormatParser_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_15VCFFormatParser_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED PyObject *__pyx_v_format_keys = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_format_keys,0};
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_format_keys)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 2427, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_format_keys = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2427, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFFormatParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_15VCFFormatParser_2__init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFormatParser *)__pyx_v_self), __pyx_v_format_keys);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_15VCFFormatParser_2__init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFormatParser *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_format_keys) {
  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_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFFormatParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2428:         super(VCFFormatParser, self).__init__(key=b'FORMAT')
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2428, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFFormatParser));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFFormatParser));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFFormatParser));
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self));
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2428, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2428, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2428, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_key, __pyx_n_b_FORMAT) < 0) __PYX_ERR(0, 2428, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2428, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 2429: 
+2430:     def __dealloc__(self):
/* Python wrapper */
static void __pyx_pw_5allel_3opt_11io_vcf_read_15VCFFormatParser_5__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_5allel_3opt_11io_vcf_read_15VCFFormatParser_5__dealloc__(PyObject *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_pf_5allel_3opt_11io_vcf_read_15VCFFormatParser_4__dealloc__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFormatParser *)__pyx_v_self));

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

static void __pyx_pf_5allel_3opt_11io_vcf_read_15VCFFormatParser_4__dealloc__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFormatParser *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__", 0);
/* … */
  /* function exit code */
  __Pyx_RefNannyFinishContext();
}
+2431:         if self.format_keys_cstr is not NULL:
  __pyx_t_1 = ((__pyx_v_self->format_keys_cstr != NULL) != 0);
  if (__pyx_t_1) {
/* … */
  }
+2432:             free(self.format_keys_cstr)
    free(__pyx_v_self->format_keys_cstr);
 2433: 
+2434:     cdef int parse(self, InputStreamBase stream, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_15VCFFormatParser_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFormatParser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFFormatParser.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 2435: 
 2436:         # reset temporary buffer
+2437:         CharVector_clear(&context.temp)
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->temp));
+2438:         IntVector_clear(&context.variant_format_indices)
  __pyx_f_5allel_3opt_11io_vcf_read_IntVector_clear((&__pyx_v_context->variant_format_indices));
 2439: 
+2440:         while True:
  while (1) {
 2441: 
+2442:             if stream.c == 0:
    __pyx_t_1 = ((__pyx_v_stream->c == 0) != 0);
    if (__pyx_t_1) {
/* … */
    }
 2443:                 # no point setting format, there will be no calldata
+2444:                 context.state = VCFState.EOF
      __pyx_v_context->state = __pyx_e_5allel_3opt_11io_vcf_read_EOF;
+2445:                 break
      goto __pyx_L4_break;
 2446: 
+2447:             elif stream.c == LF or stream.c == CR:
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_CR) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L6_bool_binop_done:;
    if (__pyx_t_1) {
/* … */
    }
 2448:                 # no point setting format, there will be no calldata
+2449:                 context.state = VCFState.EOL
      __pyx_v_context->state = __pyx_e_5allel_3opt_11io_vcf_read_EOL;
+2450:                 break
      goto __pyx_L4_break;
 2451: 
+2452:             elif stream.c == TAB:
    __pyx_t_1 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_TAB) != 0);
    if (__pyx_t_1) {
/* … */
    }
+2453:                 self.store_format(context)
      __pyx_t_3 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFormatParser *)__pyx_v_self->__pyx_base.__pyx_vtab)->store_format(__pyx_v_self, __pyx_v_context); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2453, __pyx_L1_error)
 2454:                 # we're done here, advance to next field
+2455:                 context.state += 1
      __pyx_v_context->state = (__pyx_v_context->state + 1);
+2456:                 stream.advance()
      __pyx_t_3 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2456, __pyx_L1_error)
+2457:                 break
      goto __pyx_L4_break;
 2458: 
+2459:             elif stream.c == COLON:
    __pyx_t_1 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_COLON) != 0);
    if (__pyx_t_1) {
/* … */
      goto __pyx_L5;
    }
+2460:                 self.store_format(context)
      __pyx_t_3 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFormatParser *)__pyx_v_self->__pyx_base.__pyx_vtab)->store_format(__pyx_v_self, __pyx_v_context); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2460, __pyx_L1_error)
 2461: 
 2462:             else:
+2463:                 CharVector_append(&context.temp, stream.c)
    /*else*/ {
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_append((&__pyx_v_context->temp), __pyx_v_stream->c);
    }
    __pyx_L5:;
 2464: 
 2465:             # advance to next character
+2466:             stream.advance()
    __pyx_t_3 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2466, __pyx_L1_error)
  }
  __pyx_L4_break:;
 2467: 
+2468:     cdef int store_format(self, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_15VCFFormatParser_store_format(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFormatParser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  Py_ssize_t __pyx_v_format_index;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("store_format", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 2469:         cdef Py_ssize_t format_index
 2470: 
 2471:         # deal with empty or missing data
+2472:         if context.temp.size == 0:
  __pyx_t_1 = ((__pyx_v_context->temp.size == 0) != 0);
  if (__pyx_t_1) {
/* … */
  }
 2473:             # not strictly kosher, handle as missing/empty
+2474:             return 0
    __pyx_r = 0;
    goto __pyx_L0;
 2475: 
+2476:         if context.temp.size == 1 and context.temp.data[0] == PERIOD:
  __pyx_t_2 = ((__pyx_v_context->temp.size == 1) != 0);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L5_bool_binop_done;
  }
  __pyx_t_2 = (((__pyx_v_context->temp.data[0]) == __pyx_v_5allel_3opt_11io_vcf_read_PERIOD) != 0);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L5_bool_binop_done:;
  if (__pyx_t_1) {
/* … */
  }
+2477:             return 0
    __pyx_r = 0;
    goto __pyx_L0;
 2478: 
 2479:         # terminate the string
+2480:         CharVector_terminate(&context.temp)
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_terminate((&__pyx_v_context->temp));
 2481: 
 2482:         # find format index
+2483:         format_index = search_sorted_cstr(context.temp.data, self.format_keys_cstr, self.n_formats)
  __pyx_v_format_index = __pyx_f_5allel_3opt_11io_vcf_read_search_sorted_cstr(__pyx_v_context->temp.data, __pyx_v_self->format_keys_cstr, __pyx_v_self->n_formats);
 2484: 
 2485:         # add to vector of indices for the current variant
+2486:         IntVector_append(&context.variant_format_indices, format_index)
  __pyx_f_5allel_3opt_11io_vcf_read_IntVector_append((&__pyx_v_context->variant_format_indices), __pyx_v_format_index);
 2487: 
 2488:         # clear out temp
+2489:         CharVector_clear(&context.temp)
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->temp));
 2490: 
 2491: 
 2492: 
+2493: cdef class VCFSkipAllCallDataParser(VCFFieldParserBase):
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFSkipAllCallDataParser {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFieldParserBase __pyx_base;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFSkipAllCallDataParser {
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFieldParserBase __pyx_base;
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFSkipAllCallDataParser *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFSkipAllCallDataParser;

 2494:     """Skip a field."""
 2495: 
+2496:     cdef int parse(self, InputStreamBase stream, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_24VCFSkipAllCallDataParser_parse(CYTHON_UNUSED struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFSkipAllCallDataParser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFSkipAllCallDataParser.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2497:         vcf_skip_variant(stream, context)
  __pyx_t_1 = __pyx_f_5allel_3opt_11io_vcf_read_vcf_skip_variant(__pyx_v_stream, __pyx_v_context); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2497, __pyx_L1_error)
 2498: 
+2499:     cdef int make_chunk(self, chunk, limit=None) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_24VCFSkipAllCallDataParser_make_chunk(CYTHON_UNUSED struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFSkipAllCallDataParser *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_chunk, struct __pyx_opt_args_5allel_3opt_11io_vcf_read_24VCFSkipAllCallDataParser_make_chunk *__pyx_optional_args) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("make_chunk", 0);
  if (__pyx_optional_args) {
  }

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
struct __pyx_opt_args_5allel_3opt_11io_vcf_read_24VCFSkipAllCallDataParser_make_chunk {
  int __pyx_n;
  PyObject *limit;
};
 2500:         pass
 2501: 
 2502: 
+2503: cdef class VCFCallDataParser(VCFFieldParserBase):
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParser {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFFieldParserBase __pyx_base;
  PyObject *format_keys;
  Py_ssize_t n_formats;
  PyObject *parsers;
  PyObject **parsers_cptr;
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *skip_parser;
  __Pyx_memviewslice loc_samples;
  Py_ssize_t n_samples;
  Py_ssize_t n_samples_out;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataParser {
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFFieldParserBase __pyx_base;
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataParser *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFCallDataParser;

 2504: 
 2505:     cdef:
 2506:         tuple format_keys
 2507:         Py_ssize_t n_formats
 2508:         tuple parsers
 2509:         PyObject** parsers_cptr
 2510:         VCFCallDataParserBase skip_parser
 2511:         np.uint8_t[:] loc_samples
 2512:         Py_ssize_t n_samples
 2513:         Py_ssize_t n_samples_out
 2514: 
+2515:     def __cinit__(self, format_keys, types, numbers, chunk_length, loc_samples, fills):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_17VCFCallDataParser_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_17VCFCallDataParser_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_format_keys = 0;
  PyObject *__pyx_v_types = 0;
  PyObject *__pyx_v_numbers = 0;
  PyObject *__pyx_v_chunk_length = 0;
  PyObject *__pyx_v_loc_samples = 0;
  PyObject *__pyx_v_fills = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_format_keys,&__pyx_n_s_types,&__pyx_n_s_numbers,&__pyx_n_s_chunk_length,&__pyx_n_s_loc_samples,&__pyx_n_s_fills,0};
    PyObject* values[6] = {0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_format_keys)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_types)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 6, 6, 1); __PYX_ERR(0, 2515, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_numbers)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 6, 6, 2); __PYX_ERR(0, 2515, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_chunk_length)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 6, 6, 3); __PYX_ERR(0, 2515, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_loc_samples)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 6, 6, 4); __PYX_ERR(0, 2515, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fills)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 6, 6, 5); __PYX_ERR(0, 2515, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 2515, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
    }
    __pyx_v_format_keys = values[0];
    __pyx_v_types = values[1];
    __pyx_v_numbers = values[2];
    __pyx_v_chunk_length = values[3];
    __pyx_v_loc_samples = values[4];
    __pyx_v_fills = values[5];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2515, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFCallDataParser.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_17VCFCallDataParser___cinit__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParser *)__pyx_v_self), __pyx_v_format_keys, __pyx_v_types, __pyx_v_numbers, __pyx_v_chunk_length, __pyx_v_loc_samples, __pyx_v_fills);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_17VCFCallDataParser___cinit__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParser *__pyx_v_self, PyObject *__pyx_v_format_keys, PyObject *__pyx_v_types, PyObject *__pyx_v_numbers, PyObject *__pyx_v_chunk_length, PyObject *__pyx_v_loc_samples, PyObject *__pyx_v_fills) {
  PyObject *__pyx_v_parsers = NULL;
  PyObject *__pyx_v_kwds = NULL;
  PyObject *__pyx_v_key = NULL;
  PyObject *__pyx_v_t = NULL;
  PyObject *__pyx_v_n = NULL;
  CYTHON_UNUSED PyObject *__pyx_v_fill = NULL;
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *__pyx_v_parser = NULL;
  Py_ssize_t __pyx_v_i;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __PYX_XDEC_MEMVIEW(&__pyx_t_2, 1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_XDECREF(__pyx_t_15);
  __Pyx_XDECREF(__pyx_t_16);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFCallDataParser.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_parsers);
  __Pyx_XDECREF(__pyx_v_kwds);
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XDECREF(__pyx_v_t);
  __Pyx_XDECREF(__pyx_v_n);
  __Pyx_XDECREF(__pyx_v_fill);
  __Pyx_XDECREF((PyObject *)__pyx_v_parser);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2516:         self.chunk_length = chunk_length
  __pyx_t_1 = __Pyx_PyIndex_AsSsize_t(__pyx_v_chunk_length); if (unlikely((__pyx_t_1 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2516, __pyx_L1_error)
  __pyx_v_self->__pyx_base.chunk_length = __pyx_t_1;
+2517:         self.loc_samples = loc_samples
  __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_uint8_t(__pyx_v_loc_samples);
  if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2517, __pyx_L1_error)
  __PYX_XDEC_MEMVIEW(&__pyx_v_self->loc_samples, 0);
  __pyx_v_self->loc_samples = __pyx_t_2;
  __pyx_t_2.memview = NULL;
  __pyx_t_2.data = NULL;
+2518:         self.n_samples = loc_samples.shape[0]
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_loc_samples, __pyx_n_s_shape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2518, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2518, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_1 = __Pyx_PyIndex_AsSsize_t(__pyx_t_4); if (unlikely((__pyx_t_1 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2518, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_v_self->n_samples = __pyx_t_1;
+2519:         self.n_samples_out = np.count_nonzero(loc_samples)
  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2519, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_count_nonzero); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2519, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = NULL;
  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);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_loc_samples); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2519, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_5)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_loc_samples};
      __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2519, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_4);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_loc_samples};
      __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2519, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_4);
    } else
    #endif
    {
      __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2519, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_v_loc_samples);
      __Pyx_GIVEREF(__pyx_v_loc_samples);
      PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_loc_samples);
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2519, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_1 = __Pyx_PyIndex_AsSsize_t(__pyx_t_4); if (unlikely((__pyx_t_1 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2519, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_v_self->n_samples_out = __pyx_t_1;
 2520: 
 2521:         # setup formats
+2522:         self.format_keys = tuple(sorted(format_keys))
  __pyx_t_5 = PySequence_List(__pyx_v_format_keys); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2522, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = ((PyObject*)__pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_7 = PyList_Sort(__pyx_t_4); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 2522, __pyx_L1_error)
  if (unlikely(__pyx_t_4 == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(0, 2522, __pyx_L1_error)
  }
  __pyx_t_5 = PyList_AsTuple(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2522, __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->format_keys);
  __Pyx_DECREF(__pyx_v_self->format_keys);
  __pyx_v_self->format_keys = ((PyObject*)__pyx_t_5);
  __pyx_t_5 = 0;
+2523:         self.n_formats = len(self.format_keys)
  __pyx_t_5 = __pyx_v_self->format_keys;
  __Pyx_INCREF(__pyx_t_5);
  if (unlikely(__pyx_t_5 == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(0, 2523, __pyx_L1_error)
  }
  __pyx_t_1 = PyTuple_GET_SIZE(__pyx_t_5); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 2523, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_v_self->n_formats = __pyx_t_1;
 2524: 
 2525:         # setup parsers
+2526:         self.skip_parser = VCFCallDataSkipParser(key=None)
  __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2526, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_key, Py_None) < 0) __PYX_ERR(0, 2526, __pyx_L1_error)
  __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFCallDataSkipParser), __pyx_empty_tuple, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2526, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_GIVEREF(__pyx_t_4);
  __Pyx_GOTREF(__pyx_v_self->skip_parser);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->skip_parser));
  __pyx_v_self->skip_parser = ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *)__pyx_t_4);
  __pyx_t_4 = 0;
+2527:         parsers = list()
  __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2527, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_v_parsers = ((PyObject*)__pyx_t_4);
  __pyx_t_4 = 0;
+2528:         kwds = dict(chunk_length=chunk_length, n_samples_out=self.n_samples_out)
  __pyx_t_4 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2528, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_chunk_length, __pyx_v_chunk_length) < 0) __PYX_ERR(0, 2528, __pyx_L1_error)
  __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_self->n_samples_out); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2528, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_n_samples_out, __pyx_t_5) < 0) __PYX_ERR(0, 2528, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_v_kwds = ((PyObject*)__pyx_t_4);
  __pyx_t_4 = 0;
+2529:         for key in self.format_keys:
  if (unlikely(__pyx_v_self->format_keys == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(0, 2529, __pyx_L1_error)
  }
  __pyx_t_4 = __pyx_v_self->format_keys; __Pyx_INCREF(__pyx_t_4); __pyx_t_1 = 0;
  for (;;) {
    if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_1); __Pyx_INCREF(__pyx_t_5); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(0, 2529, __pyx_L1_error)
    #else
    __pyx_t_5 = PySequence_ITEM(__pyx_t_4, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2529, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    #endif
    __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_5);
    __pyx_t_5 = 0;
/* … */
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+2530:             t = types[key]
    __pyx_t_5 = PyObject_GetItem(__pyx_v_types, __pyx_v_key); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2530, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_XDECREF_SET(__pyx_v_t, __pyx_t_5);
    __pyx_t_5 = 0;
+2531:             n = numbers[key]
    __pyx_t_5 = PyObject_GetItem(__pyx_v_numbers, __pyx_v_key); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2531, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_XDECREF_SET(__pyx_v_n, __pyx_t_5);
    __pyx_t_5 = 0;
 2532: 
 2533:             # special handling of "genotype" dtypes for any field
+2534:             if isinstance(t, str) and t.startswith('genotype/'):
    __pyx_t_9 = PyString_Check(__pyx_v_t); 
    __pyx_t_10 = (__pyx_t_9 != 0);
    if (__pyx_t_10) {
    } else {
      __pyx_t_8 = __pyx_t_10;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_t, __pyx_n_s_startswith); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2534, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__63, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2534, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 2534, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_8 = __pyx_t_10;
    __pyx_L6_bool_binop_done:;
    if (__pyx_t_8) {
/* … */
  __pyx_tuple__63 = PyTuple_Pack(1, __pyx_kp_s_genotype); if (unlikely(!__pyx_tuple__63)) __PYX_ERR(0, 2534, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__63);
  __Pyx_GIVEREF(__pyx_tuple__63);
/* … */
      goto __pyx_L5;
    }
+2535:                 fill = fills.get(key, -1)
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_fills, __pyx_n_s_get); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2535, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_3 = NULL;
      __pyx_t_11 = 0;
      if (CYTHON_UNPACK_METHODS && likely(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_11 = 1;
        }
      }
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_5)) {
        PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_key, __pyx_int_neg_1};
        __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2535, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_GOTREF(__pyx_t_6);
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
        PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_key, __pyx_int_neg_1};
        __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2535, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_GOTREF(__pyx_t_6);
      } else
      #endif
      {
        __pyx_t_12 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2535, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_12);
        if (__pyx_t_3) {
          __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_3); __pyx_t_3 = NULL;
        }
        __Pyx_INCREF(__pyx_v_key);
        __Pyx_GIVEREF(__pyx_v_key);
        PyTuple_SET_ITEM(__pyx_t_12, 0+__pyx_t_11, __pyx_v_key);
        __Pyx_INCREF(__pyx_int_neg_1);
        __Pyx_GIVEREF(__pyx_int_neg_1);
        PyTuple_SET_ITEM(__pyx_t_12, 1+__pyx_t_11, __pyx_int_neg_1);
        __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_12, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2535, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      }
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF_SET(__pyx_v_fill, __pyx_t_6);
      __pyx_t_6 = 0;
+2536:                 t = np.dtype(t.split('/')[1])
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_t, __pyx_n_s_split); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2536, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__64, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2536, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_5, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2536, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2536, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6);
      __pyx_t_6 = 0;
      __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2536, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF_SET(__pyx_v_t, __pyx_t_6);
      __pyx_t_6 = 0;
/* … */
  __pyx_tuple__64 = PyTuple_Pack(1, __pyx_kp_s__3); if (unlikely(!__pyx_tuple__64)) __PYX_ERR(0, 2536, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__64);
  __Pyx_GIVEREF(__pyx_tuple__64);
+2537:                 if t == np.dtype('int8'):
      __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__65, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2537, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2537, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 2537, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (__pyx_t_8) {
/* … */
        goto __pyx_L8;
      }
/* … */
  __pyx_tuple__65 = PyTuple_Pack(1, __pyx_n_s_int8); if (unlikely(!__pyx_tuple__65)) __PYX_ERR(0, 2537, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__65);
  __Pyx_GIVEREF(__pyx_tuple__65);
+2538:                     parser = VCFGenotypeInt8Parser(key, number=n, fill=fills.get(key, -1), **kwds)
        __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2538, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_INCREF(__pyx_v_key);
        __Pyx_GIVEREF(__pyx_v_key);
        PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_key);
        __pyx_t_12 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2538, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_12);
        if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_number, __pyx_v_n) < 0) __PYX_ERR(0, 2538, __pyx_L1_error)
        __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_fills, __pyx_n_s_get); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2538, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_13);
        __pyx_t_14 = NULL;
        __pyx_t_11 = 0;
        if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) {
          __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_13);
          if (likely(__pyx_t_14)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
            __Pyx_INCREF(__pyx_t_14);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_13, function);
            __pyx_t_11 = 1;
          }
        }
        #if CYTHON_FAST_PYCALL
        if (PyFunction_Check(__pyx_t_13)) {
          PyObject *__pyx_temp[3] = {__pyx_t_14, __pyx_v_key, __pyx_int_neg_1};
          __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2538, __pyx_L1_error)
          __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
          __Pyx_GOTREF(__pyx_t_3);
        } else
        #endif
        #if CYTHON_FAST_PYCCALL
        if (__Pyx_PyFastCFunction_Check(__pyx_t_13)) {
          PyObject *__pyx_temp[3] = {__pyx_t_14, __pyx_v_key, __pyx_int_neg_1};
          __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2538, __pyx_L1_error)
          __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
          __Pyx_GOTREF(__pyx_t_3);
        } else
        #endif
        {
          __pyx_t_15 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2538, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_15);
          if (__pyx_t_14) {
            __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_14); __pyx_t_14 = NULL;
          }
          __Pyx_INCREF(__pyx_v_key);
          __Pyx_GIVEREF(__pyx_v_key);
          PyTuple_SET_ITEM(__pyx_t_15, 0+__pyx_t_11, __pyx_v_key);
          __Pyx_INCREF(__pyx_int_neg_1);
          __Pyx_GIVEREF(__pyx_int_neg_1);
          PyTuple_SET_ITEM(__pyx_t_15, 1+__pyx_t_11, __pyx_int_neg_1);
          __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_15, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2538, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
        }
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_fill, __pyx_t_3) < 0) __PYX_ERR(0, 2538, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_6 = __pyx_t_12;
        __pyx_t_12 = 0;
        if (__Pyx_MergeKeywords(__pyx_t_6, __pyx_v_kwds) < 0) __PYX_ERR(0, 2538, __pyx_L1_error)
        __pyx_t_12 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeInt8Parser), __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2538, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_12);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF_SET(__pyx_v_parser, ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *)__pyx_t_12));
        __pyx_t_12 = 0;
+2539:                 elif t == np.dtype('int16'):
      __pyx_t_12 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__66, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2539, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __pyx_t_6 = PyObject_RichCompare(__pyx_v_t, __pyx_t_12, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2539, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 2539, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (__pyx_t_8) {
/* … */
        goto __pyx_L8;
      }
/* … */
  __pyx_tuple__66 = PyTuple_Pack(1, __pyx_n_s_int16); if (unlikely(!__pyx_tuple__66)) __PYX_ERR(0, 2539, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__66);
  __Pyx_GIVEREF(__pyx_tuple__66);
+2540:                     parser = VCFGenotypeInt16Parser(key, number=n, fill=fills.get(key, -1), **kwds)
        __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2540, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_INCREF(__pyx_v_key);
        __Pyx_GIVEREF(__pyx_v_key);
        PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_key);
        __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2540, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_number, __pyx_v_n) < 0) __PYX_ERR(0, 2540, __pyx_L1_error)
        __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_fills, __pyx_n_s_get); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2540, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_13);
        __pyx_t_15 = NULL;
        __pyx_t_11 = 0;
        if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) {
          __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_13);
          if (likely(__pyx_t_15)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
            __Pyx_INCREF(__pyx_t_15);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_13, function);
            __pyx_t_11 = 1;
          }
        }
        #if CYTHON_FAST_PYCALL
        if (PyFunction_Check(__pyx_t_13)) {
          PyObject *__pyx_temp[3] = {__pyx_t_15, __pyx_v_key, __pyx_int_neg_1};
          __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2540, __pyx_L1_error)
          __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
          __Pyx_GOTREF(__pyx_t_3);
        } else
        #endif
        #if CYTHON_FAST_PYCCALL
        if (__Pyx_PyFastCFunction_Check(__pyx_t_13)) {
          PyObject *__pyx_temp[3] = {__pyx_t_15, __pyx_v_key, __pyx_int_neg_1};
          __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2540, __pyx_L1_error)
          __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
          __Pyx_GOTREF(__pyx_t_3);
        } else
        #endif
        {
          __pyx_t_14 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2540, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_14);
          if (__pyx_t_15) {
            __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_15); __pyx_t_15 = NULL;
          }
          __Pyx_INCREF(__pyx_v_key);
          __Pyx_GIVEREF(__pyx_v_key);
          PyTuple_SET_ITEM(__pyx_t_14, 0+__pyx_t_11, __pyx_v_key);
          __Pyx_INCREF(__pyx_int_neg_1);
          __Pyx_GIVEREF(__pyx_int_neg_1);
          PyTuple_SET_ITEM(__pyx_t_14, 1+__pyx_t_11, __pyx_int_neg_1);
          __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_14, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2540, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
        }
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_fill, __pyx_t_3) < 0) __PYX_ERR(0, 2540, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_12 = __pyx_t_5;
        __pyx_t_5 = 0;
        if (__Pyx_MergeKeywords(__pyx_t_12, __pyx_v_kwds) < 0) __PYX_ERR(0, 2540, __pyx_L1_error)
        __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeInt16Parser), __pyx_t_6, __pyx_t_12); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2540, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        __Pyx_XDECREF_SET(__pyx_v_parser, ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *)__pyx_t_5));
        __pyx_t_5 = 0;
+2541:                 elif t == np.dtype('int32'):
      __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__67, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2541, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_12 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_12); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2541, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 2541, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      if (__pyx_t_8) {
/* … */
        goto __pyx_L8;
      }
/* … */
  __pyx_tuple__67 = PyTuple_Pack(1, __pyx_n_s_int32); if (unlikely(!__pyx_tuple__67)) __PYX_ERR(0, 2541, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__67);
  __Pyx_GIVEREF(__pyx_tuple__67);
+2542:                     parser = VCFGenotypeInt32Parser(key, number=n, fill=fills.get(key, -1), **kwds)
        __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2542, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_12);
        __Pyx_INCREF(__pyx_v_key);
        __Pyx_GIVEREF(__pyx_v_key);
        PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_v_key);
        __pyx_t_6 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2542, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_number, __pyx_v_n) < 0) __PYX_ERR(0, 2542, __pyx_L1_error)
        __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_fills, __pyx_n_s_get); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2542, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_13);
        __pyx_t_14 = NULL;
        __pyx_t_11 = 0;
        if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) {
          __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_13);
          if (likely(__pyx_t_14)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
            __Pyx_INCREF(__pyx_t_14);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_13, function);
            __pyx_t_11 = 1;
          }
        }
        #if CYTHON_FAST_PYCALL
        if (PyFunction_Check(__pyx_t_13)) {
          PyObject *__pyx_temp[3] = {__pyx_t_14, __pyx_v_key, __pyx_int_neg_1};
          __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2542, __pyx_L1_error)
          __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
          __Pyx_GOTREF(__pyx_t_3);
        } else
        #endif
        #if CYTHON_FAST_PYCCALL
        if (__Pyx_PyFastCFunction_Check(__pyx_t_13)) {
          PyObject *__pyx_temp[3] = {__pyx_t_14, __pyx_v_key, __pyx_int_neg_1};
          __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2542, __pyx_L1_error)
          __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
          __Pyx_GOTREF(__pyx_t_3);
        } else
        #endif
        {
          __pyx_t_15 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2542, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_15);
          if (__pyx_t_14) {
            __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_14); __pyx_t_14 = NULL;
          }
          __Pyx_INCREF(__pyx_v_key);
          __Pyx_GIVEREF(__pyx_v_key);
          PyTuple_SET_ITEM(__pyx_t_15, 0+__pyx_t_11, __pyx_v_key);
          __Pyx_INCREF(__pyx_int_neg_1);
          __Pyx_GIVEREF(__pyx_int_neg_1);
          PyTuple_SET_ITEM(__pyx_t_15, 1+__pyx_t_11, __pyx_int_neg_1);
          __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_15, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2542, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
        }
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_fill, __pyx_t_3) < 0) __PYX_ERR(0, 2542, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_5 = __pyx_t_6;
        __pyx_t_6 = 0;
        if (__Pyx_MergeKeywords(__pyx_t_5, __pyx_v_kwds) < 0) __PYX_ERR(0, 2542, __pyx_L1_error)
        __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeInt32Parser), __pyx_t_12, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2542, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF_SET(__pyx_v_parser, ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *)__pyx_t_6));
        __pyx_t_6 = 0;
+2543:                 elif t == np.dtype('int64'):
      __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__68, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2543, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2543, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 2543, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (__pyx_t_8) {
/* … */
        goto __pyx_L8;
      }
/* … */
  __pyx_tuple__68 = PyTuple_Pack(1, __pyx_n_s_int64); if (unlikely(!__pyx_tuple__68)) __PYX_ERR(0, 2543, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__68);
  __Pyx_GIVEREF(__pyx_tuple__68);
+2544:                     parser = VCFGenotypeInt64Parser(key, number=n, fill=fills.get(key, -1), **kwds)
        __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2544, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_INCREF(__pyx_v_key);
        __Pyx_GIVEREF(__pyx_v_key);
        PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_key);
        __pyx_t_12 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2544, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_12);
        if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_number, __pyx_v_n) < 0) __PYX_ERR(0, 2544, __pyx_L1_error)
        __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_fills, __pyx_n_s_get); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2544, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_13);
        __pyx_t_15 = NULL;
        __pyx_t_11 = 0;
        if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) {
          __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_13);
          if (likely(__pyx_t_15)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
            __Pyx_INCREF(__pyx_t_15);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_13, function);
            __pyx_t_11 = 1;
          }
        }
        #if CYTHON_FAST_PYCALL
        if (PyFunction_Check(__pyx_t_13)) {
          PyObject *__pyx_temp[3] = {__pyx_t_15, __pyx_v_key, __pyx_int_neg_1};
          __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2544, __pyx_L1_error)
          __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
          __Pyx_GOTREF(__pyx_t_3);
        } else
        #endif
        #if CYTHON_FAST_PYCCALL
        if (__Pyx_PyFastCFunction_Check(__pyx_t_13)) {
          PyObject *__pyx_temp[3] = {__pyx_t_15, __pyx_v_key, __pyx_int_neg_1};
          __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2544, __pyx_L1_error)
          __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
          __Pyx_GOTREF(__pyx_t_3);
        } else
        #endif
        {
          __pyx_t_14 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2544, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_14);
          if (__pyx_t_15) {
            __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_15); __pyx_t_15 = NULL;
          }
          __Pyx_INCREF(__pyx_v_key);
          __Pyx_GIVEREF(__pyx_v_key);
          PyTuple_SET_ITEM(__pyx_t_14, 0+__pyx_t_11, __pyx_v_key);
          __Pyx_INCREF(__pyx_int_neg_1);
          __Pyx_GIVEREF(__pyx_int_neg_1);
          PyTuple_SET_ITEM(__pyx_t_14, 1+__pyx_t_11, __pyx_int_neg_1);
          __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_14, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2544, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
        }
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_fill, __pyx_t_3) < 0) __PYX_ERR(0, 2544, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_6 = __pyx_t_12;
        __pyx_t_12 = 0;
        if (__Pyx_MergeKeywords(__pyx_t_6, __pyx_v_kwds) < 0) __PYX_ERR(0, 2544, __pyx_L1_error)
        __pyx_t_12 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeInt64Parser), __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2544, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_12);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF_SET(__pyx_v_parser, ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *)__pyx_t_12));
        __pyx_t_12 = 0;
+2545:                 elif t == np.dtype('uint8'):
      __pyx_t_12 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__69, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2545, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __pyx_t_6 = PyObject_RichCompare(__pyx_v_t, __pyx_t_12, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2545, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 2545, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (__pyx_t_8) {
/* … */
        goto __pyx_L8;
      }
/* … */
  __pyx_tuple__69 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__69)) __PYX_ERR(0, 2545, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__69);
  __Pyx_GIVEREF(__pyx_tuple__69);
+2546:                     parser = VCFGenotypeUInt8Parser(key, number=n, fill=fills.get(key, IU8.max), **kwds)
        __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2546, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_INCREF(__pyx_v_key);
        __Pyx_GIVEREF(__pyx_v_key);
        PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_key);
        __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2546, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_number, __pyx_v_n) < 0) __PYX_ERR(0, 2546, __pyx_L1_error)
        __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_fills, __pyx_n_s_get); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2546, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_13);
        __pyx_t_14 = __Pyx_GetModuleGlobalName(__pyx_n_s_IU8); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2546, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_14);
        __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_max); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2546, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_15);
        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
        __pyx_t_14 = NULL;
        __pyx_t_11 = 0;
        if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) {
          __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_13);
          if (likely(__pyx_t_14)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
            __Pyx_INCREF(__pyx_t_14);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_13, function);
            __pyx_t_11 = 1;
          }
        }
        #if CYTHON_FAST_PYCALL
        if (PyFunction_Check(__pyx_t_13)) {
          PyObject *__pyx_temp[3] = {__pyx_t_14, __pyx_v_key, __pyx_t_15};
          __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2546, __pyx_L1_error)
          __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
        } else
        #endif
        #if CYTHON_FAST_PYCCALL
        if (__Pyx_PyFastCFunction_Check(__pyx_t_13)) {
          PyObject *__pyx_temp[3] = {__pyx_t_14, __pyx_v_key, __pyx_t_15};
          __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2546, __pyx_L1_error)
          __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
        } else
        #endif
        {
          __pyx_t_16 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 2546, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_16);
          if (__pyx_t_14) {
            __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_t_14); __pyx_t_14 = NULL;
          }
          __Pyx_INCREF(__pyx_v_key);
          __Pyx_GIVEREF(__pyx_v_key);
          PyTuple_SET_ITEM(__pyx_t_16, 0+__pyx_t_11, __pyx_v_key);
          __Pyx_GIVEREF(__pyx_t_15);
          PyTuple_SET_ITEM(__pyx_t_16, 1+__pyx_t_11, __pyx_t_15);
          __pyx_t_15 = 0;
          __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_16, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2546, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
        }
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_fill, __pyx_t_3) < 0) __PYX_ERR(0, 2546, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_12 = __pyx_t_5;
        __pyx_t_5 = 0;
        if (__Pyx_MergeKeywords(__pyx_t_12, __pyx_v_kwds) < 0) __PYX_ERR(0, 2546, __pyx_L1_error)
        __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeUInt8Parser), __pyx_t_6, __pyx_t_12); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2546, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        __Pyx_XDECREF_SET(__pyx_v_parser, ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *)__pyx_t_5));
        __pyx_t_5 = 0;
+2547:                 elif t == np.dtype('uint16'):
      __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__70, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2547, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_12 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_12); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2547, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 2547, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      if (__pyx_t_8) {
/* … */
        goto __pyx_L8;
      }
/* … */
  __pyx_tuple__70 = PyTuple_Pack(1, __pyx_n_s_uint16); if (unlikely(!__pyx_tuple__70)) __PYX_ERR(0, 2547, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__70);
  __Pyx_GIVEREF(__pyx_tuple__70);
+2548:                     parser = VCFGenotypeUInt16Parser(key, number=n, fill=fills.get(key, IU16.max), **kwds)
        __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2548, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_12);
        __Pyx_INCREF(__pyx_v_key);
        __Pyx_GIVEREF(__pyx_v_key);
        PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_v_key);
        __pyx_t_6 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2548, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_number, __pyx_v_n) < 0) __PYX_ERR(0, 2548, __pyx_L1_error)
        __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_fills, __pyx_n_s_get); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2548, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_13);
        __pyx_t_16 = __Pyx_GetModuleGlobalName(__pyx_n_s_IU16); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 2548, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_16);
        __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_16, __pyx_n_s_max); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2548, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_15);
        __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
        __pyx_t_16 = NULL;
        __pyx_t_11 = 0;
        if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) {
          __pyx_t_16 = PyMethod_GET_SELF(__pyx_t_13);
          if (likely(__pyx_t_16)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
            __Pyx_INCREF(__pyx_t_16);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_13, function);
            __pyx_t_11 = 1;
          }
        }
        #if CYTHON_FAST_PYCALL
        if (PyFunction_Check(__pyx_t_13)) {
          PyObject *__pyx_temp[3] = {__pyx_t_16, __pyx_v_key, __pyx_t_15};
          __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2548, __pyx_L1_error)
          __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
        } else
        #endif
        #if CYTHON_FAST_PYCCALL
        if (__Pyx_PyFastCFunction_Check(__pyx_t_13)) {
          PyObject *__pyx_temp[3] = {__pyx_t_16, __pyx_v_key, __pyx_t_15};
          __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2548, __pyx_L1_error)
          __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
        } else
        #endif
        {
          __pyx_t_14 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2548, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_14);
          if (__pyx_t_16) {
            __Pyx_GIVEREF(__pyx_t_16); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_16); __pyx_t_16 = NULL;
          }
          __Pyx_INCREF(__pyx_v_key);
          __Pyx_GIVEREF(__pyx_v_key);
          PyTuple_SET_ITEM(__pyx_t_14, 0+__pyx_t_11, __pyx_v_key);
          __Pyx_GIVEREF(__pyx_t_15);
          PyTuple_SET_ITEM(__pyx_t_14, 1+__pyx_t_11, __pyx_t_15);
          __pyx_t_15 = 0;
          __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_14, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2548, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
        }
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_fill, __pyx_t_3) < 0) __PYX_ERR(0, 2548, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_5 = __pyx_t_6;
        __pyx_t_6 = 0;
        if (__Pyx_MergeKeywords(__pyx_t_5, __pyx_v_kwds) < 0) __PYX_ERR(0, 2548, __pyx_L1_error)
        __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeUInt16Parser), __pyx_t_12, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2548, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF_SET(__pyx_v_parser, ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *)__pyx_t_6));
        __pyx_t_6 = 0;
+2549:                 elif t == np.dtype('uint32'):
      __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__71, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2549, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2549, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 2549, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (__pyx_t_8) {
/* … */
        goto __pyx_L8;
      }
/* … */
  __pyx_tuple__71 = PyTuple_Pack(1, __pyx_n_s_uint32); if (unlikely(!__pyx_tuple__71)) __PYX_ERR(0, 2549, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__71);
  __Pyx_GIVEREF(__pyx_tuple__71);
+2550:                     parser = VCFGenotypeUInt32Parser(key, number=n, fill=fills.get(key, IU32.max), **kwds)
        __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2550, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_INCREF(__pyx_v_key);
        __Pyx_GIVEREF(__pyx_v_key);
        PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_key);
        __pyx_t_12 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2550, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_12);
        if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_number, __pyx_v_n) < 0) __PYX_ERR(0, 2550, __pyx_L1_error)
        __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_fills, __pyx_n_s_get); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2550, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_13);
        __pyx_t_14 = __Pyx_GetModuleGlobalName(__pyx_n_s_IU32); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2550, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_14);
        __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_max); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2550, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_15);
        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
        __pyx_t_14 = NULL;
        __pyx_t_11 = 0;
        if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) {
          __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_13);
          if (likely(__pyx_t_14)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
            __Pyx_INCREF(__pyx_t_14);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_13, function);
            __pyx_t_11 = 1;
          }
        }
        #if CYTHON_FAST_PYCALL
        if (PyFunction_Check(__pyx_t_13)) {
          PyObject *__pyx_temp[3] = {__pyx_t_14, __pyx_v_key, __pyx_t_15};
          __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2550, __pyx_L1_error)
          __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
        } else
        #endif
        #if CYTHON_FAST_PYCCALL
        if (__Pyx_PyFastCFunction_Check(__pyx_t_13)) {
          PyObject *__pyx_temp[3] = {__pyx_t_14, __pyx_v_key, __pyx_t_15};
          __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2550, __pyx_L1_error)
          __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
        } else
        #endif
        {
          __pyx_t_16 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 2550, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_16);
          if (__pyx_t_14) {
            __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_t_14); __pyx_t_14 = NULL;
          }
          __Pyx_INCREF(__pyx_v_key);
          __Pyx_GIVEREF(__pyx_v_key);
          PyTuple_SET_ITEM(__pyx_t_16, 0+__pyx_t_11, __pyx_v_key);
          __Pyx_GIVEREF(__pyx_t_15);
          PyTuple_SET_ITEM(__pyx_t_16, 1+__pyx_t_11, __pyx_t_15);
          __pyx_t_15 = 0;
          __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_16, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2550, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
        }
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_fill, __pyx_t_3) < 0) __PYX_ERR(0, 2550, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_6 = __pyx_t_12;
        __pyx_t_12 = 0;
        if (__Pyx_MergeKeywords(__pyx_t_6, __pyx_v_kwds) < 0) __PYX_ERR(0, 2550, __pyx_L1_error)
        __pyx_t_12 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeUInt32Parser), __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2550, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_12);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF_SET(__pyx_v_parser, ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *)__pyx_t_12));
        __pyx_t_12 = 0;
+2551:                 elif t == np.dtype('uint64'):
      __pyx_t_12 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__72, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2551, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __pyx_t_6 = PyObject_RichCompare(__pyx_v_t, __pyx_t_12, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2551, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 2551, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (__pyx_t_8) {
/* … */
        goto __pyx_L8;
      }
/* … */
  __pyx_tuple__72 = PyTuple_Pack(1, __pyx_n_s_uint64); if (unlikely(!__pyx_tuple__72)) __PYX_ERR(0, 2551, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__72);
  __Pyx_GIVEREF(__pyx_tuple__72);
+2552:                     parser = VCFGenotypeUInt64Parser(key, number=n, fill=fills.get(key, IU64.max), **kwds)
        __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2552, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_INCREF(__pyx_v_key);
        __Pyx_GIVEREF(__pyx_v_key);
        PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_key);
        __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2552, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_number, __pyx_v_n) < 0) __PYX_ERR(0, 2552, __pyx_L1_error)
        __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_fills, __pyx_n_s_get); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2552, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_13);
        __pyx_t_16 = __Pyx_GetModuleGlobalName(__pyx_n_s_IU64); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 2552, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_16);
        __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_16, __pyx_n_s_max); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2552, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_15);
        __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
        __pyx_t_16 = NULL;
        __pyx_t_11 = 0;
        if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) {
          __pyx_t_16 = PyMethod_GET_SELF(__pyx_t_13);
          if (likely(__pyx_t_16)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
            __Pyx_INCREF(__pyx_t_16);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_13, function);
            __pyx_t_11 = 1;
          }
        }
        #if CYTHON_FAST_PYCALL
        if (PyFunction_Check(__pyx_t_13)) {
          PyObject *__pyx_temp[3] = {__pyx_t_16, __pyx_v_key, __pyx_t_15};
          __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2552, __pyx_L1_error)
          __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
        } else
        #endif
        #if CYTHON_FAST_PYCCALL
        if (__Pyx_PyFastCFunction_Check(__pyx_t_13)) {
          PyObject *__pyx_temp[3] = {__pyx_t_16, __pyx_v_key, __pyx_t_15};
          __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2552, __pyx_L1_error)
          __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
        } else
        #endif
        {
          __pyx_t_14 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2552, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_14);
          if (__pyx_t_16) {
            __Pyx_GIVEREF(__pyx_t_16); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_16); __pyx_t_16 = NULL;
          }
          __Pyx_INCREF(__pyx_v_key);
          __Pyx_GIVEREF(__pyx_v_key);
          PyTuple_SET_ITEM(__pyx_t_14, 0+__pyx_t_11, __pyx_v_key);
          __Pyx_GIVEREF(__pyx_t_15);
          PyTuple_SET_ITEM(__pyx_t_14, 1+__pyx_t_11, __pyx_t_15);
          __pyx_t_15 = 0;
          __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_14, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2552, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
        }
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_fill, __pyx_t_3) < 0) __PYX_ERR(0, 2552, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_12 = __pyx_t_5;
        __pyx_t_5 = 0;
        if (__Pyx_MergeKeywords(__pyx_t_12, __pyx_v_kwds) < 0) __PYX_ERR(0, 2552, __pyx_L1_error)
        __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeUInt64Parser), __pyx_t_6, __pyx_t_12); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2552, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        __Pyx_XDECREF_SET(__pyx_v_parser, ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *)__pyx_t_5));
        __pyx_t_5 = 0;
 2553:                 else:
+2554:                     warnings.warn('type %r not supported for genotype field %r, field will be skipped' % (t, key))
      /*else*/ {
        __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_warnings); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2554, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_12);
        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_warn); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2554, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        __pyx_t_12 = PyTuple_New(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2554, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_12);
        __Pyx_INCREF(__pyx_v_t);
        __Pyx_GIVEREF(__pyx_v_t);
        PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_v_t);
        __Pyx_INCREF(__pyx_v_key);
        __Pyx_GIVEREF(__pyx_v_key);
        PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_v_key);
        __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_type_r_not_supported_for_genotyp, __pyx_t_12); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2554, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        __pyx_t_12 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
          __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_6);
          if (likely(__pyx_t_12)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
            __Pyx_INCREF(__pyx_t_12);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_6, function);
          }
        }
        if (!__pyx_t_12) {
          __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2554, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_GOTREF(__pyx_t_5);
        } else {
          #if CYTHON_FAST_PYCALL
          if (PyFunction_Check(__pyx_t_6)) {
            PyObject *__pyx_temp[2] = {__pyx_t_12, __pyx_t_3};
            __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2554, __pyx_L1_error)
            __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
            __Pyx_GOTREF(__pyx_t_5);
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          } else
          #endif
          #if CYTHON_FAST_PYCCALL
          if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
            PyObject *__pyx_temp[2] = {__pyx_t_12, __pyx_t_3};
            __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2554, __pyx_L1_error)
            __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
            __Pyx_GOTREF(__pyx_t_5);
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          } else
          #endif
          {
            __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2554, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_13);
            __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_12); __pyx_t_12 = NULL;
            __Pyx_GIVEREF(__pyx_t_3);
            PyTuple_SET_ITEM(__pyx_t_13, 0+1, __pyx_t_3);
            __pyx_t_3 = 0;
            __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_13, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2554, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
          }
        }
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+2555:                     parser = self.skip_parser
        __pyx_t_5 = ((PyObject *)__pyx_v_self->skip_parser);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_XDECREF_SET(__pyx_v_parser, ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *)__pyx_t_5));
        __pyx_t_5 = 0;
      }
      __pyx_L8:;
 2556: 
 2557:             # special handling of "genotype_ac" dtypes for any field
+2558:             elif isinstance(t, str) and t.startswith('genotype_ac/'):
    __pyx_t_10 = PyString_Check(__pyx_v_t); 
    __pyx_t_9 = (__pyx_t_10 != 0);
    if (__pyx_t_9) {
    } else {
      __pyx_t_8 = __pyx_t_9;
      goto __pyx_L9_bool_binop_done;
    }
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_t, __pyx_n_s_startswith); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2558, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__73, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2558, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 2558, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_8 = __pyx_t_9;
    __pyx_L9_bool_binop_done:;
    if (__pyx_t_8) {
/* … */
  __pyx_tuple__73 = PyTuple_Pack(1, __pyx_kp_s_genotype_ac); if (unlikely(!__pyx_tuple__73)) __PYX_ERR(0, 2558, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__73);
  __Pyx_GIVEREF(__pyx_tuple__73);
/* … */
      goto __pyx_L5;
    }
+2559:                 t = np.dtype(t.split('/')[1])
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_t, __pyx_n_s_split); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2559, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__74, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2559, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_5, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2559, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2559, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6);
      __pyx_t_6 = 0;
      __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2559, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF_SET(__pyx_v_t, __pyx_t_6);
      __pyx_t_6 = 0;
/* … */
  __pyx_tuple__74 = PyTuple_Pack(1, __pyx_kp_s__3); if (unlikely(!__pyx_tuple__74)) __PYX_ERR(0, 2559, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__74);
  __Pyx_GIVEREF(__pyx_tuple__74);
+2560:                 if t == np.dtype('int8'):
      __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__75, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2560, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2560, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 2560, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (__pyx_t_8) {
/* … */
        goto __pyx_L11;
      }
/* … */
  __pyx_tuple__75 = PyTuple_Pack(1, __pyx_n_s_int8); if (unlikely(!__pyx_tuple__75)) __PYX_ERR(0, 2560, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__75);
  __Pyx_GIVEREF(__pyx_tuple__75);
+2561:                     parser = VCFGenotypeACInt8Parser(key, number=n, **kwds)
        __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2561, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_INCREF(__pyx_v_key);
        __Pyx_GIVEREF(__pyx_v_key);
        PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_key);
        __pyx_t_13 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2561, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_13);
        if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_number, __pyx_v_n) < 0) __PYX_ERR(0, 2561, __pyx_L1_error)
        __pyx_t_6 = __pyx_t_13;
        __pyx_t_13 = 0;
        if (__Pyx_MergeKeywords(__pyx_t_6, __pyx_v_kwds) < 0) __PYX_ERR(0, 2561, __pyx_L1_error)
        __pyx_t_13 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeACInt8Parser), __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2561, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_13);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF_SET(__pyx_v_parser, ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *)__pyx_t_13));
        __pyx_t_13 = 0;
+2562:                 elif t == np.dtype('int16'):
      __pyx_t_13 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__76, NULL); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2562, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_13);
      __pyx_t_6 = PyObject_RichCompare(__pyx_v_t, __pyx_t_13, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2562, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
      __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 2562, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (__pyx_t_8) {
/* … */
        goto __pyx_L11;
      }
/* … */
  __pyx_tuple__76 = PyTuple_Pack(1, __pyx_n_s_int16); if (unlikely(!__pyx_tuple__76)) __PYX_ERR(0, 2562, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__76);
  __Pyx_GIVEREF(__pyx_tuple__76);
+2563:                     parser = VCFGenotypeACInt16Parser(key, number=n, **kwds)
        __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2563, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_INCREF(__pyx_v_key);
        __Pyx_GIVEREF(__pyx_v_key);
        PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_key);
        __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2563, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_number, __pyx_v_n) < 0) __PYX_ERR(0, 2563, __pyx_L1_error)
        __pyx_t_13 = __pyx_t_5;
        __pyx_t_5 = 0;
        if (__Pyx_MergeKeywords(__pyx_t_13, __pyx_v_kwds) < 0) __PYX_ERR(0, 2563, __pyx_L1_error)
        __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeACInt16Parser), __pyx_t_6, __pyx_t_13); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2563, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        __Pyx_XDECREF_SET(__pyx_v_parser, ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *)__pyx_t_5));
        __pyx_t_5 = 0;
+2564:                 elif t == np.dtype('int32'):
      __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__77, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2564, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_13 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_13); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2564, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_13); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 2564, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
      if (__pyx_t_8) {
/* … */
        goto __pyx_L11;
      }
/* … */
  __pyx_tuple__77 = PyTuple_Pack(1, __pyx_n_s_int32); if (unlikely(!__pyx_tuple__77)) __PYX_ERR(0, 2564, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__77);
  __Pyx_GIVEREF(__pyx_tuple__77);
+2565:                     parser = VCFGenotypeACInt32Parser(key, number=n, **kwds)
        __pyx_t_13 = PyTuple_New(1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2565, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_13);
        __Pyx_INCREF(__pyx_v_key);
        __Pyx_GIVEREF(__pyx_v_key);
        PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_v_key);
        __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2565, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_number, __pyx_v_n) < 0) __PYX_ERR(0, 2565, __pyx_L1_error)
        __pyx_t_5 = __pyx_t_6;
        __pyx_t_6 = 0;
        if (__Pyx_MergeKeywords(__pyx_t_5, __pyx_v_kwds) < 0) __PYX_ERR(0, 2565, __pyx_L1_error)
        __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeACInt32Parser), __pyx_t_13, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2565, __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;
        __Pyx_XDECREF_SET(__pyx_v_parser, ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *)__pyx_t_6));
        __pyx_t_6 = 0;
+2566:                 elif t == np.dtype('int64'):
      __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__78, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2566, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2566, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 2566, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (__pyx_t_8) {
/* … */
        goto __pyx_L11;
      }
/* … */
  __pyx_tuple__78 = PyTuple_Pack(1, __pyx_n_s_int64); if (unlikely(!__pyx_tuple__78)) __PYX_ERR(0, 2566, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__78);
  __Pyx_GIVEREF(__pyx_tuple__78);
+2567:                     parser = VCFGenotypeACInt64Parser(key, number=n, **kwds)
        __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2567, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_INCREF(__pyx_v_key);
        __Pyx_GIVEREF(__pyx_v_key);
        PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_key);
        __pyx_t_13 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2567, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_13);
        if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_number, __pyx_v_n) < 0) __PYX_ERR(0, 2567, __pyx_L1_error)
        __pyx_t_6 = __pyx_t_13;
        __pyx_t_13 = 0;
        if (__Pyx_MergeKeywords(__pyx_t_6, __pyx_v_kwds) < 0) __PYX_ERR(0, 2567, __pyx_L1_error)
        __pyx_t_13 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeACInt64Parser), __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2567, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_13);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF_SET(__pyx_v_parser, ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *)__pyx_t_13));
        __pyx_t_13 = 0;
+2568:                 elif t == np.dtype('uint8'):
      __pyx_t_13 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__79, NULL); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2568, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_13);
      __pyx_t_6 = PyObject_RichCompare(__pyx_v_t, __pyx_t_13, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2568, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
      __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 2568, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (__pyx_t_8) {
/* … */
        goto __pyx_L11;
      }
/* … */
  __pyx_tuple__79 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__79)) __PYX_ERR(0, 2568, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__79);
  __Pyx_GIVEREF(__pyx_tuple__79);
+2569:                     parser = VCFGenotypeACUInt8Parser(key, number=n, **kwds)
        __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2569, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_INCREF(__pyx_v_key);
        __Pyx_GIVEREF(__pyx_v_key);
        PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_key);
        __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2569, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_number, __pyx_v_n) < 0) __PYX_ERR(0, 2569, __pyx_L1_error)
        __pyx_t_13 = __pyx_t_5;
        __pyx_t_5 = 0;
        if (__Pyx_MergeKeywords(__pyx_t_13, __pyx_v_kwds) < 0) __PYX_ERR(0, 2569, __pyx_L1_error)
        __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeACUInt8Parser), __pyx_t_6, __pyx_t_13); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2569, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        __Pyx_XDECREF_SET(__pyx_v_parser, ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *)__pyx_t_5));
        __pyx_t_5 = 0;
+2570:                 elif t == np.dtype('uint16'):
      __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__80, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2570, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_13 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_13); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2570, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_13); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 2570, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
      if (__pyx_t_8) {
/* … */
        goto __pyx_L11;
      }
/* … */
  __pyx_tuple__80 = PyTuple_Pack(1, __pyx_n_s_uint16); if (unlikely(!__pyx_tuple__80)) __PYX_ERR(0, 2570, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__80);
  __Pyx_GIVEREF(__pyx_tuple__80);
+2571:                     parser = VCFGenotypeACUInt16Parser(key, number=n, **kwds)
        __pyx_t_13 = PyTuple_New(1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2571, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_13);
        __Pyx_INCREF(__pyx_v_key);
        __Pyx_GIVEREF(__pyx_v_key);
        PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_v_key);
        __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2571, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_number, __pyx_v_n) < 0) __PYX_ERR(0, 2571, __pyx_L1_error)
        __pyx_t_5 = __pyx_t_6;
        __pyx_t_6 = 0;
        if (__Pyx_MergeKeywords(__pyx_t_5, __pyx_v_kwds) < 0) __PYX_ERR(0, 2571, __pyx_L1_error)
        __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeACUInt16Parser), __pyx_t_13, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2571, __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;
        __Pyx_XDECREF_SET(__pyx_v_parser, ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *)__pyx_t_6));
        __pyx_t_6 = 0;
+2572:                 elif t == np.dtype('uint32'):
      __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__81, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2572, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2572, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 2572, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (__pyx_t_8) {
/* … */
        goto __pyx_L11;
      }
/* … */
  __pyx_tuple__81 = PyTuple_Pack(1, __pyx_n_s_uint32); if (unlikely(!__pyx_tuple__81)) __PYX_ERR(0, 2572, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__81);
  __Pyx_GIVEREF(__pyx_tuple__81);
+2573:                     parser = VCFGenotypeACUInt32Parser(key, number=n, **kwds)
        __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2573, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_INCREF(__pyx_v_key);
        __Pyx_GIVEREF(__pyx_v_key);
        PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_key);
        __pyx_t_13 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2573, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_13);
        if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_number, __pyx_v_n) < 0) __PYX_ERR(0, 2573, __pyx_L1_error)
        __pyx_t_6 = __pyx_t_13;
        __pyx_t_13 = 0;
        if (__Pyx_MergeKeywords(__pyx_t_6, __pyx_v_kwds) < 0) __PYX_ERR(0, 2573, __pyx_L1_error)
        __pyx_t_13 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeACUInt32Parser), __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2573, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_13);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF_SET(__pyx_v_parser, ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *)__pyx_t_13));
        __pyx_t_13 = 0;
+2574:                 elif t == np.dtype('uint64'):
      __pyx_t_13 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__82, NULL); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2574, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_13);
      __pyx_t_6 = PyObject_RichCompare(__pyx_v_t, __pyx_t_13, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2574, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
      __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 2574, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (__pyx_t_8) {
/* … */
        goto __pyx_L11;
      }
/* … */
  __pyx_tuple__82 = PyTuple_Pack(1, __pyx_n_s_uint64); if (unlikely(!__pyx_tuple__82)) __PYX_ERR(0, 2574, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__82);
  __Pyx_GIVEREF(__pyx_tuple__82);
+2575:                     parser = VCFGenotypeACUInt64Parser(key, number=n, **kwds)
        __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2575, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_INCREF(__pyx_v_key);
        __Pyx_GIVEREF(__pyx_v_key);
        PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_key);
        __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2575, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_number, __pyx_v_n) < 0) __PYX_ERR(0, 2575, __pyx_L1_error)
        __pyx_t_13 = __pyx_t_5;
        __pyx_t_5 = 0;
        if (__Pyx_MergeKeywords(__pyx_t_13, __pyx_v_kwds) < 0) __PYX_ERR(0, 2575, __pyx_L1_error)
        __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeACUInt64Parser), __pyx_t_6, __pyx_t_13); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2575, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        __Pyx_XDECREF_SET(__pyx_v_parser, ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *)__pyx_t_5));
        __pyx_t_5 = 0;
 2576:                 else:
+2577:                     warnings.warn('type %r not supported for genotype_ac field %r, field will be skipped' % (t, key))
      /*else*/ {
        __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_warnings); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2577, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_13);
        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_warn); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2577, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        __pyx_t_13 = PyTuple_New(2); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2577, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_13);
        __Pyx_INCREF(__pyx_v_t);
        __Pyx_GIVEREF(__pyx_v_t);
        PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_v_t);
        __Pyx_INCREF(__pyx_v_key);
        __Pyx_GIVEREF(__pyx_v_key);
        PyTuple_SET_ITEM(__pyx_t_13, 1, __pyx_v_key);
        __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_type_r_not_supported_for_genotyp_2, __pyx_t_13); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2577, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        __pyx_t_13 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
          __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_6);
          if (likely(__pyx_t_13)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
            __Pyx_INCREF(__pyx_t_13);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_6, function);
          }
        }
        if (!__pyx_t_13) {
          __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2577, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_GOTREF(__pyx_t_5);
        } else {
          #if CYTHON_FAST_PYCALL
          if (PyFunction_Check(__pyx_t_6)) {
            PyObject *__pyx_temp[2] = {__pyx_t_13, __pyx_t_3};
            __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2577, __pyx_L1_error)
            __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
            __Pyx_GOTREF(__pyx_t_5);
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          } else
          #endif
          #if CYTHON_FAST_PYCCALL
          if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
            PyObject *__pyx_temp[2] = {__pyx_t_13, __pyx_t_3};
            __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2577, __pyx_L1_error)
            __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
            __Pyx_GOTREF(__pyx_t_5);
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          } else
          #endif
          {
            __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2577, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_12);
            __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_13); __pyx_t_13 = NULL;
            __Pyx_GIVEREF(__pyx_t_3);
            PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_t_3);
            __pyx_t_3 = 0;
            __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_12, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2577, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
          }
        }
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+2578:                     parser = self.skip_parser
        __pyx_t_5 = ((PyObject *)__pyx_v_self->skip_parser);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_XDECREF_SET(__pyx_v_parser, ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *)__pyx_t_5));
        __pyx_t_5 = 0;
      }
      __pyx_L11:;
 2579: 
 2580:             # special handling of GT field
+2581:             elif key == b'GT' and t == np.dtype('int8'):
    __pyx_t_9 = (__Pyx_PyBytes_Equals(__pyx_v_key, __pyx_n_b_GT, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 2581, __pyx_L1_error)
    if (__pyx_t_9) {
    } else {
      __pyx_t_8 = __pyx_t_9;
      goto __pyx_L12_bool_binop_done;
    }
    __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__83, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2581, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2581, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 2581, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_8 = __pyx_t_9;
    __pyx_L12_bool_binop_done:;
    if (__pyx_t_8) {
/* … */
      goto __pyx_L5;
    }
/* … */
  __pyx_tuple__83 = PyTuple_Pack(1, __pyx_n_s_int8); if (unlikely(!__pyx_tuple__83)) __PYX_ERR(0, 2581, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__83);
  __Pyx_GIVEREF(__pyx_tuple__83);
+2582:                 parser = VCFGenotypeInt8Parser(key, number=n, fill=fills.get(key, -1), **kwds)
      __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2582, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_INCREF(__pyx_v_key);
      __Pyx_GIVEREF(__pyx_v_key);
      PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_key);
      __pyx_t_12 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2582, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_number, __pyx_v_n) < 0) __PYX_ERR(0, 2582, __pyx_L1_error)
      __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_fills, __pyx_n_s_get); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2582, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_13);
      __pyx_t_14 = NULL;
      __pyx_t_11 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) {
        __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_13);
        if (likely(__pyx_t_14)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
          __Pyx_INCREF(__pyx_t_14);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_13, function);
          __pyx_t_11 = 1;
        }
      }
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_13)) {
        PyObject *__pyx_temp[3] = {__pyx_t_14, __pyx_v_key, __pyx_int_neg_1};
        __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2582, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
        __Pyx_GOTREF(__pyx_t_3);
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_13)) {
        PyObject *__pyx_temp[3] = {__pyx_t_14, __pyx_v_key, __pyx_int_neg_1};
        __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2582, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
        __Pyx_GOTREF(__pyx_t_3);
      } else
      #endif
      {
        __pyx_t_15 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2582, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_15);
        if (__pyx_t_14) {
          __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_14); __pyx_t_14 = NULL;
        }
        __Pyx_INCREF(__pyx_v_key);
        __Pyx_GIVEREF(__pyx_v_key);
        PyTuple_SET_ITEM(__pyx_t_15, 0+__pyx_t_11, __pyx_v_key);
        __Pyx_INCREF(__pyx_int_neg_1);
        __Pyx_GIVEREF(__pyx_int_neg_1);
        PyTuple_SET_ITEM(__pyx_t_15, 1+__pyx_t_11, __pyx_int_neg_1);
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_15, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2582, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      }
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
      if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_fill, __pyx_t_3) < 0) __PYX_ERR(0, 2582, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_5 = __pyx_t_12;
      __pyx_t_12 = 0;
      if (__Pyx_MergeKeywords(__pyx_t_5, __pyx_v_kwds) < 0) __PYX_ERR(0, 2582, __pyx_L1_error)
      __pyx_t_12 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeInt8Parser), __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2582, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF_SET(__pyx_v_parser, ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *)__pyx_t_12));
      __pyx_t_12 = 0;
+2583:             elif key == b'GT' and t == np.dtype('int16'):
    __pyx_t_9 = (__Pyx_PyBytes_Equals(__pyx_v_key, __pyx_n_b_GT, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 2583, __pyx_L1_error)
    if (__pyx_t_9) {
    } else {
      __pyx_t_8 = __pyx_t_9;
      goto __pyx_L14_bool_binop_done;
    }
    __pyx_t_12 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__84, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2583, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_12, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2583, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 2583, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_8 = __pyx_t_9;
    __pyx_L14_bool_binop_done:;
    if (__pyx_t_8) {
/* … */
      goto __pyx_L5;
    }
/* … */
  __pyx_tuple__84 = PyTuple_Pack(1, __pyx_n_s_int16); if (unlikely(!__pyx_tuple__84)) __PYX_ERR(0, 2583, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__84);
  __Pyx_GIVEREF(__pyx_tuple__84);
+2584:                 parser = VCFGenotypeInt16Parser(key, number=n, fill=fills.get(key, -1), **kwds)
      __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2584, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_INCREF(__pyx_v_key);
      __Pyx_GIVEREF(__pyx_v_key);
      PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_key);
      __pyx_t_6 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2584, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_number, __pyx_v_n) < 0) __PYX_ERR(0, 2584, __pyx_L1_error)
      __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_fills, __pyx_n_s_get); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2584, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_13);
      __pyx_t_15 = NULL;
      __pyx_t_11 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) {
        __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_13);
        if (likely(__pyx_t_15)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
          __Pyx_INCREF(__pyx_t_15);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_13, function);
          __pyx_t_11 = 1;
        }
      }
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_13)) {
        PyObject *__pyx_temp[3] = {__pyx_t_15, __pyx_v_key, __pyx_int_neg_1};
        __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2584, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
        __Pyx_GOTREF(__pyx_t_3);
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_13)) {
        PyObject *__pyx_temp[3] = {__pyx_t_15, __pyx_v_key, __pyx_int_neg_1};
        __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2584, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
        __Pyx_GOTREF(__pyx_t_3);
      } else
      #endif
      {
        __pyx_t_14 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2584, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_14);
        if (__pyx_t_15) {
          __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_15); __pyx_t_15 = NULL;
        }
        __Pyx_INCREF(__pyx_v_key);
        __Pyx_GIVEREF(__pyx_v_key);
        PyTuple_SET_ITEM(__pyx_t_14, 0+__pyx_t_11, __pyx_v_key);
        __Pyx_INCREF(__pyx_int_neg_1);
        __Pyx_GIVEREF(__pyx_int_neg_1);
        PyTuple_SET_ITEM(__pyx_t_14, 1+__pyx_t_11, __pyx_int_neg_1);
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_14, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2584, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      }
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
      if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_fill, __pyx_t_3) < 0) __PYX_ERR(0, 2584, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_12 = __pyx_t_6;
      __pyx_t_6 = 0;
      if (__Pyx_MergeKeywords(__pyx_t_12, __pyx_v_kwds) < 0) __PYX_ERR(0, 2584, __pyx_L1_error)
      __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeInt16Parser), __pyx_t_5, __pyx_t_12); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2584, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_XDECREF_SET(__pyx_v_parser, ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *)__pyx_t_6));
      __pyx_t_6 = 0;
+2585:             elif key == b'GT' and t == np.dtype('int32'):
    __pyx_t_9 = (__Pyx_PyBytes_Equals(__pyx_v_key, __pyx_n_b_GT, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 2585, __pyx_L1_error)
    if (__pyx_t_9) {
    } else {
      __pyx_t_8 = __pyx_t_9;
      goto __pyx_L16_bool_binop_done;
    }
    __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__85, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2585, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_12 = PyObject_RichCompare(__pyx_v_t, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_12); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2585, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 2585, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_8 = __pyx_t_9;
    __pyx_L16_bool_binop_done:;
    if (__pyx_t_8) {
/* … */
      goto __pyx_L5;
    }
/* … */
  __pyx_tuple__85 = PyTuple_Pack(1, __pyx_n_s_int32); if (unlikely(!__pyx_tuple__85)) __PYX_ERR(0, 2585, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__85);
  __Pyx_GIVEREF(__pyx_tuple__85);
+2586:                 parser = VCFGenotypeInt32Parser(key, number=n, fill=fills.get(key, -1), **kwds)
      __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2586, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_INCREF(__pyx_v_key);
      __Pyx_GIVEREF(__pyx_v_key);
      PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_v_key);
      __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2586, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_number, __pyx_v_n) < 0) __PYX_ERR(0, 2586, __pyx_L1_error)
      __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_fills, __pyx_n_s_get); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2586, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_13);
      __pyx_t_14 = NULL;
      __pyx_t_11 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) {
        __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_13);
        if (likely(__pyx_t_14)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
          __Pyx_INCREF(__pyx_t_14);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_13, function);
          __pyx_t_11 = 1;
        }
      }
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_13)) {
        PyObject *__pyx_temp[3] = {__pyx_t_14, __pyx_v_key, __pyx_int_neg_1};
        __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2586, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
        __Pyx_GOTREF(__pyx_t_3);
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_13)) {
        PyObject *__pyx_temp[3] = {__pyx_t_14, __pyx_v_key, __pyx_int_neg_1};
        __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2586, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
        __Pyx_GOTREF(__pyx_t_3);
      } else
      #endif
      {
        __pyx_t_15 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2586, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_15);
        if (__pyx_t_14) {
          __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_14); __pyx_t_14 = NULL;
        }
        __Pyx_INCREF(__pyx_v_key);
        __Pyx_GIVEREF(__pyx_v_key);
        PyTuple_SET_ITEM(__pyx_t_15, 0+__pyx_t_11, __pyx_v_key);
        __Pyx_INCREF(__pyx_int_neg_1);
        __Pyx_GIVEREF(__pyx_int_neg_1);
        PyTuple_SET_ITEM(__pyx_t_15, 1+__pyx_t_11, __pyx_int_neg_1);
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_15, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2586, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      }
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
      if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_fill, __pyx_t_3) < 0) __PYX_ERR(0, 2586, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_6 = __pyx_t_5;
      __pyx_t_5 = 0;
      if (__Pyx_MergeKeywords(__pyx_t_6, __pyx_v_kwds) < 0) __PYX_ERR(0, 2586, __pyx_L1_error)
      __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeInt32Parser), __pyx_t_12, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2586, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF_SET(__pyx_v_parser, ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *)__pyx_t_5));
      __pyx_t_5 = 0;
+2587:             elif key == b'GT' and t == np.dtype('int64'):
    __pyx_t_9 = (__Pyx_PyBytes_Equals(__pyx_v_key, __pyx_n_b_GT, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 2587, __pyx_L1_error)
    if (__pyx_t_9) {
    } else {
      __pyx_t_8 = __pyx_t_9;
      goto __pyx_L18_bool_binop_done;
    }
    __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__86, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2587, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2587, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 2587, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_8 = __pyx_t_9;
    __pyx_L18_bool_binop_done:;
    if (__pyx_t_8) {
/* … */
      goto __pyx_L5;
    }
/* … */
  __pyx_tuple__86 = PyTuple_Pack(1, __pyx_n_s_int64); if (unlikely(!__pyx_tuple__86)) __PYX_ERR(0, 2587, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__86);
  __Pyx_GIVEREF(__pyx_tuple__86);
+2588:                 parser = VCFGenotypeInt64Parser(key, number=n, fill=fills.get(key, -1), **kwds)
      __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2588, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_INCREF(__pyx_v_key);
      __Pyx_GIVEREF(__pyx_v_key);
      PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_key);
      __pyx_t_12 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2588, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_number, __pyx_v_n) < 0) __PYX_ERR(0, 2588, __pyx_L1_error)
      __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_fills, __pyx_n_s_get); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2588, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_13);
      __pyx_t_15 = NULL;
      __pyx_t_11 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) {
        __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_13);
        if (likely(__pyx_t_15)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
          __Pyx_INCREF(__pyx_t_15);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_13, function);
          __pyx_t_11 = 1;
        }
      }
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_13)) {
        PyObject *__pyx_temp[3] = {__pyx_t_15, __pyx_v_key, __pyx_int_neg_1};
        __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2588, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
        __Pyx_GOTREF(__pyx_t_3);
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_13)) {
        PyObject *__pyx_temp[3] = {__pyx_t_15, __pyx_v_key, __pyx_int_neg_1};
        __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2588, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
        __Pyx_GOTREF(__pyx_t_3);
      } else
      #endif
      {
        __pyx_t_14 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2588, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_14);
        if (__pyx_t_15) {
          __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_15); __pyx_t_15 = NULL;
        }
        __Pyx_INCREF(__pyx_v_key);
        __Pyx_GIVEREF(__pyx_v_key);
        PyTuple_SET_ITEM(__pyx_t_14, 0+__pyx_t_11, __pyx_v_key);
        __Pyx_INCREF(__pyx_int_neg_1);
        __Pyx_GIVEREF(__pyx_int_neg_1);
        PyTuple_SET_ITEM(__pyx_t_14, 1+__pyx_t_11, __pyx_int_neg_1);
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_14, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2588, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      }
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
      if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_fill, __pyx_t_3) < 0) __PYX_ERR(0, 2588, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_5 = __pyx_t_12;
      __pyx_t_12 = 0;
      if (__Pyx_MergeKeywords(__pyx_t_5, __pyx_v_kwds) < 0) __PYX_ERR(0, 2588, __pyx_L1_error)
      __pyx_t_12 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeInt64Parser), __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2588, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF_SET(__pyx_v_parser, ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *)__pyx_t_12));
      __pyx_t_12 = 0;
+2589:             elif key == b'GT' and t == np.dtype('uint8'):
    __pyx_t_9 = (__Pyx_PyBytes_Equals(__pyx_v_key, __pyx_n_b_GT, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 2589, __pyx_L1_error)
    if (__pyx_t_9) {
    } else {
      __pyx_t_8 = __pyx_t_9;
      goto __pyx_L20_bool_binop_done;
    }
    __pyx_t_12 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__87, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2589, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_12, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2589, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 2589, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_8 = __pyx_t_9;
    __pyx_L20_bool_binop_done:;
    if (__pyx_t_8) {
/* … */
      goto __pyx_L5;
    }
/* … */
  __pyx_tuple__87 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__87)) __PYX_ERR(0, 2589, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__87);
  __Pyx_GIVEREF(__pyx_tuple__87);
+2590:                 parser = VCFGenotypeUInt8Parser(key, number=n, fill=fills.get(key, IU8.max), **kwds)
      __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2590, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_INCREF(__pyx_v_key);
      __Pyx_GIVEREF(__pyx_v_key);
      PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_key);
      __pyx_t_6 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2590, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_number, __pyx_v_n) < 0) __PYX_ERR(0, 2590, __pyx_L1_error)
      __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_fills, __pyx_n_s_get); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2590, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_13);
      __pyx_t_14 = __Pyx_GetModuleGlobalName(__pyx_n_s_IU8); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2590, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_14);
      __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_max); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2590, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_15);
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      __pyx_t_14 = NULL;
      __pyx_t_11 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) {
        __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_13);
        if (likely(__pyx_t_14)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
          __Pyx_INCREF(__pyx_t_14);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_13, function);
          __pyx_t_11 = 1;
        }
      }
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_13)) {
        PyObject *__pyx_temp[3] = {__pyx_t_14, __pyx_v_key, __pyx_t_15};
        __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2590, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_13)) {
        PyObject *__pyx_temp[3] = {__pyx_t_14, __pyx_v_key, __pyx_t_15};
        __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2590, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      } else
      #endif
      {
        __pyx_t_16 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 2590, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_16);
        if (__pyx_t_14) {
          __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_t_14); __pyx_t_14 = NULL;
        }
        __Pyx_INCREF(__pyx_v_key);
        __Pyx_GIVEREF(__pyx_v_key);
        PyTuple_SET_ITEM(__pyx_t_16, 0+__pyx_t_11, __pyx_v_key);
        __Pyx_GIVEREF(__pyx_t_15);
        PyTuple_SET_ITEM(__pyx_t_16, 1+__pyx_t_11, __pyx_t_15);
        __pyx_t_15 = 0;
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_16, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2590, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
      }
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
      if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_fill, __pyx_t_3) < 0) __PYX_ERR(0, 2590, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_12 = __pyx_t_6;
      __pyx_t_6 = 0;
      if (__Pyx_MergeKeywords(__pyx_t_12, __pyx_v_kwds) < 0) __PYX_ERR(0, 2590, __pyx_L1_error)
      __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeUInt8Parser), __pyx_t_5, __pyx_t_12); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2590, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_XDECREF_SET(__pyx_v_parser, ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *)__pyx_t_6));
      __pyx_t_6 = 0;
+2591:             elif key == b'GT' and t == np.dtype('uint16'):
    __pyx_t_9 = (__Pyx_PyBytes_Equals(__pyx_v_key, __pyx_n_b_GT, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 2591, __pyx_L1_error)
    if (__pyx_t_9) {
    } else {
      __pyx_t_8 = __pyx_t_9;
      goto __pyx_L22_bool_binop_done;
    }
    __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__88, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2591, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_12 = PyObject_RichCompare(__pyx_v_t, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_12); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2591, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 2591, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_8 = __pyx_t_9;
    __pyx_L22_bool_binop_done:;
    if (__pyx_t_8) {
/* … */
      goto __pyx_L5;
    }
/* … */
  __pyx_tuple__88 = PyTuple_Pack(1, __pyx_n_s_uint16); if (unlikely(!__pyx_tuple__88)) __PYX_ERR(0, 2591, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__88);
  __Pyx_GIVEREF(__pyx_tuple__88);
+2592:                 parser = VCFGenotypeUInt16Parser(key, number=n, fill=fills.get(key, IU16.max), **kwds)
      __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2592, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_INCREF(__pyx_v_key);
      __Pyx_GIVEREF(__pyx_v_key);
      PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_v_key);
      __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2592, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_number, __pyx_v_n) < 0) __PYX_ERR(0, 2592, __pyx_L1_error)
      __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_fills, __pyx_n_s_get); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2592, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_13);
      __pyx_t_16 = __Pyx_GetModuleGlobalName(__pyx_n_s_IU16); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 2592, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_16);
      __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_16, __pyx_n_s_max); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2592, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_15);
      __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
      __pyx_t_16 = NULL;
      __pyx_t_11 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) {
        __pyx_t_16 = PyMethod_GET_SELF(__pyx_t_13);
        if (likely(__pyx_t_16)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
          __Pyx_INCREF(__pyx_t_16);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_13, function);
          __pyx_t_11 = 1;
        }
      }
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_13)) {
        PyObject *__pyx_temp[3] = {__pyx_t_16, __pyx_v_key, __pyx_t_15};
        __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2592, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_13)) {
        PyObject *__pyx_temp[3] = {__pyx_t_16, __pyx_v_key, __pyx_t_15};
        __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2592, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      } else
      #endif
      {
        __pyx_t_14 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2592, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_14);
        if (__pyx_t_16) {
          __Pyx_GIVEREF(__pyx_t_16); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_16); __pyx_t_16 = NULL;
        }
        __Pyx_INCREF(__pyx_v_key);
        __Pyx_GIVEREF(__pyx_v_key);
        PyTuple_SET_ITEM(__pyx_t_14, 0+__pyx_t_11, __pyx_v_key);
        __Pyx_GIVEREF(__pyx_t_15);
        PyTuple_SET_ITEM(__pyx_t_14, 1+__pyx_t_11, __pyx_t_15);
        __pyx_t_15 = 0;
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_14, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2592, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      }
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
      if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_fill, __pyx_t_3) < 0) __PYX_ERR(0, 2592, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_6 = __pyx_t_5;
      __pyx_t_5 = 0;
      if (__Pyx_MergeKeywords(__pyx_t_6, __pyx_v_kwds) < 0) __PYX_ERR(0, 2592, __pyx_L1_error)
      __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeUInt16Parser), __pyx_t_12, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2592, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF_SET(__pyx_v_parser, ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *)__pyx_t_5));
      __pyx_t_5 = 0;
+2593:             elif key == b'GT' and t == np.dtype('uint32'):
    __pyx_t_9 = (__Pyx_PyBytes_Equals(__pyx_v_key, __pyx_n_b_GT, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 2593, __pyx_L1_error)
    if (__pyx_t_9) {
    } else {
      __pyx_t_8 = __pyx_t_9;
      goto __pyx_L24_bool_binop_done;
    }
    __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__89, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2593, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2593, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 2593, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_8 = __pyx_t_9;
    __pyx_L24_bool_binop_done:;
    if (__pyx_t_8) {
/* … */
      goto __pyx_L5;
    }
/* … */
  __pyx_tuple__89 = PyTuple_Pack(1, __pyx_n_s_uint32); if (unlikely(!__pyx_tuple__89)) __PYX_ERR(0, 2593, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__89);
  __Pyx_GIVEREF(__pyx_tuple__89);
+2594:                 parser = VCFGenotypeUInt32Parser(key, number=n, fill=fills.get(key, IU32.max), **kwds)
      __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2594, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_INCREF(__pyx_v_key);
      __Pyx_GIVEREF(__pyx_v_key);
      PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_key);
      __pyx_t_12 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2594, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_number, __pyx_v_n) < 0) __PYX_ERR(0, 2594, __pyx_L1_error)
      __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_fills, __pyx_n_s_get); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2594, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_13);
      __pyx_t_14 = __Pyx_GetModuleGlobalName(__pyx_n_s_IU32); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2594, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_14);
      __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_max); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2594, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_15);
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      __pyx_t_14 = NULL;
      __pyx_t_11 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) {
        __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_13);
        if (likely(__pyx_t_14)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
          __Pyx_INCREF(__pyx_t_14);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_13, function);
          __pyx_t_11 = 1;
        }
      }
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_13)) {
        PyObject *__pyx_temp[3] = {__pyx_t_14, __pyx_v_key, __pyx_t_15};
        __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2594, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_13)) {
        PyObject *__pyx_temp[3] = {__pyx_t_14, __pyx_v_key, __pyx_t_15};
        __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2594, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      } else
      #endif
      {
        __pyx_t_16 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 2594, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_16);
        if (__pyx_t_14) {
          __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_t_14); __pyx_t_14 = NULL;
        }
        __Pyx_INCREF(__pyx_v_key);
        __Pyx_GIVEREF(__pyx_v_key);
        PyTuple_SET_ITEM(__pyx_t_16, 0+__pyx_t_11, __pyx_v_key);
        __Pyx_GIVEREF(__pyx_t_15);
        PyTuple_SET_ITEM(__pyx_t_16, 1+__pyx_t_11, __pyx_t_15);
        __pyx_t_15 = 0;
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_16, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2594, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
      }
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
      if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_fill, __pyx_t_3) < 0) __PYX_ERR(0, 2594, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_5 = __pyx_t_12;
      __pyx_t_12 = 0;
      if (__Pyx_MergeKeywords(__pyx_t_5, __pyx_v_kwds) < 0) __PYX_ERR(0, 2594, __pyx_L1_error)
      __pyx_t_12 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeUInt32Parser), __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2594, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF_SET(__pyx_v_parser, ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *)__pyx_t_12));
      __pyx_t_12 = 0;
+2595:             elif key == b'GT' and t == np.dtype('uint64'):
    __pyx_t_9 = (__Pyx_PyBytes_Equals(__pyx_v_key, __pyx_n_b_GT, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 2595, __pyx_L1_error)
    if (__pyx_t_9) {
    } else {
      __pyx_t_8 = __pyx_t_9;
      goto __pyx_L26_bool_binop_done;
    }
    __pyx_t_12 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2595, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_12, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2595, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 2595, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_8 = __pyx_t_9;
    __pyx_L26_bool_binop_done:;
    if (__pyx_t_8) {
/* … */
      goto __pyx_L5;
    }
/* … */
  __pyx_tuple__90 = PyTuple_Pack(1, __pyx_n_s_uint64); if (unlikely(!__pyx_tuple__90)) __PYX_ERR(0, 2595, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__90);
  __Pyx_GIVEREF(__pyx_tuple__90);
+2596:                 parser = VCFGenotypeUInt64Parser(key, number=n, fill=fills.get(key, IU64.max), **kwds)
      __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2596, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_INCREF(__pyx_v_key);
      __Pyx_GIVEREF(__pyx_v_key);
      PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_key);
      __pyx_t_6 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2596, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_number, __pyx_v_n) < 0) __PYX_ERR(0, 2596, __pyx_L1_error)
      __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_fills, __pyx_n_s_get); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2596, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_13);
      __pyx_t_16 = __Pyx_GetModuleGlobalName(__pyx_n_s_IU64); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 2596, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_16);
      __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_16, __pyx_n_s_max); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2596, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_15);
      __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
      __pyx_t_16 = NULL;
      __pyx_t_11 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) {
        __pyx_t_16 = PyMethod_GET_SELF(__pyx_t_13);
        if (likely(__pyx_t_16)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
          __Pyx_INCREF(__pyx_t_16);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_13, function);
          __pyx_t_11 = 1;
        }
      }
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_13)) {
        PyObject *__pyx_temp[3] = {__pyx_t_16, __pyx_v_key, __pyx_t_15};
        __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2596, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_13)) {
        PyObject *__pyx_temp[3] = {__pyx_t_16, __pyx_v_key, __pyx_t_15};
        __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2596, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      } else
      #endif
      {
        __pyx_t_14 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2596, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_14);
        if (__pyx_t_16) {
          __Pyx_GIVEREF(__pyx_t_16); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_16); __pyx_t_16 = NULL;
        }
        __Pyx_INCREF(__pyx_v_key);
        __Pyx_GIVEREF(__pyx_v_key);
        PyTuple_SET_ITEM(__pyx_t_14, 0+__pyx_t_11, __pyx_v_key);
        __Pyx_GIVEREF(__pyx_t_15);
        PyTuple_SET_ITEM(__pyx_t_14, 1+__pyx_t_11, __pyx_t_15);
        __pyx_t_15 = 0;
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_14, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2596, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      }
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
      if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_fill, __pyx_t_3) < 0) __PYX_ERR(0, 2596, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_12 = __pyx_t_6;
      __pyx_t_6 = 0;
      if (__Pyx_MergeKeywords(__pyx_t_12, __pyx_v_kwds) < 0) __PYX_ERR(0, 2596, __pyx_L1_error)
      __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeUInt64Parser), __pyx_t_5, __pyx_t_12); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2596, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_XDECREF_SET(__pyx_v_parser, ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *)__pyx_t_6));
      __pyx_t_6 = 0;
 2597: 
 2598:             # all other calldata
+2599:             elif t == np.dtype('int8'):
    __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__91, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2599, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_12 = PyObject_RichCompare(__pyx_v_t, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_12); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2599, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 2599, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    if (__pyx_t_8) {
/* … */
      goto __pyx_L5;
    }
/* … */
  __pyx_tuple__91 = PyTuple_Pack(1, __pyx_n_s_int8); if (unlikely(!__pyx_tuple__91)) __PYX_ERR(0, 2599, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__91);
  __Pyx_GIVEREF(__pyx_tuple__91);
+2600:                 parser = VCFCallDataInt8Parser(key, number=n, fill=fills.get(key, -1), **kwds)
      __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2600, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_INCREF(__pyx_v_key);
      __Pyx_GIVEREF(__pyx_v_key);
      PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_v_key);
      __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2600, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_number, __pyx_v_n) < 0) __PYX_ERR(0, 2600, __pyx_L1_error)
      __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_fills, __pyx_n_s_get); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2600, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_13);
      __pyx_t_14 = NULL;
      __pyx_t_11 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) {
        __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_13);
        if (likely(__pyx_t_14)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
          __Pyx_INCREF(__pyx_t_14);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_13, function);
          __pyx_t_11 = 1;
        }
      }
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_13)) {
        PyObject *__pyx_temp[3] = {__pyx_t_14, __pyx_v_key, __pyx_int_neg_1};
        __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2600, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
        __Pyx_GOTREF(__pyx_t_3);
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_13)) {
        PyObject *__pyx_temp[3] = {__pyx_t_14, __pyx_v_key, __pyx_int_neg_1};
        __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2600, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
        __Pyx_GOTREF(__pyx_t_3);
      } else
      #endif
      {
        __pyx_t_15 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2600, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_15);
        if (__pyx_t_14) {
          __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_14); __pyx_t_14 = NULL;
        }
        __Pyx_INCREF(__pyx_v_key);
        __Pyx_GIVEREF(__pyx_v_key);
        PyTuple_SET_ITEM(__pyx_t_15, 0+__pyx_t_11, __pyx_v_key);
        __Pyx_INCREF(__pyx_int_neg_1);
        __Pyx_GIVEREF(__pyx_int_neg_1);
        PyTuple_SET_ITEM(__pyx_t_15, 1+__pyx_t_11, __pyx_int_neg_1);
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_15, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2600, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      }
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
      if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_fill, __pyx_t_3) < 0) __PYX_ERR(0, 2600, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_6 = __pyx_t_5;
      __pyx_t_5 = 0;
      if (__Pyx_MergeKeywords(__pyx_t_6, __pyx_v_kwds) < 0) __PYX_ERR(0, 2600, __pyx_L1_error)
      __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFCallDataInt8Parser), __pyx_t_12, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2600, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF_SET(__pyx_v_parser, ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *)__pyx_t_5));
      __pyx_t_5 = 0;
+2601:             elif t == np.dtype('int16'):
    __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__92, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2601, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2601, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 2601, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (__pyx_t_8) {
/* … */
      goto __pyx_L5;
    }
/* … */
  __pyx_tuple__92 = PyTuple_Pack(1, __pyx_n_s_int16); if (unlikely(!__pyx_tuple__92)) __PYX_ERR(0, 2601, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__92);
  __Pyx_GIVEREF(__pyx_tuple__92);
+2602:                 parser = VCFCallDataInt16Parser(key, number=n, fill=fills.get(key, -1), **kwds)
      __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2602, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_INCREF(__pyx_v_key);
      __Pyx_GIVEREF(__pyx_v_key);
      PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_key);
      __pyx_t_12 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2602, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_number, __pyx_v_n) < 0) __PYX_ERR(0, 2602, __pyx_L1_error)
      __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_fills, __pyx_n_s_get); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2602, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_13);
      __pyx_t_15 = NULL;
      __pyx_t_11 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) {
        __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_13);
        if (likely(__pyx_t_15)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
          __Pyx_INCREF(__pyx_t_15);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_13, function);
          __pyx_t_11 = 1;
        }
      }
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_13)) {
        PyObject *__pyx_temp[3] = {__pyx_t_15, __pyx_v_key, __pyx_int_neg_1};
        __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2602, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
        __Pyx_GOTREF(__pyx_t_3);
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_13)) {
        PyObject *__pyx_temp[3] = {__pyx_t_15, __pyx_v_key, __pyx_int_neg_1};
        __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2602, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
        __Pyx_GOTREF(__pyx_t_3);
      } else
      #endif
      {
        __pyx_t_14 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2602, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_14);
        if (__pyx_t_15) {
          __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_15); __pyx_t_15 = NULL;
        }
        __Pyx_INCREF(__pyx_v_key);
        __Pyx_GIVEREF(__pyx_v_key);
        PyTuple_SET_ITEM(__pyx_t_14, 0+__pyx_t_11, __pyx_v_key);
        __Pyx_INCREF(__pyx_int_neg_1);
        __Pyx_GIVEREF(__pyx_int_neg_1);
        PyTuple_SET_ITEM(__pyx_t_14, 1+__pyx_t_11, __pyx_int_neg_1);
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_14, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2602, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      }
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
      if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_fill, __pyx_t_3) < 0) __PYX_ERR(0, 2602, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_5 = __pyx_t_12;
      __pyx_t_12 = 0;
      if (__Pyx_MergeKeywords(__pyx_t_5, __pyx_v_kwds) < 0) __PYX_ERR(0, 2602, __pyx_L1_error)
      __pyx_t_12 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFCallDataInt16Parser), __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2602, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF_SET(__pyx_v_parser, ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *)__pyx_t_12));
      __pyx_t_12 = 0;
+2603:             elif t == np.dtype('int32'):
    __pyx_t_12 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__93, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2603, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_12, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2603, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 2603, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (__pyx_t_8) {
/* … */
      goto __pyx_L5;
    }
/* … */
  __pyx_tuple__93 = PyTuple_Pack(1, __pyx_n_s_int32); if (unlikely(!__pyx_tuple__93)) __PYX_ERR(0, 2603, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__93);
  __Pyx_GIVEREF(__pyx_tuple__93);
+2604:                 parser = VCFCallDataInt32Parser(key, number=n, fill=fills.get(key, -1), **kwds)
      __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2604, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_INCREF(__pyx_v_key);
      __Pyx_GIVEREF(__pyx_v_key);
      PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_key);
      __pyx_t_6 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2604, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_number, __pyx_v_n) < 0) __PYX_ERR(0, 2604, __pyx_L1_error)
      __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_fills, __pyx_n_s_get); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2604, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_13);
      __pyx_t_14 = NULL;
      __pyx_t_11 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) {
        __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_13);
        if (likely(__pyx_t_14)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
          __Pyx_INCREF(__pyx_t_14);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_13, function);
          __pyx_t_11 = 1;
        }
      }
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_13)) {
        PyObject *__pyx_temp[3] = {__pyx_t_14, __pyx_v_key, __pyx_int_neg_1};
        __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2604, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
        __Pyx_GOTREF(__pyx_t_3);
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_13)) {
        PyObject *__pyx_temp[3] = {__pyx_t_14, __pyx_v_key, __pyx_int_neg_1};
        __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2604, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
        __Pyx_GOTREF(__pyx_t_3);
      } else
      #endif
      {
        __pyx_t_15 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2604, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_15);
        if (__pyx_t_14) {
          __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_14); __pyx_t_14 = NULL;
        }
        __Pyx_INCREF(__pyx_v_key);
        __Pyx_GIVEREF(__pyx_v_key);
        PyTuple_SET_ITEM(__pyx_t_15, 0+__pyx_t_11, __pyx_v_key);
        __Pyx_INCREF(__pyx_int_neg_1);
        __Pyx_GIVEREF(__pyx_int_neg_1);
        PyTuple_SET_ITEM(__pyx_t_15, 1+__pyx_t_11, __pyx_int_neg_1);
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_15, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2604, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      }
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
      if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_fill, __pyx_t_3) < 0) __PYX_ERR(0, 2604, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_12 = __pyx_t_6;
      __pyx_t_6 = 0;
      if (__Pyx_MergeKeywords(__pyx_t_12, __pyx_v_kwds) < 0) __PYX_ERR(0, 2604, __pyx_L1_error)
      __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFCallDataInt32Parser), __pyx_t_5, __pyx_t_12); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2604, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_XDECREF_SET(__pyx_v_parser, ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *)__pyx_t_6));
      __pyx_t_6 = 0;
+2605:             elif t == np.dtype('int64'):
    __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__94, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2605, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_12 = PyObject_RichCompare(__pyx_v_t, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_12); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2605, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 2605, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    if (__pyx_t_8) {
/* … */
      goto __pyx_L5;
    }
/* … */
  __pyx_tuple__94 = PyTuple_Pack(1, __pyx_n_s_int64); if (unlikely(!__pyx_tuple__94)) __PYX_ERR(0, 2605, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__94);
  __Pyx_GIVEREF(__pyx_tuple__94);
+2606:                 parser = VCFCallDataInt64Parser(key, number=n, fill=fills.get(key, -1), **kwds)
      __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2606, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_INCREF(__pyx_v_key);
      __Pyx_GIVEREF(__pyx_v_key);
      PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_v_key);
      __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2606, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_number, __pyx_v_n) < 0) __PYX_ERR(0, 2606, __pyx_L1_error)
      __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_fills, __pyx_n_s_get); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2606, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_13);
      __pyx_t_15 = NULL;
      __pyx_t_11 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) {
        __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_13);
        if (likely(__pyx_t_15)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
          __Pyx_INCREF(__pyx_t_15);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_13, function);
          __pyx_t_11 = 1;
        }
      }
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_13)) {
        PyObject *__pyx_temp[3] = {__pyx_t_15, __pyx_v_key, __pyx_int_neg_1};
        __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2606, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
        __Pyx_GOTREF(__pyx_t_3);
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_13)) {
        PyObject *__pyx_temp[3] = {__pyx_t_15, __pyx_v_key, __pyx_int_neg_1};
        __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2606, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
        __Pyx_GOTREF(__pyx_t_3);
      } else
      #endif
      {
        __pyx_t_14 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2606, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_14);
        if (__pyx_t_15) {
          __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_15); __pyx_t_15 = NULL;
        }
        __Pyx_INCREF(__pyx_v_key);
        __Pyx_GIVEREF(__pyx_v_key);
        PyTuple_SET_ITEM(__pyx_t_14, 0+__pyx_t_11, __pyx_v_key);
        __Pyx_INCREF(__pyx_int_neg_1);
        __Pyx_GIVEREF(__pyx_int_neg_1);
        PyTuple_SET_ITEM(__pyx_t_14, 1+__pyx_t_11, __pyx_int_neg_1);
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_14, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2606, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      }
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
      if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_fill, __pyx_t_3) < 0) __PYX_ERR(0, 2606, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_6 = __pyx_t_5;
      __pyx_t_5 = 0;
      if (__Pyx_MergeKeywords(__pyx_t_6, __pyx_v_kwds) < 0) __PYX_ERR(0, 2606, __pyx_L1_error)
      __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFCallDataInt64Parser), __pyx_t_12, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2606, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF_SET(__pyx_v_parser, ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *)__pyx_t_5));
      __pyx_t_5 = 0;
+2607:             elif t == np.dtype('uint8'):
    __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__95, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2607, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2607, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 2607, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (__pyx_t_8) {
/* … */
      goto __pyx_L5;
    }
/* … */
  __pyx_tuple__95 = PyTuple_Pack(1, __pyx_n_s_uint8); if (unlikely(!__pyx_tuple__95)) __PYX_ERR(0, 2607, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__95);
  __Pyx_GIVEREF(__pyx_tuple__95);
+2608:                 parser = VCFCallDataUInt8Parser(key, number=n, fill=fills.get(key, IU8.max), **kwds)
      __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2608, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_INCREF(__pyx_v_key);
      __Pyx_GIVEREF(__pyx_v_key);
      PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_key);
      __pyx_t_12 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2608, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_number, __pyx_v_n) < 0) __PYX_ERR(0, 2608, __pyx_L1_error)
      __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_fills, __pyx_n_s_get); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2608, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_13);
      __pyx_t_14 = __Pyx_GetModuleGlobalName(__pyx_n_s_IU8); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2608, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_14);
      __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_max); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2608, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_15);
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      __pyx_t_14 = NULL;
      __pyx_t_11 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) {
        __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_13);
        if (likely(__pyx_t_14)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
          __Pyx_INCREF(__pyx_t_14);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_13, function);
          __pyx_t_11 = 1;
        }
      }
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_13)) {
        PyObject *__pyx_temp[3] = {__pyx_t_14, __pyx_v_key, __pyx_t_15};
        __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2608, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_13)) {
        PyObject *__pyx_temp[3] = {__pyx_t_14, __pyx_v_key, __pyx_t_15};
        __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2608, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      } else
      #endif
      {
        __pyx_t_16 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 2608, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_16);
        if (__pyx_t_14) {
          __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_t_14); __pyx_t_14 = NULL;
        }
        __Pyx_INCREF(__pyx_v_key);
        __Pyx_GIVEREF(__pyx_v_key);
        PyTuple_SET_ITEM(__pyx_t_16, 0+__pyx_t_11, __pyx_v_key);
        __Pyx_GIVEREF(__pyx_t_15);
        PyTuple_SET_ITEM(__pyx_t_16, 1+__pyx_t_11, __pyx_t_15);
        __pyx_t_15 = 0;
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_16, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2608, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
      }
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
      if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_fill, __pyx_t_3) < 0) __PYX_ERR(0, 2608, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_5 = __pyx_t_12;
      __pyx_t_12 = 0;
      if (__Pyx_MergeKeywords(__pyx_t_5, __pyx_v_kwds) < 0) __PYX_ERR(0, 2608, __pyx_L1_error)
      __pyx_t_12 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFCallDataUInt8Parser), __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2608, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF_SET(__pyx_v_parser, ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *)__pyx_t_12));
      __pyx_t_12 = 0;
+2609:             elif t == np.dtype('uint16'):
    __pyx_t_12 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__96, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2609, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_12, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2609, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 2609, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (__pyx_t_8) {
/* … */
      goto __pyx_L5;
    }
/* … */
  __pyx_tuple__96 = PyTuple_Pack(1, __pyx_n_s_uint16); if (unlikely(!__pyx_tuple__96)) __PYX_ERR(0, 2609, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__96);
  __Pyx_GIVEREF(__pyx_tuple__96);
+2610:                 parser = VCFCallDataUInt16Parser(key, number=n, fill=fills.get(key, IU16.max), **kwds)
      __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2610, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_INCREF(__pyx_v_key);
      __Pyx_GIVEREF(__pyx_v_key);
      PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_key);
      __pyx_t_6 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2610, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_number, __pyx_v_n) < 0) __PYX_ERR(0, 2610, __pyx_L1_error)
      __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_fills, __pyx_n_s_get); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2610, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_13);
      __pyx_t_16 = __Pyx_GetModuleGlobalName(__pyx_n_s_IU16); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 2610, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_16);
      __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_16, __pyx_n_s_max); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2610, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_15);
      __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
      __pyx_t_16 = NULL;
      __pyx_t_11 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) {
        __pyx_t_16 = PyMethod_GET_SELF(__pyx_t_13);
        if (likely(__pyx_t_16)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
          __Pyx_INCREF(__pyx_t_16);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_13, function);
          __pyx_t_11 = 1;
        }
      }
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_13)) {
        PyObject *__pyx_temp[3] = {__pyx_t_16, __pyx_v_key, __pyx_t_15};
        __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2610, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_13)) {
        PyObject *__pyx_temp[3] = {__pyx_t_16, __pyx_v_key, __pyx_t_15};
        __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2610, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      } else
      #endif
      {
        __pyx_t_14 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2610, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_14);
        if (__pyx_t_16) {
          __Pyx_GIVEREF(__pyx_t_16); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_16); __pyx_t_16 = NULL;
        }
        __Pyx_INCREF(__pyx_v_key);
        __Pyx_GIVEREF(__pyx_v_key);
        PyTuple_SET_ITEM(__pyx_t_14, 0+__pyx_t_11, __pyx_v_key);
        __Pyx_GIVEREF(__pyx_t_15);
        PyTuple_SET_ITEM(__pyx_t_14, 1+__pyx_t_11, __pyx_t_15);
        __pyx_t_15 = 0;
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_14, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2610, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      }
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
      if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_fill, __pyx_t_3) < 0) __PYX_ERR(0, 2610, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_12 = __pyx_t_6;
      __pyx_t_6 = 0;
      if (__Pyx_MergeKeywords(__pyx_t_12, __pyx_v_kwds) < 0) __PYX_ERR(0, 2610, __pyx_L1_error)
      __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFCallDataUInt16Parser), __pyx_t_5, __pyx_t_12); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2610, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_XDECREF_SET(__pyx_v_parser, ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *)__pyx_t_6));
      __pyx_t_6 = 0;
+2611:             elif t == np.dtype('uint32'):
    __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__97, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2611, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_12 = PyObject_RichCompare(__pyx_v_t, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_12); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2611, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 2611, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    if (__pyx_t_8) {
/* … */
      goto __pyx_L5;
    }
/* … */
  __pyx_tuple__97 = PyTuple_Pack(1, __pyx_n_s_uint32); if (unlikely(!__pyx_tuple__97)) __PYX_ERR(0, 2611, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__97);
  __Pyx_GIVEREF(__pyx_tuple__97);
+2612:                 parser = VCFCallDataUInt32Parser(key, number=n, fill=fills.get(key, IU32.max), **kwds)
      __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2612, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_INCREF(__pyx_v_key);
      __Pyx_GIVEREF(__pyx_v_key);
      PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_v_key);
      __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2612, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_number, __pyx_v_n) < 0) __PYX_ERR(0, 2612, __pyx_L1_error)
      __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_fills, __pyx_n_s_get); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2612, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_13);
      __pyx_t_14 = __Pyx_GetModuleGlobalName(__pyx_n_s_IU32); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2612, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_14);
      __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_max); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2612, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_15);
      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      __pyx_t_14 = NULL;
      __pyx_t_11 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) {
        __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_13);
        if (likely(__pyx_t_14)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
          __Pyx_INCREF(__pyx_t_14);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_13, function);
          __pyx_t_11 = 1;
        }
      }
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_13)) {
        PyObject *__pyx_temp[3] = {__pyx_t_14, __pyx_v_key, __pyx_t_15};
        __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2612, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_13)) {
        PyObject *__pyx_temp[3] = {__pyx_t_14, __pyx_v_key, __pyx_t_15};
        __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2612, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      } else
      #endif
      {
        __pyx_t_16 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 2612, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_16);
        if (__pyx_t_14) {
          __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_t_14); __pyx_t_14 = NULL;
        }
        __Pyx_INCREF(__pyx_v_key);
        __Pyx_GIVEREF(__pyx_v_key);
        PyTuple_SET_ITEM(__pyx_t_16, 0+__pyx_t_11, __pyx_v_key);
        __Pyx_GIVEREF(__pyx_t_15);
        PyTuple_SET_ITEM(__pyx_t_16, 1+__pyx_t_11, __pyx_t_15);
        __pyx_t_15 = 0;
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_16, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2612, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
      }
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
      if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_fill, __pyx_t_3) < 0) __PYX_ERR(0, 2612, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_6 = __pyx_t_5;
      __pyx_t_5 = 0;
      if (__Pyx_MergeKeywords(__pyx_t_6, __pyx_v_kwds) < 0) __PYX_ERR(0, 2612, __pyx_L1_error)
      __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFCallDataUInt32Parser), __pyx_t_12, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2612, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF_SET(__pyx_v_parser, ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *)__pyx_t_5));
      __pyx_t_5 = 0;
+2613:             elif t == np.dtype('uint64'):
    __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__98, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2613, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2613, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 2613, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (__pyx_t_8) {
/* … */
      goto __pyx_L5;
    }
/* … */
  __pyx_tuple__98 = PyTuple_Pack(1, __pyx_n_s_uint64); if (unlikely(!__pyx_tuple__98)) __PYX_ERR(0, 2613, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__98);
  __Pyx_GIVEREF(__pyx_tuple__98);
+2614:                 parser = VCFCallDataUInt64Parser(key, number=n, fill=fills.get(key, IU64.max), **kwds)
      __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2614, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_INCREF(__pyx_v_key);
      __Pyx_GIVEREF(__pyx_v_key);
      PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_key);
      __pyx_t_12 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2614, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_number, __pyx_v_n) < 0) __PYX_ERR(0, 2614, __pyx_L1_error)
      __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_fills, __pyx_n_s_get); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2614, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_13);
      __pyx_t_16 = __Pyx_GetModuleGlobalName(__pyx_n_s_IU64); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 2614, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_16);
      __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_16, __pyx_n_s_max); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2614, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_15);
      __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
      __pyx_t_16 = NULL;
      __pyx_t_11 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) {
        __pyx_t_16 = PyMethod_GET_SELF(__pyx_t_13);
        if (likely(__pyx_t_16)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
          __Pyx_INCREF(__pyx_t_16);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_13, function);
          __pyx_t_11 = 1;
        }
      }
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_13)) {
        PyObject *__pyx_temp[3] = {__pyx_t_16, __pyx_v_key, __pyx_t_15};
        __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2614, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_13)) {
        PyObject *__pyx_temp[3] = {__pyx_t_16, __pyx_v_key, __pyx_t_15};
        __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2614, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      } else
      #endif
      {
        __pyx_t_14 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2614, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_14);
        if (__pyx_t_16) {
          __Pyx_GIVEREF(__pyx_t_16); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_16); __pyx_t_16 = NULL;
        }
        __Pyx_INCREF(__pyx_v_key);
        __Pyx_GIVEREF(__pyx_v_key);
        PyTuple_SET_ITEM(__pyx_t_14, 0+__pyx_t_11, __pyx_v_key);
        __Pyx_GIVEREF(__pyx_t_15);
        PyTuple_SET_ITEM(__pyx_t_14, 1+__pyx_t_11, __pyx_t_15);
        __pyx_t_15 = 0;
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_14, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2614, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      }
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
      if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_fill, __pyx_t_3) < 0) __PYX_ERR(0, 2614, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_5 = __pyx_t_12;
      __pyx_t_12 = 0;
      if (__Pyx_MergeKeywords(__pyx_t_5, __pyx_v_kwds) < 0) __PYX_ERR(0, 2614, __pyx_L1_error)
      __pyx_t_12 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFCallDataUInt64Parser), __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2614, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF_SET(__pyx_v_parser, ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *)__pyx_t_12));
      __pyx_t_12 = 0;
+2615:             elif t == np.dtype('float32'):
    __pyx_t_12 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__99, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2615, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_12, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2615, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 2615, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (__pyx_t_8) {
/* … */
      goto __pyx_L5;
    }
/* … */
  __pyx_tuple__99 = PyTuple_Pack(1, __pyx_n_s_float32); if (unlikely(!__pyx_tuple__99)) __PYX_ERR(0, 2615, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__99);
  __Pyx_GIVEREF(__pyx_tuple__99);
+2616:                 parser = VCFCallDataFloat32Parser(key, number=n, fill=fills.get(key, NAN), **kwds)
      __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2616, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_INCREF(__pyx_v_key);
      __Pyx_GIVEREF(__pyx_v_key);
      PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_key);
      __pyx_t_6 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2616, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_number, __pyx_v_n) < 0) __PYX_ERR(0, 2616, __pyx_L1_error)
      __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_fills, __pyx_n_s_get); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2616, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_13);
      __pyx_t_14 = PyFloat_FromDouble(__pyx_v_5allel_3opt_11io_vcf_read_NAN); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2616, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_14);
      __pyx_t_15 = NULL;
      __pyx_t_11 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) {
        __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_13);
        if (likely(__pyx_t_15)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
          __Pyx_INCREF(__pyx_t_15);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_13, function);
          __pyx_t_11 = 1;
        }
      }
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_13)) {
        PyObject *__pyx_temp[3] = {__pyx_t_15, __pyx_v_key, __pyx_t_14};
        __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2616, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_13)) {
        PyObject *__pyx_temp[3] = {__pyx_t_15, __pyx_v_key, __pyx_t_14};
        __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2616, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
      } else
      #endif
      {
        __pyx_t_16 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 2616, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_16);
        if (__pyx_t_15) {
          __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_t_15); __pyx_t_15 = NULL;
        }
        __Pyx_INCREF(__pyx_v_key);
        __Pyx_GIVEREF(__pyx_v_key);
        PyTuple_SET_ITEM(__pyx_t_16, 0+__pyx_t_11, __pyx_v_key);
        __Pyx_GIVEREF(__pyx_t_14);
        PyTuple_SET_ITEM(__pyx_t_16, 1+__pyx_t_11, __pyx_t_14);
        __pyx_t_14 = 0;
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_16, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2616, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
      }
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
      if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_fill, __pyx_t_3) < 0) __PYX_ERR(0, 2616, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_12 = __pyx_t_6;
      __pyx_t_6 = 0;
      if (__Pyx_MergeKeywords(__pyx_t_12, __pyx_v_kwds) < 0) __PYX_ERR(0, 2616, __pyx_L1_error)
      __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFCallDataFloat32Parser), __pyx_t_5, __pyx_t_12); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2616, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_XDECREF_SET(__pyx_v_parser, ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *)__pyx_t_6));
      __pyx_t_6 = 0;
+2617:             elif t == np.dtype('float64'):
    __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__100, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2617, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_12 = PyObject_RichCompare(__pyx_v_t, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_12); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2617, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 2617, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    if (__pyx_t_8) {
/* … */
      goto __pyx_L5;
    }
/* … */
  __pyx_tuple__100 = PyTuple_Pack(1, __pyx_n_s_float64); if (unlikely(!__pyx_tuple__100)) __PYX_ERR(0, 2617, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__100);
  __Pyx_GIVEREF(__pyx_tuple__100);
+2618:                 parser = VCFCallDataFloat64Parser(key, number=n, fill=fills.get(key, NAN), **kwds)
      __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2618, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_INCREF(__pyx_v_key);
      __Pyx_GIVEREF(__pyx_v_key);
      PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_v_key);
      __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2618, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_number, __pyx_v_n) < 0) __PYX_ERR(0, 2618, __pyx_L1_error)
      __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_fills, __pyx_n_s_get); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2618, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_13);
      __pyx_t_16 = PyFloat_FromDouble(__pyx_v_5allel_3opt_11io_vcf_read_NAN); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 2618, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_16);
      __pyx_t_14 = NULL;
      __pyx_t_11 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) {
        __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_13);
        if (likely(__pyx_t_14)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
          __Pyx_INCREF(__pyx_t_14);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_13, function);
          __pyx_t_11 = 1;
        }
      }
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_13)) {
        PyObject *__pyx_temp[3] = {__pyx_t_14, __pyx_v_key, __pyx_t_16};
        __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2618, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_13)) {
        PyObject *__pyx_temp[3] = {__pyx_t_14, __pyx_v_key, __pyx_t_16};
        __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_13, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2618, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
      } else
      #endif
      {
        __pyx_t_15 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 2618, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_15);
        if (__pyx_t_14) {
          __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_14); __pyx_t_14 = NULL;
        }
        __Pyx_INCREF(__pyx_v_key);
        __Pyx_GIVEREF(__pyx_v_key);
        PyTuple_SET_ITEM(__pyx_t_15, 0+__pyx_t_11, __pyx_v_key);
        __Pyx_GIVEREF(__pyx_t_16);
        PyTuple_SET_ITEM(__pyx_t_15, 1+__pyx_t_11, __pyx_t_16);
        __pyx_t_16 = 0;
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_15, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2618, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      }
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
      if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_fill, __pyx_t_3) < 0) __PYX_ERR(0, 2618, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_6 = __pyx_t_5;
      __pyx_t_5 = 0;
      if (__Pyx_MergeKeywords(__pyx_t_6, __pyx_v_kwds) < 0) __PYX_ERR(0, 2618, __pyx_L1_error)
      __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFCallDataFloat64Parser), __pyx_t_12, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2618, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF_SET(__pyx_v_parser, ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *)__pyx_t_5));
      __pyx_t_5 = 0;
+2619:             elif t.kind == 'S':
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_t, __pyx_n_s_kind); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2619, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_S, Py_EQ)); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 2619, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (__pyx_t_8) {
/* … */
      goto __pyx_L5;
    }
+2620:                 parser = VCFCallDataStringParser(key, dtype=t, number=n, **kwds)
      __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2620, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_INCREF(__pyx_v_key);
      __Pyx_GIVEREF(__pyx_v_key);
      PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_key);
      __pyx_t_12 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2620, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_dtype, __pyx_v_t) < 0) __PYX_ERR(0, 2620, __pyx_L1_error)
      if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_number, __pyx_v_n) < 0) __PYX_ERR(0, 2620, __pyx_L1_error)
      __pyx_t_6 = __pyx_t_12;
      __pyx_t_12 = 0;
      if (__Pyx_MergeKeywords(__pyx_t_6, __pyx_v_kwds) < 0) __PYX_ERR(0, 2620, __pyx_L1_error)
      __pyx_t_12 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFCallDataStringParser), __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2620, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF_SET(__pyx_v_parser, ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *)__pyx_t_12));
      __pyx_t_12 = 0;
+2621:             elif t.kind == 'O':
    __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_t, __pyx_n_s_kind); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2621, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_8 = (__Pyx_PyString_Equals(__pyx_t_12, __pyx_n_s_O, Py_EQ)); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 2621, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    if (__pyx_t_8) {
/* … */
      goto __pyx_L5;
    }
+2622:                 parser = VCFCallDataObjectParser(key, number=n, **kwds)
      __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2622, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_INCREF(__pyx_v_key);
      __Pyx_GIVEREF(__pyx_v_key);
      PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_v_key);
      __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2622, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_number, __pyx_v_n) < 0) __PYX_ERR(0, 2622, __pyx_L1_error)
      __pyx_t_6 = __pyx_t_5;
      __pyx_t_5 = 0;
      if (__Pyx_MergeKeywords(__pyx_t_6, __pyx_v_kwds) < 0) __PYX_ERR(0, 2622, __pyx_L1_error)
      __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFCallDataObjectParser), __pyx_t_12, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2622, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF_SET(__pyx_v_parser, ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *)__pyx_t_5));
      __pyx_t_5 = 0;
 2623: 
 2624:             else:
+2625:                 parser = VCFCallDataSkipParser(key)
    /*else*/ {
      __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2625, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_INCREF(__pyx_v_key);
      __Pyx_GIVEREF(__pyx_v_key);
      PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_key);
      __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFCallDataSkipParser), __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2625, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF_SET(__pyx_v_parser, ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *)__pyx_t_6));
      __pyx_t_6 = 0;
+2626:                 warnings.warn('type %r not supported for FORMAT field %r, field will be skipped' % (t, key))
      __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_warnings); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2626, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_warn); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2626, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2626, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_INCREF(__pyx_v_t);
      __Pyx_GIVEREF(__pyx_v_t);
      PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_t);
      __Pyx_INCREF(__pyx_v_key);
      __Pyx_GIVEREF(__pyx_v_key);
      PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_key);
      __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_type_r_not_supported_for_FORMAT, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2626, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = NULL;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_12))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_12);
        if (likely(__pyx_t_5)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_12, function);
        }
      }
      if (!__pyx_t_5) {
        __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2626, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_GOTREF(__pyx_t_6);
      } else {
        #if CYTHON_FAST_PYCALL
        if (PyFunction_Check(__pyx_t_12)) {
          PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3};
          __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_12, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2626, __pyx_L1_error)
          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        } else
        #endif
        #if CYTHON_FAST_PYCCALL
        if (__Pyx_PyFastCFunction_Check(__pyx_t_12)) {
          PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3};
          __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_12, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2626, __pyx_L1_error)
          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        } else
        #endif
        {
          __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2626, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_13);
          __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_5); __pyx_t_5 = NULL;
          __Pyx_GIVEREF(__pyx_t_3);
          PyTuple_SET_ITEM(__pyx_t_13, 0+1, __pyx_t_3);
          __pyx_t_3 = 0;
          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_13, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2626, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        }
      }
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __pyx_L5:;
 2627: 
+2628:             parsers.append(parser)
    __pyx_t_7 = __Pyx_PyList_Append(__pyx_v_parsers, ((PyObject *)__pyx_v_parser)); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 2628, __pyx_L1_error)
+2629:         self.parsers = tuple(parsers)
  __pyx_t_4 = PyList_AsTuple(__pyx_v_parsers); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2629, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_4);
  __Pyx_GOTREF(__pyx_v_self->parsers);
  __Pyx_DECREF(__pyx_v_self->parsers);
  __pyx_v_self->parsers = ((PyObject*)__pyx_t_4);
  __pyx_t_4 = 0;
 2630: 
 2631:         # store pointers to parsers
+2632:         self.parsers_cptr = <PyObject**> malloc(sizeof(PyObject*) * self.n_formats)
  __pyx_v_self->parsers_cptr = ((PyObject **)malloc(((sizeof(PyObject *)) * __pyx_v_self->n_formats)));
+2633:         for i in range(self.n_formats):
  __pyx_t_1 = __pyx_v_self->n_formats;
  for (__pyx_t_17 = 0; __pyx_t_17 < __pyx_t_1; __pyx_t_17+=1) {
    __pyx_v_i = __pyx_t_17;
+2634:             self.parsers_cptr[i] = <PyObject*> self.parsers[i]
    if (unlikely(__pyx_v_self->parsers == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(0, 2634, __pyx_L1_error)
    }
    (__pyx_v_self->parsers_cptr[__pyx_v_i]) = ((PyObject *)PyTuple_GET_ITEM(__pyx_v_self->parsers, __pyx_v_i));
  }
 2635: 
+2636:     def __init__(self, format_keys, types, numbers, chunk_length, loc_samples, fills):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_17VCFCallDataParser_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_17VCFCallDataParser_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED PyObject *__pyx_v_format_keys = 0;
  CYTHON_UNUSED PyObject *__pyx_v_types = 0;
  CYTHON_UNUSED PyObject *__pyx_v_numbers = 0;
  PyObject *__pyx_v_chunk_length = 0;
  CYTHON_UNUSED PyObject *__pyx_v_loc_samples = 0;
  CYTHON_UNUSED PyObject *__pyx_v_fills = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_format_keys,&__pyx_n_s_types,&__pyx_n_s_numbers,&__pyx_n_s_chunk_length,&__pyx_n_s_loc_samples,&__pyx_n_s_fills,0};
    PyObject* values[6] = {0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_format_keys)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_types)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 6, 6, 1); __PYX_ERR(0, 2636, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_numbers)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 6, 6, 2); __PYX_ERR(0, 2636, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_chunk_length)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 6, 6, 3); __PYX_ERR(0, 2636, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_loc_samples)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 6, 6, 4); __PYX_ERR(0, 2636, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fills)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 6, 6, 5); __PYX_ERR(0, 2636, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 2636, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
    }
    __pyx_v_format_keys = values[0];
    __pyx_v_types = values[1];
    __pyx_v_numbers = values[2];
    __pyx_v_chunk_length = values[3];
    __pyx_v_loc_samples = values[4];
    __pyx_v_fills = values[5];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2636, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFCallDataParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_17VCFCallDataParser_2__init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParser *)__pyx_v_self), __pyx_v_format_keys, __pyx_v_types, __pyx_v_numbers, __pyx_v_chunk_length, __pyx_v_loc_samples, __pyx_v_fills);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_17VCFCallDataParser_2__init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParser *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_format_keys, CYTHON_UNUSED PyObject *__pyx_v_types, CYTHON_UNUSED PyObject *__pyx_v_numbers, PyObject *__pyx_v_chunk_length, CYTHON_UNUSED PyObject *__pyx_v_loc_samples, CYTHON_UNUSED PyObject *__pyx_v_fills) {
  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_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFCallDataParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2637:         super(VCFCallDataParser, self).__init__(chunk_length=chunk_length)
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2637, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFCallDataParser));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFCallDataParser));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFCallDataParser));
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self));
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2637, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2637, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2637, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_chunk_length, __pyx_v_chunk_length) < 0) __PYX_ERR(0, 2637, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2637, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 2638: 
+2639:     def __dealloc__(self):
/* Python wrapper */
static void __pyx_pw_5allel_3opt_11io_vcf_read_17VCFCallDataParser_5__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_5allel_3opt_11io_vcf_read_17VCFCallDataParser_5__dealloc__(PyObject *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_pf_5allel_3opt_11io_vcf_read_17VCFCallDataParser_4__dealloc__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParser *)__pyx_v_self));

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

static void __pyx_pf_5allel_3opt_11io_vcf_read_17VCFCallDataParser_4__dealloc__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParser *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__", 0);
/* … */
  /* function exit code */
  __Pyx_RefNannyFinishContext();
}
+2640:         if self.parsers_cptr is not NULL:
  __pyx_t_1 = ((__pyx_v_self->parsers_cptr != NULL) != 0);
  if (__pyx_t_1) {
/* … */
  }
+2641:             free(self.parsers_cptr)
    free(__pyx_v_self->parsers_cptr);
 2642: 
+2643:     cdef int parse(self, InputStreamBase stream, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_17VCFCallDataParser_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  PyObject *__pyx_v_parser;
  int __pyx_v_format_index;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFCallDataParser.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 2644:         cdef:
 2645:             PyObject* parser
 2646: 
 2647:         # initialise context
+2648:         context.sample_index = 0
  __pyx_v_context->sample_index = 0;
+2649:         context.sample_output_index = -1
  __pyx_v_context->sample_output_index = -1L;
+2650:         context.sample_field_index = 0
  __pyx_v_context->sample_field_index = 0;
 2651: 
 2652:         # setup output indexing
+2653:         if self.loc_samples[0]:
  __pyx_t_1 = 0;
  __pyx_t_2 = ((*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_self->loc_samples.data + __pyx_t_1 * __pyx_v_self->loc_samples.strides[0]) ))) != 0);
  if (__pyx_t_2) {
/* … */
    goto __pyx_L3;
  }
+2654:             context.sample_output_index += 1
    __pyx_v_context->sample_output_index = (__pyx_v_context->sample_output_index + 1);
 2655:         else:
 2656:             # skip to next sample
+2657:             while stream.c != 0 and stream.c != LF and stream.c != CR and stream.c != TAB:
  /*else*/ {
    while (1) {
      __pyx_t_3 = ((__pyx_v_stream->c != 0) != 0);
      if (__pyx_t_3) {
      } else {
        __pyx_t_2 = __pyx_t_3;
        goto __pyx_L6_bool_binop_done;
      }
      __pyx_t_3 = ((__pyx_v_stream->c != __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
      if (__pyx_t_3) {
      } else {
        __pyx_t_2 = __pyx_t_3;
        goto __pyx_L6_bool_binop_done;
      }
      __pyx_t_3 = ((__pyx_v_stream->c != __pyx_v_5allel_3opt_11io_vcf_read_CR) != 0);
      if (__pyx_t_3) {
      } else {
        __pyx_t_2 = __pyx_t_3;
        goto __pyx_L6_bool_binop_done;
      }
      __pyx_t_3 = ((__pyx_v_stream->c != __pyx_v_5allel_3opt_11io_vcf_read_TAB) != 0);
      __pyx_t_2 = __pyx_t_3;
      __pyx_L6_bool_binop_done:;
      if (!__pyx_t_2) break;
+2658:                 stream.advance()
      __pyx_t_4 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 2658, __pyx_L1_error)
    }
  }
  __pyx_L3:;
 2659: 
+2660:         while True:
  while (1) {
 2661: 
+2662:             if context.sample_index >= self.n_samples:
    __pyx_t_2 = ((__pyx_v_context->sample_index >= __pyx_v_self->n_samples) != 0);
    if (__pyx_t_2) {
/* … */
    }
 2663:                 # with gil:
+2664:                 warn('more samples than given in header', context)
      __pyx_t_4 = __pyx_f_5allel_3opt_11io_vcf_read_warn(__pyx_kp_s_more_samples_than_given_in_heade, __pyx_v_context); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 2664, __pyx_L1_error)
+2665:                 while stream.c != 0 and stream.c != LF and stream.c != CR:
      while (1) {
        __pyx_t_3 = ((__pyx_v_stream->c != 0) != 0);
        if (__pyx_t_3) {
        } else {
          __pyx_t_2 = __pyx_t_3;
          goto __pyx_L15_bool_binop_done;
        }
        __pyx_t_3 = ((__pyx_v_stream->c != __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
        if (__pyx_t_3) {
        } else {
          __pyx_t_2 = __pyx_t_3;
          goto __pyx_L15_bool_binop_done;
        }
        __pyx_t_3 = ((__pyx_v_stream->c != __pyx_v_5allel_3opt_11io_vcf_read_CR) != 0);
        __pyx_t_2 = __pyx_t_3;
        __pyx_L15_bool_binop_done:;
        if (!__pyx_t_2) break;
+2666:                     stream.advance()
        __pyx_t_4 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 2666, __pyx_L1_error)
      }
 2667: 
+2668:             if stream.c == 0:
    __pyx_t_2 = ((__pyx_v_stream->c == 0) != 0);
    if (__pyx_t_2) {
/* … */
    }
+2669:                 context.state = VCFState.EOF
      __pyx_v_context->state = __pyx_e_5allel_3opt_11io_vcf_read_EOF;
+2670:                 break
      goto __pyx_L11_break;
 2671: 
+2672:             elif stream.c == LF or stream.c == CR:
    __pyx_t_3 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_2 = __pyx_t_3;
      goto __pyx_L19_bool_binop_done;
    }
    __pyx_t_3 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_CR) != 0);
    __pyx_t_2 = __pyx_t_3;
    __pyx_L19_bool_binop_done:;
    if (__pyx_t_2) {
/* … */
    }
+2673:                 context.state = VCFState.EOL
      __pyx_v_context->state = __pyx_e_5allel_3opt_11io_vcf_read_EOL;
+2674:                 break
      goto __pyx_L11_break;
 2675: 
+2676:             elif stream.c == TAB:
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_TAB) != 0);
    if (__pyx_t_2) {
/* … */
      goto __pyx_L18;
    }
+2677:                 stream.advance()
      __pyx_t_4 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 2677, __pyx_L1_error)
+2678:                 context.sample_index += 1
      __pyx_v_context->sample_index = (__pyx_v_context->sample_index + 1);
+2679:                 context.sample_field_index = 0
      __pyx_v_context->sample_field_index = 0;
+2680:                 if self.loc_samples[context.sample_index]:
      __pyx_t_5 = __pyx_v_context->sample_index;
      __pyx_t_2 = ((*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_self->loc_samples.data + __pyx_t_5 * __pyx_v_self->loc_samples.strides[0]) ))) != 0);
      if (__pyx_t_2) {
/* … */
        goto __pyx_L21;
      }
+2681:                     context.sample_output_index += 1
        __pyx_v_context->sample_output_index = (__pyx_v_context->sample_output_index + 1);
 2682:                 else:
 2683:                     # skip to next sample
+2684:                     while stream.c != 0 and stream.c != LF and stream.c != CR and stream.c != TAB:
      /*else*/ {
        while (1) {
          __pyx_t_3 = ((__pyx_v_stream->c != 0) != 0);
          if (__pyx_t_3) {
          } else {
            __pyx_t_2 = __pyx_t_3;
            goto __pyx_L24_bool_binop_done;
          }
          __pyx_t_3 = ((__pyx_v_stream->c != __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
          if (__pyx_t_3) {
          } else {
            __pyx_t_2 = __pyx_t_3;
            goto __pyx_L24_bool_binop_done;
          }
          __pyx_t_3 = ((__pyx_v_stream->c != __pyx_v_5allel_3opt_11io_vcf_read_CR) != 0);
          if (__pyx_t_3) {
          } else {
            __pyx_t_2 = __pyx_t_3;
            goto __pyx_L24_bool_binop_done;
          }
          __pyx_t_3 = ((__pyx_v_stream->c != __pyx_v_5allel_3opt_11io_vcf_read_TAB) != 0);
          __pyx_t_2 = __pyx_t_3;
          __pyx_L24_bool_binop_done:;
          if (!__pyx_t_2) break;
+2685:                         stream.advance()
          __pyx_t_4 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 2685, __pyx_L1_error)
        }
      }
      __pyx_L21:;
 2686: 
+2687:             elif stream.c == COLON:
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_COLON) != 0);
    if (__pyx_t_2) {
/* … */
      goto __pyx_L18;
    }
+2688:                 context.sample_field_index += 1
      __pyx_v_context->sample_field_index = (__pyx_v_context->sample_field_index + 1);
+2689:                 stream.advance()
      __pyx_t_4 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 2689, __pyx_L1_error)
 2690: 
+2691:             elif context.sample_field_index >= context.variant_format_indices.size:
    __pyx_t_2 = ((__pyx_v_context->sample_field_index >= __pyx_v_context->variant_format_indices.size) != 0);
    if (__pyx_t_2) {
/* … */
      goto __pyx_L18;
    }
 2692:                 # more sample fields than formats declared for this variant
+2693:                 self.skip_parser.parse(stream, context)
      __pyx_t_4 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *)__pyx_v_self->skip_parser->__pyx_vtab)->parse(__pyx_v_self->skip_parser, __pyx_v_stream, __pyx_v_context); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 2693, __pyx_L1_error)
 2694: 
 2695:             else:
 2696: 
 2697:                 # lookup format
+2698:                 format_index = context.variant_format_indices.data[context.sample_field_index]
    /*else*/ {
      __pyx_v_format_index = (__pyx_v_context->variant_format_indices.data[__pyx_v_context->sample_field_index]);
 2699: 
 2700:                 # find parser
+2701:                 if format_index >= 0:
      __pyx_t_2 = ((__pyx_v_format_index >= 0) != 0);
      if (__pyx_t_2) {
/* … */
        goto __pyx_L28;
      }
+2702:                     parser = self.parsers_cptr[format_index]
        __pyx_v_parser = (__pyx_v_self->parsers_cptr[__pyx_v_format_index]);
 2703:                     # jump through some hoops to avoid references (which need the GIL)
+2704:                     (<VCFCallDataParserBase>parser).parse(stream, context)
        __pyx_t_4 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *)((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *)__pyx_v_parser)->__pyx_vtab)->parse(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *)__pyx_v_parser), __pyx_v_stream, __pyx_v_context); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 2704, __pyx_L1_error)
 2705: 
 2706:                 else:
+2707:                     self.skip_parser.parse(stream, context)
      /*else*/ {
        __pyx_t_4 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *)__pyx_v_self->skip_parser->__pyx_vtab)->parse(__pyx_v_self->skip_parser, __pyx_v_stream, __pyx_v_context); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 2707, __pyx_L1_error)
      }
      __pyx_L28:;
    }
    __pyx_L18:;
  }
  __pyx_L11_break:;
 2708: 
+2709:     cdef int malloc_chunk(self) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_17VCFCallDataParser_malloc_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParser *__pyx_v_self) {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *__pyx_v_parser = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("malloc_chunk", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFCallDataParser.malloc_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_parser);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 2710:         cdef VCFCallDataParserBase parser
+2711:         for parser in self.parsers:
  if (unlikely(__pyx_v_self->parsers == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(0, 2711, __pyx_L1_error)
  }
  __pyx_t_1 = __pyx_v_self->parsers; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
  for (;;) {
    if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 2711, __pyx_L1_error)
    #else
    __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2711, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    #endif
    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5allel_3opt_11io_vcf_read_VCFCallDataParserBase))))) __PYX_ERR(0, 2711, __pyx_L1_error)
    __Pyx_XDECREF_SET(__pyx_v_parser, ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *)__pyx_t_3));
    __pyx_t_3 = 0;
/* … */
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2712:             parser.malloc_chunk()
    __pyx_t_4 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *)__pyx_v_parser->__pyx_vtab)->malloc_chunk(__pyx_v_parser); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 2712, __pyx_L1_error)
 2713: 
+2714:     cdef int make_chunk(self, chunk, limit=None) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_17VCFCallDataParser_make_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParser *__pyx_v_self, PyObject *__pyx_v_chunk, struct __pyx_opt_args_5allel_3opt_11io_vcf_read_17VCFCallDataParser_make_chunk *__pyx_optional_args) {
  PyObject *__pyx_v_limit = ((PyObject *)Py_None);
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *__pyx_v_parser = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("make_chunk", 0);
  if (__pyx_optional_args) {
    if (__pyx_optional_args->__pyx_n > 0) {
      __pyx_v_limit = __pyx_optional_args->limit;
    }
  }
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFCallDataParser.make_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_parser);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
struct __pyx_opt_args_5allel_3opt_11io_vcf_read_17VCFCallDataParser_make_chunk {
  int __pyx_n;
  PyObject *limit;
};
 2715:         cdef VCFCallDataParserBase parser
+2716:         for parser in self.parsers:
  if (unlikely(__pyx_v_self->parsers == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(0, 2716, __pyx_L1_error)
  }
  __pyx_t_1 = __pyx_v_self->parsers; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
  for (;;) {
    if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 2716, __pyx_L1_error)
    #else
    __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2716, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    #endif
    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5allel_3opt_11io_vcf_read_VCFCallDataParserBase))))) __PYX_ERR(0, 2716, __pyx_L1_error)
    __Pyx_XDECREF_SET(__pyx_v_parser, ((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *)__pyx_t_3));
    __pyx_t_3 = 0;
/* … */
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2717:             parser.make_chunk(chunk, limit=limit)
    __pyx_t_5.__pyx_n = 1;
    __pyx_t_5.limit = __pyx_v_limit;
    __pyx_t_4 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *)__pyx_v_parser->__pyx_vtab)->make_chunk(__pyx_v_parser, __pyx_v_chunk, &__pyx_t_5); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 2717, __pyx_L1_error)
 2718: 
 2719: 
+2720: cdef class VCFCallDataParserBase:
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase {
  PyObject_HEAD
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *__pyx_vtab;
  PyObject *key;
  PyArray_Descr *dtype;
  Py_ssize_t itemsize;
  Py_ssize_t number;
  PyObject *fill;
  PyArrayObject *values;
  Py_ssize_t chunk_length;
  Py_ssize_t n_samples_out;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataParserBase {
  int (*malloc_chunk)(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *);
  int (*make_chunk)(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *, PyObject *, struct __pyx_opt_args_5allel_3opt_11io_vcf_read_21VCFCallDataParserBase_make_chunk *__pyx_optional_args);
  int (*parse)(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *);
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFCallDataParserBase;

 2721: 
 2722:     cdef:
 2723:         bytes key
 2724:         np.dtype dtype
 2725:         Py_ssize_t itemsize
 2726:         Py_ssize_t number
 2727:         object fill
 2728:         np.ndarray values
 2729:         Py_ssize_t chunk_length
 2730:         Py_ssize_t n_samples_out
 2731: 
+2732:     def __init__(self, key=None, dtype=None, number=1, fill=0, chunk_length=0,
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_21VCFCallDataParserBase_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_21VCFCallDataParserBase_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_key = 0;
  PyObject *__pyx_v_dtype = 0;
  PyObject *__pyx_v_number = 0;
  PyObject *__pyx_v_fill = 0;
  PyObject *__pyx_v_chunk_length = 0;
  PyObject *__pyx_v_n_samples_out = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_key,&__pyx_n_s_dtype,&__pyx_n_s_number,&__pyx_n_s_fill,&__pyx_n_s_chunk_length,&__pyx_n_s_n_samples_out,0};
    PyObject* values[6] = {0,0,0,0,0,0};
    values[0] = ((PyObject *)Py_None);
    values[1] = ((PyObject *)Py_None);
    values[2] = ((PyObject *)__pyx_int_1);
    values[3] = ((PyObject *)__pyx_int_0);
    values[4] = ((PyObject *)__pyx_int_0);
    values[5] = ((PyObject *)__pyx_int_0);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_key);
          if (value) { values[0] = value; kw_args--; }
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dtype);
          if (value) { values[1] = value; kw_args--; }
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_number);
          if (value) { values[2] = value; kw_args--; }
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fill);
          if (value) { values[3] = value; kw_args--; }
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_chunk_length);
          if (value) { values[4] = value; kw_args--; }
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_n_samples_out);
          if (value) { values[5] = 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, 2732, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_key = values[0];
    __pyx_v_dtype = values[1];
    __pyx_v_number = values[2];
    __pyx_v_fill = values[3];
    __pyx_v_chunk_length = values[4];
    __pyx_v_n_samples_out = values[5];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2732, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFCallDataParserBase.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_21VCFCallDataParserBase___init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *)__pyx_v_self), __pyx_v_key, __pyx_v_dtype, __pyx_v_number, __pyx_v_fill, __pyx_v_chunk_length, __pyx_v_n_samples_out);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_21VCFCallDataParserBase___init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_dtype, PyObject *__pyx_v_number, PyObject *__pyx_v_fill, PyObject *__pyx_v_chunk_length, PyObject *__pyx_v_n_samples_out) {
  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_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFCallDataParserBase.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 2733:                  n_samples_out=0):
+2734:         self.key = key
  if (!(likely(PyBytes_CheckExact(__pyx_v_key))||((__pyx_v_key) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_key)->tp_name), 0))) __PYX_ERR(0, 2734, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_key;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->key);
  __Pyx_DECREF(__pyx_v_self->key);
  __pyx_v_self->key = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
+2735:         if dtype is not None:
  __pyx_t_2 = (__pyx_v_dtype != Py_None);
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (__pyx_t_3) {
/* … */
    goto __pyx_L3;
  }
+2736:             self.dtype = np.dtype(dtype)
    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2736, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v_dtype);
    __Pyx_GIVEREF(__pyx_v_dtype);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_dtype);
    __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2736, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_GIVEREF(__pyx_t_4);
    __Pyx_GOTREF(__pyx_v_self->dtype);
    __Pyx_DECREF(((PyObject *)__pyx_v_self->dtype));
    __pyx_v_self->dtype = ((PyArray_Descr *)__pyx_t_4);
    __pyx_t_4 = 0;
+2737:             self.itemsize = self.dtype.itemsize
    __pyx_t_5 = __pyx_v_self->dtype->elsize;
    __pyx_v_self->itemsize = __pyx_t_5;
 2738:         else:
+2739:             self.dtype = dtype
  /*else*/ {
    if (!(likely(((__pyx_v_dtype) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_dtype, __pyx_ptype_5numpy_dtype))))) __PYX_ERR(0, 2739, __pyx_L1_error)
    __pyx_t_4 = __pyx_v_dtype;
    __Pyx_INCREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __Pyx_GOTREF(__pyx_v_self->dtype);
    __Pyx_DECREF(((PyObject *)__pyx_v_self->dtype));
    __pyx_v_self->dtype = ((PyArray_Descr *)__pyx_t_4);
    __pyx_t_4 = 0;
+2740:             self.itemsize = 0
    __pyx_v_self->itemsize = 0;
  }
  __pyx_L3:;
+2741:         self.number = number
  __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_v_number); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2741, __pyx_L1_error)
  __pyx_v_self->number = __pyx_t_6;
+2742:         self.fill = fill
  __Pyx_INCREF(__pyx_v_fill);
  __Pyx_GIVEREF(__pyx_v_fill);
  __Pyx_GOTREF(__pyx_v_self->fill);
  __Pyx_DECREF(__pyx_v_self->fill);
  __pyx_v_self->fill = __pyx_v_fill;
+2743:         self.chunk_length = chunk_length
  __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_v_chunk_length); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2743, __pyx_L1_error)
  __pyx_v_self->chunk_length = __pyx_t_6;
+2744:         self.n_samples_out = n_samples_out
  __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_v_n_samples_out); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2744, __pyx_L1_error)
  __pyx_v_self->n_samples_out = __pyx_t_6;
 2745: 
+2746:     cdef int malloc_chunk(self) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_21VCFCallDataParserBase_malloc_chunk(CYTHON_UNUSED struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("malloc_chunk", 0);

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 2747:         pass
 2748: 
+2749:     cdef int make_chunk(self, chunk, limit=None) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_21VCFCallDataParserBase_make_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *__pyx_v_self, PyObject *__pyx_v_chunk, struct __pyx_opt_args_5allel_3opt_11io_vcf_read_21VCFCallDataParserBase_make_chunk *__pyx_optional_args) {
  PyObject *__pyx_v_limit = ((PyObject *)Py_None);
  PyObject *__pyx_v_field = NULL;
  PyObject *__pyx_v_values = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("make_chunk", 0);
  if (__pyx_optional_args) {
    if (__pyx_optional_args->__pyx_n > 0) {
      __pyx_v_limit = __pyx_optional_args->limit;
    }
  }
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFCallDataParserBase.make_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_field);
  __Pyx_XDECREF(__pyx_v_values);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
struct __pyx_opt_args_5allel_3opt_11io_vcf_read_21VCFCallDataParserBase_make_chunk {
  int __pyx_n;
  PyObject *limit;
};
+2750:         field = u'calldata/' + text_type(self.key, 'utf8')
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_text_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2750, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_self->key, __pyx_n_s_utf8};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2750, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_self->key, __pyx_n_s_utf8};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2750, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else
  #endif
  {
    __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2750, __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_self->key);
    __Pyx_GIVEREF(__pyx_v_self->key);
    PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_self->key);
    __Pyx_INCREF(__pyx_n_s_utf8);
    __Pyx_GIVEREF(__pyx_n_s_utf8);
    PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_n_s_utf8);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2750, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyNumber_Add(__pyx_kp_u_calldata_2, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2750, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_field = __pyx_t_2;
  __pyx_t_2 = 0;
+2751:         values = self.values[:limit]
  __pyx_t_2 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_v_self->values), 0, 0, NULL, &__pyx_v_limit, NULL, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2751, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_values = __pyx_t_2;
  __pyx_t_2 = 0;
+2752:         if self.number == 1:
  __pyx_t_6 = ((__pyx_v_self->number == 1) != 0);
  if (__pyx_t_6) {
/* … */
  }
+2753:             values = values.squeeze(axis=2)
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_values, __pyx_n_s_squeeze); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2753, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2753, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_axis, __pyx_int_2) < 0) __PYX_ERR(0, 2753, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2753, __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_DECREF_SET(__pyx_v_values, __pyx_t_5);
    __pyx_t_5 = 0;
+2754:         chunk[field] = values
  if (unlikely(PyObject_SetItem(__pyx_v_chunk, __pyx_v_field, __pyx_v_values) < 0)) __PYX_ERR(0, 2754, __pyx_L1_error)
 2755: 
+2756:     cdef int parse(self, InputStreamBase stream, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_21VCFCallDataParserBase_parse(CYTHON_UNUSED struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase *__pyx_v_self, CYTHON_UNUSED struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, CYTHON_UNUSED struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 2757:         pass
 2758: 
 2759: 
+2760: cdef class VCFCallDataSkipParser(VCFCallDataParserBase):
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataSkipParser {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase __pyx_base;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataSkipParser {
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataParserBase __pyx_base;
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataSkipParser *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFCallDataSkipParser;

 2761: 
+2762:     def __init__(self, key, *args, **kwargs):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_21VCFCallDataSkipParser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_21VCFCallDataSkipParser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_key = 0;
  CYTHON_UNUSED PyObject *__pyx_v_args = 0;
  CYTHON_UNUSED PyObject *__pyx_v_kwargs = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  __pyx_v_kwargs = PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return -1;
  __Pyx_GOTREF(__pyx_v_kwargs);
  if (PyTuple_GET_SIZE(__pyx_args) > 1) {
    __pyx_v_args = PyTuple_GetSlice(__pyx_args, 1, PyTuple_GET_SIZE(__pyx_args));
    if (unlikely(!__pyx_v_args)) {
      __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
      __Pyx_RefNannyFinishContext();
      return -1;
    }
    __Pyx_GOTREF(__pyx_v_args);
  } else {
    __pyx_v_args = __pyx_empty_tuple; __Pyx_INCREF(__pyx_empty_tuple);
  }
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_key,0};
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        default:
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_key)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t used_pos_args = (pos_args < 1) ? pos_args : 1;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_kwargs, values, used_pos_args, "__init__") < 0)) __PYX_ERR(0, 2762, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) < 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_key = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2762, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_DECREF(__pyx_v_args); __pyx_v_args = 0;
  __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFCallDataSkipParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_21VCFCallDataSkipParser___init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataSkipParser *)__pyx_v_self), __pyx_v_key, __pyx_v_args, __pyx_v_kwargs);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_21VCFCallDataSkipParser___init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataSkipParser *__pyx_v_self, PyObject *__pyx_v_key, CYTHON_UNUSED PyObject *__pyx_v_args, CYTHON_UNUSED PyObject *__pyx_v_kwargs) {
  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_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFCallDataSkipParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2763:         super(VCFCallDataSkipParser, self).__init__(key=key)
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2763, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFCallDataSkipParser));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFCallDataSkipParser));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFCallDataSkipParser));
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self));
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2763, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2763, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2763, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_key, __pyx_v_key) < 0) __PYX_ERR(0, 2763, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2763, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 2764: 
+2765:     cdef int parse(self, InputStreamBase stream, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_21VCFCallDataSkipParser_parse(CYTHON_UNUSED struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataSkipParser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, CYTHON_UNUSED struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFCallDataSkipParser.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2766:         while stream.c != COLON and \
  while (1) {
    __pyx_t_2 = ((__pyx_v_stream->c != __pyx_v_5allel_3opt_11io_vcf_read_COLON) != 0);
    if (__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L5_bool_binop_done;
    }
+2767:                 stream.c != TAB and \
    __pyx_t_2 = ((__pyx_v_stream->c != __pyx_v_5allel_3opt_11io_vcf_read_TAB) != 0);
    if (__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L5_bool_binop_done;
    }
+2768:                 stream.c != CR and \
    __pyx_t_2 = ((__pyx_v_stream->c != __pyx_v_5allel_3opt_11io_vcf_read_CR) != 0);
    if (__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L5_bool_binop_done;
    }
+2769:                 stream.c != LF and \
    __pyx_t_2 = ((__pyx_v_stream->c != __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
    if (__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L5_bool_binop_done;
    }
+2770:                 stream.c != 0:
    __pyx_t_2 = ((__pyx_v_stream->c != 0) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L5_bool_binop_done:;
    if (!__pyx_t_1) break;
+2771:             stream.advance()
    __pyx_t_3 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2771, __pyx_L1_error)
  }
 2772: 
+2773:     cdef int make_chunk(self, chunk, limit=None) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_21VCFCallDataSkipParser_make_chunk(CYTHON_UNUSED struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataSkipParser *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_chunk, struct __pyx_opt_args_5allel_3opt_11io_vcf_read_21VCFCallDataSkipParser_make_chunk *__pyx_optional_args) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("make_chunk", 0);
  if (__pyx_optional_args) {
  }

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
struct __pyx_opt_args_5allel_3opt_11io_vcf_read_21VCFCallDataSkipParser_make_chunk {
  int __pyx_n;
  PyObject *limit;
};
 2774:         pass
 2775: 
 2776: 
+2777: cdef class VCFGenotypeInt8Parser(VCFCallDataParserBase):
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeInt8Parser {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase __pyx_base;
  __Pyx_memviewslice memory;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFGenotypeInt8Parser {
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataParserBase __pyx_base;
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFGenotypeInt8Parser *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFGenotypeInt8Parser;

 2778: 
 2779:     cdef:
 2780:         np.int8_t[:, :, :] memory
 2781: 
+2782:     def __init__(self, *args, **kwargs):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_21VCFGenotypeInt8Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_21VCFGenotypeInt8Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 1))) return -1;
  __pyx_v_kwargs = (__pyx_kwds) ? PyDict_Copy(__pyx_kwds) : PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return -1;
  __Pyx_GOTREF(__pyx_v_kwargs);
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_21VCFGenotypeInt8Parser___init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeInt8Parser *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_21VCFGenotypeInt8Parser___init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeInt8Parser *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
  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_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFGenotypeInt8Parser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2783:         kwargs['dtype'] = 'int8'
  if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_s_dtype, __pyx_n_s_int8) < 0)) __PYX_ERR(0, 2783, __pyx_L1_error)
+2784:         kwargs.setdefault('fill', -1)
  __pyx_t_1 = __Pyx_PyDict_SetDefault(__pyx_v_kwargs, __pyx_n_s_fill, __pyx_int_neg_1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2784, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2785:         super(VCFGenotypeInt8Parser, self).__init__(*args, **kwargs)
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2785, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeInt8Parser));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeInt8Parser));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeInt8Parser));
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self));
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2785, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2785, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_v_args, __pyx_v_kwargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2785, __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;
 2786: 
+2787:     cdef int parse(self, InputStreamBase stream, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_21VCFGenotypeInt8Parser_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeInt8Parser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFGenotypeInt8Parser.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2788:         vcf_genotype_parse(stream, context, self.memory)
  __pyx_t_1 = __pyx_fuse_0__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_parse(__pyx_v_stream, __pyx_v_context, __pyx_v_self->memory); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2788, __pyx_L1_error)
 2789: 
+2790:     cdef int malloc_chunk(self) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_21VCFGenotypeInt8Parser_malloc_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeInt8Parser *__pyx_v_self) {
  PyObject *__pyx_v_shape = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("malloc_chunk", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFGenotypeInt8Parser.malloc_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_shape);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2791:         shape = (self.chunk_length, self.n_samples_out, self.number)
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.chunk_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2791, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.n_samples_out); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2791, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.number); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2791, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2791, __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_2);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_v_shape = __pyx_t_4;
  __pyx_t_4 = 0;
+2792:         self.values = np.empty(shape, dtype=self.dtype)
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2792, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2792, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2792, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_v_shape);
  __Pyx_GIVEREF(__pyx_v_shape);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_shape);
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2792, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->__pyx_base.dtype)) < 0) __PYX_ERR(0, 2792, __pyx_L1_error)
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2792, __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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2792, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.values);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.values));
  __pyx_v_self->__pyx_base.values = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+2793:         self.memory = self.values
  __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsdsds_nn___pyx_t_5numpy_int8_t(((PyObject *)__pyx_v_self->__pyx_base.values));
  if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 2793, __pyx_L1_error)
  __PYX_XDEC_MEMVIEW(&__pyx_v_self->memory, 0);
  __pyx_v_self->memory = __pyx_t_5;
  __pyx_t_5.memview = NULL;
  __pyx_t_5.data = NULL;
+2794:         self.memory[:] = self.fill
  __pyx_t_6 = __Pyx_PyInt_As_npy_int8(__pyx_v_self->__pyx_base.fill); if (unlikely((__pyx_t_6 == ((npy_int8)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2794, __pyx_L1_error)
  {
      __pyx_t_5numpy_int8_t __pyx_temp_scalar = __pyx_t_6;
      {
          Py_ssize_t __pyx_temp_extent_0 = __pyx_v_self->memory.shape[0];
          Py_ssize_t __pyx_temp_stride_0 = __pyx_v_self->memory.strides[0];
          char *__pyx_temp_pointer_0;
          Py_ssize_t __pyx_temp_idx_0;
          Py_ssize_t __pyx_temp_extent_1 = __pyx_v_self->memory.shape[1];
          Py_ssize_t __pyx_temp_stride_1 = __pyx_v_self->memory.strides[1];
          char *__pyx_temp_pointer_1;
          Py_ssize_t __pyx_temp_idx_1;
          Py_ssize_t __pyx_temp_extent_2 = __pyx_v_self->memory.shape[2];
          Py_ssize_t __pyx_temp_stride_2 = __pyx_v_self->memory.strides[2];
          char *__pyx_temp_pointer_2;
          Py_ssize_t __pyx_temp_idx_2;
          __pyx_temp_pointer_0 = __pyx_v_self->memory.data;
          for (__pyx_temp_idx_0 = 0; __pyx_temp_idx_0 < __pyx_temp_extent_0; __pyx_temp_idx_0++) {
            __pyx_temp_pointer_1 = __pyx_temp_pointer_0;
            for (__pyx_temp_idx_1 = 0; __pyx_temp_idx_1 < __pyx_temp_extent_1; __pyx_temp_idx_1++) {
              __pyx_temp_pointer_2 = __pyx_temp_pointer_1;
              for (__pyx_temp_idx_2 = 0; __pyx_temp_idx_2 < __pyx_temp_extent_2; __pyx_temp_idx_2++) {
                *((__pyx_t_5numpy_int8_t *) __pyx_temp_pointer_2) = __pyx_temp_scalar;
                __pyx_temp_pointer_2 += __pyx_temp_stride_2;
              }
              __pyx_temp_pointer_1 += __pyx_temp_stride_1;
            }
            __pyx_temp_pointer_0 += __pyx_temp_stride_0;
          }
      }
  }
 2795: 
 2796: 
+2797: cdef class VCFGenotypeInt16Parser(VCFCallDataParserBase):
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeInt16Parser {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase __pyx_base;
  __Pyx_memviewslice memory;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFGenotypeInt16Parser {
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataParserBase __pyx_base;
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFGenotypeInt16Parser *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFGenotypeInt16Parser;

 2798: 
 2799:     cdef:
 2800:         np.int16_t[:, :, :] memory
 2801: 
+2802:     def __init__(self, *args, **kwargs):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_22VCFGenotypeInt16Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_22VCFGenotypeInt16Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 1))) return -1;
  __pyx_v_kwargs = (__pyx_kwds) ? PyDict_Copy(__pyx_kwds) : PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return -1;
  __Pyx_GOTREF(__pyx_v_kwargs);
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_22VCFGenotypeInt16Parser___init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeInt16Parser *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_22VCFGenotypeInt16Parser___init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeInt16Parser *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
  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_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFGenotypeInt16Parser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2803:         kwargs['dtype'] = 'int16'
  if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_s_dtype, __pyx_n_s_int16) < 0)) __PYX_ERR(0, 2803, __pyx_L1_error)
+2804:         kwargs.setdefault('fill', -1)
  __pyx_t_1 = __Pyx_PyDict_SetDefault(__pyx_v_kwargs, __pyx_n_s_fill, __pyx_int_neg_1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2804, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2805:         super(VCFGenotypeInt16Parser, self).__init__(*args, **kwargs)
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2805, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeInt16Parser));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeInt16Parser));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeInt16Parser));
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self));
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2805, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2805, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_v_args, __pyx_v_kwargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2805, __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;
 2806: 
+2807:     cdef int parse(self, InputStreamBase stream, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_22VCFGenotypeInt16Parser_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeInt16Parser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFGenotypeInt16Parser.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2808:         vcf_genotype_parse(stream, context, self.memory)
  __pyx_t_1 = __pyx_fuse_1__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_parse(__pyx_v_stream, __pyx_v_context, __pyx_v_self->memory); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2808, __pyx_L1_error)
 2809: 
+2810:     cdef int malloc_chunk(self) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_22VCFGenotypeInt16Parser_malloc_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeInt16Parser *__pyx_v_self) {
  PyObject *__pyx_v_shape = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("malloc_chunk", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFGenotypeInt16Parser.malloc_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_shape);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2811:         shape = (self.chunk_length, self.n_samples_out, self.number)
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.chunk_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2811, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.n_samples_out); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2811, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.number); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2811, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2811, __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_2);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_v_shape = __pyx_t_4;
  __pyx_t_4 = 0;
+2812:         self.values = np.empty(shape, dtype=self.dtype)
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2812, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2812, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2812, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_v_shape);
  __Pyx_GIVEREF(__pyx_v_shape);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_shape);
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2812, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->__pyx_base.dtype)) < 0) __PYX_ERR(0, 2812, __pyx_L1_error)
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2812, __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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2812, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.values);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.values));
  __pyx_v_self->__pyx_base.values = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+2813:         self.memory = self.values
  __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsdsds_nn___pyx_t_5numpy_int16_t(((PyObject *)__pyx_v_self->__pyx_base.values));
  if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 2813, __pyx_L1_error)
  __PYX_XDEC_MEMVIEW(&__pyx_v_self->memory, 0);
  __pyx_v_self->memory = __pyx_t_5;
  __pyx_t_5.memview = NULL;
  __pyx_t_5.data = NULL;
+2814:         self.memory[:] = self.fill
  __pyx_t_6 = __Pyx_PyInt_As_npy_int16(__pyx_v_self->__pyx_base.fill); if (unlikely((__pyx_t_6 == ((npy_int16)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2814, __pyx_L1_error)
  {
      __pyx_t_5numpy_int16_t __pyx_temp_scalar = __pyx_t_6;
      {
          Py_ssize_t __pyx_temp_extent_0 = __pyx_v_self->memory.shape[0];
          Py_ssize_t __pyx_temp_stride_0 = __pyx_v_self->memory.strides[0];
          char *__pyx_temp_pointer_0;
          Py_ssize_t __pyx_temp_idx_0;
          Py_ssize_t __pyx_temp_extent_1 = __pyx_v_self->memory.shape[1];
          Py_ssize_t __pyx_temp_stride_1 = __pyx_v_self->memory.strides[1];
          char *__pyx_temp_pointer_1;
          Py_ssize_t __pyx_temp_idx_1;
          Py_ssize_t __pyx_temp_extent_2 = __pyx_v_self->memory.shape[2];
          Py_ssize_t __pyx_temp_stride_2 = __pyx_v_self->memory.strides[2];
          char *__pyx_temp_pointer_2;
          Py_ssize_t __pyx_temp_idx_2;
          __pyx_temp_pointer_0 = __pyx_v_self->memory.data;
          for (__pyx_temp_idx_0 = 0; __pyx_temp_idx_0 < __pyx_temp_extent_0; __pyx_temp_idx_0++) {
            __pyx_temp_pointer_1 = __pyx_temp_pointer_0;
            for (__pyx_temp_idx_1 = 0; __pyx_temp_idx_1 < __pyx_temp_extent_1; __pyx_temp_idx_1++) {
              __pyx_temp_pointer_2 = __pyx_temp_pointer_1;
              for (__pyx_temp_idx_2 = 0; __pyx_temp_idx_2 < __pyx_temp_extent_2; __pyx_temp_idx_2++) {
                *((__pyx_t_5numpy_int16_t *) __pyx_temp_pointer_2) = __pyx_temp_scalar;
                __pyx_temp_pointer_2 += __pyx_temp_stride_2;
              }
              __pyx_temp_pointer_1 += __pyx_temp_stride_1;
            }
            __pyx_temp_pointer_0 += __pyx_temp_stride_0;
          }
      }
  }
 2815: 
 2816: 
+2817: cdef class VCFGenotypeInt32Parser(VCFCallDataParserBase):
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeInt32Parser {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase __pyx_base;
  __Pyx_memviewslice memory;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFGenotypeInt32Parser {
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataParserBase __pyx_base;
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFGenotypeInt32Parser *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFGenotypeInt32Parser;

 2818: 
 2819:     cdef:
 2820:         np.int32_t[:, :, :] memory
 2821: 
+2822:     def __init__(self, *args, **kwargs):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_22VCFGenotypeInt32Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_22VCFGenotypeInt32Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 1))) return -1;
  __pyx_v_kwargs = (__pyx_kwds) ? PyDict_Copy(__pyx_kwds) : PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return -1;
  __Pyx_GOTREF(__pyx_v_kwargs);
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_22VCFGenotypeInt32Parser___init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeInt32Parser *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_22VCFGenotypeInt32Parser___init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeInt32Parser *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
  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_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFGenotypeInt32Parser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2823:         kwargs['dtype'] = 'int32'
  if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_s_dtype, __pyx_n_s_int32) < 0)) __PYX_ERR(0, 2823, __pyx_L1_error)
+2824:         kwargs.setdefault('fill', -1)
  __pyx_t_1 = __Pyx_PyDict_SetDefault(__pyx_v_kwargs, __pyx_n_s_fill, __pyx_int_neg_1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2824, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2825:         super(VCFGenotypeInt32Parser, self).__init__(*args, **kwargs)
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2825, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeInt32Parser));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeInt32Parser));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeInt32Parser));
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self));
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2825, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2825, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_v_args, __pyx_v_kwargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2825, __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;
 2826: 
+2827:     cdef int parse(self, InputStreamBase stream, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_22VCFGenotypeInt32Parser_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeInt32Parser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFGenotypeInt32Parser.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2828:         vcf_genotype_parse(stream, context, self.memory)
  __pyx_t_1 = __pyx_fuse_2__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_parse(__pyx_v_stream, __pyx_v_context, __pyx_v_self->memory); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2828, __pyx_L1_error)
 2829: 
+2830:     cdef int malloc_chunk(self) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_22VCFGenotypeInt32Parser_malloc_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeInt32Parser *__pyx_v_self) {
  PyObject *__pyx_v_shape = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("malloc_chunk", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFGenotypeInt32Parser.malloc_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_shape);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2831:         shape = (self.chunk_length, self.n_samples_out, self.number)
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.chunk_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2831, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.n_samples_out); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2831, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.number); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2831, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2831, __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_2);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_v_shape = __pyx_t_4;
  __pyx_t_4 = 0;
+2832:         self.values = np.empty(shape, dtype=self.dtype)
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2832, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2832, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2832, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_v_shape);
  __Pyx_GIVEREF(__pyx_v_shape);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_shape);
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2832, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->__pyx_base.dtype)) < 0) __PYX_ERR(0, 2832, __pyx_L1_error)
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2832, __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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2832, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.values);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.values));
  __pyx_v_self->__pyx_base.values = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+2833:         self.memory = self.values
  __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsdsds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_self->__pyx_base.values));
  if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 2833, __pyx_L1_error)
  __PYX_XDEC_MEMVIEW(&__pyx_v_self->memory, 0);
  __pyx_v_self->memory = __pyx_t_5;
  __pyx_t_5.memview = NULL;
  __pyx_t_5.data = NULL;
+2834:         self.memory[:] = self.fill
  __pyx_t_6 = __Pyx_PyInt_As_npy_int32(__pyx_v_self->__pyx_base.fill); if (unlikely((__pyx_t_6 == ((npy_int32)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2834, __pyx_L1_error)
  {
      __pyx_t_5numpy_int32_t __pyx_temp_scalar = __pyx_t_6;
      {
          Py_ssize_t __pyx_temp_extent_0 = __pyx_v_self->memory.shape[0];
          Py_ssize_t __pyx_temp_stride_0 = __pyx_v_self->memory.strides[0];
          char *__pyx_temp_pointer_0;
          Py_ssize_t __pyx_temp_idx_0;
          Py_ssize_t __pyx_temp_extent_1 = __pyx_v_self->memory.shape[1];
          Py_ssize_t __pyx_temp_stride_1 = __pyx_v_self->memory.strides[1];
          char *__pyx_temp_pointer_1;
          Py_ssize_t __pyx_temp_idx_1;
          Py_ssize_t __pyx_temp_extent_2 = __pyx_v_self->memory.shape[2];
          Py_ssize_t __pyx_temp_stride_2 = __pyx_v_self->memory.strides[2];
          char *__pyx_temp_pointer_2;
          Py_ssize_t __pyx_temp_idx_2;
          __pyx_temp_pointer_0 = __pyx_v_self->memory.data;
          for (__pyx_temp_idx_0 = 0; __pyx_temp_idx_0 < __pyx_temp_extent_0; __pyx_temp_idx_0++) {
            __pyx_temp_pointer_1 = __pyx_temp_pointer_0;
            for (__pyx_temp_idx_1 = 0; __pyx_temp_idx_1 < __pyx_temp_extent_1; __pyx_temp_idx_1++) {
              __pyx_temp_pointer_2 = __pyx_temp_pointer_1;
              for (__pyx_temp_idx_2 = 0; __pyx_temp_idx_2 < __pyx_temp_extent_2; __pyx_temp_idx_2++) {
                *((__pyx_t_5numpy_int32_t *) __pyx_temp_pointer_2) = __pyx_temp_scalar;
                __pyx_temp_pointer_2 += __pyx_temp_stride_2;
              }
              __pyx_temp_pointer_1 += __pyx_temp_stride_1;
            }
            __pyx_temp_pointer_0 += __pyx_temp_stride_0;
          }
      }
  }
 2835: 
 2836: 
+2837: cdef class VCFGenotypeInt64Parser(VCFCallDataParserBase):
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeInt64Parser {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase __pyx_base;
  __Pyx_memviewslice memory;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFGenotypeInt64Parser {
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataParserBase __pyx_base;
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFGenotypeInt64Parser *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFGenotypeInt64Parser;

 2838: 
 2839:     cdef:
 2840:         np.int64_t[:, :, :] memory
 2841: 
+2842:     def __init__(self, *args, **kwargs):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_22VCFGenotypeInt64Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_22VCFGenotypeInt64Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 1))) return -1;
  __pyx_v_kwargs = (__pyx_kwds) ? PyDict_Copy(__pyx_kwds) : PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return -1;
  __Pyx_GOTREF(__pyx_v_kwargs);
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_22VCFGenotypeInt64Parser___init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeInt64Parser *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_22VCFGenotypeInt64Parser___init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeInt64Parser *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
  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_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFGenotypeInt64Parser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2843:         kwargs['dtype'] = 'int64'
  if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_s_dtype, __pyx_n_s_int64) < 0)) __PYX_ERR(0, 2843, __pyx_L1_error)
+2844:         kwargs.setdefault('fill', -1)
  __pyx_t_1 = __Pyx_PyDict_SetDefault(__pyx_v_kwargs, __pyx_n_s_fill, __pyx_int_neg_1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2844, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2845:         super(VCFGenotypeInt64Parser, self).__init__(*args, **kwargs)
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2845, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeInt64Parser));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeInt64Parser));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeInt64Parser));
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self));
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2845, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2845, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_v_args, __pyx_v_kwargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2845, __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;
 2846: 
+2847:     cdef int parse(self, InputStreamBase stream, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_22VCFGenotypeInt64Parser_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeInt64Parser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFGenotypeInt64Parser.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2848:         vcf_genotype_parse(stream, context, self.memory)
  __pyx_t_1 = __pyx_fuse_3__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_parse(__pyx_v_stream, __pyx_v_context, __pyx_v_self->memory); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2848, __pyx_L1_error)
 2849: 
+2850:     cdef int malloc_chunk(self) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_22VCFGenotypeInt64Parser_malloc_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeInt64Parser *__pyx_v_self) {
  PyObject *__pyx_v_shape = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("malloc_chunk", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFGenotypeInt64Parser.malloc_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_shape);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2851:         shape = (self.chunk_length, self.n_samples_out, self.number)
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.chunk_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2851, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.n_samples_out); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2851, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.number); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2851, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2851, __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_2);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_v_shape = __pyx_t_4;
  __pyx_t_4 = 0;
+2852:         self.values = np.empty(shape, dtype=self.dtype)
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2852, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2852, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2852, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_v_shape);
  __Pyx_GIVEREF(__pyx_v_shape);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_shape);
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2852, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->__pyx_base.dtype)) < 0) __PYX_ERR(0, 2852, __pyx_L1_error)
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2852, __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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2852, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.values);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.values));
  __pyx_v_self->__pyx_base.values = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+2853:         self.memory = self.values
  __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsdsds_nn___pyx_t_5numpy_int64_t(((PyObject *)__pyx_v_self->__pyx_base.values));
  if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 2853, __pyx_L1_error)
  __PYX_XDEC_MEMVIEW(&__pyx_v_self->memory, 0);
  __pyx_v_self->memory = __pyx_t_5;
  __pyx_t_5.memview = NULL;
  __pyx_t_5.data = NULL;
+2854:         self.memory[:] = self.fill
  __pyx_t_6 = __Pyx_PyInt_As_npy_int64(__pyx_v_self->__pyx_base.fill); if (unlikely((__pyx_t_6 == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2854, __pyx_L1_error)
  {
      __pyx_t_5numpy_int64_t __pyx_temp_scalar = __pyx_t_6;
      {
          Py_ssize_t __pyx_temp_extent_0 = __pyx_v_self->memory.shape[0];
          Py_ssize_t __pyx_temp_stride_0 = __pyx_v_self->memory.strides[0];
          char *__pyx_temp_pointer_0;
          Py_ssize_t __pyx_temp_idx_0;
          Py_ssize_t __pyx_temp_extent_1 = __pyx_v_self->memory.shape[1];
          Py_ssize_t __pyx_temp_stride_1 = __pyx_v_self->memory.strides[1];
          char *__pyx_temp_pointer_1;
          Py_ssize_t __pyx_temp_idx_1;
          Py_ssize_t __pyx_temp_extent_2 = __pyx_v_self->memory.shape[2];
          Py_ssize_t __pyx_temp_stride_2 = __pyx_v_self->memory.strides[2];
          char *__pyx_temp_pointer_2;
          Py_ssize_t __pyx_temp_idx_2;
          __pyx_temp_pointer_0 = __pyx_v_self->memory.data;
          for (__pyx_temp_idx_0 = 0; __pyx_temp_idx_0 < __pyx_temp_extent_0; __pyx_temp_idx_0++) {
            __pyx_temp_pointer_1 = __pyx_temp_pointer_0;
            for (__pyx_temp_idx_1 = 0; __pyx_temp_idx_1 < __pyx_temp_extent_1; __pyx_temp_idx_1++) {
              __pyx_temp_pointer_2 = __pyx_temp_pointer_1;
              for (__pyx_temp_idx_2 = 0; __pyx_temp_idx_2 < __pyx_temp_extent_2; __pyx_temp_idx_2++) {
                *((__pyx_t_5numpy_int64_t *) __pyx_temp_pointer_2) = __pyx_temp_scalar;
                __pyx_temp_pointer_2 += __pyx_temp_stride_2;
              }
              __pyx_temp_pointer_1 += __pyx_temp_stride_1;
            }
            __pyx_temp_pointer_0 += __pyx_temp_stride_0;
          }
      }
  }
 2855: 
 2856: 
+2857: cdef class VCFGenotypeUInt8Parser(VCFCallDataParserBase):
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeUInt8Parser {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase __pyx_base;
  __Pyx_memviewslice memory;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFGenotypeUInt8Parser {
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataParserBase __pyx_base;
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFGenotypeUInt8Parser *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFGenotypeUInt8Parser;

 2858: 
 2859:     cdef:
 2860:         np.uint8_t[:, :, :] memory
 2861: 
+2862:     def __init__(self, *args, **kwargs):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_22VCFGenotypeUInt8Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_22VCFGenotypeUInt8Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 1))) return -1;
  __pyx_v_kwargs = (__pyx_kwds) ? PyDict_Copy(__pyx_kwds) : PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return -1;
  __Pyx_GOTREF(__pyx_v_kwargs);
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_22VCFGenotypeUInt8Parser___init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeUInt8Parser *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_22VCFGenotypeUInt8Parser___init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeUInt8Parser *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
  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_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFGenotypeUInt8Parser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2863:         kwargs['dtype'] = 'uint8'
  if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_s_dtype, __pyx_n_s_uint8) < 0)) __PYX_ERR(0, 2863, __pyx_L1_error)
+2864:         kwargs.setdefault('fill', IU8.max)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_IU8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2864, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_max); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2864, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyDict_SetDefault(__pyx_v_kwargs, __pyx_n_s_fill, __pyx_t_2, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2864, __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;
+2865:         super(VCFGenotypeUInt8Parser, self).__init__(*args, **kwargs)
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2865, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeUInt8Parser));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeUInt8Parser));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeUInt8Parser));
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self));
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2865, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2865, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_v_args, __pyx_v_kwargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2865, __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;
 2866: 
+2867:     cdef int parse(self, InputStreamBase stream, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_22VCFGenotypeUInt8Parser_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeUInt8Parser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFGenotypeUInt8Parser.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2868:         vcf_genotype_parse(stream, context, self.memory)
  __pyx_t_1 = __pyx_fuse_4__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_parse(__pyx_v_stream, __pyx_v_context, __pyx_v_self->memory); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2868, __pyx_L1_error)
 2869: 
+2870:     cdef int malloc_chunk(self) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_22VCFGenotypeUInt8Parser_malloc_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeUInt8Parser *__pyx_v_self) {
  PyObject *__pyx_v_shape = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("malloc_chunk", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFGenotypeUInt8Parser.malloc_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_shape);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2871:         shape = (self.chunk_length, self.n_samples_out, self.number)
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.chunk_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2871, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.n_samples_out); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2871, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.number); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2871, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2871, __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_2);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_v_shape = __pyx_t_4;
  __pyx_t_4 = 0;
+2872:         self.values = np.empty(shape, dtype=self.dtype)
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2872, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2872, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2872, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_v_shape);
  __Pyx_GIVEREF(__pyx_v_shape);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_shape);
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2872, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->__pyx_base.dtype)) < 0) __PYX_ERR(0, 2872, __pyx_L1_error)
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2872, __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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2872, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.values);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.values));
  __pyx_v_self->__pyx_base.values = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+2873:         self.memory = self.values
  __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsdsds_nn___pyx_t_5numpy_uint8_t(((PyObject *)__pyx_v_self->__pyx_base.values));
  if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 2873, __pyx_L1_error)
  __PYX_XDEC_MEMVIEW(&__pyx_v_self->memory, 0);
  __pyx_v_self->memory = __pyx_t_5;
  __pyx_t_5.memview = NULL;
  __pyx_t_5.data = NULL;
+2874:         self.memory[:] = self.fill
  __pyx_t_6 = __Pyx_PyInt_As_npy_uint8(__pyx_v_self->__pyx_base.fill); if (unlikely((__pyx_t_6 == ((npy_uint8)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2874, __pyx_L1_error)
  {
      __pyx_t_5numpy_uint8_t __pyx_temp_scalar = __pyx_t_6;
      {
          Py_ssize_t __pyx_temp_extent_0 = __pyx_v_self->memory.shape[0];
          Py_ssize_t __pyx_temp_stride_0 = __pyx_v_self->memory.strides[0];
          char *__pyx_temp_pointer_0;
          Py_ssize_t __pyx_temp_idx_0;
          Py_ssize_t __pyx_temp_extent_1 = __pyx_v_self->memory.shape[1];
          Py_ssize_t __pyx_temp_stride_1 = __pyx_v_self->memory.strides[1];
          char *__pyx_temp_pointer_1;
          Py_ssize_t __pyx_temp_idx_1;
          Py_ssize_t __pyx_temp_extent_2 = __pyx_v_self->memory.shape[2];
          Py_ssize_t __pyx_temp_stride_2 = __pyx_v_self->memory.strides[2];
          char *__pyx_temp_pointer_2;
          Py_ssize_t __pyx_temp_idx_2;
          __pyx_temp_pointer_0 = __pyx_v_self->memory.data;
          for (__pyx_temp_idx_0 = 0; __pyx_temp_idx_0 < __pyx_temp_extent_0; __pyx_temp_idx_0++) {
            __pyx_temp_pointer_1 = __pyx_temp_pointer_0;
            for (__pyx_temp_idx_1 = 0; __pyx_temp_idx_1 < __pyx_temp_extent_1; __pyx_temp_idx_1++) {
              __pyx_temp_pointer_2 = __pyx_temp_pointer_1;
              for (__pyx_temp_idx_2 = 0; __pyx_temp_idx_2 < __pyx_temp_extent_2; __pyx_temp_idx_2++) {
                *((__pyx_t_5numpy_uint8_t *) __pyx_temp_pointer_2) = __pyx_temp_scalar;
                __pyx_temp_pointer_2 += __pyx_temp_stride_2;
              }
              __pyx_temp_pointer_1 += __pyx_temp_stride_1;
            }
            __pyx_temp_pointer_0 += __pyx_temp_stride_0;
          }
      }
  }
 2875: 
 2876: 
+2877: cdef class VCFGenotypeUInt16Parser(VCFCallDataParserBase):
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeUInt16Parser {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase __pyx_base;
  __Pyx_memviewslice memory;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFGenotypeUInt16Parser {
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataParserBase __pyx_base;
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFGenotypeUInt16Parser *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFGenotypeUInt16Parser;

 2878: 
 2879:     cdef:
 2880:         np.uint16_t[:, :, :] memory
 2881: 
+2882:     def __init__(self, *args, **kwargs):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_23VCFGenotypeUInt16Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_23VCFGenotypeUInt16Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 1))) return -1;
  __pyx_v_kwargs = (__pyx_kwds) ? PyDict_Copy(__pyx_kwds) : PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return -1;
  __Pyx_GOTREF(__pyx_v_kwargs);
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_23VCFGenotypeUInt16Parser___init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeUInt16Parser *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_23VCFGenotypeUInt16Parser___init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeUInt16Parser *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
  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_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFGenotypeUInt16Parser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2883:         kwargs['dtype'] = 'uint16'
  if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_s_dtype, __pyx_n_s_uint16) < 0)) __PYX_ERR(0, 2883, __pyx_L1_error)
+2884:         kwargs.setdefault('fill', IU16.max)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_IU16); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2884, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_max); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2884, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyDict_SetDefault(__pyx_v_kwargs, __pyx_n_s_fill, __pyx_t_2, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2884, __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;
+2885:         super(VCFGenotypeUInt16Parser, self).__init__(*args, **kwargs)
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2885, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeUInt16Parser));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeUInt16Parser));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeUInt16Parser));
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self));
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2885, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2885, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_v_args, __pyx_v_kwargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2885, __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;
 2886: 
+2887:     cdef int parse(self, InputStreamBase stream, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_23VCFGenotypeUInt16Parser_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeUInt16Parser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFGenotypeUInt16Parser.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2888:         vcf_genotype_parse(stream, context, self.memory)
  __pyx_t_1 = __pyx_fuse_5__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_parse(__pyx_v_stream, __pyx_v_context, __pyx_v_self->memory); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2888, __pyx_L1_error)
 2889: 
+2890:     cdef int malloc_chunk(self) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_23VCFGenotypeUInt16Parser_malloc_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeUInt16Parser *__pyx_v_self) {
  PyObject *__pyx_v_shape = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("malloc_chunk", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFGenotypeUInt16Parser.malloc_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_shape);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2891:         shape = (self.chunk_length, self.n_samples_out, self.number)
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.chunk_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2891, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.n_samples_out); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2891, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.number); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2891, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2891, __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_2);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_v_shape = __pyx_t_4;
  __pyx_t_4 = 0;
+2892:         self.values = np.empty(shape, dtype=self.dtype)
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2892, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2892, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2892, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_v_shape);
  __Pyx_GIVEREF(__pyx_v_shape);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_shape);
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2892, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->__pyx_base.dtype)) < 0) __PYX_ERR(0, 2892, __pyx_L1_error)
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2892, __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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2892, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.values);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.values));
  __pyx_v_self->__pyx_base.values = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+2893:         self.memory = self.values
  __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsdsds_nn___pyx_t_5numpy_uint16_t(((PyObject *)__pyx_v_self->__pyx_base.values));
  if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 2893, __pyx_L1_error)
  __PYX_XDEC_MEMVIEW(&__pyx_v_self->memory, 0);
  __pyx_v_self->memory = __pyx_t_5;
  __pyx_t_5.memview = NULL;
  __pyx_t_5.data = NULL;
+2894:         self.memory[:] = self.fill
  __pyx_t_6 = __Pyx_PyInt_As_npy_uint16(__pyx_v_self->__pyx_base.fill); if (unlikely((__pyx_t_6 == ((npy_uint16)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2894, __pyx_L1_error)
  {
      __pyx_t_5numpy_uint16_t __pyx_temp_scalar = __pyx_t_6;
      {
          Py_ssize_t __pyx_temp_extent_0 = __pyx_v_self->memory.shape[0];
          Py_ssize_t __pyx_temp_stride_0 = __pyx_v_self->memory.strides[0];
          char *__pyx_temp_pointer_0;
          Py_ssize_t __pyx_temp_idx_0;
          Py_ssize_t __pyx_temp_extent_1 = __pyx_v_self->memory.shape[1];
          Py_ssize_t __pyx_temp_stride_1 = __pyx_v_self->memory.strides[1];
          char *__pyx_temp_pointer_1;
          Py_ssize_t __pyx_temp_idx_1;
          Py_ssize_t __pyx_temp_extent_2 = __pyx_v_self->memory.shape[2];
          Py_ssize_t __pyx_temp_stride_2 = __pyx_v_self->memory.strides[2];
          char *__pyx_temp_pointer_2;
          Py_ssize_t __pyx_temp_idx_2;
          __pyx_temp_pointer_0 = __pyx_v_self->memory.data;
          for (__pyx_temp_idx_0 = 0; __pyx_temp_idx_0 < __pyx_temp_extent_0; __pyx_temp_idx_0++) {
            __pyx_temp_pointer_1 = __pyx_temp_pointer_0;
            for (__pyx_temp_idx_1 = 0; __pyx_temp_idx_1 < __pyx_temp_extent_1; __pyx_temp_idx_1++) {
              __pyx_temp_pointer_2 = __pyx_temp_pointer_1;
              for (__pyx_temp_idx_2 = 0; __pyx_temp_idx_2 < __pyx_temp_extent_2; __pyx_temp_idx_2++) {
                *((__pyx_t_5numpy_uint16_t *) __pyx_temp_pointer_2) = __pyx_temp_scalar;
                __pyx_temp_pointer_2 += __pyx_temp_stride_2;
              }
              __pyx_temp_pointer_1 += __pyx_temp_stride_1;
            }
            __pyx_temp_pointer_0 += __pyx_temp_stride_0;
          }
      }
  }
 2895: 
 2896: 
+2897: cdef class VCFGenotypeUInt32Parser(VCFCallDataParserBase):
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeUInt32Parser {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase __pyx_base;
  __Pyx_memviewslice memory;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFGenotypeUInt32Parser {
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataParserBase __pyx_base;
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFGenotypeUInt32Parser *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFGenotypeUInt32Parser;

 2898: 
 2899:     cdef:
 2900:         np.uint32_t[:, :, :] memory
 2901: 
+2902:     def __init__(self, *args, **kwargs):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_23VCFGenotypeUInt32Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_23VCFGenotypeUInt32Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 1))) return -1;
  __pyx_v_kwargs = (__pyx_kwds) ? PyDict_Copy(__pyx_kwds) : PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return -1;
  __Pyx_GOTREF(__pyx_v_kwargs);
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_23VCFGenotypeUInt32Parser___init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeUInt32Parser *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_23VCFGenotypeUInt32Parser___init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeUInt32Parser *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
  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_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFGenotypeUInt32Parser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2903:         kwargs['dtype'] = 'uint32'
  if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_s_dtype, __pyx_n_s_uint32) < 0)) __PYX_ERR(0, 2903, __pyx_L1_error)
+2904:         kwargs.setdefault('fill', IU32.max)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_IU32); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2904, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_max); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2904, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyDict_SetDefault(__pyx_v_kwargs, __pyx_n_s_fill, __pyx_t_2, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2904, __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;
+2905:         super(VCFGenotypeUInt32Parser, self).__init__(*args, **kwargs)
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2905, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeUInt32Parser));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeUInt32Parser));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeUInt32Parser));
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self));
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2905, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2905, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_v_args, __pyx_v_kwargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2905, __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;
 2906: 
+2907:     cdef int parse(self, InputStreamBase stream, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_23VCFGenotypeUInt32Parser_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeUInt32Parser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFGenotypeUInt32Parser.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2908:         vcf_genotype_parse(stream, context, self.memory)
  __pyx_t_1 = __pyx_fuse_6__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_parse(__pyx_v_stream, __pyx_v_context, __pyx_v_self->memory); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2908, __pyx_L1_error)
 2909: 
+2910:     cdef int malloc_chunk(self) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_23VCFGenotypeUInt32Parser_malloc_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeUInt32Parser *__pyx_v_self) {
  PyObject *__pyx_v_shape = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("malloc_chunk", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFGenotypeUInt32Parser.malloc_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_shape);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2911:         shape = (self.chunk_length, self.n_samples_out, self.number)
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.chunk_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2911, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.n_samples_out); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2911, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.number); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2911, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2911, __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_2);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_v_shape = __pyx_t_4;
  __pyx_t_4 = 0;
+2912:         self.values = np.empty(shape, dtype=self.dtype)
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2912, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2912, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2912, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_v_shape);
  __Pyx_GIVEREF(__pyx_v_shape);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_shape);
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2912, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->__pyx_base.dtype)) < 0) __PYX_ERR(0, 2912, __pyx_L1_error)
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2912, __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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2912, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.values);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.values));
  __pyx_v_self->__pyx_base.values = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+2913:         self.memory = self.values
  __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsdsds_nn___pyx_t_5numpy_uint32_t(((PyObject *)__pyx_v_self->__pyx_base.values));
  if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 2913, __pyx_L1_error)
  __PYX_XDEC_MEMVIEW(&__pyx_v_self->memory, 0);
  __pyx_v_self->memory = __pyx_t_5;
  __pyx_t_5.memview = NULL;
  __pyx_t_5.data = NULL;
+2914:         self.memory[:] = self.fill
  __pyx_t_6 = __Pyx_PyInt_As_npy_uint32(__pyx_v_self->__pyx_base.fill); if (unlikely((__pyx_t_6 == ((npy_uint32)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2914, __pyx_L1_error)
  {
      __pyx_t_5numpy_uint32_t __pyx_temp_scalar = __pyx_t_6;
      {
          Py_ssize_t __pyx_temp_extent_0 = __pyx_v_self->memory.shape[0];
          Py_ssize_t __pyx_temp_stride_0 = __pyx_v_self->memory.strides[0];
          char *__pyx_temp_pointer_0;
          Py_ssize_t __pyx_temp_idx_0;
          Py_ssize_t __pyx_temp_extent_1 = __pyx_v_self->memory.shape[1];
          Py_ssize_t __pyx_temp_stride_1 = __pyx_v_self->memory.strides[1];
          char *__pyx_temp_pointer_1;
          Py_ssize_t __pyx_temp_idx_1;
          Py_ssize_t __pyx_temp_extent_2 = __pyx_v_self->memory.shape[2];
          Py_ssize_t __pyx_temp_stride_2 = __pyx_v_self->memory.strides[2];
          char *__pyx_temp_pointer_2;
          Py_ssize_t __pyx_temp_idx_2;
          __pyx_temp_pointer_0 = __pyx_v_self->memory.data;
          for (__pyx_temp_idx_0 = 0; __pyx_temp_idx_0 < __pyx_temp_extent_0; __pyx_temp_idx_0++) {
            __pyx_temp_pointer_1 = __pyx_temp_pointer_0;
            for (__pyx_temp_idx_1 = 0; __pyx_temp_idx_1 < __pyx_temp_extent_1; __pyx_temp_idx_1++) {
              __pyx_temp_pointer_2 = __pyx_temp_pointer_1;
              for (__pyx_temp_idx_2 = 0; __pyx_temp_idx_2 < __pyx_temp_extent_2; __pyx_temp_idx_2++) {
                *((__pyx_t_5numpy_uint32_t *) __pyx_temp_pointer_2) = __pyx_temp_scalar;
                __pyx_temp_pointer_2 += __pyx_temp_stride_2;
              }
              __pyx_temp_pointer_1 += __pyx_temp_stride_1;
            }
            __pyx_temp_pointer_0 += __pyx_temp_stride_0;
          }
      }
  }
 2915: 
 2916: 
+2917: cdef class VCFGenotypeUInt64Parser(VCFCallDataParserBase):
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeUInt64Parser {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase __pyx_base;
  __Pyx_memviewslice memory;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFGenotypeUInt64Parser {
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataParserBase __pyx_base;
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFGenotypeUInt64Parser *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFGenotypeUInt64Parser;

 2918: 
 2919:     cdef:
 2920:         np.uint64_t[:, :, :] memory
 2921: 
+2922:     def __init__(self, *args, **kwargs):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_23VCFGenotypeUInt64Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_23VCFGenotypeUInt64Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 1))) return -1;
  __pyx_v_kwargs = (__pyx_kwds) ? PyDict_Copy(__pyx_kwds) : PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return -1;
  __Pyx_GOTREF(__pyx_v_kwargs);
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_23VCFGenotypeUInt64Parser___init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeUInt64Parser *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_23VCFGenotypeUInt64Parser___init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeUInt64Parser *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
  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_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFGenotypeUInt64Parser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2923:         kwargs['dtype'] = 'uint64'
  if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_s_dtype, __pyx_n_s_uint64) < 0)) __PYX_ERR(0, 2923, __pyx_L1_error)
+2924:         kwargs.setdefault('fill', IU64.max)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_IU64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2924, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_max); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2924, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyDict_SetDefault(__pyx_v_kwargs, __pyx_n_s_fill, __pyx_t_2, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2924, __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;
+2925:         super(VCFGenotypeUInt64Parser, self).__init__(*args, **kwargs)
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2925, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeUInt64Parser));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeUInt64Parser));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeUInt64Parser));
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self));
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2925, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2925, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_v_args, __pyx_v_kwargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2925, __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;
 2926: 
+2927:     cdef int parse(self, InputStreamBase stream, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_23VCFGenotypeUInt64Parser_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeUInt64Parser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFGenotypeUInt64Parser.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2928:         vcf_genotype_parse(stream, context, self.memory)
  __pyx_t_1 = __pyx_fuse_7__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_parse(__pyx_v_stream, __pyx_v_context, __pyx_v_self->memory); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2928, __pyx_L1_error)
 2929: 
+2930:     cdef int malloc_chunk(self) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_23VCFGenotypeUInt64Parser_malloc_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeUInt64Parser *__pyx_v_self) {
  PyObject *__pyx_v_shape = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("malloc_chunk", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFGenotypeUInt64Parser.malloc_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_shape);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2931:         shape = (self.chunk_length, self.n_samples_out, self.number)
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.chunk_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2931, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.n_samples_out); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2931, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.number); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2931, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2931, __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_2);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_v_shape = __pyx_t_4;
  __pyx_t_4 = 0;
+2932:         self.values = np.empty(shape, dtype=self.dtype)
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2932, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2932, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2932, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_v_shape);
  __Pyx_GIVEREF(__pyx_v_shape);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_shape);
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2932, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->__pyx_base.dtype)) < 0) __PYX_ERR(0, 2932, __pyx_L1_error)
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2932, __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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2932, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.values);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.values));
  __pyx_v_self->__pyx_base.values = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+2933:         self.memory = self.values
  __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsdsds_nn___pyx_t_5numpy_uint64_t(((PyObject *)__pyx_v_self->__pyx_base.values));
  if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 2933, __pyx_L1_error)
  __PYX_XDEC_MEMVIEW(&__pyx_v_self->memory, 0);
  __pyx_v_self->memory = __pyx_t_5;
  __pyx_t_5.memview = NULL;
  __pyx_t_5.data = NULL;
+2934:         self.memory[:] = self.fill
  __pyx_t_6 = __Pyx_PyInt_As_npy_uint64(__pyx_v_self->__pyx_base.fill); if (unlikely((__pyx_t_6 == ((npy_uint64)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2934, __pyx_L1_error)
  {
      __pyx_t_5numpy_uint64_t __pyx_temp_scalar = __pyx_t_6;
      {
          Py_ssize_t __pyx_temp_extent_0 = __pyx_v_self->memory.shape[0];
          Py_ssize_t __pyx_temp_stride_0 = __pyx_v_self->memory.strides[0];
          char *__pyx_temp_pointer_0;
          Py_ssize_t __pyx_temp_idx_0;
          Py_ssize_t __pyx_temp_extent_1 = __pyx_v_self->memory.shape[1];
          Py_ssize_t __pyx_temp_stride_1 = __pyx_v_self->memory.strides[1];
          char *__pyx_temp_pointer_1;
          Py_ssize_t __pyx_temp_idx_1;
          Py_ssize_t __pyx_temp_extent_2 = __pyx_v_self->memory.shape[2];
          Py_ssize_t __pyx_temp_stride_2 = __pyx_v_self->memory.strides[2];
          char *__pyx_temp_pointer_2;
          Py_ssize_t __pyx_temp_idx_2;
          __pyx_temp_pointer_0 = __pyx_v_self->memory.data;
          for (__pyx_temp_idx_0 = 0; __pyx_temp_idx_0 < __pyx_temp_extent_0; __pyx_temp_idx_0++) {
            __pyx_temp_pointer_1 = __pyx_temp_pointer_0;
            for (__pyx_temp_idx_1 = 0; __pyx_temp_idx_1 < __pyx_temp_extent_1; __pyx_temp_idx_1++) {
              __pyx_temp_pointer_2 = __pyx_temp_pointer_1;
              for (__pyx_temp_idx_2 = 0; __pyx_temp_idx_2 < __pyx_temp_extent_2; __pyx_temp_idx_2++) {
                *((__pyx_t_5numpy_uint64_t *) __pyx_temp_pointer_2) = __pyx_temp_scalar;
                __pyx_temp_pointer_2 += __pyx_temp_stride_2;
              }
              __pyx_temp_pointer_1 += __pyx_temp_stride_1;
            }
            __pyx_temp_pointer_0 += __pyx_temp_stride_0;
          }
      }
  }
 2935: 
 2936: 
+2937: cdef int vcf_genotype_parse(InputStreamBase stream,
static int __pyx_fuse_0__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, __Pyx_memviewslice __pyx_v_memory) {
  Py_ssize_t __pyx_v_value_index;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_0vcf_genotype_parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_genotype_parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_fuse_1__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, __Pyx_memviewslice __pyx_v_memory) {
  Py_ssize_t __pyx_v_value_index;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_1vcf_genotype_parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_genotype_parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_fuse_2__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, __Pyx_memviewslice __pyx_v_memory) {
  Py_ssize_t __pyx_v_value_index;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_2vcf_genotype_parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_genotype_parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_fuse_3__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, __Pyx_memviewslice __pyx_v_memory) {
  Py_ssize_t __pyx_v_value_index;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_3vcf_genotype_parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_genotype_parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_fuse_4__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, __Pyx_memviewslice __pyx_v_memory) {
  Py_ssize_t __pyx_v_value_index;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_4vcf_genotype_parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_genotype_parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_fuse_5__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, __Pyx_memviewslice __pyx_v_memory) {
  Py_ssize_t __pyx_v_value_index;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_5vcf_genotype_parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_genotype_parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_fuse_6__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, __Pyx_memviewslice __pyx_v_memory) {
  Py_ssize_t __pyx_v_value_index;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_6vcf_genotype_parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_genotype_parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_fuse_7__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, __Pyx_memviewslice __pyx_v_memory) {
  Py_ssize_t __pyx_v_value_index;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_7vcf_genotype_parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_genotype_parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 2938:                             VCFContext context,
 2939:                             integer[:, :, :] memory) except -1:  # nogil
 2940:     cdef:
+2941:         Py_ssize_t value_index = 0
  __pyx_v_value_index = 0;
/* … */
  __pyx_v_value_index = 0;
/* … */
  __pyx_v_value_index = 0;
/* … */
  __pyx_v_value_index = 0;
/* … */
  __pyx_v_value_index = 0;
/* … */
  __pyx_v_value_index = 0;
/* … */
  __pyx_v_value_index = 0;
/* … */
  __pyx_v_value_index = 0;
 2942: 
 2943:     # reset temporary buffer
+2944:     CharVector_clear(&context.temp)
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->temp));
/* … */
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->temp));
/* … */
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->temp));
/* … */
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->temp));
/* … */
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->temp));
/* … */
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->temp));
/* … */
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->temp));
/* … */
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->temp));
 2945: 
+2946:     while True:
  while (1) {
/* … */
  while (1) {
/* … */
  while (1) {
/* … */
  while (1) {
/* … */
  while (1) {
/* … */
  while (1) {
/* … */
  while (1) {
/* … */
  while (1) {
 2947: 
+2948:         if stream.c == SLASH or stream.c == PIPE:
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_SLASH) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_PIPE) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L6_bool_binop_done:;
    if (__pyx_t_1) {
/* … */
      goto __pyx_L5;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_SLASH) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_PIPE) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L6_bool_binop_done:;
    if (__pyx_t_1) {
/* … */
      goto __pyx_L5;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_SLASH) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_PIPE) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L6_bool_binop_done:;
    if (__pyx_t_1) {
/* … */
      goto __pyx_L5;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_SLASH) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_PIPE) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L6_bool_binop_done:;
    if (__pyx_t_1) {
/* … */
      goto __pyx_L5;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_SLASH) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_PIPE) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L6_bool_binop_done:;
    if (__pyx_t_1) {
/* … */
      goto __pyx_L5;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_SLASH) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_PIPE) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L6_bool_binop_done:;
    if (__pyx_t_1) {
/* … */
      goto __pyx_L5;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_SLASH) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_PIPE) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L6_bool_binop_done:;
    if (__pyx_t_1) {
/* … */
      goto __pyx_L5;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_SLASH) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_PIPE) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L6_bool_binop_done:;
    if (__pyx_t_1) {
/* … */
      goto __pyx_L5;
    }
+2949:             vcf_genotype_store(context, memory, value_index)
      __pyx_t_3 = __pyx_fuse_0__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_store(__pyx_v_context, __pyx_v_memory, __pyx_v_value_index); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2949, __pyx_L1_error)
/* … */
      __pyx_t_3 = __pyx_fuse_1__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_store(__pyx_v_context, __pyx_v_memory, __pyx_v_value_index); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2949, __pyx_L1_error)
/* … */
      __pyx_t_3 = __pyx_fuse_2__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_store(__pyx_v_context, __pyx_v_memory, __pyx_v_value_index); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2949, __pyx_L1_error)
/* … */
      __pyx_t_3 = __pyx_fuse_3__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_store(__pyx_v_context, __pyx_v_memory, __pyx_v_value_index); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2949, __pyx_L1_error)
/* … */
      __pyx_t_3 = __pyx_fuse_4__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_store(__pyx_v_context, __pyx_v_memory, __pyx_v_value_index); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2949, __pyx_L1_error)
/* … */
      __pyx_t_3 = __pyx_fuse_5__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_store(__pyx_v_context, __pyx_v_memory, __pyx_v_value_index); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2949, __pyx_L1_error)
/* … */
      __pyx_t_3 = __pyx_fuse_6__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_store(__pyx_v_context, __pyx_v_memory, __pyx_v_value_index); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2949, __pyx_L1_error)
/* … */
      __pyx_t_3 = __pyx_fuse_7__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_store(__pyx_v_context, __pyx_v_memory, __pyx_v_value_index); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2949, __pyx_L1_error)
+2950:             value_index += 1
      __pyx_v_value_index = (__pyx_v_value_index + 1);
/* … */
      __pyx_v_value_index = (__pyx_v_value_index + 1);
/* … */
      __pyx_v_value_index = (__pyx_v_value_index + 1);
/* … */
      __pyx_v_value_index = (__pyx_v_value_index + 1);
/* … */
      __pyx_v_value_index = (__pyx_v_value_index + 1);
/* … */
      __pyx_v_value_index = (__pyx_v_value_index + 1);
/* … */
      __pyx_v_value_index = (__pyx_v_value_index + 1);
/* … */
      __pyx_v_value_index = (__pyx_v_value_index + 1);
+2951:             CharVector_clear(&context.temp)
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->temp));
/* … */
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->temp));
/* … */
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->temp));
/* … */
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->temp));
/* … */
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->temp));
/* … */
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->temp));
/* … */
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->temp));
/* … */
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->temp));
 2952: 
+2953:         elif stream.c == COLON or \
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_COLON) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
/* … */
    if (__pyx_t_1) {
/* … */
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_COLON) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
/* … */
    if (__pyx_t_1) {
/* … */
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_COLON) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
/* … */
    if (__pyx_t_1) {
/* … */
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_COLON) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
/* … */
    if (__pyx_t_1) {
/* … */
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_COLON) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
/* … */
    if (__pyx_t_1) {
/* … */
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_COLON) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
/* … */
    if (__pyx_t_1) {
/* … */
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_COLON) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
/* … */
    if (__pyx_t_1) {
/* … */
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_COLON) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
/* … */
    if (__pyx_t_1) {
/* … */
    }
+2954:                 stream.c == TAB or \
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_TAB) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_TAB) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_TAB) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_TAB) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_TAB) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_TAB) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_TAB) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_TAB) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
+2955:                 stream.c == LF or \
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
+2956:                 stream.c == CR or \
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_CR) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_CR) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_CR) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_CR) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_CR) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_CR) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_CR) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_CR) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
+2957:                 stream.c == 0:
    __pyx_t_2 = ((__pyx_v_stream->c == 0) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L8_bool_binop_done:;
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == 0) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L8_bool_binop_done:;
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == 0) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L8_bool_binop_done:;
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == 0) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L8_bool_binop_done:;
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == 0) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L8_bool_binop_done:;
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == 0) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L8_bool_binop_done:;
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == 0) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L8_bool_binop_done:;
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == 0) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L8_bool_binop_done:;
+2958:             vcf_genotype_store(context, memory, value_index)
      __pyx_t_3 = __pyx_fuse_0__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_store(__pyx_v_context, __pyx_v_memory, __pyx_v_value_index); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2958, __pyx_L1_error)
/* … */
      __pyx_t_3 = __pyx_fuse_1__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_store(__pyx_v_context, __pyx_v_memory, __pyx_v_value_index); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2958, __pyx_L1_error)
/* … */
      __pyx_t_3 = __pyx_fuse_2__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_store(__pyx_v_context, __pyx_v_memory, __pyx_v_value_index); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2958, __pyx_L1_error)
/* … */
      __pyx_t_3 = __pyx_fuse_3__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_store(__pyx_v_context, __pyx_v_memory, __pyx_v_value_index); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2958, __pyx_L1_error)
/* … */
      __pyx_t_3 = __pyx_fuse_4__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_store(__pyx_v_context, __pyx_v_memory, __pyx_v_value_index); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2958, __pyx_L1_error)
/* … */
      __pyx_t_3 = __pyx_fuse_5__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_store(__pyx_v_context, __pyx_v_memory, __pyx_v_value_index); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2958, __pyx_L1_error)
/* … */
      __pyx_t_3 = __pyx_fuse_6__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_store(__pyx_v_context, __pyx_v_memory, __pyx_v_value_index); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2958, __pyx_L1_error)
/* … */
      __pyx_t_3 = __pyx_fuse_7__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_store(__pyx_v_context, __pyx_v_memory, __pyx_v_value_index); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2958, __pyx_L1_error)
+2959:             break
      goto __pyx_L4_break;
/* … */
      goto __pyx_L4_break;
/* … */
      goto __pyx_L4_break;
/* … */
      goto __pyx_L4_break;
/* … */
      goto __pyx_L4_break;
/* … */
      goto __pyx_L4_break;
/* … */
      goto __pyx_L4_break;
/* … */
      goto __pyx_L4_break;
 2960: 
 2961:         else:
+2962:             CharVector_append(&context.temp, stream.c)
    /*else*/ {
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_append((&__pyx_v_context->temp), __pyx_v_stream->c);
    }
    __pyx_L5:;
/* … */
    /*else*/ {
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_append((&__pyx_v_context->temp), __pyx_v_stream->c);
    }
    __pyx_L5:;
/* … */
    /*else*/ {
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_append((&__pyx_v_context->temp), __pyx_v_stream->c);
    }
    __pyx_L5:;
/* … */
    /*else*/ {
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_append((&__pyx_v_context->temp), __pyx_v_stream->c);
    }
    __pyx_L5:;
/* … */
    /*else*/ {
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_append((&__pyx_v_context->temp), __pyx_v_stream->c);
    }
    __pyx_L5:;
/* … */
    /*else*/ {
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_append((&__pyx_v_context->temp), __pyx_v_stream->c);
    }
    __pyx_L5:;
/* … */
    /*else*/ {
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_append((&__pyx_v_context->temp), __pyx_v_stream->c);
    }
    __pyx_L5:;
/* … */
    /*else*/ {
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_append((&__pyx_v_context->temp), __pyx_v_stream->c);
    }
    __pyx_L5:;
 2963: 
+2964:         stream.advance()
    __pyx_t_3 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2964, __pyx_L1_error)
  }
  __pyx_L4_break:;
/* … */
    __pyx_t_3 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2964, __pyx_L1_error)
  }
  __pyx_L4_break:;
/* … */
    __pyx_t_3 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2964, __pyx_L1_error)
  }
  __pyx_L4_break:;
/* … */
    __pyx_t_3 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2964, __pyx_L1_error)
  }
  __pyx_L4_break:;
/* … */
    __pyx_t_3 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2964, __pyx_L1_error)
  }
  __pyx_L4_break:;
/* … */
    __pyx_t_3 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2964, __pyx_L1_error)
  }
  __pyx_L4_break:;
/* … */
    __pyx_t_3 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2964, __pyx_L1_error)
  }
  __pyx_L4_break:;
/* … */
    __pyx_t_3 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 2964, __pyx_L1_error)
  }
  __pyx_L4_break:;
 2965: 
 2966: 
+2967: cdef int vcf_genotype_store(VCFContext context,
static int __pyx_fuse_0__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_store(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, __Pyx_memviewslice __pyx_v_memory, Py_ssize_t __pyx_v_value_index) {
  Py_ssize_t __pyx_v_parsed;
  long __pyx_v_allele;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_0vcf_genotype_store", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_genotype_store", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_fuse_1__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_store(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, __Pyx_memviewslice __pyx_v_memory, Py_ssize_t __pyx_v_value_index) {
  Py_ssize_t __pyx_v_parsed;
  long __pyx_v_allele;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_1vcf_genotype_store", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_genotype_store", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_fuse_2__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_store(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, __Pyx_memviewslice __pyx_v_memory, Py_ssize_t __pyx_v_value_index) {
  Py_ssize_t __pyx_v_parsed;
  long __pyx_v_allele;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_2vcf_genotype_store", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_genotype_store", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_fuse_3__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_store(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, __Pyx_memviewslice __pyx_v_memory, Py_ssize_t __pyx_v_value_index) {
  Py_ssize_t __pyx_v_parsed;
  long __pyx_v_allele;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_3vcf_genotype_store", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_genotype_store", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_fuse_4__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_store(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, __Pyx_memviewslice __pyx_v_memory, Py_ssize_t __pyx_v_value_index) {
  Py_ssize_t __pyx_v_parsed;
  long __pyx_v_allele;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_4vcf_genotype_store", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_genotype_store", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_fuse_5__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_store(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, __Pyx_memviewslice __pyx_v_memory, Py_ssize_t __pyx_v_value_index) {
  Py_ssize_t __pyx_v_parsed;
  long __pyx_v_allele;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_5vcf_genotype_store", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_genotype_store", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_fuse_6__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_store(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, __Pyx_memviewslice __pyx_v_memory, Py_ssize_t __pyx_v_value_index) {
  Py_ssize_t __pyx_v_parsed;
  long __pyx_v_allele;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_6vcf_genotype_store", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_genotype_store", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_fuse_7__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_store(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, __Pyx_memviewslice __pyx_v_memory, Py_ssize_t __pyx_v_value_index) {
  Py_ssize_t __pyx_v_parsed;
  long __pyx_v_allele;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_7vcf_genotype_store", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_genotype_store", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 2968:                             integer[:, :, :] memory,
 2969:                             Py_ssize_t value_index) except -1:  # nogil
 2970:     cdef:
 2971:         Py_ssize_t parsed
 2972:         long allele
 2973: 
+2974:     if value_index >= memory.shape[2]:
  __pyx_t_1 = ((__pyx_v_value_index >= (__pyx_v_memory.shape[2])) != 0);
  if (__pyx_t_1) {
/* … */
  }
/* … */
  __pyx_t_1 = ((__pyx_v_value_index >= (__pyx_v_memory.shape[2])) != 0);
  if (__pyx_t_1) {
/* … */
  }
/* … */
  __pyx_t_1 = ((__pyx_v_value_index >= (__pyx_v_memory.shape[2])) != 0);
  if (__pyx_t_1) {
/* … */
  }
/* … */
  __pyx_t_1 = ((__pyx_v_value_index >= (__pyx_v_memory.shape[2])) != 0);
  if (__pyx_t_1) {
/* … */
  }
/* … */
  __pyx_t_1 = ((__pyx_v_value_index >= (__pyx_v_memory.shape[2])) != 0);
  if (__pyx_t_1) {
/* … */
  }
/* … */
  __pyx_t_1 = ((__pyx_v_value_index >= (__pyx_v_memory.shape[2])) != 0);
  if (__pyx_t_1) {
/* … */
  }
/* … */
  __pyx_t_1 = ((__pyx_v_value_index >= (__pyx_v_memory.shape[2])) != 0);
  if (__pyx_t_1) {
/* … */
  }
/* … */
  __pyx_t_1 = ((__pyx_v_value_index >= (__pyx_v_memory.shape[2])) != 0);
  if (__pyx_t_1) {
/* … */
  }
 2975:         # more values than we've made room for, ignore
+2976:         return 0
    __pyx_r = 0;
    goto __pyx_L0;
/* … */
    __pyx_r = 0;
    goto __pyx_L0;
/* … */
    __pyx_r = 0;
    goto __pyx_L0;
/* … */
    __pyx_r = 0;
    goto __pyx_L0;
/* … */
    __pyx_r = 0;
    goto __pyx_L0;
/* … */
    __pyx_r = 0;
    goto __pyx_L0;
/* … */
    __pyx_r = 0;
    goto __pyx_L0;
/* … */
    __pyx_r = 0;
    goto __pyx_L0;
 2977: 
 2978:     # attempt to parse allele
+2979:     parsed = vcf_strtol(&context.temp, context, &allele)
  __pyx_t_2 = __pyx_f_5allel_3opt_11io_vcf_read_vcf_strtol((&__pyx_v_context->temp), __pyx_v_context, (&__pyx_v_allele)); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1L))) __PYX_ERR(0, 2979, __pyx_L1_error)
  __pyx_v_parsed = __pyx_t_2;
/* … */
  __pyx_t_2 = __pyx_f_5allel_3opt_11io_vcf_read_vcf_strtol((&__pyx_v_context->temp), __pyx_v_context, (&__pyx_v_allele)); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1L))) __PYX_ERR(0, 2979, __pyx_L1_error)
  __pyx_v_parsed = __pyx_t_2;
/* … */
  __pyx_t_2 = __pyx_f_5allel_3opt_11io_vcf_read_vcf_strtol((&__pyx_v_context->temp), __pyx_v_context, (&__pyx_v_allele)); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1L))) __PYX_ERR(0, 2979, __pyx_L1_error)
  __pyx_v_parsed = __pyx_t_2;
/* … */
  __pyx_t_2 = __pyx_f_5allel_3opt_11io_vcf_read_vcf_strtol((&__pyx_v_context->temp), __pyx_v_context, (&__pyx_v_allele)); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1L))) __PYX_ERR(0, 2979, __pyx_L1_error)
  __pyx_v_parsed = __pyx_t_2;
/* … */
  __pyx_t_2 = __pyx_f_5allel_3opt_11io_vcf_read_vcf_strtol((&__pyx_v_context->temp), __pyx_v_context, (&__pyx_v_allele)); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1L))) __PYX_ERR(0, 2979, __pyx_L1_error)
  __pyx_v_parsed = __pyx_t_2;
/* … */
  __pyx_t_2 = __pyx_f_5allel_3opt_11io_vcf_read_vcf_strtol((&__pyx_v_context->temp), __pyx_v_context, (&__pyx_v_allele)); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1L))) __PYX_ERR(0, 2979, __pyx_L1_error)
  __pyx_v_parsed = __pyx_t_2;
/* … */
  __pyx_t_2 = __pyx_f_5allel_3opt_11io_vcf_read_vcf_strtol((&__pyx_v_context->temp), __pyx_v_context, (&__pyx_v_allele)); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1L))) __PYX_ERR(0, 2979, __pyx_L1_error)
  __pyx_v_parsed = __pyx_t_2;
/* … */
  __pyx_t_2 = __pyx_f_5allel_3opt_11io_vcf_read_vcf_strtol((&__pyx_v_context->temp), __pyx_v_context, (&__pyx_v_allele)); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1L))) __PYX_ERR(0, 2979, __pyx_L1_error)
  __pyx_v_parsed = __pyx_t_2;
 2980: 
 2981:     # store value
+2982:     if parsed > 0:
  __pyx_t_1 = ((__pyx_v_parsed > 0) != 0);
  if (__pyx_t_1) {
/* … */
  }
/* … */
  __pyx_t_1 = ((__pyx_v_parsed > 0) != 0);
  if (__pyx_t_1) {
/* … */
  }
/* … */
  __pyx_t_1 = ((__pyx_v_parsed > 0) != 0);
  if (__pyx_t_1) {
/* … */
  }
/* … */
  __pyx_t_1 = ((__pyx_v_parsed > 0) != 0);
  if (__pyx_t_1) {
/* … */
  }
/* … */
  __pyx_t_1 = ((__pyx_v_parsed > 0) != 0);
  if (__pyx_t_1) {
/* … */
  }
/* … */
  __pyx_t_1 = ((__pyx_v_parsed > 0) != 0);
  if (__pyx_t_1) {
/* … */
  }
/* … */
  __pyx_t_1 = ((__pyx_v_parsed > 0) != 0);
  if (__pyx_t_1) {
/* … */
  }
/* … */
  __pyx_t_1 = ((__pyx_v_parsed > 0) != 0);
  if (__pyx_t_1) {
/* … */
  }
+2983:         memory[context.chunk_variant_index, context.sample_output_index, value_index] = allele
    __pyx_t_3 = __pyx_v_context->chunk_variant_index;
    __pyx_t_4 = __pyx_v_context->sample_output_index;
    __pyx_t_5 = __pyx_v_value_index;
    *((__pyx_t_5numpy_int8_t *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_memory.data + __pyx_t_3 * __pyx_v_memory.strides[0]) ) + __pyx_t_4 * __pyx_v_memory.strides[1]) ) + __pyx_t_5 * __pyx_v_memory.strides[2]) )) = __pyx_v_allele;
/* … */
    __pyx_t_3 = __pyx_v_context->chunk_variant_index;
    __pyx_t_4 = __pyx_v_context->sample_output_index;
    __pyx_t_5 = __pyx_v_value_index;
    *((__pyx_t_5numpy_int16_t *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_memory.data + __pyx_t_3 * __pyx_v_memory.strides[0]) ) + __pyx_t_4 * __pyx_v_memory.strides[1]) ) + __pyx_t_5 * __pyx_v_memory.strides[2]) )) = __pyx_v_allele;
/* … */
    __pyx_t_3 = __pyx_v_context->chunk_variant_index;
    __pyx_t_4 = __pyx_v_context->sample_output_index;
    __pyx_t_5 = __pyx_v_value_index;
    *((__pyx_t_5numpy_int32_t *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_memory.data + __pyx_t_3 * __pyx_v_memory.strides[0]) ) + __pyx_t_4 * __pyx_v_memory.strides[1]) ) + __pyx_t_5 * __pyx_v_memory.strides[2]) )) = __pyx_v_allele;
/* … */
    __pyx_t_3 = __pyx_v_context->chunk_variant_index;
    __pyx_t_4 = __pyx_v_context->sample_output_index;
    __pyx_t_5 = __pyx_v_value_index;
    *((__pyx_t_5numpy_int64_t *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_memory.data + __pyx_t_3 * __pyx_v_memory.strides[0]) ) + __pyx_t_4 * __pyx_v_memory.strides[1]) ) + __pyx_t_5 * __pyx_v_memory.strides[2]) )) = __pyx_v_allele;
/* … */
    __pyx_t_3 = __pyx_v_context->chunk_variant_index;
    __pyx_t_4 = __pyx_v_context->sample_output_index;
    __pyx_t_5 = __pyx_v_value_index;
    *((__pyx_t_5numpy_uint8_t *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_memory.data + __pyx_t_3 * __pyx_v_memory.strides[0]) ) + __pyx_t_4 * __pyx_v_memory.strides[1]) ) + __pyx_t_5 * __pyx_v_memory.strides[2]) )) = __pyx_v_allele;
/* … */
    __pyx_t_3 = __pyx_v_context->chunk_variant_index;
    __pyx_t_4 = __pyx_v_context->sample_output_index;
    __pyx_t_5 = __pyx_v_value_index;
    *((__pyx_t_5numpy_uint16_t *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_memory.data + __pyx_t_3 * __pyx_v_memory.strides[0]) ) + __pyx_t_4 * __pyx_v_memory.strides[1]) ) + __pyx_t_5 * __pyx_v_memory.strides[2]) )) = __pyx_v_allele;
/* … */
    __pyx_t_3 = __pyx_v_context->chunk_variant_index;
    __pyx_t_4 = __pyx_v_context->sample_output_index;
    __pyx_t_5 = __pyx_v_value_index;
    *((__pyx_t_5numpy_uint32_t *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_memory.data + __pyx_t_3 * __pyx_v_memory.strides[0]) ) + __pyx_t_4 * __pyx_v_memory.strides[1]) ) + __pyx_t_5 * __pyx_v_memory.strides[2]) )) = __pyx_v_allele;
/* … */
    __pyx_t_3 = __pyx_v_context->chunk_variant_index;
    __pyx_t_4 = __pyx_v_context->sample_output_index;
    __pyx_t_5 = __pyx_v_value_index;
    *((__pyx_t_5numpy_uint64_t *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_memory.data + __pyx_t_3 * __pyx_v_memory.strides[0]) ) + __pyx_t_4 * __pyx_v_memory.strides[1]) ) + __pyx_t_5 * __pyx_v_memory.strides[2]) )) = __pyx_v_allele;
 2984: 
 2985: 
+2986: cdef class VCFGenotypeACInt8Parser(VCFCallDataParserBase):
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeACInt8Parser {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase __pyx_base;
  __Pyx_memviewslice memory;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFGenotypeACInt8Parser {
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataParserBase __pyx_base;
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFGenotypeACInt8Parser *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFGenotypeACInt8Parser;

 2987: 
 2988:     cdef:
 2989:         np.int8_t[:, :, :] memory
 2990: 
+2991:     def __init__(self, *args, **kwargs):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_23VCFGenotypeACInt8Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_23VCFGenotypeACInt8Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 1))) return -1;
  __pyx_v_kwargs = (__pyx_kwds) ? PyDict_Copy(__pyx_kwds) : PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return -1;
  __Pyx_GOTREF(__pyx_v_kwargs);
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_23VCFGenotypeACInt8Parser___init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeACInt8Parser *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_23VCFGenotypeACInt8Parser___init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeACInt8Parser *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
  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_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFGenotypeACInt8Parser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2992:         kwargs['dtype'] = 'int8'
  if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_s_dtype, __pyx_n_s_int8) < 0)) __PYX_ERR(0, 2992, __pyx_L1_error)
+2993:         kwargs['fill'] = 0
  if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_s_fill, __pyx_int_0) < 0)) __PYX_ERR(0, 2993, __pyx_L1_error)
+2994:         super(VCFGenotypeACInt8Parser, self).__init__(*args, **kwargs)
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2994, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeACInt8Parser));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeACInt8Parser));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeACInt8Parser));
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self));
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2994, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2994, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_v_args, __pyx_v_kwargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2994, __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;
 2995: 
+2996:     cdef int parse(self, InputStreamBase stream, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_23VCFGenotypeACInt8Parser_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeACInt8Parser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFGenotypeACInt8Parser.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+2997:         vcf_genotype_ac_parse(stream, context, self.memory)
  __pyx_t_1 = __pyx_fuse_0__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_ac_parse(__pyx_v_stream, __pyx_v_context, __pyx_v_self->memory); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2997, __pyx_L1_error)
 2998: 
+2999:     cdef int malloc_chunk(self) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_23VCFGenotypeACInt8Parser_malloc_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeACInt8Parser *__pyx_v_self) {
  PyObject *__pyx_v_shape = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("malloc_chunk", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFGenotypeACInt8Parser.malloc_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_shape);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+3000:         shape = (self.chunk_length, self.n_samples_out, self.number)
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.chunk_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3000, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.n_samples_out); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3000, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.number); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3000, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3000, __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_2);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_v_shape = __pyx_t_4;
  __pyx_t_4 = 0;
+3001:         self.values = np.empty(shape, dtype=self.dtype)
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3001, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3001, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3001, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_v_shape);
  __Pyx_GIVEREF(__pyx_v_shape);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_shape);
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3001, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->__pyx_base.dtype)) < 0) __PYX_ERR(0, 3001, __pyx_L1_error)
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3001, __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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3001, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.values);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.values));
  __pyx_v_self->__pyx_base.values = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+3002:         self.memory = self.values
  __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsdsds_nn___pyx_t_5numpy_int8_t(((PyObject *)__pyx_v_self->__pyx_base.values));
  if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 3002, __pyx_L1_error)
  __PYX_XDEC_MEMVIEW(&__pyx_v_self->memory, 0);
  __pyx_v_self->memory = __pyx_t_5;
  __pyx_t_5.memview = NULL;
  __pyx_t_5.data = NULL;
+3003:         self.memory[:] = 0
  {
      __pyx_t_5numpy_int8_t __pyx_temp_scalar = 0;
      {
          Py_ssize_t __pyx_temp_extent_0 = __pyx_v_self->memory.shape[0];
          Py_ssize_t __pyx_temp_stride_0 = __pyx_v_self->memory.strides[0];
          char *__pyx_temp_pointer_0;
          Py_ssize_t __pyx_temp_idx_0;
          Py_ssize_t __pyx_temp_extent_1 = __pyx_v_self->memory.shape[1];
          Py_ssize_t __pyx_temp_stride_1 = __pyx_v_self->memory.strides[1];
          char *__pyx_temp_pointer_1;
          Py_ssize_t __pyx_temp_idx_1;
          Py_ssize_t __pyx_temp_extent_2 = __pyx_v_self->memory.shape[2];
          Py_ssize_t __pyx_temp_stride_2 = __pyx_v_self->memory.strides[2];
          char *__pyx_temp_pointer_2;
          Py_ssize_t __pyx_temp_idx_2;
          __pyx_temp_pointer_0 = __pyx_v_self->memory.data;
          for (__pyx_temp_idx_0 = 0; __pyx_temp_idx_0 < __pyx_temp_extent_0; __pyx_temp_idx_0++) {
            __pyx_temp_pointer_1 = __pyx_temp_pointer_0;
            for (__pyx_temp_idx_1 = 0; __pyx_temp_idx_1 < __pyx_temp_extent_1; __pyx_temp_idx_1++) {
              __pyx_temp_pointer_2 = __pyx_temp_pointer_1;
              for (__pyx_temp_idx_2 = 0; __pyx_temp_idx_2 < __pyx_temp_extent_2; __pyx_temp_idx_2++) {
                *((__pyx_t_5numpy_int8_t *) __pyx_temp_pointer_2) = __pyx_temp_scalar;
                __pyx_temp_pointer_2 += __pyx_temp_stride_2;
              }
              __pyx_temp_pointer_1 += __pyx_temp_stride_1;
            }
            __pyx_temp_pointer_0 += __pyx_temp_stride_0;
          }
      }
  }
 3004: 
 3005: 
+3006: cdef class VCFGenotypeACInt16Parser(VCFCallDataParserBase):
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeACInt16Parser {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase __pyx_base;
  __Pyx_memviewslice memory;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFGenotypeACInt16Parser {
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataParserBase __pyx_base;
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFGenotypeACInt16Parser *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFGenotypeACInt16Parser;

 3007: 
 3008:     cdef:
 3009:         np.int16_t[:, :, :] memory
 3010: 
+3011:     def __init__(self, *args, **kwargs):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_24VCFGenotypeACInt16Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_24VCFGenotypeACInt16Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 1))) return -1;
  __pyx_v_kwargs = (__pyx_kwds) ? PyDict_Copy(__pyx_kwds) : PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return -1;
  __Pyx_GOTREF(__pyx_v_kwargs);
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_24VCFGenotypeACInt16Parser___init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeACInt16Parser *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_24VCFGenotypeACInt16Parser___init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeACInt16Parser *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
  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_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFGenotypeACInt16Parser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+3012:         kwargs['dtype'] = 'int16'
  if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_s_dtype, __pyx_n_s_int16) < 0)) __PYX_ERR(0, 3012, __pyx_L1_error)
+3013:         kwargs['fill'] = 0
  if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_s_fill, __pyx_int_0) < 0)) __PYX_ERR(0, 3013, __pyx_L1_error)
+3014:         super(VCFGenotypeACInt16Parser, self).__init__(*args, **kwargs)
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3014, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeACInt16Parser));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeACInt16Parser));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeACInt16Parser));
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self));
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3014, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3014, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_v_args, __pyx_v_kwargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3014, __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;
 3015: 
+3016:     cdef int parse(self, InputStreamBase stream, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_24VCFGenotypeACInt16Parser_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeACInt16Parser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFGenotypeACInt16Parser.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+3017:         vcf_genotype_ac_parse(stream, context, self.memory)
  __pyx_t_1 = __pyx_fuse_1__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_ac_parse(__pyx_v_stream, __pyx_v_context, __pyx_v_self->memory); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 3017, __pyx_L1_error)
 3018: 
+3019:     cdef int malloc_chunk(self) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_24VCFGenotypeACInt16Parser_malloc_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeACInt16Parser *__pyx_v_self) {
  PyObject *__pyx_v_shape = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("malloc_chunk", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFGenotypeACInt16Parser.malloc_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_shape);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+3020:         shape = (self.chunk_length, self.n_samples_out, self.number)
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.chunk_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3020, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.n_samples_out); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3020, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.number); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3020, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3020, __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_2);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_v_shape = __pyx_t_4;
  __pyx_t_4 = 0;
+3021:         self.values = np.empty(shape, dtype=self.dtype)
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3021, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3021, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3021, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_v_shape);
  __Pyx_GIVEREF(__pyx_v_shape);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_shape);
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3021, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->__pyx_base.dtype)) < 0) __PYX_ERR(0, 3021, __pyx_L1_error)
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3021, __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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3021, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.values);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.values));
  __pyx_v_self->__pyx_base.values = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+3022:         self.memory = self.values
  __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsdsds_nn___pyx_t_5numpy_int16_t(((PyObject *)__pyx_v_self->__pyx_base.values));
  if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 3022, __pyx_L1_error)
  __PYX_XDEC_MEMVIEW(&__pyx_v_self->memory, 0);
  __pyx_v_self->memory = __pyx_t_5;
  __pyx_t_5.memview = NULL;
  __pyx_t_5.data = NULL;
+3023:         self.memory[:] = 0
  {
      __pyx_t_5numpy_int16_t __pyx_temp_scalar = 0;
      {
          Py_ssize_t __pyx_temp_extent_0 = __pyx_v_self->memory.shape[0];
          Py_ssize_t __pyx_temp_stride_0 = __pyx_v_self->memory.strides[0];
          char *__pyx_temp_pointer_0;
          Py_ssize_t __pyx_temp_idx_0;
          Py_ssize_t __pyx_temp_extent_1 = __pyx_v_self->memory.shape[1];
          Py_ssize_t __pyx_temp_stride_1 = __pyx_v_self->memory.strides[1];
          char *__pyx_temp_pointer_1;
          Py_ssize_t __pyx_temp_idx_1;
          Py_ssize_t __pyx_temp_extent_2 = __pyx_v_self->memory.shape[2];
          Py_ssize_t __pyx_temp_stride_2 = __pyx_v_self->memory.strides[2];
          char *__pyx_temp_pointer_2;
          Py_ssize_t __pyx_temp_idx_2;
          __pyx_temp_pointer_0 = __pyx_v_self->memory.data;
          for (__pyx_temp_idx_0 = 0; __pyx_temp_idx_0 < __pyx_temp_extent_0; __pyx_temp_idx_0++) {
            __pyx_temp_pointer_1 = __pyx_temp_pointer_0;
            for (__pyx_temp_idx_1 = 0; __pyx_temp_idx_1 < __pyx_temp_extent_1; __pyx_temp_idx_1++) {
              __pyx_temp_pointer_2 = __pyx_temp_pointer_1;
              for (__pyx_temp_idx_2 = 0; __pyx_temp_idx_2 < __pyx_temp_extent_2; __pyx_temp_idx_2++) {
                *((__pyx_t_5numpy_int16_t *) __pyx_temp_pointer_2) = __pyx_temp_scalar;
                __pyx_temp_pointer_2 += __pyx_temp_stride_2;
              }
              __pyx_temp_pointer_1 += __pyx_temp_stride_1;
            }
            __pyx_temp_pointer_0 += __pyx_temp_stride_0;
          }
      }
  }
 3024: 
 3025: 
+3026: cdef class VCFGenotypeACInt32Parser(VCFCallDataParserBase):
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeACInt32Parser {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase __pyx_base;
  __Pyx_memviewslice memory;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFGenotypeACInt32Parser {
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataParserBase __pyx_base;
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFGenotypeACInt32Parser *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFGenotypeACInt32Parser;

 3027: 
 3028:     cdef:
 3029:         np.int32_t[:, :, :] memory
 3030: 
+3031:     def __init__(self, *args, **kwargs):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_24VCFGenotypeACInt32Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_24VCFGenotypeACInt32Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 1))) return -1;
  __pyx_v_kwargs = (__pyx_kwds) ? PyDict_Copy(__pyx_kwds) : PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return -1;
  __Pyx_GOTREF(__pyx_v_kwargs);
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_24VCFGenotypeACInt32Parser___init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeACInt32Parser *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_24VCFGenotypeACInt32Parser___init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeACInt32Parser *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
  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_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFGenotypeACInt32Parser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+3032:         kwargs['dtype'] = 'int32'
  if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_s_dtype, __pyx_n_s_int32) < 0)) __PYX_ERR(0, 3032, __pyx_L1_error)
+3033:         kwargs['fill'] = 0
  if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_s_fill, __pyx_int_0) < 0)) __PYX_ERR(0, 3033, __pyx_L1_error)
+3034:         super(VCFGenotypeACInt32Parser, self).__init__(*args, **kwargs)
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3034, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeACInt32Parser));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeACInt32Parser));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeACInt32Parser));
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self));
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3034, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3034, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_v_args, __pyx_v_kwargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3034, __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;
 3035: 
+3036:     cdef int parse(self, InputStreamBase stream, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_24VCFGenotypeACInt32Parser_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeACInt32Parser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFGenotypeACInt32Parser.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+3037:         vcf_genotype_ac_parse(stream, context, self.memory)
  __pyx_t_1 = __pyx_fuse_2__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_ac_parse(__pyx_v_stream, __pyx_v_context, __pyx_v_self->memory); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 3037, __pyx_L1_error)
 3038: 
+3039:     cdef int malloc_chunk(self) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_24VCFGenotypeACInt32Parser_malloc_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeACInt32Parser *__pyx_v_self) {
  PyObject *__pyx_v_shape = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("malloc_chunk", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFGenotypeACInt32Parser.malloc_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_shape);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+3040:         shape = (self.chunk_length, self.n_samples_out, self.number)
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.chunk_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3040, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.n_samples_out); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3040, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.number); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3040, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3040, __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_2);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_v_shape = __pyx_t_4;
  __pyx_t_4 = 0;
+3041:         self.values = np.empty(shape, dtype=self.dtype)
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3041, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3041, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3041, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_v_shape);
  __Pyx_GIVEREF(__pyx_v_shape);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_shape);
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3041, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->__pyx_base.dtype)) < 0) __PYX_ERR(0, 3041, __pyx_L1_error)
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3041, __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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3041, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.values);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.values));
  __pyx_v_self->__pyx_base.values = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+3042:         self.memory = self.values
  __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsdsds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_self->__pyx_base.values));
  if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 3042, __pyx_L1_error)
  __PYX_XDEC_MEMVIEW(&__pyx_v_self->memory, 0);
  __pyx_v_self->memory = __pyx_t_5;
  __pyx_t_5.memview = NULL;
  __pyx_t_5.data = NULL;
+3043:         self.memory[:] = 0
  {
      __pyx_t_5numpy_int32_t __pyx_temp_scalar = 0;
      {
          Py_ssize_t __pyx_temp_extent_0 = __pyx_v_self->memory.shape[0];
          Py_ssize_t __pyx_temp_stride_0 = __pyx_v_self->memory.strides[0];
          char *__pyx_temp_pointer_0;
          Py_ssize_t __pyx_temp_idx_0;
          Py_ssize_t __pyx_temp_extent_1 = __pyx_v_self->memory.shape[1];
          Py_ssize_t __pyx_temp_stride_1 = __pyx_v_self->memory.strides[1];
          char *__pyx_temp_pointer_1;
          Py_ssize_t __pyx_temp_idx_1;
          Py_ssize_t __pyx_temp_extent_2 = __pyx_v_self->memory.shape[2];
          Py_ssize_t __pyx_temp_stride_2 = __pyx_v_self->memory.strides[2];
          char *__pyx_temp_pointer_2;
          Py_ssize_t __pyx_temp_idx_2;
          __pyx_temp_pointer_0 = __pyx_v_self->memory.data;
          for (__pyx_temp_idx_0 = 0; __pyx_temp_idx_0 < __pyx_temp_extent_0; __pyx_temp_idx_0++) {
            __pyx_temp_pointer_1 = __pyx_temp_pointer_0;
            for (__pyx_temp_idx_1 = 0; __pyx_temp_idx_1 < __pyx_temp_extent_1; __pyx_temp_idx_1++) {
              __pyx_temp_pointer_2 = __pyx_temp_pointer_1;
              for (__pyx_temp_idx_2 = 0; __pyx_temp_idx_2 < __pyx_temp_extent_2; __pyx_temp_idx_2++) {
                *((__pyx_t_5numpy_int32_t *) __pyx_temp_pointer_2) = __pyx_temp_scalar;
                __pyx_temp_pointer_2 += __pyx_temp_stride_2;
              }
              __pyx_temp_pointer_1 += __pyx_temp_stride_1;
            }
            __pyx_temp_pointer_0 += __pyx_temp_stride_0;
          }
      }
  }
 3044: 
 3045: 
+3046: cdef class VCFGenotypeACInt64Parser(VCFCallDataParserBase):
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeACInt64Parser {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase __pyx_base;
  __Pyx_memviewslice memory;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFGenotypeACInt64Parser {
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataParserBase __pyx_base;
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFGenotypeACInt64Parser *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFGenotypeACInt64Parser;

 3047: 
 3048:     cdef:
 3049:         np.int64_t[:, :, :] memory
 3050: 
+3051:     def __init__(self, *args, **kwargs):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_24VCFGenotypeACInt64Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_24VCFGenotypeACInt64Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 1))) return -1;
  __pyx_v_kwargs = (__pyx_kwds) ? PyDict_Copy(__pyx_kwds) : PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return -1;
  __Pyx_GOTREF(__pyx_v_kwargs);
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_24VCFGenotypeACInt64Parser___init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeACInt64Parser *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_24VCFGenotypeACInt64Parser___init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeACInt64Parser *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
  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_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFGenotypeACInt64Parser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+3052:         kwargs['dtype'] = 'int64'
  if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_s_dtype, __pyx_n_s_int64) < 0)) __PYX_ERR(0, 3052, __pyx_L1_error)
+3053:         kwargs['fill'] = 0
  if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_s_fill, __pyx_int_0) < 0)) __PYX_ERR(0, 3053, __pyx_L1_error)
+3054:         super(VCFGenotypeACInt64Parser, self).__init__(*args, **kwargs)
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3054, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeACInt64Parser));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeACInt64Parser));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeACInt64Parser));
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self));
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3054, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3054, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_v_args, __pyx_v_kwargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3054, __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;
 3055: 
+3056:     cdef int parse(self, InputStreamBase stream, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_24VCFGenotypeACInt64Parser_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeACInt64Parser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFGenotypeACInt64Parser.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+3057:         vcf_genotype_ac_parse(stream, context, self.memory)
  __pyx_t_1 = __pyx_fuse_3__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_ac_parse(__pyx_v_stream, __pyx_v_context, __pyx_v_self->memory); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 3057, __pyx_L1_error)
 3058: 
+3059:     cdef int malloc_chunk(self) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_24VCFGenotypeACInt64Parser_malloc_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeACInt64Parser *__pyx_v_self) {
  PyObject *__pyx_v_shape = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("malloc_chunk", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFGenotypeACInt64Parser.malloc_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_shape);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+3060:         shape = (self.chunk_length, self.n_samples_out, self.number)
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.chunk_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3060, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.n_samples_out); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3060, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.number); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3060, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3060, __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_2);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_v_shape = __pyx_t_4;
  __pyx_t_4 = 0;
+3061:         self.values = np.empty(shape, dtype=self.dtype)
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3061, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3061, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3061, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_v_shape);
  __Pyx_GIVEREF(__pyx_v_shape);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_shape);
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3061, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->__pyx_base.dtype)) < 0) __PYX_ERR(0, 3061, __pyx_L1_error)
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3061, __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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3061, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.values);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.values));
  __pyx_v_self->__pyx_base.values = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+3062:         self.memory = self.values
  __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsdsds_nn___pyx_t_5numpy_int64_t(((PyObject *)__pyx_v_self->__pyx_base.values));
  if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 3062, __pyx_L1_error)
  __PYX_XDEC_MEMVIEW(&__pyx_v_self->memory, 0);
  __pyx_v_self->memory = __pyx_t_5;
  __pyx_t_5.memview = NULL;
  __pyx_t_5.data = NULL;
+3063:         self.memory[:] = 0
  {
      __pyx_t_5numpy_int64_t __pyx_temp_scalar = 0;
      {
          Py_ssize_t __pyx_temp_extent_0 = __pyx_v_self->memory.shape[0];
          Py_ssize_t __pyx_temp_stride_0 = __pyx_v_self->memory.strides[0];
          char *__pyx_temp_pointer_0;
          Py_ssize_t __pyx_temp_idx_0;
          Py_ssize_t __pyx_temp_extent_1 = __pyx_v_self->memory.shape[1];
          Py_ssize_t __pyx_temp_stride_1 = __pyx_v_self->memory.strides[1];
          char *__pyx_temp_pointer_1;
          Py_ssize_t __pyx_temp_idx_1;
          Py_ssize_t __pyx_temp_extent_2 = __pyx_v_self->memory.shape[2];
          Py_ssize_t __pyx_temp_stride_2 = __pyx_v_self->memory.strides[2];
          char *__pyx_temp_pointer_2;
          Py_ssize_t __pyx_temp_idx_2;
          __pyx_temp_pointer_0 = __pyx_v_self->memory.data;
          for (__pyx_temp_idx_0 = 0; __pyx_temp_idx_0 < __pyx_temp_extent_0; __pyx_temp_idx_0++) {
            __pyx_temp_pointer_1 = __pyx_temp_pointer_0;
            for (__pyx_temp_idx_1 = 0; __pyx_temp_idx_1 < __pyx_temp_extent_1; __pyx_temp_idx_1++) {
              __pyx_temp_pointer_2 = __pyx_temp_pointer_1;
              for (__pyx_temp_idx_2 = 0; __pyx_temp_idx_2 < __pyx_temp_extent_2; __pyx_temp_idx_2++) {
                *((__pyx_t_5numpy_int64_t *) __pyx_temp_pointer_2) = __pyx_temp_scalar;
                __pyx_temp_pointer_2 += __pyx_temp_stride_2;
              }
              __pyx_temp_pointer_1 += __pyx_temp_stride_1;
            }
            __pyx_temp_pointer_0 += __pyx_temp_stride_0;
          }
      }
  }
 3064: 
 3065: 
+3066: cdef class VCFGenotypeACUInt8Parser(VCFCallDataParserBase):
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeACUInt8Parser {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase __pyx_base;
  __Pyx_memviewslice memory;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFGenotypeACUInt8Parser {
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataParserBase __pyx_base;
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFGenotypeACUInt8Parser *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFGenotypeACUInt8Parser;

 3067: 
 3068:     cdef:
 3069:         np.uint8_t[:, :, :] memory
 3070: 
+3071:     def __init__(self, *args, **kwargs):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_24VCFGenotypeACUInt8Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_24VCFGenotypeACUInt8Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 1))) return -1;
  __pyx_v_kwargs = (__pyx_kwds) ? PyDict_Copy(__pyx_kwds) : PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return -1;
  __Pyx_GOTREF(__pyx_v_kwargs);
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_24VCFGenotypeACUInt8Parser___init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeACUInt8Parser *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_24VCFGenotypeACUInt8Parser___init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeACUInt8Parser *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
  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_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFGenotypeACUInt8Parser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+3072:         kwargs['dtype'] = 'uint8'
  if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_s_dtype, __pyx_n_s_uint8) < 0)) __PYX_ERR(0, 3072, __pyx_L1_error)
+3073:         kwargs['fill'] = 0
  if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_s_fill, __pyx_int_0) < 0)) __PYX_ERR(0, 3073, __pyx_L1_error)
+3074:         super(VCFGenotypeACUInt8Parser, self).__init__(*args, **kwargs)
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3074, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeACUInt8Parser));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeACUInt8Parser));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeACUInt8Parser));
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self));
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3074, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3074, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_v_args, __pyx_v_kwargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3074, __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;
 3075: 
+3076:     cdef int parse(self, InputStreamBase stream, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_24VCFGenotypeACUInt8Parser_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeACUInt8Parser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFGenotypeACUInt8Parser.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+3077:         vcf_genotype_ac_parse(stream, context, self.memory)
  __pyx_t_1 = __pyx_fuse_4__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_ac_parse(__pyx_v_stream, __pyx_v_context, __pyx_v_self->memory); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 3077, __pyx_L1_error)
 3078: 
+3079:     cdef int malloc_chunk(self) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_24VCFGenotypeACUInt8Parser_malloc_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeACUInt8Parser *__pyx_v_self) {
  PyObject *__pyx_v_shape = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("malloc_chunk", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFGenotypeACUInt8Parser.malloc_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_shape);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+3080:         shape = (self.chunk_length, self.n_samples_out, self.number)
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.chunk_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3080, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.n_samples_out); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3080, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.number); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3080, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3080, __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_2);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_v_shape = __pyx_t_4;
  __pyx_t_4 = 0;
+3081:         self.values = np.empty(shape, dtype=self.dtype)
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3081, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3081, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3081, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_v_shape);
  __Pyx_GIVEREF(__pyx_v_shape);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_shape);
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3081, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->__pyx_base.dtype)) < 0) __PYX_ERR(0, 3081, __pyx_L1_error)
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3081, __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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3081, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.values);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.values));
  __pyx_v_self->__pyx_base.values = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+3082:         self.memory = self.values
  __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsdsds_nn___pyx_t_5numpy_uint8_t(((PyObject *)__pyx_v_self->__pyx_base.values));
  if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 3082, __pyx_L1_error)
  __PYX_XDEC_MEMVIEW(&__pyx_v_self->memory, 0);
  __pyx_v_self->memory = __pyx_t_5;
  __pyx_t_5.memview = NULL;
  __pyx_t_5.data = NULL;
+3083:         self.memory[:] = 0
  {
      __pyx_t_5numpy_uint8_t __pyx_temp_scalar = 0;
      {
          Py_ssize_t __pyx_temp_extent_0 = __pyx_v_self->memory.shape[0];
          Py_ssize_t __pyx_temp_stride_0 = __pyx_v_self->memory.strides[0];
          char *__pyx_temp_pointer_0;
          Py_ssize_t __pyx_temp_idx_0;
          Py_ssize_t __pyx_temp_extent_1 = __pyx_v_self->memory.shape[1];
          Py_ssize_t __pyx_temp_stride_1 = __pyx_v_self->memory.strides[1];
          char *__pyx_temp_pointer_1;
          Py_ssize_t __pyx_temp_idx_1;
          Py_ssize_t __pyx_temp_extent_2 = __pyx_v_self->memory.shape[2];
          Py_ssize_t __pyx_temp_stride_2 = __pyx_v_self->memory.strides[2];
          char *__pyx_temp_pointer_2;
          Py_ssize_t __pyx_temp_idx_2;
          __pyx_temp_pointer_0 = __pyx_v_self->memory.data;
          for (__pyx_temp_idx_0 = 0; __pyx_temp_idx_0 < __pyx_temp_extent_0; __pyx_temp_idx_0++) {
            __pyx_temp_pointer_1 = __pyx_temp_pointer_0;
            for (__pyx_temp_idx_1 = 0; __pyx_temp_idx_1 < __pyx_temp_extent_1; __pyx_temp_idx_1++) {
              __pyx_temp_pointer_2 = __pyx_temp_pointer_1;
              for (__pyx_temp_idx_2 = 0; __pyx_temp_idx_2 < __pyx_temp_extent_2; __pyx_temp_idx_2++) {
                *((__pyx_t_5numpy_uint8_t *) __pyx_temp_pointer_2) = __pyx_temp_scalar;
                __pyx_temp_pointer_2 += __pyx_temp_stride_2;
              }
              __pyx_temp_pointer_1 += __pyx_temp_stride_1;
            }
            __pyx_temp_pointer_0 += __pyx_temp_stride_0;
          }
      }
  }
 3084: 
 3085: 
+3086: cdef class VCFGenotypeACUInt16Parser(VCFCallDataParserBase):
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeACUInt16Parser {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase __pyx_base;
  __Pyx_memviewslice memory;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFGenotypeACUInt16Parser {
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataParserBase __pyx_base;
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFGenotypeACUInt16Parser *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFGenotypeACUInt16Parser;

 3087: 
 3088:     cdef:
 3089:         np.uint16_t[:, :, :] memory
 3090: 
+3091:     def __init__(self, *args, **kwargs):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_25VCFGenotypeACUInt16Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_25VCFGenotypeACUInt16Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 1))) return -1;
  __pyx_v_kwargs = (__pyx_kwds) ? PyDict_Copy(__pyx_kwds) : PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return -1;
  __Pyx_GOTREF(__pyx_v_kwargs);
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_25VCFGenotypeACUInt16Parser___init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeACUInt16Parser *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_25VCFGenotypeACUInt16Parser___init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeACUInt16Parser *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
  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_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFGenotypeACUInt16Parser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+3092:         kwargs['dtype'] = 'uint16'
  if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_s_dtype, __pyx_n_s_uint16) < 0)) __PYX_ERR(0, 3092, __pyx_L1_error)
+3093:         kwargs['fill'] = 0
  if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_s_fill, __pyx_int_0) < 0)) __PYX_ERR(0, 3093, __pyx_L1_error)
+3094:         super(VCFGenotypeACUInt16Parser, self).__init__(*args, **kwargs)
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3094, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeACUInt16Parser));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeACUInt16Parser));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeACUInt16Parser));
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self));
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3094, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3094, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_v_args, __pyx_v_kwargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3094, __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;
 3095: 
+3096:     cdef int parse(self, InputStreamBase stream, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_25VCFGenotypeACUInt16Parser_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeACUInt16Parser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFGenotypeACUInt16Parser.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+3097:         vcf_genotype_ac_parse(stream, context, self.memory)
  __pyx_t_1 = __pyx_fuse_5__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_ac_parse(__pyx_v_stream, __pyx_v_context, __pyx_v_self->memory); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 3097, __pyx_L1_error)
 3098: 
+3099:     cdef int malloc_chunk(self) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_25VCFGenotypeACUInt16Parser_malloc_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeACUInt16Parser *__pyx_v_self) {
  PyObject *__pyx_v_shape = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("malloc_chunk", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFGenotypeACUInt16Parser.malloc_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_shape);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+3100:         shape = (self.chunk_length, self.n_samples_out, self.number)
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.chunk_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3100, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.n_samples_out); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3100, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.number); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3100, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3100, __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_2);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_v_shape = __pyx_t_4;
  __pyx_t_4 = 0;
+3101:         self.values = np.empty(shape, dtype=self.dtype)
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3101, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3101, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3101, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_v_shape);
  __Pyx_GIVEREF(__pyx_v_shape);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_shape);
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3101, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->__pyx_base.dtype)) < 0) __PYX_ERR(0, 3101, __pyx_L1_error)
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3101, __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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3101, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.values);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.values));
  __pyx_v_self->__pyx_base.values = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+3102:         self.memory = self.values
  __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsdsds_nn___pyx_t_5numpy_uint16_t(((PyObject *)__pyx_v_self->__pyx_base.values));
  if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 3102, __pyx_L1_error)
  __PYX_XDEC_MEMVIEW(&__pyx_v_self->memory, 0);
  __pyx_v_self->memory = __pyx_t_5;
  __pyx_t_5.memview = NULL;
  __pyx_t_5.data = NULL;
+3103:         self.memory[:] = 0
  {
      __pyx_t_5numpy_uint16_t __pyx_temp_scalar = 0;
      {
          Py_ssize_t __pyx_temp_extent_0 = __pyx_v_self->memory.shape[0];
          Py_ssize_t __pyx_temp_stride_0 = __pyx_v_self->memory.strides[0];
          char *__pyx_temp_pointer_0;
          Py_ssize_t __pyx_temp_idx_0;
          Py_ssize_t __pyx_temp_extent_1 = __pyx_v_self->memory.shape[1];
          Py_ssize_t __pyx_temp_stride_1 = __pyx_v_self->memory.strides[1];
          char *__pyx_temp_pointer_1;
          Py_ssize_t __pyx_temp_idx_1;
          Py_ssize_t __pyx_temp_extent_2 = __pyx_v_self->memory.shape[2];
          Py_ssize_t __pyx_temp_stride_2 = __pyx_v_self->memory.strides[2];
          char *__pyx_temp_pointer_2;
          Py_ssize_t __pyx_temp_idx_2;
          __pyx_temp_pointer_0 = __pyx_v_self->memory.data;
          for (__pyx_temp_idx_0 = 0; __pyx_temp_idx_0 < __pyx_temp_extent_0; __pyx_temp_idx_0++) {
            __pyx_temp_pointer_1 = __pyx_temp_pointer_0;
            for (__pyx_temp_idx_1 = 0; __pyx_temp_idx_1 < __pyx_temp_extent_1; __pyx_temp_idx_1++) {
              __pyx_temp_pointer_2 = __pyx_temp_pointer_1;
              for (__pyx_temp_idx_2 = 0; __pyx_temp_idx_2 < __pyx_temp_extent_2; __pyx_temp_idx_2++) {
                *((__pyx_t_5numpy_uint16_t *) __pyx_temp_pointer_2) = __pyx_temp_scalar;
                __pyx_temp_pointer_2 += __pyx_temp_stride_2;
              }
              __pyx_temp_pointer_1 += __pyx_temp_stride_1;
            }
            __pyx_temp_pointer_0 += __pyx_temp_stride_0;
          }
      }
  }
 3104: 
 3105: 
+3106: cdef class VCFGenotypeACUInt32Parser(VCFCallDataParserBase):
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeACUInt32Parser {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase __pyx_base;
  __Pyx_memviewslice memory;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFGenotypeACUInt32Parser {
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataParserBase __pyx_base;
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFGenotypeACUInt32Parser *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFGenotypeACUInt32Parser;

 3107: 
 3108:     cdef:
 3109:         np.uint32_t[:, :, :] memory
 3110: 
+3111:     def __init__(self, *args, **kwargs):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_25VCFGenotypeACUInt32Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_25VCFGenotypeACUInt32Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 1))) return -1;
  __pyx_v_kwargs = (__pyx_kwds) ? PyDict_Copy(__pyx_kwds) : PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return -1;
  __Pyx_GOTREF(__pyx_v_kwargs);
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_25VCFGenotypeACUInt32Parser___init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeACUInt32Parser *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_25VCFGenotypeACUInt32Parser___init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeACUInt32Parser *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
  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_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFGenotypeACUInt32Parser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+3112:         kwargs['dtype'] = 'uint32'
  if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_s_dtype, __pyx_n_s_uint32) < 0)) __PYX_ERR(0, 3112, __pyx_L1_error)
+3113:         kwargs['fill'] = 0
  if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_s_fill, __pyx_int_0) < 0)) __PYX_ERR(0, 3113, __pyx_L1_error)
+3114:         super(VCFGenotypeACUInt32Parser, self).__init__(*args, **kwargs)
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3114, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeACUInt32Parser));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeACUInt32Parser));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeACUInt32Parser));
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self));
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3114, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3114, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_v_args, __pyx_v_kwargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3114, __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;
 3115: 
+3116:     cdef int parse(self, InputStreamBase stream, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_25VCFGenotypeACUInt32Parser_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeACUInt32Parser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFGenotypeACUInt32Parser.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+3117:         vcf_genotype_ac_parse(stream, context, self.memory)
  __pyx_t_1 = __pyx_fuse_6__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_ac_parse(__pyx_v_stream, __pyx_v_context, __pyx_v_self->memory); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 3117, __pyx_L1_error)
 3118: 
+3119:     cdef int malloc_chunk(self) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_25VCFGenotypeACUInt32Parser_malloc_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeACUInt32Parser *__pyx_v_self) {
  PyObject *__pyx_v_shape = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("malloc_chunk", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFGenotypeACUInt32Parser.malloc_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_shape);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+3120:         shape = (self.chunk_length, self.n_samples_out, self.number)
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.chunk_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3120, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.n_samples_out); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3120, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.number); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3120, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3120, __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_2);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_v_shape = __pyx_t_4;
  __pyx_t_4 = 0;
+3121:         self.values = np.empty(shape, dtype=self.dtype)
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3121, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3121, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3121, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_v_shape);
  __Pyx_GIVEREF(__pyx_v_shape);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_shape);
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3121, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->__pyx_base.dtype)) < 0) __PYX_ERR(0, 3121, __pyx_L1_error)
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3121, __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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3121, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.values);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.values));
  __pyx_v_self->__pyx_base.values = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+3122:         self.memory = self.values
  __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsdsds_nn___pyx_t_5numpy_uint32_t(((PyObject *)__pyx_v_self->__pyx_base.values));
  if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 3122, __pyx_L1_error)
  __PYX_XDEC_MEMVIEW(&__pyx_v_self->memory, 0);
  __pyx_v_self->memory = __pyx_t_5;
  __pyx_t_5.memview = NULL;
  __pyx_t_5.data = NULL;
+3123:         self.memory[:] = 0
  {
      __pyx_t_5numpy_uint32_t __pyx_temp_scalar = 0;
      {
          Py_ssize_t __pyx_temp_extent_0 = __pyx_v_self->memory.shape[0];
          Py_ssize_t __pyx_temp_stride_0 = __pyx_v_self->memory.strides[0];
          char *__pyx_temp_pointer_0;
          Py_ssize_t __pyx_temp_idx_0;
          Py_ssize_t __pyx_temp_extent_1 = __pyx_v_self->memory.shape[1];
          Py_ssize_t __pyx_temp_stride_1 = __pyx_v_self->memory.strides[1];
          char *__pyx_temp_pointer_1;
          Py_ssize_t __pyx_temp_idx_1;
          Py_ssize_t __pyx_temp_extent_2 = __pyx_v_self->memory.shape[2];
          Py_ssize_t __pyx_temp_stride_2 = __pyx_v_self->memory.strides[2];
          char *__pyx_temp_pointer_2;
          Py_ssize_t __pyx_temp_idx_2;
          __pyx_temp_pointer_0 = __pyx_v_self->memory.data;
          for (__pyx_temp_idx_0 = 0; __pyx_temp_idx_0 < __pyx_temp_extent_0; __pyx_temp_idx_0++) {
            __pyx_temp_pointer_1 = __pyx_temp_pointer_0;
            for (__pyx_temp_idx_1 = 0; __pyx_temp_idx_1 < __pyx_temp_extent_1; __pyx_temp_idx_1++) {
              __pyx_temp_pointer_2 = __pyx_temp_pointer_1;
              for (__pyx_temp_idx_2 = 0; __pyx_temp_idx_2 < __pyx_temp_extent_2; __pyx_temp_idx_2++) {
                *((__pyx_t_5numpy_uint32_t *) __pyx_temp_pointer_2) = __pyx_temp_scalar;
                __pyx_temp_pointer_2 += __pyx_temp_stride_2;
              }
              __pyx_temp_pointer_1 += __pyx_temp_stride_1;
            }
            __pyx_temp_pointer_0 += __pyx_temp_stride_0;
          }
      }
  }
 3124: 
 3125: 
+3126: cdef class VCFGenotypeACUInt64Parser(VCFCallDataParserBase):
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeACUInt64Parser {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase __pyx_base;
  __Pyx_memviewslice memory;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFGenotypeACUInt64Parser {
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataParserBase __pyx_base;
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFGenotypeACUInt64Parser *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFGenotypeACUInt64Parser;

 3127: 
 3128:     cdef:
 3129:         np.uint64_t[:, :, :] memory
 3130: 
+3131:     def __init__(self, *args, **kwargs):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_25VCFGenotypeACUInt64Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_25VCFGenotypeACUInt64Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 1))) return -1;
  __pyx_v_kwargs = (__pyx_kwds) ? PyDict_Copy(__pyx_kwds) : PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return -1;
  __Pyx_GOTREF(__pyx_v_kwargs);
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_25VCFGenotypeACUInt64Parser___init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeACUInt64Parser *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_25VCFGenotypeACUInt64Parser___init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeACUInt64Parser *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
  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_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFGenotypeACUInt64Parser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+3132:         kwargs['dtype'] = 'uint64'
  if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_s_dtype, __pyx_n_s_uint64) < 0)) __PYX_ERR(0, 3132, __pyx_L1_error)
+3133:         kwargs['fill'] = 0
  if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_s_fill, __pyx_int_0) < 0)) __PYX_ERR(0, 3133, __pyx_L1_error)
+3134:         super(VCFGenotypeACUInt64Parser, self).__init__(*args, **kwargs)
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3134, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeACUInt64Parser));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeACUInt64Parser));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFGenotypeACUInt64Parser));
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self));
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3134, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3134, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_v_args, __pyx_v_kwargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3134, __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;
 3135: 
+3136:     cdef int parse(self, InputStreamBase stream, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_25VCFGenotypeACUInt64Parser_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeACUInt64Parser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFGenotypeACUInt64Parser.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+3137:         vcf_genotype_ac_parse(stream, context, self.memory)
  __pyx_t_1 = __pyx_fuse_7__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_ac_parse(__pyx_v_stream, __pyx_v_context, __pyx_v_self->memory); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 3137, __pyx_L1_error)
 3138: 
+3139:     cdef int malloc_chunk(self) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_25VCFGenotypeACUInt64Parser_malloc_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFGenotypeACUInt64Parser *__pyx_v_self) {
  PyObject *__pyx_v_shape = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("malloc_chunk", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFGenotypeACUInt64Parser.malloc_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_shape);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+3140:         shape = (self.chunk_length, self.n_samples_out, self.number)
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.chunk_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3140, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.n_samples_out); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3140, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.number); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3140, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3140, __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_2);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_v_shape = __pyx_t_4;
  __pyx_t_4 = 0;
+3141:         self.values = np.empty(shape, dtype=self.dtype)
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3141, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3141, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3141, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_v_shape);
  __Pyx_GIVEREF(__pyx_v_shape);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_shape);
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3141, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->__pyx_base.dtype)) < 0) __PYX_ERR(0, 3141, __pyx_L1_error)
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3141, __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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3141, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.values);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.values));
  __pyx_v_self->__pyx_base.values = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+3142:         self.memory = self.values
  __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsdsds_nn___pyx_t_5numpy_uint64_t(((PyObject *)__pyx_v_self->__pyx_base.values));
  if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 3142, __pyx_L1_error)
  __PYX_XDEC_MEMVIEW(&__pyx_v_self->memory, 0);
  __pyx_v_self->memory = __pyx_t_5;
  __pyx_t_5.memview = NULL;
  __pyx_t_5.data = NULL;
+3143:         self.memory[:] = 0
  {
      __pyx_t_5numpy_uint64_t __pyx_temp_scalar = 0;
      {
          Py_ssize_t __pyx_temp_extent_0 = __pyx_v_self->memory.shape[0];
          Py_ssize_t __pyx_temp_stride_0 = __pyx_v_self->memory.strides[0];
          char *__pyx_temp_pointer_0;
          Py_ssize_t __pyx_temp_idx_0;
          Py_ssize_t __pyx_temp_extent_1 = __pyx_v_self->memory.shape[1];
          Py_ssize_t __pyx_temp_stride_1 = __pyx_v_self->memory.strides[1];
          char *__pyx_temp_pointer_1;
          Py_ssize_t __pyx_temp_idx_1;
          Py_ssize_t __pyx_temp_extent_2 = __pyx_v_self->memory.shape[2];
          Py_ssize_t __pyx_temp_stride_2 = __pyx_v_self->memory.strides[2];
          char *__pyx_temp_pointer_2;
          Py_ssize_t __pyx_temp_idx_2;
          __pyx_temp_pointer_0 = __pyx_v_self->memory.data;
          for (__pyx_temp_idx_0 = 0; __pyx_temp_idx_0 < __pyx_temp_extent_0; __pyx_temp_idx_0++) {
            __pyx_temp_pointer_1 = __pyx_temp_pointer_0;
            for (__pyx_temp_idx_1 = 0; __pyx_temp_idx_1 < __pyx_temp_extent_1; __pyx_temp_idx_1++) {
              __pyx_temp_pointer_2 = __pyx_temp_pointer_1;
              for (__pyx_temp_idx_2 = 0; __pyx_temp_idx_2 < __pyx_temp_extent_2; __pyx_temp_idx_2++) {
                *((__pyx_t_5numpy_uint64_t *) __pyx_temp_pointer_2) = __pyx_temp_scalar;
                __pyx_temp_pointer_2 += __pyx_temp_stride_2;
              }
              __pyx_temp_pointer_1 += __pyx_temp_stride_1;
            }
            __pyx_temp_pointer_0 += __pyx_temp_stride_0;
          }
      }
  }
 3144: 
 3145: 
+3146: cdef int vcf_genotype_ac_parse(InputStreamBase stream,
static int __pyx_fuse_0__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_ac_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, __Pyx_memviewslice __pyx_v_memory) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_0vcf_genotype_ac_parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_genotype_ac_parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_fuse_1__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_ac_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, __Pyx_memviewslice __pyx_v_memory) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_1vcf_genotype_ac_parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_genotype_ac_parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_fuse_2__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_ac_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, __Pyx_memviewslice __pyx_v_memory) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_2vcf_genotype_ac_parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_genotype_ac_parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_fuse_3__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_ac_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, __Pyx_memviewslice __pyx_v_memory) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_3vcf_genotype_ac_parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_genotype_ac_parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_fuse_4__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_ac_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, __Pyx_memviewslice __pyx_v_memory) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_4vcf_genotype_ac_parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_genotype_ac_parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_fuse_5__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_ac_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, __Pyx_memviewslice __pyx_v_memory) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_5vcf_genotype_ac_parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_genotype_ac_parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_fuse_6__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_ac_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, __Pyx_memviewslice __pyx_v_memory) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_6vcf_genotype_ac_parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_genotype_ac_parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_fuse_7__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_ac_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, __Pyx_memviewslice __pyx_v_memory) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_7vcf_genotype_ac_parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_genotype_ac_parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 3147:                                VCFContext context,
 3148:                                integer[:, :, :] memory) except -1:  # nogil
 3149:     # reset temporary buffer
+3150:     CharVector_clear(&context.temp)
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->temp));
/* … */
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->temp));
/* … */
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->temp));
/* … */
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->temp));
/* … */
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->temp));
/* … */
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->temp));
/* … */
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->temp));
/* … */
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->temp));
 3151: 
+3152:     while True:
  while (1) {
/* … */
  while (1) {
/* … */
  while (1) {
/* … */
  while (1) {
/* … */
  while (1) {
/* … */
  while (1) {
/* … */
  while (1) {
/* … */
  while (1) {
 3153: 
+3154:         if stream.c == SLASH or stream.c == PIPE:
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_SLASH) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_PIPE) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L6_bool_binop_done:;
    if (__pyx_t_1) {
/* … */
      goto __pyx_L5;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_SLASH) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_PIPE) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L6_bool_binop_done:;
    if (__pyx_t_1) {
/* … */
      goto __pyx_L5;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_SLASH) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_PIPE) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L6_bool_binop_done:;
    if (__pyx_t_1) {
/* … */
      goto __pyx_L5;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_SLASH) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_PIPE) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L6_bool_binop_done:;
    if (__pyx_t_1) {
/* … */
      goto __pyx_L5;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_SLASH) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_PIPE) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L6_bool_binop_done:;
    if (__pyx_t_1) {
/* … */
      goto __pyx_L5;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_SLASH) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_PIPE) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L6_bool_binop_done:;
    if (__pyx_t_1) {
/* … */
      goto __pyx_L5;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_SLASH) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_PIPE) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L6_bool_binop_done:;
    if (__pyx_t_1) {
/* … */
      goto __pyx_L5;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_SLASH) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_PIPE) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L6_bool_binop_done:;
    if (__pyx_t_1) {
/* … */
      goto __pyx_L5;
    }
+3155:             vcf_genotype_ac_store(context, memory)
      __pyx_t_3 = __pyx_fuse_0__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_ac_store(__pyx_v_context, __pyx_v_memory); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 3155, __pyx_L1_error)
/* … */
      __pyx_t_3 = __pyx_fuse_1__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_ac_store(__pyx_v_context, __pyx_v_memory); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 3155, __pyx_L1_error)
/* … */
      __pyx_t_3 = __pyx_fuse_2__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_ac_store(__pyx_v_context, __pyx_v_memory); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 3155, __pyx_L1_error)
/* … */
      __pyx_t_3 = __pyx_fuse_3__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_ac_store(__pyx_v_context, __pyx_v_memory); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 3155, __pyx_L1_error)
/* … */
      __pyx_t_3 = __pyx_fuse_4__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_ac_store(__pyx_v_context, __pyx_v_memory); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 3155, __pyx_L1_error)
/* … */
      __pyx_t_3 = __pyx_fuse_5__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_ac_store(__pyx_v_context, __pyx_v_memory); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 3155, __pyx_L1_error)
/* … */
      __pyx_t_3 = __pyx_fuse_6__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_ac_store(__pyx_v_context, __pyx_v_memory); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 3155, __pyx_L1_error)
/* … */
      __pyx_t_3 = __pyx_fuse_7__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_ac_store(__pyx_v_context, __pyx_v_memory); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 3155, __pyx_L1_error)
+3156:             CharVector_clear(&context.temp)
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->temp));
/* … */
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->temp));
/* … */
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->temp));
/* … */
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->temp));
/* … */
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->temp));
/* … */
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->temp));
/* … */
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->temp));
/* … */
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->temp));
 3157: 
+3158:         elif stream.c == COLON or \
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_COLON) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
/* … */
    if (__pyx_t_1) {
/* … */
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_COLON) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
/* … */
    if (__pyx_t_1) {
/* … */
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_COLON) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
/* … */
    if (__pyx_t_1) {
/* … */
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_COLON) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
/* … */
    if (__pyx_t_1) {
/* … */
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_COLON) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
/* … */
    if (__pyx_t_1) {
/* … */
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_COLON) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
/* … */
    if (__pyx_t_1) {
/* … */
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_COLON) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
/* … */
    if (__pyx_t_1) {
/* … */
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_COLON) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
/* … */
    if (__pyx_t_1) {
/* … */
    }
+3159:                 stream.c == TAB or \
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_TAB) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_TAB) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_TAB) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_TAB) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_TAB) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_TAB) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_TAB) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_TAB) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
+3160:                 stream.c == LF or \
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
+3161:                 stream.c == CR or \
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_CR) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_CR) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_CR) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_CR) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_CR) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_CR) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_CR) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_CR) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L8_bool_binop_done;
    }
+3162:                 stream.c == 0:
    __pyx_t_2 = ((__pyx_v_stream->c == 0) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L8_bool_binop_done:;
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == 0) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L8_bool_binop_done:;
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == 0) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L8_bool_binop_done:;
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == 0) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L8_bool_binop_done:;
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == 0) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L8_bool_binop_done:;
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == 0) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L8_bool_binop_done:;
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == 0) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L8_bool_binop_done:;
/* … */
    __pyx_t_2 = ((__pyx_v_stream->c == 0) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L8_bool_binop_done:;
+3163:             vcf_genotype_ac_store(context, memory)
      __pyx_t_3 = __pyx_fuse_0__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_ac_store(__pyx_v_context, __pyx_v_memory); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 3163, __pyx_L1_error)
/* … */
      __pyx_t_3 = __pyx_fuse_1__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_ac_store(__pyx_v_context, __pyx_v_memory); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 3163, __pyx_L1_error)
/* … */
      __pyx_t_3 = __pyx_fuse_2__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_ac_store(__pyx_v_context, __pyx_v_memory); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 3163, __pyx_L1_error)
/* … */
      __pyx_t_3 = __pyx_fuse_3__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_ac_store(__pyx_v_context, __pyx_v_memory); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 3163, __pyx_L1_error)
/* … */
      __pyx_t_3 = __pyx_fuse_4__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_ac_store(__pyx_v_context, __pyx_v_memory); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 3163, __pyx_L1_error)
/* … */
      __pyx_t_3 = __pyx_fuse_5__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_ac_store(__pyx_v_context, __pyx_v_memory); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 3163, __pyx_L1_error)
/* … */
      __pyx_t_3 = __pyx_fuse_6__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_ac_store(__pyx_v_context, __pyx_v_memory); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 3163, __pyx_L1_error)
/* … */
      __pyx_t_3 = __pyx_fuse_7__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_ac_store(__pyx_v_context, __pyx_v_memory); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 3163, __pyx_L1_error)
+3164:             break
      goto __pyx_L4_break;
/* … */
      goto __pyx_L4_break;
/* … */
      goto __pyx_L4_break;
/* … */
      goto __pyx_L4_break;
/* … */
      goto __pyx_L4_break;
/* … */
      goto __pyx_L4_break;
/* … */
      goto __pyx_L4_break;
/* … */
      goto __pyx_L4_break;
 3165: 
 3166:         else:
+3167:             CharVector_append(&context.temp, stream.c)
    /*else*/ {
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_append((&__pyx_v_context->temp), __pyx_v_stream->c);
    }
    __pyx_L5:;
/* … */
    /*else*/ {
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_append((&__pyx_v_context->temp), __pyx_v_stream->c);
    }
    __pyx_L5:;
/* … */
    /*else*/ {
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_append((&__pyx_v_context->temp), __pyx_v_stream->c);
    }
    __pyx_L5:;
/* … */
    /*else*/ {
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_append((&__pyx_v_context->temp), __pyx_v_stream->c);
    }
    __pyx_L5:;
/* … */
    /*else*/ {
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_append((&__pyx_v_context->temp), __pyx_v_stream->c);
    }
    __pyx_L5:;
/* … */
    /*else*/ {
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_append((&__pyx_v_context->temp), __pyx_v_stream->c);
    }
    __pyx_L5:;
/* … */
    /*else*/ {
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_append((&__pyx_v_context->temp), __pyx_v_stream->c);
    }
    __pyx_L5:;
/* … */
    /*else*/ {
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_append((&__pyx_v_context->temp), __pyx_v_stream->c);
    }
    __pyx_L5:;
 3168: 
+3169:         stream.advance()
    __pyx_t_3 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 3169, __pyx_L1_error)
  }
  __pyx_L4_break:;
/* … */
    __pyx_t_3 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 3169, __pyx_L1_error)
  }
  __pyx_L4_break:;
/* … */
    __pyx_t_3 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 3169, __pyx_L1_error)
  }
  __pyx_L4_break:;
/* … */
    __pyx_t_3 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 3169, __pyx_L1_error)
  }
  __pyx_L4_break:;
/* … */
    __pyx_t_3 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 3169, __pyx_L1_error)
  }
  __pyx_L4_break:;
/* … */
    __pyx_t_3 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 3169, __pyx_L1_error)
  }
  __pyx_L4_break:;
/* … */
    __pyx_t_3 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 3169, __pyx_L1_error)
  }
  __pyx_L4_break:;
/* … */
    __pyx_t_3 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 3169, __pyx_L1_error)
  }
  __pyx_L4_break:;
 3170: 
 3171: 
+3172: cdef int vcf_genotype_ac_store(VCFContext context,
static int __pyx_fuse_0__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_ac_store(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, __Pyx_memviewslice __pyx_v_memory) {
  Py_ssize_t __pyx_v_parsed;
  long __pyx_v_allele;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_0vcf_genotype_ac_store", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_genotype_ac_store", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_fuse_1__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_ac_store(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, __Pyx_memviewslice __pyx_v_memory) {
  Py_ssize_t __pyx_v_parsed;
  long __pyx_v_allele;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_1vcf_genotype_ac_store", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_genotype_ac_store", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_fuse_2__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_ac_store(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, __Pyx_memviewslice __pyx_v_memory) {
  Py_ssize_t __pyx_v_parsed;
  long __pyx_v_allele;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_2vcf_genotype_ac_store", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_genotype_ac_store", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_fuse_3__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_ac_store(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, __Pyx_memviewslice __pyx_v_memory) {
  Py_ssize_t __pyx_v_parsed;
  long __pyx_v_allele;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_3vcf_genotype_ac_store", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_genotype_ac_store", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_fuse_4__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_ac_store(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, __Pyx_memviewslice __pyx_v_memory) {
  Py_ssize_t __pyx_v_parsed;
  long __pyx_v_allele;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_4vcf_genotype_ac_store", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_genotype_ac_store", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_fuse_5__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_ac_store(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, __Pyx_memviewslice __pyx_v_memory) {
  Py_ssize_t __pyx_v_parsed;
  long __pyx_v_allele;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_5vcf_genotype_ac_store", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_genotype_ac_store", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_fuse_6__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_ac_store(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, __Pyx_memviewslice __pyx_v_memory) {
  Py_ssize_t __pyx_v_parsed;
  long __pyx_v_allele;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_6vcf_genotype_ac_store", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_genotype_ac_store", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_fuse_7__pyx_f_5allel_3opt_11io_vcf_read_vcf_genotype_ac_store(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, __Pyx_memviewslice __pyx_v_memory) {
  Py_ssize_t __pyx_v_parsed;
  long __pyx_v_allele;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_7vcf_genotype_ac_store", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_genotype_ac_store", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 3173:                                integer[:, :, :] memory) except -1:  # nogil
 3174:     cdef:
 3175:         Py_ssize_t parsed
 3176:         long allele
 3177: 
 3178:     # attempt to parse allele
+3179:     parsed = vcf_strtol(&context.temp, context, &allele)
  __pyx_t_1 = __pyx_f_5allel_3opt_11io_vcf_read_vcf_strtol((&__pyx_v_context->temp), __pyx_v_context, (&__pyx_v_allele)); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1L))) __PYX_ERR(0, 3179, __pyx_L1_error)
  __pyx_v_parsed = __pyx_t_1;
/* … */
  __pyx_t_1 = __pyx_f_5allel_3opt_11io_vcf_read_vcf_strtol((&__pyx_v_context->temp), __pyx_v_context, (&__pyx_v_allele)); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1L))) __PYX_ERR(0, 3179, __pyx_L1_error)
  __pyx_v_parsed = __pyx_t_1;
/* … */
  __pyx_t_1 = __pyx_f_5allel_3opt_11io_vcf_read_vcf_strtol((&__pyx_v_context->temp), __pyx_v_context, (&__pyx_v_allele)); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1L))) __PYX_ERR(0, 3179, __pyx_L1_error)
  __pyx_v_parsed = __pyx_t_1;
/* … */
  __pyx_t_1 = __pyx_f_5allel_3opt_11io_vcf_read_vcf_strtol((&__pyx_v_context->temp), __pyx_v_context, (&__pyx_v_allele)); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1L))) __PYX_ERR(0, 3179, __pyx_L1_error)
  __pyx_v_parsed = __pyx_t_1;
/* … */
  __pyx_t_1 = __pyx_f_5allel_3opt_11io_vcf_read_vcf_strtol((&__pyx_v_context->temp), __pyx_v_context, (&__pyx_v_allele)); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1L))) __PYX_ERR(0, 3179, __pyx_L1_error)
  __pyx_v_parsed = __pyx_t_1;
/* … */
  __pyx_t_1 = __pyx_f_5allel_3opt_11io_vcf_read_vcf_strtol((&__pyx_v_context->temp), __pyx_v_context, (&__pyx_v_allele)); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1L))) __PYX_ERR(0, 3179, __pyx_L1_error)
  __pyx_v_parsed = __pyx_t_1;
/* … */
  __pyx_t_1 = __pyx_f_5allel_3opt_11io_vcf_read_vcf_strtol((&__pyx_v_context->temp), __pyx_v_context, (&__pyx_v_allele)); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1L))) __PYX_ERR(0, 3179, __pyx_L1_error)
  __pyx_v_parsed = __pyx_t_1;
/* … */
  __pyx_t_1 = __pyx_f_5allel_3opt_11io_vcf_read_vcf_strtol((&__pyx_v_context->temp), __pyx_v_context, (&__pyx_v_allele)); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1L))) __PYX_ERR(0, 3179, __pyx_L1_error)
  __pyx_v_parsed = __pyx_t_1;
 3180: 
 3181:     # store value
+3182:     if parsed > 0 and allele < memory.shape[2]:
  __pyx_t_3 = ((__pyx_v_parsed > 0) != 0);
  if (__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = ((__pyx_v_allele < (__pyx_v_memory.shape[2])) != 0);
  __pyx_t_2 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_2) {
/* … */
  }
/* … */
  __pyx_t_3 = ((__pyx_v_parsed > 0) != 0);
  if (__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = ((__pyx_v_allele < (__pyx_v_memory.shape[2])) != 0);
  __pyx_t_2 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_2) {
/* … */
  }
/* … */
  __pyx_t_3 = ((__pyx_v_parsed > 0) != 0);
  if (__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = ((__pyx_v_allele < (__pyx_v_memory.shape[2])) != 0);
  __pyx_t_2 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_2) {
/* … */
  }
/* … */
  __pyx_t_3 = ((__pyx_v_parsed > 0) != 0);
  if (__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = ((__pyx_v_allele < (__pyx_v_memory.shape[2])) != 0);
  __pyx_t_2 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_2) {
/* … */
  }
/* … */
  __pyx_t_3 = ((__pyx_v_parsed > 0) != 0);
  if (__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = ((__pyx_v_allele < (__pyx_v_memory.shape[2])) != 0);
  __pyx_t_2 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_2) {
/* … */
  }
/* … */
  __pyx_t_3 = ((__pyx_v_parsed > 0) != 0);
  if (__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = ((__pyx_v_allele < (__pyx_v_memory.shape[2])) != 0);
  __pyx_t_2 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_2) {
/* … */
  }
/* … */
  __pyx_t_3 = ((__pyx_v_parsed > 0) != 0);
  if (__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = ((__pyx_v_allele < (__pyx_v_memory.shape[2])) != 0);
  __pyx_t_2 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_2) {
/* … */
  }
/* … */
  __pyx_t_3 = ((__pyx_v_parsed > 0) != 0);
  if (__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = ((__pyx_v_allele < (__pyx_v_memory.shape[2])) != 0);
  __pyx_t_2 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_2) {
/* … */
  }
+3183:         memory[context.chunk_variant_index, context.sample_output_index, allele] += 1
    __pyx_t_4 = __pyx_v_context->chunk_variant_index;
    __pyx_t_5 = __pyx_v_context->sample_output_index;
    __pyx_t_6 = __pyx_v_allele;
    *((__pyx_t_5numpy_int8_t *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_memory.data + __pyx_t_4 * __pyx_v_memory.strides[0]) ) + __pyx_t_5 * __pyx_v_memory.strides[1]) ) + __pyx_t_6 * __pyx_v_memory.strides[2]) )) += 1;
/* … */
    __pyx_t_4 = __pyx_v_context->chunk_variant_index;
    __pyx_t_5 = __pyx_v_context->sample_output_index;
    __pyx_t_6 = __pyx_v_allele;
    *((__pyx_t_5numpy_int16_t *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_memory.data + __pyx_t_4 * __pyx_v_memory.strides[0]) ) + __pyx_t_5 * __pyx_v_memory.strides[1]) ) + __pyx_t_6 * __pyx_v_memory.strides[2]) )) += 1;
/* … */
    __pyx_t_4 = __pyx_v_context->chunk_variant_index;
    __pyx_t_5 = __pyx_v_context->sample_output_index;
    __pyx_t_6 = __pyx_v_allele;
    *((__pyx_t_5numpy_int32_t *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_memory.data + __pyx_t_4 * __pyx_v_memory.strides[0]) ) + __pyx_t_5 * __pyx_v_memory.strides[1]) ) + __pyx_t_6 * __pyx_v_memory.strides[2]) )) += 1;
/* … */
    __pyx_t_4 = __pyx_v_context->chunk_variant_index;
    __pyx_t_5 = __pyx_v_context->sample_output_index;
    __pyx_t_6 = __pyx_v_allele;
    *((__pyx_t_5numpy_int64_t *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_memory.data + __pyx_t_4 * __pyx_v_memory.strides[0]) ) + __pyx_t_5 * __pyx_v_memory.strides[1]) ) + __pyx_t_6 * __pyx_v_memory.strides[2]) )) += 1;
/* … */
    __pyx_t_4 = __pyx_v_context->chunk_variant_index;
    __pyx_t_5 = __pyx_v_context->sample_output_index;
    __pyx_t_6 = __pyx_v_allele;
    *((__pyx_t_5numpy_uint8_t *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_memory.data + __pyx_t_4 * __pyx_v_memory.strides[0]) ) + __pyx_t_5 * __pyx_v_memory.strides[1]) ) + __pyx_t_6 * __pyx_v_memory.strides[2]) )) += 1;
/* … */
    __pyx_t_4 = __pyx_v_context->chunk_variant_index;
    __pyx_t_5 = __pyx_v_context->sample_output_index;
    __pyx_t_6 = __pyx_v_allele;
    *((__pyx_t_5numpy_uint16_t *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_memory.data + __pyx_t_4 * __pyx_v_memory.strides[0]) ) + __pyx_t_5 * __pyx_v_memory.strides[1]) ) + __pyx_t_6 * __pyx_v_memory.strides[2]) )) += 1;
/* … */
    __pyx_t_4 = __pyx_v_context->chunk_variant_index;
    __pyx_t_5 = __pyx_v_context->sample_output_index;
    __pyx_t_6 = __pyx_v_allele;
    *((__pyx_t_5numpy_uint32_t *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_memory.data + __pyx_t_4 * __pyx_v_memory.strides[0]) ) + __pyx_t_5 * __pyx_v_memory.strides[1]) ) + __pyx_t_6 * __pyx_v_memory.strides[2]) )) += 1;
/* … */
    __pyx_t_4 = __pyx_v_context->chunk_variant_index;
    __pyx_t_5 = __pyx_v_context->sample_output_index;
    __pyx_t_6 = __pyx_v_allele;
    *((__pyx_t_5numpy_uint64_t *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_memory.data + __pyx_t_4 * __pyx_v_memory.strides[0]) ) + __pyx_t_5 * __pyx_v_memory.strides[1]) ) + __pyx_t_6 * __pyx_v_memory.strides[2]) )) += 1;
 3184: 
 3185: 
+3186: cdef class VCFCallDataInt8Parser(VCFCallDataParserBase):
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataInt8Parser {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase __pyx_base;
  __Pyx_memviewslice memory;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataInt8Parser {
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataParserBase __pyx_base;
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataInt8Parser *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFCallDataInt8Parser;

 3187: 
 3188:     cdef np.int8_t[:, :, :] memory
 3189: 
+3190:     def __init__(self, *args, **kwargs):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_21VCFCallDataInt8Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_21VCFCallDataInt8Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 1))) return -1;
  __pyx_v_kwargs = (__pyx_kwds) ? PyDict_Copy(__pyx_kwds) : PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return -1;
  __Pyx_GOTREF(__pyx_v_kwargs);
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_21VCFCallDataInt8Parser___init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataInt8Parser *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_21VCFCallDataInt8Parser___init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataInt8Parser *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
  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_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFCallDataInt8Parser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+3191:         kwargs['dtype'] = 'int8'
  if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_s_dtype, __pyx_n_s_int8) < 0)) __PYX_ERR(0, 3191, __pyx_L1_error)
+3192:         kwargs.setdefault('fill', -1)
  __pyx_t_1 = __Pyx_PyDict_SetDefault(__pyx_v_kwargs, __pyx_n_s_fill, __pyx_int_neg_1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3193:         super(VCFCallDataInt8Parser, self).__init__(*args, **kwargs)
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3193, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFCallDataInt8Parser));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFCallDataInt8Parser));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFCallDataInt8Parser));
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self));
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3193, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3193, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_v_args, __pyx_v_kwargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3193, __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;
 3194: 
+3195:     cdef int parse(self, InputStreamBase stream, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_21VCFCallDataInt8Parser_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataInt8Parser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFCallDataInt8Parser.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+3196:         vcf_calldata_parse_integer(stream, context, self.memory)
  __pyx_t_1 = __pyx_fuse_0__pyx_f_5allel_3opt_11io_vcf_read_vcf_calldata_parse_integer(__pyx_v_stream, __pyx_v_context, __pyx_v_self->memory); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 3196, __pyx_L1_error)
 3197: 
+3198:     cdef int malloc_chunk(self) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_21VCFCallDataInt8Parser_malloc_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataInt8Parser *__pyx_v_self) {
  PyObject *__pyx_v_shape = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("malloc_chunk", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFCallDataInt8Parser.malloc_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_shape);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+3199:         shape = (self.chunk_length, self.n_samples_out, self.number)
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.chunk_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3199, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.n_samples_out); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3199, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.number); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3199, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3199, __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_2);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_v_shape = __pyx_t_4;
  __pyx_t_4 = 0;
+3200:         self.values = np.empty(shape, dtype=self.dtype)
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3200, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3200, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3200, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_v_shape);
  __Pyx_GIVEREF(__pyx_v_shape);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_shape);
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3200, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->__pyx_base.dtype)) < 0) __PYX_ERR(0, 3200, __pyx_L1_error)
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3200, __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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3200, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.values);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.values));
  __pyx_v_self->__pyx_base.values = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+3201:         self.memory = self.values
  __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsdsds_nn___pyx_t_5numpy_int8_t(((PyObject *)__pyx_v_self->__pyx_base.values));
  if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 3201, __pyx_L1_error)
  __PYX_XDEC_MEMVIEW(&__pyx_v_self->memory, 0);
  __pyx_v_self->memory = __pyx_t_5;
  __pyx_t_5.memview = NULL;
  __pyx_t_5.data = NULL;
+3202:         self.memory[:] = self.fill
  __pyx_t_6 = __Pyx_PyInt_As_npy_int8(__pyx_v_self->__pyx_base.fill); if (unlikely((__pyx_t_6 == ((npy_int8)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3202, __pyx_L1_error)
  {
      __pyx_t_5numpy_int8_t __pyx_temp_scalar = __pyx_t_6;
      {
          Py_ssize_t __pyx_temp_extent_0 = __pyx_v_self->memory.shape[0];
          Py_ssize_t __pyx_temp_stride_0 = __pyx_v_self->memory.strides[0];
          char *__pyx_temp_pointer_0;
          Py_ssize_t __pyx_temp_idx_0;
          Py_ssize_t __pyx_temp_extent_1 = __pyx_v_self->memory.shape[1];
          Py_ssize_t __pyx_temp_stride_1 = __pyx_v_self->memory.strides[1];
          char *__pyx_temp_pointer_1;
          Py_ssize_t __pyx_temp_idx_1;
          Py_ssize_t __pyx_temp_extent_2 = __pyx_v_self->memory.shape[2];
          Py_ssize_t __pyx_temp_stride_2 = __pyx_v_self->memory.strides[2];
          char *__pyx_temp_pointer_2;
          Py_ssize_t __pyx_temp_idx_2;
          __pyx_temp_pointer_0 = __pyx_v_self->memory.data;
          for (__pyx_temp_idx_0 = 0; __pyx_temp_idx_0 < __pyx_temp_extent_0; __pyx_temp_idx_0++) {
            __pyx_temp_pointer_1 = __pyx_temp_pointer_0;
            for (__pyx_temp_idx_1 = 0; __pyx_temp_idx_1 < __pyx_temp_extent_1; __pyx_temp_idx_1++) {
              __pyx_temp_pointer_2 = __pyx_temp_pointer_1;
              for (__pyx_temp_idx_2 = 0; __pyx_temp_idx_2 < __pyx_temp_extent_2; __pyx_temp_idx_2++) {
                *((__pyx_t_5numpy_int8_t *) __pyx_temp_pointer_2) = __pyx_temp_scalar;
                __pyx_temp_pointer_2 += __pyx_temp_stride_2;
              }
              __pyx_temp_pointer_1 += __pyx_temp_stride_1;
            }
            __pyx_temp_pointer_0 += __pyx_temp_stride_0;
          }
      }
  }
 3203: 
 3204: 
+3205: cdef class VCFCallDataInt16Parser(VCFCallDataParserBase):
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataInt16Parser {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase __pyx_base;
  __Pyx_memviewslice memory;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataInt16Parser {
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataParserBase __pyx_base;
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataInt16Parser *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFCallDataInt16Parser;

 3206: 
 3207:     cdef np.int16_t[:, :, :] memory
 3208: 
+3209:     def __init__(self, *args, **kwargs):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_22VCFCallDataInt16Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_22VCFCallDataInt16Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 1))) return -1;
  __pyx_v_kwargs = (__pyx_kwds) ? PyDict_Copy(__pyx_kwds) : PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return -1;
  __Pyx_GOTREF(__pyx_v_kwargs);
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_22VCFCallDataInt16Parser___init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataInt16Parser *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_22VCFCallDataInt16Parser___init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataInt16Parser *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
  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_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFCallDataInt16Parser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+3210:         kwargs['dtype'] = 'int16'
  if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_s_dtype, __pyx_n_s_int16) < 0)) __PYX_ERR(0, 3210, __pyx_L1_error)
+3211:         kwargs.setdefault('fill', -1)
  __pyx_t_1 = __Pyx_PyDict_SetDefault(__pyx_v_kwargs, __pyx_n_s_fill, __pyx_int_neg_1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3211, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3212:         super(VCFCallDataInt16Parser, self).__init__(*args, **kwargs)
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3212, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFCallDataInt16Parser));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFCallDataInt16Parser));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFCallDataInt16Parser));
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self));
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3212, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3212, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_v_args, __pyx_v_kwargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3212, __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;
 3213: 
+3214:     cdef int parse(self, InputStreamBase stream, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_22VCFCallDataInt16Parser_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataInt16Parser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFCallDataInt16Parser.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+3215:         vcf_calldata_parse_integer(stream, context, self.memory)
  __pyx_t_1 = __pyx_fuse_1__pyx_f_5allel_3opt_11io_vcf_read_vcf_calldata_parse_integer(__pyx_v_stream, __pyx_v_context, __pyx_v_self->memory); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 3215, __pyx_L1_error)
 3216: 
+3217:     cdef int malloc_chunk(self) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_22VCFCallDataInt16Parser_malloc_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataInt16Parser *__pyx_v_self) {
  PyObject *__pyx_v_shape = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("malloc_chunk", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFCallDataInt16Parser.malloc_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_shape);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+3218:         shape = (self.chunk_length, self.n_samples_out, self.number)
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.chunk_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3218, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.n_samples_out); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3218, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.number); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3218, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3218, __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_2);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_v_shape = __pyx_t_4;
  __pyx_t_4 = 0;
+3219:         self.values = np.empty(shape, dtype=self.dtype)
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3219, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3219, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3219, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_v_shape);
  __Pyx_GIVEREF(__pyx_v_shape);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_shape);
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3219, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->__pyx_base.dtype)) < 0) __PYX_ERR(0, 3219, __pyx_L1_error)
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3219, __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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3219, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.values);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.values));
  __pyx_v_self->__pyx_base.values = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+3220:         self.memory = self.values
  __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsdsds_nn___pyx_t_5numpy_int16_t(((PyObject *)__pyx_v_self->__pyx_base.values));
  if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 3220, __pyx_L1_error)
  __PYX_XDEC_MEMVIEW(&__pyx_v_self->memory, 0);
  __pyx_v_self->memory = __pyx_t_5;
  __pyx_t_5.memview = NULL;
  __pyx_t_5.data = NULL;
+3221:         self.memory[:] = self.fill
  __pyx_t_6 = __Pyx_PyInt_As_npy_int16(__pyx_v_self->__pyx_base.fill); if (unlikely((__pyx_t_6 == ((npy_int16)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3221, __pyx_L1_error)
  {
      __pyx_t_5numpy_int16_t __pyx_temp_scalar = __pyx_t_6;
      {
          Py_ssize_t __pyx_temp_extent_0 = __pyx_v_self->memory.shape[0];
          Py_ssize_t __pyx_temp_stride_0 = __pyx_v_self->memory.strides[0];
          char *__pyx_temp_pointer_0;
          Py_ssize_t __pyx_temp_idx_0;
          Py_ssize_t __pyx_temp_extent_1 = __pyx_v_self->memory.shape[1];
          Py_ssize_t __pyx_temp_stride_1 = __pyx_v_self->memory.strides[1];
          char *__pyx_temp_pointer_1;
          Py_ssize_t __pyx_temp_idx_1;
          Py_ssize_t __pyx_temp_extent_2 = __pyx_v_self->memory.shape[2];
          Py_ssize_t __pyx_temp_stride_2 = __pyx_v_self->memory.strides[2];
          char *__pyx_temp_pointer_2;
          Py_ssize_t __pyx_temp_idx_2;
          __pyx_temp_pointer_0 = __pyx_v_self->memory.data;
          for (__pyx_temp_idx_0 = 0; __pyx_temp_idx_0 < __pyx_temp_extent_0; __pyx_temp_idx_0++) {
            __pyx_temp_pointer_1 = __pyx_temp_pointer_0;
            for (__pyx_temp_idx_1 = 0; __pyx_temp_idx_1 < __pyx_temp_extent_1; __pyx_temp_idx_1++) {
              __pyx_temp_pointer_2 = __pyx_temp_pointer_1;
              for (__pyx_temp_idx_2 = 0; __pyx_temp_idx_2 < __pyx_temp_extent_2; __pyx_temp_idx_2++) {
                *((__pyx_t_5numpy_int16_t *) __pyx_temp_pointer_2) = __pyx_temp_scalar;
                __pyx_temp_pointer_2 += __pyx_temp_stride_2;
              }
              __pyx_temp_pointer_1 += __pyx_temp_stride_1;
            }
            __pyx_temp_pointer_0 += __pyx_temp_stride_0;
          }
      }
  }
 3222: 
 3223: 
+3224: cdef class VCFCallDataInt32Parser(VCFCallDataParserBase):
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataInt32Parser {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase __pyx_base;
  __Pyx_memviewslice memory;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataInt32Parser {
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataParserBase __pyx_base;
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataInt32Parser *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFCallDataInt32Parser;

 3225: 
 3226:     cdef np.int32_t[:, :, :] memory
 3227: 
+3228:     def __init__(self, *args, **kwargs):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_22VCFCallDataInt32Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_22VCFCallDataInt32Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 1))) return -1;
  __pyx_v_kwargs = (__pyx_kwds) ? PyDict_Copy(__pyx_kwds) : PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return -1;
  __Pyx_GOTREF(__pyx_v_kwargs);
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_22VCFCallDataInt32Parser___init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataInt32Parser *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_22VCFCallDataInt32Parser___init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataInt32Parser *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
  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_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFCallDataInt32Parser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+3229:         kwargs['dtype'] = 'int32'
  if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_s_dtype, __pyx_n_s_int32) < 0)) __PYX_ERR(0, 3229, __pyx_L1_error)
+3230:         kwargs.setdefault('fill', -1)
  __pyx_t_1 = __Pyx_PyDict_SetDefault(__pyx_v_kwargs, __pyx_n_s_fill, __pyx_int_neg_1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3230, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3231:         super(VCFCallDataInt32Parser, self).__init__(*args, **kwargs)
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3231, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFCallDataInt32Parser));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFCallDataInt32Parser));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFCallDataInt32Parser));
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self));
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3231, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3231, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_v_args, __pyx_v_kwargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3231, __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;
 3232: 
+3233:     cdef int parse(self, InputStreamBase stream, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_22VCFCallDataInt32Parser_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataInt32Parser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFCallDataInt32Parser.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+3234:         vcf_calldata_parse_integer(stream, context, self.memory)
  __pyx_t_1 = __pyx_fuse_2__pyx_f_5allel_3opt_11io_vcf_read_vcf_calldata_parse_integer(__pyx_v_stream, __pyx_v_context, __pyx_v_self->memory); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 3234, __pyx_L1_error)
 3235: 
+3236:     cdef int malloc_chunk(self) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_22VCFCallDataInt32Parser_malloc_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataInt32Parser *__pyx_v_self) {
  PyObject *__pyx_v_shape = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("malloc_chunk", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFCallDataInt32Parser.malloc_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_shape);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+3237:         shape = (self.chunk_length, self.n_samples_out, self.number)
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.chunk_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3237, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.n_samples_out); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3237, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.number); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3237, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3237, __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_2);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_v_shape = __pyx_t_4;
  __pyx_t_4 = 0;
+3238:         self.values = np.empty(shape, dtype=self.dtype)
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3238, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3238, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3238, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_v_shape);
  __Pyx_GIVEREF(__pyx_v_shape);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_shape);
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3238, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->__pyx_base.dtype)) < 0) __PYX_ERR(0, 3238, __pyx_L1_error)
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3238, __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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3238, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.values);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.values));
  __pyx_v_self->__pyx_base.values = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+3239:         self.memory = self.values
  __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsdsds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_self->__pyx_base.values));
  if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 3239, __pyx_L1_error)
  __PYX_XDEC_MEMVIEW(&__pyx_v_self->memory, 0);
  __pyx_v_self->memory = __pyx_t_5;
  __pyx_t_5.memview = NULL;
  __pyx_t_5.data = NULL;
+3240:         self.memory[:] = self.fill
  __pyx_t_6 = __Pyx_PyInt_As_npy_int32(__pyx_v_self->__pyx_base.fill); if (unlikely((__pyx_t_6 == ((npy_int32)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3240, __pyx_L1_error)
  {
      __pyx_t_5numpy_int32_t __pyx_temp_scalar = __pyx_t_6;
      {
          Py_ssize_t __pyx_temp_extent_0 = __pyx_v_self->memory.shape[0];
          Py_ssize_t __pyx_temp_stride_0 = __pyx_v_self->memory.strides[0];
          char *__pyx_temp_pointer_0;
          Py_ssize_t __pyx_temp_idx_0;
          Py_ssize_t __pyx_temp_extent_1 = __pyx_v_self->memory.shape[1];
          Py_ssize_t __pyx_temp_stride_1 = __pyx_v_self->memory.strides[1];
          char *__pyx_temp_pointer_1;
          Py_ssize_t __pyx_temp_idx_1;
          Py_ssize_t __pyx_temp_extent_2 = __pyx_v_self->memory.shape[2];
          Py_ssize_t __pyx_temp_stride_2 = __pyx_v_self->memory.strides[2];
          char *__pyx_temp_pointer_2;
          Py_ssize_t __pyx_temp_idx_2;
          __pyx_temp_pointer_0 = __pyx_v_self->memory.data;
          for (__pyx_temp_idx_0 = 0; __pyx_temp_idx_0 < __pyx_temp_extent_0; __pyx_temp_idx_0++) {
            __pyx_temp_pointer_1 = __pyx_temp_pointer_0;
            for (__pyx_temp_idx_1 = 0; __pyx_temp_idx_1 < __pyx_temp_extent_1; __pyx_temp_idx_1++) {
              __pyx_temp_pointer_2 = __pyx_temp_pointer_1;
              for (__pyx_temp_idx_2 = 0; __pyx_temp_idx_2 < __pyx_temp_extent_2; __pyx_temp_idx_2++) {
                *((__pyx_t_5numpy_int32_t *) __pyx_temp_pointer_2) = __pyx_temp_scalar;
                __pyx_temp_pointer_2 += __pyx_temp_stride_2;
              }
              __pyx_temp_pointer_1 += __pyx_temp_stride_1;
            }
            __pyx_temp_pointer_0 += __pyx_temp_stride_0;
          }
      }
  }
 3241: 
 3242: 
+3243: cdef class VCFCallDataInt64Parser(VCFCallDataParserBase):
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataInt64Parser {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase __pyx_base;
  __Pyx_memviewslice memory;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataInt64Parser {
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataParserBase __pyx_base;
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataInt64Parser *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFCallDataInt64Parser;

 3244: 
 3245:     cdef np.int64_t[:, :, :] memory
 3246: 
+3247:     def __init__(self, *args, **kwargs):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_22VCFCallDataInt64Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_22VCFCallDataInt64Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 1))) return -1;
  __pyx_v_kwargs = (__pyx_kwds) ? PyDict_Copy(__pyx_kwds) : PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return -1;
  __Pyx_GOTREF(__pyx_v_kwargs);
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_22VCFCallDataInt64Parser___init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataInt64Parser *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_22VCFCallDataInt64Parser___init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataInt64Parser *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
  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_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFCallDataInt64Parser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+3248:         kwargs['dtype'] = 'int64'
  if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_s_dtype, __pyx_n_s_int64) < 0)) __PYX_ERR(0, 3248, __pyx_L1_error)
+3249:         kwargs.setdefault('fill', -1)
  __pyx_t_1 = __Pyx_PyDict_SetDefault(__pyx_v_kwargs, __pyx_n_s_fill, __pyx_int_neg_1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3249, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3250:         super(VCFCallDataInt64Parser, self).__init__(*args, **kwargs)
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3250, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFCallDataInt64Parser));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFCallDataInt64Parser));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFCallDataInt64Parser));
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self));
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3250, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3250, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_v_args, __pyx_v_kwargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3250, __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;
 3251: 
+3252:     cdef int parse(self, InputStreamBase stream, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_22VCFCallDataInt64Parser_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataInt64Parser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFCallDataInt64Parser.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+3253:         vcf_calldata_parse_integer(stream, context, self.memory)
  __pyx_t_1 = __pyx_fuse_3__pyx_f_5allel_3opt_11io_vcf_read_vcf_calldata_parse_integer(__pyx_v_stream, __pyx_v_context, __pyx_v_self->memory); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 3253, __pyx_L1_error)
 3254: 
+3255:     cdef int malloc_chunk(self) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_22VCFCallDataInt64Parser_malloc_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataInt64Parser *__pyx_v_self) {
  PyObject *__pyx_v_shape = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("malloc_chunk", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFCallDataInt64Parser.malloc_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_shape);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+3256:         shape = (self.chunk_length, self.n_samples_out, self.number)
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.chunk_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3256, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.n_samples_out); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3256, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.number); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3256, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3256, __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_2);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_v_shape = __pyx_t_4;
  __pyx_t_4 = 0;
+3257:         self.values = np.empty(shape, dtype=self.dtype)
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3257, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3257, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3257, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_v_shape);
  __Pyx_GIVEREF(__pyx_v_shape);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_shape);
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3257, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->__pyx_base.dtype)) < 0) __PYX_ERR(0, 3257, __pyx_L1_error)
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3257, __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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3257, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.values);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.values));
  __pyx_v_self->__pyx_base.values = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+3258:         self.memory = self.values
  __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsdsds_nn___pyx_t_5numpy_int64_t(((PyObject *)__pyx_v_self->__pyx_base.values));
  if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 3258, __pyx_L1_error)
  __PYX_XDEC_MEMVIEW(&__pyx_v_self->memory, 0);
  __pyx_v_self->memory = __pyx_t_5;
  __pyx_t_5.memview = NULL;
  __pyx_t_5.data = NULL;
+3259:         self.memory[:] = self.fill
  __pyx_t_6 = __Pyx_PyInt_As_npy_int64(__pyx_v_self->__pyx_base.fill); if (unlikely((__pyx_t_6 == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3259, __pyx_L1_error)
  {
      __pyx_t_5numpy_int64_t __pyx_temp_scalar = __pyx_t_6;
      {
          Py_ssize_t __pyx_temp_extent_0 = __pyx_v_self->memory.shape[0];
          Py_ssize_t __pyx_temp_stride_0 = __pyx_v_self->memory.strides[0];
          char *__pyx_temp_pointer_0;
          Py_ssize_t __pyx_temp_idx_0;
          Py_ssize_t __pyx_temp_extent_1 = __pyx_v_self->memory.shape[1];
          Py_ssize_t __pyx_temp_stride_1 = __pyx_v_self->memory.strides[1];
          char *__pyx_temp_pointer_1;
          Py_ssize_t __pyx_temp_idx_1;
          Py_ssize_t __pyx_temp_extent_2 = __pyx_v_self->memory.shape[2];
          Py_ssize_t __pyx_temp_stride_2 = __pyx_v_self->memory.strides[2];
          char *__pyx_temp_pointer_2;
          Py_ssize_t __pyx_temp_idx_2;
          __pyx_temp_pointer_0 = __pyx_v_self->memory.data;
          for (__pyx_temp_idx_0 = 0; __pyx_temp_idx_0 < __pyx_temp_extent_0; __pyx_temp_idx_0++) {
            __pyx_temp_pointer_1 = __pyx_temp_pointer_0;
            for (__pyx_temp_idx_1 = 0; __pyx_temp_idx_1 < __pyx_temp_extent_1; __pyx_temp_idx_1++) {
              __pyx_temp_pointer_2 = __pyx_temp_pointer_1;
              for (__pyx_temp_idx_2 = 0; __pyx_temp_idx_2 < __pyx_temp_extent_2; __pyx_temp_idx_2++) {
                *((__pyx_t_5numpy_int64_t *) __pyx_temp_pointer_2) = __pyx_temp_scalar;
                __pyx_temp_pointer_2 += __pyx_temp_stride_2;
              }
              __pyx_temp_pointer_1 += __pyx_temp_stride_1;
            }
            __pyx_temp_pointer_0 += __pyx_temp_stride_0;
          }
      }
  }
 3260: 
 3261: 
+3262: cdef class VCFCallDataUInt8Parser(VCFCallDataParserBase):
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataUInt8Parser {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase __pyx_base;
  __Pyx_memviewslice memory;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataUInt8Parser {
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataParserBase __pyx_base;
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataUInt8Parser *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFCallDataUInt8Parser;

 3263: 
 3264:     cdef np.uint8_t[:, :, :] memory
 3265: 
+3266:     def __init__(self, *args, **kwargs):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_22VCFCallDataUInt8Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_22VCFCallDataUInt8Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 1))) return -1;
  __pyx_v_kwargs = (__pyx_kwds) ? PyDict_Copy(__pyx_kwds) : PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return -1;
  __Pyx_GOTREF(__pyx_v_kwargs);
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_22VCFCallDataUInt8Parser___init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataUInt8Parser *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_22VCFCallDataUInt8Parser___init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataUInt8Parser *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
  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_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFCallDataUInt8Parser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+3267:         kwargs['dtype'] = 'uint8'
  if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_s_dtype, __pyx_n_s_uint8) < 0)) __PYX_ERR(0, 3267, __pyx_L1_error)
+3268:         kwargs.setdefault('fill', IU8.max)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_IU8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3268, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_max); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3268, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyDict_SetDefault(__pyx_v_kwargs, __pyx_n_s_fill, __pyx_t_2, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3268, __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;
+3269:         super(VCFCallDataUInt8Parser, self).__init__(*args, **kwargs)
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3269, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFCallDataUInt8Parser));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFCallDataUInt8Parser));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFCallDataUInt8Parser));
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self));
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3269, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3269, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_v_args, __pyx_v_kwargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3269, __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;
 3270: 
+3271:     cdef int parse(self, InputStreamBase stream, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_22VCFCallDataUInt8Parser_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataUInt8Parser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFCallDataUInt8Parser.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+3272:         vcf_calldata_parse_integer(stream, context, self.memory)
  __pyx_t_1 = __pyx_fuse_4__pyx_f_5allel_3opt_11io_vcf_read_vcf_calldata_parse_integer(__pyx_v_stream, __pyx_v_context, __pyx_v_self->memory); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 3272, __pyx_L1_error)
 3273: 
+3274:     cdef int malloc_chunk(self) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_22VCFCallDataUInt8Parser_malloc_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataUInt8Parser *__pyx_v_self) {
  PyObject *__pyx_v_shape = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("malloc_chunk", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFCallDataUInt8Parser.malloc_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_shape);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+3275:         shape = (self.chunk_length, self.n_samples_out, self.number)
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.chunk_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3275, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.n_samples_out); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3275, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.number); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3275, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3275, __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_2);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_v_shape = __pyx_t_4;
  __pyx_t_4 = 0;
+3276:         self.values = np.empty(shape, dtype=self.dtype)
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3276, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3276, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3276, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_v_shape);
  __Pyx_GIVEREF(__pyx_v_shape);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_shape);
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3276, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->__pyx_base.dtype)) < 0) __PYX_ERR(0, 3276, __pyx_L1_error)
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3276, __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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3276, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.values);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.values));
  __pyx_v_self->__pyx_base.values = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+3277:         self.memory = self.values
  __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsdsds_nn___pyx_t_5numpy_uint8_t(((PyObject *)__pyx_v_self->__pyx_base.values));
  if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 3277, __pyx_L1_error)
  __PYX_XDEC_MEMVIEW(&__pyx_v_self->memory, 0);
  __pyx_v_self->memory = __pyx_t_5;
  __pyx_t_5.memview = NULL;
  __pyx_t_5.data = NULL;
+3278:         self.memory[:] = self.fill
  __pyx_t_6 = __Pyx_PyInt_As_npy_uint8(__pyx_v_self->__pyx_base.fill); if (unlikely((__pyx_t_6 == ((npy_uint8)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3278, __pyx_L1_error)
  {
      __pyx_t_5numpy_uint8_t __pyx_temp_scalar = __pyx_t_6;
      {
          Py_ssize_t __pyx_temp_extent_0 = __pyx_v_self->memory.shape[0];
          Py_ssize_t __pyx_temp_stride_0 = __pyx_v_self->memory.strides[0];
          char *__pyx_temp_pointer_0;
          Py_ssize_t __pyx_temp_idx_0;
          Py_ssize_t __pyx_temp_extent_1 = __pyx_v_self->memory.shape[1];
          Py_ssize_t __pyx_temp_stride_1 = __pyx_v_self->memory.strides[1];
          char *__pyx_temp_pointer_1;
          Py_ssize_t __pyx_temp_idx_1;
          Py_ssize_t __pyx_temp_extent_2 = __pyx_v_self->memory.shape[2];
          Py_ssize_t __pyx_temp_stride_2 = __pyx_v_self->memory.strides[2];
          char *__pyx_temp_pointer_2;
          Py_ssize_t __pyx_temp_idx_2;
          __pyx_temp_pointer_0 = __pyx_v_self->memory.data;
          for (__pyx_temp_idx_0 = 0; __pyx_temp_idx_0 < __pyx_temp_extent_0; __pyx_temp_idx_0++) {
            __pyx_temp_pointer_1 = __pyx_temp_pointer_0;
            for (__pyx_temp_idx_1 = 0; __pyx_temp_idx_1 < __pyx_temp_extent_1; __pyx_temp_idx_1++) {
              __pyx_temp_pointer_2 = __pyx_temp_pointer_1;
              for (__pyx_temp_idx_2 = 0; __pyx_temp_idx_2 < __pyx_temp_extent_2; __pyx_temp_idx_2++) {
                *((__pyx_t_5numpy_uint8_t *) __pyx_temp_pointer_2) = __pyx_temp_scalar;
                __pyx_temp_pointer_2 += __pyx_temp_stride_2;
              }
              __pyx_temp_pointer_1 += __pyx_temp_stride_1;
            }
            __pyx_temp_pointer_0 += __pyx_temp_stride_0;
          }
      }
  }
 3279: 
 3280: 
+3281: cdef class VCFCallDataUInt16Parser(VCFCallDataParserBase):
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataUInt16Parser {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase __pyx_base;
  __Pyx_memviewslice memory;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataUInt16Parser {
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataParserBase __pyx_base;
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataUInt16Parser *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFCallDataUInt16Parser;

 3282: 
 3283:     cdef np.uint16_t[:, :, :] memory
 3284: 
+3285:     def __init__(self, *args, **kwargs):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_23VCFCallDataUInt16Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_23VCFCallDataUInt16Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 1))) return -1;
  __pyx_v_kwargs = (__pyx_kwds) ? PyDict_Copy(__pyx_kwds) : PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return -1;
  __Pyx_GOTREF(__pyx_v_kwargs);
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_23VCFCallDataUInt16Parser___init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataUInt16Parser *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_23VCFCallDataUInt16Parser___init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataUInt16Parser *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
  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_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFCallDataUInt16Parser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+3286:         kwargs['dtype'] = 'uint16'
  if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_s_dtype, __pyx_n_s_uint16) < 0)) __PYX_ERR(0, 3286, __pyx_L1_error)
+3287:         kwargs.setdefault('fill', IU16.max)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_IU16); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3287, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_max); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3287, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyDict_SetDefault(__pyx_v_kwargs, __pyx_n_s_fill, __pyx_t_2, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3287, __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;
+3288:         super(VCFCallDataUInt16Parser, self).__init__(*args, **kwargs)
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3288, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFCallDataUInt16Parser));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFCallDataUInt16Parser));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFCallDataUInt16Parser));
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self));
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3288, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3288, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_v_args, __pyx_v_kwargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3288, __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;
 3289: 
+3290:     cdef int parse(self, InputStreamBase stream, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_23VCFCallDataUInt16Parser_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataUInt16Parser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFCallDataUInt16Parser.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+3291:         vcf_calldata_parse_integer(stream, context, self.memory)
  __pyx_t_1 = __pyx_fuse_5__pyx_f_5allel_3opt_11io_vcf_read_vcf_calldata_parse_integer(__pyx_v_stream, __pyx_v_context, __pyx_v_self->memory); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 3291, __pyx_L1_error)
 3292: 
+3293:     cdef int malloc_chunk(self) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_23VCFCallDataUInt16Parser_malloc_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataUInt16Parser *__pyx_v_self) {
  PyObject *__pyx_v_shape = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("malloc_chunk", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFCallDataUInt16Parser.malloc_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_shape);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+3294:         shape = (self.chunk_length, self.n_samples_out, self.number)
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.chunk_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3294, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.n_samples_out); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3294, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.number); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3294, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3294, __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_2);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_v_shape = __pyx_t_4;
  __pyx_t_4 = 0;
+3295:         self.values = np.empty(shape, dtype=self.dtype)
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3295, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3295, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3295, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_v_shape);
  __Pyx_GIVEREF(__pyx_v_shape);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_shape);
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3295, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->__pyx_base.dtype)) < 0) __PYX_ERR(0, 3295, __pyx_L1_error)
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3295, __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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3295, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.values);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.values));
  __pyx_v_self->__pyx_base.values = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+3296:         self.memory = self.values
  __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsdsds_nn___pyx_t_5numpy_uint16_t(((PyObject *)__pyx_v_self->__pyx_base.values));
  if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 3296, __pyx_L1_error)
  __PYX_XDEC_MEMVIEW(&__pyx_v_self->memory, 0);
  __pyx_v_self->memory = __pyx_t_5;
  __pyx_t_5.memview = NULL;
  __pyx_t_5.data = NULL;
+3297:         self.memory[:] = self.fill
  __pyx_t_6 = __Pyx_PyInt_As_npy_uint16(__pyx_v_self->__pyx_base.fill); if (unlikely((__pyx_t_6 == ((npy_uint16)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3297, __pyx_L1_error)
  {
      __pyx_t_5numpy_uint16_t __pyx_temp_scalar = __pyx_t_6;
      {
          Py_ssize_t __pyx_temp_extent_0 = __pyx_v_self->memory.shape[0];
          Py_ssize_t __pyx_temp_stride_0 = __pyx_v_self->memory.strides[0];
          char *__pyx_temp_pointer_0;
          Py_ssize_t __pyx_temp_idx_0;
          Py_ssize_t __pyx_temp_extent_1 = __pyx_v_self->memory.shape[1];
          Py_ssize_t __pyx_temp_stride_1 = __pyx_v_self->memory.strides[1];
          char *__pyx_temp_pointer_1;
          Py_ssize_t __pyx_temp_idx_1;
          Py_ssize_t __pyx_temp_extent_2 = __pyx_v_self->memory.shape[2];
          Py_ssize_t __pyx_temp_stride_2 = __pyx_v_self->memory.strides[2];
          char *__pyx_temp_pointer_2;
          Py_ssize_t __pyx_temp_idx_2;
          __pyx_temp_pointer_0 = __pyx_v_self->memory.data;
          for (__pyx_temp_idx_0 = 0; __pyx_temp_idx_0 < __pyx_temp_extent_0; __pyx_temp_idx_0++) {
            __pyx_temp_pointer_1 = __pyx_temp_pointer_0;
            for (__pyx_temp_idx_1 = 0; __pyx_temp_idx_1 < __pyx_temp_extent_1; __pyx_temp_idx_1++) {
              __pyx_temp_pointer_2 = __pyx_temp_pointer_1;
              for (__pyx_temp_idx_2 = 0; __pyx_temp_idx_2 < __pyx_temp_extent_2; __pyx_temp_idx_2++) {
                *((__pyx_t_5numpy_uint16_t *) __pyx_temp_pointer_2) = __pyx_temp_scalar;
                __pyx_temp_pointer_2 += __pyx_temp_stride_2;
              }
              __pyx_temp_pointer_1 += __pyx_temp_stride_1;
            }
            __pyx_temp_pointer_0 += __pyx_temp_stride_0;
          }
      }
  }
 3298: 
 3299: 
+3300: cdef class VCFCallDataUInt32Parser(VCFCallDataParserBase):
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataUInt32Parser {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase __pyx_base;
  __Pyx_memviewslice memory;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataUInt32Parser {
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataParserBase __pyx_base;
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataUInt32Parser *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFCallDataUInt32Parser;

 3301: 
 3302:     cdef np.uint32_t[:, :, :] memory
 3303: 
+3304:     def __init__(self, *args, **kwargs):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_23VCFCallDataUInt32Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_23VCFCallDataUInt32Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 1))) return -1;
  __pyx_v_kwargs = (__pyx_kwds) ? PyDict_Copy(__pyx_kwds) : PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return -1;
  __Pyx_GOTREF(__pyx_v_kwargs);
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_23VCFCallDataUInt32Parser___init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataUInt32Parser *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_23VCFCallDataUInt32Parser___init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataUInt32Parser *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
  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_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFCallDataUInt32Parser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+3305:         kwargs['dtype'] = 'uint32'
  if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_s_dtype, __pyx_n_s_uint32) < 0)) __PYX_ERR(0, 3305, __pyx_L1_error)
+3306:         kwargs.setdefault('fill', IU32.max)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_IU32); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3306, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_max); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3306, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyDict_SetDefault(__pyx_v_kwargs, __pyx_n_s_fill, __pyx_t_2, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3306, __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;
+3307:         super(VCFCallDataUInt32Parser, self).__init__(*args, **kwargs)
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3307, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFCallDataUInt32Parser));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFCallDataUInt32Parser));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFCallDataUInt32Parser));
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self));
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3307, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3307, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_v_args, __pyx_v_kwargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3307, __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;
 3308: 
+3309:     cdef int parse(self, InputStreamBase stream, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_23VCFCallDataUInt32Parser_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataUInt32Parser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFCallDataUInt32Parser.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+3310:         vcf_calldata_parse_integer(stream, context, self.memory)
  __pyx_t_1 = __pyx_fuse_6__pyx_f_5allel_3opt_11io_vcf_read_vcf_calldata_parse_integer(__pyx_v_stream, __pyx_v_context, __pyx_v_self->memory); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 3310, __pyx_L1_error)
 3311: 
+3312:     cdef int malloc_chunk(self) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_23VCFCallDataUInt32Parser_malloc_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataUInt32Parser *__pyx_v_self) {
  PyObject *__pyx_v_shape = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("malloc_chunk", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFCallDataUInt32Parser.malloc_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_shape);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+3313:         shape = (self.chunk_length, self.n_samples_out, self.number)
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.chunk_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3313, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.n_samples_out); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3313, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.number); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3313, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3313, __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_2);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_v_shape = __pyx_t_4;
  __pyx_t_4 = 0;
+3314:         self.values = np.empty(shape, dtype=self.dtype)
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3314, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3314, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3314, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_v_shape);
  __Pyx_GIVEREF(__pyx_v_shape);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_shape);
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3314, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->__pyx_base.dtype)) < 0) __PYX_ERR(0, 3314, __pyx_L1_error)
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3314, __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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3314, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.values);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.values));
  __pyx_v_self->__pyx_base.values = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+3315:         self.memory = self.values
  __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsdsds_nn___pyx_t_5numpy_uint32_t(((PyObject *)__pyx_v_self->__pyx_base.values));
  if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 3315, __pyx_L1_error)
  __PYX_XDEC_MEMVIEW(&__pyx_v_self->memory, 0);
  __pyx_v_self->memory = __pyx_t_5;
  __pyx_t_5.memview = NULL;
  __pyx_t_5.data = NULL;
+3316:         self.memory[:] = self.fill
  __pyx_t_6 = __Pyx_PyInt_As_npy_uint32(__pyx_v_self->__pyx_base.fill); if (unlikely((__pyx_t_6 == ((npy_uint32)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3316, __pyx_L1_error)
  {
      __pyx_t_5numpy_uint32_t __pyx_temp_scalar = __pyx_t_6;
      {
          Py_ssize_t __pyx_temp_extent_0 = __pyx_v_self->memory.shape[0];
          Py_ssize_t __pyx_temp_stride_0 = __pyx_v_self->memory.strides[0];
          char *__pyx_temp_pointer_0;
          Py_ssize_t __pyx_temp_idx_0;
          Py_ssize_t __pyx_temp_extent_1 = __pyx_v_self->memory.shape[1];
          Py_ssize_t __pyx_temp_stride_1 = __pyx_v_self->memory.strides[1];
          char *__pyx_temp_pointer_1;
          Py_ssize_t __pyx_temp_idx_1;
          Py_ssize_t __pyx_temp_extent_2 = __pyx_v_self->memory.shape[2];
          Py_ssize_t __pyx_temp_stride_2 = __pyx_v_self->memory.strides[2];
          char *__pyx_temp_pointer_2;
          Py_ssize_t __pyx_temp_idx_2;
          __pyx_temp_pointer_0 = __pyx_v_self->memory.data;
          for (__pyx_temp_idx_0 = 0; __pyx_temp_idx_0 < __pyx_temp_extent_0; __pyx_temp_idx_0++) {
            __pyx_temp_pointer_1 = __pyx_temp_pointer_0;
            for (__pyx_temp_idx_1 = 0; __pyx_temp_idx_1 < __pyx_temp_extent_1; __pyx_temp_idx_1++) {
              __pyx_temp_pointer_2 = __pyx_temp_pointer_1;
              for (__pyx_temp_idx_2 = 0; __pyx_temp_idx_2 < __pyx_temp_extent_2; __pyx_temp_idx_2++) {
                *((__pyx_t_5numpy_uint32_t *) __pyx_temp_pointer_2) = __pyx_temp_scalar;
                __pyx_temp_pointer_2 += __pyx_temp_stride_2;
              }
              __pyx_temp_pointer_1 += __pyx_temp_stride_1;
            }
            __pyx_temp_pointer_0 += __pyx_temp_stride_0;
          }
      }
  }
 3317: 
 3318: 
+3319: cdef class VCFCallDataUInt64Parser(VCFCallDataParserBase):
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataUInt64Parser {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase __pyx_base;
  __Pyx_memviewslice memory;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataUInt64Parser {
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataParserBase __pyx_base;
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataUInt64Parser *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFCallDataUInt64Parser;

 3320: 
 3321:     cdef np.uint64_t[:, :, :] memory
 3322: 
+3323:     def __init__(self, *args, **kwargs):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_23VCFCallDataUInt64Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_23VCFCallDataUInt64Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 1))) return -1;
  __pyx_v_kwargs = (__pyx_kwds) ? PyDict_Copy(__pyx_kwds) : PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return -1;
  __Pyx_GOTREF(__pyx_v_kwargs);
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_23VCFCallDataUInt64Parser___init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataUInt64Parser *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_23VCFCallDataUInt64Parser___init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataUInt64Parser *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
  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_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFCallDataUInt64Parser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+3324:         kwargs['dtype'] = 'uint64'
  if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_s_dtype, __pyx_n_s_uint64) < 0)) __PYX_ERR(0, 3324, __pyx_L1_error)
+3325:         kwargs.setdefault('fill', IU64.max)
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_IU64); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3325, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_max); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3325, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyDict_SetDefault(__pyx_v_kwargs, __pyx_n_s_fill, __pyx_t_2, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3325, __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;
+3326:         super(VCFCallDataUInt64Parser, self).__init__(*args, **kwargs)
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3326, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFCallDataUInt64Parser));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFCallDataUInt64Parser));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFCallDataUInt64Parser));
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self));
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3326, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3326, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_v_args, __pyx_v_kwargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3326, __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;
 3327: 
+3328:     cdef int parse(self, InputStreamBase stream, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_23VCFCallDataUInt64Parser_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataUInt64Parser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFCallDataUInt64Parser.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+3329:         vcf_calldata_parse_integer(stream, context, self.memory)
  __pyx_t_1 = __pyx_fuse_7__pyx_f_5allel_3opt_11io_vcf_read_vcf_calldata_parse_integer(__pyx_v_stream, __pyx_v_context, __pyx_v_self->memory); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 3329, __pyx_L1_error)
 3330: 
+3331:     cdef int malloc_chunk(self) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_23VCFCallDataUInt64Parser_malloc_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataUInt64Parser *__pyx_v_self) {
  PyObject *__pyx_v_shape = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("malloc_chunk", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFCallDataUInt64Parser.malloc_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_shape);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+3332:         shape = (self.chunk_length, self.n_samples_out, self.number)
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.chunk_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3332, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.n_samples_out); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3332, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.number); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3332, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3332, __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_2);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_v_shape = __pyx_t_4;
  __pyx_t_4 = 0;
+3333:         self.values = np.empty(shape, dtype=self.dtype)
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3333, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3333, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3333, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_v_shape);
  __Pyx_GIVEREF(__pyx_v_shape);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_shape);
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3333, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->__pyx_base.dtype)) < 0) __PYX_ERR(0, 3333, __pyx_L1_error)
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3333, __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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3333, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.values);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.values));
  __pyx_v_self->__pyx_base.values = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+3334:         self.memory = self.values
  __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsdsds_nn___pyx_t_5numpy_uint64_t(((PyObject *)__pyx_v_self->__pyx_base.values));
  if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 3334, __pyx_L1_error)
  __PYX_XDEC_MEMVIEW(&__pyx_v_self->memory, 0);
  __pyx_v_self->memory = __pyx_t_5;
  __pyx_t_5.memview = NULL;
  __pyx_t_5.data = NULL;
+3335:         self.memory[:] = self.fill
  __pyx_t_6 = __Pyx_PyInt_As_npy_uint64(__pyx_v_self->__pyx_base.fill); if (unlikely((__pyx_t_6 == ((npy_uint64)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3335, __pyx_L1_error)
  {
      __pyx_t_5numpy_uint64_t __pyx_temp_scalar = __pyx_t_6;
      {
          Py_ssize_t __pyx_temp_extent_0 = __pyx_v_self->memory.shape[0];
          Py_ssize_t __pyx_temp_stride_0 = __pyx_v_self->memory.strides[0];
          char *__pyx_temp_pointer_0;
          Py_ssize_t __pyx_temp_idx_0;
          Py_ssize_t __pyx_temp_extent_1 = __pyx_v_self->memory.shape[1];
          Py_ssize_t __pyx_temp_stride_1 = __pyx_v_self->memory.strides[1];
          char *__pyx_temp_pointer_1;
          Py_ssize_t __pyx_temp_idx_1;
          Py_ssize_t __pyx_temp_extent_2 = __pyx_v_self->memory.shape[2];
          Py_ssize_t __pyx_temp_stride_2 = __pyx_v_self->memory.strides[2];
          char *__pyx_temp_pointer_2;
          Py_ssize_t __pyx_temp_idx_2;
          __pyx_temp_pointer_0 = __pyx_v_self->memory.data;
          for (__pyx_temp_idx_0 = 0; __pyx_temp_idx_0 < __pyx_temp_extent_0; __pyx_temp_idx_0++) {
            __pyx_temp_pointer_1 = __pyx_temp_pointer_0;
            for (__pyx_temp_idx_1 = 0; __pyx_temp_idx_1 < __pyx_temp_extent_1; __pyx_temp_idx_1++) {
              __pyx_temp_pointer_2 = __pyx_temp_pointer_1;
              for (__pyx_temp_idx_2 = 0; __pyx_temp_idx_2 < __pyx_temp_extent_2; __pyx_temp_idx_2++) {
                *((__pyx_t_5numpy_uint64_t *) __pyx_temp_pointer_2) = __pyx_temp_scalar;
                __pyx_temp_pointer_2 += __pyx_temp_stride_2;
              }
              __pyx_temp_pointer_1 += __pyx_temp_stride_1;
            }
            __pyx_temp_pointer_0 += __pyx_temp_stride_0;
          }
      }
  }
 3336: 
 3337: 
+3338: cdef class VCFCallDataFloat32Parser(VCFCallDataParserBase):
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataFloat32Parser {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase __pyx_base;
  __Pyx_memviewslice memory;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataFloat32Parser {
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataParserBase __pyx_base;
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataFloat32Parser *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFCallDataFloat32Parser;

 3339: 
 3340:     cdef np.float32_t[:, :, :] memory
 3341: 
+3342:     def __init__(self, *args, **kwargs):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_24VCFCallDataFloat32Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_24VCFCallDataFloat32Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 1))) return -1;
  __pyx_v_kwargs = (__pyx_kwds) ? PyDict_Copy(__pyx_kwds) : PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return -1;
  __Pyx_GOTREF(__pyx_v_kwargs);
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_24VCFCallDataFloat32Parser___init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataFloat32Parser *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_24VCFCallDataFloat32Parser___init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataFloat32Parser *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
  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_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFCallDataFloat32Parser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+3343:         kwargs['dtype'] = 'float32'
  if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_s_dtype, __pyx_n_s_float32) < 0)) __PYX_ERR(0, 3343, __pyx_L1_error)
+3344:         kwargs.setdefault('fill', NAN)
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_5allel_3opt_11io_vcf_read_NAN); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3344, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyDict_SetDefault(__pyx_v_kwargs, __pyx_n_s_fill, __pyx_t_1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3344, __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;
+3345:         super(VCFCallDataFloat32Parser, self).__init__(*args, **kwargs)
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3345, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFCallDataFloat32Parser));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFCallDataFloat32Parser));
  PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFCallDataFloat32Parser));
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self));
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3345, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3345, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_v_args, __pyx_v_kwargs); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3345, __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;
 3346: 
+3347:     cdef int parse(self, InputStreamBase stream, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_24VCFCallDataFloat32Parser_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataFloat32Parser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFCallDataFloat32Parser.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+3348:         vcf_calldata_parse_floating(stream, context, self.memory)
  __pyx_t_1 = __pyx_fuse_0__pyx_f_5allel_3opt_11io_vcf_read_vcf_calldata_parse_floating(__pyx_v_stream, __pyx_v_context, __pyx_v_self->memory); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 3348, __pyx_L1_error)
 3349: 
+3350:     cdef int malloc_chunk(self) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_24VCFCallDataFloat32Parser_malloc_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataFloat32Parser *__pyx_v_self) {
  PyObject *__pyx_v_shape = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("malloc_chunk", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFCallDataFloat32Parser.malloc_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_shape);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+3351:         shape = (self.chunk_length, self.n_samples_out, self.number)
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.chunk_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3351, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.n_samples_out); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3351, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.number); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3351, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3351, __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_2);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_v_shape = __pyx_t_4;
  __pyx_t_4 = 0;
+3352:         self.values = np.empty(shape, dtype=self.dtype)
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3352, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3352, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3352, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_v_shape);
  __Pyx_GIVEREF(__pyx_v_shape);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_shape);
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3352, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->__pyx_base.dtype)) < 0) __PYX_ERR(0, 3352, __pyx_L1_error)
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3352, __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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3352, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.values);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.values));
  __pyx_v_self->__pyx_base.values = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+3353:         self.memory = self.values
  __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsdsds_nn___pyx_t_5numpy_float32_t(((PyObject *)__pyx_v_self->__pyx_base.values));
  if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 3353, __pyx_L1_error)
  __PYX_XDEC_MEMVIEW(&__pyx_v_self->memory, 0);
  __pyx_v_self->memory = __pyx_t_5;
  __pyx_t_5.memview = NULL;
  __pyx_t_5.data = NULL;
+3354:         self.memory[:] = self.fill
  __pyx_t_6 = __pyx_PyFloat_AsFloat(__pyx_v_self->__pyx_base.fill); if (unlikely((__pyx_t_6 == ((npy_float32)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3354, __pyx_L1_error)
  {
      __pyx_t_5numpy_float32_t __pyx_temp_scalar = __pyx_t_6;
      {
          Py_ssize_t __pyx_temp_extent_0 = __pyx_v_self->memory.shape[0];
          Py_ssize_t __pyx_temp_stride_0 = __pyx_v_self->memory.strides[0];
          char *__pyx_temp_pointer_0;
          Py_ssize_t __pyx_temp_idx_0;
          Py_ssize_t __pyx_temp_extent_1 = __pyx_v_self->memory.shape[1];
          Py_ssize_t __pyx_temp_stride_1 = __pyx_v_self->memory.strides[1];
          char *__pyx_temp_pointer_1;
          Py_ssize_t __pyx_temp_idx_1;
          Py_ssize_t __pyx_temp_extent_2 = __pyx_v_self->memory.shape[2];
          Py_ssize_t __pyx_temp_stride_2 = __pyx_v_self->memory.strides[2];
          char *__pyx_temp_pointer_2;
          Py_ssize_t __pyx_temp_idx_2;
          __pyx_temp_pointer_0 = __pyx_v_self->memory.data;
          for (__pyx_temp_idx_0 = 0; __pyx_temp_idx_0 < __pyx_temp_extent_0; __pyx_temp_idx_0++) {
            __pyx_temp_pointer_1 = __pyx_temp_pointer_0;
            for (__pyx_temp_idx_1 = 0; __pyx_temp_idx_1 < __pyx_temp_extent_1; __pyx_temp_idx_1++) {
              __pyx_temp_pointer_2 = __pyx_temp_pointer_1;
              for (__pyx_temp_idx_2 = 0; __pyx_temp_idx_2 < __pyx_temp_extent_2; __pyx_temp_idx_2++) {
                *((__pyx_t_5numpy_float32_t *) __pyx_temp_pointer_2) = __pyx_temp_scalar;
                __pyx_temp_pointer_2 += __pyx_temp_stride_2;
              }
              __pyx_temp_pointer_1 += __pyx_temp_stride_1;
            }
            __pyx_temp_pointer_0 += __pyx_temp_stride_0;
          }
      }
  }
 3355: 
 3356: 
+3357: cdef class VCFCallDataFloat64Parser(VCFCallDataParserBase):
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataFloat64Parser {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase __pyx_base;
  __Pyx_memviewslice memory;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataFloat64Parser {
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataParserBase __pyx_base;
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataFloat64Parser *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFCallDataFloat64Parser;

 3358: 
 3359:     cdef np.float64_t[:, :, :] memory
 3360: 
+3361:     def __init__(self, *args, **kwargs):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_24VCFCallDataFloat64Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_24VCFCallDataFloat64Parser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 1))) return -1;
  __pyx_v_kwargs = (__pyx_kwds) ? PyDict_Copy(__pyx_kwds) : PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return -1;
  __Pyx_GOTREF(__pyx_v_kwargs);
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_24VCFCallDataFloat64Parser___init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataFloat64Parser *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_24VCFCallDataFloat64Parser___init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataFloat64Parser *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
  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_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFCallDataFloat64Parser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+3362:         kwargs['dtype'] = 'float64'
  if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_s_dtype, __pyx_n_s_float64) < 0)) __PYX_ERR(0, 3362, __pyx_L1_error)
+3363:         kwargs.setdefault('fill', NAN)
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_5allel_3opt_11io_vcf_read_NAN); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3363, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyDict_SetDefault(__pyx_v_kwargs, __pyx_n_s_fill, __pyx_t_1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3363, __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;
+3364:         super(VCFCallDataFloat64Parser, self).__init__(*args, **kwargs)
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFCallDataFloat64Parser));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFCallDataFloat64Parser));
  PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFCallDataFloat64Parser));
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self));
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_v_args, __pyx_v_kwargs); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3364, __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;
 3365: 
+3366:     cdef int parse(self, InputStreamBase stream, VCFContext context) except -1:  # nogil
static int __pyx_f_5allel_3opt_11io_vcf_read_24VCFCallDataFloat64Parser_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataFloat64Parser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFCallDataFloat64Parser.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+3367:         vcf_calldata_parse_floating(stream, context, self.memory)
  __pyx_t_1 = __pyx_fuse_1__pyx_f_5allel_3opt_11io_vcf_read_vcf_calldata_parse_floating(__pyx_v_stream, __pyx_v_context, __pyx_v_self->memory); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 3367, __pyx_L1_error)
 3368: 
+3369:     cdef int malloc_chunk(self) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_24VCFCallDataFloat64Parser_malloc_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataFloat64Parser *__pyx_v_self) {
  PyObject *__pyx_v_shape = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("malloc_chunk", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFCallDataFloat64Parser.malloc_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_shape);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+3370:         shape = (self.chunk_length, self.n_samples_out, self.number)
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.chunk_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3370, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.n_samples_out); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3370, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.number); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3370, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3370, __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_2);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_v_shape = __pyx_t_4;
  __pyx_t_4 = 0;
+3371:         self.values = np.empty(shape, dtype=self.dtype)
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3371, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3371, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3371, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_v_shape);
  __Pyx_GIVEREF(__pyx_v_shape);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_shape);
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3371, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->__pyx_base.dtype)) < 0) __PYX_ERR(0, 3371, __pyx_L1_error)
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3371, __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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3371, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.values);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.values));
  __pyx_v_self->__pyx_base.values = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+3372:         self.memory = self.values
  __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsdsds_nn___pyx_t_5numpy_float64_t(((PyObject *)__pyx_v_self->__pyx_base.values));
  if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 3372, __pyx_L1_error)
  __PYX_XDEC_MEMVIEW(&__pyx_v_self->memory, 0);
  __pyx_v_self->memory = __pyx_t_5;
  __pyx_t_5.memview = NULL;
  __pyx_t_5.data = NULL;
+3373:         self.memory[:] = self.fill
  __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_v_self->__pyx_base.fill); if (unlikely((__pyx_t_6 == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3373, __pyx_L1_error)
  {
      __pyx_t_5numpy_float64_t __pyx_temp_scalar = __pyx_t_6;
      {
          Py_ssize_t __pyx_temp_extent_0 = __pyx_v_self->memory.shape[0];
          Py_ssize_t __pyx_temp_stride_0 = __pyx_v_self->memory.strides[0];
          char *__pyx_temp_pointer_0;
          Py_ssize_t __pyx_temp_idx_0;
          Py_ssize_t __pyx_temp_extent_1 = __pyx_v_self->memory.shape[1];
          Py_ssize_t __pyx_temp_stride_1 = __pyx_v_self->memory.strides[1];
          char *__pyx_temp_pointer_1;
          Py_ssize_t __pyx_temp_idx_1;
          Py_ssize_t __pyx_temp_extent_2 = __pyx_v_self->memory.shape[2];
          Py_ssize_t __pyx_temp_stride_2 = __pyx_v_self->memory.strides[2];
          char *__pyx_temp_pointer_2;
          Py_ssize_t __pyx_temp_idx_2;
          __pyx_temp_pointer_0 = __pyx_v_self->memory.data;
          for (__pyx_temp_idx_0 = 0; __pyx_temp_idx_0 < __pyx_temp_extent_0; __pyx_temp_idx_0++) {
            __pyx_temp_pointer_1 = __pyx_temp_pointer_0;
            for (__pyx_temp_idx_1 = 0; __pyx_temp_idx_1 < __pyx_temp_extent_1; __pyx_temp_idx_1++) {
              __pyx_temp_pointer_2 = __pyx_temp_pointer_1;
              for (__pyx_temp_idx_2 = 0; __pyx_temp_idx_2 < __pyx_temp_extent_2; __pyx_temp_idx_2++) {
                *((__pyx_t_5numpy_float64_t *) __pyx_temp_pointer_2) = __pyx_temp_scalar;
                __pyx_temp_pointer_2 += __pyx_temp_stride_2;
              }
              __pyx_temp_pointer_1 += __pyx_temp_stride_1;
            }
            __pyx_temp_pointer_0 += __pyx_temp_stride_0;
          }
      }
  }
 3374: 
 3375: 
+3376: cdef int vcf_calldata_parse_integer(InputStreamBase stream,
static int __pyx_fuse_0__pyx_f_5allel_3opt_11io_vcf_read_vcf_calldata_parse_integer(struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, __Pyx_memviewslice __pyx_v_memory) {
  Py_ssize_t __pyx_v_value_index;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_0vcf_calldata_parse_integer", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_calldata_parse_integer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_fuse_1__pyx_f_5allel_3opt_11io_vcf_read_vcf_calldata_parse_integer(struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, __Pyx_memviewslice __pyx_v_memory) {
  Py_ssize_t __pyx_v_value_index;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_1vcf_calldata_parse_integer", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_calldata_parse_integer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_fuse_2__pyx_f_5allel_3opt_11io_vcf_read_vcf_calldata_parse_integer(struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, __Pyx_memviewslice __pyx_v_memory) {
  Py_ssize_t __pyx_v_value_index;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_2vcf_calldata_parse_integer", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_calldata_parse_integer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_fuse_3__pyx_f_5allel_3opt_11io_vcf_read_vcf_calldata_parse_integer(struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, __Pyx_memviewslice __pyx_v_memory) {
  Py_ssize_t __pyx_v_value_index;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_3vcf_calldata_parse_integer", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_calldata_parse_integer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_fuse_4__pyx_f_5allel_3opt_11io_vcf_read_vcf_calldata_parse_integer(struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, __Pyx_memviewslice __pyx_v_memory) {
  Py_ssize_t __pyx_v_value_index;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_4vcf_calldata_parse_integer", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_calldata_parse_integer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_fuse_5__pyx_f_5allel_3opt_11io_vcf_read_vcf_calldata_parse_integer(struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, __Pyx_memviewslice __pyx_v_memory) {
  Py_ssize_t __pyx_v_value_index;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_5vcf_calldata_parse_integer", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_calldata_parse_integer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_fuse_6__pyx_f_5allel_3opt_11io_vcf_read_vcf_calldata_parse_integer(struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, __Pyx_memviewslice __pyx_v_memory) {
  Py_ssize_t __pyx_v_value_index;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_6vcf_calldata_parse_integer", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_calldata_parse_integer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_fuse_7__pyx_f_5allel_3opt_11io_vcf_read_vcf_calldata_parse_integer(struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, __Pyx_memviewslice __pyx_v_memory) {
  Py_ssize_t __pyx_v_value_index;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_7vcf_calldata_parse_integer", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_calldata_parse_integer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 3377:                                     VCFContext context,
 3378:                                     integer[:, :, :] memory) except -1:  # nogil
 3379: 
 3380:     cdef:
+3381:         Py_ssize_t value_index = 0
  __pyx_v_value_index = 0;
/* … */
  __pyx_v_value_index = 0;
/* … */
  __pyx_v_value_index = 0;
/* … */
  __pyx_v_value_index = 0;
/* … */
  __pyx_v_value_index = 0;
/* … */
  __pyx_v_value_index = 0;
/* … */
  __pyx_v_value_index = 0;
/* … */
  __pyx_v_value_index = 0;
 3382: 
 3383:     # reset temporary buffer
+3384:     CharVector_clear(&context.temp)
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->temp));
/* … */
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->temp));
/* … */
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->temp));
/* … */
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->temp));
/* … */
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->temp));
/* … */
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->temp));
/* … */
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->temp));
/* … */
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->temp));
 3385: 
+3386:     while True:
  while (1) {
/* … */
  while (1) {
/* … */
  while (1) {
/* … */
  while (1) {
/* … */
  while (1) {
/* … */
  while (1) {
/* … */
  while (1) {
/* … */
  while (1) {
 3387: 
+3388:         if stream.c == COMMA:
    __pyx_t_1 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_COMMA) != 0);
    if (__pyx_t_1) {
/* … */
      goto __pyx_L5;
    }
/* … */
    __pyx_t_1 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_COMMA) != 0);
    if (__pyx_t_1) {
/* … */
      goto __pyx_L5;
    }
/* … */
    __pyx_t_1 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_COMMA) != 0);
    if (__pyx_t_1) {
/* … */
      goto __pyx_L5;
    }
/* … */
    __pyx_t_1 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_COMMA) != 0);
    if (__pyx_t_1) {
/* … */
      goto __pyx_L5;
    }
/* … */
    __pyx_t_1 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_COMMA) != 0);
    if (__pyx_t_1) {
/* … */
      goto __pyx_L5;
    }
/* … */
    __pyx_t_1 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_COMMA) != 0);
    if (__pyx_t_1) {
/* … */
      goto __pyx_L5;
    }
/* … */
    __pyx_t_1 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_COMMA) != 0);
    if (__pyx_t_1) {
/* … */
      goto __pyx_L5;
    }
/* … */
    __pyx_t_1 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_COMMA) != 0);
    if (__pyx_t_1) {
/* … */
      goto __pyx_L5;
    }
+3389:             vcf_calldata_store_integer(context, value_index, memory)
      __pyx_t_2 = __pyx_fuse_0__pyx_f_5allel_3opt_11io_vcf_read_vcf_calldata_store_integer(__pyx_v_context, __pyx_v_value_index, __pyx_v_memory); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 3389, __pyx_L1_error)
/* … */
      __pyx_t_2 = __pyx_fuse_1__pyx_f_5allel_3opt_11io_vcf_read_vcf_calldata_store_integer(__pyx_v_context, __pyx_v_value_index, __pyx_v_memory); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 3389, __pyx_L1_error)
/* … */
      __pyx_t_2 = __pyx_fuse_2__pyx_f_5allel_3opt_11io_vcf_read_vcf_calldata_store_integer(__pyx_v_context, __pyx_v_value_index, __pyx_v_memory); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 3389, __pyx_L1_error)
/* … */
      __pyx_t_2 = __pyx_fuse_3__pyx_f_5allel_3opt_11io_vcf_read_vcf_calldata_store_integer(__pyx_v_context, __pyx_v_value_index, __pyx_v_memory); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 3389, __pyx_L1_error)
/* … */
      __pyx_t_2 = __pyx_fuse_4__pyx_f_5allel_3opt_11io_vcf_read_vcf_calldata_store_integer(__pyx_v_context, __pyx_v_value_index, __pyx_v_memory); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 3389, __pyx_L1_error)
/* … */
      __pyx_t_2 = __pyx_fuse_5__pyx_f_5allel_3opt_11io_vcf_read_vcf_calldata_store_integer(__pyx_v_context, __pyx_v_value_index, __pyx_v_memory); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 3389, __pyx_L1_error)
/* … */
      __pyx_t_2 = __pyx_fuse_6__pyx_f_5allel_3opt_11io_vcf_read_vcf_calldata_store_integer(__pyx_v_context, __pyx_v_value_index, __pyx_v_memory); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 3389, __pyx_L1_error)
/* … */
      __pyx_t_2 = __pyx_fuse_7__pyx_f_5allel_3opt_11io_vcf_read_vcf_calldata_store_integer(__pyx_v_context, __pyx_v_value_index, __pyx_v_memory); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 3389, __pyx_L1_error)
+3390:             CharVector_clear(&context.temp)
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->temp));
/* … */
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->temp));
/* … */
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->temp));
/* … */
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->temp));
/* … */
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->temp));
/* … */
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->temp));
/* … */
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->temp));
/* … */
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->temp));
+3391:             value_index += 1
      __pyx_v_value_index = (__pyx_v_value_index + 1);
/* … */
      __pyx_v_value_index = (__pyx_v_value_index + 1);
/* … */
      __pyx_v_value_index = (__pyx_v_value_index + 1);
/* … */
      __pyx_v_value_index = (__pyx_v_value_index + 1);
/* … */
      __pyx_v_value_index = (__pyx_v_value_index + 1);
/* … */
      __pyx_v_value_index = (__pyx_v_value_index + 1);
/* … */
      __pyx_v_value_index = (__pyx_v_value_index + 1);
/* … */
      __pyx_v_value_index = (__pyx_v_value_index + 1);
 3392: 
+3393:         elif stream.c == COLON or \
    __pyx_t_3 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_COLON) != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_1 = __pyx_t_3;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    if (__pyx_t_1) {
/* … */
    }
/* … */
    __pyx_t_3 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_COLON) != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_1 = __pyx_t_3;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    if (__pyx_t_1) {
/* … */
    }
/* … */
    __pyx_t_3 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_COLON) != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_1 = __pyx_t_3;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    if (__pyx_t_1) {
/* … */
    }
/* … */
    __pyx_t_3 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_COLON) != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_1 = __pyx_t_3;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    if (__pyx_t_1) {
/* … */
    }
/* … */
    __pyx_t_3 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_COLON) != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_1 = __pyx_t_3;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    if (__pyx_t_1) {
/* … */
    }
/* … */
    __pyx_t_3 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_COLON) != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_1 = __pyx_t_3;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    if (__pyx_t_1) {
/* … */
    }
/* … */
    __pyx_t_3 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_COLON) != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_1 = __pyx_t_3;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    if (__pyx_t_1) {
/* … */
    }
/* … */
    __pyx_t_3 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_COLON) != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_1 = __pyx_t_3;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    if (__pyx_t_1) {
/* … */
    }
+3394:                 stream.c == TAB or \
    __pyx_t_3 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_TAB) != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_1 = __pyx_t_3;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    __pyx_t_3 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_TAB) != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_1 = __pyx_t_3;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    __pyx_t_3 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_TAB) != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_1 = __pyx_t_3;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    __pyx_t_3 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_TAB) != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_1 = __pyx_t_3;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    __pyx_t_3 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_TAB) != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_1 = __pyx_t_3;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    __pyx_t_3 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_TAB) != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_1 = __pyx_t_3;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    __pyx_t_3 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_TAB) != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_1 = __pyx_t_3;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    __pyx_t_3 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_TAB) != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_1 = __pyx_t_3;
      goto __pyx_L6_bool_binop_done;
    }
+3395:                 stream.c == LF or \
    __pyx_t_3 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_1 = __pyx_t_3;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    __pyx_t_3 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_1 = __pyx_t_3;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    __pyx_t_3 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_1 = __pyx_t_3;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    __pyx_t_3 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_1 = __pyx_t_3;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    __pyx_t_3 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_1 = __pyx_t_3;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    __pyx_t_3 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_1 = __pyx_t_3;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    __pyx_t_3 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_1 = __pyx_t_3;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    __pyx_t_3 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_1 = __pyx_t_3;
      goto __pyx_L6_bool_binop_done;
    }
+3396:                 stream.c == CR or \
    __pyx_t_3 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_CR) != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_1 = __pyx_t_3;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    __pyx_t_3 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_CR) != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_1 = __pyx_t_3;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    __pyx_t_3 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_CR) != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_1 = __pyx_t_3;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    __pyx_t_3 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_CR) != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_1 = __pyx_t_3;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    __pyx_t_3 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_CR) != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_1 = __pyx_t_3;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    __pyx_t_3 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_CR) != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_1 = __pyx_t_3;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    __pyx_t_3 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_CR) != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_1 = __pyx_t_3;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    __pyx_t_3 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_CR) != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_1 = __pyx_t_3;
      goto __pyx_L6_bool_binop_done;
    }
+3397:                 stream.c == 0:
    __pyx_t_3 = ((__pyx_v_stream->c == 0) != 0);
    __pyx_t_1 = __pyx_t_3;
    __pyx_L6_bool_binop_done:;
/* … */
    __pyx_t_3 = ((__pyx_v_stream->c == 0) != 0);
    __pyx_t_1 = __pyx_t_3;
    __pyx_L6_bool_binop_done:;
/* … */
    __pyx_t_3 = ((__pyx_v_stream->c == 0) != 0);
    __pyx_t_1 = __pyx_t_3;
    __pyx_L6_bool_binop_done:;
/* … */
    __pyx_t_3 = ((__pyx_v_stream->c == 0) != 0);
    __pyx_t_1 = __pyx_t_3;
    __pyx_L6_bool_binop_done:;
/* … */
    __pyx_t_3 = ((__pyx_v_stream->c == 0) != 0);
    __pyx_t_1 = __pyx_t_3;
    __pyx_L6_bool_binop_done:;
/* … */
    __pyx_t_3 = ((__pyx_v_stream->c == 0) != 0);
    __pyx_t_1 = __pyx_t_3;
    __pyx_L6_bool_binop_done:;
/* … */
    __pyx_t_3 = ((__pyx_v_stream->c == 0) != 0);
    __pyx_t_1 = __pyx_t_3;
    __pyx_L6_bool_binop_done:;
/* … */
    __pyx_t_3 = ((__pyx_v_stream->c == 0) != 0);
    __pyx_t_1 = __pyx_t_3;
    __pyx_L6_bool_binop_done:;
+3398:             vcf_calldata_store_integer(context, value_index, memory)
      __pyx_t_2 = __pyx_fuse_0__pyx_f_5allel_3opt_11io_vcf_read_vcf_calldata_store_integer(__pyx_v_context, __pyx_v_value_index, __pyx_v_memory); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 3398, __pyx_L1_error)
/* … */
      __pyx_t_2 = __pyx_fuse_1__pyx_f_5allel_3opt_11io_vcf_read_vcf_calldata_store_integer(__pyx_v_context, __pyx_v_value_index, __pyx_v_memory); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 3398, __pyx_L1_error)
/* … */
      __pyx_t_2 = __pyx_fuse_2__pyx_f_5allel_3opt_11io_vcf_read_vcf_calldata_store_integer(__pyx_v_context, __pyx_v_value_index, __pyx_v_memory); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 3398, __pyx_L1_error)
/* … */
      __pyx_t_2 = __pyx_fuse_3__pyx_f_5allel_3opt_11io_vcf_read_vcf_calldata_store_integer(__pyx_v_context, __pyx_v_value_index, __pyx_v_memory); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 3398, __pyx_L1_error)
/* … */
      __pyx_t_2 = __pyx_fuse_4__pyx_f_5allel_3opt_11io_vcf_read_vcf_calldata_store_integer(__pyx_v_context, __pyx_v_value_index, __pyx_v_memory); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 3398, __pyx_L1_error)
/* … */
      __pyx_t_2 = __pyx_fuse_5__pyx_f_5allel_3opt_11io_vcf_read_vcf_calldata_store_integer(__pyx_v_context, __pyx_v_value_index, __pyx_v_memory); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 3398, __pyx_L1_error)
/* … */
      __pyx_t_2 = __pyx_fuse_6__pyx_f_5allel_3opt_11io_vcf_read_vcf_calldata_store_integer(__pyx_v_context, __pyx_v_value_index, __pyx_v_memory); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 3398, __pyx_L1_error)
/* … */
      __pyx_t_2 = __pyx_fuse_7__pyx_f_5allel_3opt_11io_vcf_read_vcf_calldata_store_integer(__pyx_v_context, __pyx_v_value_index, __pyx_v_memory); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 3398, __pyx_L1_error)
+3399:             break
      goto __pyx_L4_break;
/* … */
      goto __pyx_L4_break;
/* … */
      goto __pyx_L4_break;
/* … */
      goto __pyx_L4_break;
/* … */
      goto __pyx_L4_break;
/* … */
      goto __pyx_L4_break;
/* … */
      goto __pyx_L4_break;
/* … */
      goto __pyx_L4_break;
 3400: 
 3401:         else:
+3402:             CharVector_append(&context.temp, stream.c)
    /*else*/ {
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_append((&__pyx_v_context->temp), __pyx_v_stream->c);
    }
    __pyx_L5:;
/* … */
    /*else*/ {
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_append((&__pyx_v_context->temp), __pyx_v_stream->c);
    }
    __pyx_L5:;
/* … */
    /*else*/ {
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_append((&__pyx_v_context->temp), __pyx_v_stream->c);
    }
    __pyx_L5:;
/* … */
    /*else*/ {
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_append((&__pyx_v_context->temp), __pyx_v_stream->c);
    }
    __pyx_L5:;
/* … */
    /*else*/ {
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_append((&__pyx_v_context->temp), __pyx_v_stream->c);
    }
    __pyx_L5:;
/* … */
    /*else*/ {
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_append((&__pyx_v_context->temp), __pyx_v_stream->c);
    }
    __pyx_L5:;
/* … */
    /*else*/ {
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_append((&__pyx_v_context->temp), __pyx_v_stream->c);
    }
    __pyx_L5:;
/* … */
    /*else*/ {
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_append((&__pyx_v_context->temp), __pyx_v_stream->c);
    }
    __pyx_L5:;
 3403: 
+3404:         stream.advance()
    __pyx_t_2 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 3404, __pyx_L1_error)
  }
  __pyx_L4_break:;
/* … */
    __pyx_t_2 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 3404, __pyx_L1_error)
  }
  __pyx_L4_break:;
/* … */
    __pyx_t_2 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 3404, __pyx_L1_error)
  }
  __pyx_L4_break:;
/* … */
    __pyx_t_2 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 3404, __pyx_L1_error)
  }
  __pyx_L4_break:;
/* … */
    __pyx_t_2 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 3404, __pyx_L1_error)
  }
  __pyx_L4_break:;
/* … */
    __pyx_t_2 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 3404, __pyx_L1_error)
  }
  __pyx_L4_break:;
/* … */
    __pyx_t_2 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 3404, __pyx_L1_error)
  }
  __pyx_L4_break:;
/* … */
    __pyx_t_2 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 3404, __pyx_L1_error)
  }
  __pyx_L4_break:;
 3405: 
 3406: 
+3407: cdef int vcf_calldata_store_integer(VCFContext context,
static int __pyx_fuse_0__pyx_f_5allel_3opt_11io_vcf_read_vcf_calldata_store_integer(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, Py_ssize_t __pyx_v_value_index, __Pyx_memviewslice __pyx_v_memory) {
  Py_ssize_t __pyx_v_parsed;
  long __pyx_v_value;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_0vcf_calldata_store_integer", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_calldata_store_integer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_fuse_1__pyx_f_5allel_3opt_11io_vcf_read_vcf_calldata_store_integer(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, Py_ssize_t __pyx_v_value_index, __Pyx_memviewslice __pyx_v_memory) {
  Py_ssize_t __pyx_v_parsed;
  long __pyx_v_value;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_1vcf_calldata_store_integer", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_calldata_store_integer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_fuse_2__pyx_f_5allel_3opt_11io_vcf_read_vcf_calldata_store_integer(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, Py_ssize_t __pyx_v_value_index, __Pyx_memviewslice __pyx_v_memory) {
  Py_ssize_t __pyx_v_parsed;
  long __pyx_v_value;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_2vcf_calldata_store_integer", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_calldata_store_integer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_fuse_3__pyx_f_5allel_3opt_11io_vcf_read_vcf_calldata_store_integer(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, Py_ssize_t __pyx_v_value_index, __Pyx_memviewslice __pyx_v_memory) {
  Py_ssize_t __pyx_v_parsed;
  long __pyx_v_value;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_3vcf_calldata_store_integer", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_calldata_store_integer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_fuse_4__pyx_f_5allel_3opt_11io_vcf_read_vcf_calldata_store_integer(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, Py_ssize_t __pyx_v_value_index, __Pyx_memviewslice __pyx_v_memory) {
  Py_ssize_t __pyx_v_parsed;
  long __pyx_v_value;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_4vcf_calldata_store_integer", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_calldata_store_integer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_fuse_5__pyx_f_5allel_3opt_11io_vcf_read_vcf_calldata_store_integer(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, Py_ssize_t __pyx_v_value_index, __Pyx_memviewslice __pyx_v_memory) {
  Py_ssize_t __pyx_v_parsed;
  long __pyx_v_value;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_5vcf_calldata_store_integer", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_calldata_store_integer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_fuse_6__pyx_f_5allel_3opt_11io_vcf_read_vcf_calldata_store_integer(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, Py_ssize_t __pyx_v_value_index, __Pyx_memviewslice __pyx_v_memory) {
  Py_ssize_t __pyx_v_parsed;
  long __pyx_v_value;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_6vcf_calldata_store_integer", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_calldata_store_integer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_fuse_7__pyx_f_5allel_3opt_11io_vcf_read_vcf_calldata_store_integer(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, Py_ssize_t __pyx_v_value_index, __Pyx_memviewslice __pyx_v_memory) {
  Py_ssize_t __pyx_v_parsed;
  long __pyx_v_value;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_7vcf_calldata_store_integer", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_calldata_store_integer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 3408:                                     Py_ssize_t value_index,
 3409:                                     integer[:, :, :] memory) except -1:  # nogil
 3410:     cdef:
 3411:         Py_ssize_t parsed
 3412:         long value
 3413: 
+3414:     if value_index >= memory.shape[2]:
  __pyx_t_1 = ((__pyx_v_value_index >= (__pyx_v_memory.shape[2])) != 0);
  if (__pyx_t_1) {
/* … */
  }
/* … */
  __pyx_t_1 = ((__pyx_v_value_index >= (__pyx_v_memory.shape[2])) != 0);
  if (__pyx_t_1) {
/* … */
  }
/* … */
  __pyx_t_1 = ((__pyx_v_value_index >= (__pyx_v_memory.shape[2])) != 0);
  if (__pyx_t_1) {
/* … */
  }
/* … */
  __pyx_t_1 = ((__pyx_v_value_index >= (__pyx_v_memory.shape[2])) != 0);
  if (__pyx_t_1) {
/* … */
  }
/* … */
  __pyx_t_1 = ((__pyx_v_value_index >= (__pyx_v_memory.shape[2])) != 0);
  if (__pyx_t_1) {
/* … */
  }
/* … */
  __pyx_t_1 = ((__pyx_v_value_index >= (__pyx_v_memory.shape[2])) != 0);
  if (__pyx_t_1) {
/* … */
  }
/* … */
  __pyx_t_1 = ((__pyx_v_value_index >= (__pyx_v_memory.shape[2])) != 0);
  if (__pyx_t_1) {
/* … */
  }
/* … */
  __pyx_t_1 = ((__pyx_v_value_index >= (__pyx_v_memory.shape[2])) != 0);
  if (__pyx_t_1) {
/* … */
  }
 3415:         # more values than we have room for, ignore
+3416:         return 0
    __pyx_r = 0;
    goto __pyx_L0;
/* … */
    __pyx_r = 0;
    goto __pyx_L0;
/* … */
    __pyx_r = 0;
    goto __pyx_L0;
/* … */
    __pyx_r = 0;
    goto __pyx_L0;
/* … */
    __pyx_r = 0;
    goto __pyx_L0;
/* … */
    __pyx_r = 0;
    goto __pyx_L0;
/* … */
    __pyx_r = 0;
    goto __pyx_L0;
/* … */
    __pyx_r = 0;
    goto __pyx_L0;
 3417: 
+3418:     parsed = vcf_strtol(&context.temp, context, &value)
  __pyx_t_2 = __pyx_f_5allel_3opt_11io_vcf_read_vcf_strtol((&__pyx_v_context->temp), __pyx_v_context, (&__pyx_v_value)); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1L))) __PYX_ERR(0, 3418, __pyx_L1_error)
  __pyx_v_parsed = __pyx_t_2;
/* … */
  __pyx_t_2 = __pyx_f_5allel_3opt_11io_vcf_read_vcf_strtol((&__pyx_v_context->temp), __pyx_v_context, (&__pyx_v_value)); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1L))) __PYX_ERR(0, 3418, __pyx_L1_error)
  __pyx_v_parsed = __pyx_t_2;
/* … */
  __pyx_t_2 = __pyx_f_5allel_3opt_11io_vcf_read_vcf_strtol((&__pyx_v_context->temp), __pyx_v_context, (&__pyx_v_value)); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1L))) __PYX_ERR(0, 3418, __pyx_L1_error)
  __pyx_v_parsed = __pyx_t_2;
/* … */
  __pyx_t_2 = __pyx_f_5allel_3opt_11io_vcf_read_vcf_strtol((&__pyx_v_context->temp), __pyx_v_context, (&__pyx_v_value)); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1L))) __PYX_ERR(0, 3418, __pyx_L1_error)
  __pyx_v_parsed = __pyx_t_2;
/* … */
  __pyx_t_2 = __pyx_f_5allel_3opt_11io_vcf_read_vcf_strtol((&__pyx_v_context->temp), __pyx_v_context, (&__pyx_v_value)); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1L))) __PYX_ERR(0, 3418, __pyx_L1_error)
  __pyx_v_parsed = __pyx_t_2;
/* … */
  __pyx_t_2 = __pyx_f_5allel_3opt_11io_vcf_read_vcf_strtol((&__pyx_v_context->temp), __pyx_v_context, (&__pyx_v_value)); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1L))) __PYX_ERR(0, 3418, __pyx_L1_error)
  __pyx_v_parsed = __pyx_t_2;
/* … */
  __pyx_t_2 = __pyx_f_5allel_3opt_11io_vcf_read_vcf_strtol((&__pyx_v_context->temp), __pyx_v_context, (&__pyx_v_value)); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1L))) __PYX_ERR(0, 3418, __pyx_L1_error)
  __pyx_v_parsed = __pyx_t_2;
/* … */
  __pyx_t_2 = __pyx_f_5allel_3opt_11io_vcf_read_vcf_strtol((&__pyx_v_context->temp), __pyx_v_context, (&__pyx_v_value)); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1L))) __PYX_ERR(0, 3418, __pyx_L1_error)
  __pyx_v_parsed = __pyx_t_2;
 3419: 
 3420:     # store value
+3421:     if parsed > 0:
  __pyx_t_1 = ((__pyx_v_parsed > 0) != 0);
  if (__pyx_t_1) {
/* … */
  }
/* … */
  __pyx_t_1 = ((__pyx_v_parsed > 0) != 0);
  if (__pyx_t_1) {
/* … */
  }
/* … */
  __pyx_t_1 = ((__pyx_v_parsed > 0) != 0);
  if (__pyx_t_1) {
/* … */
  }
/* … */
  __pyx_t_1 = ((__pyx_v_parsed > 0) != 0);
  if (__pyx_t_1) {
/* … */
  }
/* … */
  __pyx_t_1 = ((__pyx_v_parsed > 0) != 0);
  if (__pyx_t_1) {
/* … */
  }
/* … */
  __pyx_t_1 = ((__pyx_v_parsed > 0) != 0);
  if (__pyx_t_1) {
/* … */
  }
/* … */
  __pyx_t_1 = ((__pyx_v_parsed > 0) != 0);
  if (__pyx_t_1) {
/* … */
  }
/* … */
  __pyx_t_1 = ((__pyx_v_parsed > 0) != 0);
  if (__pyx_t_1) {
/* … */
  }
+3422:         memory[context.chunk_variant_index, context.sample_output_index, value_index] = value
    __pyx_t_3 = __pyx_v_context->chunk_variant_index;
    __pyx_t_4 = __pyx_v_context->sample_output_index;
    __pyx_t_5 = __pyx_v_value_index;
    *((__pyx_t_5numpy_int8_t *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_memory.data + __pyx_t_3 * __pyx_v_memory.strides[0]) ) + __pyx_t_4 * __pyx_v_memory.strides[1]) ) + __pyx_t_5 * __pyx_v_memory.strides[2]) )) = __pyx_v_value;
/* … */
    __pyx_t_3 = __pyx_v_context->chunk_variant_index;
    __pyx_t_4 = __pyx_v_context->sample_output_index;
    __pyx_t_5 = __pyx_v_value_index;
    *((__pyx_t_5numpy_int16_t *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_memory.data + __pyx_t_3 * __pyx_v_memory.strides[0]) ) + __pyx_t_4 * __pyx_v_memory.strides[1]) ) + __pyx_t_5 * __pyx_v_memory.strides[2]) )) = __pyx_v_value;
/* … */
    __pyx_t_3 = __pyx_v_context->chunk_variant_index;
    __pyx_t_4 = __pyx_v_context->sample_output_index;
    __pyx_t_5 = __pyx_v_value_index;
    *((__pyx_t_5numpy_int32_t *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_memory.data + __pyx_t_3 * __pyx_v_memory.strides[0]) ) + __pyx_t_4 * __pyx_v_memory.strides[1]) ) + __pyx_t_5 * __pyx_v_memory.strides[2]) )) = __pyx_v_value;
/* … */
    __pyx_t_3 = __pyx_v_context->chunk_variant_index;
    __pyx_t_4 = __pyx_v_context->sample_output_index;
    __pyx_t_5 = __pyx_v_value_index;
    *((__pyx_t_5numpy_int64_t *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_memory.data + __pyx_t_3 * __pyx_v_memory.strides[0]) ) + __pyx_t_4 * __pyx_v_memory.strides[1]) ) + __pyx_t_5 * __pyx_v_memory.strides[2]) )) = __pyx_v_value;
/* … */
    __pyx_t_3 = __pyx_v_context->chunk_variant_index;
    __pyx_t_4 = __pyx_v_context->sample_output_index;
    __pyx_t_5 = __pyx_v_value_index;
    *((__pyx_t_5numpy_uint8_t *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_memory.data + __pyx_t_3 * __pyx_v_memory.strides[0]) ) + __pyx_t_4 * __pyx_v_memory.strides[1]) ) + __pyx_t_5 * __pyx_v_memory.strides[2]) )) = __pyx_v_value;
/* … */
    __pyx_t_3 = __pyx_v_context->chunk_variant_index;
    __pyx_t_4 = __pyx_v_context->sample_output_index;
    __pyx_t_5 = __pyx_v_value_index;
    *((__pyx_t_5numpy_uint16_t *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_memory.data + __pyx_t_3 * __pyx_v_memory.strides[0]) ) + __pyx_t_4 * __pyx_v_memory.strides[1]) ) + __pyx_t_5 * __pyx_v_memory.strides[2]) )) = __pyx_v_value;
/* … */
    __pyx_t_3 = __pyx_v_context->chunk_variant_index;
    __pyx_t_4 = __pyx_v_context->sample_output_index;
    __pyx_t_5 = __pyx_v_value_index;
    *((__pyx_t_5numpy_uint32_t *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_memory.data + __pyx_t_3 * __pyx_v_memory.strides[0]) ) + __pyx_t_4 * __pyx_v_memory.strides[1]) ) + __pyx_t_5 * __pyx_v_memory.strides[2]) )) = __pyx_v_value;
/* … */
    __pyx_t_3 = __pyx_v_context->chunk_variant_index;
    __pyx_t_4 = __pyx_v_context->sample_output_index;
    __pyx_t_5 = __pyx_v_value_index;
    *((__pyx_t_5numpy_uint64_t *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_memory.data + __pyx_t_3 * __pyx_v_memory.strides[0]) ) + __pyx_t_4 * __pyx_v_memory.strides[1]) ) + __pyx_t_5 * __pyx_v_memory.strides[2]) )) = __pyx_v_value;
 3423: 
 3424: 
+3425: cdef int vcf_calldata_parse_floating(InputStreamBase stream,
static int __pyx_fuse_0__pyx_f_5allel_3opt_11io_vcf_read_vcf_calldata_parse_floating(struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, __Pyx_memviewslice __pyx_v_memory) {
  Py_ssize_t __pyx_v_value_index;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_0vcf_calldata_parse_floating", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_calldata_parse_floating", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_fuse_1__pyx_f_5allel_3opt_11io_vcf_read_vcf_calldata_parse_floating(struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, __Pyx_memviewslice __pyx_v_memory) {
  Py_ssize_t __pyx_v_value_index;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_1vcf_calldata_parse_floating", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_calldata_parse_floating", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 3426:                                      VCFContext context,
 3427:                                      floating[:, :, :] memory) except -1:  # nogil
 3428: 
 3429:     cdef:
+3430:         Py_ssize_t value_index = 0
  __pyx_v_value_index = 0;
/* … */
  __pyx_v_value_index = 0;
 3431: 
 3432:     # reset temporary buffer
+3433:     CharVector_clear(&context.temp)
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->temp));
/* … */
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->temp));
 3434: 
+3435:     while True:
  while (1) {
/* … */
  while (1) {
 3436: 
+3437:         if stream.c == COMMA:
    __pyx_t_1 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_COMMA) != 0);
    if (__pyx_t_1) {
/* … */
      goto __pyx_L5;
    }
/* … */
    __pyx_t_1 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_COMMA) != 0);
    if (__pyx_t_1) {
/* … */
      goto __pyx_L5;
    }
+3438:             vcf_calldata_store_floating(context, value_index, memory)
      __pyx_t_2 = __pyx_fuse_0__pyx_f_5allel_3opt_11io_vcf_read_vcf_calldata_store_floating(__pyx_v_context, __pyx_v_value_index, __pyx_v_memory); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 3438, __pyx_L1_error)
/* … */
      __pyx_t_2 = __pyx_fuse_1__pyx_f_5allel_3opt_11io_vcf_read_vcf_calldata_store_floating(__pyx_v_context, __pyx_v_value_index, __pyx_v_memory); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 3438, __pyx_L1_error)
+3439:             CharVector_clear(&context.temp)
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->temp));
/* … */
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->temp));
+3440:             value_index += 1
      __pyx_v_value_index = (__pyx_v_value_index + 1);
/* … */
      __pyx_v_value_index = (__pyx_v_value_index + 1);
 3441: 
+3442:         elif stream.c == COLON or \
    __pyx_t_3 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_COLON) != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_1 = __pyx_t_3;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    if (__pyx_t_1) {
/* … */
    }
/* … */
    __pyx_t_3 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_COLON) != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_1 = __pyx_t_3;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    if (__pyx_t_1) {
/* … */
    }
+3443:                 stream.c == TAB or \
    __pyx_t_3 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_TAB) != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_1 = __pyx_t_3;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    __pyx_t_3 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_TAB) != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_1 = __pyx_t_3;
      goto __pyx_L6_bool_binop_done;
    }
+3444:                 stream.c == LF or \
    __pyx_t_3 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_1 = __pyx_t_3;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    __pyx_t_3 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_1 = __pyx_t_3;
      goto __pyx_L6_bool_binop_done;
    }
+3445:                 stream.c == CR or \
    __pyx_t_3 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_CR) != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_1 = __pyx_t_3;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    __pyx_t_3 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_CR) != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_1 = __pyx_t_3;
      goto __pyx_L6_bool_binop_done;
    }
+3446:                 stream.c == 0:
    __pyx_t_3 = ((__pyx_v_stream->c == 0) != 0);
    __pyx_t_1 = __pyx_t_3;
    __pyx_L6_bool_binop_done:;
/* … */
    __pyx_t_3 = ((__pyx_v_stream->c == 0) != 0);
    __pyx_t_1 = __pyx_t_3;
    __pyx_L6_bool_binop_done:;
+3447:             vcf_calldata_store_floating(context, value_index, memory)
      __pyx_t_2 = __pyx_fuse_0__pyx_f_5allel_3opt_11io_vcf_read_vcf_calldata_store_floating(__pyx_v_context, __pyx_v_value_index, __pyx_v_memory); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 3447, __pyx_L1_error)
/* … */
      __pyx_t_2 = __pyx_fuse_1__pyx_f_5allel_3opt_11io_vcf_read_vcf_calldata_store_floating(__pyx_v_context, __pyx_v_value_index, __pyx_v_memory); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 3447, __pyx_L1_error)
+3448:             break
      goto __pyx_L4_break;
/* … */
      goto __pyx_L4_break;
 3449: 
 3450:         else:
+3451:             CharVector_append(&context.temp, stream.c)
    /*else*/ {
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_append((&__pyx_v_context->temp), __pyx_v_stream->c);
    }
    __pyx_L5:;
/* … */
    /*else*/ {
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_append((&__pyx_v_context->temp), __pyx_v_stream->c);
    }
    __pyx_L5:;
 3452: 
+3453:         stream.advance()
    __pyx_t_2 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 3453, __pyx_L1_error)
  }
  __pyx_L4_break:;
/* … */
    __pyx_t_2 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 3453, __pyx_L1_error)
  }
  __pyx_L4_break:;
 3454: 
 3455: 
+3456: cdef int vcf_calldata_store_floating(VCFContext context,
static int __pyx_fuse_0__pyx_f_5allel_3opt_11io_vcf_read_vcf_calldata_store_floating(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, Py_ssize_t __pyx_v_value_index, __Pyx_memviewslice __pyx_v_memory) {
  Py_ssize_t __pyx_v_parsed;
  double __pyx_v_value;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_0vcf_calldata_store_floating", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_calldata_store_floating", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_fuse_1__pyx_f_5allel_3opt_11io_vcf_read_vcf_calldata_store_floating(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, Py_ssize_t __pyx_v_value_index, __Pyx_memviewslice __pyx_v_memory) {
  Py_ssize_t __pyx_v_parsed;
  double __pyx_v_value;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_fuse_1vcf_calldata_store_floating", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_calldata_store_floating", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 3457:                                      Py_ssize_t value_index,
 3458:                                      floating[:, :, :] memory) except -1:  # nogil
 3459:     cdef:
 3460:         Py_ssize_t parsed
 3461:         double value
 3462: 
+3463:     if value_index >= memory.shape[2]:
  __pyx_t_1 = ((__pyx_v_value_index >= (__pyx_v_memory.shape[2])) != 0);
  if (__pyx_t_1) {
/* … */
  }
/* … */
  __pyx_t_1 = ((__pyx_v_value_index >= (__pyx_v_memory.shape[2])) != 0);
  if (__pyx_t_1) {
/* … */
  }
 3464:         # more values than we have room for, ignore
+3465:         return 0
    __pyx_r = 0;
    goto __pyx_L0;
/* … */
    __pyx_r = 0;
    goto __pyx_L0;
 3466: 
+3467:     parsed = vcf_strtod(&context.temp, context, &value)
  __pyx_t_2 = __pyx_f_5allel_3opt_11io_vcf_read_vcf_strtod((&__pyx_v_context->temp), __pyx_v_context, (&__pyx_v_value)); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1L))) __PYX_ERR(0, 3467, __pyx_L1_error)
  __pyx_v_parsed = __pyx_t_2;
/* … */
  __pyx_t_2 = __pyx_f_5allel_3opt_11io_vcf_read_vcf_strtod((&__pyx_v_context->temp), __pyx_v_context, (&__pyx_v_value)); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1L))) __PYX_ERR(0, 3467, __pyx_L1_error)
  __pyx_v_parsed = __pyx_t_2;
 3468: 
 3469:     # store value
+3470:     if parsed > 0:
  __pyx_t_1 = ((__pyx_v_parsed > 0) != 0);
  if (__pyx_t_1) {
/* … */
  }
/* … */
  __pyx_t_1 = ((__pyx_v_parsed > 0) != 0);
  if (__pyx_t_1) {
/* … */
  }
+3471:         memory[context.chunk_variant_index, context.sample_output_index, value_index] = value
    __pyx_t_3 = __pyx_v_context->chunk_variant_index;
    __pyx_t_4 = __pyx_v_context->sample_output_index;
    __pyx_t_5 = __pyx_v_value_index;
    *((__pyx_t_5numpy_float32_t *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_memory.data + __pyx_t_3 * __pyx_v_memory.strides[0]) ) + __pyx_t_4 * __pyx_v_memory.strides[1]) ) + __pyx_t_5 * __pyx_v_memory.strides[2]) )) = __pyx_v_value;
/* … */
    __pyx_t_3 = __pyx_v_context->chunk_variant_index;
    __pyx_t_4 = __pyx_v_context->sample_output_index;
    __pyx_t_5 = __pyx_v_value_index;
    *((__pyx_t_5numpy_float64_t *) ( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_memory.data + __pyx_t_3 * __pyx_v_memory.strides[0]) ) + __pyx_t_4 * __pyx_v_memory.strides[1]) ) + __pyx_t_5 * __pyx_v_memory.strides[2]) )) = __pyx_v_value;
 3472: 
 3473: 
+3474: cdef class VCFCallDataStringParser(VCFCallDataParserBase):
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataStringParser {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase __pyx_base;
  __Pyx_memviewslice memory;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataStringParser {
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataParserBase __pyx_base;
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataStringParser *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFCallDataStringParser;

 3475: 
 3476:     cdef np.uint8_t[:] memory
 3477: 
+3478:     def __init__(self, *args, **kwargs):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_23VCFCallDataStringParser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_23VCFCallDataStringParser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 1))) return -1;
  __pyx_v_kwargs = (__pyx_kwds) ? PyDict_Copy(__pyx_kwds) : PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return -1;
  __Pyx_GOTREF(__pyx_v_kwargs);
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_23VCFCallDataStringParser___init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataStringParser *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_23VCFCallDataStringParser___init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataStringParser *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
  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_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFCallDataStringParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+3479:         kwargs['dtype'] = check_string_dtype(kwargs.get('dtype'))
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_check_string_dtype); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3479, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyDict_GetItemDefault(__pyx_v_kwargs, __pyx_n_s_dtype, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3479, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_4) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3479, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_3};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3479, __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_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_3};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3479, __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(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3479, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3479, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_s_dtype, __pyx_t_1) < 0)) __PYX_ERR(0, 3479, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3480:         super(VCFCallDataStringParser, self).__init__(*args, **kwargs)
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3480, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFCallDataStringParser));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFCallDataStringParser));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFCallDataStringParser));
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self));
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3480, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3480, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_v_args, __pyx_v_kwargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3480, __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;
 3481: 
+3482:     cdef int parse(self,
static int __pyx_f_5allel_3opt_11io_vcf_read_23VCFCallDataStringParser_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataStringParser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  Py_ssize_t __pyx_v_value_index;
  Py_ssize_t __pyx_v_memory_offset;
  Py_ssize_t __pyx_v_memory_index;
  Py_ssize_t __pyx_v_chars_stored;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFCallDataStringParser.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 3483:                    InputStreamBase stream,
 3484:                    VCFContext context) except -1:  # nogil
 3485:         cdef:
+3486:             Py_ssize_t value_index = 0
  __pyx_v_value_index = 0;
 3487:             # index into memory view
 3488:             Py_ssize_t memory_offset, memory_index
 3489:             # number of characters read into current value
+3490:             Py_ssize_t chars_stored = 0
  __pyx_v_chars_stored = 0;
 3491: 
 3492:         # initialise memory index
 3493:         memory_offset = ((context.chunk_variant_index *
 3494:                          self.n_samples_out *
 3495:                          self.number *
+3496:                          self.itemsize) +
  /* "allel/opt/io_vcf_read.pyx":3496
 *                          self.n_samples_out *
 *                          self.number *
 *                          self.itemsize) +             # <<<<<<<<<<<<<<
 *                          (context.sample_output_index *
 *                           self.number *
 */
  __pyx_v_memory_offset = ((((__pyx_v_context->chunk_variant_index * __pyx_v_self->__pyx_base.n_samples_out) * __pyx_v_self->__pyx_base.number) * __pyx_v_self->__pyx_base.itemsize) + ((__pyx_v_context->sample_output_index * __pyx_v_self->__pyx_base.number) * __pyx_v_self->__pyx_base.itemsize));
 3497:                          (context.sample_output_index *
 3498:                           self.number *
 3499:                           self.itemsize))
+3500:         memory_index = memory_offset
  __pyx_v_memory_index = __pyx_v_memory_offset;
 3501: 
 3502:         # read characters until tab
+3503:         while True:
  while (1) {
 3504: 
+3505:             if stream.c == TAB or \
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_TAB) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    if (__pyx_t_1) {
/* … */
    }
+3506:                     stream.c == COLON or \
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_COLON) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
+3507:                     stream.c == CR or \
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_CR) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
+3508:                     stream.c == LF or \
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
+3509:                     stream.c == 0:
    __pyx_t_2 = ((__pyx_v_stream->c == 0) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L6_bool_binop_done:;
+3510:                 return 1
      __pyx_r = 1;
      goto __pyx_L0;
 3511: 
+3512:             elif stream.c == COMMA:
    __pyx_t_1 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_COMMA) != 0);
    if (__pyx_t_1) {
/* … */
      goto __pyx_L5;
    }
 3513:                 # advance value index
+3514:                 value_index += 1
      __pyx_v_value_index = (__pyx_v_value_index + 1);
 3515:                 # set memory index to beginning of next item
+3516:                 memory_index = memory_offset + (value_index * self.itemsize)
      __pyx_v_memory_index = (__pyx_v_memory_offset + (__pyx_v_value_index * __pyx_v_self->__pyx_base.itemsize));
 3517:                 # reset chars stored
+3518:                 chars_stored = 0
      __pyx_v_chars_stored = 0;
 3519: 
+3520:             elif chars_stored < self.itemsize and value_index < self.number:
    __pyx_t_2 = ((__pyx_v_chars_stored < __pyx_v_self->__pyx_base.itemsize) != 0);
    if (__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L11_bool_binop_done;
    }
    __pyx_t_2 = ((__pyx_v_value_index < __pyx_v_self->__pyx_base.number) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L11_bool_binop_done:;
    if (__pyx_t_1) {
/* … */
    }
    __pyx_L5:;
 3521:                 # store value
+3522:                 self.memory[memory_index] = stream.c
      __pyx_t_3 = __pyx_v_stream->c;
      __pyx_t_4 = __pyx_v_memory_index;
      *((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_self->memory.data + __pyx_t_4 * __pyx_v_self->memory.strides[0]) )) = __pyx_t_3;
 3523:                 # advance memory index
+3524:                 memory_index += 1
      __pyx_v_memory_index = (__pyx_v_memory_index + 1);
 3525:                 # advance number of characters stored
+3526:                 chars_stored += 1
      __pyx_v_chars_stored = (__pyx_v_chars_stored + 1);
 3527: 
 3528:             # advance input stream
+3529:             stream.advance()
    __pyx_t_5 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 3529, __pyx_L1_error)
  }
 3530: 
+3531:     cdef int malloc_chunk(self) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_23VCFCallDataStringParser_malloc_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataStringParser *__pyx_v_self) {
  PyObject *__pyx_v_shape = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("malloc_chunk", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFCallDataStringParser.malloc_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_shape);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+3532:         shape = (self.chunk_length, self.n_samples_out, self.number)
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.chunk_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3532, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.n_samples_out); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3532, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.number); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3532, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3532, __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_2);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_v_shape = __pyx_t_4;
  __pyx_t_4 = 0;
+3533:         self.values = np.zeros(shape, dtype=self.dtype)
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3533, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3533, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3533, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_v_shape);
  __Pyx_GIVEREF(__pyx_v_shape);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_shape);
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3533, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->__pyx_base.dtype)) < 0) __PYX_ERR(0, 3533, __pyx_L1_error)
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3533, __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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3533, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.values);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.values));
  __pyx_v_self->__pyx_base.values = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+3534:         self.memory = self.values.reshape(-1).view('u1')
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.values), __pyx_n_s_reshape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3534, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__103, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3534, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_view); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3534, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
/* … */
  __pyx_tuple__103 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__103)) __PYX_ERR(0, 3534, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__103);
  __Pyx_GIVEREF(__pyx_tuple__103);
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__104, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3534, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_uint8_t(__pyx_t_2);
  if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 3534, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __PYX_XDEC_MEMVIEW(&__pyx_v_self->memory, 0);
  __pyx_v_self->memory = __pyx_t_5;
  __pyx_t_5.memview = NULL;
  __pyx_t_5.data = NULL;
  __pyx_tuple__104 = PyTuple_Pack(1, __pyx_n_s_u1); if (unlikely(!__pyx_tuple__104)) __PYX_ERR(0, 3534, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__104);
  __Pyx_GIVEREF(__pyx_tuple__104);
 3535: 
+3536:     cdef int make_chunk(self, chunk, limit=None) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_23VCFCallDataStringParser_make_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataStringParser *__pyx_v_self, PyObject *__pyx_v_chunk, struct __pyx_opt_args_5allel_3opt_11io_vcf_read_23VCFCallDataStringParser_make_chunk *__pyx_optional_args) {
  PyObject *__pyx_v_limit = ((PyObject *)Py_None);
  PyObject *__pyx_v_field = NULL;
  PyObject *__pyx_v_values = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("make_chunk", 0);
  if (__pyx_optional_args) {
    if (__pyx_optional_args->__pyx_n > 0) {
      __pyx_v_limit = __pyx_optional_args->limit;
    }
  }
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFCallDataStringParser.make_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_field);
  __Pyx_XDECREF(__pyx_v_values);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
struct __pyx_opt_args_5allel_3opt_11io_vcf_read_23VCFCallDataStringParser_make_chunk {
  int __pyx_n;
  PyObject *limit;
};
+3537:         field = u'calldata/' + text_type(self.key, 'utf8')
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_text_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3537, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_self->__pyx_base.key, __pyx_n_s_utf8};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3537, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_self->__pyx_base.key, __pyx_n_s_utf8};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3537, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else
  #endif
  {
    __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3537, __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_self->__pyx_base.key);
    __Pyx_GIVEREF(__pyx_v_self->__pyx_base.key);
    PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_self->__pyx_base.key);
    __Pyx_INCREF(__pyx_n_s_utf8);
    __Pyx_GIVEREF(__pyx_n_s_utf8);
    PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_n_s_utf8);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3537, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyNumber_Add(__pyx_kp_u_calldata_2, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3537, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_field = __pyx_t_2;
  __pyx_t_2 = 0;
+3538:         values = self.values[:limit]
  __pyx_t_2 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_v_self->__pyx_base.values), 0, 0, NULL, &__pyx_v_limit, NULL, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3538, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_values = __pyx_t_2;
  __pyx_t_2 = 0;
+3539:         if self.number == 1:
  __pyx_t_6 = ((__pyx_v_self->__pyx_base.number == 1) != 0);
  if (__pyx_t_6) {
/* … */
  }
+3540:             values = values.squeeze(axis=2)
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_values, __pyx_n_s_squeeze); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3540, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3540, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_axis, __pyx_int_2) < 0) __PYX_ERR(0, 3540, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3540, __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_DECREF_SET(__pyx_v_values, __pyx_t_5);
    __pyx_t_5 = 0;
+3541:         chunk[field] = values
  if (unlikely(PyObject_SetItem(__pyx_v_chunk, __pyx_v_field, __pyx_v_values) < 0)) __PYX_ERR(0, 3541, __pyx_L1_error)
 3542: 
 3543: 
+3544: cdef class VCFCallDataObjectParser(VCFCallDataParserBase):
struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataObjectParser {
  struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataParserBase __pyx_base;
  __Pyx_memviewslice memory;
};
/* … */
struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataObjectParser {
  struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataParserBase __pyx_base;
};
static struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_VCFCallDataObjectParser *__pyx_vtabptr_5allel_3opt_11io_vcf_read_VCFCallDataObjectParser;

 3545: 
 3546:     cdef np.uint8_t[:] memory
 3547: 
+3548:     def __init__(self, *args, **kwargs):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_23VCFCallDataObjectParser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_23VCFCallDataObjectParser_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 1))) return -1;
  __pyx_v_kwargs = (__pyx_kwds) ? PyDict_Copy(__pyx_kwds) : PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return -1;
  __Pyx_GOTREF(__pyx_v_kwargs);
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_23VCFCallDataObjectParser___init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataObjectParser *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_23VCFCallDataObjectParser___init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataObjectParser *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
  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_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFCallDataObjectParser.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+3549:         kwargs['dtype'] = np.dtype('object')
  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__105, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3549, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (unlikely(PyDict_SetItem(__pyx_v_kwargs, __pyx_n_s_dtype, __pyx_t_1) < 0)) __PYX_ERR(0, 3549, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/* … */
  __pyx_tuple__105 = PyTuple_Pack(1, __pyx_n_s_object); if (unlikely(!__pyx_tuple__105)) __PYX_ERR(0, 3549, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__105);
  __Pyx_GIVEREF(__pyx_tuple__105);
+3550:         super(VCFCallDataObjectParser, self).__init__(*args, **kwargs)
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3550, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFCallDataObjectParser));
  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFCallDataObjectParser));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_5allel_3opt_11io_vcf_read_VCFCallDataObjectParser));
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self));
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3550, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3550, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_v_args, __pyx_v_kwargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3550, __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;
 3551: 
+3552:     cdef int parse(self,
static int __pyx_f_5allel_3opt_11io_vcf_read_23VCFCallDataObjectParser_parse(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataObjectParser *__pyx_v_self, struct __pyx_obj_5allel_3opt_11io_vcf_read_InputStreamBase *__pyx_v_stream, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  Py_ssize_t __pyx_v_value_index;
  PyObject *__pyx_v_v = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parse", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFCallDataObjectParser.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_v);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 3553:                    InputStreamBase stream,
 3554:                    VCFContext context) except -1:  # nogil
 3555:         cdef:
+3556:             Py_ssize_t value_index = 0
  __pyx_v_value_index = 0;
 3557: 
+3558:         CharVector_clear(&context.temp)
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->temp));
 3559: 
 3560:         # read characters until tab
+3561:         while True:
  while (1) {
 3562: 
+3563:             if stream.c == TAB or \
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_TAB) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
/* … */
    if (__pyx_t_1) {
/* … */
    }
+3564:                     stream.c == COLON or \
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_COLON) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
+3565:                     stream.c == CR or \
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_CR) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
+3566:                     stream.c == LF or \
    __pyx_t_2 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_LF) != 0);
    if (!__pyx_t_2) {
    } else {
      __pyx_t_1 = __pyx_t_2;
      goto __pyx_L6_bool_binop_done;
    }
+3567:                     stream.c == 0:
    __pyx_t_2 = ((__pyx_v_stream->c == 0) != 0);
    __pyx_t_1 = __pyx_t_2;
    __pyx_L6_bool_binop_done:;
+3568:                 if value_index < self.number and context.temp.size > 0:
      __pyx_t_2 = ((__pyx_v_value_index < __pyx_v_self->__pyx_base.number) != 0);
      if (__pyx_t_2) {
      } else {
        __pyx_t_1 = __pyx_t_2;
        goto __pyx_L12_bool_binop_done;
      }
      __pyx_t_2 = ((__pyx_v_context->temp.size > 0) != 0);
      __pyx_t_1 = __pyx_t_2;
      __pyx_L12_bool_binop_done:;
      if (__pyx_t_1) {
/* … */
      }
 3569:                     # with gil:
+3570:                     v = CharVector_to_pystr(&context.temp)
        __pyx_t_3 = __pyx_f_5allel_3opt_11io_vcf_read_CharVector_to_pystr((&__pyx_v_context->temp)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3570, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_XDECREF_SET(__pyx_v_v, __pyx_t_3);
        __pyx_t_3 = 0;
+3571:                     self.values[context.chunk_variant_index, context.sample_output_index, value_index] = v
        __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_context->chunk_variant_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3571, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_context->sample_output_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3571, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_value_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3571, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3571, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_3);
        PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3);
        __Pyx_GIVEREF(__pyx_t_4);
        PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_5);
        PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_5);
        __pyx_t_3 = 0;
        __pyx_t_4 = 0;
        __pyx_t_5 = 0;
        if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->__pyx_base.values), __pyx_t_6, __pyx_v_v) < 0)) __PYX_ERR(0, 3571, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+3572:                 break
      goto __pyx_L4_break;
 3573: 
+3574:             elif stream.c == COMMA:
    __pyx_t_1 = ((__pyx_v_stream->c == __pyx_v_5allel_3opt_11io_vcf_read_COMMA) != 0);
    if (__pyx_t_1) {
/* … */
      goto __pyx_L5;
    }
+3575:                 if value_index < self.number and context.temp.size > 0:
      __pyx_t_2 = ((__pyx_v_value_index < __pyx_v_self->__pyx_base.number) != 0);
      if (__pyx_t_2) {
      } else {
        __pyx_t_1 = __pyx_t_2;
        goto __pyx_L15_bool_binop_done;
      }
      __pyx_t_2 = ((__pyx_v_context->temp.size > 0) != 0);
      __pyx_t_1 = __pyx_t_2;
      __pyx_L15_bool_binop_done:;
      if (__pyx_t_1) {
/* … */
      }
 3576:                     # with gil:
+3577:                     v = CharVector_to_pystr(&context.temp)
        __pyx_t_6 = __pyx_f_5allel_3opt_11io_vcf_read_CharVector_to_pystr((&__pyx_v_context->temp)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3577, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_XDECREF_SET(__pyx_v_v, __pyx_t_6);
        __pyx_t_6 = 0;
+3578:                     self.values[context.chunk_variant_index, context.sample_output_index, value_index] = v
        __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_context->chunk_variant_index); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3578, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_context->sample_output_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3578, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_value_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3578, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3578, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_5);
        PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_4);
        PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_4);
        __pyx_t_6 = 0;
        __pyx_t_5 = 0;
        __pyx_t_4 = 0;
        if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->__pyx_base.values), __pyx_t_3, __pyx_v_v) < 0)) __PYX_ERR(0, 3578, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+3579:                 CharVector_clear(&context.temp)
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_clear((&__pyx_v_context->temp));
 3580:                 # advance value index
+3581:                 value_index += 1
      __pyx_v_value_index = (__pyx_v_value_index + 1);
 3582: 
+3583:             elif value_index < self.number:
    __pyx_t_1 = ((__pyx_v_value_index < __pyx_v_self->__pyx_base.number) != 0);
    if (__pyx_t_1) {
/* … */
    }
    __pyx_L5:;
+3584:                 CharVector_append(&context.temp, stream.c)
      __pyx_f_5allel_3opt_11io_vcf_read_CharVector_append((&__pyx_v_context->temp), __pyx_v_stream->c);
 3585: 
 3586:             # advance input stream
+3587:             stream.advance()
    __pyx_t_7 = ((struct __pyx_vtabstruct_5allel_3opt_11io_vcf_read_InputStreamBase *)__pyx_v_stream->__pyx_vtab)->advance(__pyx_v_stream); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 3587, __pyx_L1_error)
  }
  __pyx_L4_break:;
 3588: 
+3589:     cdef int malloc_chunk(self) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_23VCFCallDataObjectParser_malloc_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataObjectParser *__pyx_v_self) {
  PyObject *__pyx_v_shape = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("malloc_chunk", 0);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFCallDataObjectParser.malloc_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_shape);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+3590:         shape = (self.chunk_length, self.n_samples_out, self.number)
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.chunk_length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3590, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.n_samples_out); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3590, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.number); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3590, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3590, __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_2);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_v_shape = __pyx_t_4;
  __pyx_t_4 = 0;
+3591:         self.values = np.empty(shape, dtype=self.dtype)
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3591, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3591, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3591, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_v_shape);
  __Pyx_GIVEREF(__pyx_v_shape);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_shape);
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3591, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, ((PyObject *)__pyx_v_self->__pyx_base.dtype)) < 0) __PYX_ERR(0, 3591, __pyx_L1_error)
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3591, __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_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3591, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->__pyx_base.values);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.values));
  __pyx_v_self->__pyx_base.values = ((PyArrayObject *)__pyx_t_1);
  __pyx_t_1 = 0;
+3592:         self.values.fill(u'')
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.values), __pyx_n_s_fill); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3592, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__106, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3592, __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__106 = PyTuple_Pack(1, __pyx_kp_u__8); if (unlikely(!__pyx_tuple__106)) __PYX_ERR(0, 3592, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__106);
  __Pyx_GIVEREF(__pyx_tuple__106);
 3593: 
+3594:     cdef int make_chunk(self, chunk, limit=None) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_23VCFCallDataObjectParser_make_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFCallDataObjectParser *__pyx_v_self, PyObject *__pyx_v_chunk, struct __pyx_opt_args_5allel_3opt_11io_vcf_read_23VCFCallDataObjectParser_make_chunk *__pyx_optional_args) {
  PyObject *__pyx_v_limit = ((PyObject *)Py_None);
  PyObject *__pyx_v_field = NULL;
  PyObject *__pyx_v_values = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("make_chunk", 0);
  if (__pyx_optional_args) {
    if (__pyx_optional_args->__pyx_n > 0) {
      __pyx_v_limit = __pyx_optional_args->limit;
    }
  }
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.VCFCallDataObjectParser.make_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_field);
  __Pyx_XDECREF(__pyx_v_values);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
struct __pyx_opt_args_5allel_3opt_11io_vcf_read_23VCFCallDataObjectParser_make_chunk {
  int __pyx_n;
  PyObject *limit;
};
+3595:         field = u'calldata/' + text_type(self.key, 'utf8')
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_text_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3595, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_self->__pyx_base.key, __pyx_n_s_utf8};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3595, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_self->__pyx_base.key, __pyx_n_s_utf8};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3595, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else
  #endif
  {
    __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3595, __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_self->__pyx_base.key);
    __Pyx_GIVEREF(__pyx_v_self->__pyx_base.key);
    PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_self->__pyx_base.key);
    __Pyx_INCREF(__pyx_n_s_utf8);
    __Pyx_GIVEREF(__pyx_n_s_utf8);
    PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_n_s_utf8);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3595, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyNumber_Add(__pyx_kp_u_calldata_2, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3595, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_field = __pyx_t_2;
  __pyx_t_2 = 0;
+3596:         values = self.values[:limit]
  __pyx_t_2 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_v_self->__pyx_base.values), 0, 0, NULL, &__pyx_v_limit, NULL, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3596, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_values = __pyx_t_2;
  __pyx_t_2 = 0;
+3597:         if self.number == 1:
  __pyx_t_6 = ((__pyx_v_self->__pyx_base.number == 1) != 0);
  if (__pyx_t_6) {
/* … */
  }
+3598:             values = values.squeeze(axis=2)
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_values, __pyx_n_s_squeeze); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3598, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3598, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_axis, __pyx_int_2) < 0) __PYX_ERR(0, 3598, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3598, __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_DECREF_SET(__pyx_v_values, __pyx_t_5);
    __pyx_t_5 = 0;
+3599:         chunk[field] = values
  if (unlikely(PyObject_SetItem(__pyx_v_chunk, __pyx_v_field, __pyx_v_values) < 0)) __PYX_ERR(0, 3599, __pyx_L1_error)
 3600: 
 3601: 
 3602: ##########################################################################################
 3603: # Low-level VCF value parsing functions
 3604: 
 3605: 
+3606: cdef Py_ssize_t vcf_strtol(CharVector* value, VCFContext context, long* l) except -1:  # nogil
static Py_ssize_t __pyx_f_5allel_3opt_11io_vcf_read_vcf_strtol(struct __pyx_t_5allel_3opt_11io_vcf_read_CharVector *__pyx_v_value, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, long *__pyx_v_l) {
  char *__pyx_v_str_end;
  Py_ssize_t __pyx_v_parsed;
  Py_ssize_t __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("vcf_strtol", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_strtol", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1L;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 3607:     cdef:
 3608:         char* str_end
 3609:         Py_ssize_t parsed
 3610: 
+3611:     if value.size == 0:
  __pyx_t_1 = ((__pyx_v_value->size == 0) != 0);
  if (__pyx_t_1) {
/* … */
  }
 3612:         # not strictly kosher, treat as missing value
+3613:         return 0
    __pyx_r = 0;
    goto __pyx_L0;
 3614: 
+3615:     if value.size == 1 and value.data[0] == PERIOD:
  __pyx_t_2 = ((__pyx_v_value->size == 1) != 0);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L5_bool_binop_done;
  }
  __pyx_t_2 = (((__pyx_v_value->data[0]) == __pyx_v_5allel_3opt_11io_vcf_read_PERIOD) != 0);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L5_bool_binop_done:;
  if (__pyx_t_1) {
/* … */
  }
 3616:         # explicit missing value
+3617:         return 0
    __pyx_r = 0;
    goto __pyx_L0;
 3618: 
 3619:     # terminate string
+3620:     CharVector_terminate(value)
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_terminate(__pyx_v_value);
 3621: 
 3622:     # do parsing
+3623:     l[0] = strtol(value.data, &str_end, 10)
  (__pyx_v_l[0]) = strtol(__pyx_v_value->data, (&__pyx_v_str_end), 10);
 3624: 
 3625:     # check success
+3626:     parsed = str_end - value.data
  __pyx_v_parsed = (__pyx_v_str_end - __pyx_v_value->data);
 3627: 
 3628:     # check success
+3629:     if value.size - 1 == parsed:  # account for terminating null byte
  __pyx_t_1 = (((__pyx_v_value->size - 1) == __pyx_v_parsed) != 0);
  if (__pyx_t_1) {
/* … */
  }
+3630:         return parsed
    __pyx_r = __pyx_v_parsed;
    goto __pyx_L0;
 3631: 
+3632:     elif parsed > 0:
  __pyx_t_1 = ((__pyx_v_parsed > 0) != 0);
  if (__pyx_t_1) {
/* … */
  }
 3633:         # with gil:
+3634:         warn('not all characters parsed for integer value', context)
    __pyx_t_3 = __pyx_f_5allel_3opt_11io_vcf_read_warn(__pyx_kp_s_not_all_characters_parsed_for_in, __pyx_v_context); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 3634, __pyx_L1_error)
+3635:         return parsed
    __pyx_r = __pyx_v_parsed;
    goto __pyx_L0;
 3636: 
 3637:     else:
 3638:         # with gil:
+3639:         warn('error parsing integer value', context)
  /*else*/ {
    __pyx_t_3 = __pyx_f_5allel_3opt_11io_vcf_read_warn(__pyx_kp_s_error_parsing_integer_value, __pyx_v_context); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 3639, __pyx_L1_error)
+3640:         return 0
    __pyx_r = 0;
    goto __pyx_L0;
  }
 3641: 
 3642: 
+3643: cdef Py_ssize_t vcf_strtod(CharVector* value, VCFContext context, double* d) except -1:  # nogil
static Py_ssize_t __pyx_f_5allel_3opt_11io_vcf_read_vcf_strtod(struct __pyx_t_5allel_3opt_11io_vcf_read_CharVector *__pyx_v_value, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context, double *__pyx_v_d) {
  char *__pyx_v_str_end;
  Py_ssize_t __pyx_v_parsed;
  Py_ssize_t __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("vcf_strtod", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.vcf_strtod", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1L;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 3644:     cdef:
 3645:         char* str_end
 3646:         Py_ssize_t parsed
 3647: 
+3648:     if value.size == 0:
  __pyx_t_1 = ((__pyx_v_value->size == 0) != 0);
  if (__pyx_t_1) {
/* … */
  }
 3649:         # not strictly kosher, treat as missing value
+3650:         return 0
    __pyx_r = 0;
    goto __pyx_L0;
 3651: 
+3652:     if value.size == 1 and value.data[0] == PERIOD:
  __pyx_t_2 = ((__pyx_v_value->size == 1) != 0);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L5_bool_binop_done;
  }
  __pyx_t_2 = (((__pyx_v_value->data[0]) == __pyx_v_5allel_3opt_11io_vcf_read_PERIOD) != 0);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L5_bool_binop_done:;
  if (__pyx_t_1) {
/* … */
  }
 3653:         # explicit missing value
+3654:         return 0
    __pyx_r = 0;
    goto __pyx_L0;
 3655: 
 3656:     # terminate string
+3657:     CharVector_terminate(value)
  __pyx_f_5allel_3opt_11io_vcf_read_CharVector_terminate(__pyx_v_value);
 3658: 
 3659:     # do parsing
+3660:     d[0] = strtod(value.data, &str_end)
  (__pyx_v_d[0]) = strtod(__pyx_v_value->data, (&__pyx_v_str_end));
 3661: 
 3662:     # check success
+3663:     parsed = str_end - value.data
  __pyx_v_parsed = (__pyx_v_str_end - __pyx_v_value->data);
 3664: 
 3665:     # check success
+3666:     if value.size - 1 == parsed:  # account for terminating null byte
  __pyx_t_1 = (((__pyx_v_value->size - 1) == __pyx_v_parsed) != 0);
  if (__pyx_t_1) {
/* … */
  }
+3667:         return parsed
    __pyx_r = __pyx_v_parsed;
    goto __pyx_L0;
 3668: 
+3669:     elif parsed > 0:
  __pyx_t_1 = ((__pyx_v_parsed > 0) != 0);
  if (__pyx_t_1) {
/* … */
  }
 3670:         # with gil:
+3671:         warn('not all characters parsed for floating point value', context)
    __pyx_t_3 = __pyx_f_5allel_3opt_11io_vcf_read_warn(__pyx_kp_s_not_all_characters_parsed_for_fl, __pyx_v_context); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 3671, __pyx_L1_error)
+3672:         return parsed
    __pyx_r = __pyx_v_parsed;
    goto __pyx_L0;
 3673: 
 3674:     else:
 3675:         # with gil:
+3676:         warn('error parsing floating point value', context)
  /*else*/ {
    __pyx_t_3 = __pyx_f_5allel_3opt_11io_vcf_read_warn(__pyx_kp_s_error_parsing_floating_point_val, __pyx_v_context); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 3676, __pyx_L1_error)
+3677:         return 0
    __pyx_r = 0;
    goto __pyx_L0;
  }
 3678: 
 3679: 
 3680: ##########################################################################################
 3681: # LOGGING
 3682: 
 3683: 
+3684: vcf_state_labels = [
  __pyx_t_1 = PyList_New(12); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3684, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_n_s_CHROM);
  __Pyx_GIVEREF(__pyx_n_s_CHROM);
  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_CHROM);
  __Pyx_INCREF(__pyx_n_s_POS);
  __Pyx_GIVEREF(__pyx_n_s_POS);
  PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_s_POS);
  __Pyx_INCREF(__pyx_n_s_ID);
  __Pyx_GIVEREF(__pyx_n_s_ID);
  PyList_SET_ITEM(__pyx_t_1, 2, __pyx_n_s_ID);
  __Pyx_INCREF(__pyx_n_s_REF);
  __Pyx_GIVEREF(__pyx_n_s_REF);
  PyList_SET_ITEM(__pyx_t_1, 3, __pyx_n_s_REF);
  __Pyx_INCREF(__pyx_n_s_ALT);
  __Pyx_GIVEREF(__pyx_n_s_ALT);
  PyList_SET_ITEM(__pyx_t_1, 4, __pyx_n_s_ALT);
  __Pyx_INCREF(__pyx_n_s_QUAL);
  __Pyx_GIVEREF(__pyx_n_s_QUAL);
  PyList_SET_ITEM(__pyx_t_1, 5, __pyx_n_s_QUAL);
  __Pyx_INCREF(__pyx_n_s_FILTER);
  __Pyx_GIVEREF(__pyx_n_s_FILTER);
  PyList_SET_ITEM(__pyx_t_1, 6, __pyx_n_s_FILTER);
  __Pyx_INCREF(__pyx_n_s_INFO);
  __Pyx_GIVEREF(__pyx_n_s_INFO);
  PyList_SET_ITEM(__pyx_t_1, 7, __pyx_n_s_INFO);
  __Pyx_INCREF(__pyx_n_s_FORMAT);
  __Pyx_GIVEREF(__pyx_n_s_FORMAT);
  PyList_SET_ITEM(__pyx_t_1, 8, __pyx_n_s_FORMAT);
  __Pyx_INCREF(__pyx_n_s_CALLDATA);
  __Pyx_GIVEREF(__pyx_n_s_CALLDATA);
  PyList_SET_ITEM(__pyx_t_1, 9, __pyx_n_s_CALLDATA);
  __Pyx_INCREF(__pyx_n_s_EOL);
  __Pyx_GIVEREF(__pyx_n_s_EOL);
  PyList_SET_ITEM(__pyx_t_1, 10, __pyx_n_s_EOL);
  __Pyx_INCREF(__pyx_n_s_EOF);
  __Pyx_GIVEREF(__pyx_n_s_EOF);
  PyList_SET_ITEM(__pyx_t_1, 11, __pyx_n_s_EOF);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_vcf_state_labels, __pyx_t_1) < 0) __PYX_ERR(0, 3684, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 3685:     'CHROM',
 3686:     'POS',
 3687:     'ID',
 3688:     'REF',
 3689:     'ALT',
 3690:     'QUAL',
 3691:     'FILTER',
 3692:     'INFO',
 3693:     'FORMAT',
 3694:     'CALLDATA',
 3695:     'EOL',
 3696:     'EOF'
 3697: ]
 3698: 
 3699: 
+3700: cdef int warn(message, VCFContext context) except -1:
static int __pyx_f_5allel_3opt_11io_vcf_read_warn(PyObject *__pyx_v_message, struct __pyx_obj_5allel_3opt_11io_vcf_read_VCFContext *__pyx_v_context) {
  Py_ssize_t __pyx_v_format_index;
  PyObject *__pyx_v_chrom = NULL;
  PyObject *__pyx_v_sample = NULL;
  PyObject *__pyx_v_format = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("warn", 0);
  __Pyx_INCREF(__pyx_v_message);
/* … */
  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.warn", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_chrom);
  __Pyx_XDECREF(__pyx_v_sample);
  __Pyx_XDECREF(__pyx_v_format);
  __Pyx_XDECREF(__pyx_v_message);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 3701:     cdef Py_ssize_t format_index
+3702:     message += '; field: %s' % vcf_state_labels[context.state]
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_vcf_state_labels); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3702, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, __pyx_v_context->state, int, 1, __Pyx_PyInt_From_int, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3702, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_field_s, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3702, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_message, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3702, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF_SET(__pyx_v_message, __pyx_t_2);
  __pyx_t_2 = 0;
+3703:     message += '; variant: %s' % context.variant_index
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_context->variant_index); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3703, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_variant_s, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3703, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_message, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3703, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF_SET(__pyx_v_message, __pyx_t_2);
  __pyx_t_2 = 0;
+3704:     if context.state > VCFState.POS:
  __pyx_t_3 = ((__pyx_v_context->state > __pyx_e_5allel_3opt_11io_vcf_read_POS) != 0);
  if (__pyx_t_3) {
/* … */
  }
+3705:         chrom = CharVector_to_pybytes(&context.chrom)
    __pyx_t_2 = __pyx_f_5allel_3opt_11io_vcf_read_CharVector_to_pybytes((&__pyx_v_context->chrom)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3705, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_v_chrom = __pyx_t_2;
    __pyx_t_2 = 0;
+3706:         if not PY2:
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_PY2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3706, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 3706, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_4 = ((!__pyx_t_3) != 0);
    if (__pyx_t_4) {
/* … */
    }
+3707:             chrom = str(chrom, 'utf8')
      __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3707, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_INCREF(__pyx_v_chrom);
      __Pyx_GIVEREF(__pyx_v_chrom);
      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_chrom);
      __Pyx_INCREF(__pyx_n_s_utf8);
      __Pyx_GIVEREF(__pyx_n_s_utf8);
      PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_n_s_utf8);
      __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3707, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF_SET(__pyx_v_chrom, __pyx_t_1);
      __pyx_t_1 = 0;
+3708:         message += ' (%s:%s)' % (chrom, context.pos)
    __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v_context->pos); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3708, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3708, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v_chrom);
    __Pyx_GIVEREF(__pyx_v_chrom);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_chrom);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_s_s, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3708, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_message, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3708, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF_SET(__pyx_v_message, __pyx_t_2);
    __pyx_t_2 = 0;
+3709:     if context.state == VCFState.CALLDATA:
  __pyx_t_4 = ((__pyx_v_context->state == __pyx_e_5allel_3opt_11io_vcf_read_CALLDATA) != 0);
  if (__pyx_t_4) {
/* … */
  }
+3710:         if context.sample_index >= len(context.headers.samples):
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_context->headers, __pyx_n_s_samples); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3710, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = PyObject_Length(__pyx_t_2); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 3710, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_4 = ((__pyx_v_context->sample_index >= __pyx_t_5) != 0);
    if (__pyx_t_4) {
/* … */
      goto __pyx_L6;
    }
+3711:             sample = 'unknown'
      __Pyx_INCREF(__pyx_n_s_unknown);
      __pyx_v_sample = __pyx_n_s_unknown;
 3712:         else:
+3713:             sample = context.headers.samples[context.sample_index]
    /*else*/ {
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_context->headers, __pyx_n_s_samples); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3713, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, __pyx_v_context->sample_index, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3713, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_v_sample = __pyx_t_1;
      __pyx_t_1 = 0;
    }
    __pyx_L6:;
+3714:         if context.sample_field_index >= context.variant_format_indices.size:
    __pyx_t_4 = ((__pyx_v_context->sample_field_index >= __pyx_v_context->variant_format_indices.size) != 0);
    if (__pyx_t_4) {
/* … */
      goto __pyx_L7;
    }
+3715:             format = 'unknown'
      __Pyx_INCREF(__pyx_n_s_unknown);
      __pyx_v_format = __pyx_n_s_unknown;
 3716:         else:
+3717:             format_index = context.variant_format_indices.data[context.sample_field_index]
    /*else*/ {
      __pyx_v_format_index = (__pyx_v_context->variant_format_indices.data[__pyx_v_context->sample_field_index]);
+3718:             format = context.formats[format_index]
      if (unlikely(__pyx_v_context->formats == Py_None)) {
        PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
        __PYX_ERR(0, 3718, __pyx_L1_error)
      }
      __pyx_t_1 = PyList_GET_ITEM(__pyx_v_context->formats, __pyx_v_format_index);
      __Pyx_INCREF(__pyx_t_1);
      __pyx_v_format = __pyx_t_1;
      __pyx_t_1 = 0;
    }
    __pyx_L7:;
+3719:         message += '; sample: %s:%s (%s:%s)' % (context.sample_index,
    __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_context->sample_index); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3719, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
/* … */
    __pyx_t_6 = PyTuple_New(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3719, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_2);
    __Pyx_INCREF(__pyx_v_sample);
    __Pyx_GIVEREF(__pyx_v_sample);
    PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_v_sample);
    __Pyx_INCREF(__pyx_v_format);
    __Pyx_GIVEREF(__pyx_v_format);
    PyTuple_SET_ITEM(__pyx_t_6, 3, __pyx_v_format);
    __pyx_t_1 = 0;
    __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_sample_s_s_s_s, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3719, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = PyNumber_InPlaceAdd(__pyx_v_message, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3719, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF_SET(__pyx_v_message, __pyx_t_6);
    __pyx_t_6 = 0;
+3720:                                                 context.sample_field_index,
    __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_context->sample_field_index); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3720, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
 3721:                                                 sample,
 3722:                                                 format)
+3723:     warnings.warn(message)
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_warnings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3723, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_warn); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3723, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
    }
  }
  if (!__pyx_t_2) {
    __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_message); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3723, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_1)) {
      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_message};
      __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3723, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_GOTREF(__pyx_t_6);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
      PyObject *__pyx_temp[2] = {__pyx_t_2, __pyx_v_message};
      __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3723, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_GOTREF(__pyx_t_6);
    } else
    #endif
    {
      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3723, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2); __pyx_t_2 = NULL;
      __Pyx_INCREF(__pyx_v_message);
      __Pyx_GIVEREF(__pyx_v_message);
      PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_message);
      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_7, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3723, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 3724: 
 3725: 
 3726: # import sys
 3727: #
 3728: #
 3729: # cdef int debug(message, vars=None) except -1:
 3730: #     message = '[DEBUG] ' + str(message)
 3731: #     if vars:
 3732: #         message = message % vars
 3733: #     print(message, file=sys.stderr)
 3734: #     sys.stderr.flush()
 3735: 
 3736: 
 3737: ##########################################################################################
 3738: # EXPERIMENTAL support for multi-threaded parsing
 3739: # N.B., this is not used for the moment, because use of object dtype for strings
 3740: # requires GIL acquisition, and this may hurt performance in a single-threaded
 3741: # context. I'm not completely certain that is the case, but I am out of time to
 3742: # explore further.
 3743: 
 3744: 
 3745: # import itertools
 3746: # import time
 3747: #
 3748: #
 3749: # cdef class VCFParallelParser:
 3750: #
 3751: #     cdef:
 3752: #         FileInputStream stream
 3753: #         CharVectorInputStream buffer
 3754: #         VCFContext context
 3755: #         VCFParser parser
 3756: #         Py_ssize_t chunk_length
 3757: #         Py_ssize_t block_length
 3758: #         object pool
 3759: #         object result
 3760: #
 3761: #     def __cinit__(self, stream, parser, chunk_length, block_length, pool, headers, fields):
 3762: #         self.buffer = CharVectorInputStream(2**14)
 3763: #         self.context = VCFContext(headers, fields)
 3764: #         self.stream = stream
 3765: #         self.parser = parser
 3766: #         self.chunk_length = chunk_length
 3767: #         self.block_length = block_length
 3768: #         self.pool = pool
 3769: #         self.result = None
 3770: #
 3771: #     def read(self, n_lines):
 3772: #         self.buffer.clear()
 3773: #         n_lines_read = self.stream.read_lines_into(&(self.buffer.vector), n_lines)
 3774: #         self.buffer.advance()
 3775: #         return n_lines_read
 3776: #
 3777: #     def parse_async(self, block_index, chunk_index):
 3778: #         self.result = self.pool.apply_async(self.parse, args=(block_index, chunk_index))
 3779: #
 3780: #     def join(self):
 3781: #         if self.result is not None:
 3782: #             self.result.get()
 3783: #
 3784: #     def parse(self, block_index, chunk_index):
 3785: #         before = time.time()
 3786: #         # set initial state
 3787: #         self.context.state = VCFState.CHROM
 3788: #         self.context.chunk_variant_index = block_index * self.block_length - 1
 3789: #         self.context.variant_index = (chunk_index * self.chunk_length +
 3790: #                                       self.context.chunk_variant_index)
 3791: #         # parse the block of data stored in the buffer
 3792: #         self.parser.parse(self.buffer, self.context)
 3793: #         after = time.time()
 3794: #
 3795: #
 3796: # cdef class VCFParallelChunkIterator:
 3797: #
 3798: #     cdef:
 3799: #         FileInputStream stream
 3800: #         VCFParser parser
 3801: #         object pool
 3802: #         Py_ssize_t chunk_length
 3803: #         Py_ssize_t block_length
 3804: #         int n_threads
 3805: #         int n_workers
 3806: #         Py_ssize_t chunk_index
 3807: #         list workers
 3808: #
 3809: #     def __cinit__(self,
 3810: #                   FileInputStream stream,
 3811: #                   Py_ssize_t chunk_length, Py_ssize_t block_length, int n_threads,
 3812: #                   headers, fields, types, numbers, fills, region, loc_samples):
 3813: #
 3814: #         fields = sorted(fields)
 3815: #         self.stream = stream
 3816: #         self.chunk_length = chunk_length
 3817: #         self.n_threads = n_threads
 3818: #         self.pool = ThreadPool(n_threads)
 3819: #         # allow one more worker than number of threads in pool to allow for sync
 3820: #         # reading of data in the main thread
 3821: #         self.n_workers = n_threads + 1
 3822: #         # only makes sense to have block length at most fraction chunk length if we want
 3823: #         # some parallelism
 3824: #         self.block_length = min(block_length, chunk_length//self.n_workers)
 3825: #         if self.block_length < 1:
 3826: #             self.block_length = 1
 3827: #         loc_samples = check_samples(loc_samples, headers)
 3828: #         self.parser = VCFParser(
 3829: #             fields=fields, types=types, numbers=numbers, chunk_length=chunk_length, loc_samples=loc_samples, fills=fills,
 3830: #             region=region
 3831: #         )
 3832: #         self.chunk_index = -1
 3833: #         self.workers = [VCFParallelParser(stream=stream, parser=self.parser, chunk_length=self.chunk_length,
 3834: #                                           block_length=self.block_length, pool=self.pool, headers=headers,
 3835: #                                           fields=fields)
 3836: #                         for _ in range(self.n_workers)]
 3837: #
 3838: #     def __iter__(self):
 3839: #         return self
 3840: #
 3841: #     def __next__(self):
 3842: #         cdef:
 3843: #             Py_ssize_t block_index = 0
 3844: #             Py_ssize_t i = 0
 3845: #             Py_ssize_t n_lines
 3846: #             Py_ssize_t n_lines_read = 0
 3847: #             VCFParallelParser worker
 3848: #
 3849: #         # increment the current chunk index
 3850: #         self.chunk_index += 1
 3851: #
 3852: #         # allocate arrays for next chunk
 3853: #         self.parser.malloc_chunk()
 3854: #
 3855: #         # cycle around the workers
 3856: #         for i in itertools.cycle(list(range(self.n_workers))):
 3857: #             worker = self.workers[i]
 3858: #
 3859: #             # wait for the result to finish - this ensures we don't overwrite a
 3860: #             # worker's buffer while it's still parsing
 3861: #             worker.join()
 3862: #
 3863: #             # read lines into the worker's buffer - this part has to be synchronous
 3864: #             n_lines = min(self.block_length, self.chunk_length - n_lines_read)
 3865: #             n_lines_read += worker.read(n_lines)
 3866: #
 3867: #             # launch parsing of the block in parallel
 3868: #             worker.parse_async(block_index, self.chunk_index)
 3869: #
 3870: #             # increment the current block index
 3871: #             block_index += 1
 3872: #
 3873: #             # is the chunk done?
 3874: #             if n_lines_read >= self.chunk_length:
 3875: #                 break
 3876: #
 3877: #             # is the input stream exhausted?
 3878: #             if self.stream.c == 0:
 3879: #                 break
 3880: #
 3881: #         # wait for all parallel tasks to complete
 3882: #         for worker in self.workers:
 3883: #             worker.join()
 3884: #
 3885: #         # obtain the final chunk length via the last worker
 3886: #         worker = self.workers[i]
 3887: #         chunk_length = worker.context.chunk_variant_index + 1
 3888: #
 3889: #         # obtain the chunk
 3890: #         chunk = self.parser.make_chunk(chunk_length)
 3891: #
 3892: #         if chunk is None:
 3893: #             # clean up thread pool
 3894: #             self.pool.close()
 3895: #             self.pool.join()
 3896: #             self.pool.terminate()
 3897: #             raise StopIteration
 3898: #
 3899: #         else:
 3900: #             chrom = CharVector_to_pybytes(&worker.context.chrom)
 3901: #             pos = worker.context.pos
 3902: #             return chunk, chunk_length, chrom, pos
 3903: 
 3904: 
 3905: ###################################################################
 3906: # ANN transformer
 3907: 
 3908: 
 3909: # ANN field indices
+3910: cdef enum ANNFidx:
enum __pyx_t_5allel_3opt_11io_vcf_read_ANNFidx {
  __pyx_e_5allel_3opt_11io_vcf_read_ALLELE = 0,
  __pyx_e_5allel_3opt_11io_vcf_read_ANNOTATION = 1,
  __pyx_e_5allel_3opt_11io_vcf_read_ANNOTATION_IMPACT = 2,
  __pyx_e_5allel_3opt_11io_vcf_read_GENE_NAME = 3,
  __pyx_e_5allel_3opt_11io_vcf_read_GENE_ID = 4,
  __pyx_e_5allel_3opt_11io_vcf_read_FEATURE_TYPE = 5,
  __pyx_e_5allel_3opt_11io_vcf_read_FEATURE_ID = 6,
  __pyx_e_5allel_3opt_11io_vcf_read_TRANSCRIPT_BIOTYPE = 7,
  __pyx_e_5allel_3opt_11io_vcf_read_RANK = 8,
  __pyx_e_5allel_3opt_11io_vcf_read_HGVS_C = 9,
  __pyx_e_5allel_3opt_11io_vcf_read_HGVS_P = 10,
  __pyx_e_5allel_3opt_11io_vcf_read_CDNA = 11,
  __pyx_e_5allel_3opt_11io_vcf_read_CDS = 12,
  __pyx_e_5allel_3opt_11io_vcf_read_AA = 13,
  __pyx_e_5allel_3opt_11io_vcf_read_DISTANCE = 14
};
 3911:     ALLELE = 0,
 3912:     ANNOTATION = 1,
 3913:     ANNOTATION_IMPACT = 2,
 3914:     GENE_NAME = 3,
 3915:     GENE_ID = 4,
 3916:     FEATURE_TYPE = 5,
 3917:     FEATURE_ID = 6,
 3918:     TRANSCRIPT_BIOTYPE = 7,
 3919:     RANK = 8,
 3920:     HGVS_C = 9,
 3921:     HGVS_P = 10,
 3922:     CDNA = 11,
 3923:     CDS = 12,
 3924:     AA = 13,
 3925:     DISTANCE = 14
 3926: 
 3927: 
+3928: ANN_FIELD = 'variants/ANN'
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ANN_FIELD, __pyx_kp_s_variants_ANN_2) < 0) __PYX_ERR(0, 3928, __pyx_L1_error)
+3929: ANN_ALLELE_FIELD = 'variants/ANN_Allele'
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ANN_ALLELE_FIELD, __pyx_kp_s_variants_ANN_Allele) < 0) __PYX_ERR(0, 3929, __pyx_L1_error)
+3930: ANN_ANNOTATION_FIELD = 'variants/ANN_Annotation'
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ANN_ANNOTATION_FIELD, __pyx_kp_s_variants_ANN_Annotation) < 0) __PYX_ERR(0, 3930, __pyx_L1_error)
+3931: ANN_ANNOTATION_IMPACT_FIELD = 'variants/ANN_Annotation_Impact'
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ANN_ANNOTATION_IMPACT_FIELD, __pyx_kp_s_variants_ANN_Annotation_Impact) < 0) __PYX_ERR(0, 3931, __pyx_L1_error)
+3932: ANN_GENE_NAME_FIELD = 'variants/ANN_Gene_Name'
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ANN_GENE_NAME_FIELD, __pyx_kp_s_variants_ANN_Gene_Name) < 0) __PYX_ERR(0, 3932, __pyx_L1_error)
+3933: ANN_GENE_ID_FIELD = 'variants/ANN_Gene_ID'
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ANN_GENE_ID_FIELD, __pyx_kp_s_variants_ANN_Gene_ID) < 0) __PYX_ERR(0, 3933, __pyx_L1_error)
+3934: ANN_FEATURE_TYPE_FIELD = 'variants/ANN_Feature_Type'
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ANN_FEATURE_TYPE_FIELD, __pyx_kp_s_variants_ANN_Feature_Type) < 0) __PYX_ERR(0, 3934, __pyx_L1_error)
+3935: ANN_FEATURE_ID_FIELD = 'variants/ANN_Feature_ID'
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ANN_FEATURE_ID_FIELD, __pyx_kp_s_variants_ANN_Feature_ID) < 0) __PYX_ERR(0, 3935, __pyx_L1_error)
+3936: ANN_TRANSCRIPT_BIOTYPE_FIELD = 'variants/ANN_Transcript_BioType'
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ANN_TRANSCRIPT_BIOTYPE_FIELD, __pyx_kp_s_variants_ANN_Transcript_BioType) < 0) __PYX_ERR(0, 3936, __pyx_L1_error)
+3937: ANN_RANK_FIELD = 'variants/ANN_Rank'
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ANN_RANK_FIELD, __pyx_kp_s_variants_ANN_Rank) < 0) __PYX_ERR(0, 3937, __pyx_L1_error)
+3938: ANN_HGVS_C_FIELD = 'variants/ANN_HGVS_c'
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ANN_HGVS_C_FIELD, __pyx_kp_s_variants_ANN_HGVS_c) < 0) __PYX_ERR(0, 3938, __pyx_L1_error)
+3939: ANN_HGVS_P_FIELD = 'variants/ANN_HGVS_p'
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ANN_HGVS_P_FIELD, __pyx_kp_s_variants_ANN_HGVS_p) < 0) __PYX_ERR(0, 3939, __pyx_L1_error)
+3940: ANN_CDNA_FIELD = 'variants/ANN_cDNA'
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ANN_CDNA_FIELD, __pyx_kp_s_variants_ANN_cDNA) < 0) __PYX_ERR(0, 3940, __pyx_L1_error)
+3941: ANN_CDNA_POS_FIELD = 'variants/ANN_cDNA_pos'
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ANN_CDNA_POS_FIELD, __pyx_kp_s_variants_ANN_cDNA_pos) < 0) __PYX_ERR(0, 3941, __pyx_L1_error)
+3942: ANN_CDNA_LENGTH_FIELD = 'variants/ANN_cDNA_length'
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ANN_CDNA_LENGTH_FIELD, __pyx_kp_s_variants_ANN_cDNA_length) < 0) __PYX_ERR(0, 3942, __pyx_L1_error)
+3943: ANN_CDS_FIELD = 'variants/ANN_CDS'
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ANN_CDS_FIELD, __pyx_kp_s_variants_ANN_CDS) < 0) __PYX_ERR(0, 3943, __pyx_L1_error)
+3944: ANN_CDS_POS_FIELD = 'variants/ANN_CDS_pos'
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ANN_CDS_POS_FIELD, __pyx_kp_s_variants_ANN_CDS_pos) < 0) __PYX_ERR(0, 3944, __pyx_L1_error)
+3945: ANN_CDS_LENGTH_FIELD = 'variants/ANN_CDS_length'
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ANN_CDS_LENGTH_FIELD, __pyx_kp_s_variants_ANN_CDS_length) < 0) __PYX_ERR(0, 3945, __pyx_L1_error)
+3946: ANN_AA_FIELD = 'variants/ANN_AA'
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ANN_AA_FIELD, __pyx_kp_s_variants_ANN_AA) < 0) __PYX_ERR(0, 3946, __pyx_L1_error)
+3947: ANN_AA_POS_FIELD = 'variants/ANN_AA_pos'
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ANN_AA_POS_FIELD, __pyx_kp_s_variants_ANN_AA_pos) < 0) __PYX_ERR(0, 3947, __pyx_L1_error)
+3948: ANN_AA_LENGTH_FIELD = 'variants/ANN_AA_length'
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ANN_AA_LENGTH_FIELD, __pyx_kp_s_variants_ANN_AA_length) < 0) __PYX_ERR(0, 3948, __pyx_L1_error)
+3949: ANN_DISTANCE_FIELD = 'variants/ANN_Distance'
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ANN_DISTANCE_FIELD, __pyx_kp_s_variants_ANN_Distance) < 0) __PYX_ERR(0, 3949, __pyx_L1_error)
 3950: 
 3951: 
 3952: ANN_FIELDS = (
+3953:     ANN_ALLELE_FIELD,
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_ALLELE_FIELD); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3953, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
/* … */
  __pyx_t_20 = PyTuple_New(18); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 3953, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_20);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_20, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_20, 1, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_20, 2, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_20, 3, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_20, 4, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_20, 5, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_8);
  PyTuple_SET_ITEM(__pyx_t_20, 6, __pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_9);
  PyTuple_SET_ITEM(__pyx_t_20, 7, __pyx_t_9);
  __Pyx_GIVEREF(__pyx_t_10);
  PyTuple_SET_ITEM(__pyx_t_20, 8, __pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_11);
  PyTuple_SET_ITEM(__pyx_t_20, 9, __pyx_t_11);
  __Pyx_GIVEREF(__pyx_t_12);
  PyTuple_SET_ITEM(__pyx_t_20, 10, __pyx_t_12);
  __Pyx_GIVEREF(__pyx_t_13);
  PyTuple_SET_ITEM(__pyx_t_20, 11, __pyx_t_13);
  __Pyx_GIVEREF(__pyx_t_14);
  PyTuple_SET_ITEM(__pyx_t_20, 12, __pyx_t_14);
  __Pyx_GIVEREF(__pyx_t_15);
  PyTuple_SET_ITEM(__pyx_t_20, 13, __pyx_t_15);
  __Pyx_GIVEREF(__pyx_t_16);
  PyTuple_SET_ITEM(__pyx_t_20, 14, __pyx_t_16);
  __Pyx_GIVEREF(__pyx_t_17);
  PyTuple_SET_ITEM(__pyx_t_20, 15, __pyx_t_17);
  __Pyx_GIVEREF(__pyx_t_18);
  PyTuple_SET_ITEM(__pyx_t_20, 16, __pyx_t_18);
  __Pyx_GIVEREF(__pyx_t_19);
  PyTuple_SET_ITEM(__pyx_t_20, 17, __pyx_t_19);
  __pyx_t_1 = 0;
  __pyx_t_6 = 0;
  __pyx_t_2 = 0;
  __pyx_t_5 = 0;
  __pyx_t_4 = 0;
  __pyx_t_7 = 0;
  __pyx_t_8 = 0;
  __pyx_t_9 = 0;
  __pyx_t_10 = 0;
  __pyx_t_11 = 0;
  __pyx_t_12 = 0;
  __pyx_t_13 = 0;
  __pyx_t_14 = 0;
  __pyx_t_15 = 0;
  __pyx_t_16 = 0;
  __pyx_t_17 = 0;
  __pyx_t_18 = 0;
  __pyx_t_19 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ANN_FIELDS, __pyx_t_20) < 0) __PYX_ERR(0, 3952, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
+3954:     ANN_ANNOTATION_FIELD,
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_ANNOTATION_FIELD); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3954, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
+3955:     ANN_ANNOTATION_IMPACT_FIELD,
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_ANNOTATION_IMPACT_FIELD); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3955, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
+3956:     ANN_GENE_NAME_FIELD,
  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_GENE_NAME_FIELD); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3956, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
+3957:     ANN_GENE_ID_FIELD,
  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_GENE_ID_FIELD); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3957, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
+3958:     ANN_FEATURE_TYPE_FIELD,
  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_FEATURE_TYPE_FIELD); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3958, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
+3959:     ANN_FEATURE_ID_FIELD,
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_FEATURE_ID_FIELD); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3959, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
+3960:     ANN_TRANSCRIPT_BIOTYPE_FIELD,
  __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_TRANSCRIPT_BIOTYPE_FIELD); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3960, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
+3961:     ANN_RANK_FIELD,
  __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_RANK_FIELD); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3961, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
+3962:     ANN_HGVS_C_FIELD,
  __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_HGVS_C_FIELD); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3962, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
+3963:     ANN_HGVS_P_FIELD,
  __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_HGVS_P_FIELD); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3963, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
+3964:     ANN_CDNA_POS_FIELD,
  __pyx_t_13 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_CDNA_POS_FIELD); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 3964, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
+3965:     ANN_CDNA_LENGTH_FIELD,
  __pyx_t_14 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_CDNA_LENGTH_FIELD); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3965, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
+3966:     ANN_CDS_POS_FIELD,
  __pyx_t_15 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_CDS_POS_FIELD); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3966, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
+3967:     ANN_CDS_LENGTH_FIELD,
  __pyx_t_16 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_CDS_LENGTH_FIELD); if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 3967, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_16);
+3968:     ANN_AA_POS_FIELD,
  __pyx_t_17 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_AA_POS_FIELD); if (unlikely(!__pyx_t_17)) __PYX_ERR(0, 3968, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_17);
+3969:     ANN_AA_LENGTH_FIELD,
  __pyx_t_18 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_AA_LENGTH_FIELD); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 3969, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
+3970:     ANN_DISTANCE_FIELD
  __pyx_t_19 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_DISTANCE_FIELD); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 3970, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_19);
 3971: )
 3972: 
 3973: 
+3974: def _normalize_ann_field_prefix(f):
/* Python wrapper */
static PyObject *__pyx_pw_5allel_3opt_11io_vcf_read_5_normalize_ann_field_prefix(PyObject *__pyx_self, PyObject *__pyx_v_f); /*proto*/
static PyMethodDef __pyx_mdef_5allel_3opt_11io_vcf_read_5_normalize_ann_field_prefix = {"_normalize_ann_field_prefix", (PyCFunction)__pyx_pw_5allel_3opt_11io_vcf_read_5_normalize_ann_field_prefix, METH_O, 0};
static PyObject *__pyx_pw_5allel_3opt_11io_vcf_read_5_normalize_ann_field_prefix(PyObject *__pyx_self, PyObject *__pyx_v_f) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_normalize_ann_field_prefix (wrapper)", 0);
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_4_normalize_ann_field_prefix(__pyx_self, ((PyObject *)__pyx_v_f));

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

static PyObject *__pyx_pf_5allel_3opt_11io_vcf_read_4_normalize_ann_field_prefix(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_f) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_normalize_ann_field_prefix", 0);
  __Pyx_INCREF(__pyx_v_f);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("allel.opt.io_vcf_read._normalize_ann_field_prefix", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_f);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__153 = PyTuple_Pack(1, __pyx_n_s_f); if (unlikely(!__pyx_tuple__153)) __PYX_ERR(0, 3974, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__153);
  __Pyx_GIVEREF(__pyx_tuple__153);
/* … */
  __pyx_t_20 = PyCFunction_NewEx(&__pyx_mdef_5allel_3opt_11io_vcf_read_5_normalize_ann_field_prefix, NULL, __pyx_n_s_allel_opt_io_vcf_read); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 3974, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_20);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_normalize_ann_field_prefix, __pyx_t_20) < 0) __PYX_ERR(0, 3974, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
  __pyx_codeobj__154 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__153, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_allel_opt_io_vcf_read_pyx, __pyx_n_s_normalize_ann_field_prefix, 3974, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__154)) __PYX_ERR(0, 3974, __pyx_L1_error)
 3975:     # normalize prefix
+3976:     if f.startswith('variants/ANN_'):
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_startswith); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3976, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__107, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3976, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 3976, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_3) {
    goto __pyx_L3;
  }
/* … */
  __pyx_tuple__107 = PyTuple_Pack(1, __pyx_kp_s_variants_ANN); if (unlikely(!__pyx_tuple__107)) __PYX_ERR(0, 3976, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__107);
  __Pyx_GIVEREF(__pyx_tuple__107);
 3977:         pass
+3978:     elif f.startswith('ANN_'):
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_startswith); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3978, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__108, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3978, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 3978, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_3) {
/* … */
    goto __pyx_L3;
  }
/* … */
  __pyx_tuple__108 = PyTuple_Pack(1, __pyx_n_s_ANN); if (unlikely(!__pyx_tuple__108)) __PYX_ERR(0, 3978, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__108);
  __Pyx_GIVEREF(__pyx_tuple__108);
+3979:         f = 'variants/' + f
    __pyx_t_1 = PyNumber_Add(__pyx_kp_s_variants_2, __pyx_v_f); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3979, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_f, __pyx_t_1);
    __pyx_t_1 = 0;
 3980:     else:
+3981:         f = 'variants/ANN_' + f
  /*else*/ {
    __pyx_t_1 = PyNumber_Add(__pyx_kp_s_variants_ANN, __pyx_v_f); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3981, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_f, __pyx_t_1);
    __pyx_t_1 = 0;
  }
  __pyx_L3:;
+3982:     return f
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_f);
  __pyx_r = __pyx_v_f;
  goto __pyx_L0;
 3983: 
 3984: 
+3985: def _normalize_ann_fields(fields):
/* Python wrapper */
static PyObject *__pyx_pw_5allel_3opt_11io_vcf_read_7_normalize_ann_fields(PyObject *__pyx_self, PyObject *__pyx_v_fields); /*proto*/
static PyMethodDef __pyx_mdef_5allel_3opt_11io_vcf_read_7_normalize_ann_fields = {"_normalize_ann_fields", (PyCFunction)__pyx_pw_5allel_3opt_11io_vcf_read_7_normalize_ann_fields, METH_O, 0};
static PyObject *__pyx_pw_5allel_3opt_11io_vcf_read_7_normalize_ann_fields(PyObject *__pyx_self, PyObject *__pyx_v_fields) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_normalize_ann_fields (wrapper)", 0);
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_6_normalize_ann_fields(__pyx_self, ((PyObject *)__pyx_v_fields));

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

static PyObject *__pyx_pf_5allel_3opt_11io_vcf_read_6_normalize_ann_fields(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_fields) {
  PyObject *__pyx_v_normed_fields = NULL;
  PyObject *__pyx_v_f = NULL;
  PyObject *__pyx_v_ff = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_normalize_ann_fields", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_AddTraceback("allel.opt.io_vcf_read._normalize_ann_fields", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_normed_fields);
  __Pyx_XDECREF(__pyx_v_f);
  __Pyx_XDECREF(__pyx_v_ff);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__155 = PyTuple_Pack(4, __pyx_n_s_fields, __pyx_n_s_normed_fields, __pyx_n_s_f, __pyx_n_s_ff); if (unlikely(!__pyx_tuple__155)) __PYX_ERR(0, 3985, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__155);
  __Pyx_GIVEREF(__pyx_tuple__155);
/* … */
  __pyx_t_20 = PyCFunction_NewEx(&__pyx_mdef_5allel_3opt_11io_vcf_read_7_normalize_ann_fields, NULL, __pyx_n_s_allel_opt_io_vcf_read); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 3985, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_20);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_normalize_ann_fields, __pyx_t_20) < 0) __PYX_ERR(0, 3985, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
  __pyx_codeobj__156 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__155, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_allel_opt_io_vcf_read_pyx, __pyx_n_s_normalize_ann_fields, 3985, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__156)) __PYX_ERR(0, 3985, __pyx_L1_error)
+3986:     normed_fields = list()
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3986, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_normed_fields = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
 3987: 
+3988:     if fields is None:
  __pyx_t_2 = (__pyx_v_fields == Py_None);
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (__pyx_t_3) {
/* … */
  }
+3989:         return list(ANN_FIELDS)
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_FIELDS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3989, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = PySequence_List(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3989, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;
 3990: 
 3991:     else:
+3992:         for f in fields:
  /*else*/ {
    if (likely(PyList_CheckExact(__pyx_v_fields)) || PyTuple_CheckExact(__pyx_v_fields)) {
      __pyx_t_4 = __pyx_v_fields; __Pyx_INCREF(__pyx_t_4); __pyx_t_5 = 0;
      __pyx_t_6 = NULL;
    } else {
      __pyx_t_5 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_fields); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3992, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_6 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3992, __pyx_L1_error)
    }
    for (;;) {
      if (likely(!__pyx_t_6)) {
        if (likely(PyList_CheckExact(__pyx_t_4))) {
          if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_4)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_1 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 3992, __pyx_L1_error)
          #else
          __pyx_t_1 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3992, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          #endif
        } else {
          if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 3992, __pyx_L1_error)
          #else
          __pyx_t_1 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3992, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          #endif
        }
      } else {
        __pyx_t_1 = __pyx_t_6(__pyx_t_4);
        if (unlikely(!__pyx_t_1)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else __PYX_ERR(0, 3992, __pyx_L1_error)
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_XDECREF_SET(__pyx_v_f, __pyx_t_1);
      __pyx_t_1 = 0;
/* … */
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
+3993:             f = _normalize_ann_field_prefix(f)
      __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_normalize_ann_field_prefix); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3993, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_8 = NULL;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
        __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
        if (likely(__pyx_t_8)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
          __Pyx_INCREF(__pyx_t_8);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_7, function);
        }
      }
      if (!__pyx_t_8) {
        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_f); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3993, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      } else {
        #if CYTHON_FAST_PYCALL
        if (PyFunction_Check(__pyx_t_7)) {
          PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_v_f};
          __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3993, __pyx_L1_error)
          __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_GOTREF(__pyx_t_1);
        } else
        #endif
        #if CYTHON_FAST_PYCCALL
        if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) {
          PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_v_f};
          __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3993, __pyx_L1_error)
          __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_GOTREF(__pyx_t_1);
        } else
        #endif
        {
          __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3993, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_9);
          __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
          __Pyx_INCREF(__pyx_v_f);
          __Pyx_GIVEREF(__pyx_v_f);
          PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_v_f);
          __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3993, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        }
      }
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF_SET(__pyx_v_f, __pyx_t_1);
      __pyx_t_1 = 0;
 3994:             # convenience features
+3995:             if f == ANN_CDNA_FIELD:
      __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_CDNA_FIELD); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3995, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_7 = PyObject_RichCompare(__pyx_v_f, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3995, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 3995, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (__pyx_t_3) {
/* … */
        goto __pyx_L6;
      }
+3996:                 for ff in ANN_CDNA_POS_FIELD, ANN_CDNA_LENGTH_FIELD:
        __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_CDNA_POS_FIELD); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3996, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_CDNA_LENGTH_FIELD); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3996, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3996, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_GIVEREF(__pyx_t_7);
        PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_1);
        PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_1);
        __pyx_t_7 = 0;
        __pyx_t_1 = 0;
        __pyx_t_1 = __pyx_t_9; __Pyx_INCREF(__pyx_t_1); __pyx_t_10 = 0;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        for (;;) {
          if (__pyx_t_10 >= 2) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_9 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_10); __Pyx_INCREF(__pyx_t_9); __pyx_t_10++; if (unlikely(0 < 0)) __PYX_ERR(0, 3996, __pyx_L1_error)
          #else
          __pyx_t_9 = PySequence_ITEM(__pyx_t_1, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3996, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_9);
          #endif
          __Pyx_XDECREF_SET(__pyx_v_ff, __pyx_t_9);
          __pyx_t_9 = 0;
/* … */
        }
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3997:                     if ff not in normed_fields:
          __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_v_ff, __pyx_v_normed_fields, Py_NE)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 3997, __pyx_L1_error)
          __pyx_t_2 = (__pyx_t_3 != 0);
          if (__pyx_t_2) {
/* … */
          }
+3998:                         normed_fields.append(ff)
            __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_normed_fields, __pyx_v_ff); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(0, 3998, __pyx_L1_error)
+3999:             elif f == ANN_CDS_FIELD:
      __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_CDS_FIELD); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3999, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_9 = PyObject_RichCompare(__pyx_v_f, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3999, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3999, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (__pyx_t_2) {
/* … */
        goto __pyx_L6;
      }
+4000:                 for ff in ANN_CDS_POS_FIELD, ANN_CDS_LENGTH_FIELD:
        __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_CDS_POS_FIELD); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 4000, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_CDS_LENGTH_FIELD); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4000, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4000, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_9);
        PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_9);
        __Pyx_GIVEREF(__pyx_t_1);
        PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_1);
        __pyx_t_9 = 0;
        __pyx_t_1 = 0;
        __pyx_t_1 = __pyx_t_7; __Pyx_INCREF(__pyx_t_1); __pyx_t_10 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        for (;;) {
          if (__pyx_t_10 >= 2) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_10); __Pyx_INCREF(__pyx_t_7); __pyx_t_10++; if (unlikely(0 < 0)) __PYX_ERR(0, 4000, __pyx_L1_error)
          #else
          __pyx_t_7 = PySequence_ITEM(__pyx_t_1, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4000, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          #endif
          __Pyx_XDECREF_SET(__pyx_v_ff, __pyx_t_7);
          __pyx_t_7 = 0;
/* … */
        }
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+4001:                     if ff not in normed_fields:
          __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_v_ff, __pyx_v_normed_fields, Py_NE)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 4001, __pyx_L1_error)
          __pyx_t_3 = (__pyx_t_2 != 0);
          if (__pyx_t_3) {
/* … */
          }
+4002:                         normed_fields.append(ff)
            __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_normed_fields, __pyx_v_ff); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(0, 4002, __pyx_L1_error)
+4003:             elif f == ANN_AA_FIELD:
      __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_AA_FIELD); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4003, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_7 = PyObject_RichCompare(__pyx_v_f, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4003, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 4003, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (__pyx_t_3) {
/* … */
        goto __pyx_L6;
      }
+4004:                 for ff in ANN_AA_POS_FIELD, ANN_AA_LENGTH_FIELD:
        __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_AA_POS_FIELD); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4004, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_AA_LENGTH_FIELD); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4004, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 4004, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_GIVEREF(__pyx_t_7);
        PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_1);
        PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_1);
        __pyx_t_7 = 0;
        __pyx_t_1 = 0;
        __pyx_t_1 = __pyx_t_9; __Pyx_INCREF(__pyx_t_1); __pyx_t_10 = 0;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        for (;;) {
          if (__pyx_t_10 >= 2) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_9 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_10); __Pyx_INCREF(__pyx_t_9); __pyx_t_10++; if (unlikely(0 < 0)) __PYX_ERR(0, 4004, __pyx_L1_error)
          #else
          __pyx_t_9 = PySequence_ITEM(__pyx_t_1, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 4004, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_9);
          #endif
          __Pyx_XDECREF_SET(__pyx_v_ff, __pyx_t_9);
          __pyx_t_9 = 0;
/* … */
        }
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+4005:                     if ff not in normed_fields:
          __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_v_ff, __pyx_v_normed_fields, Py_NE)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 4005, __pyx_L1_error)
          __pyx_t_2 = (__pyx_t_3 != 0);
          if (__pyx_t_2) {
/* … */
          }
+4006:                         normed_fields.append(ff)
            __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_normed_fields, __pyx_v_ff); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(0, 4006, __pyx_L1_error)
 4007:             # all other fields
+4008:             elif f is not None and f not in normed_fields:
      __pyx_t_3 = (__pyx_v_f != Py_None);
      __pyx_t_12 = (__pyx_t_3 != 0);
      if (__pyx_t_12) {
      } else {
        __pyx_t_2 = __pyx_t_12;
        goto __pyx_L16_bool_binop_done;
      }
      __pyx_t_12 = (__Pyx_PySequence_ContainsTF(__pyx_v_f, __pyx_v_normed_fields, Py_NE)); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(0, 4008, __pyx_L1_error)
      __pyx_t_3 = (__pyx_t_12 != 0);
      __pyx_t_2 = __pyx_t_3;
      __pyx_L16_bool_binop_done:;
      if (__pyx_t_2) {
/* … */
      }
      __pyx_L6:;
+4009:                 if f not in ANN_FIELDS:
        __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_FIELDS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4009, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_v_f, __pyx_t_1, Py_NE)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 4009, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_3 = (__pyx_t_2 != 0);
        if (__pyx_t_3) {
/* … */
          goto __pyx_L18;
        }
+4010:                     warnings.warn('invalid ANN field %r, will be ignored' % f)
          __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_warnings); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 4010, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_9);
          __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_warn); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4010, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          __pyx_t_9 = __Pyx_PyString_Format(__pyx_kp_s_invalid_ANN_field_r_will_be_igno, __pyx_v_f); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 4010, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_9);
          __pyx_t_8 = NULL;
          if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
            __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
            if (likely(__pyx_t_8)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
              __Pyx_INCREF(__pyx_t_8);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_7, function);
            }
          }
          if (!__pyx_t_8) {
            __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4010, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
            __Pyx_GOTREF(__pyx_t_1);
          } else {
            #if CYTHON_FAST_PYCALL
            if (PyFunction_Check(__pyx_t_7)) {
              PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_9};
              __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4010, __pyx_L1_error)
              __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
              __Pyx_GOTREF(__pyx_t_1);
              __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
            } else
            #endif
            #if CYTHON_FAST_PYCCALL
            if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) {
              PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_9};
              __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4010, __pyx_L1_error)
              __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
              __Pyx_GOTREF(__pyx_t_1);
              __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
            } else
            #endif
            {
              __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 4010, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_13);
              __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_8); __pyx_t_8 = NULL;
              __Pyx_GIVEREF(__pyx_t_9);
              PyTuple_SET_ITEM(__pyx_t_13, 0+1, __pyx_t_9);
              __pyx_t_9 = 0;
              __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_13, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4010, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
            }
          }
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 4011:                 else:
+4012:                     normed_fields.append(f)
        /*else*/ {
          __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_normed_fields, __pyx_v_f); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(0, 4012, __pyx_L1_error)
        }
        __pyx_L18:;
 4013: 
+4014:     return normed_fields
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_normed_fields);
  __pyx_r = __pyx_v_normed_fields;
  goto __pyx_L0;
 4015: 
 4016: 
+4017: default_ann_types = dict()
  __pyx_t_20 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 4017, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_20);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_default_ann_types, __pyx_t_20) < 0) __PYX_ERR(0, 4017, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
+4018: default_ann_types[ANN_ALLELE_FIELD] = np.dtype('object')
  __pyx_t_20 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__157, NULL); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 4018, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_20);
  __pyx_t_19 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_ann_types); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 4018, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_19);
  __pyx_t_18 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_ALLELE_FIELD); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 4018, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
  if (unlikely(PyObject_SetItem(__pyx_t_19, __pyx_t_18, __pyx_t_20) < 0)) __PYX_ERR(0, 4018, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
  __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
/* … */
  __pyx_tuple__157 = PyTuple_Pack(1, __pyx_n_s_object); if (unlikely(!__pyx_tuple__157)) __PYX_ERR(0, 4018, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__157);
  __Pyx_GIVEREF(__pyx_tuple__157);
+4019: default_ann_types[ANN_ANNOTATION_FIELD] = np.dtype('object')
  __pyx_t_20 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__158, NULL); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 4019, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_20);
  __pyx_t_18 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_ann_types); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 4019, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
  __pyx_t_19 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_ANNOTATION_FIELD); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 4019, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_19);
  if (unlikely(PyObject_SetItem(__pyx_t_18, __pyx_t_19, __pyx_t_20) < 0)) __PYX_ERR(0, 4019, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
  __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
  __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
/* … */
  __pyx_tuple__158 = PyTuple_Pack(1, __pyx_n_s_object); if (unlikely(!__pyx_tuple__158)) __PYX_ERR(0, 4019, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__158);
  __Pyx_GIVEREF(__pyx_tuple__158);
+4020: default_ann_types[ANN_ANNOTATION_IMPACT_FIELD] = np.dtype('object')
  __pyx_t_20 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__159, NULL); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 4020, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_20);
  __pyx_t_19 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_ann_types); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 4020, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_19);
  __pyx_t_18 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_ANNOTATION_IMPACT_FIELD); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 4020, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
  if (unlikely(PyObject_SetItem(__pyx_t_19, __pyx_t_18, __pyx_t_20) < 0)) __PYX_ERR(0, 4020, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
  __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
/* … */
  __pyx_tuple__159 = PyTuple_Pack(1, __pyx_n_s_object); if (unlikely(!__pyx_tuple__159)) __PYX_ERR(0, 4020, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__159);
  __Pyx_GIVEREF(__pyx_tuple__159);
+4021: default_ann_types[ANN_GENE_NAME_FIELD] = np.dtype('object')
  __pyx_t_20 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__160, NULL); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 4021, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_20);
  __pyx_t_18 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_ann_types); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 4021, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
  __pyx_t_19 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_GENE_NAME_FIELD); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 4021, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_19);
  if (unlikely(PyObject_SetItem(__pyx_t_18, __pyx_t_19, __pyx_t_20) < 0)) __PYX_ERR(0, 4021, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
  __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
  __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
/* … */
  __pyx_tuple__160 = PyTuple_Pack(1, __pyx_n_s_object); if (unlikely(!__pyx_tuple__160)) __PYX_ERR(0, 4021, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__160);
  __Pyx_GIVEREF(__pyx_tuple__160);
+4022: default_ann_types[ANN_GENE_ID_FIELD] = np.dtype('object')
  __pyx_t_20 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__161, NULL); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 4022, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_20);
  __pyx_t_19 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_ann_types); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 4022, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_19);
  __pyx_t_18 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_GENE_ID_FIELD); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 4022, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
  if (unlikely(PyObject_SetItem(__pyx_t_19, __pyx_t_18, __pyx_t_20) < 0)) __PYX_ERR(0, 4022, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
  __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
/* … */
  __pyx_tuple__161 = PyTuple_Pack(1, __pyx_n_s_object); if (unlikely(!__pyx_tuple__161)) __PYX_ERR(0, 4022, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__161);
  __Pyx_GIVEREF(__pyx_tuple__161);
+4023: default_ann_types[ANN_FEATURE_TYPE_FIELD] = np.dtype('object')
  __pyx_t_20 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__162, NULL); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 4023, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_20);
  __pyx_t_18 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_ann_types); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 4023, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
  __pyx_t_19 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_FEATURE_TYPE_FIELD); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 4023, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_19);
  if (unlikely(PyObject_SetItem(__pyx_t_18, __pyx_t_19, __pyx_t_20) < 0)) __PYX_ERR(0, 4023, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
  __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
  __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
/* … */
  __pyx_tuple__162 = PyTuple_Pack(1, __pyx_n_s_object); if (unlikely(!__pyx_tuple__162)) __PYX_ERR(0, 4023, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__162);
  __Pyx_GIVEREF(__pyx_tuple__162);
+4024: default_ann_types[ANN_FEATURE_ID_FIELD] = np.dtype('object')
  __pyx_t_20 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__163, NULL); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 4024, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_20);
  __pyx_t_19 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_ann_types); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 4024, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_19);
  __pyx_t_18 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_FEATURE_ID_FIELD); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 4024, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
  if (unlikely(PyObject_SetItem(__pyx_t_19, __pyx_t_18, __pyx_t_20) < 0)) __PYX_ERR(0, 4024, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
  __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
/* … */
  __pyx_tuple__163 = PyTuple_Pack(1, __pyx_n_s_object); if (unlikely(!__pyx_tuple__163)) __PYX_ERR(0, 4024, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__163);
  __Pyx_GIVEREF(__pyx_tuple__163);
+4025: default_ann_types[ANN_TRANSCRIPT_BIOTYPE_FIELD] = np.dtype('object')
  __pyx_t_20 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__164, NULL); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 4025, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_20);
  __pyx_t_18 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_ann_types); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 4025, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
  __pyx_t_19 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_TRANSCRIPT_BIOTYPE_FIELD); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 4025, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_19);
  if (unlikely(PyObject_SetItem(__pyx_t_18, __pyx_t_19, __pyx_t_20) < 0)) __PYX_ERR(0, 4025, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
  __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
  __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
/* … */
  __pyx_tuple__164 = PyTuple_Pack(1, __pyx_n_s_object); if (unlikely(!__pyx_tuple__164)) __PYX_ERR(0, 4025, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__164);
  __Pyx_GIVEREF(__pyx_tuple__164);
+4026: default_ann_types[ANN_RANK_FIELD] = np.dtype('int8')
  __pyx_t_20 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__165, NULL); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 4026, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_20);
  __pyx_t_19 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_ann_types); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 4026, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_19);
  __pyx_t_18 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_RANK_FIELD); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 4026, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
  if (unlikely(PyObject_SetItem(__pyx_t_19, __pyx_t_18, __pyx_t_20) < 0)) __PYX_ERR(0, 4026, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
  __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
/* … */
  __pyx_tuple__165 = PyTuple_Pack(1, __pyx_n_s_int8); if (unlikely(!__pyx_tuple__165)) __PYX_ERR(0, 4026, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__165);
  __Pyx_GIVEREF(__pyx_tuple__165);
+4027: default_ann_types[ANN_HGVS_C_FIELD] = np.dtype('object')
  __pyx_t_20 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__166, NULL); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 4027, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_20);
  __pyx_t_18 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_ann_types); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 4027, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
  __pyx_t_19 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_HGVS_C_FIELD); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 4027, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_19);
  if (unlikely(PyObject_SetItem(__pyx_t_18, __pyx_t_19, __pyx_t_20) < 0)) __PYX_ERR(0, 4027, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
  __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
  __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
/* … */
  __pyx_tuple__166 = PyTuple_Pack(1, __pyx_n_s_object); if (unlikely(!__pyx_tuple__166)) __PYX_ERR(0, 4027, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__166);
  __Pyx_GIVEREF(__pyx_tuple__166);
+4028: default_ann_types[ANN_HGVS_P_FIELD] = np.dtype('object')
  __pyx_t_20 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__167, NULL); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 4028, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_20);
  __pyx_t_19 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_ann_types); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 4028, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_19);
  __pyx_t_18 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_HGVS_P_FIELD); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 4028, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
  if (unlikely(PyObject_SetItem(__pyx_t_19, __pyx_t_18, __pyx_t_20) < 0)) __PYX_ERR(0, 4028, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
  __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
/* … */
  __pyx_tuple__167 = PyTuple_Pack(1, __pyx_n_s_object); if (unlikely(!__pyx_tuple__167)) __PYX_ERR(0, 4028, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__167);
  __Pyx_GIVEREF(__pyx_tuple__167);
+4029: default_ann_types[ANN_CDNA_POS_FIELD] = np.dtype('int32')
  __pyx_t_20 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__168, NULL); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 4029, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_20);
  __pyx_t_18 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_ann_types); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 4029, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
  __pyx_t_19 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_CDNA_POS_FIELD); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 4029, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_19);
  if (unlikely(PyObject_SetItem(__pyx_t_18, __pyx_t_19, __pyx_t_20) < 0)) __PYX_ERR(0, 4029, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
  __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
  __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
/* … */
  __pyx_tuple__168 = PyTuple_Pack(1, __pyx_n_s_int32); if (unlikely(!__pyx_tuple__168)) __PYX_ERR(0, 4029, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__168);
  __Pyx_GIVEREF(__pyx_tuple__168);
+4030: default_ann_types[ANN_CDNA_LENGTH_FIELD] = np.dtype('int32')
  __pyx_t_20 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__169, NULL); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 4030, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_20);
  __pyx_t_19 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_ann_types); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 4030, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_19);
  __pyx_t_18 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_CDNA_LENGTH_FIELD); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 4030, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
  if (unlikely(PyObject_SetItem(__pyx_t_19, __pyx_t_18, __pyx_t_20) < 0)) __PYX_ERR(0, 4030, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
  __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
/* … */
  __pyx_tuple__169 = PyTuple_Pack(1, __pyx_n_s_int32); if (unlikely(!__pyx_tuple__169)) __PYX_ERR(0, 4030, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__169);
  __Pyx_GIVEREF(__pyx_tuple__169);
+4031: default_ann_types[ANN_CDS_POS_FIELD] = np.dtype('int32')
  __pyx_t_20 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__170, NULL); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 4031, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_20);
  __pyx_t_18 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_ann_types); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 4031, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
  __pyx_t_19 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_CDS_POS_FIELD); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 4031, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_19);
  if (unlikely(PyObject_SetItem(__pyx_t_18, __pyx_t_19, __pyx_t_20) < 0)) __PYX_ERR(0, 4031, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
  __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
  __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
/* … */
  __pyx_tuple__170 = PyTuple_Pack(1, __pyx_n_s_int32); if (unlikely(!__pyx_tuple__170)) __PYX_ERR(0, 4031, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__170);
  __Pyx_GIVEREF(__pyx_tuple__170);
+4032: default_ann_types[ANN_CDS_LENGTH_FIELD] = np.dtype('int32')
  __pyx_t_20 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__171, NULL); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 4032, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_20);
  __pyx_t_19 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_ann_types); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 4032, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_19);
  __pyx_t_18 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_CDS_LENGTH_FIELD); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 4032, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
  if (unlikely(PyObject_SetItem(__pyx_t_19, __pyx_t_18, __pyx_t_20) < 0)) __PYX_ERR(0, 4032, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
  __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
/* … */
  __pyx_tuple__171 = PyTuple_Pack(1, __pyx_n_s_int32); if (unlikely(!__pyx_tuple__171)) __PYX_ERR(0, 4032, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__171);
  __Pyx_GIVEREF(__pyx_tuple__171);
+4033: default_ann_types[ANN_AA_POS_FIELD] = np.dtype('int32')
  __pyx_t_20 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__172, NULL); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 4033, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_20);
  __pyx_t_18 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_ann_types); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 4033, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
  __pyx_t_19 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_AA_POS_FIELD); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 4033, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_19);
  if (unlikely(PyObject_SetItem(__pyx_t_18, __pyx_t_19, __pyx_t_20) < 0)) __PYX_ERR(0, 4033, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
  __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
  __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
/* … */
  __pyx_tuple__172 = PyTuple_Pack(1, __pyx_n_s_int32); if (unlikely(!__pyx_tuple__172)) __PYX_ERR(0, 4033, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__172);
  __Pyx_GIVEREF(__pyx_tuple__172);
+4034: default_ann_types[ANN_AA_LENGTH_FIELD] = np.dtype('int32')
  __pyx_t_20 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__173, NULL); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 4034, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_20);
  __pyx_t_19 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_ann_types); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 4034, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_19);
  __pyx_t_18 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_AA_LENGTH_FIELD); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 4034, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
  if (unlikely(PyObject_SetItem(__pyx_t_19, __pyx_t_18, __pyx_t_20) < 0)) __PYX_ERR(0, 4034, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
  __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
/* … */
  __pyx_tuple__173 = PyTuple_Pack(1, __pyx_n_s_int32); if (unlikely(!__pyx_tuple__173)) __PYX_ERR(0, 4034, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__173);
  __Pyx_GIVEREF(__pyx_tuple__173);
+4035: default_ann_types[ANN_DISTANCE_FIELD] = np.dtype('int32')
  __pyx_t_20 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_tuple__174, NULL); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 4035, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_20);
  __pyx_t_18 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_ann_types); if (unlikely(!__pyx_t_18)) __PYX_ERR(0, 4035, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_18);
  __pyx_t_19 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_DISTANCE_FIELD); if (unlikely(!__pyx_t_19)) __PYX_ERR(0, 4035, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_19);
  if (unlikely(PyObject_SetItem(__pyx_t_18, __pyx_t_19, __pyx_t_20) < 0)) __PYX_ERR(0, 4035, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
  __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
  __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
/* … */
  __pyx_tuple__174 = PyTuple_Pack(1, __pyx_n_s_int32); if (unlikely(!__pyx_tuple__174)) __PYX_ERR(0, 4035, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__174);
  __Pyx_GIVEREF(__pyx_tuple__174);
 4036: 
 4037: 
+4038: def _normalize_ann_types(fields, types):
/* Python wrapper */
static PyObject *__pyx_pw_5allel_3opt_11io_vcf_read_9_normalize_ann_types(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_5allel_3opt_11io_vcf_read_9_normalize_ann_types = {"_normalize_ann_types", (PyCFunction)__pyx_pw_5allel_3opt_11io_vcf_read_9_normalize_ann_types, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_5allel_3opt_11io_vcf_read_9_normalize_ann_types(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_fields = 0;
  PyObject *__pyx_v_types = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_normalize_ann_types (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fields,&__pyx_n_s_types,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] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fields)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_types)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_normalize_ann_types", 1, 2, 2, 1); __PYX_ERR(0, 4038, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_normalize_ann_types") < 0)) __PYX_ERR(0, 4038, __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_fields = values[0];
    __pyx_v_types = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_normalize_ann_types", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 4038, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read._normalize_ann_types", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_8_normalize_ann_types(__pyx_self, __pyx_v_fields, __pyx_v_types);

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

static PyObject *__pyx_pf_5allel_3opt_11io_vcf_read_8_normalize_ann_types(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_fields, PyObject *__pyx_v_types) {
  PyObject *__pyx_v_normed_types = NULL;
  PyObject *__pyx_v_f = NULL;
  PyObject *__pyx_7genexpr__pyx_v_f = NULL;
  PyObject *__pyx_7genexpr__pyx_v_t = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_normalize_ann_types", 0);
  __Pyx_INCREF(__pyx_v_types);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("allel.opt.io_vcf_read._normalize_ann_types", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_normed_types);
  __Pyx_XDECREF(__pyx_v_f);
  __Pyx_XDECREF(__pyx_7genexpr__pyx_v_f);
  __Pyx_XDECREF(__pyx_7genexpr__pyx_v_t);
  __Pyx_XDECREF(__pyx_v_types);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* … */
  __pyx_tuple__175 = PyTuple_Pack(6, __pyx_n_s_fields, __pyx_n_s_types, __pyx_n_s_normed_types, __pyx_n_s_f, __pyx_n_s_f, __pyx_n_s_t); if (unlikely(!__pyx_tuple__175)) __PYX_ERR(0, 4038, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__175);
  __Pyx_GIVEREF(__pyx_tuple__175);
/* … */
  __pyx_t_20 = PyCFunction_NewEx(&__pyx_mdef_5allel_3opt_11io_vcf_read_9_normalize_ann_types, NULL, __pyx_n_s_allel_opt_io_vcf_read); if (unlikely(!__pyx_t_20)) __PYX_ERR(0, 4038, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_20);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_normalize_ann_types, __pyx_t_20) < 0) __PYX_ERR(0, 4038, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
  __pyx_codeobj__176 = (PyObject*)__Pyx_PyCode_New(2, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__175, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_allel_opt_io_vcf_read_pyx, __pyx_n_s_normalize_ann_types, 4038, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__176)) __PYX_ERR(0, 4038, __pyx_L1_error)
 4039: 
+4040:     if types is None:
  __pyx_t_1 = (__pyx_v_types == Py_None);
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {
/* … */
  }
+4041:         types = dict()
    __pyx_t_3 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4041, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF_SET(__pyx_v_types, __pyx_t_3);
    __pyx_t_3 = 0;
+4042:     types = {_normalize_ann_field_prefix(f): np.dtype(t)
  { /* enter inner scope */
    __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4042, __pyx_L6_error)
    __Pyx_GOTREF(__pyx_t_3);
/* … */
      __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_normalize_ann_field_prefix); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 4042, __pyx_L6_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_6 = NULL;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_9);
        if (likely(__pyx_t_6)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_9, function);
        }
      }
      if (!__pyx_t_6) {
        __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_7genexpr__pyx_v_f); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4042, __pyx_L6_error)
        __Pyx_GOTREF(__pyx_t_4);
      } else {
        #if CYTHON_FAST_PYCALL
        if (PyFunction_Check(__pyx_t_9)) {
          PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_7genexpr__pyx_v_f};
          __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4042, __pyx_L6_error)
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_GOTREF(__pyx_t_4);
        } else
        #endif
        #if CYTHON_FAST_PYCCALL
        if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) {
          PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_7genexpr__pyx_v_f};
          __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4042, __pyx_L6_error)
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_GOTREF(__pyx_t_4);
        } else
        #endif
        {
          __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4042, __pyx_L6_error)
          __Pyx_GOTREF(__pyx_t_10);
          __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_6); __pyx_t_6 = NULL;
          __Pyx_INCREF(__pyx_7genexpr__pyx_v_f);
          __Pyx_GIVEREF(__pyx_7genexpr__pyx_v_f);
          PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_7genexpr__pyx_v_f);
          __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_10, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4042, __pyx_L6_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        }
      }
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 4042, __pyx_L6_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_INCREF(__pyx_7genexpr__pyx_v_t);
      __Pyx_GIVEREF(__pyx_7genexpr__pyx_v_t);
      PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_7genexpr__pyx_v_t);
      __pyx_t_10 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5numpy_dtype), __pyx_t_9, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4042, __pyx_L6_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (unlikely(PyDict_SetItem(__pyx_t_3, (PyObject*)__pyx_t_4, (PyObject*)__pyx_t_10))) __PYX_ERR(0, 4042, __pyx_L6_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+4043:              for f, t in types.items()}
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_types, __pyx_n_s_items); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4043, __pyx_L6_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
      }
    }
    if (__pyx_t_6) {
      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4043, __pyx_L6_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    } else {
      __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4043, __pyx_L6_error)
    }
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
      __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_7 = 0;
      __pyx_t_8 = NULL;
    } else {
      __pyx_t_7 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4043, __pyx_L6_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_8 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4043, __pyx_L6_error)
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    for (;;) {
      if (likely(!__pyx_t_8)) {
        if (likely(PyList_CheckExact(__pyx_t_5))) {
          if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_5)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_7); __Pyx_INCREF(__pyx_t_4); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 4043, __pyx_L6_error)
          #else
          __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4043, __pyx_L6_error)
          __Pyx_GOTREF(__pyx_t_4);
          #endif
        } else {
          if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_7); __Pyx_INCREF(__pyx_t_4); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 4043, __pyx_L6_error)
          #else
          __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4043, __pyx_L6_error)
          __Pyx_GOTREF(__pyx_t_4);
          #endif
        }
      } else {
        __pyx_t_4 = __pyx_t_8(__pyx_t_5);
        if (unlikely(!__pyx_t_4)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else __PYX_ERR(0, 4043, __pyx_L6_error)
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_4);
      }
      if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
        PyObject* sequence = __pyx_t_4;
        #if !CYTHON_COMPILING_IN_PYPY
        Py_ssize_t size = Py_SIZE(sequence);
        #else
        Py_ssize_t size = PySequence_Size(sequence);
        #endif
        if (unlikely(size != 2)) {
          if (size > 2) __Pyx_RaiseTooManyValuesError(2);
          else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
          __PYX_ERR(0, 4043, __pyx_L6_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_9 = PyTuple_GET_ITEM(sequence, 1); 
        } else {
          __pyx_t_6 = PyList_GET_ITEM(sequence, 0); 
          __pyx_t_9 = PyList_GET_ITEM(sequence, 1); 
        }
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_9);
        #else
        __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4043, __pyx_L6_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_9 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 4043, __pyx_L6_error)
        __Pyx_GOTREF(__pyx_t_9);
        #endif
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      } else {
        Py_ssize_t index = -1;
        __pyx_t_10 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4043, __pyx_L6_error)
        __Pyx_GOTREF(__pyx_t_10);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_11 = Py_TYPE(__pyx_t_10)->tp_iternext;
        index = 0; __pyx_t_6 = __pyx_t_11(__pyx_t_10); if (unlikely(!__pyx_t_6)) goto __pyx_L9_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_6);
        index = 1; __pyx_t_9 = __pyx_t_11(__pyx_t_10); if (unlikely(!__pyx_t_9)) goto __pyx_L9_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_9);
        if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_10), 2) < 0) __PYX_ERR(0, 4043, __pyx_L6_error)
        __pyx_t_11 = NULL;
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        goto __pyx_L10_unpacking_done;
        __pyx_L9_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        __pyx_t_11 = NULL;
        if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
        __PYX_ERR(0, 4043, __pyx_L6_error)
        __pyx_L10_unpacking_done:;
      }
      __Pyx_XDECREF_SET(__pyx_7genexpr__pyx_v_f, __pyx_t_6);
      __pyx_t_6 = 0;
      __Pyx_XDECREF_SET(__pyx_7genexpr__pyx_v_t, __pyx_t_9);
      __pyx_t_9 = 0;
/* … */
    }
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_7genexpr__pyx_v_f); __pyx_7genexpr__pyx_v_f = 0;
    __Pyx_XDECREF(__pyx_7genexpr__pyx_v_t); __pyx_7genexpr__pyx_v_t = 0;
    goto __pyx_L11_exit_scope;
    __pyx_L6_error:;
    __Pyx_XDECREF(__pyx_7genexpr__pyx_v_f); __pyx_7genexpr__pyx_v_f = 0;
    __Pyx_XDECREF(__pyx_7genexpr__pyx_v_t); __pyx_7genexpr__pyx_v_t = 0;
    goto __pyx_L1_error;
    __pyx_L11_exit_scope:;
  } /* exit inner scope */
  __Pyx_DECREF_SET(__pyx_v_types, __pyx_t_3);
  __pyx_t_3 = 0;
 4044: 
+4045:     normed_types = dict()
  __pyx_t_3 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4045, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v_normed_types = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;
+4046:     for f in fields:
  if (likely(PyList_CheckExact(__pyx_v_fields)) || PyTuple_CheckExact(__pyx_v_fields)) {
    __pyx_t_3 = __pyx_v_fields; __Pyx_INCREF(__pyx_t_3); __pyx_t_7 = 0;
    __pyx_t_8 = NULL;
  } else {
    __pyx_t_7 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_fields); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4046, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_8 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4046, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_8)) {
      if (likely(PyList_CheckExact(__pyx_t_3))) {
        if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_3)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_7); __Pyx_INCREF(__pyx_t_5); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 4046, __pyx_L1_error)
        #else
        __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4046, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_7); __Pyx_INCREF(__pyx_t_5); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 4046, __pyx_L1_error)
        #else
        __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4046, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      }
    } else {
      __pyx_t_5 = __pyx_t_8(__pyx_t_3);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 4046, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_XDECREF_SET(__pyx_v_f, __pyx_t_5);
    __pyx_t_5 = 0;
/* … */
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+4047:         if f in types:
    __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_v_f, __pyx_v_types, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 4047, __pyx_L1_error)
    __pyx_t_1 = (__pyx_t_2 != 0);
    if (__pyx_t_1) {
/* … */
      goto __pyx_L14;
    }
+4048:             normed_types[f] = types[f]
      __pyx_t_5 = PyObject_GetItem(__pyx_v_types, __pyx_v_f); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4048, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      if (unlikely(PyDict_SetItem(__pyx_v_normed_types, __pyx_v_f, __pyx_t_5) < 0)) __PYX_ERR(0, 4048, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 4049:         else:
+4050:             normed_types[f] = default_ann_types[f]
    /*else*/ {
      __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_default_ann_types); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4050, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_10 = PyObject_GetItem(__pyx_t_5, __pyx_v_f); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4050, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(PyDict_SetItem(__pyx_v_normed_types, __pyx_v_f, __pyx_t_10) < 0)) __PYX_ERR(0, 4050, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    }
    __pyx_L14:;
 4051: 
+4052:     return normed_types
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_normed_types);
  __pyx_r = __pyx_v_normed_types;
  goto __pyx_L0;
 4053: 
 4054: 
+4055: cdef class ANNTransformer:
struct __pyx_obj_5allel_3opt_11io_vcf_read_ANNTransformer {
  PyObject_HEAD
  PyObject *fields;
  PyObject *types;
  int keep_original;
};

 4056: 
 4057:     cdef:
 4058:         list fields
 4059:         object types
 4060:         bint keep_original
 4061: 
+4062:     def __init__(self, fields=None, types=None, keep_original=False):
/* Python wrapper */
static int __pyx_pw_5allel_3opt_11io_vcf_read_14ANNTransformer_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_5allel_3opt_11io_vcf_read_14ANNTransformer_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_fields = 0;
  PyObject *__pyx_v_types = 0;
  PyObject *__pyx_v_keep_original = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fields,&__pyx_n_s_types,&__pyx_n_s_keep_original,0};
    PyObject* values[3] = {0,0,0};
    values[0] = ((PyObject *)Py_None);
    values[1] = ((PyObject *)Py_None);
    values[2] = ((PyObject *)Py_False);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fields);
          if (value) { values[0] = value; kw_args--; }
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_types);
          if (value) { values[1] = value; kw_args--; }
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_keep_original);
          if (value) { values[2] = 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, 4062, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_fields = values[0];
    __pyx_v_types = values[1];
    __pyx_v_keep_original = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 4062, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.ANNTransformer.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_14ANNTransformer___init__(((struct __pyx_obj_5allel_3opt_11io_vcf_read_ANNTransformer *)__pyx_v_self), __pyx_v_fields, __pyx_v_types, __pyx_v_keep_original);

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

static int __pyx_pf_5allel_3opt_11io_vcf_read_14ANNTransformer___init__(struct __pyx_obj_5allel_3opt_11io_vcf_read_ANNTransformer *__pyx_v_self, PyObject *__pyx_v_fields, PyObject *__pyx_v_types, PyObject *__pyx_v_keep_original) {
  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_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.ANNTransformer.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+4063:         self.fields = _normalize_ann_fields(fields)
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_normalize_ann_fields); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4063, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  if (!__pyx_t_3) {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_fields); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4063, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_fields};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4063, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_fields};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4063, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    {
      __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4063, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_v_fields);
      __Pyx_GIVEREF(__pyx_v_fields);
      PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_fields);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4063, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (!(likely(PyList_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "list", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 4063, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->fields);
  __Pyx_DECREF(__pyx_v_self->fields);
  __pyx_v_self->fields = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
+4064:         self.types = _normalize_ann_types(self.fields, types)
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_normalize_ann_types); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4064, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_5 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_self->fields, __pyx_v_types};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4064, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_self->fields, __pyx_v_types};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4064, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else
  #endif
  {
    __pyx_t_3 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4064, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (__pyx_t_4) {
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL;
    }
    __Pyx_INCREF(__pyx_v_self->fields);
    __Pyx_GIVEREF(__pyx_v_self->fields);
    PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_5, __pyx_v_self->fields);
    __Pyx_INCREF(__pyx_v_types);
    __Pyx_GIVEREF(__pyx_v_types);
    PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_5, __pyx_v_types);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4064, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->types);
  __Pyx_DECREF(__pyx_v_self->types);
  __pyx_v_self->types = __pyx_t_1;
  __pyx_t_1 = 0;
+4065:         self.keep_original = keep_original
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_keep_original); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 4065, __pyx_L1_error)
  __pyx_v_self->keep_original = __pyx_t_6;
 4066: 
+4067:     def transform_fields(self, fields):
/* Python wrapper */
static PyObject *__pyx_pw_5allel_3opt_11io_vcf_read_14ANNTransformer_3transform_fields(PyObject *__pyx_v_self, PyObject *__pyx_v_fields); /*proto*/
static PyObject *__pyx_pw_5allel_3opt_11io_vcf_read_14ANNTransformer_3transform_fields(PyObject *__pyx_v_self, PyObject *__pyx_v_fields) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("transform_fields (wrapper)", 0);
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_14ANNTransformer_2transform_fields(((struct __pyx_obj_5allel_3opt_11io_vcf_read_ANNTransformer *)__pyx_v_self), ((PyObject *)__pyx_v_fields));

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

static PyObject *__pyx_pf_5allel_3opt_11io_vcf_read_14ANNTransformer_2transform_fields(struct __pyx_obj_5allel_3opt_11io_vcf_read_ANNTransformer *__pyx_v_self, PyObject *__pyx_v_fields) {
  PyObject *__pyx_v_fields_transformed = NULL;
  PyObject *__pyx_v_f = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("transform_fields", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.ANNTransformer.transform_fields", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_fields_transformed);
  __Pyx_XDECREF(__pyx_v_f);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+4068:         fields_transformed = list()
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4068, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_fields_transformed = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
+4069:         for f in fields:
  if (likely(PyList_CheckExact(__pyx_v_fields)) || PyTuple_CheckExact(__pyx_v_fields)) {
    __pyx_t_1 = __pyx_v_fields; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
    __pyx_t_3 = NULL;
  } else {
    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_fields); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4069, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4069, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 4069, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4069, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 4069, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4069, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_3(__pyx_t_1);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 4069, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_f, __pyx_t_4);
    __pyx_t_4 = 0;
/* … */
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+4070:             if f == ANN_FIELD:
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_FIELD); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4070, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = PyObject_RichCompare(__pyx_v_f, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4070, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 4070, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (__pyx_t_6) {
/* … */
      goto __pyx_L5;
    }
+4071:                 if self.keep_original:
      __pyx_t_6 = (__pyx_v_self->keep_original != 0);
      if (__pyx_t_6) {
/* … */
      }
+4072:                     fields_transformed.append(f)
        __pyx_t_7 = __Pyx_PyList_Append(__pyx_v_fields_transformed, __pyx_v_f); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 4072, __pyx_L1_error)
+4073:                 fields_transformed.extend(self.fields)
      __pyx_t_5 = __pyx_v_self->fields;
      __Pyx_INCREF(__pyx_t_5);
      __pyx_t_7 = __Pyx_PyList_Extend(__pyx_v_fields_transformed, __pyx_t_5); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 4073, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 4074:             else:
+4075:                 fields_transformed.append(f)
    /*else*/ {
      __pyx_t_7 = __Pyx_PyList_Append(__pyx_v_fields_transformed, __pyx_v_f); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 4075, __pyx_L1_error)
    }
    __pyx_L5:;
+4076:         return fields_transformed
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_fields_transformed);
  __pyx_r = __pyx_v_fields_transformed;
  goto __pyx_L0;
 4077: 
+4078:     def _malloc_string_array(self, field, shape):
/* Python wrapper */
static PyObject *__pyx_pw_5allel_3opt_11io_vcf_read_14ANNTransformer_5_malloc_string_array(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_5allel_3opt_11io_vcf_read_14ANNTransformer_5_malloc_string_array(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_field = 0;
  PyObject *__pyx_v_shape = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_malloc_string_array (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_field,&__pyx_n_s_shape,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] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_field)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_shape)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_malloc_string_array", 1, 2, 2, 1); __PYX_ERR(0, 4078, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_malloc_string_array") < 0)) __PYX_ERR(0, 4078, __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_field = values[0];
    __pyx_v_shape = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_malloc_string_array", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 4078, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.ANNTransformer._malloc_string_array", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_14ANNTransformer_4_malloc_string_array(((struct __pyx_obj_5allel_3opt_11io_vcf_read_ANNTransformer *)__pyx_v_self), __pyx_v_field, __pyx_v_shape);

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

static PyObject *__pyx_pf_5allel_3opt_11io_vcf_read_14ANNTransformer_4_malloc_string_array(struct __pyx_obj_5allel_3opt_11io_vcf_read_ANNTransformer *__pyx_v_self, PyObject *__pyx_v_field, PyObject *__pyx_v_shape) {
  PyObject *__pyx_v_t = NULL;
  PyObject *__pyx_v_a = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_malloc_string_array", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.ANNTransformer._malloc_string_array", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_t);
  __Pyx_XDECREF(__pyx_v_a);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+4079:         if field in self.fields:
  __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_v_field, __pyx_v_self->fields, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 4079, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {
/* … */
    goto __pyx_L3;
  }
+4080:             t = check_string_dtype(self.types[field])
    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_check_string_dtype); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4080, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = PyObject_GetItem(__pyx_v_self->types, __pyx_v_field); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4080, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = NULL;
    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);
      }
    }
    if (!__pyx_t_6) {
      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4080, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_3);
    } else {
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_4)) {
        PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_5};
        __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4080, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
        PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_5};
        __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4080, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      } else
      #endif
      {
        __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4080, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
        __Pyx_GIVEREF(__pyx_t_5);
        PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_5);
        __pyx_t_5 = 0;
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4080, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      }
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_t = __pyx_t_3;
    __pyx_t_3 = 0;
+4081:             a = np.empty(shape, dtype=t)
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4081, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_empty); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4081, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4081, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_shape);
    __Pyx_GIVEREF(__pyx_v_shape);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_shape);
    __pyx_t_7 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4081, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_v_t) < 0) __PYX_ERR(0, 4081, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4081, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_v_a = __pyx_t_5;
    __pyx_t_5 = 0;
+4082:             if t.kind == 'S':
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_t, __pyx_n_s_kind); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4082, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_n_s_S, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 4082, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (__pyx_t_2) {
/* … */
      goto __pyx_L4;
    }
+4083:                 a.fill(b'')
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_a, __pyx_n_s_fill); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4083, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__109, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4083, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
  __pyx_tuple__109 = PyTuple_Pack(1, __pyx_kp_b__8); if (unlikely(!__pyx_tuple__109)) __PYX_ERR(0, 4083, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__109);
  __Pyx_GIVEREF(__pyx_tuple__109);
 4084:             else:
+4085:                 a.fill(u'')
    /*else*/ {
      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_a, __pyx_n_s_fill); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4085, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_tuple__110, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4085, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __pyx_L4:;
/* … */
  __pyx_tuple__110 = PyTuple_Pack(1, __pyx_kp_u__8); if (unlikely(!__pyx_tuple__110)) __PYX_ERR(0, 4085, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__110);
  __Pyx_GIVEREF(__pyx_tuple__110);
 4086:         else:
+4087:             a = None
  /*else*/ {
    __Pyx_INCREF(Py_None);
    __pyx_v_a = Py_None;
  }
  __pyx_L3:;
+4088:         return a
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_a);
  __pyx_r = __pyx_v_a;
  goto __pyx_L0;
 4089: 
+4090:     def _malloc_integer_array(self, field, shape):
/* Python wrapper */
static PyObject *__pyx_pw_5allel_3opt_11io_vcf_read_14ANNTransformer_7_malloc_integer_array(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_5allel_3opt_11io_vcf_read_14ANNTransformer_7_malloc_integer_array(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_field = 0;
  PyObject *__pyx_v_shape = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_malloc_integer_array (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_field,&__pyx_n_s_shape,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] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_field)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_shape)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_malloc_integer_array", 1, 2, 2, 1); __PYX_ERR(0, 4090, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_malloc_integer_array") < 0)) __PYX_ERR(0, 4090, __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_field = values[0];
    __pyx_v_shape = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_malloc_integer_array", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 4090, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("allel.opt.io_vcf_read.ANNTransformer._malloc_integer_array", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_14ANNTransformer_6_malloc_integer_array(((struct __pyx_obj_5allel_3opt_11io_vcf_read_ANNTransformer *)__pyx_v_self), __pyx_v_field, __pyx_v_shape);

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

static PyObject *__pyx_pf_5allel_3opt_11io_vcf_read_14ANNTransformer_6_malloc_integer_array(struct __pyx_obj_5allel_3opt_11io_vcf_read_ANNTransformer *__pyx_v_self, PyObject *__pyx_v_field, PyObject *__pyx_v_shape) {
  PyObject *__pyx_v_t = NULL;
  PyObject *__pyx_v_a = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_malloc_integer_array", 0);
/* … */
  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.ANNTransformer._malloc_integer_array", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_t);
  __Pyx_XDECREF(__pyx_v_a);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
+4091:         if field in self.fields:
  __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_v_field, __pyx_v_self->fields, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 4091, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {
/* … */
    goto __pyx_L3;
  }
+4092:             t = self.types[field]
    __pyx_t_3 = PyObject_GetItem(__pyx_v_self->types, __pyx_v_field); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4092, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_v_t = __pyx_t_3;
    __pyx_t_3 = 0;
+4093:             if t.kind != 'i':
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_t, __pyx_n_s_kind); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4093, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_n_s_i, Py_NE)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 4093, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_2) {
/* … */
    }
+4094:                 raise ValueError('only signed integer dtype supported for field %r' % field)
      __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_only_signed_integer_dtype_suppor, __pyx_v_field); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4094, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4094, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4094, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_Raise(__pyx_t_3, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __PYX_ERR(0, 4094, __pyx_L1_error)
+4095:             a = np.empty(shape, dtype=t)
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4095, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_empty); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4095, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4095, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_shape);
    __Pyx_GIVEREF(__pyx_v_shape);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_shape);
    __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4095, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_v_t) < 0) __PYX_ERR(0, 4095, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4095, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_v_a = __pyx_t_6;
    __pyx_t_6 = 0;
+4096:             a.fill(-1)
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_a, __pyx_n_s_fill); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4096, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__111, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4096, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
/* … */
  __pyx_tuple__111 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__111)) __PYX_ERR(0, 4096, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__111);
  __Pyx_GIVEREF(__pyx_tuple__111);
 4097:         else:
+4098:             a = None
  /*else*/ {
    __Pyx_INCREF(Py_None);
    __pyx_v_a = Py_None;
  }
  __pyx_L3:;
+4099:         return a
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_a);
  __pyx_r = __pyx_v_a;
  goto __pyx_L0;
 4100: 
+4101:     def transform_chunk(self, chunk):
/* Python wrapper */
static PyObject *__pyx_pw_5allel_3opt_11io_vcf_read_14ANNTransformer_9transform_chunk(PyObject *__pyx_v_self, PyObject *__pyx_v_chunk); /*proto*/
static PyObject *__pyx_pw_5allel_3opt_11io_vcf_read_14ANNTransformer_9transform_chunk(PyObject *__pyx_v_self, PyObject *__pyx_v_chunk) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("transform_chunk (wrapper)", 0);
  __pyx_r = __pyx_pf_5allel_3opt_11io_vcf_read_14ANNTransformer_8transform_chunk(((struct __pyx_obj_5allel_3opt_11io_vcf_read_ANNTransformer *)__pyx_v_self), ((PyObject *)__pyx_v_chunk));

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

static PyObject *__pyx_pf_5allel_3opt_11io_vcf_read_14ANNTransformer_8transform_chunk(struct __pyx_obj_5allel_3opt_11io_vcf_read_ANNTransformer *__pyx_v_self, PyObject *__pyx_v_chunk) {
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_j;
  Py_ssize_t __pyx_v_chunk_length;
  Py_ssize_t __pyx_v_number;
  Py_ssize_t __pyx_v_n_vals;
  PyObject *__pyx_v_vals = 0;
  PyObject *__pyx_v_vv = 0;
  PyObject *__pyx_v_ann = NULL;
  PyObject *__pyx_v_shape = NULL;
  PyObject *__pyx_v_allele = NULL;
  PyObject *__pyx_v_annotation = NULL;
  PyObject *__pyx_v_annotation_impact = NULL;
  PyObject *__pyx_v_gene_name = NULL;
  PyObject *__pyx_v_gene_id = NULL;
  PyObject *__pyx_v_feature_type = NULL;
  PyObject *__pyx_v_feature_id = NULL;
  PyObject *__pyx_v_transcript_biotype = NULL;
  PyObject *__pyx_v_rank = NULL;
  PyObject *__pyx_v_hgvs_c = NULL;
  PyObject *__pyx_v_hgvs_p = NULL;
  PyObject *__pyx_v_cdna_pos = NULL;
  PyObject *__pyx_v_cdna_length = NULL;
  PyObject *__pyx_v_cds_pos = NULL;
  PyObject *__pyx_v_cds_length = NULL;
  PyObject *__pyx_v_aa_pos = NULL;
  PyObject *__pyx_v_aa_length = NULL;
  PyObject *__pyx_v_distance = NULL;
  PyObject *__pyx_v_raw = NULL;
  PyObject *__pyx_v_v = NULL;
  PyObject *__pyx_v_ann_chunk = NULL;
  PyObject *__pyx_v_k = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("transform_chunk", 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_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("allel.opt.io_vcf_read.ANNTransformer.transform_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_vals);
  __Pyx_XDECREF(__pyx_v_vv);
  __Pyx_XDECREF(__pyx_v_ann);
  __Pyx_XDECREF(__pyx_v_shape);
  __Pyx_XDECREF(__pyx_v_allele);
  __Pyx_XDECREF(__pyx_v_annotation);
  __Pyx_XDECREF(__pyx_v_annotation_impact);
  __Pyx_XDECREF(__pyx_v_gene_name);
  __Pyx_XDECREF(__pyx_v_gene_id);
  __Pyx_XDECREF(__pyx_v_feature_type);
  __Pyx_XDECREF(__pyx_v_feature_id);
  __Pyx_XDECREF(__pyx_v_transcript_biotype);
  __Pyx_XDECREF(__pyx_v_rank);
  __Pyx_XDECREF(__pyx_v_hgvs_c);
  __Pyx_XDECREF(__pyx_v_hgvs_p);
  __Pyx_XDECREF(__pyx_v_cdna_pos);
  __Pyx_XDECREF(__pyx_v_cdna_length);
  __Pyx_XDECREF(__pyx_v_cds_pos);
  __Pyx_XDECREF(__pyx_v_cds_length);
  __Pyx_XDECREF(__pyx_v_aa_pos);
  __Pyx_XDECREF(__pyx_v_aa_length);
  __Pyx_XDECREF(__pyx_v_distance);
  __Pyx_XDECREF(__pyx_v_raw);
  __Pyx_XDECREF(__pyx_v_v);
  __Pyx_XDECREF(__pyx_v_ann_chunk);
  __Pyx_XDECREF(__pyx_v_k);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
 4102:         cdef:
 4103:             Py_ssize_t i, j, chunk_length, number, n_vals
 4104:             list vals
 4105:             list vv
 4106: 
 4107:         # obtain array to be transformed
+4108:         ann = chunk[ANN_FIELD]
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_FIELD); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4108, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_GetItem(__pyx_v_chunk, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4108, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_ann = __pyx_t_2;
  __pyx_t_2 = 0;
+4109:         if not self.keep_original:
  __pyx_t_3 = ((!(__pyx_v_self->keep_original != 0)) != 0);
  if (__pyx_t_3) {
/* … */
  }
+4110:             del chunk[ANN_FIELD]
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_FIELD); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4110, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (unlikely(PyObject_DelItem(__pyx_v_chunk, __pyx_t_2) < 0)) __PYX_ERR(0, 4110, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 4111: 
 4112:         # determine chunk length and number of items
+4113:         chunk_length = ann.shape[0]
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_ann, __pyx_n_s_shape); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4113, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4113, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyIndex_AsSsize_t(__pyx_t_1); if (unlikely((__pyx_t_4 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 4113, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_chunk_length = __pyx_t_4;
+4114:         if ann.ndim == 1:
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_ann, __pyx_n_s_ndim); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4114, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_EqObjC(__pyx_t_1, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4114, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 4114, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_3) {
/* … */
  }
+4115:             ann = ann[:, np.newaxis]
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4115, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_newaxis); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4115, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4115, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_slice__112);
    __Pyx_GIVEREF(__pyx_slice__112);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_slice__112);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_1 = PyObject_GetItem(__pyx_v_ann, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4115, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF_SET(__pyx_v_ann, __pyx_t_1);
    __pyx_t_1 = 0;
/* … */
  __pyx_slice__112 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__112)) __PYX_ERR(0, 4115, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__112);
  __Pyx_GIVEREF(__pyx_slice__112);
+4116:         number = ann.shape[1]
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_ann, __pyx_n_s_shape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4116, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4116, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_4 = __Pyx_PyIndex_AsSsize_t(__pyx_t_2); if (unlikely((__pyx_t_4 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 4116, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_number = __pyx_t_4;
+4117:         shape = chunk_length, number
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_chunk_length); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4117, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_number); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4117, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4117, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_1);
  __pyx_t_2 = 0;
  __pyx_t_1 = 0;
  __pyx_v_shape = __pyx_t_5;
  __pyx_t_5 = 0;
 4118: 
 4119:         # allocate output arrays
+4120:         allele = self._malloc_string_array(ANN_ALLELE_FIELD, shape)
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_malloc_string_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4120, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_ALLELE_FIELD); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4120, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
      __pyx_t_7 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_1)) {
    PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_2, __pyx_v_shape};
    __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4120, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
    PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_2, __pyx_v_shape};
    __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4120, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  } else
  #endif
  {
    __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4120, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    if (__pyx_t_6) {
      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_t_2);
    __Pyx_INCREF(__pyx_v_shape);
    __Pyx_GIVEREF(__pyx_v_shape);
    PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_v_shape);
    __pyx_t_2 = 0;
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_8, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4120, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_allele = __pyx_t_5;
  __pyx_t_5 = 0;
+4121:         annotation = self._malloc_string_array(ANN_ANNOTATION_FIELD, shape)
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_malloc_string_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4121, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_ANNOTATION_FIELD); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4121, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_2 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
      __pyx_t_7 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_1)) {
    PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_t_8, __pyx_v_shape};
    __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4121, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
    PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_t_8, __pyx_v_shape};
    __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4121, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  } else
  #endif
  {
    __pyx_t_6 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4121, __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_GIVEREF(__pyx_t_8);
    PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_7, __pyx_t_8);
    __Pyx_INCREF(__pyx_v_shape);
    __Pyx_GIVEREF(__pyx_v_shape);
    PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_7, __pyx_v_shape);
    __pyx_t_8 = 0;
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4121, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_annotation = __pyx_t_5;
  __pyx_t_5 = 0;
+4122:         annotation_impact = self._malloc_string_array(ANN_ANNOTATION_IMPACT_FIELD, shape)
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_malloc_string_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4122, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_ANNOTATION_IMPACT_FIELD); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4122, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_8 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
      __pyx_t_7 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_1)) {
    PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_t_6, __pyx_v_shape};
    __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4122, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
    PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_t_6, __pyx_v_shape};
    __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4122, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  } else
  #endif
  {
    __pyx_t_2 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4122, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (__pyx_t_8) {
      __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_8); __pyx_t_8 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_7, __pyx_t_6);
    __Pyx_INCREF(__pyx_v_shape);
    __Pyx_GIVEREF(__pyx_v_shape);
    PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_7, __pyx_v_shape);
    __pyx_t_6 = 0;
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4122, __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_v_annotation_impact = __pyx_t_5;
  __pyx_t_5 = 0;
+4123:         gene_name = self._malloc_string_array(ANN_GENE_NAME_FIELD, shape)
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_malloc_string_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_GENE_NAME_FIELD); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
      __pyx_t_7 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_1)) {
    PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_2, __pyx_v_shape};
    __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4123, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
    PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_2, __pyx_v_shape};
    __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4123, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  } else
  #endif
  {
    __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4123, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    if (__pyx_t_6) {
      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_t_2);
    __Pyx_INCREF(__pyx_v_shape);
    __Pyx_GIVEREF(__pyx_v_shape);
    PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_v_shape);
    __pyx_t_2 = 0;
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_8, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4123, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_gene_name = __pyx_t_5;
  __pyx_t_5 = 0;
+4124:         gene_id = self._malloc_string_array(ANN_GENE_ID_FIELD, shape)
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_malloc_string_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4124, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_GENE_ID_FIELD); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4124, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_2 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
      __pyx_t_7 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_1)) {
    PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_t_8, __pyx_v_shape};
    __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4124, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
    PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_t_8, __pyx_v_shape};
    __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4124, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  } else
  #endif
  {
    __pyx_t_6 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4124, __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_GIVEREF(__pyx_t_8);
    PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_7, __pyx_t_8);
    __Pyx_INCREF(__pyx_v_shape);
    __Pyx_GIVEREF(__pyx_v_shape);
    PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_7, __pyx_v_shape);
    __pyx_t_8 = 0;
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4124, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_gene_id = __pyx_t_5;
  __pyx_t_5 = 0;
+4125:         feature_type = self._malloc_string_array(ANN_FEATURE_TYPE_FIELD, shape)
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_malloc_string_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4125, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_FEATURE_TYPE_FIELD); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4125, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_8 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
      __pyx_t_7 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_1)) {
    PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_t_6, __pyx_v_shape};
    __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4125, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
    PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_t_6, __pyx_v_shape};
    __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4125, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  } else
  #endif
  {
    __pyx_t_2 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4125, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (__pyx_t_8) {
      __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_8); __pyx_t_8 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_7, __pyx_t_6);
    __Pyx_INCREF(__pyx_v_shape);
    __Pyx_GIVEREF(__pyx_v_shape);
    PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_7, __pyx_v_shape);
    __pyx_t_6 = 0;
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4125, __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_v_feature_type = __pyx_t_5;
  __pyx_t_5 = 0;
+4126:         feature_id = self._malloc_string_array(ANN_FEATURE_ID_FIELD, shape)
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_malloc_string_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4126, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_FEATURE_ID_FIELD); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4126, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
      __pyx_t_7 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_1)) {
    PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_2, __pyx_v_shape};
    __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4126, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
    PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_2, __pyx_v_shape};
    __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4126, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  } else
  #endif
  {
    __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4126, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    if (__pyx_t_6) {
      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_t_2);
    __Pyx_INCREF(__pyx_v_shape);
    __Pyx_GIVEREF(__pyx_v_shape);
    PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_v_shape);
    __pyx_t_2 = 0;
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_8, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4126, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_feature_id = __pyx_t_5;
  __pyx_t_5 = 0;
+4127:         transcript_biotype = self._malloc_string_array(ANN_TRANSCRIPT_BIOTYPE_FIELD, shape)
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_malloc_string_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4127, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_TRANSCRIPT_BIOTYPE_FIELD); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4127, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_2 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
      __pyx_t_7 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_1)) {
    PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_t_8, __pyx_v_shape};
    __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4127, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
    PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_t_8, __pyx_v_shape};
    __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4127, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  } else
  #endif
  {
    __pyx_t_6 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4127, __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_GIVEREF(__pyx_t_8);
    PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_7, __pyx_t_8);
    __Pyx_INCREF(__pyx_v_shape);
    __Pyx_GIVEREF(__pyx_v_shape);
    PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_7, __pyx_v_shape);
    __pyx_t_8 = 0;
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4127, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_transcript_biotype = __pyx_t_5;
  __pyx_t_5 = 0;
+4128:         rank = self._malloc_integer_array(ANN_RANK_FIELD, shape)
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_malloc_integer_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4128, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_RANK_FIELD); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4128, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_8 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
      __pyx_t_7 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_1)) {
    PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_t_6, __pyx_v_shape};
    __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4128, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
    PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_t_6, __pyx_v_shape};
    __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4128, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  } else
  #endif
  {
    __pyx_t_2 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4128, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (__pyx_t_8) {
      __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_8); __pyx_t_8 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_7, __pyx_t_6);
    __Pyx_INCREF(__pyx_v_shape);
    __Pyx_GIVEREF(__pyx_v_shape);
    PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_7, __pyx_v_shape);
    __pyx_t_6 = 0;
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4128, __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_v_rank = __pyx_t_5;
  __pyx_t_5 = 0;
+4129:         hgvs_c = self._malloc_string_array(ANN_HGVS_C_FIELD, shape)
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_malloc_string_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4129, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_HGVS_C_FIELD); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4129, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
      __pyx_t_7 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_1)) {
    PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_2, __pyx_v_shape};
    __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4129, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
    PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_2, __pyx_v_shape};
    __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4129, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  } else
  #endif
  {
    __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4129, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    if (__pyx_t_6) {
      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_t_2);
    __Pyx_INCREF(__pyx_v_shape);
    __Pyx_GIVEREF(__pyx_v_shape);
    PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_v_shape);
    __pyx_t_2 = 0;
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_8, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4129, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_hgvs_c = __pyx_t_5;
  __pyx_t_5 = 0;
+4130:         hgvs_p = self._malloc_string_array(ANN_HGVS_P_FIELD, shape)
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_malloc_string_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_HGVS_P_FIELD); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_2 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
      __pyx_t_7 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_1)) {
    PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_t_8, __pyx_v_shape};
    __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4130, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
    PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_t_8, __pyx_v_shape};
    __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4130, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  } else
  #endif
  {
    __pyx_t_6 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4130, __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_GIVEREF(__pyx_t_8);
    PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_7, __pyx_t_8);
    __Pyx_INCREF(__pyx_v_shape);
    __Pyx_GIVEREF(__pyx_v_shape);
    PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_7, __pyx_v_shape);
    __pyx_t_8 = 0;
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4130, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_hgvs_p = __pyx_t_5;
  __pyx_t_5 = 0;
+4131:         cdna_pos = self._malloc_integer_array(ANN_CDNA_POS_FIELD, shape)
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_malloc_integer_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_CDNA_POS_FIELD); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_8 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
      __pyx_t_7 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_1)) {
    PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_t_6, __pyx_v_shape};
    __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4131, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
    PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_t_6, __pyx_v_shape};
    __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4131, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  } else
  #endif
  {
    __pyx_t_2 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4131, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (__pyx_t_8) {
      __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_8); __pyx_t_8 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_7, __pyx_t_6);
    __Pyx_INCREF(__pyx_v_shape);
    __Pyx_GIVEREF(__pyx_v_shape);
    PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_7, __pyx_v_shape);
    __pyx_t_6 = 0;
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4131, __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_v_cdna_pos = __pyx_t_5;
  __pyx_t_5 = 0;
+4132:         cdna_length = self._malloc_integer_array(ANN_CDNA_LENGTH_FIELD, shape)
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_malloc_integer_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_CDNA_LENGTH_FIELD); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
      __pyx_t_7 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_1)) {
    PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_2, __pyx_v_shape};
    __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4132, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
    PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_2, __pyx_v_shape};
    __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4132, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  } else
  #endif
  {
    __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4132, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    if (__pyx_t_6) {
      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_t_2);
    __Pyx_INCREF(__pyx_v_shape);
    __Pyx_GIVEREF(__pyx_v_shape);
    PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_v_shape);
    __pyx_t_2 = 0;
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_8, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4132, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_cdna_length = __pyx_t_5;
  __pyx_t_5 = 0;
+4133:         cds_pos = self._malloc_integer_array(ANN_CDS_POS_FIELD, shape)
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_malloc_integer_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_CDS_POS_FIELD); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_2 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
      __pyx_t_7 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_1)) {
    PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_t_8, __pyx_v_shape};
    __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4133, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
    PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_t_8, __pyx_v_shape};
    __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4133, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  } else
  #endif
  {
    __pyx_t_6 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4133, __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_GIVEREF(__pyx_t_8);
    PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_7, __pyx_t_8);
    __Pyx_INCREF(__pyx_v_shape);
    __Pyx_GIVEREF(__pyx_v_shape);
    PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_7, __pyx_v_shape);
    __pyx_t_8 = 0;
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4133, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_cds_pos = __pyx_t_5;
  __pyx_t_5 = 0;
+4134:         cds_length = self._malloc_integer_array(ANN_CDS_LENGTH_FIELD, shape)
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_malloc_integer_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4134, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_CDS_LENGTH_FIELD); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4134, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_8 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
      __pyx_t_7 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_1)) {
    PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_t_6, __pyx_v_shape};
    __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4134, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
    PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_t_6, __pyx_v_shape};
    __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4134, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  } else
  #endif
  {
    __pyx_t_2 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4134, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (__pyx_t_8) {
      __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_8); __pyx_t_8 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_7, __pyx_t_6);
    __Pyx_INCREF(__pyx_v_shape);
    __Pyx_GIVEREF(__pyx_v_shape);
    PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_7, __pyx_v_shape);
    __pyx_t_6 = 0;
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4134, __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_v_cds_length = __pyx_t_5;
  __pyx_t_5 = 0;
+4135:         aa_pos = self._malloc_integer_array(ANN_AA_POS_FIELD, shape)
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_malloc_integer_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_AA_POS_FIELD); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
      __pyx_t_7 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_1)) {
    PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_2, __pyx_v_shape};
    __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4135, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
    PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_2, __pyx_v_shape};
    __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4135, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  } else
  #endif
  {
    __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4135, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    if (__pyx_t_6) {
      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_t_2);
    __Pyx_INCREF(__pyx_v_shape);
    __Pyx_GIVEREF(__pyx_v_shape);
    PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_v_shape);
    __pyx_t_2 = 0;
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_8, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4135, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_aa_pos = __pyx_t_5;
  __pyx_t_5 = 0;
+4136:         aa_length = self._malloc_integer_array(ANN_AA_LENGTH_FIELD, shape)
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_malloc_integer_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4136, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_AA_LENGTH_FIELD); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4136, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_2 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
      __pyx_t_7 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_1)) {
    PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_t_8, __pyx_v_shape};
    __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4136, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
    PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_t_8, __pyx_v_shape};
    __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4136, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  } else
  #endif
  {
    __pyx_t_6 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4136, __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_GIVEREF(__pyx_t_8);
    PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_7, __pyx_t_8);
    __Pyx_INCREF(__pyx_v_shape);
    __Pyx_GIVEREF(__pyx_v_shape);
    PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_7, __pyx_v_shape);
    __pyx_t_8 = 0;
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4136, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_aa_length = __pyx_t_5;
  __pyx_t_5 = 0;
+4137:         distance = self._malloc_integer_array(ANN_DISTANCE_FIELD, shape)
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_malloc_integer_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_DISTANCE_FIELD); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_8 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
      __pyx_t_7 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_1)) {
    PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_t_6, __pyx_v_shape};
    __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4137, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
    PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_t_6, __pyx_v_shape};
    __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4137, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  } else
  #endif
  {
    __pyx_t_2 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4137, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (__pyx_t_8) {
      __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_8); __pyx_t_8 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_7, __pyx_t_6);
    __Pyx_INCREF(__pyx_v_shape);
    __Pyx_GIVEREF(__pyx_v_shape);
    PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_7, __pyx_v_shape);
    __pyx_t_6 = 0;
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4137, __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_v_distance = __pyx_t_5;
  __pyx_t_5 = 0;
 4138: 
 4139:         # start working
+4140:         for i in range(chunk_length):
  __pyx_t_4 = __pyx_v_chunk_length;
  for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_4; __pyx_t_9+=1) {
    __pyx_v_i = __pyx_t_9;
+4141:             for j in range(number):
    __pyx_t_10 = __pyx_v_number;
    for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_10; __pyx_t_11+=1) {
      __pyx_v_j = __pyx_t_11;
 4142: 
 4143:                 # obtain raw string value
+4144:                 raw = ann[i, j]
      __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_i); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4144, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_j); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4144, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4144, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_1);
      PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
      __pyx_t_5 = 0;
      __pyx_t_1 = 0;
      __pyx_t_1 = PyObject_GetItem(__pyx_v_ann, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4144, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF_SET(__pyx_v_raw, __pyx_t_1);
      __pyx_t_1 = 0;
+4145:                 if not PY2 and isinstance(raw, bytes):
      __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_PY2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4145, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(0, 4145, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_13 = ((!__pyx_t_12) != 0);
      if (__pyx_t_13) {
      } else {
        __pyx_t_3 = __pyx_t_13;
        goto __pyx_L10_bool_binop_done;
      }
      __pyx_t_13 = PyBytes_Check(__pyx_v_raw); 
      __pyx_t_12 = (__pyx_t_13 != 0);
      __pyx_t_3 = __pyx_t_12;
      __pyx_L10_bool_binop_done:;
      if (__pyx_t_3) {
/* … */
      }
+4146:                     raw = str(raw, 'utf8')
        __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4146, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_INCREF(__pyx_v_raw);
        __Pyx_GIVEREF(__pyx_v_raw);
        PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_raw);
        __Pyx_INCREF(__pyx_n_s_utf8);
        __Pyx_GIVEREF(__pyx_n_s_utf8);
        PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_n_s_utf8);
        __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4146, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF_SET(__pyx_v_raw, __pyx_t_2);
        __pyx_t_2 = 0;
 4147: 
 4148:                 # bail early if no content
+4149:                 if raw == '' or raw == '.':
      __pyx_t_12 = (__Pyx_PyString_Equals(__pyx_v_raw, __pyx_kp_s__8, Py_EQ)); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(0, 4149, __pyx_L1_error)
      if (!__pyx_t_12) {
      } else {
        __pyx_t_3 = __pyx_t_12;
        goto __pyx_L13_bool_binop_done;
      }
      __pyx_t_12 = (__Pyx_PyString_Equals(__pyx_v_raw, __pyx_kp_s__33, Py_EQ)); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(0, 4149, __pyx_L1_error)
      __pyx_t_3 = __pyx_t_12;
      __pyx_L13_bool_binop_done:;
      if (__pyx_t_3) {
/* … */
      }
+4150:                     continue
        goto __pyx_L7_continue;
 4151: 
 4152:                 # split fields
+4153:                 vals = raw.split('|')
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_raw, __pyx_n_s_split); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4153, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__114, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4153, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (!(likely(PyList_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "list", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(0, 4153, __pyx_L1_error)
      __Pyx_XDECREF_SET(__pyx_v_vals, ((PyObject*)__pyx_t_1));
      __pyx_t_1 = 0;
/* … */
  __pyx_tuple__114 = PyTuple_Pack(1, __pyx_kp_s__113); if (unlikely(!__pyx_tuple__114)) __PYX_ERR(0, 4153, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__114);
  __Pyx_GIVEREF(__pyx_tuple__114);
+4154:                 n_vals = len(vals)
      if (unlikely(__pyx_v_vals == Py_None)) {
        PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
        __PYX_ERR(0, 4154, __pyx_L1_error)
      }
      __pyx_t_14 = PyList_GET_SIZE(__pyx_v_vals); if (unlikely(__pyx_t_14 == ((Py_ssize_t)-1))) __PYX_ERR(0, 4154, __pyx_L1_error)
      __pyx_v_n_vals = __pyx_t_14;
 4155: 
 4156:                 # convert and store values
+4157:                 if allele is not None and n_vals > ANNFidx.ALLELE:
      __pyx_t_12 = (__pyx_v_allele != Py_None);
      __pyx_t_13 = (__pyx_t_12 != 0);
      if (__pyx_t_13) {
      } else {
        __pyx_t_3 = __pyx_t_13;
        goto __pyx_L16_bool_binop_done;
      }
      __pyx_t_13 = ((__pyx_v_n_vals > __pyx_e_5allel_3opt_11io_vcf_read_ALLELE) != 0);
      __pyx_t_3 = __pyx_t_13;
      __pyx_L16_bool_binop_done:;
      if (__pyx_t_3) {
/* … */
      }
+4158:                     allele[i, j] = vals[ANNFidx.ALLELE]
        if (unlikely(__pyx_v_vals == Py_None)) {
          PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
          __PYX_ERR(0, 4158, __pyx_L1_error)
        }
        __pyx_t_1 = __Pyx_PyInt_From_enum____pyx_t_5allel_3opt_11io_vcf_read_ANNFidx(__pyx_e_5allel_3opt_11io_vcf_read_ALLELE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4158, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_2 = PyObject_GetItem(__pyx_v_vals, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4158, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_i); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4158, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_j); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4158, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4158, __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;
        if (unlikely(PyObject_SetItem(__pyx_v_allele, __pyx_t_6, __pyx_t_2) < 0)) __PYX_ERR(0, 4158, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+4159:                 if annotation is not None and n_vals > ANNFidx.ANNOTATION:
      __pyx_t_13 = (__pyx_v_annotation != Py_None);
      __pyx_t_12 = (__pyx_t_13 != 0);
      if (__pyx_t_12) {
      } else {
        __pyx_t_3 = __pyx_t_12;
        goto __pyx_L19_bool_binop_done;
      }
      __pyx_t_12 = ((__pyx_v_n_vals > __pyx_e_5allel_3opt_11io_vcf_read_ANNOTATION) != 0);
      __pyx_t_3 = __pyx_t_12;
      __pyx_L19_bool_binop_done:;
      if (__pyx_t_3) {
/* … */
      }
+4160:                     annotation[i, j] = vals[ANNFidx.ANNOTATION]
        if (unlikely(__pyx_v_vals == Py_None)) {
          PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
          __PYX_ERR(0, 4160, __pyx_L1_error)
        }
        __pyx_t_2 = __Pyx_PyInt_From_enum____pyx_t_5allel_3opt_11io_vcf_read_ANNFidx(__pyx_e_5allel_3opt_11io_vcf_read_ANNOTATION); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4160, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_6 = PyObject_GetItem(__pyx_v_vals, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4160, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_i); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4160, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_j); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4160, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4160, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_GIVEREF(__pyx_t_2);
        PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
        __Pyx_GIVEREF(__pyx_t_5);
        PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_5);
        __pyx_t_2 = 0;
        __pyx_t_5 = 0;
        if (unlikely(PyObject_SetItem(__pyx_v_annotation, __pyx_t_1, __pyx_t_6) < 0)) __PYX_ERR(0, 4160, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+4161:                 if annotation_impact is not None and n_vals > ANNFidx.ANNOTATION_IMPACT:
      __pyx_t_12 = (__pyx_v_annotation_impact != Py_None);
      __pyx_t_13 = (__pyx_t_12 != 0);
      if (__pyx_t_13) {
      } else {
        __pyx_t_3 = __pyx_t_13;
        goto __pyx_L22_bool_binop_done;
      }
      __pyx_t_13 = ((__pyx_v_n_vals > __pyx_e_5allel_3opt_11io_vcf_read_ANNOTATION_IMPACT) != 0);
      __pyx_t_3 = __pyx_t_13;
      __pyx_L22_bool_binop_done:;
      if (__pyx_t_3) {
/* … */
      }
+4162:                     annotation_impact[i, j] = vals[ANNFidx.ANNOTATION_IMPACT]
        if (unlikely(__pyx_v_vals == Py_None)) {
          PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
          __PYX_ERR(0, 4162, __pyx_L1_error)
        }
        __pyx_t_6 = __Pyx_PyInt_From_enum____pyx_t_5allel_3opt_11io_vcf_read_ANNFidx(__pyx_e_5allel_3opt_11io_vcf_read_ANNOTATION_IMPACT); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4162, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_1 = PyObject_GetItem(__pyx_v_vals, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4162, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_i); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4162, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_j); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4162, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4162, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_5);
        PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_5);
        __pyx_t_6 = 0;
        __pyx_t_5 = 0;
        if (unlikely(PyObject_SetItem(__pyx_v_annotation_impact, __pyx_t_2, __pyx_t_1) < 0)) __PYX_ERR(0, 4162, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+4163:                 if gene_name is not None and n_vals > ANNFidx.GENE_NAME:
      __pyx_t_13 = (__pyx_v_gene_name != Py_None);
      __pyx_t_12 = (__pyx_t_13 != 0);
      if (__pyx_t_12) {
      } else {
        __pyx_t_3 = __pyx_t_12;
        goto __pyx_L25_bool_binop_done;
      }
      __pyx_t_12 = ((__pyx_v_n_vals > __pyx_e_5allel_3opt_11io_vcf_read_GENE_NAME) != 0);
      __pyx_t_3 = __pyx_t_12;
      __pyx_L25_bool_binop_done:;
      if (__pyx_t_3) {
/* … */
      }
+4164:                     gene_name[i, j] = vals[ANNFidx.GENE_NAME]
        if (unlikely(__pyx_v_vals == Py_None)) {
          PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
          __PYX_ERR(0, 4164, __pyx_L1_error)
        }
        __pyx_t_1 = __Pyx_PyInt_From_enum____pyx_t_5allel_3opt_11io_vcf_read_ANNFidx(__pyx_e_5allel_3opt_11io_vcf_read_GENE_NAME); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4164, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_2 = PyObject_GetItem(__pyx_v_vals, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4164, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_i); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4164, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_j); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4164, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4164, __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;
        if (unlikely(PyObject_SetItem(__pyx_v_gene_name, __pyx_t_6, __pyx_t_2) < 0)) __PYX_ERR(0, 4164, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+4165:                 if gene_id is not None and n_vals > ANNFidx.GENE_ID:
      __pyx_t_12 = (__pyx_v_gene_id != Py_None);
      __pyx_t_13 = (__pyx_t_12 != 0);
      if (__pyx_t_13) {
      } else {
        __pyx_t_3 = __pyx_t_13;
        goto __pyx_L28_bool_binop_done;
      }
      __pyx_t_13 = ((__pyx_v_n_vals > __pyx_e_5allel_3opt_11io_vcf_read_GENE_ID) != 0);
      __pyx_t_3 = __pyx_t_13;
      __pyx_L28_bool_binop_done:;
      if (__pyx_t_3) {
/* … */
      }
+4166:                     gene_id[i, j] = vals[ANNFidx.GENE_ID]
        if (unlikely(__pyx_v_vals == Py_None)) {
          PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
          __PYX_ERR(0, 4166, __pyx_L1_error)
        }
        __pyx_t_2 = __Pyx_PyInt_From_enum____pyx_t_5allel_3opt_11io_vcf_read_ANNFidx(__pyx_e_5allel_3opt_11io_vcf_read_GENE_ID); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4166, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_6 = PyObject_GetItem(__pyx_v_vals, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4166, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_i); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4166, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_j); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4166, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4166, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_GIVEREF(__pyx_t_2);
        PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
        __Pyx_GIVEREF(__pyx_t_5);
        PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_5);
        __pyx_t_2 = 0;
        __pyx_t_5 = 0;
        if (unlikely(PyObject_SetItem(__pyx_v_gene_id, __pyx_t_1, __pyx_t_6) < 0)) __PYX_ERR(0, 4166, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+4167:                 if feature_type is not None and n_vals > ANNFidx.FEATURE_TYPE:
      __pyx_t_13 = (__pyx_v_feature_type != Py_None);
      __pyx_t_12 = (__pyx_t_13 != 0);
      if (__pyx_t_12) {
      } else {
        __pyx_t_3 = __pyx_t_12;
        goto __pyx_L31_bool_binop_done;
      }
      __pyx_t_12 = ((__pyx_v_n_vals > __pyx_e_5allel_3opt_11io_vcf_read_FEATURE_TYPE) != 0);
      __pyx_t_3 = __pyx_t_12;
      __pyx_L31_bool_binop_done:;
      if (__pyx_t_3) {
/* … */
      }
+4168:                     feature_type[i, j] = vals[ANNFidx.FEATURE_TYPE]
        if (unlikely(__pyx_v_vals == Py_None)) {
          PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
          __PYX_ERR(0, 4168, __pyx_L1_error)
        }
        __pyx_t_6 = __Pyx_PyInt_From_enum____pyx_t_5allel_3opt_11io_vcf_read_ANNFidx(__pyx_e_5allel_3opt_11io_vcf_read_FEATURE_TYPE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4168, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_1 = PyObject_GetItem(__pyx_v_vals, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4168, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_i); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4168, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_j); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4168, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4168, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_5);
        PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_5);
        __pyx_t_6 = 0;
        __pyx_t_5 = 0;
        if (unlikely(PyObject_SetItem(__pyx_v_feature_type, __pyx_t_2, __pyx_t_1) < 0)) __PYX_ERR(0, 4168, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+4169:                 if feature_id is not None and n_vals > ANNFidx.FEATURE_ID:
      __pyx_t_12 = (__pyx_v_feature_id != Py_None);
      __pyx_t_13 = (__pyx_t_12 != 0);
      if (__pyx_t_13) {
      } else {
        __pyx_t_3 = __pyx_t_13;
        goto __pyx_L34_bool_binop_done;
      }
      __pyx_t_13 = ((__pyx_v_n_vals > __pyx_e_5allel_3opt_11io_vcf_read_FEATURE_ID) != 0);
      __pyx_t_3 = __pyx_t_13;
      __pyx_L34_bool_binop_done:;
      if (__pyx_t_3) {
/* … */
      }
+4170:                     feature_id[i, j] = vals[ANNFidx.FEATURE_ID]
        if (unlikely(__pyx_v_vals == Py_None)) {
          PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
          __PYX_ERR(0, 4170, __pyx_L1_error)
        }
        __pyx_t_1 = __Pyx_PyInt_From_enum____pyx_t_5allel_3opt_11io_vcf_read_ANNFidx(__pyx_e_5allel_3opt_11io_vcf_read_FEATURE_ID); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4170, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_2 = PyObject_GetItem(__pyx_v_vals, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4170, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_i); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4170, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_j); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4170, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4170, __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;
        if (unlikely(PyObject_SetItem(__pyx_v_feature_id, __pyx_t_6, __pyx_t_2) < 0)) __PYX_ERR(0, 4170, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+4171:                 if transcript_biotype is not None and n_vals > ANNFidx.TRANSCRIPT_BIOTYPE:
      __pyx_t_13 = (__pyx_v_transcript_biotype != Py_None);
      __pyx_t_12 = (__pyx_t_13 != 0);
      if (__pyx_t_12) {
      } else {
        __pyx_t_3 = __pyx_t_12;
        goto __pyx_L37_bool_binop_done;
      }
      __pyx_t_12 = ((__pyx_v_n_vals > __pyx_e_5allel_3opt_11io_vcf_read_TRANSCRIPT_BIOTYPE) != 0);
      __pyx_t_3 = __pyx_t_12;
      __pyx_L37_bool_binop_done:;
      if (__pyx_t_3) {
/* … */
      }
+4172:                     transcript_biotype[i, j] = vals[ANNFidx.TRANSCRIPT_BIOTYPE]
        if (unlikely(__pyx_v_vals == Py_None)) {
          PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
          __PYX_ERR(0, 4172, __pyx_L1_error)
        }
        __pyx_t_2 = __Pyx_PyInt_From_enum____pyx_t_5allel_3opt_11io_vcf_read_ANNFidx(__pyx_e_5allel_3opt_11io_vcf_read_TRANSCRIPT_BIOTYPE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4172, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_6 = PyObject_GetItem(__pyx_v_vals, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4172, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_i); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4172, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_j); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4172, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4172, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_GIVEREF(__pyx_t_2);
        PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
        __Pyx_GIVEREF(__pyx_t_5);
        PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_5);
        __pyx_t_2 = 0;
        __pyx_t_5 = 0;
        if (unlikely(PyObject_SetItem(__pyx_v_transcript_biotype, __pyx_t_1, __pyx_t_6) < 0)) __PYX_ERR(0, 4172, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+4173:                 if rank is not None and n_vals > ANNFidx.RANK:
      __pyx_t_12 = (__pyx_v_rank != Py_None);
      __pyx_t_13 = (__pyx_t_12 != 0);
      if (__pyx_t_13) {
      } else {
        __pyx_t_3 = __pyx_t_13;
        goto __pyx_L40_bool_binop_done;
      }
      __pyx_t_13 = ((__pyx_v_n_vals > __pyx_e_5allel_3opt_11io_vcf_read_RANK) != 0);
      __pyx_t_3 = __pyx_t_13;
      __pyx_L40_bool_binop_done:;
      if (__pyx_t_3) {
/* … */
      }
+4174:                     v = vals[ANNFidx.RANK]
        if (unlikely(__pyx_v_vals == Py_None)) {
          PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
          __PYX_ERR(0, 4174, __pyx_L1_error)
        }
        __pyx_t_6 = __Pyx_PyInt_From_enum____pyx_t_5allel_3opt_11io_vcf_read_ANNFidx(__pyx_e_5allel_3opt_11io_vcf_read_RANK); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4174, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_1 = PyObject_GetItem(__pyx_v_vals, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4174, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF_SET(__pyx_v_v, __pyx_t_1);
        __pyx_t_1 = 0;
+4175:                     if v:
        __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_v); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 4175, __pyx_L1_error)
        if (__pyx_t_3) {
/* … */
        }
+4176:                         vv = v.split('/')
          __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_v, __pyx_n_s_split); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4176, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__115, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4176, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (!(likely(PyList_CheckExact(__pyx_t_6))||((__pyx_t_6) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "list", Py_TYPE(__pyx_t_6)->tp_name), 0))) __PYX_ERR(0, 4176, __pyx_L1_error)
          __Pyx_XDECREF_SET(__pyx_v_vv, ((PyObject*)__pyx_t_6));
          __pyx_t_6 = 0;
/* … */
  __pyx_tuple__115 = PyTuple_Pack(1, __pyx_kp_s__3); if (unlikely(!__pyx_tuple__115)) __PYX_ERR(0, 4176, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__115);
  __Pyx_GIVEREF(__pyx_tuple__115);
 4177:                         # ignore second part of rank
+4178:                         rank[i, j] = int(vv[0])
          if (unlikely(__pyx_v_vv == Py_None)) {
            PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
            __PYX_ERR(0, 4178, __pyx_L1_error)
          }
          __pyx_t_6 = __Pyx_PyNumber_Int(PyList_GET_ITEM(__pyx_v_vv, 0)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4178, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_i); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4178, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_j); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4178, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4178, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_GIVEREF(__pyx_t_1);
          PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
          __Pyx_GIVEREF(__pyx_t_5);
          PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_5);
          __pyx_t_1 = 0;
          __pyx_t_5 = 0;
          if (unlikely(PyObject_SetItem(__pyx_v_rank, __pyx_t_2, __pyx_t_6) < 0)) __PYX_ERR(0, 4178, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+4179:                 if hgvs_c is not None and n_vals > ANNFidx.HGVS_C:
      __pyx_t_13 = (__pyx_v_hgvs_c != Py_None);
      __pyx_t_12 = (__pyx_t_13 != 0);
      if (__pyx_t_12) {
      } else {
        __pyx_t_3 = __pyx_t_12;
        goto __pyx_L44_bool_binop_done;
      }
      __pyx_t_12 = ((__pyx_v_n_vals > __pyx_e_5allel_3opt_11io_vcf_read_HGVS_C) != 0);
      __pyx_t_3 = __pyx_t_12;
      __pyx_L44_bool_binop_done:;
      if (__pyx_t_3) {
/* … */
      }
 4180:                     # strip of leading 'n.' as redundant information
+4181:                     hgvs_c[i, j] = vals[ANNFidx.HGVS_C][2:]
        if (unlikely(__pyx_v_vals == Py_None)) {
          PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
          __PYX_ERR(0, 4181, __pyx_L1_error)
        }
        __pyx_t_6 = __Pyx_PyInt_From_enum____pyx_t_5allel_3opt_11io_vcf_read_ANNFidx(__pyx_e_5allel_3opt_11io_vcf_read_HGVS_C); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4181, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_2 = PyObject_GetItem(__pyx_v_vals, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4181, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = __Pyx_PyObject_GetSlice(__pyx_t_2, 2, 0, NULL, NULL, &__pyx_slice__116, 1, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4181, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_i); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4181, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_j); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4181, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4181, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_GIVEREF(__pyx_t_2);
        PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
        __Pyx_GIVEREF(__pyx_t_5);
        PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_5);
        __pyx_t_2 = 0;
        __pyx_t_5 = 0;
        if (unlikely(PyObject_SetItem(__pyx_v_hgvs_c, __pyx_t_1, __pyx_t_6) < 0)) __PYX_ERR(0, 4181, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
/* … */
  __pyx_slice__116 = PySlice_New(__pyx_int_2, Py_None, Py_None); if (unlikely(!__pyx_slice__116)) __PYX_ERR(0, 4181, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__116);
  __Pyx_GIVEREF(__pyx_slice__116);
+4182:                 if hgvs_p is not None and n_vals > ANNFidx.HGVS_P:
      __pyx_t_12 = (__pyx_v_hgvs_p != Py_None);
      __pyx_t_13 = (__pyx_t_12 != 0);
      if (__pyx_t_13) {
      } else {
        __pyx_t_3 = __pyx_t_13;
        goto __pyx_L47_bool_binop_done;
      }
      __pyx_t_13 = ((__pyx_v_n_vals > __pyx_e_5allel_3opt_11io_vcf_read_HGVS_P) != 0);
      __pyx_t_3 = __pyx_t_13;
      __pyx_L47_bool_binop_done:;
      if (__pyx_t_3) {
/* … */
      }
 4183:                     # strip of leading 'p.' as redundant information
+4184:                     hgvs_p[i, j] = vals[ANNFidx.HGVS_P][2:]
        if (unlikely(__pyx_v_vals == Py_None)) {
          PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
          __PYX_ERR(0, 4184, __pyx_L1_error)
        }
        __pyx_t_6 = __Pyx_PyInt_From_enum____pyx_t_5allel_3opt_11io_vcf_read_ANNFidx(__pyx_e_5allel_3opt_11io_vcf_read_HGVS_P); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4184, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_1 = PyObject_GetItem(__pyx_v_vals, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4184, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = __Pyx_PyObject_GetSlice(__pyx_t_1, 2, 0, NULL, NULL, &__pyx_slice__117, 1, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4184, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_i); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4184, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_j); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4184, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4184, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_GIVEREF(__pyx_t_1);
        PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
        __Pyx_GIVEREF(__pyx_t_5);
        PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_5);
        __pyx_t_1 = 0;
        __pyx_t_5 = 0;
        if (unlikely(PyObject_SetItem(__pyx_v_hgvs_p, __pyx_t_2, __pyx_t_6) < 0)) __PYX_ERR(0, 4184, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
/* … */
  __pyx_slice__117 = PySlice_New(__pyx_int_2, Py_None, Py_None); if (unlikely(!__pyx_slice__117)) __PYX_ERR(0, 4184, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__117);
  __Pyx_GIVEREF(__pyx_slice__117);
+4185:                 if cdna_pos is not None or cdna_length is not None and n_vals > ANNFidx.CDNA:
      __pyx_t_13 = (__pyx_v_cdna_pos != Py_None);
      __pyx_t_12 = (__pyx_t_13 != 0);
      if (!__pyx_t_12) {
      } else {
        __pyx_t_3 = __pyx_t_12;
        goto __pyx_L50_bool_binop_done;
      }
      __pyx_t_12 = (__pyx_v_cdna_length != Py_None);
      __pyx_t_13 = (__pyx_t_12 != 0);
      if (__pyx_t_13) {
      } else {
        __pyx_t_3 = __pyx_t_13;
        goto __pyx_L50_bool_binop_done;
      }
      __pyx_t_13 = ((__pyx_v_n_vals > __pyx_e_5allel_3opt_11io_vcf_read_CDNA) != 0);
      __pyx_t_3 = __pyx_t_13;
      __pyx_L50_bool_binop_done:;
      if (__pyx_t_3) {
/* … */
      }
+4186:                     v = vals[ANNFidx.CDNA]
        if (unlikely(__pyx_v_vals == Py_None)) {
          PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
          __PYX_ERR(0, 4186, __pyx_L1_error)
        }
        __pyx_t_6 = __Pyx_PyInt_From_enum____pyx_t_5allel_3opt_11io_vcf_read_ANNFidx(__pyx_e_5allel_3opt_11io_vcf_read_CDNA); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4186, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_2 = PyObject_GetItem(__pyx_v_vals, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4186, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF_SET(__pyx_v_v, __pyx_t_2);
        __pyx_t_2 = 0;
+4187:                     if v:
        __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_v); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 4187, __pyx_L1_error)
        if (__pyx_t_3) {
/* … */
        }
+4188:                         vv = v.split('/')
          __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_v, __pyx_n_s_split); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4188, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_2);
          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__118, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4188, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          if (!(likely(PyList_CheckExact(__pyx_t_6))||((__pyx_t_6) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "list", Py_TYPE(__pyx_t_6)->tp_name), 0))) __PYX_ERR(0, 4188, __pyx_L1_error)
          __Pyx_XDECREF_SET(__pyx_v_vv, ((PyObject*)__pyx_t_6));
          __pyx_t_6 = 0;
/* … */
  __pyx_tuple__118 = PyTuple_Pack(1, __pyx_kp_s__3); if (unlikely(!__pyx_tuple__118)) __PYX_ERR(0, 4188, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__118);
  __Pyx_GIVEREF(__pyx_tuple__118);
+4189:                         if cdna_pos is not None:
          __pyx_t_3 = (__pyx_v_cdna_pos != Py_None);
          __pyx_t_13 = (__pyx_t_3 != 0);
          if (__pyx_t_13) {
/* … */
          }
+4190:                             cdna_pos[i, j] = int(vv[0])
            if (unlikely(__pyx_v_vv == Py_None)) {
              PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
              __PYX_ERR(0, 4190, __pyx_L1_error)
            }
            __pyx_t_6 = __Pyx_PyNumber_Int(PyList_GET_ITEM(__pyx_v_vv, 0)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4190, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_i); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4190, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_2);
            __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_j); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4190, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4190, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_GIVEREF(__pyx_t_2);
            PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
            __Pyx_GIVEREF(__pyx_t_5);
            PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_5);
            __pyx_t_2 = 0;
            __pyx_t_5 = 0;
            if (unlikely(PyObject_SetItem(__pyx_v_cdna_pos, __pyx_t_1, __pyx_t_6) < 0)) __PYX_ERR(0, 4190, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+4191:                         if cdna_length is not None and len(vv) > 1:
          __pyx_t_3 = (__pyx_v_cdna_length != Py_None);
          __pyx_t_12 = (__pyx_t_3 != 0);
          if (__pyx_t_12) {
          } else {
            __pyx_t_13 = __pyx_t_12;
            goto __pyx_L56_bool_binop_done;
          }
          if (unlikely(__pyx_v_vv == Py_None)) {
            PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
            __PYX_ERR(0, 4191, __pyx_L1_error)
          }
          __pyx_t_14 = PyList_GET_SIZE(__pyx_v_vv); if (unlikely(__pyx_t_14 == ((Py_ssize_t)-1))) __PYX_ERR(0, 4191, __pyx_L1_error)
          __pyx_t_12 = ((__pyx_t_14 > 1) != 0);
          __pyx_t_13 = __pyx_t_12;
          __pyx_L56_bool_binop_done:;
          if (__pyx_t_13) {
/* … */
          }
+4192:                             cdna_length[i, j] = int(vv[1])
            if (unlikely(__pyx_v_vv == Py_None)) {
              PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
              __PYX_ERR(0, 4192, __pyx_L1_error)
            }
            __pyx_t_6 = __Pyx_PyNumber_Int(PyList_GET_ITEM(__pyx_v_vv, 1)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4192, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_i); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4192, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_j); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4192, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4192, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_2);
            __Pyx_GIVEREF(__pyx_t_1);
            PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
            __Pyx_GIVEREF(__pyx_t_5);
            PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_5);
            __pyx_t_1 = 0;
            __pyx_t_5 = 0;
            if (unlikely(PyObject_SetItem(__pyx_v_cdna_length, __pyx_t_2, __pyx_t_6) < 0)) __PYX_ERR(0, 4192, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+4193:                 if cds_pos is not None or cds_length is not None and n_vals > ANNFidx.CDS:
      __pyx_t_12 = (__pyx_v_cds_pos != Py_None);
      __pyx_t_3 = (__pyx_t_12 != 0);
      if (!__pyx_t_3) {
      } else {
        __pyx_t_13 = __pyx_t_3;
        goto __pyx_L59_bool_binop_done;
      }
      __pyx_t_3 = (__pyx_v_cds_length != Py_None);
      __pyx_t_12 = (__pyx_t_3 != 0);
      if (__pyx_t_12) {
      } else {
        __pyx_t_13 = __pyx_t_12;
        goto __pyx_L59_bool_binop_done;
      }
      __pyx_t_12 = ((__pyx_v_n_vals > __pyx_e_5allel_3opt_11io_vcf_read_CDS) != 0);
      __pyx_t_13 = __pyx_t_12;
      __pyx_L59_bool_binop_done:;
      if (__pyx_t_13) {
/* … */
      }
+4194:                     v = vals[ANNFidx.CDS]
        if (unlikely(__pyx_v_vals == Py_None)) {
          PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
          __PYX_ERR(0, 4194, __pyx_L1_error)
        }
        __pyx_t_6 = __Pyx_PyInt_From_enum____pyx_t_5allel_3opt_11io_vcf_read_ANNFidx(__pyx_e_5allel_3opt_11io_vcf_read_CDS); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4194, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_2 = PyObject_GetItem(__pyx_v_vals, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4194, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF_SET(__pyx_v_v, __pyx_t_2);
        __pyx_t_2 = 0;
+4195:                     if v:
        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_v_v); if (unlikely(__pyx_t_13 < 0)) __PYX_ERR(0, 4195, __pyx_L1_error)
        if (__pyx_t_13) {
/* … */
        }
+4196:                         vv = v.split('/')
          __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_v, __pyx_n_s_split); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4196, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_2);
          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__119, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4196, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          if (!(likely(PyList_CheckExact(__pyx_t_6))||((__pyx_t_6) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "list", Py_TYPE(__pyx_t_6)->tp_name), 0))) __PYX_ERR(0, 4196, __pyx_L1_error)
          __Pyx_XDECREF_SET(__pyx_v_vv, ((PyObject*)__pyx_t_6));
          __pyx_t_6 = 0;
/* … */
  __pyx_tuple__119 = PyTuple_Pack(1, __pyx_kp_s__3); if (unlikely(!__pyx_tuple__119)) __PYX_ERR(0, 4196, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__119);
  __Pyx_GIVEREF(__pyx_tuple__119);
+4197:                         if cds_pos is not None:
          __pyx_t_13 = (__pyx_v_cds_pos != Py_None);
          __pyx_t_12 = (__pyx_t_13 != 0);
          if (__pyx_t_12) {
/* … */
          }
+4198:                             cds_pos[i, j] = int(vv[0])
            if (unlikely(__pyx_v_vv == Py_None)) {
              PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
              __PYX_ERR(0, 4198, __pyx_L1_error)
            }
            __pyx_t_6 = __Pyx_PyNumber_Int(PyList_GET_ITEM(__pyx_v_vv, 0)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4198, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_i); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4198, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_2);
            __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_j); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4198, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4198, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_GIVEREF(__pyx_t_2);
            PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
            __Pyx_GIVEREF(__pyx_t_5);
            PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_5);
            __pyx_t_2 = 0;
            __pyx_t_5 = 0;
            if (unlikely(PyObject_SetItem(__pyx_v_cds_pos, __pyx_t_1, __pyx_t_6) < 0)) __PYX_ERR(0, 4198, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+4199:                         if cds_length is not None and len(vv) > 1:
          __pyx_t_13 = (__pyx_v_cds_length != Py_None);
          __pyx_t_3 = (__pyx_t_13 != 0);
          if (__pyx_t_3) {
          } else {
            __pyx_t_12 = __pyx_t_3;
            goto __pyx_L65_bool_binop_done;
          }
          if (unlikely(__pyx_v_vv == Py_None)) {
            PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
            __PYX_ERR(0, 4199, __pyx_L1_error)
          }
          __pyx_t_14 = PyList_GET_SIZE(__pyx_v_vv); if (unlikely(__pyx_t_14 == ((Py_ssize_t)-1))) __PYX_ERR(0, 4199, __pyx_L1_error)
          __pyx_t_3 = ((__pyx_t_14 > 1) != 0);
          __pyx_t_12 = __pyx_t_3;
          __pyx_L65_bool_binop_done:;
          if (__pyx_t_12) {
/* … */
          }
+4200:                             cds_length[i, j] = int(vv[1])
            if (unlikely(__pyx_v_vv == Py_None)) {
              PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
              __PYX_ERR(0, 4200, __pyx_L1_error)
            }
            __pyx_t_6 = __Pyx_PyNumber_Int(PyList_GET_ITEM(__pyx_v_vv, 1)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4200, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_i); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4200, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_j); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4200, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4200, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_2);
            __Pyx_GIVEREF(__pyx_t_1);
            PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
            __Pyx_GIVEREF(__pyx_t_5);
            PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_5);
            __pyx_t_1 = 0;
            __pyx_t_5 = 0;
            if (unlikely(PyObject_SetItem(__pyx_v_cds_length, __pyx_t_2, __pyx_t_6) < 0)) __PYX_ERR(0, 4200, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+4201:                 if aa_pos is not None or aa_length is not None and n_vals > ANNFidx.AA:
      __pyx_t_3 = (__pyx_v_aa_pos != Py_None);
      __pyx_t_13 = (__pyx_t_3 != 0);
      if (!__pyx_t_13) {
      } else {
        __pyx_t_12 = __pyx_t_13;
        goto __pyx_L68_bool_binop_done;
      }
      __pyx_t_13 = (__pyx_v_aa_length != Py_None);
      __pyx_t_3 = (__pyx_t_13 != 0);
      if (__pyx_t_3) {
      } else {
        __pyx_t_12 = __pyx_t_3;
        goto __pyx_L68_bool_binop_done;
      }
      __pyx_t_3 = ((__pyx_v_n_vals > __pyx_e_5allel_3opt_11io_vcf_read_AA) != 0);
      __pyx_t_12 = __pyx_t_3;
      __pyx_L68_bool_binop_done:;
      if (__pyx_t_12) {
/* … */
      }
+4202:                     v = vals[ANNFidx.AA]
        if (unlikely(__pyx_v_vals == Py_None)) {
          PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
          __PYX_ERR(0, 4202, __pyx_L1_error)
        }
        __pyx_t_6 = __Pyx_PyInt_From_enum____pyx_t_5allel_3opt_11io_vcf_read_ANNFidx(__pyx_e_5allel_3opt_11io_vcf_read_AA); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4202, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_2 = PyObject_GetItem(__pyx_v_vals, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4202, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF_SET(__pyx_v_v, __pyx_t_2);
        __pyx_t_2 = 0;
+4203:                     if v:
        __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_v_v); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(0, 4203, __pyx_L1_error)
        if (__pyx_t_12) {
/* … */
        }
+4204:                         vv = v.split('/')
          __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_v, __pyx_n_s_split); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4204, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_2);
          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__120, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4204, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          if (!(likely(PyList_CheckExact(__pyx_t_6))||((__pyx_t_6) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "list", Py_TYPE(__pyx_t_6)->tp_name), 0))) __PYX_ERR(0, 4204, __pyx_L1_error)
          __Pyx_XDECREF_SET(__pyx_v_vv, ((PyObject*)__pyx_t_6));
          __pyx_t_6 = 0;
/* … */
  __pyx_tuple__120 = PyTuple_Pack(1, __pyx_kp_s__3); if (unlikely(!__pyx_tuple__120)) __PYX_ERR(0, 4204, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__120);
  __Pyx_GIVEREF(__pyx_tuple__120);
+4205:                         if aa_pos is not None:
          __pyx_t_12 = (__pyx_v_aa_pos != Py_None);
          __pyx_t_3 = (__pyx_t_12 != 0);
          if (__pyx_t_3) {
/* … */
          }
+4206:                             aa_pos[i, j] = int(vv[0])
            if (unlikely(__pyx_v_vv == Py_None)) {
              PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
              __PYX_ERR(0, 4206, __pyx_L1_error)
            }
            __pyx_t_6 = __Pyx_PyNumber_Int(PyList_GET_ITEM(__pyx_v_vv, 0)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4206, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_i); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4206, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_2);
            __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_j); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4206, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4206, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_GIVEREF(__pyx_t_2);
            PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
            __Pyx_GIVEREF(__pyx_t_5);
            PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_5);
            __pyx_t_2 = 0;
            __pyx_t_5 = 0;
            if (unlikely(PyObject_SetItem(__pyx_v_aa_pos, __pyx_t_1, __pyx_t_6) < 0)) __PYX_ERR(0, 4206, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+4207:                         if aa_length is not None and len(vv) > 1:
          __pyx_t_12 = (__pyx_v_aa_length != Py_None);
          __pyx_t_13 = (__pyx_t_12 != 0);
          if (__pyx_t_13) {
          } else {
            __pyx_t_3 = __pyx_t_13;
            goto __pyx_L74_bool_binop_done;
          }
          if (unlikely(__pyx_v_vv == Py_None)) {
            PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
            __PYX_ERR(0, 4207, __pyx_L1_error)
          }
          __pyx_t_14 = PyList_GET_SIZE(__pyx_v_vv); if (unlikely(__pyx_t_14 == ((Py_ssize_t)-1))) __PYX_ERR(0, 4207, __pyx_L1_error)
          __pyx_t_13 = ((__pyx_t_14 > 1) != 0);
          __pyx_t_3 = __pyx_t_13;
          __pyx_L74_bool_binop_done:;
          if (__pyx_t_3) {
/* … */
          }
+4208:                             aa_length[i, j] = int(vv[1])
            if (unlikely(__pyx_v_vv == Py_None)) {
              PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
              __PYX_ERR(0, 4208, __pyx_L1_error)
            }
            __pyx_t_6 = __Pyx_PyNumber_Int(PyList_GET_ITEM(__pyx_v_vv, 1)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4208, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_6);
            __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_i); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4208, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_j); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4208, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4208, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_2);
            __Pyx_GIVEREF(__pyx_t_1);
            PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
            __Pyx_GIVEREF(__pyx_t_5);
            PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_5);
            __pyx_t_1 = 0;
            __pyx_t_5 = 0;
            if (unlikely(PyObject_SetItem(__pyx_v_aa_length, __pyx_t_2, __pyx_t_6) < 0)) __PYX_ERR(0, 4208, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+4209:                 if distance is not None and n_vals > ANNFidx.DISTANCE:
      __pyx_t_13 = (__pyx_v_distance != Py_None);
      __pyx_t_12 = (__pyx_t_13 != 0);
      if (__pyx_t_12) {
      } else {
        __pyx_t_3 = __pyx_t_12;
        goto __pyx_L77_bool_binop_done;
      }
      __pyx_t_12 = ((__pyx_v_n_vals > __pyx_e_5allel_3opt_11io_vcf_read_DISTANCE) != 0);
      __pyx_t_3 = __pyx_t_12;
      __pyx_L77_bool_binop_done:;
      if (__pyx_t_3) {
/* … */
      }
      __pyx_L7_continue:;
    }
  }
+4210:                     v = vals[ANNFidx.DISTANCE]
        if (unlikely(__pyx_v_vals == Py_None)) {
          PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
          __PYX_ERR(0, 4210, __pyx_L1_error)
        }
        __pyx_t_6 = __Pyx_PyInt_From_enum____pyx_t_5allel_3opt_11io_vcf_read_ANNFidx(__pyx_e_5allel_3opt_11io_vcf_read_DISTANCE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4210, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_2 = PyObject_GetItem(__pyx_v_vals, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4210, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF_SET(__pyx_v_v, __pyx_t_2);
        __pyx_t_2 = 0;
+4211:                     if v:
        __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_v); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 4211, __pyx_L1_error)
        if (__pyx_t_3) {
/* … */
        }
+4212:                         distance[i, j] = int(v)
          __pyx_t_2 = __Pyx_PyNumber_Int(__pyx_v_v); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4212, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_2);
          __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_i); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4212, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_j); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4212, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4212, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_GIVEREF(__pyx_t_6);
          PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6);
          __Pyx_GIVEREF(__pyx_t_5);
          PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_5);
          __pyx_t_6 = 0;
          __pyx_t_5 = 0;
          if (unlikely(PyObject_SetItem(__pyx_v_distance, __pyx_t_1, __pyx_t_2) < 0)) __PYX_ERR(0, 4212, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 4213: 
+4214:         ann_chunk = dict()
  __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4214, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_ann_chunk = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;
+4215:         if allele is not None:
  __pyx_t_3 = (__pyx_v_allele != Py_None);
  __pyx_t_12 = (__pyx_t_3 != 0);
  if (__pyx_t_12) {
/* … */
  }
+4216:             ann_chunk[ANN_ALLELE_FIELD] = allele
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_ALLELE_FIELD); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4216, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (unlikely(PyDict_SetItem(__pyx_v_ann_chunk, __pyx_t_2, __pyx_v_allele) < 0)) __PYX_ERR(0, 4216, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+4217:         if annotation is not None:
  __pyx_t_12 = (__pyx_v_annotation != Py_None);
  __pyx_t_3 = (__pyx_t_12 != 0);
  if (__pyx_t_3) {
/* … */
  }
+4218:             ann_chunk[ANN_ANNOTATION_FIELD] = annotation
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_ANNOTATION_FIELD); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4218, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (unlikely(PyDict_SetItem(__pyx_v_ann_chunk, __pyx_t_2, __pyx_v_annotation) < 0)) __PYX_ERR(0, 4218, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+4219:         if annotation_impact is not None:
  __pyx_t_3 = (__pyx_v_annotation_impact != Py_None);
  __pyx_t_12 = (__pyx_t_3 != 0);
  if (__pyx_t_12) {
/* … */
  }
+4220:             ann_chunk[ANN_ANNOTATION_IMPACT_FIELD] = annotation_impact
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_ANNOTATION_IMPACT_FIELD); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4220, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (unlikely(PyDict_SetItem(__pyx_v_ann_chunk, __pyx_t_2, __pyx_v_annotation_impact) < 0)) __PYX_ERR(0, 4220, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+4221:         if gene_name is not None:
  __pyx_t_12 = (__pyx_v_gene_name != Py_None);
  __pyx_t_3 = (__pyx_t_12 != 0);
  if (__pyx_t_3) {
/* … */
  }
+4222:             ann_chunk[ANN_GENE_NAME_FIELD] = gene_name
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_GENE_NAME_FIELD); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4222, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (unlikely(PyDict_SetItem(__pyx_v_ann_chunk, __pyx_t_2, __pyx_v_gene_name) < 0)) __PYX_ERR(0, 4222, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+4223:         if gene_id is not None:
  __pyx_t_3 = (__pyx_v_gene_id != Py_None);
  __pyx_t_12 = (__pyx_t_3 != 0);
  if (__pyx_t_12) {
/* … */
  }
+4224:             ann_chunk[ANN_GENE_ID_FIELD] = gene_id
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_GENE_ID_FIELD); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4224, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (unlikely(PyDict_SetItem(__pyx_v_ann_chunk, __pyx_t_2, __pyx_v_gene_id) < 0)) __PYX_ERR(0, 4224, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+4225:         if feature_type is not None:
  __pyx_t_12 = (__pyx_v_feature_type != Py_None);
  __pyx_t_3 = (__pyx_t_12 != 0);
  if (__pyx_t_3) {
/* … */
  }
+4226:             ann_chunk[ANN_FEATURE_TYPE_FIELD] = feature_type
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_FEATURE_TYPE_FIELD); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4226, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (unlikely(PyDict_SetItem(__pyx_v_ann_chunk, __pyx_t_2, __pyx_v_feature_type) < 0)) __PYX_ERR(0, 4226, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+4227:         if feature_id is not None:
  __pyx_t_3 = (__pyx_v_feature_id != Py_None);
  __pyx_t_12 = (__pyx_t_3 != 0);
  if (__pyx_t_12) {
/* … */
  }
+4228:             ann_chunk[ANN_FEATURE_ID_FIELD] = feature_id
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_FEATURE_ID_FIELD); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4228, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (unlikely(PyDict_SetItem(__pyx_v_ann_chunk, __pyx_t_2, __pyx_v_feature_id) < 0)) __PYX_ERR(0, 4228, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+4229:         if transcript_biotype is not None:
  __pyx_t_12 = (__pyx_v_transcript_biotype != Py_None);
  __pyx_t_3 = (__pyx_t_12 != 0);
  if (__pyx_t_3) {
/* … */
  }
+4230:             ann_chunk[ANN_TRANSCRIPT_BIOTYPE_FIELD] = transcript_biotype
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_TRANSCRIPT_BIOTYPE_FIELD); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4230, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (unlikely(PyDict_SetItem(__pyx_v_ann_chunk, __pyx_t_2, __pyx_v_transcript_biotype) < 0)) __PYX_ERR(0, 4230, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+4231:         if rank is not None:
  __pyx_t_3 = (__pyx_v_rank != Py_None);
  __pyx_t_12 = (__pyx_t_3 != 0);
  if (__pyx_t_12) {
/* … */
  }
+4232:             ann_chunk[ANN_RANK_FIELD] = rank
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_RANK_FIELD); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4232, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (unlikely(PyDict_SetItem(__pyx_v_ann_chunk, __pyx_t_2, __pyx_v_rank) < 0)) __PYX_ERR(0, 4232, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+4233:         if hgvs_c is not None:
  __pyx_t_12 = (__pyx_v_hgvs_c != Py_None);
  __pyx_t_3 = (__pyx_t_12 != 0);
  if (__pyx_t_3) {
/* … */
  }
+4234:             ann_chunk[ANN_HGVS_C_FIELD] = hgvs_c
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_HGVS_C_FIELD); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4234, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (unlikely(PyDict_SetItem(__pyx_v_ann_chunk, __pyx_t_2, __pyx_v_hgvs_c) < 0)) __PYX_ERR(0, 4234, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+4235:         if hgvs_p is not None:
  __pyx_t_3 = (__pyx_v_hgvs_p != Py_None);
  __pyx_t_12 = (__pyx_t_3 != 0);
  if (__pyx_t_12) {
/* … */
  }
+4236:             ann_chunk[ANN_HGVS_P_FIELD] = hgvs_p
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_HGVS_P_FIELD); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4236, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (unlikely(PyDict_SetItem(__pyx_v_ann_chunk, __pyx_t_2, __pyx_v_hgvs_p) < 0)) __PYX_ERR(0, 4236, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+4237:         if cdna_pos is not None:
  __pyx_t_12 = (__pyx_v_cdna_pos != Py_None);
  __pyx_t_3 = (__pyx_t_12 != 0);
  if (__pyx_t_3) {
/* … */
  }
+4238:             ann_chunk[ANN_CDNA_POS_FIELD] = cdna_pos
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_CDNA_POS_FIELD); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4238, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (unlikely(PyDict_SetItem(__pyx_v_ann_chunk, __pyx_t_2, __pyx_v_cdna_pos) < 0)) __PYX_ERR(0, 4238, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+4239:         if cdna_length is not None:
  __pyx_t_3 = (__pyx_v_cdna_length != Py_None);
  __pyx_t_12 = (__pyx_t_3 != 0);
  if (__pyx_t_12) {
/* … */
  }
+4240:             ann_chunk[ANN_CDNA_LENGTH_FIELD] = cdna_length
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_CDNA_LENGTH_FIELD); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4240, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (unlikely(PyDict_SetItem(__pyx_v_ann_chunk, __pyx_t_2, __pyx_v_cdna_length) < 0)) __PYX_ERR(0, 4240, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+4241:         if cds_pos is not None:
  __pyx_t_12 = (__pyx_v_cds_pos != Py_None);
  __pyx_t_3 = (__pyx_t_12 != 0);
  if (__pyx_t_3) {
/* … */
  }
+4242:             ann_chunk[ANN_CDS_POS_FIELD] = cds_pos
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_CDS_POS_FIELD); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4242, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (unlikely(PyDict_SetItem(__pyx_v_ann_chunk, __pyx_t_2, __pyx_v_cds_pos) < 0)) __PYX_ERR(0, 4242, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+4243:         if cds_length is not None:
  __pyx_t_3 = (__pyx_v_cds_length != Py_None);
  __pyx_t_12 = (__pyx_t_3 != 0);
  if (__pyx_t_12) {
/* … */
  }
+4244:             ann_chunk[ANN_CDS_LENGTH_FIELD] = cds_length
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_CDS_LENGTH_FIELD); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4244, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (unlikely(PyDict_SetItem(__pyx_v_ann_chunk, __pyx_t_2, __pyx_v_cds_length) < 0)) __PYX_ERR(0, 4244, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+4245:         if aa_pos is not None:
  __pyx_t_12 = (__pyx_v_aa_pos != Py_None);
  __pyx_t_3 = (__pyx_t_12 != 0);
  if (__pyx_t_3) {
/* … */
  }
+4246:             ann_chunk[ANN_AA_POS_FIELD] = aa_pos
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_AA_POS_FIELD); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4246, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (unlikely(PyDict_SetItem(__pyx_v_ann_chunk, __pyx_t_2, __pyx_v_aa_pos) < 0)) __PYX_ERR(0, 4246, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+4247:         if aa_length is not None:
  __pyx_t_3 = (__pyx_v_aa_length != Py_None);
  __pyx_t_12 = (__pyx_t_3 != 0);
  if (__pyx_t_12) {
/* … */
  }
+4248:             ann_chunk[ANN_AA_LENGTH_FIELD] = aa_length
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_AA_LENGTH_FIELD); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4248, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (unlikely(PyDict_SetItem(__pyx_v_ann_chunk, __pyx_t_2, __pyx_v_aa_length) < 0)) __PYX_ERR(0, 4248, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+4249:         if distance is not None:
  __pyx_t_12 = (__pyx_v_distance != Py_None);
  __pyx_t_3 = (__pyx_t_12 != 0);
  if (__pyx_t_3) {
/* … */
  }
+4250:             ann_chunk[ANN_DISTANCE_FIELD] = distance
    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ANN_DISTANCE_FIELD); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4250, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (unlikely(PyDict_SetItem(__pyx_v_ann_chunk, __pyx_t_2, __pyx_v_distance) < 0)) __PYX_ERR(0, 4250, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 4251: 
+4252:         if number == 1:
  __pyx_t_3 = ((__pyx_v_number == 1) != 0);
  if (__pyx_t_3) {
/* … */
  }
+4253:             for k in list(ann_chunk.keys()):
    __pyx_t_2 = __Pyx_PyDict_Keys(__pyx_v_ann_chunk); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4253, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = PySequence_List(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4253, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    for (;;) {
      if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break;
      #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
      __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 4253, __pyx_L1_error)
      #else
      __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4253, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      #endif
      __Pyx_XDECREF_SET(__pyx_v_k, __pyx_t_1);
      __pyx_t_1 = 0;
/* … */
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+4254:                 ann_chunk[k] = ann_chunk[k].squeeze(axis=1)
      __pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_ann_chunk, __pyx_v_k); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4254, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_squeeze); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4254, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4254, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_axis, __pyx_int_1) < 0) __PYX_ERR(0, 4254, __pyx_L1_error)
      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4254, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (unlikely(PyDict_SetItem(__pyx_v_ann_chunk, __pyx_v_k, __pyx_t_6) < 0)) __PYX_ERR(0, 4254, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 4255: 
+4256:         chunk.update(ann_chunk)
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_chunk, __pyx_n_s_update); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4256, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  if (!__pyx_t_1) {
    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_ann_chunk); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4256, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  } else {
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_6)) {
      PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_v_ann_chunk};
      __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4256, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_GOTREF(__pyx_t_2);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
      PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_v_ann_chunk};
      __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4256, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_GOTREF(__pyx_t_2);
    } else
    #endif
    {
      __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4256, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1); __pyx_t_1 = NULL;
      __Pyx_INCREF(__pyx_v_ann_chunk);
      __Pyx_GIVEREF(__pyx_v_ann_chunk);
      PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_ann_chunk);
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4256, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;