diff --git a/meta/recipes-devtools/python/python3-lxml/CVE-2026-41066.patch b/meta/recipes-devtools/python/python3-lxml/CVE-2026-41066.patch
new file mode 100644
index 0000000000..9c333d7ef7
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-lxml/CVE-2026-41066.patch
@@ -0,0 +1,4613 @@
+From 4fe0735416504223919151aa43c8ccba4626597f Mon Sep 17 00:00:00 2001
+From: Stefan Behnel <stefan_ml@behnel.de>
+Date: Fri, 10 Apr 2026 10:13:03 +0200
+Subject: [PATCH] LP#2146291: Set "resolve_entities='internal'" as default for
+ all parser subclasses.
+
+CVE: CVE-2026-41066
+Upstream-Status: Backport [https://github.com/lxml/lxml/commit/ab431ea0b9a7357d968f1d1c5c614649e9aaf358]
+
+Backport Changes:
+- Keep the lxml 5.0.2 XMLParser signature without decompress.
+- Regenerate etree.c because Scarthgap builds without Cython.
+
+(cherry picked from commit ab431ea0b9a7357d968f1d1c5c614649e9aaf358)
+Signed-off-by: Darsh Kelaiya <dkelaiya@cisco.com>
+---
+ src/lxml/etree.c       | 1242 ++++++++++++++++++++--------------------
+ src/lxml/iterparse.pxi |    8 +-
+ src/lxml/parser.pxi    |    6 +-
+ 3 files changed, 629 insertions(+), 627 deletions(-)
+
+diff --git a/src/lxml/etree.c b/src/lxml/etree.c
+index 6012a1b..d3d1412 100644
+--- a/src/lxml/etree.c
++++ b/src/lxml/etree.c
+@@ -1931,7 +1931,7 @@ enum __pyx_t_4lxml_5etree__IncrementalFileWriterStatus {
+   __pyx_e_4lxml_5etree_WRITER_FINISHED = 4
+ };
+ 
+-/* "src/lxml/iterparse.pxi":234
++/* "src/lxml/iterparse.pxi":236
+  * 
+  * 
+  * cdef enum _IterwalkSkipStates:             # <<<<<<<<<<<<<<
+@@ -3146,7 +3146,7 @@ struct __pyx_obj_4lxml_5etree__FeedParser {
+  *     )
+  * 
+  * cdef class XMLParser(_FeedParser):             # <<<<<<<<<<<<<<
+- *     u"""XMLParser(self, encoding=None, attribute_defaults=False, dtd_validation=False, load_dtd=False, no_network=True, ns_clean=False, recover=False, schema: XMLSchema =None, huge_tree=False, remove_blank_text=False, resolve_entities=True, remove_comments=False, remove_pis=False, strip_cdata=True, collect_ids=True, target=None, compact=True)
++ *     u"""XMLParser(self, encoding=None, attribute_defaults=False, dtd_validation=False, load_dtd=False, no_network=True, ns_clean=False, recover=False, schema: XMLSchema =None, huge_tree=False, remove_blank_text=False, resolve_entities='internal', remove_comments=False, remove_pis=False, strip_cdata=True, collect_ids=True, target=None, compact=True)
+  * 
+  */
+ struct __pyx_obj_4lxml_5etree_XMLParser {
+@@ -3530,7 +3530,7 @@ struct __pyx_obj_4lxml_5etree_iterparse {
+ };
+ 
+ 
+-/* "src/lxml/iterparse.pxi":241
++/* "src/lxml/iterparse.pxi":243
+  * 
+  * 
+  * cdef class iterwalk:             # <<<<<<<<<<<<<<
+@@ -5424,7 +5424,7 @@ static struct __pyx_vtabstruct_4lxml_5etree__FeedParser *__pyx_vtabptr_4lxml_5et
+  *     )
+  * 
+  * cdef class XMLParser(_FeedParser):             # <<<<<<<<<<<<<<
+- *     u"""XMLParser(self, encoding=None, attribute_defaults=False, dtd_validation=False, load_dtd=False, no_network=True, ns_clean=False, recover=False, schema: XMLSchema =None, huge_tree=False, remove_blank_text=False, resolve_entities=True, remove_comments=False, remove_pis=False, strip_cdata=True, collect_ids=True, target=None, compact=True)
++ *     u"""XMLParser(self, encoding=None, attribute_defaults=False, dtd_validation=False, load_dtd=False, no_network=True, ns_clean=False, recover=False, schema: XMLSchema =None, huge_tree=False, remove_blank_text=False, resolve_entities='internal', remove_comments=False, remove_pis=False, strip_cdata=True, collect_ids=True, target=None, compact=True)
+  * 
+  */
+ 
+@@ -5695,7 +5695,7 @@ static PyObject *__pyx_f_4lxml_5etree_9iterparse__close_source(struct __pyx_obj_
+ static int __pyx_f_4lxml_5etree_9iterparse__read_more_events(struct __pyx_obj_4lxml_5etree_iterparse *, struct __pyx_obj_4lxml_5etree__SaxParserContext *);
+ 
+ 
+-/* "src/lxml/iterparse.pxi":241
++/* "src/lxml/iterparse.pxi":243
+  * 
+  * 
+  * cdef class iterwalk:             # <<<<<<<<<<<<<<
+@@ -142620,7 +142620,7 @@ static int __pyx_pw_4lxml_5etree_17ETCompatXMLParser_1__init__(PyObject *__pyx_v
+  *     def __init__(self, *, encoding=None, attribute_defaults=False,
+  *                  dtd_validation=False, load_dtd=False, no_network=True,             # <<<<<<<<<<<<<<
+  *                  ns_clean=False, recover=False, schema=None,
+- *                  huge_tree=False, remove_blank_text=False, resolve_entities=True,
++ *                  huge_tree=False, remove_blank_text=False, resolve_entities='internal',
+  */
+     values[2] = __Pyx_Arg_NewRef_VARARGS(((PyObject *)Py_False));
+     values[3] = __Pyx_Arg_NewRef_VARARGS(((PyObject *)Py_False));
+@@ -142630,7 +142630,7 @@ static int __pyx_pw_4lxml_5etree_17ETCompatXMLParser_1__init__(PyObject *__pyx_v
+  *     def __init__(self, *, encoding=None, attribute_defaults=False,
+  *                  dtd_validation=False, load_dtd=False, no_network=True,
+  *                  ns_clean=False, recover=False, schema=None,             # <<<<<<<<<<<<<<
+- *                  huge_tree=False, remove_blank_text=False, resolve_entities=True,
++ *                  huge_tree=False, remove_blank_text=False, resolve_entities='internal',
+  *                  remove_comments=True, remove_pis=True, strip_cdata=True,
+  */
+     values[5] = __Pyx_Arg_NewRef_VARARGS(((PyObject *)Py_False));
+@@ -142640,17 +142640,17 @@ static int __pyx_pw_4lxml_5etree_17ETCompatXMLParser_1__init__(PyObject *__pyx_v
+     /* "src/lxml/parser.pxi":1703
+  *                  dtd_validation=False, load_dtd=False, no_network=True,
+  *                  ns_clean=False, recover=False, schema=None,
+- *                  huge_tree=False, remove_blank_text=False, resolve_entities=True,             # <<<<<<<<<<<<<<
++ *                  huge_tree=False, remove_blank_text=False, resolve_entities='internal',             # <<<<<<<<<<<<<<
+  *                  remove_comments=True, remove_pis=True, strip_cdata=True,
+  *                  target=None, compact=True):
+  */
+     values[8] = __Pyx_Arg_NewRef_VARARGS(((PyObject *)Py_False));
+     values[9] = __Pyx_Arg_NewRef_VARARGS(((PyObject *)Py_False));
+-    values[10] = __Pyx_Arg_NewRef_VARARGS(((PyObject *)Py_True));
++    values[10] = __Pyx_Arg_NewRef_VARARGS(((PyObject *)__pyx_n_s_internal));
+ 
+     /* "src/lxml/parser.pxi":1704
+  *                  ns_clean=False, recover=False, schema=None,
+- *                  huge_tree=False, remove_blank_text=False, resolve_entities=True,
++ *                  huge_tree=False, remove_blank_text=False, resolve_entities='internal',
+  *                  remove_comments=True, remove_pis=True, strip_cdata=True,             # <<<<<<<<<<<<<<
+  *                  target=None, compact=True):
+  *         XMLParser.__init__(self,
+@@ -142660,7 +142660,7 @@ static int __pyx_pw_4lxml_5etree_17ETCompatXMLParser_1__init__(PyObject *__pyx_v
+     values[13] = __Pyx_Arg_NewRef_VARARGS(((PyObject *)Py_True));
+ 
+     /* "src/lxml/parser.pxi":1705
+- *                  huge_tree=False, remove_blank_text=False, resolve_entities=True,
++ *                  huge_tree=False, remove_blank_text=False, resolve_entities='internal',
+  *                  remove_comments=True, remove_pis=True, strip_cdata=True,
+  *                  target=None, compact=True):             # <<<<<<<<<<<<<<
+  *         XMLParser.__init__(self,
+@@ -191363,7 +191363,7 @@ static PyObject *__pyx_gb_4lxml_5etree_14_MethodChanger_11generator12(__pyx_Coro
+   return __pyx_r;
+ }
+ 
+-/* "src/lxml/iterparse.pxi":67
++/* "src/lxml/iterparse.pxi":69
+  *     cdef bint _close_source_after_read
+  * 
+  *     def __init__(self, source, events=(u"end",), *, tag=None,             # <<<<<<<<<<<<<<
+@@ -191413,41 +191413,41 @@ static int __pyx_pw_4lxml_5etree_9iterparse_1__init__(PyObject *__pyx_v_self, Py
+     values[1] = __Pyx_Arg_NewRef_VARARGS(((PyObject *)__pyx_tuple__91));
+     values[2] = __Pyx_Arg_NewRef_VARARGS(((PyObject *)Py_None));
+ 
+-    /* "src/lxml/iterparse.pxi":68
++    /* "src/lxml/iterparse.pxi":70
+  * 
+  *     def __init__(self, source, events=(u"end",), *, tag=None,
+  *                  attribute_defaults=False, dtd_validation=False,             # <<<<<<<<<<<<<<
+  *                  load_dtd=False, no_network=True, remove_blank_text=False,
+- *                  compact=True, resolve_entities=True, remove_comments=False,
++ *                  compact=True, resolve_entities='internal', remove_comments=False,
+  */
+     values[3] = __Pyx_Arg_NewRef_VARARGS(((PyObject *)Py_False));
+     values[4] = __Pyx_Arg_NewRef_VARARGS(((PyObject *)Py_False));
+ 
+-    /* "src/lxml/iterparse.pxi":69
++    /* "src/lxml/iterparse.pxi":71
+  *     def __init__(self, source, events=(u"end",), *, tag=None,
+  *                  attribute_defaults=False, dtd_validation=False,
+  *                  load_dtd=False, no_network=True, remove_blank_text=False,             # <<<<<<<<<<<<<<
+- *                  compact=True, resolve_entities=True, remove_comments=False,
++ *                  compact=True, resolve_entities='internal', remove_comments=False,
+  *                  remove_pis=False, strip_cdata=True, encoding=None,
+  */
+     values[5] = __Pyx_Arg_NewRef_VARARGS(((PyObject *)Py_False));
+     values[6] = __Pyx_Arg_NewRef_VARARGS(((PyObject *)Py_True));
+     values[7] = __Pyx_Arg_NewRef_VARARGS(((PyObject *)Py_False));
+ 
+-    /* "src/lxml/iterparse.pxi":70
++    /* "src/lxml/iterparse.pxi":72
+  *                  attribute_defaults=False, dtd_validation=False,
+  *                  load_dtd=False, no_network=True, remove_blank_text=False,
+- *                  compact=True, resolve_entities=True, remove_comments=False,             # <<<<<<<<<<<<<<
++ *                  compact=True, resolve_entities='internal', remove_comments=False,             # <<<<<<<<<<<<<<
+  *                  remove_pis=False, strip_cdata=True, encoding=None,
+  *                  html=False, recover=None, huge_tree=False, collect_ids=True,
+  */
+     values[8] = __Pyx_Arg_NewRef_VARARGS(((PyObject *)Py_True));
+-    values[9] = __Pyx_Arg_NewRef_VARARGS(((PyObject *)Py_True));
++    values[9] = __Pyx_Arg_NewRef_VARARGS(((PyObject *)__pyx_n_s_internal));
+     values[10] = __Pyx_Arg_NewRef_VARARGS(((PyObject *)Py_False));
+ 
+-    /* "src/lxml/iterparse.pxi":71
++    /* "src/lxml/iterparse.pxi":73
+  *                  load_dtd=False, no_network=True, remove_blank_text=False,
+- *                  compact=True, resolve_entities=True, remove_comments=False,
++ *                  compact=True, resolve_entities='internal', remove_comments=False,
+  *                  remove_pis=False, strip_cdata=True, encoding=None,             # <<<<<<<<<<<<<<
+  *                  html=False, recover=None, huge_tree=False, collect_ids=True,
+  *                  XMLSchema schema=None):
+@@ -191456,8 +191456,8 @@ static int __pyx_pw_4lxml_5etree_9iterparse_1__init__(PyObject *__pyx_v_self, Py
+     values[12] = __Pyx_Arg_NewRef_VARARGS(((PyObject *)Py_True));
+     values[13] = __Pyx_Arg_NewRef_VARARGS(((PyObject *)Py_None));
+ 
+-    /* "src/lxml/iterparse.pxi":72
+- *                  compact=True, resolve_entities=True, remove_comments=False,
++    /* "src/lxml/iterparse.pxi":74
++ *                  compact=True, resolve_entities='internal', remove_comments=False,
+  *                  remove_pis=False, strip_cdata=True, encoding=None,
+  *                  html=False, recover=None, huge_tree=False, collect_ids=True,             # <<<<<<<<<<<<<<
+  *                  XMLSchema schema=None):
+@@ -191468,7 +191468,7 @@ static int __pyx_pw_4lxml_5etree_9iterparse_1__init__(PyObject *__pyx_v_self, Py
+     values[16] = __Pyx_Arg_NewRef_VARARGS(((PyObject *)Py_False));
+     values[17] = __Pyx_Arg_NewRef_VARARGS(((PyObject *)Py_True));
+ 
+-    /* "src/lxml/iterparse.pxi":73
++    /* "src/lxml/iterparse.pxi":75
+  *                  remove_pis=False, strip_cdata=True, encoding=None,
+  *                  html=False, recover=None, huge_tree=False, collect_ids=True,
+  *                  XMLSchema schema=None):             # <<<<<<<<<<<<<<
+@@ -191493,14 +191493,14 @@ static int __pyx_pw_4lxml_5etree_9iterparse_1__init__(PyObject *__pyx_v_self, Py
+           (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
+           kw_args--;
+         }
+-        else if (unlikely(PyErr_Occurred())) __PYX_ERR(14, 67, __pyx_L3_error)
++        else if (unlikely(PyErr_Occurred())) __PYX_ERR(14, 69, __pyx_L3_error)
+         else goto __pyx_L5_argtuple_error;
+         CYTHON_FALLTHROUGH;
+         case  1:
+         if (kw_args > 0) {
+           PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_events);
+           if (value) { values[1] = __Pyx_Arg_NewRef_VARARGS(value); kw_args--; }
+-          else if (unlikely(PyErr_Occurred())) __PYX_ERR(14, 67, __pyx_L3_error)
++          else if (unlikely(PyErr_Occurred())) __PYX_ERR(14, 69, __pyx_L3_error)
+         }
+       }
+       if (kw_args > 0 && likely(kw_args <= 17)) {
+@@ -191508,12 +191508,12 @@ static int __pyx_pw_4lxml_5etree_9iterparse_1__init__(PyObject *__pyx_v_self, Py
+         for (index = 2; index < 19 && kw_args > 0; index++) {
+           PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, *__pyx_pyargnames[index]);
+           if (value) { values[index] = __Pyx_Arg_NewRef_VARARGS(value); kw_args--; }
+-          else if (unlikely(PyErr_Occurred())) __PYX_ERR(14, 67, __pyx_L3_error)
++          else if (unlikely(PyErr_Occurred())) __PYX_ERR(14, 69, __pyx_L3_error)
+         }
+       }
+       if (unlikely(kw_args > 0)) {
+         const Py_ssize_t kwd_pos_args = __pyx_nargs;
+-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__init__") < 0)) __PYX_ERR(14, 67, __pyx_L3_error)
++        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__init__") < 0)) __PYX_ERR(14, 69, __pyx_L3_error)
+       }
+     } else {
+       switch (__pyx_nargs) {
+@@ -191546,7 +191546,7 @@ static int __pyx_pw_4lxml_5etree_9iterparse_1__init__(PyObject *__pyx_v_self, Py
+   }
+   goto __pyx_L6_skip;
+   __pyx_L5_argtuple_error:;
+-  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 2, __pyx_nargs); __PYX_ERR(14, 67, __pyx_L3_error)
++  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 2, __pyx_nargs); __PYX_ERR(14, 69, __pyx_L3_error)
+   __pyx_L6_skip:;
+   goto __pyx_L4_argument_unpacking_done;
+   __pyx_L3_error:;
+@@ -191560,10 +191560,10 @@ static int __pyx_pw_4lxml_5etree_9iterparse_1__init__(PyObject *__pyx_v_self, Py
+   __Pyx_RefNannyFinishContext();
+   return -1;
+   __pyx_L4_argument_unpacking_done:;
+-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_schema), __pyx_ptype_4lxml_5etree_XMLSchema, 1, "schema", 0))) __PYX_ERR(14, 73, __pyx_L1_error)
++  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_schema), __pyx_ptype_4lxml_5etree_XMLSchema, 1, "schema", 0))) __PYX_ERR(14, 75, __pyx_L1_error)
+   __pyx_r = __pyx_pf_4lxml_5etree_9iterparse___init__(((struct __pyx_obj_4lxml_5etree_iterparse *)__pyx_v_self), __pyx_v_source, __pyx_v_events, __pyx_v_tag, __pyx_v_attribute_defaults, __pyx_v_dtd_validation, __pyx_v_load_dtd, __pyx_v_no_network, __pyx_v_remove_blank_text, __pyx_v_compact, __pyx_v_resolve_entities, __pyx_v_remove_comments, __pyx_v_remove_pis, __pyx_v_strip_cdata, __pyx_v_encoding, __pyx_v_html, __pyx_v_recover, __pyx_v_huge_tree, __pyx_v_collect_ids, __pyx_v_schema);
+ 
+-  /* "src/lxml/iterparse.pxi":67
++  /* "src/lxml/iterparse.pxi":69
+  *     cdef bint _close_source_after_read
+  * 
+  *     def __init__(self, source, events=(u"end",), *, tag=None,             # <<<<<<<<<<<<<<
+@@ -191607,30 +191607,30 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
+   __Pyx_INCREF(__pyx_v_events);
+   __Pyx_INCREF(__pyx_v_recover);
+ 
+-  /* "src/lxml/iterparse.pxi":74
++  /* "src/lxml/iterparse.pxi":76
+  *                  html=False, recover=None, huge_tree=False, collect_ids=True,
+  *                  XMLSchema schema=None):
+  *         if not hasattr(source, 'read'):             # <<<<<<<<<<<<<<
+  *             source = _getFSPathOrObject(source)
+  *             self._filename = source
+  */
+-  __pyx_t_1 = __Pyx_HasAttr(__pyx_v_source, __pyx_n_s_read); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(14, 74, __pyx_L1_error)
++  __pyx_t_1 = __Pyx_HasAttr(__pyx_v_source, __pyx_n_s_read); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(14, 76, __pyx_L1_error)
+   __pyx_t_2 = (!__pyx_t_1);
+   if (__pyx_t_2) {
+ 
+-    /* "src/lxml/iterparse.pxi":75
++    /* "src/lxml/iterparse.pxi":77
+  *                  XMLSchema schema=None):
+  *         if not hasattr(source, 'read'):
+  *             source = _getFSPathOrObject(source)             # <<<<<<<<<<<<<<
+  *             self._filename = source
+  *             if python.IS_PYTHON2:
+  */
+-    __pyx_t_3 = __pyx_f_4lxml_5etree__getFSPathOrObject(__pyx_v_source); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 75, __pyx_L1_error)
++    __pyx_t_3 = __pyx_f_4lxml_5etree__getFSPathOrObject(__pyx_v_source); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 77, __pyx_L1_error)
+     __Pyx_GOTREF(__pyx_t_3);
+     __Pyx_DECREF_SET(__pyx_v_source, __pyx_t_3);
+     __pyx_t_3 = 0;
+ 
+-    /* "src/lxml/iterparse.pxi":76
++    /* "src/lxml/iterparse.pxi":78
+  *         if not hasattr(source, 'read'):
+  *             source = _getFSPathOrObject(source)
+  *             self._filename = source             # <<<<<<<<<<<<<<
+@@ -191643,7 +191643,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
+     __Pyx_DECREF(__pyx_v_self->_filename);
+     __pyx_v_self->_filename = __pyx_v_source;
+ 
+-    /* "src/lxml/iterparse.pxi":77
++    /* "src/lxml/iterparse.pxi":79
+  *             source = _getFSPathOrObject(source)
+  *             self._filename = source
+  *             if python.IS_PYTHON2:             # <<<<<<<<<<<<<<
+@@ -191652,19 +191652,19 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
+  */
+     if (IS_PYTHON2) {
+ 
+-      /* "src/lxml/iterparse.pxi":78
++      /* "src/lxml/iterparse.pxi":80
+  *             self._filename = source
+  *             if python.IS_PYTHON2:
+  *                 source = _encodeFilename(source)             # <<<<<<<<<<<<<<
+  *             source = open(source, 'rb')
+  *             self._close_source_after_read = True
+  */
+-      __pyx_t_3 = __pyx_f_4lxml_5etree__encodeFilename(__pyx_v_source); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 78, __pyx_L1_error)
++      __pyx_t_3 = __pyx_f_4lxml_5etree__encodeFilename(__pyx_v_source); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 80, __pyx_L1_error)
+       __Pyx_GOTREF(__pyx_t_3);
+       __Pyx_DECREF_SET(__pyx_v_source, __pyx_t_3);
+       __pyx_t_3 = 0;
+ 
+-      /* "src/lxml/iterparse.pxi":77
++      /* "src/lxml/iterparse.pxi":79
+  *             source = _getFSPathOrObject(source)
+  *             self._filename = source
+  *             if python.IS_PYTHON2:             # <<<<<<<<<<<<<<
+@@ -191673,14 +191673,14 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
+  */
+     }
+ 
+-    /* "src/lxml/iterparse.pxi":79
++    /* "src/lxml/iterparse.pxi":81
+  *             if python.IS_PYTHON2:
+  *                 source = _encodeFilename(source)
+  *             source = open(source, 'rb')             # <<<<<<<<<<<<<<
+  *             self._close_source_after_read = True
+  *         else:
+  */
+-    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_open); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 79, __pyx_L1_error)
++    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_open); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 81, __pyx_L1_error)
+     __Pyx_GOTREF(__pyx_t_4);
+     __pyx_t_5 = NULL;
+     __pyx_t_6 = 0;
+@@ -191700,14 +191700,14 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
+       PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_v_source, __pyx_n_s_rb};
+       __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
+       __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+-      if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 79, __pyx_L1_error)
++      if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 81, __pyx_L1_error)
+       __Pyx_GOTREF(__pyx_t_3);
+       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+     }
+     __Pyx_DECREF_SET(__pyx_v_source, __pyx_t_3);
+     __pyx_t_3 = 0;
+ 
+-    /* "src/lxml/iterparse.pxi":80
++    /* "src/lxml/iterparse.pxi":82
+  *                 source = _encodeFilename(source)
+  *             source = open(source, 'rb')
+  *             self._close_source_after_read = True             # <<<<<<<<<<<<<<
+@@ -191716,7 +191716,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
+  */
+     __pyx_v_self->_close_source_after_read = 1;
+ 
+-    /* "src/lxml/iterparse.pxi":74
++    /* "src/lxml/iterparse.pxi":76
+  *                  html=False, recover=None, huge_tree=False, collect_ids=True,
+  *                  XMLSchema schema=None):
+  *         if not hasattr(source, 'read'):             # <<<<<<<<<<<<<<
+@@ -191726,7 +191726,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
+     goto __pyx_L3;
+   }
+ 
+-  /* "src/lxml/iterparse.pxi":82
++  /* "src/lxml/iterparse.pxi":84
+  *             self._close_source_after_read = True
+  *         else:
+  *             self._filename = _getFilenameForFile(source)             # <<<<<<<<<<<<<<
+@@ -191734,7 +191734,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
+  * 
+  */
+   /*else*/ {
+-    __pyx_t_3 = __pyx_f_4lxml_5etree__getFilenameForFile(__pyx_v_source); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 82, __pyx_L1_error)
++    __pyx_t_3 = __pyx_f_4lxml_5etree__getFilenameForFile(__pyx_v_source); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 84, __pyx_L1_error)
+     __Pyx_GOTREF(__pyx_t_3);
+     __Pyx_GIVEREF(__pyx_t_3);
+     __Pyx_GOTREF(__pyx_v_self->_filename);
+@@ -191742,7 +191742,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
+     __pyx_v_self->_filename = __pyx_t_3;
+     __pyx_t_3 = 0;
+ 
+-    /* "src/lxml/iterparse.pxi":83
++    /* "src/lxml/iterparse.pxi":85
+  *         else:
+  *             self._filename = _getFilenameForFile(source)
+  *             self._close_source_after_read = False             # <<<<<<<<<<<<<<
+@@ -191753,7 +191753,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
+   }
+   __pyx_L3:;
+ 
+-  /* "src/lxml/iterparse.pxi":85
++  /* "src/lxml/iterparse.pxi":87
+  *             self._close_source_after_read = False
+  * 
+  *         if recover is None:             # <<<<<<<<<<<<<<
+@@ -191763,7 +191763,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
+   __pyx_t_2 = (__pyx_v_recover == Py_None);
+   if (__pyx_t_2) {
+ 
+-    /* "src/lxml/iterparse.pxi":86
++    /* "src/lxml/iterparse.pxi":88
+  * 
+  *         if recover is None:
+  *             recover = html             # <<<<<<<<<<<<<<
+@@ -191773,7 +191773,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
+     __Pyx_INCREF(__pyx_v_html);
+     __Pyx_DECREF_SET(__pyx_v_recover, __pyx_v_html);
+ 
+-    /* "src/lxml/iterparse.pxi":85
++    /* "src/lxml/iterparse.pxi":87
+  *             self._close_source_after_read = False
+  * 
+  *         if recover is None:             # <<<<<<<<<<<<<<
+@@ -191782,33 +191782,33 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
+  */
+   }
+ 
+-  /* "src/lxml/iterparse.pxi":88
++  /* "src/lxml/iterparse.pxi":90
+  *             recover = html
+  * 
+  *         if html:             # <<<<<<<<<<<<<<
+  *             # make sure we're not looking for namespaces
+  *             events = [event for event in events
+  */
+-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_html); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(14, 88, __pyx_L1_error)
++  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_html); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(14, 90, __pyx_L1_error)
+   if (__pyx_t_2) {
+ 
+-    /* "src/lxml/iterparse.pxi":90
++    /* "src/lxml/iterparse.pxi":92
+  *         if html:
+  *             # make sure we're not looking for namespaces
+  *             events = [event for event in events             # <<<<<<<<<<<<<<
+  *                       if event not in ('start-ns', 'end-ns')]
+  *             parser = HTMLPullParser(
+  */
+-    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 90, __pyx_L1_error)
++    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 92, __pyx_L1_error)
+     __Pyx_GOTREF(__pyx_t_3);
+     if (likely(PyList_CheckExact(__pyx_v_events)) || PyTuple_CheckExact(__pyx_v_events)) {
+       __pyx_t_4 = __pyx_v_events; __Pyx_INCREF(__pyx_t_4);
+       __pyx_t_7 = 0;
+       __pyx_t_8 = NULL;
+     } else {
+-      __pyx_t_7 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_events); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 90, __pyx_L1_error)
++      __pyx_t_7 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_events); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 92, __pyx_L1_error)
+       __Pyx_GOTREF(__pyx_t_4);
+-      __pyx_t_8 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(14, 90, __pyx_L1_error)
++      __pyx_t_8 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(14, 92, __pyx_L1_error)
+     }
+     for (;;) {
+       if (likely(!__pyx_t_8)) {
+@@ -191816,28 +191816,28 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
+           {
+             Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_4);
+             #if !CYTHON_ASSUME_SAFE_MACROS
+-            if (unlikely((__pyx_temp < 0))) __PYX_ERR(14, 90, __pyx_L1_error)
++            if (unlikely((__pyx_temp < 0))) __PYX_ERR(14, 92, __pyx_L1_error)
+             #endif
+             if (__pyx_t_7 >= __pyx_temp) break;
+           }
+           #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+-          __pyx_t_5 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_7); __Pyx_INCREF(__pyx_t_5); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(14, 90, __pyx_L1_error)
++          __pyx_t_5 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_7); __Pyx_INCREF(__pyx_t_5); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(14, 92, __pyx_L1_error)
+           #else
+-          __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 90, __pyx_L1_error)
++          __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 92, __pyx_L1_error)
+           __Pyx_GOTREF(__pyx_t_5);
+           #endif
+         } else {
+           {
+             Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_4);
+             #if !CYTHON_ASSUME_SAFE_MACROS
+-            if (unlikely((__pyx_temp < 0))) __PYX_ERR(14, 90, __pyx_L1_error)
++            if (unlikely((__pyx_temp < 0))) __PYX_ERR(14, 92, __pyx_L1_error)
+             #endif
+             if (__pyx_t_7 >= __pyx_temp) break;
+           }
+           #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+-          __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_7); __Pyx_INCREF(__pyx_t_5); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(14, 90, __pyx_L1_error)
++          __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_7); __Pyx_INCREF(__pyx_t_5); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(14, 92, __pyx_L1_error)
+           #else
+-          __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 90, __pyx_L1_error)
++          __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 92, __pyx_L1_error)
+           __Pyx_GOTREF(__pyx_t_5);
+           #endif
+         }
+@@ -191847,7 +191847,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
+           PyObject* exc_type = PyErr_Occurred();
+           if (exc_type) {
+             if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
+-            else __PYX_ERR(14, 90, __pyx_L1_error)
++            else __PYX_ERR(14, 92, __pyx_L1_error)
+           }
+           break;
+         }
+@@ -191856,7 +191856,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
+       __Pyx_XDECREF_SET(__pyx_v_event, __pyx_t_5);
+       __pyx_t_5 = 0;
+ 
+-      /* "src/lxml/iterparse.pxi":91
++      /* "src/lxml/iterparse.pxi":93
+  *             # make sure we're not looking for namespaces
+  *             events = [event for event in events
+  *                       if event not in ('start-ns', 'end-ns')]             # <<<<<<<<<<<<<<
+@@ -191865,29 +191865,29 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
+  */
+       __Pyx_INCREF(__pyx_v_event);
+       __pyx_t_5 = __pyx_v_event;
+-      __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_kp_s_start_ns, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(14, 91, __pyx_L1_error)
++      __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_kp_s_start_ns, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(14, 93, __pyx_L1_error)
+       if (__pyx_t_1) {
+       } else {
+         __pyx_t_2 = __pyx_t_1;
+         goto __pyx_L10_bool_binop_done;
+       }
+-      __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_kp_s_end_ns, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(14, 91, __pyx_L1_error)
++      __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_5, __pyx_kp_s_end_ns, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(14, 93, __pyx_L1_error)
+       __pyx_t_2 = __pyx_t_1;
+       __pyx_L10_bool_binop_done:;
+       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+       __pyx_t_1 = __pyx_t_2;
+       if (__pyx_t_1) {
+ 
+-        /* "src/lxml/iterparse.pxi":90
++        /* "src/lxml/iterparse.pxi":92
+  *         if html:
+  *             # make sure we're not looking for namespaces
+  *             events = [event for event in events             # <<<<<<<<<<<<<<
+  *                       if event not in ('start-ns', 'end-ns')]
+  *             parser = HTMLPullParser(
+  */
+-        if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_v_event))) __PYX_ERR(14, 90, __pyx_L1_error)
++        if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_v_event))) __PYX_ERR(14, 92, __pyx_L1_error)
+ 
+-        /* "src/lxml/iterparse.pxi":91
++        /* "src/lxml/iterparse.pxi":93
+  *             # make sure we're not looking for namespaces
+  *             events = [event for event in events
+  *                       if event not in ('start-ns', 'end-ns')]             # <<<<<<<<<<<<<<
+@@ -191896,7 +191896,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
+  */
+       }
+ 
+-      /* "src/lxml/iterparse.pxi":90
++      /* "src/lxml/iterparse.pxi":92
+  *         if html:
+  *             # make sure we're not looking for namespaces
+  *             events = [event for event in events             # <<<<<<<<<<<<<<
+@@ -191908,144 +191908,144 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
+     __Pyx_DECREF_SET(__pyx_v_events, __pyx_t_3);
+     __pyx_t_3 = 0;
+ 
+-    /* "src/lxml/iterparse.pxi":92
++    /* "src/lxml/iterparse.pxi":94
+  *             events = [event for event in events
+  *                       if event not in ('start-ns', 'end-ns')]
+  *             parser = HTMLPullParser(             # <<<<<<<<<<<<<<
+  *                 events,
+  *                 tag=tag,
+  */
+-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 92, __pyx_L1_error)
++    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 94, __pyx_L1_error)
+     __Pyx_GOTREF(__pyx_t_3);
+     __Pyx_INCREF(__pyx_v_events);
+     __Pyx_GIVEREF(__pyx_v_events);
+-    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_events)) __PYX_ERR(14, 92, __pyx_L1_error);
++    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_events)) __PYX_ERR(14, 94, __pyx_L1_error);
+ 
+-    /* "src/lxml/iterparse.pxi":94
++    /* "src/lxml/iterparse.pxi":96
+  *             parser = HTMLPullParser(
+  *                 events,
+  *                 tag=tag,             # <<<<<<<<<<<<<<
+  *                 recover=recover,
+  *                 base_url=self._filename,
+  */
+-    __pyx_t_4 = __Pyx_PyDict_NewPresized(12); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 94, __pyx_L1_error)
++    __pyx_t_4 = __Pyx_PyDict_NewPresized(12); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 96, __pyx_L1_error)
+     __Pyx_GOTREF(__pyx_t_4);
+-    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_tag, __pyx_v_tag) < 0) __PYX_ERR(14, 94, __pyx_L1_error)
++    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_tag, __pyx_v_tag) < 0) __PYX_ERR(14, 96, __pyx_L1_error)
+ 
+-    /* "src/lxml/iterparse.pxi":95
++    /* "src/lxml/iterparse.pxi":97
+  *                 events,
+  *                 tag=tag,
+  *                 recover=recover,             # <<<<<<<<<<<<<<
+  *                 base_url=self._filename,
+  *                 encoding=encoding,
+  */
+-    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_recover, __pyx_v_recover) < 0) __PYX_ERR(14, 94, __pyx_L1_error)
++    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_recover, __pyx_v_recover) < 0) __PYX_ERR(14, 96, __pyx_L1_error)
+ 
+-    /* "src/lxml/iterparse.pxi":96
++    /* "src/lxml/iterparse.pxi":98
+  *                 tag=tag,
+  *                 recover=recover,
+  *                 base_url=self._filename,             # <<<<<<<<<<<<<<
+  *                 encoding=encoding,
+  *                 remove_blank_text=remove_blank_text,
+  */
+-    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_base_url, __pyx_v_self->_filename) < 0) __PYX_ERR(14, 94, __pyx_L1_error)
++    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_base_url, __pyx_v_self->_filename) < 0) __PYX_ERR(14, 96, __pyx_L1_error)
+ 
+-    /* "src/lxml/iterparse.pxi":97
++    /* "src/lxml/iterparse.pxi":99
+  *                 recover=recover,
+  *                 base_url=self._filename,
+  *                 encoding=encoding,             # <<<<<<<<<<<<<<
+  *                 remove_blank_text=remove_blank_text,
+  *                 remove_comments=remove_comments,
+  */
+-    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_encoding, __pyx_v_encoding) < 0) __PYX_ERR(14, 94, __pyx_L1_error)
++    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_encoding, __pyx_v_encoding) < 0) __PYX_ERR(14, 96, __pyx_L1_error)
+ 
+-    /* "src/lxml/iterparse.pxi":98
++    /* "src/lxml/iterparse.pxi":100
+  *                 base_url=self._filename,
+  *                 encoding=encoding,
+  *                 remove_blank_text=remove_blank_text,             # <<<<<<<<<<<<<<
+  *                 remove_comments=remove_comments,
+  *                 remove_pis=remove_pis,
+  */
+-    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_remove_blank_text, __pyx_v_remove_blank_text) < 0) __PYX_ERR(14, 94, __pyx_L1_error)
++    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_remove_blank_text, __pyx_v_remove_blank_text) < 0) __PYX_ERR(14, 96, __pyx_L1_error)
+ 
+-    /* "src/lxml/iterparse.pxi":99
++    /* "src/lxml/iterparse.pxi":101
+  *                 encoding=encoding,
+  *                 remove_blank_text=remove_blank_text,
+  *                 remove_comments=remove_comments,             # <<<<<<<<<<<<<<
+  *                 remove_pis=remove_pis,
+  *                 strip_cdata=strip_cdata,
+  */
+-    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_remove_comments, __pyx_v_remove_comments) < 0) __PYX_ERR(14, 94, __pyx_L1_error)
++    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_remove_comments, __pyx_v_remove_comments) < 0) __PYX_ERR(14, 96, __pyx_L1_error)
+ 
+-    /* "src/lxml/iterparse.pxi":100
++    /* "src/lxml/iterparse.pxi":102
+  *                 remove_blank_text=remove_blank_text,
+  *                 remove_comments=remove_comments,
+  *                 remove_pis=remove_pis,             # <<<<<<<<<<<<<<
+  *                 strip_cdata=strip_cdata,
+  *                 no_network=no_network,
+  */
+-    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_remove_pis, __pyx_v_remove_pis) < 0) __PYX_ERR(14, 94, __pyx_L1_error)
++    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_remove_pis, __pyx_v_remove_pis) < 0) __PYX_ERR(14, 96, __pyx_L1_error)
+ 
+-    /* "src/lxml/iterparse.pxi":101
++    /* "src/lxml/iterparse.pxi":103
+  *                 remove_comments=remove_comments,
+  *                 remove_pis=remove_pis,
+  *                 strip_cdata=strip_cdata,             # <<<<<<<<<<<<<<
+  *                 no_network=no_network,
+  *                 target=None,  # TODO
+  */
+-    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_strip_cdata, __pyx_v_strip_cdata) < 0) __PYX_ERR(14, 94, __pyx_L1_error)
++    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_strip_cdata, __pyx_v_strip_cdata) < 0) __PYX_ERR(14, 96, __pyx_L1_error)
+ 
+-    /* "src/lxml/iterparse.pxi":102
++    /* "src/lxml/iterparse.pxi":104
+  *                 remove_pis=remove_pis,
+  *                 strip_cdata=strip_cdata,
+  *                 no_network=no_network,             # <<<<<<<<<<<<<<
+  *                 target=None,  # TODO
+  *                 schema=schema,
+  */
+-    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_no_network, __pyx_v_no_network) < 0) __PYX_ERR(14, 94, __pyx_L1_error)
++    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_no_network, __pyx_v_no_network) < 0) __PYX_ERR(14, 96, __pyx_L1_error)
+ 
+-    /* "src/lxml/iterparse.pxi":103
++    /* "src/lxml/iterparse.pxi":105
+  *                 strip_cdata=strip_cdata,
+  *                 no_network=no_network,
+  *                 target=None,  # TODO             # <<<<<<<<<<<<<<
+  *                 schema=schema,
+  *                 compact=compact)
+  */
+-    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_target, Py_None) < 0) __PYX_ERR(14, 94, __pyx_L1_error)
++    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_target, Py_None) < 0) __PYX_ERR(14, 96, __pyx_L1_error)
+ 
+-    /* "src/lxml/iterparse.pxi":104
++    /* "src/lxml/iterparse.pxi":106
+  *                 no_network=no_network,
+  *                 target=None,  # TODO
+  *                 schema=schema,             # <<<<<<<<<<<<<<
+  *                 compact=compact)
+  *         else:
+  */
+-    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_schema, ((PyObject *)__pyx_v_schema)) < 0) __PYX_ERR(14, 94, __pyx_L1_error)
++    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_schema, ((PyObject *)__pyx_v_schema)) < 0) __PYX_ERR(14, 96, __pyx_L1_error)
+ 
+-    /* "src/lxml/iterparse.pxi":105
++    /* "src/lxml/iterparse.pxi":107
+  *                 target=None,  # TODO
+  *                 schema=schema,
+  *                 compact=compact)             # <<<<<<<<<<<<<<
+  *         else:
+  *             parser = XMLPullParser(
+  */
+-    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_compact, __pyx_v_compact) < 0) __PYX_ERR(14, 94, __pyx_L1_error)
++    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_compact, __pyx_v_compact) < 0) __PYX_ERR(14, 96, __pyx_L1_error)
+ 
+-    /* "src/lxml/iterparse.pxi":92
++    /* "src/lxml/iterparse.pxi":94
+  *             events = [event for event in events
+  *                       if event not in ('start-ns', 'end-ns')]
+  *             parser = HTMLPullParser(             # <<<<<<<<<<<<<<
+  *                 events,
+  *                 tag=tag,
+  */
+-    __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_HTMLPullParser), __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 92, __pyx_L1_error)
++    __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_HTMLPullParser), __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 94, __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_v_parser = ((struct __pyx_obj_4lxml_5etree__FeedParser *)__pyx_t_5);
+     __pyx_t_5 = 0;
+ 
+-    /* "src/lxml/iterparse.pxi":88
++    /* "src/lxml/iterparse.pxi":90
+  *             recover = html
+  * 
+  *         if html:             # <<<<<<<<<<<<<<
+@@ -192055,7 +192055,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
+     goto __pyx_L6;
+   }
+ 
+-  /* "src/lxml/iterparse.pxi":107
++  /* "src/lxml/iterparse.pxi":109
+  *                 compact=compact)
+  *         else:
+  *             parser = XMLPullParser(             # <<<<<<<<<<<<<<
+@@ -192064,191 +192064,191 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
+  */
+   /*else*/ {
+ 
+-    /* "src/lxml/iterparse.pxi":108
++    /* "src/lxml/iterparse.pxi":110
+  *         else:
+  *             parser = XMLPullParser(
+  *                 events,             # <<<<<<<<<<<<<<
+  *                 tag=tag,
+  *                 recover=recover,
+  */
+-    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 107, __pyx_L1_error)
++    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 109, __pyx_L1_error)
+     __Pyx_GOTREF(__pyx_t_5);
+     __Pyx_INCREF(__pyx_v_events);
+     __Pyx_GIVEREF(__pyx_v_events);
+-    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_events)) __PYX_ERR(14, 107, __pyx_L1_error);
++    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_events)) __PYX_ERR(14, 109, __pyx_L1_error);
+ 
+-    /* "src/lxml/iterparse.pxi":109
++    /* "src/lxml/iterparse.pxi":111
+  *             parser = XMLPullParser(
+  *                 events,
+  *                 tag=tag,             # <<<<<<<<<<<<<<
+  *                 recover=recover,
+  *                 base_url=self._filename,
+  */
+-    __pyx_t_4 = __Pyx_PyDict_NewPresized(18); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 109, __pyx_L1_error)
++    __pyx_t_4 = __Pyx_PyDict_NewPresized(18); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 111, __pyx_L1_error)
+     __Pyx_GOTREF(__pyx_t_4);
+-    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_tag, __pyx_v_tag) < 0) __PYX_ERR(14, 109, __pyx_L1_error)
++    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_tag, __pyx_v_tag) < 0) __PYX_ERR(14, 111, __pyx_L1_error)
+ 
+-    /* "src/lxml/iterparse.pxi":110
++    /* "src/lxml/iterparse.pxi":112
+  *                 events,
+  *                 tag=tag,
+  *                 recover=recover,             # <<<<<<<<<<<<<<
+  *                 base_url=self._filename,
+  *                 encoding=encoding,
+  */
+-    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_recover, __pyx_v_recover) < 0) __PYX_ERR(14, 109, __pyx_L1_error)
++    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_recover, __pyx_v_recover) < 0) __PYX_ERR(14, 111, __pyx_L1_error)
+ 
+-    /* "src/lxml/iterparse.pxi":111
++    /* "src/lxml/iterparse.pxi":113
+  *                 tag=tag,
+  *                 recover=recover,
+  *                 base_url=self._filename,             # <<<<<<<<<<<<<<
+  *                 encoding=encoding,
+  *                 attribute_defaults=attribute_defaults,
+  */
+-    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_base_url, __pyx_v_self->_filename) < 0) __PYX_ERR(14, 109, __pyx_L1_error)
++    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_base_url, __pyx_v_self->_filename) < 0) __PYX_ERR(14, 111, __pyx_L1_error)
+ 
+-    /* "src/lxml/iterparse.pxi":112
++    /* "src/lxml/iterparse.pxi":114
+  *                 recover=recover,
+  *                 base_url=self._filename,
+  *                 encoding=encoding,             # <<<<<<<<<<<<<<
+  *                 attribute_defaults=attribute_defaults,
+  *                 dtd_validation=dtd_validation,
+  */
+-    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_encoding, __pyx_v_encoding) < 0) __PYX_ERR(14, 109, __pyx_L1_error)
++    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_encoding, __pyx_v_encoding) < 0) __PYX_ERR(14, 111, __pyx_L1_error)
+ 
+-    /* "src/lxml/iterparse.pxi":113
++    /* "src/lxml/iterparse.pxi":115
+  *                 base_url=self._filename,
+  *                 encoding=encoding,
+  *                 attribute_defaults=attribute_defaults,             # <<<<<<<<<<<<<<
+  *                 dtd_validation=dtd_validation,
+  *                 load_dtd=load_dtd,
+  */
+-    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_attribute_defaults, __pyx_v_attribute_defaults) < 0) __PYX_ERR(14, 109, __pyx_L1_error)
++    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_attribute_defaults, __pyx_v_attribute_defaults) < 0) __PYX_ERR(14, 111, __pyx_L1_error)
+ 
+-    /* "src/lxml/iterparse.pxi":114
++    /* "src/lxml/iterparse.pxi":116
+  *                 encoding=encoding,
+  *                 attribute_defaults=attribute_defaults,
+  *                 dtd_validation=dtd_validation,             # <<<<<<<<<<<<<<
+  *                 load_dtd=load_dtd,
+  *                 no_network=no_network,
+  */
+-    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtd_validation, __pyx_v_dtd_validation) < 0) __PYX_ERR(14, 109, __pyx_L1_error)
++    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtd_validation, __pyx_v_dtd_validation) < 0) __PYX_ERR(14, 111, __pyx_L1_error)
+ 
+-    /* "src/lxml/iterparse.pxi":115
++    /* "src/lxml/iterparse.pxi":117
+  *                 attribute_defaults=attribute_defaults,
+  *                 dtd_validation=dtd_validation,
+  *                 load_dtd=load_dtd,             # <<<<<<<<<<<<<<
+  *                 no_network=no_network,
+  *                 schema=schema,
+  */
+-    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_load_dtd, __pyx_v_load_dtd) < 0) __PYX_ERR(14, 109, __pyx_L1_error)
++    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_load_dtd, __pyx_v_load_dtd) < 0) __PYX_ERR(14, 111, __pyx_L1_error)
+ 
+-    /* "src/lxml/iterparse.pxi":116
++    /* "src/lxml/iterparse.pxi":118
+  *                 dtd_validation=dtd_validation,
+  *                 load_dtd=load_dtd,
+  *                 no_network=no_network,             # <<<<<<<<<<<<<<
+  *                 schema=schema,
+  *                 huge_tree=huge_tree,
+  */
+-    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_no_network, __pyx_v_no_network) < 0) __PYX_ERR(14, 109, __pyx_L1_error)
++    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_no_network, __pyx_v_no_network) < 0) __PYX_ERR(14, 111, __pyx_L1_error)
+ 
+-    /* "src/lxml/iterparse.pxi":117
++    /* "src/lxml/iterparse.pxi":119
+  *                 load_dtd=load_dtd,
+  *                 no_network=no_network,
+  *                 schema=schema,             # <<<<<<<<<<<<<<
+  *                 huge_tree=huge_tree,
+  *                 remove_blank_text=remove_blank_text,
+  */
+-    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_schema, ((PyObject *)__pyx_v_schema)) < 0) __PYX_ERR(14, 109, __pyx_L1_error)
++    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_schema, ((PyObject *)__pyx_v_schema)) < 0) __PYX_ERR(14, 111, __pyx_L1_error)
+ 
+-    /* "src/lxml/iterparse.pxi":118
++    /* "src/lxml/iterparse.pxi":120
+  *                 no_network=no_network,
+  *                 schema=schema,
+  *                 huge_tree=huge_tree,             # <<<<<<<<<<<<<<
+  *                 remove_blank_text=remove_blank_text,
+  *                 resolve_entities=resolve_entities,
+  */
+-    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_huge_tree, __pyx_v_huge_tree) < 0) __PYX_ERR(14, 109, __pyx_L1_error)
++    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_huge_tree, __pyx_v_huge_tree) < 0) __PYX_ERR(14, 111, __pyx_L1_error)
+ 
+-    /* "src/lxml/iterparse.pxi":119
++    /* "src/lxml/iterparse.pxi":121
+  *                 schema=schema,
+  *                 huge_tree=huge_tree,
+  *                 remove_blank_text=remove_blank_text,             # <<<<<<<<<<<<<<
+  *                 resolve_entities=resolve_entities,
+  *                 remove_comments=remove_comments,
+  */
+-    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_remove_blank_text, __pyx_v_remove_blank_text) < 0) __PYX_ERR(14, 109, __pyx_L1_error)
++    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_remove_blank_text, __pyx_v_remove_blank_text) < 0) __PYX_ERR(14, 111, __pyx_L1_error)
+ 
+-    /* "src/lxml/iterparse.pxi":120
++    /* "src/lxml/iterparse.pxi":122
+  *                 huge_tree=huge_tree,
+  *                 remove_blank_text=remove_blank_text,
+  *                 resolve_entities=resolve_entities,             # <<<<<<<<<<<<<<
+  *                 remove_comments=remove_comments,
+  *                 remove_pis=remove_pis,
+  */
+-    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_resolve_entities, __pyx_v_resolve_entities) < 0) __PYX_ERR(14, 109, __pyx_L1_error)
++    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_resolve_entities, __pyx_v_resolve_entities) < 0) __PYX_ERR(14, 111, __pyx_L1_error)
+ 
+-    /* "src/lxml/iterparse.pxi":121
++    /* "src/lxml/iterparse.pxi":123
+  *                 remove_blank_text=remove_blank_text,
+  *                 resolve_entities=resolve_entities,
+  *                 remove_comments=remove_comments,             # <<<<<<<<<<<<<<
+  *                 remove_pis=remove_pis,
+  *                 strip_cdata=strip_cdata,
+  */
+-    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_remove_comments, __pyx_v_remove_comments) < 0) __PYX_ERR(14, 109, __pyx_L1_error)
++    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_remove_comments, __pyx_v_remove_comments) < 0) __PYX_ERR(14, 111, __pyx_L1_error)
+ 
+-    /* "src/lxml/iterparse.pxi":122
++    /* "src/lxml/iterparse.pxi":124
+  *                 resolve_entities=resolve_entities,
+  *                 remove_comments=remove_comments,
+  *                 remove_pis=remove_pis,             # <<<<<<<<<<<<<<
+  *                 strip_cdata=strip_cdata,
+  *                 collect_ids=True,
+  */
+-    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_remove_pis, __pyx_v_remove_pis) < 0) __PYX_ERR(14, 109, __pyx_L1_error)
++    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_remove_pis, __pyx_v_remove_pis) < 0) __PYX_ERR(14, 111, __pyx_L1_error)
+ 
+-    /* "src/lxml/iterparse.pxi":123
++    /* "src/lxml/iterparse.pxi":125
+  *                 remove_comments=remove_comments,
+  *                 remove_pis=remove_pis,
+  *                 strip_cdata=strip_cdata,             # <<<<<<<<<<<<<<
+  *                 collect_ids=True,
+  *                 target=None,  # TODO
+  */
+-    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_strip_cdata, __pyx_v_strip_cdata) < 0) __PYX_ERR(14, 109, __pyx_L1_error)
++    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_strip_cdata, __pyx_v_strip_cdata) < 0) __PYX_ERR(14, 111, __pyx_L1_error)
+ 
+-    /* "src/lxml/iterparse.pxi":124
++    /* "src/lxml/iterparse.pxi":126
+  *                 remove_pis=remove_pis,
+  *                 strip_cdata=strip_cdata,
+  *                 collect_ids=True,             # <<<<<<<<<<<<<<
+  *                 target=None,  # TODO
+  *                 compact=compact)
+  */
+-    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_collect_ids, Py_True) < 0) __PYX_ERR(14, 109, __pyx_L1_error)
++    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_collect_ids, Py_True) < 0) __PYX_ERR(14, 111, __pyx_L1_error)
+ 
+-    /* "src/lxml/iterparse.pxi":125
++    /* "src/lxml/iterparse.pxi":127
+  *                 strip_cdata=strip_cdata,
+  *                 collect_ids=True,
+  *                 target=None,  # TODO             # <<<<<<<<<<<<<<
+  *                 compact=compact)
+  * 
+  */
+-    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_target, Py_None) < 0) __PYX_ERR(14, 109, __pyx_L1_error)
++    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_target, Py_None) < 0) __PYX_ERR(14, 111, __pyx_L1_error)
+ 
+-    /* "src/lxml/iterparse.pxi":126
++    /* "src/lxml/iterparse.pxi":128
+  *                 collect_ids=True,
+  *                 target=None,  # TODO
+  *                 compact=compact)             # <<<<<<<<<<<<<<
+  * 
+  *         self._events = parser.read_events()
+  */
+-    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_compact, __pyx_v_compact) < 0) __PYX_ERR(14, 109, __pyx_L1_error)
++    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_compact, __pyx_v_compact) < 0) __PYX_ERR(14, 111, __pyx_L1_error)
+ 
+-    /* "src/lxml/iterparse.pxi":107
++    /* "src/lxml/iterparse.pxi":109
+  *                 compact=compact)
+  *         else:
+  *             parser = XMLPullParser(             # <<<<<<<<<<<<<<
+  *                 events,
+  *                 tag=tag,
+  */
+-    __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_XMLPullParser), __pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 107, __pyx_L1_error)
++    __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_XMLPullParser), __pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 109, __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;
+@@ -192257,14 +192257,14 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
+   }
+   __pyx_L6:;
+ 
+-  /* "src/lxml/iterparse.pxi":128
++  /* "src/lxml/iterparse.pxi":130
+  *                 compact=compact)
+  * 
+  *         self._events = parser.read_events()             # <<<<<<<<<<<<<<
+  *         self._parser = parser
+  *         self._source = source
+  */
+-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_parser), __pyx_n_s_read_events); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 128, __pyx_L1_error)
++  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_parser), __pyx_n_s_read_events); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 130, __pyx_L1_error)
+   __Pyx_GOTREF(__pyx_t_4);
+   __pyx_t_5 = NULL;
+   __pyx_t_6 = 0;
+@@ -192284,7 +192284,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
+     PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
+     __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
+     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+-    if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 128, __pyx_L1_error)
++    if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 130, __pyx_L1_error)
+     __Pyx_GOTREF(__pyx_t_3);
+     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+   }
+@@ -192294,7 +192294,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
+   __pyx_v_self->_events = __pyx_t_3;
+   __pyx_t_3 = 0;
+ 
+-  /* "src/lxml/iterparse.pxi":129
++  /* "src/lxml/iterparse.pxi":131
+  * 
+  *         self._events = parser.read_events()
+  *         self._parser = parser             # <<<<<<<<<<<<<<
+@@ -192307,7 +192307,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
+   __Pyx_DECREF((PyObject *)__pyx_v_self->_parser);
+   __pyx_v_self->_parser = __pyx_v_parser;
+ 
+-  /* "src/lxml/iterparse.pxi":130
++  /* "src/lxml/iterparse.pxi":132
+  *         self._events = parser.read_events()
+  *         self._parser = parser
+  *         self._source = source             # <<<<<<<<<<<<<<
+@@ -192320,7 +192320,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
+   __Pyx_DECREF(__pyx_v_self->_source);
+   __pyx_v_self->_source = __pyx_v_source;
+ 
+-  /* "src/lxml/iterparse.pxi":67
++  /* "src/lxml/iterparse.pxi":69
+  *     cdef bint _close_source_after_read
+  * 
+  *     def __init__(self, source, events=(u"end",), *, tag=None,             # <<<<<<<<<<<<<<
+@@ -192347,7 +192347,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
+   return __pyx_r;
+ }
+ 
+-/* "src/lxml/iterparse.pxi":132
++/* "src/lxml/iterparse.pxi":134
+  *         self._source = source
+  * 
+  *     @property             # <<<<<<<<<<<<<<
+@@ -192379,7 +192379,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_9error_log___get__(struct __py
+   int __pyx_clineno = 0;
+   __Pyx_RefNannySetupContext("__get__", 1);
+ 
+-  /* "src/lxml/iterparse.pxi":136
++  /* "src/lxml/iterparse.pxi":138
+  *         """The error log of the last (or current) parser run.
+  *         """
+  *         return self._parser.feed_error_log             # <<<<<<<<<<<<<<
+@@ -192387,13 +192387,13 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_9error_log___get__(struct __py
+  *     @property
+  */
+   __Pyx_XDECREF(__pyx_r);
+-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_parser), __pyx_n_s_feed_error_log); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 136, __pyx_L1_error)
++  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_parser), __pyx_n_s_feed_error_log); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 138, __pyx_L1_error)
+   __Pyx_GOTREF(__pyx_t_1);
+   __pyx_r = __pyx_t_1;
+   __pyx_t_1 = 0;
+   goto __pyx_L0;
+ 
+-  /* "src/lxml/iterparse.pxi":132
++  /* "src/lxml/iterparse.pxi":134
+  *         self._source = source
+  * 
+  *     @property             # <<<<<<<<<<<<<<
+@@ -192412,7 +192412,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_9error_log___get__(struct __py
+   return __pyx_r;
+ }
+ 
+-/* "src/lxml/iterparse.pxi":138
++/* "src/lxml/iterparse.pxi":140
+  *         return self._parser.feed_error_log
+  * 
+  *     @property             # <<<<<<<<<<<<<<
+@@ -192444,7 +192444,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_9resolvers___get__(struct __py
+   int __pyx_clineno = 0;
+   __Pyx_RefNannySetupContext("__get__", 1);
+ 
+-  /* "src/lxml/iterparse.pxi":142
++  /* "src/lxml/iterparse.pxi":144
+  *         """The custom resolver registry of the last (or current) parser run.
+  *         """
+  *         return self._parser.resolvers             # <<<<<<<<<<<<<<
+@@ -192452,13 +192452,13 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_9resolvers___get__(struct __py
+  *     @property
+  */
+   __Pyx_XDECREF(__pyx_r);
+-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_parser), __pyx_n_s_resolvers); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 142, __pyx_L1_error)
++  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_parser), __pyx_n_s_resolvers); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 144, __pyx_L1_error)
+   __Pyx_GOTREF(__pyx_t_1);
+   __pyx_r = __pyx_t_1;
+   __pyx_t_1 = 0;
+   goto __pyx_L0;
+ 
+-  /* "src/lxml/iterparse.pxi":138
++  /* "src/lxml/iterparse.pxi":140
+  *         return self._parser.feed_error_log
+  * 
+  *     @property             # <<<<<<<<<<<<<<
+@@ -192477,7 +192477,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_9resolvers___get__(struct __py
+   return __pyx_r;
+ }
+ 
+-/* "src/lxml/iterparse.pxi":144
++/* "src/lxml/iterparse.pxi":146
+  *         return self._parser.resolvers
+  * 
+  *     @property             # <<<<<<<<<<<<<<
+@@ -192509,7 +192509,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_7version___get__(struct __pyx_
+   int __pyx_clineno = 0;
+   __Pyx_RefNannySetupContext("__get__", 1);
+ 
+-  /* "src/lxml/iterparse.pxi":147
++  /* "src/lxml/iterparse.pxi":149
+  *     def version(self):
+  *         """The version of the underlying XML parser."""
+  *         return self._parser.version             # <<<<<<<<<<<<<<
+@@ -192517,13 +192517,13 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_7version___get__(struct __pyx_
+  *     def set_element_class_lookup(self, ElementClassLookup lookup = None):
+  */
+   __Pyx_XDECREF(__pyx_r);
+-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_parser), __pyx_n_s_version); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 147, __pyx_L1_error)
++  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_parser), __pyx_n_s_version); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 149, __pyx_L1_error)
+   __Pyx_GOTREF(__pyx_t_1);
+   __pyx_r = __pyx_t_1;
+   __pyx_t_1 = 0;
+   goto __pyx_L0;
+ 
+-  /* "src/lxml/iterparse.pxi":144
++  /* "src/lxml/iterparse.pxi":146
+  *         return self._parser.resolvers
+  * 
+  *     @property             # <<<<<<<<<<<<<<
+@@ -192542,7 +192542,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_7version___get__(struct __pyx_
+   return __pyx_r;
+ }
+ 
+-/* "src/lxml/iterparse.pxi":149
++/* "src/lxml/iterparse.pxi":151
+  *         return self._parser.version
+  * 
+  *     def set_element_class_lookup(self, ElementClassLookup lookup = None):             # <<<<<<<<<<<<<<
+@@ -192604,12 +192604,12 @@ PyObject *__pyx_args, PyObject *__pyx_kwds
+         if (kw_args > 0) {
+           PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_lookup);
+           if (value) { values[0] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
+-          else if (unlikely(PyErr_Occurred())) __PYX_ERR(14, 149, __pyx_L3_error)
++          else if (unlikely(PyErr_Occurred())) __PYX_ERR(14, 151, __pyx_L3_error)
+         }
+       }
+       if (unlikely(kw_args > 0)) {
+         const Py_ssize_t kwd_pos_args = __pyx_nargs;
+-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "set_element_class_lookup") < 0)) __PYX_ERR(14, 149, __pyx_L3_error)
++        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "set_element_class_lookup") < 0)) __PYX_ERR(14, 151, __pyx_L3_error)
+       }
+     } else {
+       switch (__pyx_nargs) {
+@@ -192623,7 +192623,7 @@ PyObject *__pyx_args, PyObject *__pyx_kwds
+   }
+   goto __pyx_L6_skip;
+   __pyx_L5_argtuple_error:;
+-  __Pyx_RaiseArgtupleInvalid("set_element_class_lookup", 0, 0, 1, __pyx_nargs); __PYX_ERR(14, 149, __pyx_L3_error)
++  __Pyx_RaiseArgtupleInvalid("set_element_class_lookup", 0, 0, 1, __pyx_nargs); __PYX_ERR(14, 151, __pyx_L3_error)
+   __pyx_L6_skip:;
+   goto __pyx_L4_argument_unpacking_done;
+   __pyx_L3_error:;
+@@ -192637,7 +192637,7 @@ PyObject *__pyx_args, PyObject *__pyx_kwds
+   __Pyx_RefNannyFinishContext();
+   return NULL;
+   __pyx_L4_argument_unpacking_done:;
+-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_lookup), __pyx_ptype_4lxml_5etree_ElementClassLookup, 1, "lookup", 0))) __PYX_ERR(14, 149, __pyx_L1_error)
++  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_lookup), __pyx_ptype_4lxml_5etree_ElementClassLookup, 1, "lookup", 0))) __PYX_ERR(14, 151, __pyx_L1_error)
+   __pyx_r = __pyx_pf_4lxml_5etree_9iterparse_2set_element_class_lookup(((struct __pyx_obj_4lxml_5etree_iterparse *)__pyx_v_self), __pyx_v_lookup);
+ 
+   /* function exit code */
+@@ -192667,14 +192667,14 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_2set_element_class_lookup(stru
+   int __pyx_clineno = 0;
+   __Pyx_RefNannySetupContext("set_element_class_lookup", 1);
+ 
+-  /* "src/lxml/iterparse.pxi":156
++  /* "src/lxml/iterparse.pxi":158
+  *         Reset it by passing None or nothing.
+  *         """
+  *         self._parser.set_element_class_lookup(lookup)             # <<<<<<<<<<<<<<
+  * 
+  *     def makeelement(self, _tag, attrib=None, nsmap=None, **_extra):
+  */
+-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_parser), __pyx_n_s_set_element_class_lookup); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 156, __pyx_L1_error)
++  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_parser), __pyx_n_s_set_element_class_lookup); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 158, __pyx_L1_error)
+   __Pyx_GOTREF(__pyx_t_2);
+   __pyx_t_3 = NULL;
+   __pyx_t_4 = 0;
+@@ -192694,13 +192694,13 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_2set_element_class_lookup(stru
+     PyObject *__pyx_callargs[2] = {__pyx_t_3, ((PyObject *)__pyx_v_lookup)};
+     __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
+     __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+-    if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 156, __pyx_L1_error)
++    if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 158, __pyx_L1_error)
+     __Pyx_GOTREF(__pyx_t_1);
+     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+   }
+   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ 
+-  /* "src/lxml/iterparse.pxi":149
++  /* "src/lxml/iterparse.pxi":151
+  *         return self._parser.version
+  * 
+  *     def set_element_class_lookup(self, ElementClassLookup lookup = None):             # <<<<<<<<<<<<<<
+@@ -192723,7 +192723,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_2set_element_class_lookup(stru
+   return __pyx_r;
+ }
+ 
+-/* "src/lxml/iterparse.pxi":158
++/* "src/lxml/iterparse.pxi":160
+  *         self._parser.set_element_class_lookup(lookup)
+  * 
+  *     def makeelement(self, _tag, attrib=None, nsmap=None, **_extra):             # <<<<<<<<<<<<<<
+@@ -192796,26 +192796,26 @@ PyObject *__pyx_args, PyObject *__pyx_kwds
+           (void)__Pyx_Arg_NewRef_FASTCALL(values[0]);
+           kw_args--;
+         }
+-        else if (unlikely(PyErr_Occurred())) __PYX_ERR(14, 158, __pyx_L3_error)
++        else if (unlikely(PyErr_Occurred())) __PYX_ERR(14, 160, __pyx_L3_error)
+         else goto __pyx_L5_argtuple_error;
+         CYTHON_FALLTHROUGH;
+         case  1:
+         if (kw_args > 0) {
+           PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_attrib);
+           if (value) { values[1] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
+-          else if (unlikely(PyErr_Occurred())) __PYX_ERR(14, 158, __pyx_L3_error)
++          else if (unlikely(PyErr_Occurred())) __PYX_ERR(14, 160, __pyx_L3_error)
+         }
+         CYTHON_FALLTHROUGH;
+         case  2:
+         if (kw_args > 0) {
+           PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_nsmap);
+           if (value) { values[2] = __Pyx_Arg_NewRef_FASTCALL(value); kw_args--; }
+-          else if (unlikely(PyErr_Occurred())) __PYX_ERR(14, 158, __pyx_L3_error)
++          else if (unlikely(PyErr_Occurred())) __PYX_ERR(14, 160, __pyx_L3_error)
+         }
+       }
+       if (unlikely(kw_args > 0)) {
+         const Py_ssize_t kwd_pos_args = __pyx_nargs;
+-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, __pyx_v__extra, values + 0, kwd_pos_args, "makeelement") < 0)) __PYX_ERR(14, 158, __pyx_L3_error)
++        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, __pyx_v__extra, values + 0, kwd_pos_args, "makeelement") < 0)) __PYX_ERR(14, 160, __pyx_L3_error)
+       }
+     } else {
+       switch (__pyx_nargs) {
+@@ -192834,7 +192834,7 @@ PyObject *__pyx_args, PyObject *__pyx_kwds
+   }
+   goto __pyx_L6_skip;
+   __pyx_L5_argtuple_error:;
+-  __Pyx_RaiseArgtupleInvalid("makeelement", 0, 1, 3, __pyx_nargs); __PYX_ERR(14, 158, __pyx_L3_error)
++  __Pyx_RaiseArgtupleInvalid("makeelement", 0, 1, 3, __pyx_nargs); __PYX_ERR(14, 160, __pyx_L3_error)
+   __pyx_L6_skip:;
+   goto __pyx_L4_argument_unpacking_done;
+   __pyx_L3_error:;
+@@ -192875,67 +192875,67 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_4makeelement(struct __pyx_obj_
+   int __pyx_clineno = 0;
+   __Pyx_RefNannySetupContext("makeelement", 1);
+ 
+-  /* "src/lxml/iterparse.pxi":163
++  /* "src/lxml/iterparse.pxi":165
+  *         Creates a new element associated with this parser.
+  *         """
+  *         self._parser.makeelement(             # <<<<<<<<<<<<<<
+  *             _tag, attrib=None, nsmap=None, **_extra)
+  * 
+  */
+-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_parser), __pyx_n_s_makeelement); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 163, __pyx_L1_error)
++  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_parser), __pyx_n_s_makeelement); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 165, __pyx_L1_error)
+   __Pyx_GOTREF(__pyx_t_1);
+ 
+-  /* "src/lxml/iterparse.pxi":164
++  /* "src/lxml/iterparse.pxi":166
+  *         """
+  *         self._parser.makeelement(
+  *             _tag, attrib=None, nsmap=None, **_extra)             # <<<<<<<<<<<<<<
+  * 
+  *     @cython.final
+  */
+-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 163, __pyx_L1_error)
++  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 165, __pyx_L1_error)
+   __Pyx_GOTREF(__pyx_t_2);
+   __Pyx_INCREF(__pyx_v__tag);
+   __Pyx_GIVEREF(__pyx_v__tag);
+-  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v__tag)) __PYX_ERR(14, 163, __pyx_L1_error);
++  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v__tag)) __PYX_ERR(14, 165, __pyx_L1_error);
+ 
+-  /* "src/lxml/iterparse.pxi":163
++  /* "src/lxml/iterparse.pxi":165
+  *         Creates a new element associated with this parser.
+  *         """
+  *         self._parser.makeelement(             # <<<<<<<<<<<<<<
+  *             _tag, attrib=None, nsmap=None, **_extra)
+  * 
+  */
+-  __pyx_t_4 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 164, __pyx_L1_error)
++  __pyx_t_4 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 166, __pyx_L1_error)
+   __Pyx_GOTREF(__pyx_t_4);
+ 
+-  /* "src/lxml/iterparse.pxi":164
++  /* "src/lxml/iterparse.pxi":166
+  *         """
+  *         self._parser.makeelement(
+  *             _tag, attrib=None, nsmap=None, **_extra)             # <<<<<<<<<<<<<<
+  * 
+  *     @cython.final
+  */
+-  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_attrib, Py_None) < 0) __PYX_ERR(14, 164, __pyx_L1_error)
+-  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_nsmap, Py_None) < 0) __PYX_ERR(14, 164, __pyx_L1_error)
++  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_attrib, Py_None) < 0) __PYX_ERR(14, 166, __pyx_L1_error)
++  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_nsmap, Py_None) < 0) __PYX_ERR(14, 166, __pyx_L1_error)
+   __pyx_t_3 = __pyx_t_4;
+   __pyx_t_4 = 0;
+-  if (__Pyx_MergeKeywords(__pyx_t_3, __pyx_v__extra) < 0) __PYX_ERR(14, 164, __pyx_L1_error)
++  if (__Pyx_MergeKeywords(__pyx_t_3, __pyx_v__extra) < 0) __PYX_ERR(14, 166, __pyx_L1_error)
+ 
+-  /* "src/lxml/iterparse.pxi":163
++  /* "src/lxml/iterparse.pxi":165
+  *         Creates a new element associated with this parser.
+  *         """
+  *         self._parser.makeelement(             # <<<<<<<<<<<<<<
+  *             _tag, attrib=None, nsmap=None, **_extra)
+  * 
+  */
+-  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 163, __pyx_L1_error)
++  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 165, __pyx_L1_error)
+   __Pyx_GOTREF(__pyx_t_4);
+   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ 
+-  /* "src/lxml/iterparse.pxi":158
++  /* "src/lxml/iterparse.pxi":160
+  *         self._parser.set_element_class_lookup(lookup)
+  * 
+  *     def makeelement(self, _tag, attrib=None, nsmap=None, **_extra):             # <<<<<<<<<<<<<<
+@@ -192959,7 +192959,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_4makeelement(struct __pyx_obj_
+   return __pyx_r;
+ }
+ 
+-/* "src/lxml/iterparse.pxi":167
++/* "src/lxml/iterparse.pxi":169
+  * 
+  *     @cython.final
+  *     cdef _close_source(self):             # <<<<<<<<<<<<<<
+@@ -192989,7 +192989,7 @@ static PyObject *__pyx_f_4lxml_5etree_9iterparse__close_source(struct __pyx_obj_
+   int __pyx_clineno = 0;
+   __Pyx_RefNannySetupContext("_close_source", 1);
+ 
+-  /* "src/lxml/iterparse.pxi":168
++  /* "src/lxml/iterparse.pxi":170
+  *     @cython.final
+  *     cdef _close_source(self):
+  *         if self._source is None:             # <<<<<<<<<<<<<<
+@@ -192999,7 +192999,7 @@ static PyObject *__pyx_f_4lxml_5etree_9iterparse__close_source(struct __pyx_obj_
+   __pyx_t_1 = (__pyx_v_self->_source == Py_None);
+   if (__pyx_t_1) {
+ 
+-    /* "src/lxml/iterparse.pxi":169
++    /* "src/lxml/iterparse.pxi":171
+  *     cdef _close_source(self):
+  *         if self._source is None:
+  *             return             # <<<<<<<<<<<<<<
+@@ -193010,7 +193010,7 @@ static PyObject *__pyx_f_4lxml_5etree_9iterparse__close_source(struct __pyx_obj_
+     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+     goto __pyx_L0;
+ 
+-    /* "src/lxml/iterparse.pxi":168
++    /* "src/lxml/iterparse.pxi":170
+  *     @cython.final
+  *     cdef _close_source(self):
+  *         if self._source is None:             # <<<<<<<<<<<<<<
+@@ -193019,7 +193019,7 @@ static PyObject *__pyx_f_4lxml_5etree_9iterparse__close_source(struct __pyx_obj_
+  */
+   }
+ 
+-  /* "src/lxml/iterparse.pxi":170
++  /* "src/lxml/iterparse.pxi":172
+  *         if self._source is None:
+  *             return
+  *         if not self._close_source_after_read:             # <<<<<<<<<<<<<<
+@@ -193029,7 +193029,7 @@ static PyObject *__pyx_f_4lxml_5etree_9iterparse__close_source(struct __pyx_obj_
+   __pyx_t_1 = (!__pyx_v_self->_close_source_after_read);
+   if (__pyx_t_1) {
+ 
+-    /* "src/lxml/iterparse.pxi":171
++    /* "src/lxml/iterparse.pxi":173
+  *             return
+  *         if not self._close_source_after_read:
+  *             self._source = None             # <<<<<<<<<<<<<<
+@@ -193042,7 +193042,7 @@ static PyObject *__pyx_f_4lxml_5etree_9iterparse__close_source(struct __pyx_obj_
+     __Pyx_DECREF(__pyx_v_self->_source);
+     __pyx_v_self->_source = Py_None;
+ 
+-    /* "src/lxml/iterparse.pxi":172
++    /* "src/lxml/iterparse.pxi":174
+  *         if not self._close_source_after_read:
+  *             self._source = None
+  *             return             # <<<<<<<<<<<<<<
+@@ -193053,7 +193053,7 @@ static PyObject *__pyx_f_4lxml_5etree_9iterparse__close_source(struct __pyx_obj_
+     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+     goto __pyx_L0;
+ 
+-    /* "src/lxml/iterparse.pxi":170
++    /* "src/lxml/iterparse.pxi":172
+  *         if self._source is None:
+  *             return
+  *         if not self._close_source_after_read:             # <<<<<<<<<<<<<<
+@@ -193062,7 +193062,7 @@ static PyObject *__pyx_f_4lxml_5etree_9iterparse__close_source(struct __pyx_obj_
+  */
+   }
+ 
+-  /* "src/lxml/iterparse.pxi":173
++  /* "src/lxml/iterparse.pxi":175
+  *             self._source = None
+  *             return
+  *         try:             # <<<<<<<<<<<<<<
+@@ -193079,19 +193079,19 @@ static PyObject *__pyx_f_4lxml_5etree_9iterparse__close_source(struct __pyx_obj_
+       __Pyx_XGOTREF(__pyx_t_4);
+       /*try:*/ {
+ 
+-        /* "src/lxml/iterparse.pxi":174
++        /* "src/lxml/iterparse.pxi":176
+  *             return
+  *         try:
+  *             close = self._source.close             # <<<<<<<<<<<<<<
+  *         except AttributeError:
+  *             close = None
+  */
+-        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_source, __pyx_n_s_close); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 174, __pyx_L8_error)
++        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_source, __pyx_n_s_close); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 176, __pyx_L8_error)
+         __Pyx_GOTREF(__pyx_t_5);
+         __pyx_v_close = __pyx_t_5;
+         __pyx_t_5 = 0;
+ 
+-        /* "src/lxml/iterparse.pxi":173
++        /* "src/lxml/iterparse.pxi":175
+  *             self._source = None
+  *             return
+  *         try:             # <<<<<<<<<<<<<<
+@@ -193106,7 +193106,7 @@ static PyObject *__pyx_f_4lxml_5etree_9iterparse__close_source(struct __pyx_obj_
+       __pyx_L8_error:;
+       __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ 
+-      /* "src/lxml/iterparse.pxi":175
++      /* "src/lxml/iterparse.pxi":177
+  *         try:
+  *             close = self._source.close
+  *         except AttributeError:             # <<<<<<<<<<<<<<
+@@ -193116,12 +193116,12 @@ static PyObject *__pyx_f_4lxml_5etree_9iterparse__close_source(struct __pyx_obj_
+       __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_AttributeError);
+       if (__pyx_t_6) {
+         __Pyx_AddTraceback("lxml.etree.iterparse._close_source", __pyx_clineno, __pyx_lineno, __pyx_filename);
+-        if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_7, &__pyx_t_8) < 0) __PYX_ERR(14, 175, __pyx_L10_except_error)
++        if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_7, &__pyx_t_8) < 0) __PYX_ERR(14, 177, __pyx_L10_except_error)
+         __Pyx_XGOTREF(__pyx_t_5);
+         __Pyx_XGOTREF(__pyx_t_7);
+         __Pyx_XGOTREF(__pyx_t_8);
+ 
+-        /* "src/lxml/iterparse.pxi":176
++        /* "src/lxml/iterparse.pxi":178
+  *             close = self._source.close
+  *         except AttributeError:
+  *             close = None             # <<<<<<<<<<<<<<
+@@ -193137,7 +193137,7 @@ static PyObject *__pyx_f_4lxml_5etree_9iterparse__close_source(struct __pyx_obj_
+       }
+       goto __pyx_L10_except_error;
+ 
+-      /* "src/lxml/iterparse.pxi":173
++      /* "src/lxml/iterparse.pxi":175
+  *             self._source = None
+  *             return
+  *         try:             # <<<<<<<<<<<<<<
+@@ -193159,7 +193159,7 @@ static PyObject *__pyx_f_4lxml_5etree_9iterparse__close_source(struct __pyx_obj_
+     }
+   }
+ 
+-  /* "src/lxml/iterparse.pxi":178
++  /* "src/lxml/iterparse.pxi":180
+  *             close = None
+  *         finally:
+  *             self._source = None             # <<<<<<<<<<<<<<
+@@ -193216,7 +193216,7 @@ static PyObject *__pyx_f_4lxml_5etree_9iterparse__close_source(struct __pyx_obj_
+     __pyx_L7:;
+   }
+ 
+-  /* "src/lxml/iterparse.pxi":179
++  /* "src/lxml/iterparse.pxi":181
+  *         finally:
+  *             self._source = None
+  *         if close is not None:             # <<<<<<<<<<<<<<
+@@ -193226,7 +193226,7 @@ static PyObject *__pyx_f_4lxml_5etree_9iterparse__close_source(struct __pyx_obj_
+   __pyx_t_1 = (__pyx_v_close != Py_None);
+   if (__pyx_t_1) {
+ 
+-    /* "src/lxml/iterparse.pxi":180
++    /* "src/lxml/iterparse.pxi":182
+  *             self._source = None
+  *         if close is not None:
+  *             close()             # <<<<<<<<<<<<<<
+@@ -193252,13 +193252,13 @@ static PyObject *__pyx_f_4lxml_5etree_9iterparse__close_source(struct __pyx_obj_
+       PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
+       __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_9, 0+__pyx_t_9);
+       __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+-      if (unlikely(!__pyx_t_8)) __PYX_ERR(14, 180, __pyx_L1_error)
++      if (unlikely(!__pyx_t_8)) __PYX_ERR(14, 182, __pyx_L1_error)
+       __Pyx_GOTREF(__pyx_t_8);
+       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+     }
+     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+ 
+-    /* "src/lxml/iterparse.pxi":179
++    /* "src/lxml/iterparse.pxi":181
+  *         finally:
+  *             self._source = None
+  *         if close is not None:             # <<<<<<<<<<<<<<
+@@ -193267,7 +193267,7 @@ static PyObject *__pyx_f_4lxml_5etree_9iterparse__close_source(struct __pyx_obj_
+  */
+   }
+ 
+-  /* "src/lxml/iterparse.pxi":167
++  /* "src/lxml/iterparse.pxi":169
+  * 
+  *     @cython.final
+  *     cdef _close_source(self):             # <<<<<<<<<<<<<<
+@@ -193291,7 +193291,7 @@ static PyObject *__pyx_f_4lxml_5etree_9iterparse__close_source(struct __pyx_obj_
+   return __pyx_r;
+ }
+ 
+-/* "src/lxml/iterparse.pxi":182
++/* "src/lxml/iterparse.pxi":184
+  *             close()
+  * 
+  *     def __iter__(self):             # <<<<<<<<<<<<<<
+@@ -193319,7 +193319,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_6__iter__(struct __pyx_obj_4lx
+   __Pyx_RefNannyDeclarations
+   __Pyx_RefNannySetupContext("__iter__", 1);
+ 
+-  /* "src/lxml/iterparse.pxi":183
++  /* "src/lxml/iterparse.pxi":185
+  * 
+  *     def __iter__(self):
+  *         return self             # <<<<<<<<<<<<<<
+@@ -193331,7 +193331,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_6__iter__(struct __pyx_obj_4lx
+   __pyx_r = ((PyObject *)__pyx_v_self);
+   goto __pyx_L0;
+ 
+-  /* "src/lxml/iterparse.pxi":182
++  /* "src/lxml/iterparse.pxi":184
+  *             close()
+  * 
+  *     def __iter__(self):             # <<<<<<<<<<<<<<
+@@ -193346,7 +193346,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_6__iter__(struct __pyx_obj_4lx
+   return __pyx_r;
+ }
+ 
+-/* "src/lxml/iterparse.pxi":185
++/* "src/lxml/iterparse.pxi":187
+  *         return self
+  * 
+  *     def __next__(self):             # <<<<<<<<<<<<<<
+@@ -193397,7 +193397,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
+   int __pyx_clineno = 0;
+   __Pyx_RefNannySetupContext("__next__", 1);
+ 
+-  /* "src/lxml/iterparse.pxi":186
++  /* "src/lxml/iterparse.pxi":188
+  * 
+  *     def __next__(self):
+  *         try:             # <<<<<<<<<<<<<<
+@@ -193413,7 +193413,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
+     __Pyx_XGOTREF(__pyx_t_3);
+     /*try:*/ {
+ 
+-      /* "src/lxml/iterparse.pxi":187
++      /* "src/lxml/iterparse.pxi":189
+  *     def __next__(self):
+  *         try:
+  *             return next(self._events)             # <<<<<<<<<<<<<<
+@@ -193423,14 +193423,14 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
+       __Pyx_XDECREF(__pyx_r);
+       __pyx_t_4 = __pyx_v_self->_events;
+       __Pyx_INCREF(__pyx_t_4);
+-      __pyx_t_5 = __Pyx_PyIter_Next(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 187, __pyx_L3_error)
++      __pyx_t_5 = __Pyx_PyIter_Next(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 189, __pyx_L3_error)
+       __Pyx_GOTREF(__pyx_t_5);
+       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+       __pyx_r = __pyx_t_5;
+       __pyx_t_5 = 0;
+       goto __pyx_L7_try_return;
+ 
+-      /* "src/lxml/iterparse.pxi":186
++      /* "src/lxml/iterparse.pxi":188
+  * 
+  *     def __next__(self):
+  *         try:             # <<<<<<<<<<<<<<
+@@ -193442,7 +193442,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
+     __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ 
+-    /* "src/lxml/iterparse.pxi":188
++    /* "src/lxml/iterparse.pxi":190
+  *         try:
+  *             return next(self._events)
+  *         except StopIteration:             # <<<<<<<<<<<<<<
+@@ -193456,7 +193456,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
+     }
+     goto __pyx_L5_except_error;
+ 
+-    /* "src/lxml/iterparse.pxi":186
++    /* "src/lxml/iterparse.pxi":188
+  * 
+  *     def __next__(self):
+  *         try:             # <<<<<<<<<<<<<<
+@@ -193482,14 +193482,14 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
+     __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+   }
+ 
+-  /* "src/lxml/iterparse.pxi":190
++  /* "src/lxml/iterparse.pxi":192
+  *         except StopIteration:
+  *             pass
+  *         context = <_SaxParserContext>self._parser._getPushParserContext()             # <<<<<<<<<<<<<<
+  *         if self._source is not None:
+  *             done = False
+  */
+-  __pyx_t_5 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__FeedParser *)__pyx_v_self->_parser->__pyx_base.__pyx_vtab)->__pyx_base._getPushParserContext(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self->_parser))); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 190, __pyx_L1_error)
++  __pyx_t_5 = ((PyObject *)((struct __pyx_vtabstruct_4lxml_5etree__FeedParser *)__pyx_v_self->_parser->__pyx_base.__pyx_vtab)->__pyx_base._getPushParserContext(((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_v_self->_parser))); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 192, __pyx_L1_error)
+   __Pyx_GOTREF(__pyx_t_5);
+   __pyx_t_4 = __pyx_t_5;
+   __Pyx_INCREF(__pyx_t_4);
+@@ -193497,7 +193497,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
+   __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__SaxParserContext *)__pyx_t_4);
+   __pyx_t_4 = 0;
+ 
+-  /* "src/lxml/iterparse.pxi":191
++  /* "src/lxml/iterparse.pxi":193
+  *             pass
+  *         context = <_SaxParserContext>self._parser._getPushParserContext()
+  *         if self._source is not None:             # <<<<<<<<<<<<<<
+@@ -193507,7 +193507,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
+   __pyx_t_7 = (__pyx_v_self->_source != Py_None);
+   if (__pyx_t_7) {
+ 
+-    /* "src/lxml/iterparse.pxi":192
++    /* "src/lxml/iterparse.pxi":194
+  *         context = <_SaxParserContext>self._parser._getPushParserContext()
+  *         if self._source is not None:
+  *             done = False             # <<<<<<<<<<<<<<
+@@ -193516,7 +193516,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
+  */
+     __pyx_v_done = 0;
+ 
+-    /* "src/lxml/iterparse.pxi":193
++    /* "src/lxml/iterparse.pxi":195
+  *         if self._source is not None:
+  *             done = False
+  *             while not done:             # <<<<<<<<<<<<<<
+@@ -193527,7 +193527,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
+       __pyx_t_7 = (!__pyx_v_done);
+       if (!__pyx_t_7) break;
+ 
+-      /* "src/lxml/iterparse.pxi":194
++      /* "src/lxml/iterparse.pxi":196
+  *             done = False
+  *             while not done:
+  *                 try:             # <<<<<<<<<<<<<<
+@@ -193543,7 +193543,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
+         __Pyx_XGOTREF(__pyx_t_1);
+         /*try:*/ {
+ 
+-          /* "src/lxml/iterparse.pxi":195
++          /* "src/lxml/iterparse.pxi":197
+  *             while not done:
+  *                 try:
+  *                     done = self._read_more_events(context)             # <<<<<<<<<<<<<<
+@@ -193552,11 +193552,11 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
+  */
+ #pragma GCC diagnostic push
+           #pragma GCC diagnostic ignored "-Wincompatible-pointer-types"
+-          __pyx_t_7 = __pyx_f_4lxml_5etree_9iterparse__read_more_events(__pyx_v_self, __pyx_v_context); if (unlikely(__pyx_t_7 == ((int)-123))) __PYX_ERR(14, 195, __pyx_L12_error)
++          __pyx_t_7 = __pyx_f_4lxml_5etree_9iterparse__read_more_events(__pyx_v_self, __pyx_v_context); if (unlikely(__pyx_t_7 == ((int)-123))) __PYX_ERR(14, 197, __pyx_L12_error)
+           #pragma GCC diagnostic pop
+           __pyx_v_done = __pyx_t_7;
+ 
+-          /* "src/lxml/iterparse.pxi":196
++          /* "src/lxml/iterparse.pxi":198
+  *                 try:
+  *                     done = self._read_more_events(context)
+  *                     return next(self._events)             # <<<<<<<<<<<<<<
+@@ -193566,14 +193566,14 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
+           __Pyx_XDECREF(__pyx_r);
+           __pyx_t_4 = __pyx_v_self->_events;
+           __Pyx_INCREF(__pyx_t_4);
+-          __pyx_t_5 = __Pyx_PyIter_Next(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 196, __pyx_L12_error)
++          __pyx_t_5 = __Pyx_PyIter_Next(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 198, __pyx_L12_error)
+           __Pyx_GOTREF(__pyx_t_5);
+           __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+           __pyx_r = __pyx_t_5;
+           __pyx_t_5 = 0;
+           goto __pyx_L16_try_return;
+ 
+-          /* "src/lxml/iterparse.pxi":194
++          /* "src/lxml/iterparse.pxi":196
+  *             done = False
+  *             while not done:
+  *                 try:             # <<<<<<<<<<<<<<
+@@ -193585,7 +193585,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
+         __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+         __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+ 
+-        /* "src/lxml/iterparse.pxi":197
++        /* "src/lxml/iterparse.pxi":199
+  *                     done = self._read_more_events(context)
+  *                     return next(self._events)
+  *                 except StopIteration:             # <<<<<<<<<<<<<<
+@@ -193598,7 +193598,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
+           goto __pyx_L13_exception_handled;
+         }
+ 
+-        /* "src/lxml/iterparse.pxi":199
++        /* "src/lxml/iterparse.pxi":201
+  *                 except StopIteration:
+  *                     pass  # no events yet
+  *                 except Exception as e:             # <<<<<<<<<<<<<<
+@@ -193608,14 +193608,14 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
+         __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
+         if (__pyx_t_6) {
+           __Pyx_AddTraceback("lxml.etree.iterparse.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+-          if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_8) < 0) __PYX_ERR(14, 199, __pyx_L14_except_error)
++          if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_8) < 0) __PYX_ERR(14, 201, __pyx_L14_except_error)
+           __Pyx_XGOTREF(__pyx_t_5);
+           __Pyx_XGOTREF(__pyx_t_4);
+           __Pyx_XGOTREF(__pyx_t_8);
+           __Pyx_INCREF(__pyx_t_4);
+           __pyx_v_e = __pyx_t_4;
+ 
+-          /* "src/lxml/iterparse.pxi":200
++          /* "src/lxml/iterparse.pxi":202
+  *                     pass  # no events yet
+  *                 except Exception as e:
+  *                     self._error = e             # <<<<<<<<<<<<<<
+@@ -193628,7 +193628,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
+           __Pyx_DECREF(__pyx_v_self->_error);
+           __pyx_v_self->_error = __pyx_v_e;
+ 
+-          /* "src/lxml/iterparse.pxi":201
++          /* "src/lxml/iterparse.pxi":203
+  *                 except Exception as e:
+  *                     self._error = e
+  *                     self._close_source()             # <<<<<<<<<<<<<<
+@@ -193637,12 +193637,12 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
+  */
+ #pragma GCC diagnostic push
+           #pragma GCC diagnostic ignored "-Wincompatible-pointer-types"
+-          __pyx_t_9 = __pyx_f_4lxml_5etree_9iterparse__close_source(__pyx_v_self); if (unlikely(!__pyx_t_9)) __PYX_ERR(14, 201, __pyx_L14_except_error)
++          __pyx_t_9 = __pyx_f_4lxml_5etree_9iterparse__close_source(__pyx_v_self); if (unlikely(!__pyx_t_9)) __PYX_ERR(14, 203, __pyx_L14_except_error)
+           #pragma GCC diagnostic pop
+           __Pyx_GOTREF(__pyx_t_9);
+           __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+ 
+-          /* "src/lxml/iterparse.pxi":202
++          /* "src/lxml/iterparse.pxi":204
+  *                     self._error = e
+  *                     self._close_source()
+  *                     try:             # <<<<<<<<<<<<<<
+@@ -193658,7 +193658,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
+             __Pyx_XGOTREF(__pyx_t_12);
+             /*try:*/ {
+ 
+-              /* "src/lxml/iterparse.pxi":203
++              /* "src/lxml/iterparse.pxi":205
+  *                     self._close_source()
+  *                     try:
+  *                         return next(self._events)             # <<<<<<<<<<<<<<
+@@ -193668,7 +193668,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
+               __Pyx_XDECREF(__pyx_r);
+               __pyx_t_9 = __pyx_v_self->_events;
+               __Pyx_INCREF(__pyx_t_9);
+-              __pyx_t_13 = __Pyx_PyIter_Next(__pyx_t_9); if (unlikely(!__pyx_t_13)) __PYX_ERR(14, 203, __pyx_L22_error)
++              __pyx_t_13 = __Pyx_PyIter_Next(__pyx_t_9); if (unlikely(!__pyx_t_13)) __PYX_ERR(14, 205, __pyx_L22_error)
+               __Pyx_GOTREF(__pyx_t_13);
+               __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+               __pyx_r = __pyx_t_13;
+@@ -193678,7 +193678,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
+               __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+               goto __pyx_L26_try_return;
+ 
+-              /* "src/lxml/iterparse.pxi":202
++              /* "src/lxml/iterparse.pxi":204
+  *                     self._error = e
+  *                     self._close_source()
+  *                     try:             # <<<<<<<<<<<<<<
+@@ -193690,7 +193690,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
+             __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
+             __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+ 
+-            /* "src/lxml/iterparse.pxi":204
++            /* "src/lxml/iterparse.pxi":206
+  *                     try:
+  *                         return next(self._events)
+  *                     except StopIteration:             # <<<<<<<<<<<<<<
+@@ -193700,12 +193700,12 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
+             __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_StopIteration);
+             if (__pyx_t_6) {
+               __Pyx_AddTraceback("lxml.etree.iterparse.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+-              if (__Pyx_GetException(&__pyx_t_13, &__pyx_t_9, &__pyx_t_14) < 0) __PYX_ERR(14, 204, __pyx_L24_except_error)
++              if (__Pyx_GetException(&__pyx_t_13, &__pyx_t_9, &__pyx_t_14) < 0) __PYX_ERR(14, 206, __pyx_L24_except_error)
+               __Pyx_XGOTREF(__pyx_t_13);
+               __Pyx_XGOTREF(__pyx_t_9);
+               __Pyx_XGOTREF(__pyx_t_14);
+ 
+-              /* "src/lxml/iterparse.pxi":205
++              /* "src/lxml/iterparse.pxi":207
+  *                         return next(self._events)
+  *                     except StopIteration:
+  *                         break             # <<<<<<<<<<<<<<
+@@ -193721,7 +193721,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
+             }
+             goto __pyx_L24_except_error;
+ 
+-            /* "src/lxml/iterparse.pxi":202
++            /* "src/lxml/iterparse.pxi":204
+  *                     self._error = e
+  *                     self._close_source()
+  *                     try:             # <<<<<<<<<<<<<<
+@@ -193755,7 +193755,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
+         }
+         goto __pyx_L14_except_error;
+ 
+-        /* "src/lxml/iterparse.pxi":194
++        /* "src/lxml/iterparse.pxi":196
+  *             done = False
+  *             while not done:
+  *                 try:             # <<<<<<<<<<<<<<
+@@ -193795,7 +193795,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
+     }
+     __pyx_L11_break:;
+ 
+-    /* "src/lxml/iterparse.pxi":191
++    /* "src/lxml/iterparse.pxi":193
+  *             pass
+  *         context = <_SaxParserContext>self._parser._getPushParserContext()
+  *         if self._source is not None:             # <<<<<<<<<<<<<<
+@@ -193804,7 +193804,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
+  */
+   }
+ 
+-  /* "src/lxml/iterparse.pxi":207
++  /* "src/lxml/iterparse.pxi":209
+  *                         break
+  *         # nothing left to read or return
+  *         if self._error is not None:             # <<<<<<<<<<<<<<
+@@ -193814,7 +193814,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
+   __pyx_t_7 = (__pyx_v_self->_error != Py_None);
+   if (unlikely(__pyx_t_7)) {
+ 
+-    /* "src/lxml/iterparse.pxi":208
++    /* "src/lxml/iterparse.pxi":210
+  *         # nothing left to read or return
+  *         if self._error is not None:
+  *             error = self._error             # <<<<<<<<<<<<<<
+@@ -193826,7 +193826,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
+     __pyx_v_error = __pyx_t_8;
+     __pyx_t_8 = 0;
+ 
+-    /* "src/lxml/iterparse.pxi":209
++    /* "src/lxml/iterparse.pxi":211
+  *         if self._error is not None:
+  *             error = self._error
+  *             self._error = None             # <<<<<<<<<<<<<<
+@@ -193839,7 +193839,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
+     __Pyx_DECREF(__pyx_v_self->_error);
+     __pyx_v_self->_error = Py_None;
+ 
+-    /* "src/lxml/iterparse.pxi":210
++    /* "src/lxml/iterparse.pxi":212
+  *             error = self._error
+  *             self._error = None
+  *             raise error             # <<<<<<<<<<<<<<
+@@ -193847,9 +193847,9 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
+  *                 and not context._validator.isvalid()):
+  */
+     __Pyx_Raise(__pyx_v_error, 0, 0, 0);
+-    __PYX_ERR(14, 210, __pyx_L1_error)
++    __PYX_ERR(14, 212, __pyx_L1_error)
+ 
+-    /* "src/lxml/iterparse.pxi":207
++    /* "src/lxml/iterparse.pxi":209
+  *                         break
+  *         # nothing left to read or return
+  *         if self._error is not None:             # <<<<<<<<<<<<<<
+@@ -193858,7 +193858,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
+  */
+   }
+ 
+-  /* "src/lxml/iterparse.pxi":211
++  /* "src/lxml/iterparse.pxi":213
+  *             self._error = None
+  *             raise error
+  *         if (context._validator is not None             # <<<<<<<<<<<<<<
+@@ -193872,7 +193872,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
+     goto __pyx_L34_bool_binop_done;
+   }
+ 
+-  /* "src/lxml/iterparse.pxi":212
++  /* "src/lxml/iterparse.pxi":214
+  *             raise error
+  *         if (context._validator is not None
+  *                 and not context._validator.isvalid()):             # <<<<<<<<<<<<<<
+@@ -193883,7 +193883,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
+   __pyx_t_7 = __pyx_t_15;
+   __pyx_L34_bool_binop_done:;
+ 
+-  /* "src/lxml/iterparse.pxi":211
++  /* "src/lxml/iterparse.pxi":213
+  *             self._error = None
+  *             raise error
+  *         if (context._validator is not None             # <<<<<<<<<<<<<<
+@@ -193892,7 +193892,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
+  */
+   if (__pyx_t_7) {
+ 
+-    /* "src/lxml/iterparse.pxi":213
++    /* "src/lxml/iterparse.pxi":215
+  *         if (context._validator is not None
+  *                 and not context._validator.isvalid()):
+  *             _raiseParseError(context._c_ctxt, self._filename,             # <<<<<<<<<<<<<<
+@@ -193902,7 +193902,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
+     __pyx_t_8 = __pyx_v_self->_filename;
+     __Pyx_INCREF(__pyx_t_8);
+ 
+-    /* "src/lxml/iterparse.pxi":214
++    /* "src/lxml/iterparse.pxi":216
+  *                 and not context._validator.isvalid()):
+  *             _raiseParseError(context._c_ctxt, self._filename,
+  *                              context._error_log)             # <<<<<<<<<<<<<<
+@@ -193912,18 +193912,18 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
+     __pyx_t_4 = ((PyObject *)__pyx_v_context->__pyx_base._error_log);
+     __Pyx_INCREF(__pyx_t_4);
+ 
+-    /* "src/lxml/iterparse.pxi":213
++    /* "src/lxml/iterparse.pxi":215
+  *         if (context._validator is not None
+  *                 and not context._validator.isvalid()):
+  *             _raiseParseError(context._c_ctxt, self._filename,             # <<<<<<<<<<<<<<
+  *                              context._error_log)
+  *         # no errors => all done
+  */
+-    __pyx_t_6 = __pyx_f_4lxml_5etree__raiseParseError(__pyx_v_context->__pyx_base._c_ctxt, __pyx_t_8, ((struct __pyx_obj_4lxml_5etree__ErrorLog *)__pyx_t_4)); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(14, 213, __pyx_L1_error)
++    __pyx_t_6 = __pyx_f_4lxml_5etree__raiseParseError(__pyx_v_context->__pyx_base._c_ctxt, __pyx_t_8, ((struct __pyx_obj_4lxml_5etree__ErrorLog *)__pyx_t_4)); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(14, 215, __pyx_L1_error)
+     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ 
+-    /* "src/lxml/iterparse.pxi":211
++    /* "src/lxml/iterparse.pxi":213
+  *             self._error = None
+  *             raise error
+  *         if (context._validator is not None             # <<<<<<<<<<<<<<
+@@ -193932,7 +193932,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
+  */
+   }
+ 
+-  /* "src/lxml/iterparse.pxi":216
++  /* "src/lxml/iterparse.pxi":218
+  *                              context._error_log)
+  *         # no errors => all done
+  *         raise StopIteration             # <<<<<<<<<<<<<<
+@@ -193942,7 +193942,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
+   __pyx_error_without_exception = 1;
+   goto __pyx_L1_error;;
+ 
+-  /* "src/lxml/iterparse.pxi":185
++  /* "src/lxml/iterparse.pxi":187
+  *         return self
+  * 
+  *     def __next__(self):             # <<<<<<<<<<<<<<
+@@ -193971,7 +193971,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
+   return __pyx_r;
+ }
+ 
+-/* "src/lxml/iterparse.pxi":219
++/* "src/lxml/iterparse.pxi":221
+  * 
+  *     @cython.final
+  *     cdef bint _read_more_events(self, _SaxParserContext context) except -123:             # <<<<<<<<<<<<<<
+@@ -194002,14 +194002,14 @@ static int __pyx_f_4lxml_5etree_9iterparse__read_more_events(struct __pyx_obj_4l
+   int __pyx_clineno = 0;
+   __Pyx_RefNannySetupContext("_read_more_events", 1);
+ 
+-  /* "src/lxml/iterparse.pxi":220
++  /* "src/lxml/iterparse.pxi":222
+  *     @cython.final
+  *     cdef bint _read_more_events(self, _SaxParserContext context) except -123:
+  *         data = self._source.read(__ITERPARSE_CHUNK_SIZE)             # <<<<<<<<<<<<<<
+  *         if not isinstance(data, bytes):
+  *             self._close_source()
+  */
+-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_source, __pyx_n_s_read); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 220, __pyx_L1_error)
++  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_source, __pyx_n_s_read); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 222, __pyx_L1_error)
+   __Pyx_GOTREF(__pyx_t_2);
+   __pyx_t_3 = NULL;
+   __pyx_t_4 = 0;
+@@ -194029,14 +194029,14 @@ static int __pyx_f_4lxml_5etree_9iterparse__read_more_events(struct __pyx_obj_4l
+     PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_int_32768};
+     __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
+     __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+-    if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 220, __pyx_L1_error)
++    if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 222, __pyx_L1_error)
+     __Pyx_GOTREF(__pyx_t_1);
+     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+   }
+   __pyx_v_data = __pyx_t_1;
+   __pyx_t_1 = 0;
+ 
+-  /* "src/lxml/iterparse.pxi":221
++  /* "src/lxml/iterparse.pxi":223
+  *     cdef bint _read_more_events(self, _SaxParserContext context) except -123:
+  *         data = self._source.read(__ITERPARSE_CHUNK_SIZE)
+  *         if not isinstance(data, bytes):             # <<<<<<<<<<<<<<
+@@ -194047,7 +194047,7 @@ static int __pyx_f_4lxml_5etree_9iterparse__read_more_events(struct __pyx_obj_4l
+   __pyx_t_6 = (!__pyx_t_5);
+   if (unlikely(__pyx_t_6)) {
+ 
+-    /* "src/lxml/iterparse.pxi":222
++    /* "src/lxml/iterparse.pxi":224
+  *         data = self._source.read(__ITERPARSE_CHUNK_SIZE)
+  *         if not isinstance(data, bytes):
+  *             self._close_source()             # <<<<<<<<<<<<<<
+@@ -194056,25 +194056,25 @@ static int __pyx_f_4lxml_5etree_9iterparse__read_more_events(struct __pyx_obj_4l
+  */
+ #pragma GCC diagnostic push
+     #pragma GCC diagnostic ignored "-Wincompatible-pointer-types"
+-    __pyx_t_1 = __pyx_f_4lxml_5etree_9iterparse__close_source(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 222, __pyx_L1_error)
++    __pyx_t_1 = __pyx_f_4lxml_5etree_9iterparse__close_source(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 224, __pyx_L1_error)
+     #pragma GCC diagnostic pop
+     __Pyx_GOTREF(__pyx_t_1);
+     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ 
+-    /* "src/lxml/iterparse.pxi":223
++    /* "src/lxml/iterparse.pxi":225
+  *         if not isinstance(data, bytes):
+  *             self._close_source()
+  *             raise TypeError("reading file objects must return bytes objects")             # <<<<<<<<<<<<<<
+  *         if not data:
+  *             try:
+  */
+-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__92, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 223, __pyx_L1_error)
++    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__92, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 225, __pyx_L1_error)
+     __Pyx_GOTREF(__pyx_t_1);
+     __Pyx_Raise(__pyx_t_1, 0, 0, 0);
+     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+-    __PYX_ERR(14, 223, __pyx_L1_error)
++    __PYX_ERR(14, 225, __pyx_L1_error)
+ 
+-    /* "src/lxml/iterparse.pxi":221
++    /* "src/lxml/iterparse.pxi":223
+  *     cdef bint _read_more_events(self, _SaxParserContext context) except -123:
+  *         data = self._source.read(__ITERPARSE_CHUNK_SIZE)
+  *         if not isinstance(data, bytes):             # <<<<<<<<<<<<<<
+@@ -194083,18 +194083,18 @@ static int __pyx_f_4lxml_5etree_9iterparse__read_more_events(struct __pyx_obj_4l
+  */
+   }
+ 
+-  /* "src/lxml/iterparse.pxi":224
++  /* "src/lxml/iterparse.pxi":226
+  *             self._close_source()
+  *             raise TypeError("reading file objects must return bytes objects")
+  *         if not data:             # <<<<<<<<<<<<<<
+  *             try:
+  *                 self.root = self._parser.close()
+  */
+-  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_data); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(14, 224, __pyx_L1_error)
++  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_data); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(14, 226, __pyx_L1_error)
+   __pyx_t_5 = (!__pyx_t_6);
+   if (__pyx_t_5) {
+ 
+-    /* "src/lxml/iterparse.pxi":225
++    /* "src/lxml/iterparse.pxi":227
+  *             raise TypeError("reading file objects must return bytes objects")
+  *         if not data:
+  *             try:             # <<<<<<<<<<<<<<
+@@ -194103,14 +194103,14 @@ static int __pyx_f_4lxml_5etree_9iterparse__read_more_events(struct __pyx_obj_4l
+  */
+     /*try:*/ {
+ 
+-      /* "src/lxml/iterparse.pxi":226
++      /* "src/lxml/iterparse.pxi":228
+  *         if not data:
+  *             try:
+  *                 self.root = self._parser.close()             # <<<<<<<<<<<<<<
+  *             finally:
+  *                 self._close_source()
+  */
+-      __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__FeedParser *)__pyx_v_self->_parser->__pyx_base.__pyx_vtab)->close(__pyx_v_self->_parser, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 226, __pyx_L6_error)
++      __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__FeedParser *)__pyx_v_self->_parser->__pyx_base.__pyx_vtab)->close(__pyx_v_self->_parser, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 228, __pyx_L6_error)
+       __Pyx_GOTREF(__pyx_t_1);
+       __Pyx_GIVEREF(__pyx_t_1);
+       __Pyx_GOTREF(__pyx_v_self->root);
+@@ -194119,7 +194119,7 @@ static int __pyx_f_4lxml_5etree_9iterparse__read_more_events(struct __pyx_obj_4l
+       __pyx_t_1 = 0;
+     }
+ 
+-    /* "src/lxml/iterparse.pxi":228
++    /* "src/lxml/iterparse.pxi":230
+  *                 self.root = self._parser.close()
+  *             finally:
+  *                 self._close_source()             # <<<<<<<<<<<<<<
+@@ -194130,7 +194130,7 @@ static int __pyx_f_4lxml_5etree_9iterparse__read_more_events(struct __pyx_obj_4l
+       /*normal exit:*/{
+ #pragma GCC diagnostic push
+         #pragma GCC diagnostic ignored "-Wincompatible-pointer-types"
+-        __pyx_t_1 = __pyx_f_4lxml_5etree_9iterparse__close_source(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 228, __pyx_L1_error)
++        __pyx_t_1 = __pyx_f_4lxml_5etree_9iterparse__close_source(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 230, __pyx_L1_error)
+         #pragma GCC diagnostic pop
+         __Pyx_GOTREF(__pyx_t_1);
+         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+@@ -194156,7 +194156,7 @@ static int __pyx_f_4lxml_5etree_9iterparse__read_more_events(struct __pyx_obj_4l
+         {
+ #pragma GCC diagnostic push
+           #pragma GCC diagnostic ignored "-Wincompatible-pointer-types"
+-          __pyx_t_1 = __pyx_f_4lxml_5etree_9iterparse__close_source(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 228, __pyx_L9_error)
++          __pyx_t_1 = __pyx_f_4lxml_5etree_9iterparse__close_source(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 230, __pyx_L9_error)
+           #pragma GCC diagnostic pop
+           __Pyx_GOTREF(__pyx_t_1);
+           __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+@@ -194190,7 +194190,7 @@ static int __pyx_f_4lxml_5etree_9iterparse__read_more_events(struct __pyx_obj_4l
+       __pyx_L7:;
+     }
+ 
+-    /* "src/lxml/iterparse.pxi":229
++    /* "src/lxml/iterparse.pxi":231
+  *             finally:
+  *                 self._close_source()
+  *             return True             # <<<<<<<<<<<<<<
+@@ -194200,7 +194200,7 @@ static int __pyx_f_4lxml_5etree_9iterparse__read_more_events(struct __pyx_obj_4l
+     __pyx_r = 1;
+     goto __pyx_L0;
+ 
+-    /* "src/lxml/iterparse.pxi":224
++    /* "src/lxml/iterparse.pxi":226
+  *             self._close_source()
+  *             raise TypeError("reading file objects must return bytes objects")
+  *         if not data:             # <<<<<<<<<<<<<<
+@@ -194209,18 +194209,18 @@ static int __pyx_f_4lxml_5etree_9iterparse__read_more_events(struct __pyx_obj_4l
+  */
+   }
+ 
+-  /* "src/lxml/iterparse.pxi":230
++  /* "src/lxml/iterparse.pxi":232
+  *                 self._close_source()
+  *             return True
+  *         self._parser.feed(data)             # <<<<<<<<<<<<<<
+  *         return False
+  * 
+  */
+-  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__FeedParser *)__pyx_v_self->_parser->__pyx_base.__pyx_vtab)->feed(__pyx_v_self->_parser, __pyx_v_data, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 230, __pyx_L1_error)
++  __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__FeedParser *)__pyx_v_self->_parser->__pyx_base.__pyx_vtab)->feed(__pyx_v_self->_parser, __pyx_v_data, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 232, __pyx_L1_error)
+   __Pyx_GOTREF(__pyx_t_1);
+   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ 
+-  /* "src/lxml/iterparse.pxi":231
++  /* "src/lxml/iterparse.pxi":233
+  *             return True
+  *         self._parser.feed(data)
+  *         return False             # <<<<<<<<<<<<<<
+@@ -194230,7 +194230,7 @@ static int __pyx_f_4lxml_5etree_9iterparse__read_more_events(struct __pyx_obj_4l
+   __pyx_r = 0;
+   goto __pyx_L0;
+ 
+-  /* "src/lxml/iterparse.pxi":219
++  /* "src/lxml/iterparse.pxi":221
+  * 
+  *     @cython.final
+  *     cdef bint _read_more_events(self, _SaxParserContext context) except -123:             # <<<<<<<<<<<<<<
+@@ -194251,7 +194251,7 @@ static int __pyx_f_4lxml_5etree_9iterparse__read_more_events(struct __pyx_obj_4l
+   return __pyx_r;
+ }
+ 
+-/* "src/lxml/iterparse.pxi":61
++/* "src/lxml/iterparse.pxi":63
+  *     cdef object _tag
+  *     cdef object _events
+  *     cdef readonly object root             # <<<<<<<<<<<<<<
+@@ -194290,7 +194290,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_4root___get__(struct __pyx_obj
+   return __pyx_r;
+ }
+ 
+-/* "src/lxml/iterparse.pxi":263
++/* "src/lxml/iterparse.pxi":265
+  *     cdef _IterwalkSkipStates _skip_state
+  * 
+  *     def __init__(self, element_or_tree, events=(u"end",), tag=None):             # <<<<<<<<<<<<<<
+@@ -194342,26 +194342,26 @@ static int __pyx_pw_4lxml_5etree_8iterwalk_1__init__(PyObject *__pyx_v_self, PyO
+           (void)__Pyx_Arg_NewRef_VARARGS(values[0]);
+           kw_args--;
+         }
+-        else if (unlikely(PyErr_Occurred())) __PYX_ERR(14, 263, __pyx_L3_error)
++        else if (unlikely(PyErr_Occurred())) __PYX_ERR(14, 265, __pyx_L3_error)
+         else goto __pyx_L5_argtuple_error;
+         CYTHON_FALLTHROUGH;
+         case  1:
+         if (kw_args > 0) {
+           PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_events);
+           if (value) { values[1] = __Pyx_Arg_NewRef_VARARGS(value); kw_args--; }
+-          else if (unlikely(PyErr_Occurred())) __PYX_ERR(14, 263, __pyx_L3_error)
++          else if (unlikely(PyErr_Occurred())) __PYX_ERR(14, 265, __pyx_L3_error)
+         }
+         CYTHON_FALLTHROUGH;
+         case  2:
+         if (kw_args > 0) {
+           PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_tag);
+           if (value) { values[2] = __Pyx_Arg_NewRef_VARARGS(value); kw_args--; }
+-          else if (unlikely(PyErr_Occurred())) __PYX_ERR(14, 263, __pyx_L3_error)
++          else if (unlikely(PyErr_Occurred())) __PYX_ERR(14, 265, __pyx_L3_error)
+         }
+       }
+       if (unlikely(kw_args > 0)) {
+         const Py_ssize_t kwd_pos_args = __pyx_nargs;
+-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__init__") < 0)) __PYX_ERR(14, 263, __pyx_L3_error)
++        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__init__") < 0)) __PYX_ERR(14, 265, __pyx_L3_error)
+       }
+     } else {
+       switch (__pyx_nargs) {
+@@ -194380,7 +194380,7 @@ static int __pyx_pw_4lxml_5etree_8iterwalk_1__init__(PyObject *__pyx_v_self, PyO
+   }
+   goto __pyx_L6_skip;
+   __pyx_L5_argtuple_error:;
+-  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 3, __pyx_nargs); __PYX_ERR(14, 263, __pyx_L3_error)
++  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 3, __pyx_nargs); __PYX_ERR(14, 265, __pyx_L3_error)
+   __pyx_L6_skip:;
+   goto __pyx_L4_argument_unpacking_done;
+   __pyx_L3_error:;
+@@ -194426,29 +194426,29 @@ static int __pyx_pf_4lxml_5etree_8iterwalk___init__(struct __pyx_obj_4lxml_5etre
+   int __pyx_clineno = 0;
+   __Pyx_RefNannySetupContext("__init__", 1);
+ 
+-  /* "src/lxml/iterparse.pxi":266
++  /* "src/lxml/iterparse.pxi":268
+  *         cdef _Element root
+  *         cdef int ns_count
+  *         root = _rootNodeOrRaise(element_or_tree)             # <<<<<<<<<<<<<<
+  *         self._event_filter = _buildParseEventFilter(events)
+  *         if tag is None or tag == '*':
+  */
+-  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__rootNodeOrRaise(__pyx_v_element_or_tree)); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 266, __pyx_L1_error)
++  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__rootNodeOrRaise(__pyx_v_element_or_tree)); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 268, __pyx_L1_error)
+   __Pyx_GOTREF(__pyx_t_1);
+   __pyx_v_root = ((struct LxmlElement *)__pyx_t_1);
+   __pyx_t_1 = 0;
+ 
+-  /* "src/lxml/iterparse.pxi":267
++  /* "src/lxml/iterparse.pxi":269
+  *         cdef int ns_count
+  *         root = _rootNodeOrRaise(element_or_tree)
+  *         self._event_filter = _buildParseEventFilter(events)             # <<<<<<<<<<<<<<
+  *         if tag is None or tag == '*':
+  *             self._matcher = None
+  */
+-  __pyx_t_2 = __pyx_f_4lxml_5etree__buildParseEventFilter(__pyx_v_events); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(14, 267, __pyx_L1_error)
++  __pyx_t_2 = __pyx_f_4lxml_5etree__buildParseEventFilter(__pyx_v_events); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(14, 269, __pyx_L1_error)
+   __pyx_v_self->_event_filter = __pyx_t_2;
+ 
+-  /* "src/lxml/iterparse.pxi":268
++  /* "src/lxml/iterparse.pxi":270
+  *         root = _rootNodeOrRaise(element_or_tree)
+  *         self._event_filter = _buildParseEventFilter(events)
+  *         if tag is None or tag == '*':             # <<<<<<<<<<<<<<
+@@ -194461,12 +194461,12 @@ static int __pyx_pf_4lxml_5etree_8iterwalk___init__(struct __pyx_obj_4lxml_5etre
+     __pyx_t_3 = __pyx_t_4;
+     goto __pyx_L4_bool_binop_done;
+   }
+-  __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_v_tag, __pyx_n_s__20, Py_EQ)); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(14, 268, __pyx_L1_error)
++  __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_v_tag, __pyx_n_s__20, Py_EQ)); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(14, 270, __pyx_L1_error)
+   __pyx_t_3 = __pyx_t_4;
+   __pyx_L4_bool_binop_done:;
+   if (__pyx_t_3) {
+ 
+-    /* "src/lxml/iterparse.pxi":269
++    /* "src/lxml/iterparse.pxi":271
+  *         self._event_filter = _buildParseEventFilter(events)
+  *         if tag is None or tag == '*':
+  *             self._matcher = None             # <<<<<<<<<<<<<<
+@@ -194479,7 +194479,7 @@ static int __pyx_pf_4lxml_5etree_8iterwalk___init__(struct __pyx_obj_4lxml_5etre
+     __Pyx_DECREF((PyObject *)__pyx_v_self->_matcher);
+     __pyx_v_self->_matcher = ((struct __pyx_obj_4lxml_5etree__MultiTagMatcher *)Py_None);
+ 
+-    /* "src/lxml/iterparse.pxi":268
++    /* "src/lxml/iterparse.pxi":270
+  *         root = _rootNodeOrRaise(element_or_tree)
+  *         self._event_filter = _buildParseEventFilter(events)
+  *         if tag is None or tag == '*':             # <<<<<<<<<<<<<<
+@@ -194489,7 +194489,7 @@ static int __pyx_pf_4lxml_5etree_8iterwalk___init__(struct __pyx_obj_4lxml_5etre
+     goto __pyx_L3;
+   }
+ 
+-  /* "src/lxml/iterparse.pxi":271
++  /* "src/lxml/iterparse.pxi":273
+  *             self._matcher = None
+  *         else:
+  *             self._matcher = _MultiTagMatcher.__new__(_MultiTagMatcher, tag)             # <<<<<<<<<<<<<<
+@@ -194497,12 +194497,12 @@ static int __pyx_pf_4lxml_5etree_8iterwalk___init__(struct __pyx_obj_4lxml_5etre
+  *         self._events = []
+  */
+   /*else*/ {
+-    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 271, __pyx_L1_error)
++    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 273, __pyx_L1_error)
+     __Pyx_GOTREF(__pyx_t_1);
+     __Pyx_INCREF(__pyx_v_tag);
+     __Pyx_GIVEREF(__pyx_v_tag);
+-    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_tag)) __PYX_ERR(14, 271, __pyx_L1_error);
+-    __pyx_t_5 = ((PyObject *)__pyx_tp_new_4lxml_5etree__MultiTagMatcher(((PyTypeObject *)__pyx_ptype_4lxml_5etree__MultiTagMatcher), __pyx_t_1, NULL)); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 271, __pyx_L1_error)
++    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_tag)) __PYX_ERR(14, 273, __pyx_L1_error);
++    __pyx_t_5 = ((PyObject *)__pyx_tp_new_4lxml_5etree__MultiTagMatcher(((PyTypeObject *)__pyx_ptype_4lxml_5etree__MultiTagMatcher), __pyx_t_1, NULL)); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 273, __pyx_L1_error)
+     __Pyx_GOTREF((PyObject *)__pyx_t_5);
+     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+     __Pyx_GIVEREF((PyObject *)__pyx_t_5);
+@@ -194513,14 +194513,14 @@ static int __pyx_pf_4lxml_5etree_8iterwalk___init__(struct __pyx_obj_4lxml_5etre
+   }
+   __pyx_L3:;
+ 
+-  /* "src/lxml/iterparse.pxi":272
++  /* "src/lxml/iterparse.pxi":274
+  *         else:
+  *             self._matcher = _MultiTagMatcher.__new__(_MultiTagMatcher, tag)
+  *         self._node_stack  = []             # <<<<<<<<<<<<<<
+  *         self._events = []
+  *         self._pop_event = self._events.pop
+  */
+-  __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 272, __pyx_L1_error)
++  __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 274, __pyx_L1_error)
+   __Pyx_GOTREF(__pyx_t_5);
+   __Pyx_GIVEREF(__pyx_t_5);
+   __Pyx_GOTREF(__pyx_v_self->_node_stack);
+@@ -194528,14 +194528,14 @@ static int __pyx_pf_4lxml_5etree_8iterwalk___init__(struct __pyx_obj_4lxml_5etre
+   __pyx_v_self->_node_stack = ((PyObject*)__pyx_t_5);
+   __pyx_t_5 = 0;
+ 
+-  /* "src/lxml/iterparse.pxi":273
++  /* "src/lxml/iterparse.pxi":275
+  *             self._matcher = _MultiTagMatcher.__new__(_MultiTagMatcher, tag)
+  *         self._node_stack  = []
+  *         self._events = []             # <<<<<<<<<<<<<<
+  *         self._pop_event = self._events.pop
+  *         self._skip_state = IWSKIP_CANNOT_SKIP  # ignore all skip requests by default
+  */
+-  __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 273, __pyx_L1_error)
++  __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 275, __pyx_L1_error)
+   __Pyx_GOTREF(__pyx_t_5);
+   __Pyx_GIVEREF(__pyx_t_5);
+   __Pyx_GOTREF(__pyx_v_self->_events);
+@@ -194543,14 +194543,14 @@ static int __pyx_pf_4lxml_5etree_8iterwalk___init__(struct __pyx_obj_4lxml_5etre
+   __pyx_v_self->_events = ((PyObject*)__pyx_t_5);
+   __pyx_t_5 = 0;
+ 
+-  /* "src/lxml/iterparse.pxi":274
++  /* "src/lxml/iterparse.pxi":276
+  *         self._node_stack  = []
+  *         self._events = []
+  *         self._pop_event = self._events.pop             # <<<<<<<<<<<<<<
+  *         self._skip_state = IWSKIP_CANNOT_SKIP  # ignore all skip requests by default
+  * 
+  */
+-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_events, __pyx_n_s_pop); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 274, __pyx_L1_error)
++  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_events, __pyx_n_s_pop); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 276, __pyx_L1_error)
+   __Pyx_GOTREF(__pyx_t_5);
+   __Pyx_GIVEREF(__pyx_t_5);
+   __Pyx_GOTREF(__pyx_v_self->_pop_event);
+@@ -194558,7 +194558,7 @@ static int __pyx_pf_4lxml_5etree_8iterwalk___init__(struct __pyx_obj_4lxml_5etre
+   __pyx_v_self->_pop_event = __pyx_t_5;
+   __pyx_t_5 = 0;
+ 
+-  /* "src/lxml/iterparse.pxi":275
++  /* "src/lxml/iterparse.pxi":277
+  *         self._events = []
+  *         self._pop_event = self._events.pop
+  *         self._skip_state = IWSKIP_CANNOT_SKIP  # ignore all skip requests by default             # <<<<<<<<<<<<<<
+@@ -194567,7 +194567,7 @@ static int __pyx_pf_4lxml_5etree_8iterwalk___init__(struct __pyx_obj_4lxml_5etre
+  */
+   __pyx_v_self->_skip_state = __pyx_e_4lxml_5etree_IWSKIP_CANNOT_SKIP;
+ 
+-  /* "src/lxml/iterparse.pxi":277
++  /* "src/lxml/iterparse.pxi":279
+  *         self._skip_state = IWSKIP_CANNOT_SKIP  # ignore all skip requests by default
+  * 
+  *         if self._event_filter:             # <<<<<<<<<<<<<<
+@@ -194577,7 +194577,7 @@ static int __pyx_pf_4lxml_5etree_8iterwalk___init__(struct __pyx_obj_4lxml_5etre
+   __pyx_t_3 = (__pyx_v_self->_event_filter != 0);
+   if (__pyx_t_3) {
+ 
+-    /* "src/lxml/iterparse.pxi":278
++    /* "src/lxml/iterparse.pxi":280
+  * 
+  *         if self._event_filter:
+  *             self._index = 0             # <<<<<<<<<<<<<<
+@@ -194586,7 +194586,7 @@ static int __pyx_pf_4lxml_5etree_8iterwalk___init__(struct __pyx_obj_4lxml_5etre
+  */
+     __pyx_v_self->_index = 0;
+ 
+-    /* "src/lxml/iterparse.pxi":279
++    /* "src/lxml/iterparse.pxi":281
+  *         if self._event_filter:
+  *             self._index = 0
+  *             if self._matcher is not None and self._event_filter & PARSE_EVENT_FILTER_START:             # <<<<<<<<<<<<<<
+@@ -194604,7 +194604,7 @@ static int __pyx_pf_4lxml_5etree_8iterwalk___init__(struct __pyx_obj_4lxml_5etre
+     __pyx_L8_bool_binop_done:;
+     if (__pyx_t_3) {
+ 
+-      /* "src/lxml/iterparse.pxi":280
++      /* "src/lxml/iterparse.pxi":282
+  *             self._index = 0
+  *             if self._matcher is not None and self._event_filter & PARSE_EVENT_FILTER_START:
+  *                 self._matcher.cacheTags(root._doc)             # <<<<<<<<<<<<<<
+@@ -194615,11 +194615,11 @@ static int __pyx_pf_4lxml_5etree_8iterwalk___init__(struct __pyx_obj_4lxml_5etre
+       __Pyx_INCREF(__pyx_t_5);
+ #pragma GCC diagnostic push
+       #pragma GCC diagnostic ignored "-Wincompatible-pointer-types"
+-      __pyx_t_2 = __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(__pyx_v_self->_matcher, ((struct LxmlDocument *)__pyx_t_5), NULL); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(14, 280, __pyx_L1_error)
++      __pyx_t_2 = __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(__pyx_v_self->_matcher, ((struct LxmlDocument *)__pyx_t_5), NULL); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(14, 282, __pyx_L1_error)
+       #pragma GCC diagnostic pop
+       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ 
+-      /* "src/lxml/iterparse.pxi":279
++      /* "src/lxml/iterparse.pxi":281
+  *         if self._event_filter:
+  *             self._index = 0
+  *             if self._matcher is not None and self._event_filter & PARSE_EVENT_FILTER_START:             # <<<<<<<<<<<<<<
+@@ -194628,7 +194628,7 @@ static int __pyx_pf_4lxml_5etree_8iterwalk___init__(struct __pyx_obj_4lxml_5etre
+  */
+     }
+ 
+-    /* "src/lxml/iterparse.pxi":283
++    /* "src/lxml/iterparse.pxi":285
+  * 
+  *             # When processing an ElementTree, add events for the preceding comments/PIs.
+  *             if self._event_filter & (PARSE_EVENT_FILTER_COMMENT | PARSE_EVENT_FILTER_PI):             # <<<<<<<<<<<<<<
+@@ -194638,7 +194638,7 @@ static int __pyx_pf_4lxml_5etree_8iterwalk___init__(struct __pyx_obj_4lxml_5etre
+     __pyx_t_3 = ((__pyx_v_self->_event_filter & (__pyx_e_4lxml_5etree_PARSE_EVENT_FILTER_COMMENT | __pyx_e_4lxml_5etree_PARSE_EVENT_FILTER_PI)) != 0);
+     if (__pyx_t_3) {
+ 
+-      /* "src/lxml/iterparse.pxi":284
++      /* "src/lxml/iterparse.pxi":286
+  *             # When processing an ElementTree, add events for the preceding comments/PIs.
+  *             if self._event_filter & (PARSE_EVENT_FILTER_COMMENT | PARSE_EVENT_FILTER_PI):
+  *                 if isinstance(element_or_tree, _ElementTree):             # <<<<<<<<<<<<<<
+@@ -194648,7 +194648,7 @@ static int __pyx_pf_4lxml_5etree_8iterwalk___init__(struct __pyx_obj_4lxml_5etre
+       __pyx_t_3 = __Pyx_TypeCheck(__pyx_v_element_or_tree, __pyx_ptype_4lxml_5etree__ElementTree); 
+       if (__pyx_t_3) {
+ 
+-        /* "src/lxml/iterparse.pxi":285
++        /* "src/lxml/iterparse.pxi":287
+  *             if self._event_filter & (PARSE_EVENT_FILTER_COMMENT | PARSE_EVENT_FILTER_PI):
+  *                 if isinstance(element_or_tree, _ElementTree):
+  *                     self._include_siblings = root             # <<<<<<<<<<<<<<
+@@ -194661,26 +194661,26 @@ static int __pyx_pf_4lxml_5etree_8iterwalk___init__(struct __pyx_obj_4lxml_5etre
+         __Pyx_DECREF(__pyx_v_self->_include_siblings);
+         __pyx_v_self->_include_siblings = ((PyObject *)__pyx_v_root);
+ 
+-        /* "src/lxml/iterparse.pxi":286
++        /* "src/lxml/iterparse.pxi":288
+  *                 if isinstance(element_or_tree, _ElementTree):
+  *                     self._include_siblings = root
+  *                     for elem in list(root.itersiblings(preceding=True))[::-1]:             # <<<<<<<<<<<<<<
+  *                         if self._event_filter & PARSE_EVENT_FILTER_COMMENT and elem.tag is Comment:
+  *                             self._events.append((u'comment', elem))
+  */
+-        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_root), __pyx_n_s_itersiblings); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 286, __pyx_L1_error)
++        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_root), __pyx_n_s_itersiblings); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 288, __pyx_L1_error)
+         __Pyx_GOTREF(__pyx_t_5);
+-        __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 286, __pyx_L1_error)
++        __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 288, __pyx_L1_error)
+         __Pyx_GOTREF(__pyx_t_1);
+-        if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_preceding, Py_True) < 0) __PYX_ERR(14, 286, __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(14, 286, __pyx_L1_error)
++        if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_preceding, Py_True) < 0) __PYX_ERR(14, 288, __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(14, 288, __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;
+-        __pyx_t_1 = __Pyx_PySequence_ListKeepNew(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 286, __pyx_L1_error)
++        __pyx_t_1 = __Pyx_PySequence_ListKeepNew(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 288, __pyx_L1_error)
+         __Pyx_GOTREF(__pyx_t_1);
+         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+-        __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_slice__54); if (unlikely(!__pyx_t_6)) __PYX_ERR(14, 286, __pyx_L1_error)
++        __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_slice__54); if (unlikely(!__pyx_t_6)) __PYX_ERR(14, 288, __pyx_L1_error)
+         __Pyx_GOTREF(__pyx_t_6);
+         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+         __pyx_t_1 = __pyx_t_6; __Pyx_INCREF(__pyx_t_1);
+@@ -194690,20 +194690,20 @@ static int __pyx_pf_4lxml_5etree_8iterwalk___init__(struct __pyx_obj_4lxml_5etre
+           {
+             Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
+             #if !CYTHON_ASSUME_SAFE_MACROS
+-            if (unlikely((__pyx_temp < 0))) __PYX_ERR(14, 286, __pyx_L1_error)
++            if (unlikely((__pyx_temp < 0))) __PYX_ERR(14, 288, __pyx_L1_error)
+             #endif
+             if (__pyx_t_7 >= __pyx_temp) break;
+           }
+           #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+-          __pyx_t_6 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_7); __Pyx_INCREF(__pyx_t_6); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(14, 286, __pyx_L1_error)
++          __pyx_t_6 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_7); __Pyx_INCREF(__pyx_t_6); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(14, 288, __pyx_L1_error)
+           #else
+-          __pyx_t_6 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_6)) __PYX_ERR(14, 286, __pyx_L1_error)
++          __pyx_t_6 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_6)) __PYX_ERR(14, 288, __pyx_L1_error)
+           __Pyx_GOTREF(__pyx_t_6);
+           #endif
+           __Pyx_XDECREF_SET(__pyx_v_elem, __pyx_t_6);
+           __pyx_t_6 = 0;
+ 
+-          /* "src/lxml/iterparse.pxi":287
++          /* "src/lxml/iterparse.pxi":289
+  *                     self._include_siblings = root
+  *                     for elem in list(root.itersiblings(preceding=True))[::-1]:
+  *                         if self._event_filter & PARSE_EVENT_FILTER_COMMENT and elem.tag is Comment:             # <<<<<<<<<<<<<<
+@@ -194716,9 +194716,9 @@ static int __pyx_pf_4lxml_5etree_8iterwalk___init__(struct __pyx_obj_4lxml_5etre
+             __pyx_t_3 = __pyx_t_4;
+             goto __pyx_L15_bool_binop_done;
+           }
+-          __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_elem, __pyx_n_s_tag); if (unlikely(!__pyx_t_6)) __PYX_ERR(14, 287, __pyx_L1_error)
++          __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_elem, __pyx_n_s_tag); if (unlikely(!__pyx_t_6)) __PYX_ERR(14, 289, __pyx_L1_error)
+           __Pyx_GOTREF(__pyx_t_6);
+-          __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_Comment); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 287, __pyx_L1_error)
++          __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_Comment); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 289, __pyx_L1_error)
+           __Pyx_GOTREF(__pyx_t_5);
+           __pyx_t_4 = (__pyx_t_6 == __pyx_t_5);
+           __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+@@ -194727,7 +194727,7 @@ static int __pyx_pf_4lxml_5etree_8iterwalk___init__(struct __pyx_obj_4lxml_5etre
+           __pyx_L15_bool_binop_done:;
+           if (__pyx_t_3) {
+ 
+-            /* "src/lxml/iterparse.pxi":288
++            /* "src/lxml/iterparse.pxi":290
+  *                     for elem in list(root.itersiblings(preceding=True))[::-1]:
+  *                         if self._event_filter & PARSE_EVENT_FILTER_COMMENT and elem.tag is Comment:
+  *                             self._events.append((u'comment', elem))             # <<<<<<<<<<<<<<
+@@ -194736,20 +194736,20 @@ static int __pyx_pf_4lxml_5etree_8iterwalk___init__(struct __pyx_obj_4lxml_5etre
+  */
+             if (unlikely(__pyx_v_self->_events == Py_None)) {
+               PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
+-              __PYX_ERR(14, 288, __pyx_L1_error)
++              __PYX_ERR(14, 290, __pyx_L1_error)
+             }
+-            __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 288, __pyx_L1_error)
++            __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 290, __pyx_L1_error)
+             __Pyx_GOTREF(__pyx_t_5);
+             __Pyx_INCREF(__pyx_n_u_comment);
+             __Pyx_GIVEREF(__pyx_n_u_comment);
+-            if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_n_u_comment)) __PYX_ERR(14, 288, __pyx_L1_error);
++            if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_n_u_comment)) __PYX_ERR(14, 290, __pyx_L1_error);
+             __Pyx_INCREF(__pyx_v_elem);
+             __Pyx_GIVEREF(__pyx_v_elem);
+-            if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_elem)) __PYX_ERR(14, 288, __pyx_L1_error);
+-            __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_self->_events, __pyx_t_5); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(14, 288, __pyx_L1_error)
++            if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_elem)) __PYX_ERR(14, 290, __pyx_L1_error);
++            __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_self->_events, __pyx_t_5); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(14, 290, __pyx_L1_error)
+             __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ 
+-            /* "src/lxml/iterparse.pxi":287
++            /* "src/lxml/iterparse.pxi":289
+  *                     self._include_siblings = root
+  *                     for elem in list(root.itersiblings(preceding=True))[::-1]:
+  *                         if self._event_filter & PARSE_EVENT_FILTER_COMMENT and elem.tag is Comment:             # <<<<<<<<<<<<<<
+@@ -194759,7 +194759,7 @@ static int __pyx_pf_4lxml_5etree_8iterwalk___init__(struct __pyx_obj_4lxml_5etre
+             goto __pyx_L14;
+           }
+ 
+-          /* "src/lxml/iterparse.pxi":289
++          /* "src/lxml/iterparse.pxi":291
+  *                         if self._event_filter & PARSE_EVENT_FILTER_COMMENT and elem.tag is Comment:
+  *                             self._events.append((u'comment', elem))
+  *                         elif self._event_filter & PARSE_EVENT_FILTER_PI and elem.tag is PI:             # <<<<<<<<<<<<<<
+@@ -194772,9 +194772,9 @@ static int __pyx_pf_4lxml_5etree_8iterwalk___init__(struct __pyx_obj_4lxml_5etre
+             __pyx_t_3 = __pyx_t_4;
+             goto __pyx_L17_bool_binop_done;
+           }
+-          __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_elem, __pyx_n_s_tag); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 289, __pyx_L1_error)
++          __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_elem, __pyx_n_s_tag); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 291, __pyx_L1_error)
+           __Pyx_GOTREF(__pyx_t_5);
+-          __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_PI); if (unlikely(!__pyx_t_6)) __PYX_ERR(14, 289, __pyx_L1_error)
++          __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_PI); if (unlikely(!__pyx_t_6)) __PYX_ERR(14, 291, __pyx_L1_error)
+           __Pyx_GOTREF(__pyx_t_6);
+           __pyx_t_4 = (__pyx_t_5 == __pyx_t_6);
+           __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+@@ -194783,7 +194783,7 @@ static int __pyx_pf_4lxml_5etree_8iterwalk___init__(struct __pyx_obj_4lxml_5etre
+           __pyx_L17_bool_binop_done:;
+           if (__pyx_t_3) {
+ 
+-            /* "src/lxml/iterparse.pxi":290
++            /* "src/lxml/iterparse.pxi":292
+  *                             self._events.append((u'comment', elem))
+  *                         elif self._event_filter & PARSE_EVENT_FILTER_PI and elem.tag is PI:
+  *                             self._events.append((u'pi', elem))             # <<<<<<<<<<<<<<
+@@ -194792,20 +194792,20 @@ static int __pyx_pf_4lxml_5etree_8iterwalk___init__(struct __pyx_obj_4lxml_5etre
+  */
+             if (unlikely(__pyx_v_self->_events == Py_None)) {
+               PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
+-              __PYX_ERR(14, 290, __pyx_L1_error)
++              __PYX_ERR(14, 292, __pyx_L1_error)
+             }
+-            __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(14, 290, __pyx_L1_error)
++            __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(14, 292, __pyx_L1_error)
+             __Pyx_GOTREF(__pyx_t_6);
+             __Pyx_INCREF(__pyx_n_u_pi);
+             __Pyx_GIVEREF(__pyx_n_u_pi);
+-            if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_n_u_pi)) __PYX_ERR(14, 290, __pyx_L1_error);
++            if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_n_u_pi)) __PYX_ERR(14, 292, __pyx_L1_error);
+             __Pyx_INCREF(__pyx_v_elem);
+             __Pyx_GIVEREF(__pyx_v_elem);
+-            if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_elem)) __PYX_ERR(14, 290, __pyx_L1_error);
+-            __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_self->_events, __pyx_t_6); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(14, 290, __pyx_L1_error)
++            if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_elem)) __PYX_ERR(14, 292, __pyx_L1_error);
++            __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_self->_events, __pyx_t_6); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(14, 292, __pyx_L1_error)
+             __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ 
+-            /* "src/lxml/iterparse.pxi":289
++            /* "src/lxml/iterparse.pxi":291
+  *                         if self._event_filter & PARSE_EVENT_FILTER_COMMENT and elem.tag is Comment:
+  *                             self._events.append((u'comment', elem))
+  *                         elif self._event_filter & PARSE_EVENT_FILTER_PI and elem.tag is PI:             # <<<<<<<<<<<<<<
+@@ -194815,7 +194815,7 @@ static int __pyx_pf_4lxml_5etree_8iterwalk___init__(struct __pyx_obj_4lxml_5etre
+           }
+           __pyx_L14:;
+ 
+-          /* "src/lxml/iterparse.pxi":286
++          /* "src/lxml/iterparse.pxi":288
+  *                 if isinstance(element_or_tree, _ElementTree):
+  *                     self._include_siblings = root
+  *                     for elem in list(root.itersiblings(preceding=True))[::-1]:             # <<<<<<<<<<<<<<
+@@ -194825,7 +194825,7 @@ static int __pyx_pf_4lxml_5etree_8iterwalk___init__(struct __pyx_obj_4lxml_5etre
+         }
+         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ 
+-        /* "src/lxml/iterparse.pxi":284
++        /* "src/lxml/iterparse.pxi":286
+  *             # When processing an ElementTree, add events for the preceding comments/PIs.
+  *             if self._event_filter & (PARSE_EVENT_FILTER_COMMENT | PARSE_EVENT_FILTER_PI):
+  *                 if isinstance(element_or_tree, _ElementTree):             # <<<<<<<<<<<<<<
+@@ -194834,7 +194834,7 @@ static int __pyx_pf_4lxml_5etree_8iterwalk___init__(struct __pyx_obj_4lxml_5etre
+  */
+       }
+ 
+-      /* "src/lxml/iterparse.pxi":283
++      /* "src/lxml/iterparse.pxi":285
+  * 
+  *             # When processing an ElementTree, add events for the preceding comments/PIs.
+  *             if self._event_filter & (PARSE_EVENT_FILTER_COMMENT | PARSE_EVENT_FILTER_PI):             # <<<<<<<<<<<<<<
+@@ -194843,7 +194843,7 @@ static int __pyx_pf_4lxml_5etree_8iterwalk___init__(struct __pyx_obj_4lxml_5etre
+  */
+     }
+ 
+-    /* "src/lxml/iterparse.pxi":292
++    /* "src/lxml/iterparse.pxi":294
+  *                             self._events.append((u'pi', elem))
+  * 
+  *             ns_count = self._start_node(root)             # <<<<<<<<<<<<<<
+@@ -194852,11 +194852,11 @@ static int __pyx_pf_4lxml_5etree_8iterwalk___init__(struct __pyx_obj_4lxml_5etre
+  */
+ #pragma GCC diagnostic push
+     #pragma GCC diagnostic ignored "-Wincompatible-pointer-types"
+-    __pyx_t_2 = __pyx_f_4lxml_5etree_8iterwalk__start_node(__pyx_v_self, __pyx_v_root); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(14, 292, __pyx_L1_error)
++    __pyx_t_2 = __pyx_f_4lxml_5etree_8iterwalk__start_node(__pyx_v_self, __pyx_v_root); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(14, 294, __pyx_L1_error)
+     #pragma GCC diagnostic pop
+     __pyx_v_ns_count = __pyx_t_2;
+ 
+-    /* "src/lxml/iterparse.pxi":293
++    /* "src/lxml/iterparse.pxi":295
+  * 
+  *             ns_count = self._start_node(root)
+  *             self._node_stack.append( (root, ns_count) )             # <<<<<<<<<<<<<<
+@@ -194865,22 +194865,22 @@ static int __pyx_pf_4lxml_5etree_8iterwalk___init__(struct __pyx_obj_4lxml_5etre
+  */
+     if (unlikely(__pyx_v_self->_node_stack == Py_None)) {
+       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
+-      __PYX_ERR(14, 293, __pyx_L1_error)
++      __PYX_ERR(14, 295, __pyx_L1_error)
+     }
+-    __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_ns_count); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 293, __pyx_L1_error)
++    __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_ns_count); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 295, __pyx_L1_error)
+     __Pyx_GOTREF(__pyx_t_1);
+-    __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(14, 293, __pyx_L1_error)
++    __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(14, 295, __pyx_L1_error)
+     __Pyx_GOTREF(__pyx_t_6);
+     __Pyx_INCREF((PyObject *)__pyx_v_root);
+     __Pyx_GIVEREF((PyObject *)__pyx_v_root);
+-    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject *)__pyx_v_root))) __PYX_ERR(14, 293, __pyx_L1_error);
++    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject *)__pyx_v_root))) __PYX_ERR(14, 295, __pyx_L1_error);
+     __Pyx_GIVEREF(__pyx_t_1);
+-    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_1)) __PYX_ERR(14, 293, __pyx_L1_error);
++    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_1)) __PYX_ERR(14, 295, __pyx_L1_error);
+     __pyx_t_1 = 0;
+-    __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_self->_node_stack, __pyx_t_6); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(14, 293, __pyx_L1_error)
++    __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_self->_node_stack, __pyx_t_6); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(14, 295, __pyx_L1_error)
+     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ 
+-    /* "src/lxml/iterparse.pxi":277
++    /* "src/lxml/iterparse.pxi":279
+  *         self._skip_state = IWSKIP_CANNOT_SKIP  # ignore all skip requests by default
+  * 
+  *         if self._event_filter:             # <<<<<<<<<<<<<<
+@@ -194890,7 +194890,7 @@ static int __pyx_pf_4lxml_5etree_8iterwalk___init__(struct __pyx_obj_4lxml_5etre
+     goto __pyx_L6;
+   }
+ 
+-  /* "src/lxml/iterparse.pxi":295
++  /* "src/lxml/iterparse.pxi":297
+  *             self._node_stack.append( (root, ns_count) )
+  *         else:
+  *             self._index = -1             # <<<<<<<<<<<<<<
+@@ -194902,7 +194902,7 @@ static int __pyx_pf_4lxml_5etree_8iterwalk___init__(struct __pyx_obj_4lxml_5etre
+   }
+   __pyx_L6:;
+ 
+-  /* "src/lxml/iterparse.pxi":263
++  /* "src/lxml/iterparse.pxi":265
+  *     cdef _IterwalkSkipStates _skip_state
+  * 
+  *     def __init__(self, element_or_tree, events=(u"end",), tag=None):             # <<<<<<<<<<<<<<
+@@ -194926,7 +194926,7 @@ static int __pyx_pf_4lxml_5etree_8iterwalk___init__(struct __pyx_obj_4lxml_5etre
+   return __pyx_r;
+ }
+ 
+-/* "src/lxml/iterparse.pxi":297
++/* "src/lxml/iterparse.pxi":299
+  *             self._index = -1
+  * 
+  *     def __iter__(self):             # <<<<<<<<<<<<<<
+@@ -194954,7 +194954,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_2__iter__(struct __pyx_obj_4lxm
+   __Pyx_RefNannyDeclarations
+   __Pyx_RefNannySetupContext("__iter__", 1);
+ 
+-  /* "src/lxml/iterparse.pxi":298
++  /* "src/lxml/iterparse.pxi":300
+  * 
+  *     def __iter__(self):
+  *         return self             # <<<<<<<<<<<<<<
+@@ -194966,7 +194966,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_2__iter__(struct __pyx_obj_4lxm
+   __pyx_r = ((PyObject *)__pyx_v_self);
+   goto __pyx_L0;
+ 
+-  /* "src/lxml/iterparse.pxi":297
++  /* "src/lxml/iterparse.pxi":299
+  *             self._index = -1
+  * 
+  *     def __iter__(self):             # <<<<<<<<<<<<<<
+@@ -194981,7 +194981,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_2__iter__(struct __pyx_obj_4lxm
+   return __pyx_r;
+ }
+ 
+-/* "src/lxml/iterparse.pxi":300
++/* "src/lxml/iterparse.pxi":302
+  *         return self
+  * 
+  *     def __next__(self):             # <<<<<<<<<<<<<<
+@@ -195024,7 +195024,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
+   int __pyx_clineno = 0;
+   __Pyx_RefNannySetupContext("__next__", 1);
+ 
+-  /* "src/lxml/iterparse.pxi":304
++  /* "src/lxml/iterparse.pxi":306
+  *         cdef _Element node
+  *         cdef _Element next_node
+  *         cdef int ns_count = 0             # <<<<<<<<<<<<<<
+@@ -195033,7 +195033,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
+  */
+   __pyx_v_ns_count = 0;
+ 
+-  /* "src/lxml/iterparse.pxi":305
++  /* "src/lxml/iterparse.pxi":307
+  *         cdef _Element next_node
+  *         cdef int ns_count = 0
+  *         if self._events:             # <<<<<<<<<<<<<<
+@@ -195043,7 +195043,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
+   __pyx_t_1 = (__pyx_v_self->_events != Py_None)&&(PyList_GET_SIZE(__pyx_v_self->_events) != 0);
+   if (__pyx_t_1) {
+ 
+-    /* "src/lxml/iterparse.pxi":306
++    /* "src/lxml/iterparse.pxi":308
+  *         cdef int ns_count = 0
+  *         if self._events:
+  *             return self._next_event()             # <<<<<<<<<<<<<<
+@@ -195053,14 +195053,14 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
+     __Pyx_XDECREF(__pyx_r);
+ #pragma GCC diagnostic push
+     #pragma GCC diagnostic ignored "-Wincompatible-pointer-types"
+-    __pyx_t_2 = __pyx_f_4lxml_5etree_8iterwalk__next_event(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 306, __pyx_L1_error)
++    __pyx_t_2 = __pyx_f_4lxml_5etree_8iterwalk__next_event(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 308, __pyx_L1_error)
+     #pragma GCC diagnostic pop
+     __Pyx_GOTREF(__pyx_t_2);
+     __pyx_r = __pyx_t_2;
+     __pyx_t_2 = 0;
+     goto __pyx_L0;
+ 
+-    /* "src/lxml/iterparse.pxi":305
++    /* "src/lxml/iterparse.pxi":307
+  *         cdef _Element next_node
+  *         cdef int ns_count = 0
+  *         if self._events:             # <<<<<<<<<<<<<<
+@@ -195069,7 +195069,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
+  */
+   }
+ 
+-  /* "src/lxml/iterparse.pxi":307
++  /* "src/lxml/iterparse.pxi":309
+  *         if self._events:
+  *             return self._next_event()
+  *         if self._matcher is not None and self._index >= 0:             # <<<<<<<<<<<<<<
+@@ -195087,7 +195087,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
+   __pyx_L5_bool_binop_done:;
+   if (__pyx_t_1) {
+ 
+-    /* "src/lxml/iterparse.pxi":308
++    /* "src/lxml/iterparse.pxi":310
+  *             return self._next_event()
+  *         if self._matcher is not None and self._index >= 0:
+  *             node = self._node_stack[self._index][0]             # <<<<<<<<<<<<<<
+@@ -195096,18 +195096,18 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
+  */
+     if (unlikely(__pyx_v_self->_node_stack == Py_None)) {
+       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+-      __PYX_ERR(14, 308, __pyx_L1_error)
++      __PYX_ERR(14, 310, __pyx_L1_error)
+     }
+-    __pyx_t_2 = __Pyx_GetItemInt_List(__pyx_v_self->_node_stack, __pyx_v_self->_index, int, 1, __Pyx_PyInt_From_int, 1, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 308, __pyx_L1_error)
++    __pyx_t_2 = __Pyx_GetItemInt_List(__pyx_v_self->_node_stack, __pyx_v_self->_index, int, 1, __Pyx_PyInt_From_int, 1, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 310, __pyx_L1_error)
+     __Pyx_GOTREF(__pyx_t_2);
+-    __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 308, __pyx_L1_error)
++    __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 310, __pyx_L1_error)
+     __Pyx_GOTREF(__pyx_t_4);
+     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_4lxml_5etree__Element))))) __PYX_ERR(14, 308, __pyx_L1_error)
++    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_4lxml_5etree__Element))))) __PYX_ERR(14, 310, __pyx_L1_error)
+     __pyx_v_node = ((struct LxmlElement *)__pyx_t_4);
+     __pyx_t_4 = 0;
+ 
+-    /* "src/lxml/iterparse.pxi":309
++    /* "src/lxml/iterparse.pxi":311
+  *         if self._matcher is not None and self._index >= 0:
+  *             node = self._node_stack[self._index][0]
+  *             self._matcher.cacheTags(node._doc)             # <<<<<<<<<<<<<<
+@@ -195118,11 +195118,11 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
+     __Pyx_INCREF(__pyx_t_4);
+ #pragma GCC diagnostic push
+     #pragma GCC diagnostic ignored "-Wincompatible-pointer-types"
+-    __pyx_t_5 = __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(__pyx_v_self->_matcher, ((struct LxmlDocument *)__pyx_t_4), NULL); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(14, 309, __pyx_L1_error)
++    __pyx_t_5 = __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(__pyx_v_self->_matcher, ((struct LxmlDocument *)__pyx_t_4), NULL); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(14, 311, __pyx_L1_error)
+     #pragma GCC diagnostic pop
+     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ 
+-    /* "src/lxml/iterparse.pxi":307
++    /* "src/lxml/iterparse.pxi":309
+  *         if self._events:
+  *             return self._next_event()
+  *         if self._matcher is not None and self._index >= 0:             # <<<<<<<<<<<<<<
+@@ -195131,7 +195131,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
+  */
+   }
+ 
+-  /* "src/lxml/iterparse.pxi":312
++  /* "src/lxml/iterparse.pxi":314
+  * 
+  *         # find next node
+  *         while self._index >= 0:             # <<<<<<<<<<<<<<
+@@ -195142,7 +195142,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
+     __pyx_t_1 = (__pyx_v_self->_index >= 0);
+     if (!__pyx_t_1) break;
+ 
+-    /* "src/lxml/iterparse.pxi":313
++    /* "src/lxml/iterparse.pxi":315
+  *         # find next node
+  *         while self._index >= 0:
+  *             node = self._node_stack[self._index][0]             # <<<<<<<<<<<<<<
+@@ -195151,18 +195151,18 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
+  */
+     if (unlikely(__pyx_v_self->_node_stack == Py_None)) {
+       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+-      __PYX_ERR(14, 313, __pyx_L1_error)
++      __PYX_ERR(14, 315, __pyx_L1_error)
+     }
+-    __pyx_t_4 = __Pyx_GetItemInt_List(__pyx_v_self->_node_stack, __pyx_v_self->_index, int, 1, __Pyx_PyInt_From_int, 1, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 313, __pyx_L1_error)
++    __pyx_t_4 = __Pyx_GetItemInt_List(__pyx_v_self->_node_stack, __pyx_v_self->_index, int, 1, __Pyx_PyInt_From_int, 1, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 315, __pyx_L1_error)
+     __Pyx_GOTREF(__pyx_t_4);
+-    __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 313, __pyx_L1_error)
++    __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 315, __pyx_L1_error)
+     __Pyx_GOTREF(__pyx_t_2);
+     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+-    if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_4lxml_5etree__Element))))) __PYX_ERR(14, 313, __pyx_L1_error)
++    if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_4lxml_5etree__Element))))) __PYX_ERR(14, 315, __pyx_L1_error)
+     __Pyx_XDECREF_SET(__pyx_v_node, ((struct LxmlElement *)__pyx_t_2));
+     __pyx_t_2 = 0;
+ 
+-    /* "src/lxml/iterparse.pxi":315
++    /* "src/lxml/iterparse.pxi":317
+  *             node = self._node_stack[self._index][0]
+  * 
+  *             if self._skip_state == IWSKIP_SKIP_NEXT:             # <<<<<<<<<<<<<<
+@@ -195172,7 +195172,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
+     __pyx_t_1 = (__pyx_v_self->_skip_state == __pyx_e_4lxml_5etree_IWSKIP_SKIP_NEXT);
+     if (__pyx_t_1) {
+ 
+-      /* "src/lxml/iterparse.pxi":316
++      /* "src/lxml/iterparse.pxi":318
+  * 
+  *             if self._skip_state == IWSKIP_SKIP_NEXT:
+  *                 c_child = NULL             # <<<<<<<<<<<<<<
+@@ -195181,7 +195181,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
+  */
+       __pyx_v_c_child = NULL;
+ 
+-      /* "src/lxml/iterparse.pxi":315
++      /* "src/lxml/iterparse.pxi":317
+  *             node = self._node_stack[self._index][0]
+  * 
+  *             if self._skip_state == IWSKIP_SKIP_NEXT:             # <<<<<<<<<<<<<<
+@@ -195191,7 +195191,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
+       goto __pyx_L9;
+     }
+ 
+-    /* "src/lxml/iterparse.pxi":318
++    /* "src/lxml/iterparse.pxi":320
+  *                 c_child = NULL
+  *             else:
+  *                 c_child = self._process_non_elements(             # <<<<<<<<<<<<<<
+@@ -195200,7 +195200,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
+  */
+     /*else*/ {
+ 
+-      /* "src/lxml/iterparse.pxi":319
++      /* "src/lxml/iterparse.pxi":321
+  *             else:
+  *                 c_child = self._process_non_elements(
+  *                     node._doc, _findChildForwards(node._c_node, 0))             # <<<<<<<<<<<<<<
+@@ -195210,7 +195210,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
+       __pyx_t_2 = ((PyObject *)__pyx_v_node->_doc);
+       __Pyx_INCREF(__pyx_t_2);
+ 
+-      /* "src/lxml/iterparse.pxi":318
++      /* "src/lxml/iterparse.pxi":320
+  *                 c_child = NULL
+  *             else:
+  *                 c_child = self._process_non_elements(             # <<<<<<<<<<<<<<
+@@ -195219,14 +195219,14 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
+  */
+ #pragma GCC diagnostic push
+       #pragma GCC diagnostic ignored "-Wincompatible-pointer-types"
+-      __pyx_t_6 = __pyx_f_4lxml_5etree_8iterwalk__process_non_elements(__pyx_v_self, ((struct LxmlDocument *)__pyx_t_2), __pyx_f_4lxml_5etree__findChildForwards(__pyx_v_node->_c_node, 0)); if (unlikely(PyErr_Occurred())) __PYX_ERR(14, 318, __pyx_L1_error)
++      __pyx_t_6 = __pyx_f_4lxml_5etree_8iterwalk__process_non_elements(__pyx_v_self, ((struct LxmlDocument *)__pyx_t_2), __pyx_f_4lxml_5etree__findChildForwards(__pyx_v_node->_c_node, 0)); if (unlikely(PyErr_Occurred())) __PYX_ERR(14, 320, __pyx_L1_error)
+       #pragma GCC diagnostic pop
+       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+       __pyx_v_c_child = __pyx_t_6;
+     }
+     __pyx_L9:;
+ 
+-    /* "src/lxml/iterparse.pxi":320
++    /* "src/lxml/iterparse.pxi":322
+  *                 c_child = self._process_non_elements(
+  *                     node._doc, _findChildForwards(node._c_node, 0))
+  *             self._skip_state = IWSKIP_CANNOT_SKIP             # <<<<<<<<<<<<<<
+@@ -195235,7 +195235,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
+  */
+     __pyx_v_self->_skip_state = __pyx_e_4lxml_5etree_IWSKIP_CANNOT_SKIP;
+ 
+-    /* "src/lxml/iterparse.pxi":322
++    /* "src/lxml/iterparse.pxi":324
+  *             self._skip_state = IWSKIP_CANNOT_SKIP
+  * 
+  *             while c_child is NULL:             # <<<<<<<<<<<<<<
+@@ -195246,7 +195246,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
+       __pyx_t_1 = (__pyx_v_c_child == NULL);
+       if (!__pyx_t_1) break;
+ 
+-      /* "src/lxml/iterparse.pxi":324
++      /* "src/lxml/iterparse.pxi":326
+  *             while c_child is NULL:
+  *                 # back off through parents
+  *                 self._index -= 1             # <<<<<<<<<<<<<<
+@@ -195255,7 +195255,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
+  */
+       __pyx_v_self->_index = (__pyx_v_self->_index - 1);
+ 
+-      /* "src/lxml/iterparse.pxi":325
++      /* "src/lxml/iterparse.pxi":327
+  *                 # back off through parents
+  *                 self._index -= 1
+  *                 node = self._end_node()             # <<<<<<<<<<<<<<
+@@ -195264,13 +195264,13 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
+  */
+ #pragma GCC diagnostic push
+       #pragma GCC diagnostic ignored "-Wincompatible-pointer-types"
+-      __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree_8iterwalk__end_node(__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 325, __pyx_L1_error)
++      __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree_8iterwalk__end_node(__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 327, __pyx_L1_error)
+       #pragma GCC diagnostic pop
+       __Pyx_GOTREF(__pyx_t_2);
+       __Pyx_DECREF_SET(__pyx_v_node, ((struct LxmlElement *)__pyx_t_2));
+       __pyx_t_2 = 0;
+ 
+-      /* "src/lxml/iterparse.pxi":326
++      /* "src/lxml/iterparse.pxi":328
+  *                 self._index -= 1
+  *                 node = self._end_node()
+  *                 if self._index < 0:             # <<<<<<<<<<<<<<
+@@ -195280,7 +195280,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
+       __pyx_t_1 = (__pyx_v_self->_index < 0);
+       if (__pyx_t_1) {
+ 
+-        /* "src/lxml/iterparse.pxi":327
++        /* "src/lxml/iterparse.pxi":329
+  *                 node = self._end_node()
+  *                 if self._index < 0:
+  *                     break             # <<<<<<<<<<<<<<
+@@ -195289,7 +195289,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
+  */
+         goto __pyx_L11_break;
+ 
+-        /* "src/lxml/iterparse.pxi":326
++        /* "src/lxml/iterparse.pxi":328
+  *                 self._index -= 1
+  *                 node = self._end_node()
+  *                 if self._index < 0:             # <<<<<<<<<<<<<<
+@@ -195298,7 +195298,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
+  */
+       }
+ 
+-      /* "src/lxml/iterparse.pxi":329
++      /* "src/lxml/iterparse.pxi":331
+  *                     break
+  *                 c_child = self._process_non_elements(
+  *                     node._doc, _nextElement(node._c_node))             # <<<<<<<<<<<<<<
+@@ -195308,7 +195308,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
+       __pyx_t_2 = ((PyObject *)__pyx_v_node->_doc);
+       __Pyx_INCREF(__pyx_t_2);
+ 
+-      /* "src/lxml/iterparse.pxi":328
++      /* "src/lxml/iterparse.pxi":330
+  *                 if self._index < 0:
+  *                     break
+  *                 c_child = self._process_non_elements(             # <<<<<<<<<<<<<<
+@@ -195317,14 +195317,14 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
+  */
+ #pragma GCC diagnostic push
+       #pragma GCC diagnostic ignored "-Wincompatible-pointer-types"
+-      __pyx_t_6 = __pyx_f_4lxml_5etree_8iterwalk__process_non_elements(__pyx_v_self, ((struct LxmlDocument *)__pyx_t_2), __pyx_f_4lxml_5etree__nextElement(__pyx_v_node->_c_node)); if (unlikely(PyErr_Occurred())) __PYX_ERR(14, 328, __pyx_L1_error)
++      __pyx_t_6 = __pyx_f_4lxml_5etree_8iterwalk__process_non_elements(__pyx_v_self, ((struct LxmlDocument *)__pyx_t_2), __pyx_f_4lxml_5etree__nextElement(__pyx_v_node->_c_node)); if (unlikely(PyErr_Occurred())) __PYX_ERR(14, 330, __pyx_L1_error)
+       #pragma GCC diagnostic pop
+       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+       __pyx_v_c_child = __pyx_t_6;
+     }
+     __pyx_L11_break:;
+ 
+-    /* "src/lxml/iterparse.pxi":331
++    /* "src/lxml/iterparse.pxi":333
+  *                     node._doc, _nextElement(node._c_node))
+  * 
+  *             if c_child is not NULL:             # <<<<<<<<<<<<<<
+@@ -195334,7 +195334,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
+     __pyx_t_1 = (__pyx_v_c_child != NULL);
+     if (__pyx_t_1) {
+ 
+-      /* "src/lxml/iterparse.pxi":332
++      /* "src/lxml/iterparse.pxi":334
+  * 
+  *             if c_child is not NULL:
+  *                 next_node = _elementFactory(node._doc, c_child)             # <<<<<<<<<<<<<<
+@@ -195343,13 +195343,13 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
+  */
+       __pyx_t_2 = ((PyObject *)__pyx_v_node->_doc);
+       __Pyx_INCREF(__pyx_t_2);
+-      __pyx_t_4 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(((struct LxmlDocument *)__pyx_t_2), __pyx_v_c_child)); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 332, __pyx_L1_error)
++      __pyx_t_4 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(((struct LxmlDocument *)__pyx_t_2), __pyx_v_c_child)); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 334, __pyx_L1_error)
+       __Pyx_GOTREF(__pyx_t_4);
+       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+       __Pyx_XDECREF_SET(__pyx_v_next_node, ((struct LxmlElement *)__pyx_t_4));
+       __pyx_t_4 = 0;
+ 
+-      /* "src/lxml/iterparse.pxi":333
++      /* "src/lxml/iterparse.pxi":335
+  *             if c_child is not NULL:
+  *                 next_node = _elementFactory(node._doc, c_child)
+  *                 if self._event_filter & (PARSE_EVENT_FILTER_START |             # <<<<<<<<<<<<<<
+@@ -195359,7 +195359,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
+       __pyx_t_1 = ((__pyx_v_self->_event_filter & (__pyx_e_4lxml_5etree_PARSE_EVENT_FILTER_START | __pyx_e_4lxml_5etree_PARSE_EVENT_FILTER_START_NS)) != 0);
+       if (__pyx_t_1) {
+ 
+-        /* "src/lxml/iterparse.pxi":335
++        /* "src/lxml/iterparse.pxi":337
+  *                 if self._event_filter & (PARSE_EVENT_FILTER_START |
+  *                                          PARSE_EVENT_FILTER_START_NS):
+  *                     ns_count = self._start_node(next_node)             # <<<<<<<<<<<<<<
+@@ -195368,11 +195368,11 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
+  */
+ #pragma GCC diagnostic push
+         #pragma GCC diagnostic ignored "-Wincompatible-pointer-types"
+-        __pyx_t_5 = __pyx_f_4lxml_5etree_8iterwalk__start_node(__pyx_v_self, __pyx_v_next_node); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(14, 335, __pyx_L1_error)
++        __pyx_t_5 = __pyx_f_4lxml_5etree_8iterwalk__start_node(__pyx_v_self, __pyx_v_next_node); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(14, 337, __pyx_L1_error)
+         #pragma GCC diagnostic pop
+         __pyx_v_ns_count = __pyx_t_5;
+ 
+-        /* "src/lxml/iterparse.pxi":333
++        /* "src/lxml/iterparse.pxi":335
+  *             if c_child is not NULL:
+  *                 next_node = _elementFactory(node._doc, c_child)
+  *                 if self._event_filter & (PARSE_EVENT_FILTER_START |             # <<<<<<<<<<<<<<
+@@ -195382,7 +195382,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
+         goto __pyx_L14;
+       }
+ 
+-      /* "src/lxml/iterparse.pxi":336
++      /* "src/lxml/iterparse.pxi":338
+  *                                          PARSE_EVENT_FILTER_START_NS):
+  *                     ns_count = self._start_node(next_node)
+  *                 elif self._event_filter & PARSE_EVENT_FILTER_END_NS:             # <<<<<<<<<<<<<<
+@@ -195392,7 +195392,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
+       __pyx_t_1 = ((__pyx_v_self->_event_filter & __pyx_e_4lxml_5etree_PARSE_EVENT_FILTER_END_NS) != 0);
+       if (__pyx_t_1) {
+ 
+-        /* "src/lxml/iterparse.pxi":337
++        /* "src/lxml/iterparse.pxi":339
+  *                     ns_count = self._start_node(next_node)
+  *                 elif self._event_filter & PARSE_EVENT_FILTER_END_NS:
+  *                     ns_count = _countNsDefs(next_node._c_node)             # <<<<<<<<<<<<<<
+@@ -195401,7 +195401,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
+  */
+         __pyx_v_ns_count = __pyx_f_4lxml_5etree__countNsDefs(__pyx_v_next_node->_c_node);
+ 
+-        /* "src/lxml/iterparse.pxi":336
++        /* "src/lxml/iterparse.pxi":338
+  *                                          PARSE_EVENT_FILTER_START_NS):
+  *                     ns_count = self._start_node(next_node)
+  *                 elif self._event_filter & PARSE_EVENT_FILTER_END_NS:             # <<<<<<<<<<<<<<
+@@ -195411,7 +195411,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
+       }
+       __pyx_L14:;
+ 
+-      /* "src/lxml/iterparse.pxi":338
++      /* "src/lxml/iterparse.pxi":340
+  *                 elif self._event_filter & PARSE_EVENT_FILTER_END_NS:
+  *                     ns_count = _countNsDefs(next_node._c_node)
+  *                 self._node_stack.append( (next_node, ns_count) )             # <<<<<<<<<<<<<<
+@@ -195420,22 +195420,22 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
+  */
+       if (unlikely(__pyx_v_self->_node_stack == Py_None)) {
+         PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
+-        __PYX_ERR(14, 338, __pyx_L1_error)
++        __PYX_ERR(14, 340, __pyx_L1_error)
+       }
+-      __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_ns_count); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 338, __pyx_L1_error)
++      __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_ns_count); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 340, __pyx_L1_error)
+       __Pyx_GOTREF(__pyx_t_4);
+-      __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 338, __pyx_L1_error)
++      __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 340, __pyx_L1_error)
+       __Pyx_GOTREF(__pyx_t_2);
+       __Pyx_INCREF((PyObject *)__pyx_v_next_node);
+       __Pyx_GIVEREF((PyObject *)__pyx_v_next_node);
+-      if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_next_node))) __PYX_ERR(14, 338, __pyx_L1_error);
++      if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_next_node))) __PYX_ERR(14, 340, __pyx_L1_error);
+       __Pyx_GIVEREF(__pyx_t_4);
+-      if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_4)) __PYX_ERR(14, 338, __pyx_L1_error);
++      if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_4)) __PYX_ERR(14, 340, __pyx_L1_error);
+       __pyx_t_4 = 0;
+-      __pyx_t_7 = __Pyx_PyList_Append(__pyx_v_self->_node_stack, __pyx_t_2); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(14, 338, __pyx_L1_error)
++      __pyx_t_7 = __Pyx_PyList_Append(__pyx_v_self->_node_stack, __pyx_t_2); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(14, 340, __pyx_L1_error)
+       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ 
+-      /* "src/lxml/iterparse.pxi":339
++      /* "src/lxml/iterparse.pxi":341
+  *                     ns_count = _countNsDefs(next_node._c_node)
+  *                 self._node_stack.append( (next_node, ns_count) )
+  *                 self._index += 1             # <<<<<<<<<<<<<<
+@@ -195444,7 +195444,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
+  */
+       __pyx_v_self->_index = (__pyx_v_self->_index + 1);
+ 
+-      /* "src/lxml/iterparse.pxi":331
++      /* "src/lxml/iterparse.pxi":333
+  *                     node._doc, _nextElement(node._c_node))
+  * 
+  *             if c_child is not NULL:             # <<<<<<<<<<<<<<
+@@ -195453,7 +195453,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
+  */
+     }
+ 
+-    /* "src/lxml/iterparse.pxi":340
++    /* "src/lxml/iterparse.pxi":342
+  *                 self._node_stack.append( (next_node, ns_count) )
+  *                 self._index += 1
+  *             if self._events:             # <<<<<<<<<<<<<<
+@@ -195463,7 +195463,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
+     __pyx_t_1 = (__pyx_v_self->_events != Py_None)&&(PyList_GET_SIZE(__pyx_v_self->_events) != 0);
+     if (__pyx_t_1) {
+ 
+-      /* "src/lxml/iterparse.pxi":341
++      /* "src/lxml/iterparse.pxi":343
+  *                 self._index += 1
+  *             if self._events:
+  *                 return self._next_event()             # <<<<<<<<<<<<<<
+@@ -195473,14 +195473,14 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
+       __Pyx_XDECREF(__pyx_r);
+ #pragma GCC diagnostic push
+       #pragma GCC diagnostic ignored "-Wincompatible-pointer-types"
+-      __pyx_t_2 = __pyx_f_4lxml_5etree_8iterwalk__next_event(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 341, __pyx_L1_error)
++      __pyx_t_2 = __pyx_f_4lxml_5etree_8iterwalk__next_event(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 343, __pyx_L1_error)
+       #pragma GCC diagnostic pop
+       __Pyx_GOTREF(__pyx_t_2);
+       __pyx_r = __pyx_t_2;
+       __pyx_t_2 = 0;
+       goto __pyx_L0;
+ 
+-      /* "src/lxml/iterparse.pxi":340
++      /* "src/lxml/iterparse.pxi":342
+  *                 self._node_stack.append( (next_node, ns_count) )
+  *                 self._index += 1
+  *             if self._events:             # <<<<<<<<<<<<<<
+@@ -195490,7 +195490,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
+     }
+   }
+ 
+-  /* "src/lxml/iterparse.pxi":343
++  /* "src/lxml/iterparse.pxi":345
+  *                 return self._next_event()
+  * 
+  *         if self._include_siblings is not None:             # <<<<<<<<<<<<<<
+@@ -195500,14 +195500,14 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
+   __pyx_t_1 = (__pyx_v_self->_include_siblings != Py_None);
+   if (__pyx_t_1) {
+ 
+-    /* "src/lxml/iterparse.pxi":344
++    /* "src/lxml/iterparse.pxi":346
+  * 
+  *         if self._include_siblings is not None:
+  *             node, self._include_siblings = self._include_siblings, None             # <<<<<<<<<<<<<<
+  *             self._process_non_elements(node._doc, _nextElement(node._c_node))
+  *             if self._events:
+  */
+-    if (!(likely(((__pyx_v_self->_include_siblings) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_self->_include_siblings, __pyx_ptype_4lxml_5etree__Element))))) __PYX_ERR(14, 344, __pyx_L1_error)
++    if (!(likely(((__pyx_v_self->_include_siblings) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_self->_include_siblings, __pyx_ptype_4lxml_5etree__Element))))) __PYX_ERR(14, 346, __pyx_L1_error)
+     __pyx_t_2 = __pyx_v_self->_include_siblings;
+     __Pyx_INCREF(__pyx_t_2);
+     __pyx_t_4 = Py_None;
+@@ -195520,7 +195520,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
+     __pyx_v_self->_include_siblings = __pyx_t_4;
+     __pyx_t_4 = 0;
+ 
+-    /* "src/lxml/iterparse.pxi":345
++    /* "src/lxml/iterparse.pxi":347
+  *         if self._include_siblings is not None:
+  *             node, self._include_siblings = self._include_siblings, None
+  *             self._process_non_elements(node._doc, _nextElement(node._c_node))             # <<<<<<<<<<<<<<
+@@ -195531,11 +195531,11 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
+     __Pyx_INCREF(__pyx_t_4);
+ #pragma GCC diagnostic push
+     #pragma GCC diagnostic ignored "-Wincompatible-pointer-types"
+-    __pyx_f_4lxml_5etree_8iterwalk__process_non_elements(__pyx_v_self, ((struct LxmlDocument *)__pyx_t_4), __pyx_f_4lxml_5etree__nextElement(__pyx_v_node->_c_node)); if (unlikely(PyErr_Occurred())) __PYX_ERR(14, 345, __pyx_L1_error)
++    __pyx_f_4lxml_5etree_8iterwalk__process_non_elements(__pyx_v_self, ((struct LxmlDocument *)__pyx_t_4), __pyx_f_4lxml_5etree__nextElement(__pyx_v_node->_c_node)); if (unlikely(PyErr_Occurred())) __PYX_ERR(14, 347, __pyx_L1_error)
+     #pragma GCC diagnostic pop
+     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ 
+-    /* "src/lxml/iterparse.pxi":346
++    /* "src/lxml/iterparse.pxi":348
+  *             node, self._include_siblings = self._include_siblings, None
+  *             self._process_non_elements(node._doc, _nextElement(node._c_node))
+  *             if self._events:             # <<<<<<<<<<<<<<
+@@ -195545,7 +195545,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
+     __pyx_t_1 = (__pyx_v_self->_events != Py_None)&&(PyList_GET_SIZE(__pyx_v_self->_events) != 0);
+     if (__pyx_t_1) {
+ 
+-      /* "src/lxml/iterparse.pxi":347
++      /* "src/lxml/iterparse.pxi":349
+  *             self._process_non_elements(node._doc, _nextElement(node._c_node))
+  *             if self._events:
+  *                 return self._next_event()             # <<<<<<<<<<<<<<
+@@ -195555,14 +195555,14 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
+       __Pyx_XDECREF(__pyx_r);
+ #pragma GCC diagnostic push
+       #pragma GCC diagnostic ignored "-Wincompatible-pointer-types"
+-      __pyx_t_4 = __pyx_f_4lxml_5etree_8iterwalk__next_event(__pyx_v_self); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 347, __pyx_L1_error)
++      __pyx_t_4 = __pyx_f_4lxml_5etree_8iterwalk__next_event(__pyx_v_self); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 349, __pyx_L1_error)
+       #pragma GCC diagnostic pop
+       __Pyx_GOTREF(__pyx_t_4);
+       __pyx_r = __pyx_t_4;
+       __pyx_t_4 = 0;
+       goto __pyx_L0;
+ 
+-      /* "src/lxml/iterparse.pxi":346
++      /* "src/lxml/iterparse.pxi":348
+  *             node, self._include_siblings = self._include_siblings, None
+  *             self._process_non_elements(node._doc, _nextElement(node._c_node))
+  *             if self._events:             # <<<<<<<<<<<<<<
+@@ -195571,7 +195571,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
+  */
+     }
+ 
+-    /* "src/lxml/iterparse.pxi":343
++    /* "src/lxml/iterparse.pxi":345
+  *                 return self._next_event()
+  * 
+  *         if self._include_siblings is not None:             # <<<<<<<<<<<<<<
+@@ -195580,7 +195580,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
+  */
+   }
+ 
+-  /* "src/lxml/iterparse.pxi":349
++  /* "src/lxml/iterparse.pxi":351
+  *                 return self._next_event()
+  * 
+  *         raise StopIteration             # <<<<<<<<<<<<<<
+@@ -195590,7 +195590,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
+   __pyx_error_without_exception = 1;
+   goto __pyx_L1_error;;
+ 
+-  /* "src/lxml/iterparse.pxi":300
++  /* "src/lxml/iterparse.pxi":302
+  *         return self
+  * 
+  *     def __next__(self):             # <<<<<<<<<<<<<<
+@@ -195614,7 +195614,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_4__next__(struct __pyx_obj_4lxm
+   return __pyx_r;
+ }
+ 
+-/* "src/lxml/iterparse.pxi":352
++/* "src/lxml/iterparse.pxi":354
+  * 
+  *     @cython.final
+  *     cdef xmlNode* _process_non_elements(self, _Document doc, xmlNode* c_node):             # <<<<<<<<<<<<<<
+@@ -195635,7 +195635,7 @@ static xmlNode *__pyx_f_4lxml_5etree_8iterwalk__process_non_elements(struct __py
+   int __pyx_clineno = 0;
+   __Pyx_RefNannySetupContext("_process_non_elements", 1);
+ 
+-  /* "src/lxml/iterparse.pxi":353
++  /* "src/lxml/iterparse.pxi":355
+  *     @cython.final
+  *     cdef xmlNode* _process_non_elements(self, _Document doc, xmlNode* c_node):
+  *         while c_node is not NULL and c_node.type != tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
+@@ -195654,7 +195654,7 @@ static xmlNode *__pyx_f_4lxml_5etree_8iterwalk__process_non_elements(struct __py
+     __pyx_L5_bool_binop_done:;
+     if (!__pyx_t_1) break;
+ 
+-    /* "src/lxml/iterparse.pxi":354
++    /* "src/lxml/iterparse.pxi":356
+  *     cdef xmlNode* _process_non_elements(self, _Document doc, xmlNode* c_node):
+  *         while c_node is not NULL and c_node.type != tree.XML_ELEMENT_NODE:
+  *             if c_node.type == tree.XML_COMMENT_NODE:             # <<<<<<<<<<<<<<
+@@ -195664,7 +195664,7 @@ static xmlNode *__pyx_f_4lxml_5etree_8iterwalk__process_non_elements(struct __py
+     switch (__pyx_v_c_node->type) {
+       case XML_COMMENT_NODE:
+ 
+-      /* "src/lxml/iterparse.pxi":355
++      /* "src/lxml/iterparse.pxi":357
+  *         while c_node is not NULL and c_node.type != tree.XML_ELEMENT_NODE:
+  *             if c_node.type == tree.XML_COMMENT_NODE:
+  *                 if self._event_filter & PARSE_EVENT_FILTER_COMMENT:             # <<<<<<<<<<<<<<
+@@ -195674,7 +195674,7 @@ static xmlNode *__pyx_f_4lxml_5etree_8iterwalk__process_non_elements(struct __py
+       __pyx_t_1 = ((__pyx_v_self->_event_filter & __pyx_e_4lxml_5etree_PARSE_EVENT_FILTER_COMMENT) != 0);
+       if (__pyx_t_1) {
+ 
+-        /* "src/lxml/iterparse.pxi":356
++        /* "src/lxml/iterparse.pxi":358
+  *             if c_node.type == tree.XML_COMMENT_NODE:
+  *                 if self._event_filter & PARSE_EVENT_FILTER_COMMENT:
+  *                     self._events.append(             # <<<<<<<<<<<<<<
+@@ -195683,38 +195683,38 @@ static xmlNode *__pyx_f_4lxml_5etree_8iterwalk__process_non_elements(struct __py
+  */
+         if (unlikely(__pyx_v_self->_events == Py_None)) {
+           PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
+-          __PYX_ERR(14, 356, __pyx_L1_error)
++          __PYX_ERR(14, 358, __pyx_L1_error)
+         }
+ 
+-        /* "src/lxml/iterparse.pxi":357
++        /* "src/lxml/iterparse.pxi":359
+  *                 if self._event_filter & PARSE_EVENT_FILTER_COMMENT:
+  *                     self._events.append(
+  *                         (u"comment", _elementFactory(doc, c_node)))             # <<<<<<<<<<<<<<
+  *                 c_node = _nextElement(c_node)
+  *             elif c_node.type == tree.XML_PI_NODE:
+  */
+-        __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(__pyx_v_doc, __pyx_v_c_node)); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 357, __pyx_L1_error)
++        __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(__pyx_v_doc, __pyx_v_c_node)); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 359, __pyx_L1_error)
+         __Pyx_GOTREF(__pyx_t_3);
+-        __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 357, __pyx_L1_error)
++        __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 359, __pyx_L1_error)
+         __Pyx_GOTREF(__pyx_t_4);
+         __Pyx_INCREF(__pyx_n_u_comment);
+         __Pyx_GIVEREF(__pyx_n_u_comment);
+-        if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_n_u_comment)) __PYX_ERR(14, 357, __pyx_L1_error);
++        if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_n_u_comment)) __PYX_ERR(14, 359, __pyx_L1_error);
+         __Pyx_GIVEREF(__pyx_t_3);
+-        if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3)) __PYX_ERR(14, 357, __pyx_L1_error);
++        if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3)) __PYX_ERR(14, 359, __pyx_L1_error);
+         __pyx_t_3 = 0;
+ 
+-        /* "src/lxml/iterparse.pxi":356
++        /* "src/lxml/iterparse.pxi":358
+  *             if c_node.type == tree.XML_COMMENT_NODE:
+  *                 if self._event_filter & PARSE_EVENT_FILTER_COMMENT:
+  *                     self._events.append(             # <<<<<<<<<<<<<<
+  *                         (u"comment", _elementFactory(doc, c_node)))
+  *                 c_node = _nextElement(c_node)
+  */
+-        __pyx_t_5 = __Pyx_PyList_Append(__pyx_v_self->_events, __pyx_t_4); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(14, 356, __pyx_L1_error)
++        __pyx_t_5 = __Pyx_PyList_Append(__pyx_v_self->_events, __pyx_t_4); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(14, 358, __pyx_L1_error)
+         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+ 
+-        /* "src/lxml/iterparse.pxi":355
++        /* "src/lxml/iterparse.pxi":357
+  *         while c_node is not NULL and c_node.type != tree.XML_ELEMENT_NODE:
+  *             if c_node.type == tree.XML_COMMENT_NODE:
+  *                 if self._event_filter & PARSE_EVENT_FILTER_COMMENT:             # <<<<<<<<<<<<<<
+@@ -195723,7 +195723,7 @@ static xmlNode *__pyx_f_4lxml_5etree_8iterwalk__process_non_elements(struct __py
+  */
+       }
+ 
+-      /* "src/lxml/iterparse.pxi":358
++      /* "src/lxml/iterparse.pxi":360
+  *                     self._events.append(
+  *                         (u"comment", _elementFactory(doc, c_node)))
+  *                 c_node = _nextElement(c_node)             # <<<<<<<<<<<<<<
+@@ -195732,7 +195732,7 @@ static xmlNode *__pyx_f_4lxml_5etree_8iterwalk__process_non_elements(struct __py
+  */
+       __pyx_v_c_node = __pyx_f_4lxml_5etree__nextElement(__pyx_v_c_node);
+ 
+-      /* "src/lxml/iterparse.pxi":354
++      /* "src/lxml/iterparse.pxi":356
+  *     cdef xmlNode* _process_non_elements(self, _Document doc, xmlNode* c_node):
+  *         while c_node is not NULL and c_node.type != tree.XML_ELEMENT_NODE:
+  *             if c_node.type == tree.XML_COMMENT_NODE:             # <<<<<<<<<<<<<<
+@@ -195742,7 +195742,7 @@ static xmlNode *__pyx_f_4lxml_5etree_8iterwalk__process_non_elements(struct __py
+       break;
+       case XML_PI_NODE:
+ 
+-      /* "src/lxml/iterparse.pxi":360
++      /* "src/lxml/iterparse.pxi":362
+  *                 c_node = _nextElement(c_node)
+  *             elif c_node.type == tree.XML_PI_NODE:
+  *                 if self._event_filter & PARSE_EVENT_FILTER_PI:             # <<<<<<<<<<<<<<
+@@ -195752,7 +195752,7 @@ static xmlNode *__pyx_f_4lxml_5etree_8iterwalk__process_non_elements(struct __py
+       __pyx_t_1 = ((__pyx_v_self->_event_filter & __pyx_e_4lxml_5etree_PARSE_EVENT_FILTER_PI) != 0);
+       if (__pyx_t_1) {
+ 
+-        /* "src/lxml/iterparse.pxi":361
++        /* "src/lxml/iterparse.pxi":363
+  *             elif c_node.type == tree.XML_PI_NODE:
+  *                 if self._event_filter & PARSE_EVENT_FILTER_PI:
+  *                     self._events.append(             # <<<<<<<<<<<<<<
+@@ -195761,38 +195761,38 @@ static xmlNode *__pyx_f_4lxml_5etree_8iterwalk__process_non_elements(struct __py
+  */
+         if (unlikely(__pyx_v_self->_events == Py_None)) {
+           PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
+-          __PYX_ERR(14, 361, __pyx_L1_error)
++          __PYX_ERR(14, 363, __pyx_L1_error)
+         }
+ 
+-        /* "src/lxml/iterparse.pxi":362
++        /* "src/lxml/iterparse.pxi":364
+  *                 if self._event_filter & PARSE_EVENT_FILTER_PI:
+  *                     self._events.append(
+  *                         (u"pi", _elementFactory(doc, c_node)))             # <<<<<<<<<<<<<<
+  *                 c_node = _nextElement(c_node)
+  *             else:
+  */
+-        __pyx_t_4 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(__pyx_v_doc, __pyx_v_c_node)); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 362, __pyx_L1_error)
++        __pyx_t_4 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(__pyx_v_doc, __pyx_v_c_node)); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 364, __pyx_L1_error)
+         __Pyx_GOTREF(__pyx_t_4);
+-        __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 362, __pyx_L1_error)
++        __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 364, __pyx_L1_error)
+         __Pyx_GOTREF(__pyx_t_3);
+         __Pyx_INCREF(__pyx_n_u_pi);
+         __Pyx_GIVEREF(__pyx_n_u_pi);
+-        if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_n_u_pi)) __PYX_ERR(14, 362, __pyx_L1_error);
++        if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_n_u_pi)) __PYX_ERR(14, 364, __pyx_L1_error);
+         __Pyx_GIVEREF(__pyx_t_4);
+-        if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_4)) __PYX_ERR(14, 362, __pyx_L1_error);
++        if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_4)) __PYX_ERR(14, 364, __pyx_L1_error);
+         __pyx_t_4 = 0;
+ 
+-        /* "src/lxml/iterparse.pxi":361
++        /* "src/lxml/iterparse.pxi":363
+  *             elif c_node.type == tree.XML_PI_NODE:
+  *                 if self._event_filter & PARSE_EVENT_FILTER_PI:
+  *                     self._events.append(             # <<<<<<<<<<<<<<
+  *                         (u"pi", _elementFactory(doc, c_node)))
+  *                 c_node = _nextElement(c_node)
+  */
+-        __pyx_t_5 = __Pyx_PyList_Append(__pyx_v_self->_events, __pyx_t_3); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(14, 361, __pyx_L1_error)
++        __pyx_t_5 = __Pyx_PyList_Append(__pyx_v_self->_events, __pyx_t_3); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(14, 363, __pyx_L1_error)
+         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ 
+-        /* "src/lxml/iterparse.pxi":360
++        /* "src/lxml/iterparse.pxi":362
+  *                 c_node = _nextElement(c_node)
+  *             elif c_node.type == tree.XML_PI_NODE:
+  *                 if self._event_filter & PARSE_EVENT_FILTER_PI:             # <<<<<<<<<<<<<<
+@@ -195801,7 +195801,7 @@ static xmlNode *__pyx_f_4lxml_5etree_8iterwalk__process_non_elements(struct __py
+  */
+       }
+ 
+-      /* "src/lxml/iterparse.pxi":363
++      /* "src/lxml/iterparse.pxi":365
+  *                     self._events.append(
+  *                         (u"pi", _elementFactory(doc, c_node)))
+  *                 c_node = _nextElement(c_node)             # <<<<<<<<<<<<<<
+@@ -195810,7 +195810,7 @@ static xmlNode *__pyx_f_4lxml_5etree_8iterwalk__process_non_elements(struct __py
+  */
+       __pyx_v_c_node = __pyx_f_4lxml_5etree__nextElement(__pyx_v_c_node);
+ 
+-      /* "src/lxml/iterparse.pxi":359
++      /* "src/lxml/iterparse.pxi":361
+  *                         (u"comment", _elementFactory(doc, c_node)))
+  *                 c_node = _nextElement(c_node)
+  *             elif c_node.type == tree.XML_PI_NODE:             # <<<<<<<<<<<<<<
+@@ -195820,7 +195820,7 @@ static xmlNode *__pyx_f_4lxml_5etree_8iterwalk__process_non_elements(struct __py
+       break;
+       default:
+ 
+-      /* "src/lxml/iterparse.pxi":365
++      /* "src/lxml/iterparse.pxi":367
+  *                 c_node = _nextElement(c_node)
+  *             else:
+  *                 break             # <<<<<<<<<<<<<<
+@@ -195833,7 +195833,7 @@ static xmlNode *__pyx_f_4lxml_5etree_8iterwalk__process_non_elements(struct __py
+   }
+   __pyx_L4_break:;
+ 
+-  /* "src/lxml/iterparse.pxi":366
++  /* "src/lxml/iterparse.pxi":368
+  *             else:
+  *                 break
+  *         return c_node             # <<<<<<<<<<<<<<
+@@ -195843,7 +195843,7 @@ static xmlNode *__pyx_f_4lxml_5etree_8iterwalk__process_non_elements(struct __py
+   __pyx_r = __pyx_v_c_node;
+   goto __pyx_L0;
+ 
+-  /* "src/lxml/iterparse.pxi":352
++  /* "src/lxml/iterparse.pxi":354
+  * 
+  *     @cython.final
+  *     cdef xmlNode* _process_non_elements(self, _Document doc, xmlNode* c_node):             # <<<<<<<<<<<<<<
+@@ -195862,7 +195862,7 @@ static xmlNode *__pyx_f_4lxml_5etree_8iterwalk__process_non_elements(struct __py
+   return __pyx_r;
+ }
+ 
+-/* "src/lxml/iterparse.pxi":369
++/* "src/lxml/iterparse.pxi":371
+  * 
+  *     @cython.final
+  *     cdef _next_event(self):             # <<<<<<<<<<<<<<
+@@ -195884,7 +195884,7 @@ static PyObject *__pyx_f_4lxml_5etree_8iterwalk__next_event(struct __pyx_obj_4lx
+   int __pyx_clineno = 0;
+   __Pyx_RefNannySetupContext("_next_event", 1);
+ 
+-  /* "src/lxml/iterparse.pxi":370
++  /* "src/lxml/iterparse.pxi":372
+  *     @cython.final
+  *     cdef _next_event(self):
+  *         if self._skip_state == IWSKIP_NEXT_IS_START:             # <<<<<<<<<<<<<<
+@@ -195894,7 +195894,7 @@ static PyObject *__pyx_f_4lxml_5etree_8iterwalk__next_event(struct __pyx_obj_4lx
+   __pyx_t_1 = (__pyx_v_self->_skip_state == __pyx_e_4lxml_5etree_IWSKIP_NEXT_IS_START);
+   if (__pyx_t_1) {
+ 
+-    /* "src/lxml/iterparse.pxi":371
++    /* "src/lxml/iterparse.pxi":373
+  *     cdef _next_event(self):
+  *         if self._skip_state == IWSKIP_NEXT_IS_START:
+  *             if self._events[0][0] in (u'start', u'start-ns'):             # <<<<<<<<<<<<<<
+@@ -195903,27 +195903,27 @@ static PyObject *__pyx_f_4lxml_5etree_8iterwalk__next_event(struct __pyx_obj_4lx
+  */
+     if (unlikely(__pyx_v_self->_events == Py_None)) {
+       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+-      __PYX_ERR(14, 371, __pyx_L1_error)
++      __PYX_ERR(14, 373, __pyx_L1_error)
+     }
+-    __pyx_t_2 = __Pyx_GetItemInt_List(__pyx_v_self->_events, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 371, __pyx_L1_error)
++    __pyx_t_2 = __Pyx_GetItemInt_List(__pyx_v_self->_events, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 373, __pyx_L1_error)
+     __Pyx_GOTREF(__pyx_t_2);
+-    __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 371, __pyx_L1_error)
++    __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 373, __pyx_L1_error)
+     __Pyx_GOTREF(__pyx_t_3);
+     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+-    __pyx_t_4 = (__Pyx_PyUnicode_Equals(__pyx_t_3, __pyx_n_u_start, Py_EQ)); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(14, 371, __pyx_L1_error)
++    __pyx_t_4 = (__Pyx_PyUnicode_Equals(__pyx_t_3, __pyx_n_u_start, Py_EQ)); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(14, 373, __pyx_L1_error)
+     if (!__pyx_t_4) {
+     } else {
+       __pyx_t_1 = __pyx_t_4;
+       goto __pyx_L5_bool_binop_done;
+     }
+-    __pyx_t_4 = (__Pyx_PyUnicode_Equals(__pyx_t_3, __pyx_kp_u_start_ns, Py_EQ)); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(14, 371, __pyx_L1_error)
++    __pyx_t_4 = (__Pyx_PyUnicode_Equals(__pyx_t_3, __pyx_kp_u_start_ns, Py_EQ)); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(14, 373, __pyx_L1_error)
+     __pyx_t_1 = __pyx_t_4;
+     __pyx_L5_bool_binop_done:;
+     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+     __pyx_t_4 = __pyx_t_1;
+     if (__pyx_t_4) {
+ 
+-      /* "src/lxml/iterparse.pxi":372
++      /* "src/lxml/iterparse.pxi":374
+  *         if self._skip_state == IWSKIP_NEXT_IS_START:
+  *             if self._events[0][0] in (u'start', u'start-ns'):
+  *                 self._skip_state = IWSKIP_CAN_SKIP             # <<<<<<<<<<<<<<
+@@ -195932,7 +195932,7 @@ static PyObject *__pyx_f_4lxml_5etree_8iterwalk__next_event(struct __pyx_obj_4lx
+  */
+       __pyx_v_self->_skip_state = __pyx_e_4lxml_5etree_IWSKIP_CAN_SKIP;
+ 
+-      /* "src/lxml/iterparse.pxi":371
++      /* "src/lxml/iterparse.pxi":373
+  *     cdef _next_event(self):
+  *         if self._skip_state == IWSKIP_NEXT_IS_START:
+  *             if self._events[0][0] in (u'start', u'start-ns'):             # <<<<<<<<<<<<<<
+@@ -195941,7 +195941,7 @@ static PyObject *__pyx_f_4lxml_5etree_8iterwalk__next_event(struct __pyx_obj_4lx
+  */
+     }
+ 
+-    /* "src/lxml/iterparse.pxi":370
++    /* "src/lxml/iterparse.pxi":372
+  *     @cython.final
+  *     cdef _next_event(self):
+  *         if self._skip_state == IWSKIP_NEXT_IS_START:             # <<<<<<<<<<<<<<
+@@ -195950,7 +195950,7 @@ static PyObject *__pyx_f_4lxml_5etree_8iterwalk__next_event(struct __pyx_obj_4lx
+  */
+   }
+ 
+-  /* "src/lxml/iterparse.pxi":373
++  /* "src/lxml/iterparse.pxi":375
+  *             if self._events[0][0] in (u'start', u'start-ns'):
+  *                 self._skip_state = IWSKIP_CAN_SKIP
+  *         return self._pop_event(0)             # <<<<<<<<<<<<<<
+@@ -195977,7 +195977,7 @@ static PyObject *__pyx_f_4lxml_5etree_8iterwalk__next_event(struct __pyx_obj_4lx
+     PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_int_0};
+     __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
+     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+-    if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 373, __pyx_L1_error)
++    if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 375, __pyx_L1_error)
+     __Pyx_GOTREF(__pyx_t_3);
+     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+   }
+@@ -195985,7 +195985,7 @@ static PyObject *__pyx_f_4lxml_5etree_8iterwalk__next_event(struct __pyx_obj_4lx
+   __pyx_t_3 = 0;
+   goto __pyx_L0;
+ 
+-  /* "src/lxml/iterparse.pxi":369
++  /* "src/lxml/iterparse.pxi":371
+  * 
+  *     @cython.final
+  *     cdef _next_event(self):             # <<<<<<<<<<<<<<
+@@ -196006,7 +196006,7 @@ static PyObject *__pyx_f_4lxml_5etree_8iterwalk__next_event(struct __pyx_obj_4lx
+   return __pyx_r;
+ }
+ 
+-/* "src/lxml/iterparse.pxi":375
++/* "src/lxml/iterparse.pxi":377
+  *         return self._pop_event(0)
+  * 
+  *     def skip_subtree(self):             # <<<<<<<<<<<<<<
+@@ -196062,7 +196062,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_6skip_subtree(struct __pyx_obj_
+   int __pyx_t_1;
+   __Pyx_RefNannySetupContext("skip_subtree", 1);
+ 
+-  /* "src/lxml/iterparse.pxi":382
++  /* "src/lxml/iterparse.pxi":384
+  *         This has no effect right after an 'end' or 'end-ns' event.
+  *         """
+  *         if self._skip_state == IWSKIP_CAN_SKIP:             # <<<<<<<<<<<<<<
+@@ -196072,7 +196072,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_6skip_subtree(struct __pyx_obj_
+   __pyx_t_1 = (__pyx_v_self->_skip_state == __pyx_e_4lxml_5etree_IWSKIP_CAN_SKIP);
+   if (__pyx_t_1) {
+ 
+-    /* "src/lxml/iterparse.pxi":383
++    /* "src/lxml/iterparse.pxi":385
+  *         """
+  *         if self._skip_state == IWSKIP_CAN_SKIP:
+  *             self._skip_state = IWSKIP_SKIP_NEXT             # <<<<<<<<<<<<<<
+@@ -196081,7 +196081,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_6skip_subtree(struct __pyx_obj_
+  */
+     __pyx_v_self->_skip_state = __pyx_e_4lxml_5etree_IWSKIP_SKIP_NEXT;
+ 
+-    /* "src/lxml/iterparse.pxi":382
++    /* "src/lxml/iterparse.pxi":384
+  *         This has no effect right after an 'end' or 'end-ns' event.
+  *         """
+  *         if self._skip_state == IWSKIP_CAN_SKIP:             # <<<<<<<<<<<<<<
+@@ -196090,7 +196090,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_6skip_subtree(struct __pyx_obj_
+  */
+   }
+ 
+-  /* "src/lxml/iterparse.pxi":375
++  /* "src/lxml/iterparse.pxi":377
+  *         return self._pop_event(0)
+  * 
+  *     def skip_subtree(self):             # <<<<<<<<<<<<<<
+@@ -196105,7 +196105,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8iterwalk_6skip_subtree(struct __pyx_obj_
+   return __pyx_r;
+ }
+ 
+-/* "src/lxml/iterparse.pxi":386
++/* "src/lxml/iterparse.pxi":388
+  * 
+  *     @cython.final
+  *     cdef int _start_node(self, _Element node) except -1:             # <<<<<<<<<<<<<<
+@@ -196127,7 +196127,7 @@ static int __pyx_f_4lxml_5etree_8iterwalk__start_node(struct __pyx_obj_4lxml_5et
+   int __pyx_clineno = 0;
+   __Pyx_RefNannySetupContext("_start_node", 1);
+ 
+-  /* "src/lxml/iterparse.pxi":388
++  /* "src/lxml/iterparse.pxi":390
+  *     cdef int _start_node(self, _Element node) except -1:
+  *         cdef int ns_count
+  *         if self._event_filter & PARSE_EVENT_FILTER_START_NS:             # <<<<<<<<<<<<<<
+@@ -196137,7 +196137,7 @@ static int __pyx_f_4lxml_5etree_8iterwalk__start_node(struct __pyx_obj_4lxml_5et
+   __pyx_t_1 = ((__pyx_v_self->_event_filter & __pyx_e_4lxml_5etree_PARSE_EVENT_FILTER_START_NS) != 0);
+   if (__pyx_t_1) {
+ 
+-    /* "src/lxml/iterparse.pxi":389
++    /* "src/lxml/iterparse.pxi":391
+  *         cdef int ns_count
+  *         if self._event_filter & PARSE_EVENT_FILTER_START_NS:
+  *             ns_count = _appendStartNsEvents(node._c_node, self._events)             # <<<<<<<<<<<<<<
+@@ -196146,11 +196146,11 @@ static int __pyx_f_4lxml_5etree_8iterwalk__start_node(struct __pyx_obj_4lxml_5et
+  */
+     __pyx_t_2 = __pyx_v_self->_events;
+     __Pyx_INCREF(__pyx_t_2);
+-    __pyx_t_3 = __pyx_f_4lxml_5etree__appendStartNsEvents(__pyx_v_node->_c_node, ((PyObject*)__pyx_t_2)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(14, 389, __pyx_L1_error)
++    __pyx_t_3 = __pyx_f_4lxml_5etree__appendStartNsEvents(__pyx_v_node->_c_node, ((PyObject*)__pyx_t_2)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(14, 391, __pyx_L1_error)
+     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+     __pyx_v_ns_count = __pyx_t_3;
+ 
+-    /* "src/lxml/iterparse.pxi":390
++    /* "src/lxml/iterparse.pxi":392
+  *         if self._event_filter & PARSE_EVENT_FILTER_START_NS:
+  *             ns_count = _appendStartNsEvents(node._c_node, self._events)
+  *             if self._events:             # <<<<<<<<<<<<<<
+@@ -196160,7 +196160,7 @@ static int __pyx_f_4lxml_5etree_8iterwalk__start_node(struct __pyx_obj_4lxml_5et
+     __pyx_t_1 = (__pyx_v_self->_events != Py_None)&&(PyList_GET_SIZE(__pyx_v_self->_events) != 0);
+     if (__pyx_t_1) {
+ 
+-      /* "src/lxml/iterparse.pxi":391
++      /* "src/lxml/iterparse.pxi":393
+  *             ns_count = _appendStartNsEvents(node._c_node, self._events)
+  *             if self._events:
+  *                 self._skip_state = IWSKIP_NEXT_IS_START             # <<<<<<<<<<<<<<
+@@ -196169,7 +196169,7 @@ static int __pyx_f_4lxml_5etree_8iterwalk__start_node(struct __pyx_obj_4lxml_5et
+  */
+       __pyx_v_self->_skip_state = __pyx_e_4lxml_5etree_IWSKIP_NEXT_IS_START;
+ 
+-      /* "src/lxml/iterparse.pxi":390
++      /* "src/lxml/iterparse.pxi":392
+  *         if self._event_filter & PARSE_EVENT_FILTER_START_NS:
+  *             ns_count = _appendStartNsEvents(node._c_node, self._events)
+  *             if self._events:             # <<<<<<<<<<<<<<
+@@ -196178,7 +196178,7 @@ static int __pyx_f_4lxml_5etree_8iterwalk__start_node(struct __pyx_obj_4lxml_5et
+  */
+     }
+ 
+-    /* "src/lxml/iterparse.pxi":388
++    /* "src/lxml/iterparse.pxi":390
+  *     cdef int _start_node(self, _Element node) except -1:
+  *         cdef int ns_count
+  *         if self._event_filter & PARSE_EVENT_FILTER_START_NS:             # <<<<<<<<<<<<<<
+@@ -196188,7 +196188,7 @@ static int __pyx_f_4lxml_5etree_8iterwalk__start_node(struct __pyx_obj_4lxml_5et
+     goto __pyx_L3;
+   }
+ 
+-  /* "src/lxml/iterparse.pxi":392
++  /* "src/lxml/iterparse.pxi":394
+  *             if self._events:
+  *                 self._skip_state = IWSKIP_NEXT_IS_START
+  *         elif self._event_filter & PARSE_EVENT_FILTER_END_NS:             # <<<<<<<<<<<<<<
+@@ -196198,7 +196198,7 @@ static int __pyx_f_4lxml_5etree_8iterwalk__start_node(struct __pyx_obj_4lxml_5et
+   __pyx_t_1 = ((__pyx_v_self->_event_filter & __pyx_e_4lxml_5etree_PARSE_EVENT_FILTER_END_NS) != 0);
+   if (__pyx_t_1) {
+ 
+-    /* "src/lxml/iterparse.pxi":393
++    /* "src/lxml/iterparse.pxi":395
+  *                 self._skip_state = IWSKIP_NEXT_IS_START
+  *         elif self._event_filter & PARSE_EVENT_FILTER_END_NS:
+  *             ns_count = _countNsDefs(node._c_node)             # <<<<<<<<<<<<<<
+@@ -196207,7 +196207,7 @@ static int __pyx_f_4lxml_5etree_8iterwalk__start_node(struct __pyx_obj_4lxml_5et
+  */
+     __pyx_v_ns_count = __pyx_f_4lxml_5etree__countNsDefs(__pyx_v_node->_c_node);
+ 
+-    /* "src/lxml/iterparse.pxi":392
++    /* "src/lxml/iterparse.pxi":394
+  *             if self._events:
+  *                 self._skip_state = IWSKIP_NEXT_IS_START
+  *         elif self._event_filter & PARSE_EVENT_FILTER_END_NS:             # <<<<<<<<<<<<<<
+@@ -196217,7 +196217,7 @@ static int __pyx_f_4lxml_5etree_8iterwalk__start_node(struct __pyx_obj_4lxml_5et
+     goto __pyx_L3;
+   }
+ 
+-  /* "src/lxml/iterparse.pxi":395
++  /* "src/lxml/iterparse.pxi":397
+  *             ns_count = _countNsDefs(node._c_node)
+  *         else:
+  *             ns_count = 0             # <<<<<<<<<<<<<<
+@@ -196229,7 +196229,7 @@ static int __pyx_f_4lxml_5etree_8iterwalk__start_node(struct __pyx_obj_4lxml_5et
+   }
+   __pyx_L3:;
+ 
+-  /* "src/lxml/iterparse.pxi":396
++  /* "src/lxml/iterparse.pxi":398
+  *         else:
+  *             ns_count = 0
+  *         if self._event_filter & PARSE_EVENT_FILTER_START:             # <<<<<<<<<<<<<<
+@@ -196239,7 +196239,7 @@ static int __pyx_f_4lxml_5etree_8iterwalk__start_node(struct __pyx_obj_4lxml_5et
+   __pyx_t_1 = ((__pyx_v_self->_event_filter & __pyx_e_4lxml_5etree_PARSE_EVENT_FILTER_START) != 0);
+   if (__pyx_t_1) {
+ 
+-    /* "src/lxml/iterparse.pxi":397
++    /* "src/lxml/iterparse.pxi":399
+  *             ns_count = 0
+  *         if self._event_filter & PARSE_EVENT_FILTER_START:
+  *             if self._matcher is None or self._matcher.matches(node._c_node):             # <<<<<<<<<<<<<<
+@@ -196257,7 +196257,7 @@ static int __pyx_f_4lxml_5etree_8iterwalk__start_node(struct __pyx_obj_4lxml_5et
+     __pyx_L7_bool_binop_done:;
+     if (__pyx_t_1) {
+ 
+-      /* "src/lxml/iterparse.pxi":398
++      /* "src/lxml/iterparse.pxi":400
+  *         if self._event_filter & PARSE_EVENT_FILTER_START:
+  *             if self._matcher is None or self._matcher.matches(node._c_node):
+  *                 self._events.append( (u"start", node) )             # <<<<<<<<<<<<<<
+@@ -196266,20 +196266,20 @@ static int __pyx_f_4lxml_5etree_8iterwalk__start_node(struct __pyx_obj_4lxml_5et
+  */
+       if (unlikely(__pyx_v_self->_events == Py_None)) {
+         PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
+-        __PYX_ERR(14, 398, __pyx_L1_error)
++        __PYX_ERR(14, 400, __pyx_L1_error)
+       }
+-      __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 398, __pyx_L1_error)
++      __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 400, __pyx_L1_error)
+       __Pyx_GOTREF(__pyx_t_2);
+       __Pyx_INCREF(__pyx_n_u_start);
+       __Pyx_GIVEREF(__pyx_n_u_start);
+-      if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_u_start)) __PYX_ERR(14, 398, __pyx_L1_error);
++      if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_u_start)) __PYX_ERR(14, 400, __pyx_L1_error);
+       __Pyx_INCREF((PyObject *)__pyx_v_node);
+       __Pyx_GIVEREF((PyObject *)__pyx_v_node);
+-      if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_node))) __PYX_ERR(14, 398, __pyx_L1_error);
+-      __pyx_t_5 = __Pyx_PyList_Append(__pyx_v_self->_events, __pyx_t_2); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(14, 398, __pyx_L1_error)
++      if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_node))) __PYX_ERR(14, 400, __pyx_L1_error);
++      __pyx_t_5 = __Pyx_PyList_Append(__pyx_v_self->_events, __pyx_t_2); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(14, 400, __pyx_L1_error)
+       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+ 
+-      /* "src/lxml/iterparse.pxi":399
++      /* "src/lxml/iterparse.pxi":401
+  *             if self._matcher is None or self._matcher.matches(node._c_node):
+  *                 self._events.append( (u"start", node) )
+  *                 self._skip_state = IWSKIP_NEXT_IS_START             # <<<<<<<<<<<<<<
+@@ -196288,7 +196288,7 @@ static int __pyx_f_4lxml_5etree_8iterwalk__start_node(struct __pyx_obj_4lxml_5et
+  */
+       __pyx_v_self->_skip_state = __pyx_e_4lxml_5etree_IWSKIP_NEXT_IS_START;
+ 
+-      /* "src/lxml/iterparse.pxi":397
++      /* "src/lxml/iterparse.pxi":399
+  *             ns_count = 0
+  *         if self._event_filter & PARSE_EVENT_FILTER_START:
+  *             if self._matcher is None or self._matcher.matches(node._c_node):             # <<<<<<<<<<<<<<
+@@ -196297,7 +196297,7 @@ static int __pyx_f_4lxml_5etree_8iterwalk__start_node(struct __pyx_obj_4lxml_5et
+  */
+     }
+ 
+-    /* "src/lxml/iterparse.pxi":396
++    /* "src/lxml/iterparse.pxi":398
+  *         else:
+  *             ns_count = 0
+  *         if self._event_filter & PARSE_EVENT_FILTER_START:             # <<<<<<<<<<<<<<
+@@ -196306,7 +196306,7 @@ static int __pyx_f_4lxml_5etree_8iterwalk__start_node(struct __pyx_obj_4lxml_5et
+  */
+   }
+ 
+-  /* "src/lxml/iterparse.pxi":400
++  /* "src/lxml/iterparse.pxi":402
+  *                 self._events.append( (u"start", node) )
+  *                 self._skip_state = IWSKIP_NEXT_IS_START
+  *         return ns_count             # <<<<<<<<<<<<<<
+@@ -196316,7 +196316,7 @@ static int __pyx_f_4lxml_5etree_8iterwalk__start_node(struct __pyx_obj_4lxml_5et
+   __pyx_r = __pyx_v_ns_count;
+   goto __pyx_L0;
+ 
+-  /* "src/lxml/iterparse.pxi":386
++  /* "src/lxml/iterparse.pxi":388
+  * 
+  *     @cython.final
+  *     cdef int _start_node(self, _Element node) except -1:             # <<<<<<<<<<<<<<
+@@ -196334,7 +196334,7 @@ static int __pyx_f_4lxml_5etree_8iterwalk__start_node(struct __pyx_obj_4lxml_5et
+   return __pyx_r;
+ }
+ 
+-/* "src/lxml/iterparse.pxi":403
++/* "src/lxml/iterparse.pxi":405
+  * 
+  *     @cython.final
+  *     cdef _Element _end_node(self):             # <<<<<<<<<<<<<<
+@@ -196365,7 +196365,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree_8iterwalk__end_node(struct __pyx
+   int __pyx_clineno = 0;
+   __Pyx_RefNannySetupContext("_end_node", 1);
+ 
+-  /* "src/lxml/iterparse.pxi":406
++  /* "src/lxml/iterparse.pxi":408
+  *         cdef _Element node
+  *         cdef int i, ns_count
+  *         node, ns_count = self._node_stack.pop()             # <<<<<<<<<<<<<<
+@@ -196374,9 +196374,9 @@ static struct LxmlElement *__pyx_f_4lxml_5etree_8iterwalk__end_node(struct __pyx
+  */
+   if (unlikely(__pyx_v_self->_node_stack == Py_None)) {
+     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "pop");
+-    __PYX_ERR(14, 406, __pyx_L1_error)
++    __PYX_ERR(14, 408, __pyx_L1_error)
+   }
+-  __pyx_t_1 = __Pyx_PyList_Pop(__pyx_v_self->_node_stack); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 406, __pyx_L1_error)
++  __pyx_t_1 = __Pyx_PyList_Pop(__pyx_v_self->_node_stack); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 408, __pyx_L1_error)
+   __Pyx_GOTREF(__pyx_t_1);
+   if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
+     PyObject* sequence = __pyx_t_1;
+@@ -196384,7 +196384,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree_8iterwalk__end_node(struct __pyx
+     if (unlikely(size != 2)) {
+       if (size > 2) __Pyx_RaiseTooManyValuesError(2);
+       else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
+-      __PYX_ERR(14, 406, __pyx_L1_error)
++      __PYX_ERR(14, 408, __pyx_L1_error)
+     }
+     #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+     if (likely(PyTuple_CheckExact(sequence))) {
+@@ -196397,15 +196397,15 @@ static struct LxmlElement *__pyx_f_4lxml_5etree_8iterwalk__end_node(struct __pyx
+     __Pyx_INCREF(__pyx_t_2);
+     __Pyx_INCREF(__pyx_t_3);
+     #else
+-    __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 406, __pyx_L1_error)
++    __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 408, __pyx_L1_error)
+     __Pyx_GOTREF(__pyx_t_2);
+-    __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 406, __pyx_L1_error)
++    __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 408, __pyx_L1_error)
+     __Pyx_GOTREF(__pyx_t_3);
+     #endif
+     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+   } else {
+     Py_ssize_t index = -1;
+-    __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 406, __pyx_L1_error)
++    __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 408, __pyx_L1_error)
+     __Pyx_GOTREF(__pyx_t_4);
+     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+     __pyx_t_5 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_4);
+@@ -196413,7 +196413,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree_8iterwalk__end_node(struct __pyx
+     __Pyx_GOTREF(__pyx_t_2);
+     index = 1; __pyx_t_3 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed;
+     __Pyx_GOTREF(__pyx_t_3);
+-    if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_4), 2) < 0) __PYX_ERR(14, 406, __pyx_L1_error)
++    if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_4), 2) < 0) __PYX_ERR(14, 408, __pyx_L1_error)
+     __pyx_t_5 = NULL;
+     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+     goto __pyx_L4_unpacking_done;
+@@ -196421,17 +196421,17 @@ static struct LxmlElement *__pyx_f_4lxml_5etree_8iterwalk__end_node(struct __pyx
+     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+     __pyx_t_5 = NULL;
+     if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
+-    __PYX_ERR(14, 406, __pyx_L1_error)
++    __PYX_ERR(14, 408, __pyx_L1_error)
+     __pyx_L4_unpacking_done:;
+   }
+-  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_4lxml_5etree__Element))))) __PYX_ERR(14, 406, __pyx_L1_error)
+-  __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(14, 406, __pyx_L1_error)
++  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_4lxml_5etree__Element))))) __PYX_ERR(14, 408, __pyx_L1_error)
++  __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(14, 408, __pyx_L1_error)
+   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+   __pyx_v_node = ((struct LxmlElement *)__pyx_t_2);
+   __pyx_t_2 = 0;
+   __pyx_v_ns_count = __pyx_t_6;
+ 
+-  /* "src/lxml/iterparse.pxi":407
++  /* "src/lxml/iterparse.pxi":409
+  *         cdef int i, ns_count
+  *         node, ns_count = self._node_stack.pop()
+  *         if self._event_filter & PARSE_EVENT_FILTER_END:             # <<<<<<<<<<<<<<
+@@ -196441,7 +196441,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree_8iterwalk__end_node(struct __pyx
+   __pyx_t_7 = ((__pyx_v_self->_event_filter & __pyx_e_4lxml_5etree_PARSE_EVENT_FILTER_END) != 0);
+   if (__pyx_t_7) {
+ 
+-    /* "src/lxml/iterparse.pxi":408
++    /* "src/lxml/iterparse.pxi":410
+  *         node, ns_count = self._node_stack.pop()
+  *         if self._event_filter & PARSE_EVENT_FILTER_END:
+  *             if self._matcher is None or self._matcher.matches(node._c_node):             # <<<<<<<<<<<<<<
+@@ -196459,7 +196459,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree_8iterwalk__end_node(struct __pyx
+     __pyx_L7_bool_binop_done:;
+     if (__pyx_t_7) {
+ 
+-      /* "src/lxml/iterparse.pxi":409
++      /* "src/lxml/iterparse.pxi":411
+  *         if self._event_filter & PARSE_EVENT_FILTER_END:
+  *             if self._matcher is None or self._matcher.matches(node._c_node):
+  *                 self._events.append( (u"end", node) )             # <<<<<<<<<<<<<<
+@@ -196468,20 +196468,20 @@ static struct LxmlElement *__pyx_f_4lxml_5etree_8iterwalk__end_node(struct __pyx
+  */
+       if (unlikely(__pyx_v_self->_events == Py_None)) {
+         PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
+-        __PYX_ERR(14, 409, __pyx_L1_error)
++        __PYX_ERR(14, 411, __pyx_L1_error)
+       }
+-      __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 409, __pyx_L1_error)
++      __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 411, __pyx_L1_error)
+       __Pyx_GOTREF(__pyx_t_1);
+       __Pyx_INCREF(__pyx_n_u_end);
+       __Pyx_GIVEREF(__pyx_n_u_end);
+-      if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_n_u_end)) __PYX_ERR(14, 409, __pyx_L1_error);
++      if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_n_u_end)) __PYX_ERR(14, 411, __pyx_L1_error);
+       __Pyx_INCREF((PyObject *)__pyx_v_node);
+       __Pyx_GIVEREF((PyObject *)__pyx_v_node);
+-      if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_node))) __PYX_ERR(14, 409, __pyx_L1_error);
+-      __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_self->_events, __pyx_t_1); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(14, 409, __pyx_L1_error)
++      if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_node))) __PYX_ERR(14, 411, __pyx_L1_error);
++      __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_self->_events, __pyx_t_1); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(14, 411, __pyx_L1_error)
+       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ 
+-      /* "src/lxml/iterparse.pxi":408
++      /* "src/lxml/iterparse.pxi":410
+  *         node, ns_count = self._node_stack.pop()
+  *         if self._event_filter & PARSE_EVENT_FILTER_END:
+  *             if self._matcher is None or self._matcher.matches(node._c_node):             # <<<<<<<<<<<<<<
+@@ -196490,7 +196490,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree_8iterwalk__end_node(struct __pyx
+  */
+     }
+ 
+-    /* "src/lxml/iterparse.pxi":407
++    /* "src/lxml/iterparse.pxi":409
+  *         cdef int i, ns_count
+  *         node, ns_count = self._node_stack.pop()
+  *         if self._event_filter & PARSE_EVENT_FILTER_END:             # <<<<<<<<<<<<<<
+@@ -196499,7 +196499,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree_8iterwalk__end_node(struct __pyx
+  */
+   }
+ 
+-  /* "src/lxml/iterparse.pxi":410
++  /* "src/lxml/iterparse.pxi":412
+  *             if self._matcher is None or self._matcher.matches(node._c_node):
+  *                 self._events.append( (u"end", node) )
+  *         if self._event_filter & PARSE_EVENT_FILTER_END_NS and ns_count:             # <<<<<<<<<<<<<<
+@@ -196517,7 +196517,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree_8iterwalk__end_node(struct __pyx
+   __pyx_L10_bool_binop_done:;
+   if (__pyx_t_7) {
+ 
+-    /* "src/lxml/iterparse.pxi":411
++    /* "src/lxml/iterparse.pxi":413
+  *                 self._events.append( (u"end", node) )
+  *         if self._event_filter & PARSE_EVENT_FILTER_END_NS and ns_count:
+  *             event = (u"end-ns", None)             # <<<<<<<<<<<<<<
+@@ -196527,7 +196527,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree_8iterwalk__end_node(struct __pyx
+     __Pyx_INCREF(__pyx_tuple__93);
+     __pyx_v_event = __pyx_tuple__93;
+ 
+-    /* "src/lxml/iterparse.pxi":412
++    /* "src/lxml/iterparse.pxi":414
+  *         if self._event_filter & PARSE_EVENT_FILTER_END_NS and ns_count:
+  *             event = (u"end-ns", None)
+  *             for i in range(ns_count):             # <<<<<<<<<<<<<<
+@@ -196539,7 +196539,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree_8iterwalk__end_node(struct __pyx
+     for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_10; __pyx_t_11+=1) {
+       __pyx_v_i = __pyx_t_11;
+ 
+-      /* "src/lxml/iterparse.pxi":413
++      /* "src/lxml/iterparse.pxi":415
+  *             event = (u"end-ns", None)
+  *             for i in range(ns_count):
+  *                 self._events.append(event)             # <<<<<<<<<<<<<<
+@@ -196548,12 +196548,12 @@ static struct LxmlElement *__pyx_f_4lxml_5etree_8iterwalk__end_node(struct __pyx
+  */
+       if (unlikely(__pyx_v_self->_events == Py_None)) {
+         PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
+-        __PYX_ERR(14, 413, __pyx_L1_error)
++        __PYX_ERR(14, 415, __pyx_L1_error)
+       }
+-      __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_self->_events, __pyx_v_event); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(14, 413, __pyx_L1_error)
++      __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_self->_events, __pyx_v_event); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(14, 415, __pyx_L1_error)
+     }
+ 
+-    /* "src/lxml/iterparse.pxi":410
++    /* "src/lxml/iterparse.pxi":412
+  *             if self._matcher is None or self._matcher.matches(node._c_node):
+  *                 self._events.append( (u"end", node) )
+  *         if self._event_filter & PARSE_EVENT_FILTER_END_NS and ns_count:             # <<<<<<<<<<<<<<
+@@ -196562,7 +196562,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree_8iterwalk__end_node(struct __pyx
+  */
+   }
+ 
+-  /* "src/lxml/iterparse.pxi":414
++  /* "src/lxml/iterparse.pxi":416
+  *             for i in range(ns_count):
+  *                 self._events.append(event)
+  *         return node             # <<<<<<<<<<<<<<
+@@ -196574,7 +196574,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree_8iterwalk__end_node(struct __pyx
+   __pyx_r = __pyx_v_node;
+   goto __pyx_L0;
+ 
+-  /* "src/lxml/iterparse.pxi":403
++  /* "src/lxml/iterparse.pxi":405
+  * 
+  *     @cython.final
+  *     cdef _Element _end_node(self):             # <<<<<<<<<<<<<<
+@@ -196598,7 +196598,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree_8iterwalk__end_node(struct __pyx
+   return __pyx_r;
+ }
+ 
+-/* "src/lxml/iterparse.pxi":417
++/* "src/lxml/iterparse.pxi":419
+  * 
+  * 
+  * cdef int _countNsDefs(xmlNode* c_node) noexcept:             # <<<<<<<<<<<<<<
+@@ -196613,7 +196613,7 @@ static int __pyx_f_4lxml_5etree__countNsDefs(xmlNode *__pyx_v_c_node) {
+   xmlNs *__pyx_t_1;
+   int __pyx_t_2;
+ 
+-  /* "src/lxml/iterparse.pxi":420
++  /* "src/lxml/iterparse.pxi":422
+  *     cdef xmlNs* c_ns
+  *     cdef int count
+  *     count = 0             # <<<<<<<<<<<<<<
+@@ -196622,7 +196622,7 @@ static int __pyx_f_4lxml_5etree__countNsDefs(xmlNode *__pyx_v_c_node) {
+  */
+   __pyx_v_count = 0;
+ 
+-  /* "src/lxml/iterparse.pxi":421
++  /* "src/lxml/iterparse.pxi":423
+  *     cdef int count
+  *     count = 0
+  *     c_ns = c_node.nsDef             # <<<<<<<<<<<<<<
+@@ -196632,7 +196632,7 @@ static int __pyx_f_4lxml_5etree__countNsDefs(xmlNode *__pyx_v_c_node) {
+   __pyx_t_1 = __pyx_v_c_node->nsDef;
+   __pyx_v_c_ns = __pyx_t_1;
+ 
+-  /* "src/lxml/iterparse.pxi":422
++  /* "src/lxml/iterparse.pxi":424
+  *     count = 0
+  *     c_ns = c_node.nsDef
+  *     while c_ns is not NULL:             # <<<<<<<<<<<<<<
+@@ -196643,7 +196643,7 @@ static int __pyx_f_4lxml_5etree__countNsDefs(xmlNode *__pyx_v_c_node) {
+     __pyx_t_2 = (__pyx_v_c_ns != NULL);
+     if (!__pyx_t_2) break;
+ 
+-    /* "src/lxml/iterparse.pxi":423
++    /* "src/lxml/iterparse.pxi":425
+  *     c_ns = c_node.nsDef
+  *     while c_ns is not NULL:
+  *         count += (c_ns.href is not NULL)             # <<<<<<<<<<<<<<
+@@ -196652,7 +196652,7 @@ static int __pyx_f_4lxml_5etree__countNsDefs(xmlNode *__pyx_v_c_node) {
+  */
+     __pyx_v_count = (__pyx_v_count + (__pyx_v_c_ns->href != NULL));
+ 
+-    /* "src/lxml/iterparse.pxi":424
++    /* "src/lxml/iterparse.pxi":426
+  *     while c_ns is not NULL:
+  *         count += (c_ns.href is not NULL)
+  *         c_ns = c_ns.next             # <<<<<<<<<<<<<<
+@@ -196663,7 +196663,7 @@ static int __pyx_f_4lxml_5etree__countNsDefs(xmlNode *__pyx_v_c_node) {
+     __pyx_v_c_ns = __pyx_t_1;
+   }
+ 
+-  /* "src/lxml/iterparse.pxi":425
++  /* "src/lxml/iterparse.pxi":427
+  *         count += (c_ns.href is not NULL)
+  *         c_ns = c_ns.next
+  *     return count             # <<<<<<<<<<<<<<
+@@ -196673,7 +196673,7 @@ static int __pyx_f_4lxml_5etree__countNsDefs(xmlNode *__pyx_v_c_node) {
+   __pyx_r = __pyx_v_count;
+   goto __pyx_L0;
+ 
+-  /* "src/lxml/iterparse.pxi":417
++  /* "src/lxml/iterparse.pxi":419
+  * 
+  * 
+  * cdef int _countNsDefs(xmlNode* c_node) noexcept:             # <<<<<<<<<<<<<<
+@@ -196686,7 +196686,7 @@ static int __pyx_f_4lxml_5etree__countNsDefs(xmlNode *__pyx_v_c_node) {
+   return __pyx_r;
+ }
+ 
+-/* "src/lxml/iterparse.pxi":428
++/* "src/lxml/iterparse.pxi":430
+  * 
+  * 
+  * cdef int _appendStartNsEvents(xmlNode* c_node, list event_list) except -1:             # <<<<<<<<<<<<<<
+@@ -196711,7 +196711,7 @@ static int __pyx_f_4lxml_5etree__appendStartNsEvents(xmlNode *__pyx_v_c_node, Py
+   int __pyx_clineno = 0;
+   __Pyx_RefNannySetupContext("_appendStartNsEvents", 1);
+ 
+-  /* "src/lxml/iterparse.pxi":431
++  /* "src/lxml/iterparse.pxi":433
+  *     cdef xmlNs* c_ns
+  *     cdef int count
+  *     count = 0             # <<<<<<<<<<<<<<
+@@ -196720,7 +196720,7 @@ static int __pyx_f_4lxml_5etree__appendStartNsEvents(xmlNode *__pyx_v_c_node, Py
+  */
+   __pyx_v_count = 0;
+ 
+-  /* "src/lxml/iterparse.pxi":432
++  /* "src/lxml/iterparse.pxi":434
+  *     cdef int count
+  *     count = 0
+  *     c_ns = c_node.nsDef             # <<<<<<<<<<<<<<
+@@ -196730,7 +196730,7 @@ static int __pyx_f_4lxml_5etree__appendStartNsEvents(xmlNode *__pyx_v_c_node, Py
+   __pyx_t_1 = __pyx_v_c_node->nsDef;
+   __pyx_v_c_ns = __pyx_t_1;
+ 
+-  /* "src/lxml/iterparse.pxi":433
++  /* "src/lxml/iterparse.pxi":435
+  *     count = 0
+  *     c_ns = c_node.nsDef
+  *     while c_ns is not NULL:             # <<<<<<<<<<<<<<
+@@ -196741,7 +196741,7 @@ static int __pyx_f_4lxml_5etree__appendStartNsEvents(xmlNode *__pyx_v_c_node, Py
+     __pyx_t_2 = (__pyx_v_c_ns != NULL);
+     if (!__pyx_t_2) break;
+ 
+-    /* "src/lxml/iterparse.pxi":434
++    /* "src/lxml/iterparse.pxi":436
+  *     c_ns = c_node.nsDef
+  *     while c_ns is not NULL:
+  *         if c_ns.href:             # <<<<<<<<<<<<<<
+@@ -196751,45 +196751,45 @@ static int __pyx_f_4lxml_5etree__appendStartNsEvents(xmlNode *__pyx_v_c_node, Py
+     __pyx_t_2 = (__pyx_v_c_ns->href != 0);
+     if (__pyx_t_2) {
+ 
+-      /* "src/lxml/iterparse.pxi":435
++      /* "src/lxml/iterparse.pxi":437
+  *     while c_ns is not NULL:
+  *         if c_ns.href:
+  *             ns_tuple = (funicodeOrEmpty(c_ns.prefix),             # <<<<<<<<<<<<<<
+  *                         funicode(c_ns.href))
+  *             event_list.append( (u"start-ns", ns_tuple) )
+  */
+-      __pyx_t_3 = __pyx_f_4lxml_5etree_funicodeOrEmpty(__pyx_v_c_ns->prefix); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 435, __pyx_L1_error)
++      __pyx_t_3 = __pyx_f_4lxml_5etree_funicodeOrEmpty(__pyx_v_c_ns->prefix); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 437, __pyx_L1_error)
+       __Pyx_GOTREF(__pyx_t_3);
+ 
+-      /* "src/lxml/iterparse.pxi":436
++      /* "src/lxml/iterparse.pxi":438
+  *         if c_ns.href:
+  *             ns_tuple = (funicodeOrEmpty(c_ns.prefix),
+  *                         funicode(c_ns.href))             # <<<<<<<<<<<<<<
+  *             event_list.append( (u"start-ns", ns_tuple) )
+  *             count += 1
+  */
+-      __pyx_t_4 = __pyx_f_4lxml_5etree_funicode(__pyx_v_c_ns->href); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 436, __pyx_L1_error)
++      __pyx_t_4 = __pyx_f_4lxml_5etree_funicode(__pyx_v_c_ns->href); if (unlikely(!__pyx_t_4)) __PYX_ERR(14, 438, __pyx_L1_error)
+       __Pyx_GOTREF(__pyx_t_4);
+ 
+-      /* "src/lxml/iterparse.pxi":435
++      /* "src/lxml/iterparse.pxi":437
+  *     while c_ns is not NULL:
+  *         if c_ns.href:
+  *             ns_tuple = (funicodeOrEmpty(c_ns.prefix),             # <<<<<<<<<<<<<<
+  *                         funicode(c_ns.href))
+  *             event_list.append( (u"start-ns", ns_tuple) )
+  */
+-      __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 435, __pyx_L1_error)
++      __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 437, __pyx_L1_error)
+       __Pyx_GOTREF(__pyx_t_5);
+       __Pyx_GIVEREF(__pyx_t_3);
+-      if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3)) __PYX_ERR(14, 435, __pyx_L1_error);
++      if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3)) __PYX_ERR(14, 437, __pyx_L1_error);
+       __Pyx_GIVEREF(__pyx_t_4);
+-      if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_4)) __PYX_ERR(14, 435, __pyx_L1_error);
++      if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_4)) __PYX_ERR(14, 437, __pyx_L1_error);
+       __pyx_t_3 = 0;
+       __pyx_t_4 = 0;
+       __Pyx_XDECREF_SET(__pyx_v_ns_tuple, ((PyObject*)__pyx_t_5));
+       __pyx_t_5 = 0;
+ 
+-      /* "src/lxml/iterparse.pxi":437
++      /* "src/lxml/iterparse.pxi":439
+  *             ns_tuple = (funicodeOrEmpty(c_ns.prefix),
+  *                         funicode(c_ns.href))
+  *             event_list.append( (u"start-ns", ns_tuple) )             # <<<<<<<<<<<<<<
+@@ -196798,20 +196798,20 @@ static int __pyx_f_4lxml_5etree__appendStartNsEvents(xmlNode *__pyx_v_c_node, Py
+  */
+       if (unlikely(__pyx_v_event_list == Py_None)) {
+         PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
+-        __PYX_ERR(14, 437, __pyx_L1_error)
++        __PYX_ERR(14, 439, __pyx_L1_error)
+       }
+-      __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 437, __pyx_L1_error)
++      __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(14, 439, __pyx_L1_error)
+       __Pyx_GOTREF(__pyx_t_5);
+       __Pyx_INCREF(__pyx_kp_u_start_ns);
+       __Pyx_GIVEREF(__pyx_kp_u_start_ns);
+-      if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_kp_u_start_ns)) __PYX_ERR(14, 437, __pyx_L1_error);
++      if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_kp_u_start_ns)) __PYX_ERR(14, 439, __pyx_L1_error);
+       __Pyx_INCREF(__pyx_v_ns_tuple);
+       __Pyx_GIVEREF(__pyx_v_ns_tuple);
+-      if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_ns_tuple)) __PYX_ERR(14, 437, __pyx_L1_error);
+-      __pyx_t_6 = __Pyx_PyList_Append(__pyx_v_event_list, __pyx_t_5); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(14, 437, __pyx_L1_error)
++      if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_ns_tuple)) __PYX_ERR(14, 439, __pyx_L1_error);
++      __pyx_t_6 = __Pyx_PyList_Append(__pyx_v_event_list, __pyx_t_5); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(14, 439, __pyx_L1_error)
+       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+ 
+-      /* "src/lxml/iterparse.pxi":438
++      /* "src/lxml/iterparse.pxi":440
+  *                         funicode(c_ns.href))
+  *             event_list.append( (u"start-ns", ns_tuple) )
+  *             count += 1             # <<<<<<<<<<<<<<
+@@ -196820,7 +196820,7 @@ static int __pyx_f_4lxml_5etree__appendStartNsEvents(xmlNode *__pyx_v_c_node, Py
+  */
+       __pyx_v_count = (__pyx_v_count + 1);
+ 
+-      /* "src/lxml/iterparse.pxi":434
++      /* "src/lxml/iterparse.pxi":436
+  *     c_ns = c_node.nsDef
+  *     while c_ns is not NULL:
+  *         if c_ns.href:             # <<<<<<<<<<<<<<
+@@ -196829,7 +196829,7 @@ static int __pyx_f_4lxml_5etree__appendStartNsEvents(xmlNode *__pyx_v_c_node, Py
+  */
+     }
+ 
+-    /* "src/lxml/iterparse.pxi":439
++    /* "src/lxml/iterparse.pxi":441
+  *             event_list.append( (u"start-ns", ns_tuple) )
+  *             count += 1
+  *         c_ns = c_ns.next             # <<<<<<<<<<<<<<
+@@ -196839,7 +196839,7 @@ static int __pyx_f_4lxml_5etree__appendStartNsEvents(xmlNode *__pyx_v_c_node, Py
+     __pyx_v_c_ns = __pyx_t_1;
+   }
+ 
+-  /* "src/lxml/iterparse.pxi":440
++  /* "src/lxml/iterparse.pxi":442
+  *             count += 1
+  *         c_ns = c_ns.next
+  *     return count             # <<<<<<<<<<<<<<
+@@ -196847,7 +196847,7 @@ static int __pyx_f_4lxml_5etree__appendStartNsEvents(xmlNode *__pyx_v_c_node, Py
+   __pyx_r = __pyx_v_count;
+   goto __pyx_L0;
+ 
+-  /* "src/lxml/iterparse.pxi":428
++  /* "src/lxml/iterparse.pxi":430
+  * 
+  * 
+  * cdef int _appendStartNsEvents(xmlNode* c_node, list event_list) except -1:             # <<<<<<<<<<<<<<
+@@ -263534,7 +263534,7 @@ static PyMethodDef __pyx_methods_4lxml_5etree_XMLParser[] = {
+ };
+ #if CYTHON_USE_TYPE_SPECS
+ static PyType_Slot __pyx_type_4lxml_5etree_XMLParser_slots[] = {
+-  {Py_tp_doc, (void *)PyDoc_STR("XMLParser(self, encoding=None, attribute_defaults=False, dtd_validation=False, load_dtd=False, no_network=True, ns_clean=False, recover=False, schema: XMLSchema =None, huge_tree=False, remove_blank_text=False, resolve_entities=True, remove_comments=False, remove_pis=False, strip_cdata=True, collect_ids=True, target=None, compact=True)\n\n    The XML parser.\n\n    Parsers can be supplied as additional argument to various parse\n    functions of the lxml API.  A default parser is always available\n    and can be replaced by a call to the global function\n    'set_default_parser'.  New parsers can be created at any time\n    without a major run-time overhead.\n\n    The keyword arguments in the constructor are mainly based on the\n    libxml2 parser configuration.  A DTD will also be loaded if DTD\n    validation or attribute default values are requested (unless you\n    additionally provide an XMLSchema from which the default\n    attributes can be read).\n\n    Available boolean keyword arguments:\n\n    - attribute_defaults - inject default attributes from DTD or XMLSchema\n    - dtd_validation     - validate against a DTD referenced by the document\n    - load_dtd           - use DTD for parsing\n    - no_network         - prevent network access for related files (default: True)\n    - ns_clean           - clean up redundant namespace declarations\n    - recover            - try hard to parse through broken XML\n    - remove_blank_text  - discard blank text nodes that appear ignorable\n    - remove_comments    - discard comments\n    - remove_pis         - discard processing instructions\n    - strip_cdata        - replace CDATA sections by normal text content (default: True)\n    - compact            - save memory for short text content (default: True)\n    - collect_ids        - use a hash table of XML IDs for fast access (default: True, always True with DTD validation)\n    - huge_tree          - disable security restrictions and support very deep trees\n      ""                     and very long text content (only affects libxml2 2.7+)\n\n    Other keyword arguments:\n\n    - resolve_entities - replace entities by their text value: False for keeping the\n          entity references, True for resolving them, and 'internal' for resolving\n          internal definitions only (no external file/URL access).\n          The default used to be True and was changed to 'internal' in lxml 5.0.\n    - encoding - override the document encoding (note: libiconv encoding name)\n    - target   - a parser target object that will receive the parse events\n    - schema   - an XMLSchema to validate against\n\n    Note that you should avoid sharing parsers between threads.  While this is\n    not harmful, it is more efficient to use separate parsers.  This does not\n    apply to the default parser.\n    ")},
++  {Py_tp_doc, (void *)PyDoc_STR("XMLParser(self, encoding=None, attribute_defaults=False, dtd_validation=False, load_dtd=False, no_network=True, ns_clean=False, recover=False, schema: XMLSchema =None, huge_tree=False, remove_blank_text=False, resolve_entities='internal', remove_comments=False, remove_pis=False, strip_cdata=True, collect_ids=True, target=None, compact=True)\n\n    The XML parser.\n\n    Parsers can be supplied as additional argument to various parse\n    functions of the lxml API.  A default parser is always available\n    and can be replaced by a call to the global function\n    'set_default_parser'.  New parsers can be created at any time\n    without a major run-time overhead.\n\n    The keyword arguments in the constructor are mainly based on the\n    libxml2 parser configuration.  A DTD will also be loaded if DTD\n    validation or attribute default values are requested (unless you\n    additionally provide an XMLSchema from which the default\n    attributes can be read).\n\n    Available boolean keyword arguments:\n\n    - attribute_defaults - inject default attributes from DTD or XMLSchema\n    - dtd_validation     - validate against a DTD referenced by the document\n    - load_dtd           - use DTD for parsing\n    - no_network         - prevent network access for related files (default: True)\n    - ns_clean           - clean up redundant namespace declarations\n    - recover            - try hard to parse through broken XML\n    - remove_blank_text  - discard blank text nodes that appear ignorable\n    - remove_comments    - discard comments\n    - remove_pis         - discard processing instructions\n    - strip_cdata        - replace CDATA sections by normal text content (default: True)\n    - compact            - save memory for short text content (default: True)\n    - collect_ids        - use a hash table of XML IDs for fast access (default: True, always True with DTD validation)\n    - huge_tree          - disable security restrictions and support very deep trees""\n                           and very long text content (only affects libxml2 2.7+)\n\n    Other keyword arguments:\n\n    - resolve_entities - replace entities by their text value: False for keeping the\n          entity references, True for resolving them, and 'internal' for resolving\n          internal definitions only (no external file/URL access).\n          The default used to be True and was changed to 'internal' in lxml 5.0.\n    - encoding - override the document encoding (note: libiconv encoding name)\n    - target   - a parser target object that will receive the parse events\n    - schema   - an XMLSchema to validate against\n\n    Note that you should avoid sharing parsers between threads.  While this is\n    not harmful, it is more efficient to use separate parsers.  This does not\n    apply to the default parser.\n    ")},
+   {Py_tp_traverse, (void *)__pyx_tp_traverse_4lxml_5etree__BaseParser},
+   {Py_tp_clear, (void *)__pyx_tp_clear_4lxml_5etree__BaseParser},
+   {Py_tp_methods, (void *)__pyx_methods_4lxml_5etree_XMLParser},
+@@ -263582,7 +263582,7 @@ static PyTypeObject __pyx_type_4lxml_5etree_XMLParser = {
+   0, /*tp_setattro*/
+   0, /*tp_as_buffer*/
+   Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+-  PyDoc_STR("XMLParser(self, encoding=None, attribute_defaults=False, dtd_validation=False, load_dtd=False, no_network=True, ns_clean=False, recover=False, schema: XMLSchema =None, huge_tree=False, remove_blank_text=False, resolve_entities=True, remove_comments=False, remove_pis=False, strip_cdata=True, collect_ids=True, target=None, compact=True)\n\n    The XML parser.\n\n    Parsers can be supplied as additional argument to various parse\n    functions of the lxml API.  A default parser is always available\n    and can be replaced by a call to the global function\n    'set_default_parser'.  New parsers can be created at any time\n    without a major run-time overhead.\n\n    The keyword arguments in the constructor are mainly based on the\n    libxml2 parser configuration.  A DTD will also be loaded if DTD\n    validation or attribute default values are requested (unless you\n    additionally provide an XMLSchema from which the default\n    attributes can be read).\n\n    Available boolean keyword arguments:\n\n    - attribute_defaults - inject default attributes from DTD or XMLSchema\n    - dtd_validation     - validate against a DTD referenced by the document\n    - load_dtd           - use DTD for parsing\n    - no_network         - prevent network access for related files (default: True)\n    - ns_clean           - clean up redundant namespace declarations\n    - recover            - try hard to parse through broken XML\n    - remove_blank_text  - discard blank text nodes that appear ignorable\n    - remove_comments    - discard comments\n    - remove_pis         - discard processing instructions\n    - strip_cdata        - replace CDATA sections by normal text content (default: True)\n    - compact            - save memory for short text content (default: True)\n    - collect_ids        - use a hash table of XML IDs for fast access (default: True, always True with DTD validation)\n    - huge_tree          - disable security restrictions and support very deep trees\n      ""                     and very long text content (only affects libxml2 2.7+)\n\n    Other keyword arguments:\n\n    - resolve_entities - replace entities by their text value: False for keeping the\n          entity references, True for resolving them, and 'internal' for resolving\n          internal definitions only (no external file/URL access).\n          The default used to be True and was changed to 'internal' in lxml 5.0.\n    - encoding - override the document encoding (note: libiconv encoding name)\n    - target   - a parser target object that will receive the parse events\n    - schema   - an XMLSchema to validate against\n\n    Note that you should avoid sharing parsers between threads.  While this is\n    not harmful, it is more efficient to use separate parsers.  This does not\n    apply to the default parser.\n    "), /*tp_doc*/
++  PyDoc_STR("XMLParser(self, encoding=None, attribute_defaults=False, dtd_validation=False, load_dtd=False, no_network=True, ns_clean=False, recover=False, schema: XMLSchema =None, huge_tree=False, remove_blank_text=False, resolve_entities='internal', remove_comments=False, remove_pis=False, strip_cdata=True, collect_ids=True, target=None, compact=True)\n\n    The XML parser.\n\n    Parsers can be supplied as additional argument to various parse\n    functions of the lxml API.  A default parser is always available\n    and can be replaced by a call to the global function\n    'set_default_parser'.  New parsers can be created at any time\n    without a major run-time overhead.\n\n    The keyword arguments in the constructor are mainly based on the\n    libxml2 parser configuration.  A DTD will also be loaded if DTD\n    validation or attribute default values are requested (unless you\n    additionally provide an XMLSchema from which the default\n    attributes can be read).\n\n    Available boolean keyword arguments:\n\n    - attribute_defaults - inject default attributes from DTD or XMLSchema\n    - dtd_validation     - validate against a DTD referenced by the document\n    - load_dtd           - use DTD for parsing\n    - no_network         - prevent network access for related files (default: True)\n    - ns_clean           - clean up redundant namespace declarations\n    - recover            - try hard to parse through broken XML\n    - remove_blank_text  - discard blank text nodes that appear ignorable\n    - remove_comments    - discard comments\n    - remove_pis         - discard processing instructions\n    - strip_cdata        - replace CDATA sections by normal text content (default: True)\n    - compact            - save memory for short text content (default: True)\n    - collect_ids        - use a hash table of XML IDs for fast access (default: True, always True with DTD validation)\n    - huge_tree          - disable security restrictions and support very deep trees""\n                           and very long text content (only affects libxml2 2.7+)\n\n    Other keyword arguments:\n\n    - resolve_entities - replace entities by their text value: False for keeping the\n          entity references, True for resolving them, and 'internal' for resolving\n          internal definitions only (no external file/URL access).\n          The default used to be True and was changed to 'internal' in lxml 5.0.\n    - encoding - override the document encoding (note: libiconv encoding name)\n    - target   - a parser target object that will receive the parse events\n    - schema   - an XMLSchema to validate against\n\n    Note that you should avoid sharing parsers between threads.  While this is\n    not harmful, it is more efficient to use separate parsers.  This does not\n    apply to the default parser.\n    "), /*tp_doc*/
+   __pyx_tp_traverse_4lxml_5etree__BaseParser, /*tp_traverse*/
+   __pyx_tp_clear_4lxml_5etree__BaseParser, /*tp_clear*/
+   0, /*tp_richcompare*/
+@@ -263763,7 +263763,7 @@ static PyMethodDef __pyx_methods_4lxml_5etree_ETCompatXMLParser[] = {
+ };
+ #if CYTHON_USE_TYPE_SPECS
+ static PyType_Slot __pyx_type_4lxml_5etree_ETCompatXMLParser_slots[] = {
+-  {Py_tp_doc, (void *)PyDoc_STR("ETCompatXMLParser(self, encoding=None, attribute_defaults=False,                  dtd_validation=False, load_dtd=False, no_network=True,                  ns_clean=False, recover=False, schema=None,                  huge_tree=False, remove_blank_text=False, resolve_entities=True,                  remove_comments=True, remove_pis=True, strip_cdata=True,                  target=None, compact=True)\n\n    An XML parser with an ElementTree compatible default setup.\n\n    See the XMLParser class for details.\n\n    This parser has ``remove_comments`` and ``remove_pis`` enabled by default\n    and thus ignores comments and processing instructions.\n    ")},
++  {Py_tp_doc, (void *)PyDoc_STR("ETCompatXMLParser(self, encoding=None, attribute_defaults=False,                  dtd_validation=False, load_dtd=False, no_network=True,                  ns_clean=False, recover=False, schema=None,                  huge_tree=False, remove_blank_text=False, resolve_entities='internal',                  remove_comments=True, remove_pis=True, strip_cdata=True,                  target=None, compact=True)\n\n    An XML parser with an ElementTree compatible default setup.\n\n    See the XMLParser class for details.\n\n    This parser has ``remove_comments`` and ``remove_pis`` enabled by default\n    and thus ignores comments and processing instructions.\n    ")},
+   {Py_tp_traverse, (void *)__pyx_tp_traverse_4lxml_5etree__BaseParser},
+   {Py_tp_clear, (void *)__pyx_tp_clear_4lxml_5etree__BaseParser},
+   {Py_tp_methods, (void *)__pyx_methods_4lxml_5etree_ETCompatXMLParser},
+@@ -263811,7 +263811,7 @@ static PyTypeObject __pyx_type_4lxml_5etree_ETCompatXMLParser = {
+   0, /*tp_setattro*/
+   0, /*tp_as_buffer*/
+   Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+-  PyDoc_STR("ETCompatXMLParser(self, encoding=None, attribute_defaults=False,                  dtd_validation=False, load_dtd=False, no_network=True,                  ns_clean=False, recover=False, schema=None,                  huge_tree=False, remove_blank_text=False, resolve_entities=True,                  remove_comments=True, remove_pis=True, strip_cdata=True,                  target=None, compact=True)\n\n    An XML parser with an ElementTree compatible default setup.\n\n    See the XMLParser class for details.\n\n    This parser has ``remove_comments`` and ``remove_pis`` enabled by default\n    and thus ignores comments and processing instructions.\n    "), /*tp_doc*/
++  PyDoc_STR("ETCompatXMLParser(self, encoding=None, attribute_defaults=False,                  dtd_validation=False, load_dtd=False, no_network=True,                  ns_clean=False, recover=False, schema=None,                  huge_tree=False, remove_blank_text=False, resolve_entities='internal',                  remove_comments=True, remove_pis=True, strip_cdata=True,                  target=None, compact=True)\n\n    An XML parser with an ElementTree compatible default setup.\n\n    See the XMLParser class for details.\n\n    This parser has ``remove_comments`` and ``remove_pis`` enabled by default\n    and thus ignores comments and processing instructions.\n    "), /*tp_doc*/
+   __pyx_tp_traverse_4lxml_5etree__BaseParser, /*tp_traverse*/
+   __pyx_tp_clear_4lxml_5etree__BaseParser, /*tp_clear*/
+   0, /*tp_richcompare*/
+@@ -267005,7 +267005,7 @@ static struct PyGetSetDef __pyx_getsets_4lxml_5etree_iterparse[] = {
+ #if CYTHON_USE_TYPE_SPECS
+ static PyType_Slot __pyx_type_4lxml_5etree_iterparse_slots[] = {
+   {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4lxml_5etree_iterparse},
+-  {Py_tp_doc, (void *)PyDoc_STR("iterparse(self, source, events=(\"end\",), tag=None,                   attribute_defaults=False, dtd_validation=False,                   load_dtd=False, no_network=True, remove_blank_text=False,                   remove_comments=False, remove_pis=False, encoding=None,                   html=False, recover=None, huge_tree=False, schema=None)\n\n    Incremental parser.\n\n    Parses XML into a tree and generates tuples (event, element) in a\n    SAX-like fashion. ``event`` is any of 'start', 'end', 'start-ns',\n    'end-ns'.\n\n    For 'start' and 'end', ``element`` is the Element that the parser just\n    found opening or closing.  For 'start-ns', it is a tuple (prefix, URI) of\n    a new namespace declaration.  For 'end-ns', it is simply None.  Note that\n    all start and end events are guaranteed to be properly nested.\n\n    The keyword argument ``events`` specifies a sequence of event type names\n    that should be generated.  By default, only 'end' events will be\n    generated.\n\n    The additional ``tag`` argument restricts the 'start' and 'end' events to\n    those elements that match the given tag.  The ``tag`` argument can also be\n    a sequence of tags to allow matching more than one tag.  By default,\n    events are generated for all elements.  Note that the 'start-ns' and\n    'end-ns' events are not impacted by this restriction.\n\n    The other keyword arguments in the constructor are mainly based on the\n    libxml2 parser configuration.  A DTD will also be loaded if validation or\n    attribute default values are requested.\n\n    Available boolean keyword arguments:\n     - attribute_defaults: read default attributes from DTD\n     - dtd_validation: validate (if DTD is available)\n     - load_dtd: use DTD for parsing\n     - no_network: prevent network access for related files\n     - remove_blank_text: discard blank text nodes\n     - remove_comments: discard comments\n     - remove_pis: discard processing instructions\n     - strip_cdata: repla""ce CDATA sections by normal text content (default: True)\n     - compact: safe memory for short text content (default: True)\n     - resolve_entities: replace entities by their text value (default: True)\n     - huge_tree: disable security restrictions and support very deep trees\n                  and very long text content (only affects libxml2 2.7+)\n     - html: parse input as HTML (default: XML)\n     - recover: try hard to parse through broken input (default: True for HTML,\n                False otherwise)\n\n    Other keyword arguments:\n     - encoding: override the document encoding\n     - schema: an XMLSchema to validate against\n    ")},
++  {Py_tp_doc, (void *)PyDoc_STR("iterparse(self, source, events=(\"end\",), tag=None,                   attribute_defaults=False, dtd_validation=False,                   load_dtd=False, no_network=True, remove_blank_text=False,                   compact=True, resolve_entities='internal', remove_comments=False,                   remove_pis=False, strip_cdata=True, encoding=None,                   html=False, recover=None, huge_tree=False, schema=None)\n\n    Incremental parser.\n\n    Parses XML into a tree and generates tuples (event, element) in a\n    SAX-like fashion. ``event`` is any of 'start', 'end', 'start-ns',\n    'end-ns'.\n\n    For 'start' and 'end', ``element`` is the Element that the parser just\n    found opening or closing.  For 'start-ns', it is a tuple (prefix, URI) of\n    a new namespace declaration.  For 'end-ns', it is simply None.  Note that\n    all start and end events are guaranteed to be properly nested.\n\n    The keyword argument ``events`` specifies a sequence of event type names\n    that should be generated.  By default, only 'end' events will be\n    generated.\n\n    The additional ``tag`` argument restricts the 'start' and 'end' events to\n    those elements that match the given tag.  The ``tag`` argument can also be\n    a sequence of tags to allow matching more than one tag.  By default,\n    events are generated for all elements.  Note that the 'start-ns' and\n    'end-ns' events are not impacted by this restriction.\n\n    The other keyword arguments in the constructor are mainly based on the\n    libxml2 parser configuration.  A DTD will also be loaded if validation or\n    attribute default values are requested.\n\n    Available boolean keyword arguments:\n     - attribute_defaults: read default attributes from DTD\n     - dtd_validation: validate (if DTD is available)\n     - load_dtd: use DTD for parsing\n     - no_network: prevent network access for related files\n     - remove_blank_text: discard blank text nodes\n     - remove_comments: discard comments""\n     - remove_pis: discard processing instructions\n     - strip_cdata: replace CDATA sections by normal text content (default: True)\n     - compact: safe memory for short text content (default: True)\n     - resolve_entities: replace entities by their text value\n       (default: 'internal' only)\n     - huge_tree: disable security restrictions and support very deep trees\n                  and very long text content (only affects libxml2 2.7+)\n     - html: parse input as HTML (default: XML)\n     - recover: try hard to parse through broken input (default: True for HTML,\n                False otherwise)\n\n    Other keyword arguments:\n     - encoding: override the document encoding\n     - schema: an XMLSchema to validate against\n    ")},
+   {Py_tp_traverse, (void *)__pyx_tp_traverse_4lxml_5etree_iterparse},
+   {Py_tp_clear, (void *)__pyx_tp_clear_4lxml_5etree_iterparse},
+   {Py_tp_iter, (void *)__pyx_pw_4lxml_5etree_9iterparse_7__iter__},
+@@ -267056,7 +267056,7 @@ static PyTypeObject __pyx_type_4lxml_5etree_iterparse = {
+   0, /*tp_setattro*/
+   0, /*tp_as_buffer*/
+   Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+-  PyDoc_STR("iterparse(self, source, events=(\"end\",), tag=None,                   attribute_defaults=False, dtd_validation=False,                   load_dtd=False, no_network=True, remove_blank_text=False,                   remove_comments=False, remove_pis=False, encoding=None,                   html=False, recover=None, huge_tree=False, schema=None)\n\n    Incremental parser.\n\n    Parses XML into a tree and generates tuples (event, element) in a\n    SAX-like fashion. ``event`` is any of 'start', 'end', 'start-ns',\n    'end-ns'.\n\n    For 'start' and 'end', ``element`` is the Element that the parser just\n    found opening or closing.  For 'start-ns', it is a tuple (prefix, URI) of\n    a new namespace declaration.  For 'end-ns', it is simply None.  Note that\n    all start and end events are guaranteed to be properly nested.\n\n    The keyword argument ``events`` specifies a sequence of event type names\n    that should be generated.  By default, only 'end' events will be\n    generated.\n\n    The additional ``tag`` argument restricts the 'start' and 'end' events to\n    those elements that match the given tag.  The ``tag`` argument can also be\n    a sequence of tags to allow matching more than one tag.  By default,\n    events are generated for all elements.  Note that the 'start-ns' and\n    'end-ns' events are not impacted by this restriction.\n\n    The other keyword arguments in the constructor are mainly based on the\n    libxml2 parser configuration.  A DTD will also be loaded if validation or\n    attribute default values are requested.\n\n    Available boolean keyword arguments:\n     - attribute_defaults: read default attributes from DTD\n     - dtd_validation: validate (if DTD is available)\n     - load_dtd: use DTD for parsing\n     - no_network: prevent network access for related files\n     - remove_blank_text: discard blank text nodes\n     - remove_comments: discard comments\n     - remove_pis: discard processing instructions\n     - strip_cdata: repla""ce CDATA sections by normal text content (default: True)\n     - compact: safe memory for short text content (default: True)\n     - resolve_entities: replace entities by their text value (default: True)\n     - huge_tree: disable security restrictions and support very deep trees\n                  and very long text content (only affects libxml2 2.7+)\n     - html: parse input as HTML (default: XML)\n     - recover: try hard to parse through broken input (default: True for HTML,\n                False otherwise)\n\n    Other keyword arguments:\n     - encoding: override the document encoding\n     - schema: an XMLSchema to validate against\n    "), /*tp_doc*/
++  PyDoc_STR("iterparse(self, source, events=(\"end\",), tag=None,                   attribute_defaults=False, dtd_validation=False,                   load_dtd=False, no_network=True, remove_blank_text=False,                   compact=True, resolve_entities='internal', remove_comments=False,                   remove_pis=False, strip_cdata=True, encoding=None,                   html=False, recover=None, huge_tree=False, schema=None)\n\n    Incremental parser.\n\n    Parses XML into a tree and generates tuples (event, element) in a\n    SAX-like fashion. ``event`` is any of 'start', 'end', 'start-ns',\n    'end-ns'.\n\n    For 'start' and 'end', ``element`` is the Element that the parser just\n    found opening or closing.  For 'start-ns', it is a tuple (prefix, URI) of\n    a new namespace declaration.  For 'end-ns', it is simply None.  Note that\n    all start and end events are guaranteed to be properly nested.\n\n    The keyword argument ``events`` specifies a sequence of event type names\n    that should be generated.  By default, only 'end' events will be\n    generated.\n\n    The additional ``tag`` argument restricts the 'start' and 'end' events to\n    those elements that match the given tag.  The ``tag`` argument can also be\n    a sequence of tags to allow matching more than one tag.  By default,\n    events are generated for all elements.  Note that the 'start-ns' and\n    'end-ns' events are not impacted by this restriction.\n\n    The other keyword arguments in the constructor are mainly based on the\n    libxml2 parser configuration.  A DTD will also be loaded if validation or\n    attribute default values are requested.\n\n    Available boolean keyword arguments:\n     - attribute_defaults: read default attributes from DTD\n     - dtd_validation: validate (if DTD is available)\n     - load_dtd: use DTD for parsing\n     - no_network: prevent network access for related files\n     - remove_blank_text: discard blank text nodes\n     - remove_comments: discard comments""\n     - remove_pis: discard processing instructions\n     - strip_cdata: replace CDATA sections by normal text content (default: True)\n     - compact: safe memory for short text content (default: True)\n     - resolve_entities: replace entities by their text value\n       (default: 'internal' only)\n     - huge_tree: disable security restrictions and support very deep trees\n                  and very long text content (only affects libxml2 2.7+)\n     - html: parse input as HTML (default: XML)\n     - recover: try hard to parse through broken input (default: True for HTML,\n                False otherwise)\n\n    Other keyword arguments:\n     - encoding: override the document encoding\n     - schema: an XMLSchema to validate against\n    "), /*tp_doc*/
+   __pyx_tp_traverse_4lxml_5etree_iterparse, /*tp_traverse*/
+   __pyx_tp_clear_4lxml_5etree_iterparse, /*tp_clear*/
+   0, /*tp_richcompare*/
+@@ -279350,36 +279350,36 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
+   __Pyx_GOTREF(__pyx_slice__81);
+   __Pyx_GIVEREF(__pyx_slice__81);
+ 
+-  /* "src/lxml/iterparse.pxi":67
++  /* "src/lxml/iterparse.pxi":69
+  *     cdef bint _close_source_after_read
+  * 
+  *     def __init__(self, source, events=(u"end",), *, tag=None,             # <<<<<<<<<<<<<<
+  *                  attribute_defaults=False, dtd_validation=False,
+  *                  load_dtd=False, no_network=True, remove_blank_text=False,
+  */
+-  __pyx_tuple__91 = PyTuple_Pack(1, __pyx_n_u_end); if (unlikely(!__pyx_tuple__91)) __PYX_ERR(14, 67, __pyx_L1_error)
++  __pyx_tuple__91 = PyTuple_Pack(1, __pyx_n_u_end); if (unlikely(!__pyx_tuple__91)) __PYX_ERR(14, 69, __pyx_L1_error)
+   __Pyx_GOTREF(__pyx_tuple__91);
+   __Pyx_GIVEREF(__pyx_tuple__91);
+ 
+-  /* "src/lxml/iterparse.pxi":223
++  /* "src/lxml/iterparse.pxi":225
+  *         if not isinstance(data, bytes):
+  *             self._close_source()
+  *             raise TypeError("reading file objects must return bytes objects")             # <<<<<<<<<<<<<<
+  *         if not data:
+  *             try:
+  */
+-  __pyx_tuple__92 = PyTuple_Pack(1, __pyx_kp_s_reading_file_objects_must_return); if (unlikely(!__pyx_tuple__92)) __PYX_ERR(14, 223, __pyx_L1_error)
++  __pyx_tuple__92 = PyTuple_Pack(1, __pyx_kp_s_reading_file_objects_must_return); if (unlikely(!__pyx_tuple__92)) __PYX_ERR(14, 225, __pyx_L1_error)
+   __Pyx_GOTREF(__pyx_tuple__92);
+   __Pyx_GIVEREF(__pyx_tuple__92);
+ 
+-  /* "src/lxml/iterparse.pxi":411
++  /* "src/lxml/iterparse.pxi":413
+  *                 self._events.append( (u"end", node) )
+  *         if self._event_filter & PARSE_EVENT_FILTER_END_NS and ns_count:
+  *             event = (u"end-ns", None)             # <<<<<<<<<<<<<<
+  *             for i in range(ns_count):
+  *                 self._events.append(event)
+  */
+-  __pyx_tuple__93 = PyTuple_Pack(2, __pyx_kp_u_end_ns, Py_None); if (unlikely(!__pyx_tuple__93)) __PYX_ERR(14, 411, __pyx_L1_error)
++  __pyx_tuple__93 = PyTuple_Pack(2, __pyx_kp_u_end_ns, Py_None); if (unlikely(!__pyx_tuple__93)) __PYX_ERR(14, 413, __pyx_L1_error)
+   __Pyx_GOTREF(__pyx_tuple__93);
+   __Pyx_GIVEREF(__pyx_tuple__93);
+ 
+@@ -281898,32 +281898,32 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
+  */
+   __pyx_codeobj__90 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS|CO_COROUTINE, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__139, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_serializer_pxi, __pyx_n_s_aexit, 1869, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__90)) __PYX_ERR(9, 1869, __pyx_L1_error)
+ 
+-  /* "src/lxml/iterparse.pxi":149
++  /* "src/lxml/iterparse.pxi":151
+  *         return self._parser.version
+  * 
+  *     def set_element_class_lookup(self, ElementClassLookup lookup = None):             # <<<<<<<<<<<<<<
+  *         u"""set_element_class_lookup(self, lookup = None)
+  * 
+  */
+-  __pyx_codeobj__447 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__336, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_iterparse_pxi, __pyx_n_s_set_element_class_lookup, 149, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__447)) __PYX_ERR(14, 149, __pyx_L1_error)
++  __pyx_codeobj__447 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__336, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_iterparse_pxi, __pyx_n_s_set_element_class_lookup, 151, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__447)) __PYX_ERR(14, 151, __pyx_L1_error)
+ 
+-  /* "src/lxml/iterparse.pxi":158
++  /* "src/lxml/iterparse.pxi":160
+  *         self._parser.set_element_class_lookup(lookup)
+  * 
+  *     def makeelement(self, _tag, attrib=None, nsmap=None, **_extra):             # <<<<<<<<<<<<<<
+  *         u"""makeelement(self, _tag, attrib=None, nsmap=None, **_extra)
+  * 
+  */
+-  __pyx_codeobj__448 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__212, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_iterparse_pxi, __pyx_n_s_makeelement, 158, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__448)) __PYX_ERR(14, 158, __pyx_L1_error)
++  __pyx_codeobj__448 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__212, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_iterparse_pxi, __pyx_n_s_makeelement, 160, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__448)) __PYX_ERR(14, 160, __pyx_L1_error)
+ 
+-  /* "src/lxml/iterparse.pxi":375
++  /* "src/lxml/iterparse.pxi":377
+  *         return self._pop_event(0)
+  * 
+  *     def skip_subtree(self):             # <<<<<<<<<<<<<<
+  *         """Prevent descending into the current subtree.
+  *         Instead, the next returned event will be the 'end' event of the current element
+  */
+-  __pyx_codeobj__449 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__115, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_iterparse_pxi, __pyx_n_s_skip_subtree, 375, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__449)) __PYX_ERR(14, 375, __pyx_L1_error)
++  __pyx_codeobj__449 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__115, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_iterparse_pxi, __pyx_n_s_skip_subtree, 377, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__449)) __PYX_ERR(14, 377, __pyx_L1_error)
+ 
+   /* "src/lxml/xmlid.pxi":3
+  * cdef object _find_id_attributes
+@@ -285664,15 +285664,15 @@ static int __Pyx_modinit_type_init_code(void) {
+   __pyx_vtable_4lxml_5etree_iterwalk._start_node = (int (*)(struct __pyx_obj_4lxml_5etree_iterwalk *, struct LxmlElement *))__pyx_f_4lxml_5etree_8iterwalk__start_node;
+   __pyx_vtable_4lxml_5etree_iterwalk._end_node = (struct LxmlElement *(*)(struct __pyx_obj_4lxml_5etree_iterwalk *))__pyx_f_4lxml_5etree_8iterwalk__end_node;
+   #if CYTHON_USE_TYPE_SPECS
+-  __pyx_ptype_4lxml_5etree_iterwalk = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4lxml_5etree_iterwalk_spec, NULL); if (unlikely(!__pyx_ptype_4lxml_5etree_iterwalk)) __PYX_ERR(14, 241, __pyx_L1_error)
+-  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4lxml_5etree_iterwalk_spec, __pyx_ptype_4lxml_5etree_iterwalk) < 0) __PYX_ERR(14, 241, __pyx_L1_error)
++  __pyx_ptype_4lxml_5etree_iterwalk = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4lxml_5etree_iterwalk_spec, NULL); if (unlikely(!__pyx_ptype_4lxml_5etree_iterwalk)) __PYX_ERR(14, 243, __pyx_L1_error)
++  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4lxml_5etree_iterwalk_spec, __pyx_ptype_4lxml_5etree_iterwalk) < 0) __PYX_ERR(14, 243, __pyx_L1_error)
+   #else
+   __pyx_ptype_4lxml_5etree_iterwalk = &__pyx_type_4lxml_5etree_iterwalk;
+   #endif
+   #if !CYTHON_COMPILING_IN_LIMITED_API
+   #endif
+   #if !CYTHON_USE_TYPE_SPECS
+-  if (__Pyx_PyType_Ready(__pyx_ptype_4lxml_5etree_iterwalk) < 0) __PYX_ERR(14, 241, __pyx_L1_error)
++  if (__Pyx_PyType_Ready(__pyx_ptype_4lxml_5etree_iterwalk) < 0) __PYX_ERR(14, 243, __pyx_L1_error)
+   #endif
+   #if PY_MAJOR_VERSION < 3
+   __pyx_ptype_4lxml_5etree_iterwalk->tp_print = 0;
+@@ -285682,11 +285682,11 @@ static int __Pyx_modinit_type_init_code(void) {
+     __pyx_ptype_4lxml_5etree_iterwalk->tp_getattro = __Pyx_PyObject_GenericGetAttr;
+   }
+   #endif
+-  if (__Pyx_SetVtable(__pyx_ptype_4lxml_5etree_iterwalk, __pyx_vtabptr_4lxml_5etree_iterwalk) < 0) __PYX_ERR(14, 241, __pyx_L1_error)
++  if (__Pyx_SetVtable(__pyx_ptype_4lxml_5etree_iterwalk, __pyx_vtabptr_4lxml_5etree_iterwalk) < 0) __PYX_ERR(14, 243, __pyx_L1_error)
+   #if !CYTHON_COMPILING_IN_LIMITED_API
+-  if (__Pyx_MergeVtables(__pyx_ptype_4lxml_5etree_iterwalk) < 0) __PYX_ERR(14, 241, __pyx_L1_error)
++  if (__Pyx_MergeVtables(__pyx_ptype_4lxml_5etree_iterwalk) < 0) __PYX_ERR(14, 243, __pyx_L1_error)
+   #endif
+-  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_iterwalk, (PyObject *) __pyx_ptype_4lxml_5etree_iterwalk) < 0) __PYX_ERR(14, 241, __pyx_L1_error)
++  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_iterwalk, (PyObject *) __pyx_ptype_4lxml_5etree_iterwalk) < 0) __PYX_ERR(14, 243, __pyx_L1_error)
+   __pyx_vtabptr_4lxml_5etree__IDDict = &__pyx_vtable_4lxml_5etree__IDDict;
+   __pyx_vtable_4lxml_5etree__IDDict._build_keys = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__IDDict *))__pyx_f_4lxml_5etree_7_IDDict__build_keys;
+   __pyx_vtable_4lxml_5etree__IDDict._build_items = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__IDDict *))__pyx_f_4lxml_5etree_7_IDDict__build_items;
+@@ -293339,44 +293339,44 @@ if (!__Pyx_RefNanny) {
+   __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+   PyType_Modified(__pyx_ptype_4lxml_5etree__MethodChanger);
+ 
+-  /* "src/lxml/iterparse.pxi":149
++  /* "src/lxml/iterparse.pxi":151
+  *         return self._parser.version
+  * 
+  *     def set_element_class_lookup(self, ElementClassLookup lookup = None):             # <<<<<<<<<<<<<<
+  *         u"""set_element_class_lookup(self, lookup = None)
+  * 
+  */
+-  __pyx_t_13 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_9iterparse_3set_element_class_lookup, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_iterparse_set_element_class_look, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__447)); if (unlikely(!__pyx_t_13)) __PYX_ERR(14, 149, __pyx_L1_error)
++  __pyx_t_13 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_9iterparse_3set_element_class_lookup, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_iterparse_set_element_class_look, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__447)); if (unlikely(!__pyx_t_13)) __PYX_ERR(14, 151, __pyx_L1_error)
+   __Pyx_GOTREF(__pyx_t_13);
+   __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_13, __pyx_tuple__191);
+-  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4lxml_5etree_iterparse, __pyx_n_s_set_element_class_lookup, __pyx_t_13) < 0) __PYX_ERR(14, 149, __pyx_L1_error)
++  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4lxml_5etree_iterparse, __pyx_n_s_set_element_class_lookup, __pyx_t_13) < 0) __PYX_ERR(14, 151, __pyx_L1_error)
+   __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+   PyType_Modified(__pyx_ptype_4lxml_5etree_iterparse);
+ 
+-  /* "src/lxml/iterparse.pxi":158
++  /* "src/lxml/iterparse.pxi":160
+  *         self._parser.set_element_class_lookup(lookup)
+  * 
+  *     def makeelement(self, _tag, attrib=None, nsmap=None, **_extra):             # <<<<<<<<<<<<<<
+  *         u"""makeelement(self, _tag, attrib=None, nsmap=None, **_extra)
+  * 
+  */
+-  __pyx_t_13 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_9iterparse_5makeelement, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_iterparse_makeelement, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__448)); if (unlikely(!__pyx_t_13)) __PYX_ERR(14, 158, __pyx_L1_error)
++  __pyx_t_13 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_9iterparse_5makeelement, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_iterparse_makeelement, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__448)); if (unlikely(!__pyx_t_13)) __PYX_ERR(14, 160, __pyx_L1_error)
+   __Pyx_GOTREF(__pyx_t_13);
+   __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_13, __pyx_tuple__188);
+-  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4lxml_5etree_iterparse, __pyx_n_s_makeelement, __pyx_t_13) < 0) __PYX_ERR(14, 158, __pyx_L1_error)
++  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4lxml_5etree_iterparse, __pyx_n_s_makeelement, __pyx_t_13) < 0) __PYX_ERR(14, 160, __pyx_L1_error)
+   __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+   PyType_Modified(__pyx_ptype_4lxml_5etree_iterparse);
+ 
+-  /* "src/lxml/iterparse.pxi":375
++  /* "src/lxml/iterparse.pxi":377
+  *         return self._pop_event(0)
+  * 
+  *     def skip_subtree(self):             # <<<<<<<<<<<<<<
+  *         """Prevent descending into the current subtree.
+  *         Instead, the next returned event will be the 'end' event of the current element
+  */
+-  __pyx_t_13 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_8iterwalk_7skip_subtree, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_iterwalk_skip_subtree, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__449)); if (unlikely(!__pyx_t_13)) __PYX_ERR(14, 375, __pyx_L1_error)
++  __pyx_t_13 = __Pyx_CyFunction_New(&__pyx_mdef_4lxml_5etree_8iterwalk_7skip_subtree, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_iterwalk_skip_subtree, NULL, __pyx_n_s_lxml_etree, __pyx_d, ((PyObject *)__pyx_codeobj__449)); if (unlikely(!__pyx_t_13)) __PYX_ERR(14, 377, __pyx_L1_error)
+   __Pyx_GOTREF(__pyx_t_13);
+-  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4lxml_5etree_iterwalk, __pyx_n_s_skip_subtree, __pyx_t_13) < 0) __PYX_ERR(14, 375, __pyx_L1_error)
++  if (__Pyx_SetItemOnTypeDict((PyObject *)__pyx_ptype_4lxml_5etree_iterwalk, __pyx_n_s_skip_subtree, __pyx_t_13) < 0) __PYX_ERR(14, 377, __pyx_L1_error)
+   __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+   PyType_Modified(__pyx_ptype_4lxml_5etree_iterwalk);
+ 
+diff --git a/src/lxml/iterparse.pxi b/src/lxml/iterparse.pxi
+index 2758b14..42d0554 100644
+--- a/src/lxml/iterparse.pxi
++++ b/src/lxml/iterparse.pxi
+@@ -6,7 +6,8 @@ cdef class iterparse:
+     u"""iterparse(self, source, events=("end",), tag=None, \
+                   attribute_defaults=False, dtd_validation=False, \
+                   load_dtd=False, no_network=True, remove_blank_text=False, \
+-                  remove_comments=False, remove_pis=False, encoding=None, \
++                  compact=True, resolve_entities='internal', remove_comments=False, \
++                  remove_pis=False, strip_cdata=True, encoding=None, \
+                   html=False, recover=None, huge_tree=False, schema=None)
+ 
+     Incremental parser.
+@@ -44,7 +45,8 @@ cdef class iterparse:
+      - remove_pis: discard processing instructions
+      - strip_cdata: replace CDATA sections by normal text content (default: True)
+      - compact: safe memory for short text content (default: True)
+-     - resolve_entities: replace entities by their text value (default: True)
++     - resolve_entities: replace entities by their text value
++       (default: 'internal' only)
+      - huge_tree: disable security restrictions and support very deep trees
+                   and very long text content (only affects libxml2 2.7+)
+      - html: parse input as HTML (default: XML)
+@@ -67,7 +69,7 @@ cdef class iterparse:
+     def __init__(self, source, events=(u"end",), *, tag=None,
+                  attribute_defaults=False, dtd_validation=False,
+                  load_dtd=False, no_network=True, remove_blank_text=False,
+-                 compact=True, resolve_entities=True, remove_comments=False,
++                 compact=True, resolve_entities='internal', remove_comments=False,
+                  remove_pis=False, strip_cdata=True, encoding=None,
+                  html=False, recover=None, huge_tree=False, collect_ids=True,
+                  XMLSchema schema=None):
+diff --git a/src/lxml/parser.pxi b/src/lxml/parser.pxi
+index e9f4bec..bded239 100644
+--- a/src/lxml/parser.pxi
++++ b/src/lxml/parser.pxi
+@@ -1564,7 +1564,7 @@ _XML_DEFAULT_PARSE_OPTIONS = (
+     )
+ 
+ cdef class XMLParser(_FeedParser):
+-    u"""XMLParser(self, encoding=None, attribute_defaults=False, dtd_validation=False, load_dtd=False, no_network=True, ns_clean=False, recover=False, schema: XMLSchema =None, huge_tree=False, remove_blank_text=False, resolve_entities=True, remove_comments=False, remove_pis=False, strip_cdata=True, collect_ids=True, target=None, compact=True)
++    u"""XMLParser(self, encoding=None, attribute_defaults=False, dtd_validation=False, load_dtd=False, no_network=True, ns_clean=False, recover=False, schema: XMLSchema =None, huge_tree=False, remove_blank_text=False, resolve_entities='internal', remove_comments=False, remove_pis=False, strip_cdata=True, collect_ids=True, target=None, compact=True)
+ 
+     The XML parser.
+ 
+@@ -1686,7 +1686,7 @@ cdef class ETCompatXMLParser(XMLParser):
+     u"""ETCompatXMLParser(self, encoding=None, attribute_defaults=False, \
+                  dtd_validation=False, load_dtd=False, no_network=True, \
+                  ns_clean=False, recover=False, schema=None, \
+-                 huge_tree=False, remove_blank_text=False, resolve_entities=True, \
++                 huge_tree=False, remove_blank_text=False, resolve_entities='internal', \
+                  remove_comments=True, remove_pis=True, strip_cdata=True, \
+                  target=None, compact=True)
+ 
+@@ -1700,7 +1700,7 @@ cdef class ETCompatXMLParser(XMLParser):
+     def __init__(self, *, encoding=None, attribute_defaults=False,
+                  dtd_validation=False, load_dtd=False, no_network=True,
+                  ns_clean=False, recover=False, schema=None,
+-                 huge_tree=False, remove_blank_text=False, resolve_entities=True,
++                 huge_tree=False, remove_blank_text=False, resolve_entities='internal',
+                  remove_comments=True, remove_pis=True, strip_cdata=True,
+                  target=None, compact=True):
+         XMLParser.__init__(self,
diff --git a/meta/recipes-devtools/python/python3-lxml_5.0.2.bb b/meta/recipes-devtools/python/python3-lxml_5.0.2.bb
index c0b385c7ea..2d2d55202c 100644
--- a/meta/recipes-devtools/python/python3-lxml_5.0.2.bb
+++ b/meta/recipes-devtools/python/python3-lxml_5.0.2.bb
@@ -20,7 +20,9 @@ DEPENDS += "libxml2 libxslt"
 
 SRC_URI[sha256sum] = "6399703c40ba53e2c3b72fdb56cb908d2b83c08082ecf17de839b27e68d1e598"
 
-SRC_URI += "${PYPI_SRC_URI}"
+SRC_URI += "${PYPI_SRC_URI} \
+            file://CVE-2026-41066.patch \
+           "
 inherit pkgconfig pypi setuptools3
 
 # {standard input}: Assembler messages:
